{"id":"db832ae815139c51d5a498bf853b88fd","_format":"hh-sol-build-info-1","solcVersion":"0.8.19","solcLongVersion":"0.8.19+commit.7dd6d404","input":{"language":"Solidity","sources":{"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/ERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC721.sol\";\nimport \"./IERC721Receiver.sol\";\nimport \"./extensions/IERC721Metadata.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/Context.sol\";\nimport \"../../utils/Strings.sol\";\nimport \"../../utils/introspection/ERC165.sol\";\n\n/**\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\n * {ERC721Enumerable}.\n */\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata {\n    using Address for address;\n    using Strings for uint256;\n\n    // Token name\n    string private _name;\n\n    // Token symbol\n    string private _symbol;\n\n    // Mapping from token ID to owner address\n    mapping(uint256 => address) private _owners;\n\n    // Mapping owner address to token count\n    mapping(address => uint256) private _balances;\n\n    // Mapping from token ID to approved address\n    mapping(uint256 => address) private _tokenApprovals;\n\n    // Mapping from owner to operator approvals\n    mapping(address => mapping(address => bool)) private _operatorApprovals;\n\n    /**\n     * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n     */\n    constructor(string memory name_, string memory symbol_) {\n        _name = name_;\n        _symbol = symbol_;\n    }\n\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {\n        return\n            interfaceId == type(IERC721).interfaceId ||\n            interfaceId == type(IERC721Metadata).interfaceId ||\n            super.supportsInterface(interfaceId);\n    }\n\n    /**\n     * @dev See {IERC721-balanceOf}.\n     */\n    function balanceOf(address owner) public view virtual override returns (uint256) {\n        require(owner != address(0), \"ERC721: address zero is not a valid owner\");\n        return _balances[owner];\n    }\n\n    /**\n     * @dev See {IERC721-ownerOf}.\n     */\n    function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n        address owner = _ownerOf(tokenId);\n        require(owner != address(0), \"ERC721: invalid token ID\");\n        return owner;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-name}.\n     */\n    function name() public view virtual override returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-symbol}.\n     */\n    function symbol() public view virtual override returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-tokenURI}.\n     */\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n        _requireMinted(tokenId);\n\n        string memory baseURI = _baseURI();\n        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \"\";\n    }\n\n    /**\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n     * by default, can be overridden in child contracts.\n     */\n    function _baseURI() internal view virtual returns (string memory) {\n        return \"\";\n    }\n\n    /**\n     * @dev See {IERC721-approve}.\n     */\n    function approve(address to, uint256 tokenId) public virtual override {\n        address owner = ERC721.ownerOf(tokenId);\n        require(to != owner, \"ERC721: approval to current owner\");\n\n        require(\n            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),\n            \"ERC721: approve caller is not token owner or approved for all\"\n        );\n\n        _approve(to, tokenId);\n    }\n\n    /**\n     * @dev See {IERC721-getApproved}.\n     */\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\n        _requireMinted(tokenId);\n\n        return _tokenApprovals[tokenId];\n    }\n\n    /**\n     * @dev See {IERC721-setApprovalForAll}.\n     */\n    function setApprovalForAll(address operator, bool approved) public virtual override {\n        _setApprovalForAll(_msgSender(), operator, approved);\n    }\n\n    /**\n     * @dev See {IERC721-isApprovedForAll}.\n     */\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n        return _operatorApprovals[owner][operator];\n    }\n\n    /**\n     * @dev See {IERC721-transferFrom}.\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public virtual override {\n        //solhint-disable-next-line max-line-length\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner or approved\");\n\n        _transfer(from, to, tokenId);\n    }\n\n    /**\n     * @dev See {IERC721-safeTransferFrom}.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public virtual override {\n        safeTransferFrom(from, to, tokenId, \"\");\n    }\n\n    /**\n     * @dev See {IERC721-safeTransferFrom}.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) public virtual override {\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner or approved\");\n        _safeTransfer(from, to, tokenId, data);\n    }\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n     *\n     * `data` is additional data, it has no specified format and it is sent in call to `to`.\n     *\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must exist and be owned by `from`.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _safeTransfer(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) internal virtual {\n        _transfer(from, to, tokenId);\n        require(_checkOnERC721Received(from, to, tokenId, data), \"ERC721: transfer to non ERC721Receiver implementer\");\n    }\n\n    /**\n     * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n     */\n    function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\n        return _owners[tokenId];\n    }\n\n    /**\n     * @dev Returns whether `tokenId` exists.\n     *\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n     *\n     * Tokens start existing when they are minted (`_mint`),\n     * and stop existing when they are burned (`_burn`).\n     */\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\n        return _ownerOf(tokenId) != address(0);\n    }\n\n    /**\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\n        address owner = ERC721.ownerOf(tokenId);\n        return (spender == owner || isApprovedForAll(owner, spender) || getApproved(tokenId) == spender);\n    }\n\n    /**\n     * @dev Safely mints `tokenId` and transfers it to `to`.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must not exist.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _safeMint(address to, uint256 tokenId) internal virtual {\n        _safeMint(to, tokenId, \"\");\n    }\n\n    /**\n     * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n     * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n     */\n    function _safeMint(\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) internal virtual {\n        _mint(to, tokenId);\n        require(\n            _checkOnERC721Received(address(0), to, tokenId, data),\n            \"ERC721: transfer to non ERC721Receiver implementer\"\n        );\n    }\n\n    /**\n     * @dev Mints `tokenId` and transfers it to `to`.\n     *\n     * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n     *\n     * Requirements:\n     *\n     * - `tokenId` must not exist.\n     * - `to` cannot be the zero address.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _mint(address to, uint256 tokenId) internal virtual {\n        require(to != address(0), \"ERC721: mint to the zero address\");\n        require(!_exists(tokenId), \"ERC721: token already minted\");\n\n        _beforeTokenTransfer(address(0), to, tokenId, 1);\n\n        // Check that tokenId was not minted by `_beforeTokenTransfer` hook\n        require(!_exists(tokenId), \"ERC721: token already minted\");\n\n        unchecked {\n            // Will not overflow unless all 2**256 token ids are minted to the same owner.\n            // Given that tokens are minted one by one, it is impossible in practice that\n            // this ever happens. Might change if we allow batch minting.\n            // The ERC fails to describe this case.\n            _balances[to] += 1;\n        }\n\n        _owners[tokenId] = to;\n\n        emit Transfer(address(0), to, tokenId);\n\n        _afterTokenTransfer(address(0), to, tokenId, 1);\n    }\n\n    /**\n     * @dev Destroys `tokenId`.\n     * The approval is cleared when the token is burned.\n     * This is an internal function that does not check if the sender is authorized to operate on the token.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _burn(uint256 tokenId) internal virtual {\n        address owner = ERC721.ownerOf(tokenId);\n\n        _beforeTokenTransfer(owner, address(0), tokenId, 1);\n\n        // Update ownership in case tokenId was transferred by `_beforeTokenTransfer` hook\n        owner = ERC721.ownerOf(tokenId);\n\n        // Clear approvals\n        delete _tokenApprovals[tokenId];\n\n        unchecked {\n            // Cannot overflow, as that would require more tokens to be burned/transferred\n            // out than the owner initially received through minting and transferring in.\n            _balances[owner] -= 1;\n        }\n        delete _owners[tokenId];\n\n        emit Transfer(owner, address(0), tokenId);\n\n        _afterTokenTransfer(owner, address(0), tokenId, 1);\n    }\n\n    /**\n     * @dev Transfers `tokenId` from `from` to `to`.\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must be owned by `from`.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _transfer(\n        address from,\n        address to,\n        uint256 tokenId\n    ) internal virtual {\n        require(ERC721.ownerOf(tokenId) == from, \"ERC721: transfer from incorrect owner\");\n        require(to != address(0), \"ERC721: transfer to the zero address\");\n\n        _beforeTokenTransfer(from, to, tokenId, 1);\n\n        // Check that tokenId was not transferred by `_beforeTokenTransfer` hook\n        require(ERC721.ownerOf(tokenId) == from, \"ERC721: transfer from incorrect owner\");\n\n        // Clear approvals from the previous owner\n        delete _tokenApprovals[tokenId];\n\n        unchecked {\n            // `_balances[from]` cannot overflow for the same reason as described in `_burn`:\n            // `from`'s balance is the number of token held, which is at least one before the current\n            // transfer.\n            // `_balances[to]` could overflow in the conditions described in `_mint`. That would require\n            // all 2**256 token ids to be minted, which in practice is impossible.\n            _balances[from] -= 1;\n            _balances[to] += 1;\n        }\n        _owners[tokenId] = to;\n\n        emit Transfer(from, to, tokenId);\n\n        _afterTokenTransfer(from, to, tokenId, 1);\n    }\n\n    /**\n     * @dev Approve `to` to operate on `tokenId`\n     *\n     * Emits an {Approval} event.\n     */\n    function _approve(address to, uint256 tokenId) internal virtual {\n        _tokenApprovals[tokenId] = to;\n        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);\n    }\n\n    /**\n     * @dev Approve `operator` to operate on all of `owner` tokens\n     *\n     * Emits an {ApprovalForAll} event.\n     */\n    function _setApprovalForAll(\n        address owner,\n        address operator,\n        bool approved\n    ) internal virtual {\n        require(owner != operator, \"ERC721: approve to caller\");\n        _operatorApprovals[owner][operator] = approved;\n        emit ApprovalForAll(owner, operator, approved);\n    }\n\n    /**\n     * @dev Reverts if the `tokenId` has not been minted yet.\n     */\n    function _requireMinted(uint256 tokenId) internal view virtual {\n        require(_exists(tokenId), \"ERC721: invalid token ID\");\n    }\n\n    /**\n     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n     * The call is not executed if the target address is not a contract.\n     *\n     * @param from address representing the previous owner of the given token ID\n     * @param to target address that will receive the tokens\n     * @param tokenId uint256 ID of the token to be transferred\n     * @param data bytes optional data to send along with the call\n     * @return bool whether the call correctly returned the expected magic value\n     */\n    function _checkOnERC721Received(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) private returns (bool) {\n        if (to.isContract()) {\n            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, data) returns (bytes4 retval) {\n                return retval == IERC721Receiver.onERC721Received.selector;\n            } catch (bytes memory reason) {\n                if (reason.length == 0) {\n                    revert(\"ERC721: transfer to non ERC721Receiver implementer\");\n                } else {\n                    /// @solidity memory-safe-assembly\n                    assembly {\n                        revert(add(32, reason), mload(reason))\n                    }\n                }\n            }\n        } else {\n            return true;\n        }\n    }\n\n    /**\n     * @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n     * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n     *\n     * Calling conditions:\n     *\n     * - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\n     * - When `from` is zero, the tokens will be minted for `to`.\n     * - When `to` is zero, ``from``'s tokens will be burned.\n     * - `from` and `to` are never both zero.\n     * - `batchSize` is non-zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _beforeTokenTransfer(\n        address from,\n        address to,\n        uint256, /* firstTokenId */\n        uint256 batchSize\n    ) internal virtual {\n        if (batchSize > 1) {\n            if (from != address(0)) {\n                _balances[from] -= batchSize;\n            }\n            if (to != address(0)) {\n                _balances[to] += batchSize;\n            }\n        }\n    }\n\n    /**\n     * @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n     * used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n     *\n     * Calling conditions:\n     *\n     * - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\n     * - When `from` is zero, the tokens were minted for `to`.\n     * - When `to` is zero, ``from``'s tokens were burned.\n     * - `from` and `to` are never both zero.\n     * - `batchSize` is non-zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _afterTokenTransfer(\n        address from,\n        address to,\n        uint256 firstTokenId,\n        uint256 batchSize\n    ) internal virtual {}\n}\n"},"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/extensions/ERC721Enumerable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../ERC721.sol\";\nimport \"./IERC721Enumerable.sol\";\n\n/**\n * @dev This implements an optional extension of {ERC721} defined in the EIP that adds\n * enumerability of all the token ids in the contract as well as all token ids owned by each\n * account.\n */\nabstract contract ERC721Enumerable is ERC721, IERC721Enumerable {\n    // Mapping from owner to list of owned token IDs\n    mapping(address => mapping(uint256 => uint256)) private _ownedTokens;\n\n    // Mapping from token ID to index of the owner tokens list\n    mapping(uint256 => uint256) private _ownedTokensIndex;\n\n    // Array with all token ids, used for enumeration\n    uint256[] private _allTokens;\n\n    // Mapping from token id to position in the allTokens array\n    mapping(uint256 => uint256) private _allTokensIndex;\n\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721) returns (bool) {\n        return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId);\n    }\n\n    /**\n     * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.\n     */\n    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {\n        require(index < ERC721.balanceOf(owner), \"ERC721Enumerable: owner index out of bounds\");\n        return _ownedTokens[owner][index];\n    }\n\n    /**\n     * @dev See {IERC721Enumerable-totalSupply}.\n     */\n    function totalSupply() public view virtual override returns (uint256) {\n        return _allTokens.length;\n    }\n\n    /**\n     * @dev See {IERC721Enumerable-tokenByIndex}.\n     */\n    function tokenByIndex(uint256 index) public view virtual override returns (uint256) {\n        require(index < ERC721Enumerable.totalSupply(), \"ERC721Enumerable: global index out of bounds\");\n        return _allTokens[index];\n    }\n\n    /**\n     * @dev See {ERC721-_beforeTokenTransfer}.\n     */\n    function _beforeTokenTransfer(\n        address from,\n        address to,\n        uint256 firstTokenId,\n        uint256 batchSize\n    ) internal virtual override {\n        super._beforeTokenTransfer(from, to, firstTokenId, batchSize);\n\n        if (batchSize > 1) {\n            // Will only trigger during construction. Batch transferring (minting) is not available afterwards.\n            revert(\"ERC721Enumerable: consecutive transfers not supported\");\n        }\n\n        uint256 tokenId = firstTokenId;\n\n        if (from == address(0)) {\n            _addTokenToAllTokensEnumeration(tokenId);\n        } else if (from != to) {\n            _removeTokenFromOwnerEnumeration(from, tokenId);\n        }\n        if (to == address(0)) {\n            _removeTokenFromAllTokensEnumeration(tokenId);\n        } else if (to != from) {\n            _addTokenToOwnerEnumeration(to, tokenId);\n        }\n    }\n\n    /**\n     * @dev Private function to add a token to this extension's ownership-tracking data structures.\n     * @param to address representing the new owner of the given token ID\n     * @param tokenId uint256 ID of the token to be added to the tokens list of the given address\n     */\n    function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {\n        uint256 length = ERC721.balanceOf(to);\n        _ownedTokens[to][length] = tokenId;\n        _ownedTokensIndex[tokenId] = length;\n    }\n\n    /**\n     * @dev Private function to add a token to this extension's token tracking data structures.\n     * @param tokenId uint256 ID of the token to be added to the tokens list\n     */\n    function _addTokenToAllTokensEnumeration(uint256 tokenId) private {\n        _allTokensIndex[tokenId] = _allTokens.length;\n        _allTokens.push(tokenId);\n    }\n\n    /**\n     * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that\n     * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for\n     * gas optimizations e.g. when performing a transfer operation (avoiding double writes).\n     * This has O(1) time complexity, but alters the order of the _ownedTokens array.\n     * @param from address representing the previous owner of the given token ID\n     * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address\n     */\n    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {\n        // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and\n        // then delete the last slot (swap and pop).\n\n        uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;\n        uint256 tokenIndex = _ownedTokensIndex[tokenId];\n\n        // When the token to delete is the last token, the swap operation is unnecessary\n        if (tokenIndex != lastTokenIndex) {\n            uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];\n\n            _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token\n            _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index\n        }\n\n        // This also deletes the contents at the last position of the array\n        delete _ownedTokensIndex[tokenId];\n        delete _ownedTokens[from][lastTokenIndex];\n    }\n\n    /**\n     * @dev Private function to remove a token from this extension's token tracking data structures.\n     * This has O(1) time complexity, but alters the order of the _allTokens array.\n     * @param tokenId uint256 ID of the token to be removed from the tokens list\n     */\n    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {\n        // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and\n        // then delete the last slot (swap and pop).\n\n        uint256 lastTokenIndex = _allTokens.length - 1;\n        uint256 tokenIndex = _allTokensIndex[tokenId];\n\n        // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so\n        // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding\n        // an 'if' statement (like in _removeTokenFromOwnerEnumeration)\n        uint256 lastTokenId = _allTokens[lastTokenIndex];\n\n        _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token\n        _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index\n\n        // This also deletes the contents at the last position of the array\n        delete _allTokensIndex[tokenId];\n        _allTokens.pop();\n    }\n}\n"},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC721/extensions/IERC721Enumerable.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Enumerable is IERC721 {\n    /**\n     * @dev Returns the total amount of tokens stored by the contract.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns a token ID owned by `owner` at a given `index` of its token list.\n     * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\n     */\n    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);\n\n    /**\n     * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\n     * Use along with {totalSupply} to enumerate all tokens.\n     */\n    function tokenByIndex(uint256 index) external view returns (uint256);\n}\n"},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (token/ERC721/extensions/IERC721Metadata.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Metadata is IERC721 {\n    /**\n     * @dev Returns the token collection name.\n     */\n    function name() external view returns (string memory);\n\n    /**\n     * @dev Returns the token collection symbol.\n     */\n    function symbol() external view returns (string memory);\n\n    /**\n     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n     */\n    function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.0;\n\nimport \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC721 compliant contract.\n */\ninterface IERC721 is IERC165 {\n    /**\n     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n\n    /**\n     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\n     */\n    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n\n    /**\n     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\n     */\n    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n    /**\n     * @dev Returns the number of tokens in ``owner``'s account.\n     */\n    function balanceOf(address owner) external view returns (uint256 balance);\n\n    /**\n     * @dev Returns the owner of the `tokenId` token.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function ownerOf(uint256 tokenId) external view returns (address owner);\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must exist and be owned by `from`.\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes calldata data\n    ) external;\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must exist and be owned by `from`.\n     * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) external;\n\n    /**\n     * @dev Transfers `tokenId` token from `from` to `to`.\n     *\n     * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n     * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n     * understand this adds an external call which potentially creates a reentrancy vulnerability.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must be owned by `from`.\n     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) external;\n\n    /**\n     * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n     * The approval is cleared when the token is transferred.\n     *\n     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n     *\n     * Requirements:\n     *\n     * - The caller must own the token or be an approved operator.\n     * - `tokenId` must exist.\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address to, uint256 tokenId) external;\n\n    /**\n     * @dev Approve or remove `operator` as an operator for the caller.\n     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n     *\n     * Requirements:\n     *\n     * - The `operator` cannot be the caller.\n     *\n     * Emits an {ApprovalForAll} event.\n     */\n    function setApprovalForAll(address operator, bool _approved) external;\n\n    /**\n     * @dev Returns the account approved for `tokenId` token.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function getApproved(uint256 tokenId) external view returns (address operator);\n\n    /**\n     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n     *\n     * See {setApprovalForAll}\n     */\n    function isApprovedForAll(address owner, address operator) external view returns (bool);\n}\n"},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC721/IERC721Receiver.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @title ERC721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC721 asset contracts.\n */\ninterface IERC721Receiver {\n    /**\n     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n     * by `operator` from `from`, this function is called.\n     *\n     * It must return its Solidity selector to confirm the token transfer.\n     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n     *\n     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\n     */\n    function onERC721Received(\n        address operator,\n        address from,\n        uint256 tokenId,\n        bytes calldata data\n    ) external returns (bytes4);\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n    /**\n     * @dev Returns true if `account` is a contract.\n     *\n     * [IMPORTANT]\n     * ====\n     * It is unsafe to assume that an address for which this function returns\n     * false is an externally-owned account (EOA) and not a contract.\n     *\n     * Among others, `isContract` will return false for the following\n     * types of addresses:\n     *\n     *  - an externally-owned account\n     *  - a contract in construction\n     *  - an address where a contract will be created\n     *  - an address where a contract lived, but was destroyed\n     * ====\n     *\n     * [IMPORTANT]\n     * ====\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\n     *\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n     * constructor.\n     * ====\n     */\n    function isContract(address account) internal view returns (bool) {\n        // This method relies on extcodesize/address.code.length, which returns 0\n        // for contracts in construction, since the code is only stored at the end\n        // of the constructor execution.\n\n        return account.code.length > 0;\n    }\n\n    /**\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n     * `recipient`, forwarding all available gas and reverting on errors.\n     *\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\n     * imposed by `transfer`, making them unable to receive funds via\n     * `transfer`. {sendValue} removes this limitation.\n     *\n     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n     *\n     * IMPORTANT: because control is transferred to `recipient`, care must be\n     * taken to not create reentrancy vulnerabilities. Consider using\n     * {ReentrancyGuard} or the\n     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n        (bool success, ) = recipient.call{value: amount}(\"\");\n        require(success, \"Address: unable to send value, recipient may have reverted\");\n    }\n\n    /**\n     * @dev Performs a Solidity function call using a low level `call`. A\n     * plain `call` is an unsafe replacement for a function call: use this\n     * function instead.\n     *\n     * If `target` reverts with a revert reason, it is bubbled up by this\n     * function (like regular Solidity function calls).\n     *\n     * Returns the raw returned data. To convert to the expected return value,\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n     *\n     * Requirements:\n     *\n     * - `target` must be a contract.\n     * - calling `target` with `data` must not revert.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n     * `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but also transferring `value` wei to `target`.\n     *\n     * Requirements:\n     *\n     * - the calling contract must have an ETH balance of at least `value`.\n     * - the called Solidity function must be `payable`.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(address(this).balance >= value, \"Address: insufficient balance for call\");\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        return functionStaticCall(target, data, \"Address: low-level static call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n     *\n     * _Available since v4.8._\n     */\n    function verifyCallResultFromTarget(\n        address target,\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        if (success) {\n            if (returndata.length == 0) {\n                // only check isContract if the call was successful and the return data is empty\n                // otherwise we already know that it was a contract\n                require(isContract(target), \"Address: call to non-contract\");\n            }\n            return returndata;\n        } else {\n            _revert(returndata, errorMessage);\n        }\n    }\n\n    /**\n     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n     * revert reason or using the provided one.\n     *\n     * _Available since v4.3._\n     */\n    function verifyCallResult(\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal pure returns (bytes memory) {\n        if (success) {\n            return returndata;\n        } else {\n            _revert(returndata, errorMessage);\n        }\n    }\n\n    function _revert(bytes memory returndata, string memory errorMessage) private pure {\n        // Look for revert reason and bubble it up if present\n        if (returndata.length > 0) {\n            // The easiest way to bubble the revert reason is using memory via assembly\n            /// @solidity memory-safe-assembly\n            assembly {\n                let returndata_size := mload(returndata)\n                revert(add(32, returndata), returndata_size)\n            }\n        } else {\n            revert(errorMessage);\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n}\n"},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n *     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n *\n * Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\n */\nabstract contract ERC165 is IERC165 {\n    /**\n     * @dev See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n        return interfaceId == type(IERC165).interfaceId;\n    }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n    /**\n     * @dev Returns true if this contract implements the interface defined by\n     * `interfaceId`. See the corresponding\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n     * to learn more about how these ids are created.\n     *\n     * This function call must use less than 30 000 gas.\n     */\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"@openzeppelin/contracts/utils/math/Math.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n    enum Rounding {\n        Down, // Toward negative infinity\n        Up, // Toward infinity\n        Zero // Toward zero\n    }\n\n    /**\n     * @dev Returns the largest of two numbers.\n     */\n    function max(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a > b ? a : b;\n    }\n\n    /**\n     * @dev Returns the smallest of two numbers.\n     */\n    function min(uint256 a, uint256 b) internal pure returns (uint256) {\n        return a < b ? a : b;\n    }\n\n    /**\n     * @dev Returns the average of two numbers. The result is rounded towards\n     * zero.\n     */\n    function average(uint256 a, uint256 b) internal pure returns (uint256) {\n        // (a + b) / 2 can overflow.\n        return (a & b) + (a ^ b) / 2;\n    }\n\n    /**\n     * @dev Returns the ceiling of the division of two numbers.\n     *\n     * This differs from standard division with `/` in that it rounds up instead\n     * of rounding down.\n     */\n    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n        // (a + b - 1) / b can overflow on addition, so we distribute.\n        return a == 0 ? 0 : (a - 1) / b + 1;\n    }\n\n    /**\n     * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n     * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n     * with further edits by Uniswap Labs also under MIT license.\n     */\n    function mulDiv(\n        uint256 x,\n        uint256 y,\n        uint256 denominator\n    ) internal pure returns (uint256 result) {\n        unchecked {\n            // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use\n            // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n            // variables such that product = prod1 * 2^256 + prod0.\n            uint256 prod0; // Least significant 256 bits of the product\n            uint256 prod1; // Most significant 256 bits of the product\n            assembly {\n                let mm := mulmod(x, y, not(0))\n                prod0 := mul(x, y)\n                prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n            }\n\n            // Handle non-overflow cases, 256 by 256 division.\n            if (prod1 == 0) {\n                return prod0 / denominator;\n            }\n\n            // Make sure the result is less than 2^256. Also prevents denominator == 0.\n            require(denominator > prod1);\n\n            ///////////////////////////////////////////////\n            // 512 by 256 division.\n            ///////////////////////////////////////////////\n\n            // Make division exact by subtracting the remainder from [prod1 prod0].\n            uint256 remainder;\n            assembly {\n                // Compute remainder using mulmod.\n                remainder := mulmod(x, y, denominator)\n\n                // Subtract 256 bit number from 512 bit number.\n                prod1 := sub(prod1, gt(remainder, prod0))\n                prod0 := sub(prod0, remainder)\n            }\n\n            // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1.\n            // See https://cs.stackexchange.com/q/138556/92363.\n\n            // Does not overflow because the denominator cannot be zero at this stage in the function.\n            uint256 twos = denominator & (~denominator + 1);\n            assembly {\n                // Divide denominator by twos.\n                denominator := div(denominator, twos)\n\n                // Divide [prod1 prod0] by twos.\n                prod0 := div(prod0, twos)\n\n                // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.\n                twos := add(div(sub(0, twos), twos), 1)\n            }\n\n            // Shift in bits from prod1 into prod0.\n            prod0 |= prod1 * twos;\n\n            // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such\n            // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for\n            // four bits. That is, denominator * inv = 1 mod 2^4.\n            uint256 inverse = (3 * denominator) ^ 2;\n\n            // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works\n            // in modular arithmetic, doubling the correct bits in each step.\n            inverse *= 2 - denominator * inverse; // inverse mod 2^8\n            inverse *= 2 - denominator * inverse; // inverse mod 2^16\n            inverse *= 2 - denominator * inverse; // inverse mod 2^32\n            inverse *= 2 - denominator * inverse; // inverse mod 2^64\n            inverse *= 2 - denominator * inverse; // inverse mod 2^128\n            inverse *= 2 - denominator * inverse; // inverse mod 2^256\n\n            // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n            // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is\n            // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1\n            // is no longer required.\n            result = prod0 * inverse;\n            return result;\n        }\n    }\n\n    /**\n     * @notice Calculates x * y / denominator with full precision, following the selected rounding direction.\n     */\n    function mulDiv(\n        uint256 x,\n        uint256 y,\n        uint256 denominator,\n        Rounding rounding\n    ) internal pure returns (uint256) {\n        uint256 result = mulDiv(x, y, denominator);\n        if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {\n            result += 1;\n        }\n        return result;\n    }\n\n    /**\n     * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n     *\n     * Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11).\n     */\n    function sqrt(uint256 a) internal pure returns (uint256) {\n        if (a == 0) {\n            return 0;\n        }\n\n        // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target.\n        //\n        // We know that the \"msb\" (most significant bit) of our target number `a` is a power of 2 such that we have\n        // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`.\n        //\n        // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)`\n        // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))`\n        // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)`\n        //\n        // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit.\n        uint256 result = 1 << (log2(a) >> 1);\n\n        // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128,\n        // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at\n        // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision\n        // into the expected uint128 result.\n        unchecked {\n            result = (result + a / result) >> 1;\n            result = (result + a / result) >> 1;\n            result = (result + a / result) >> 1;\n            result = (result + a / result) >> 1;\n            result = (result + a / result) >> 1;\n            result = (result + a / result) >> 1;\n            result = (result + a / result) >> 1;\n            return min(result, a / result);\n        }\n    }\n\n    /**\n     * @notice Calculates sqrt(a), following the selected rounding direction.\n     */\n    function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = sqrt(a);\n            return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);\n        }\n    }\n\n    /**\n     * @dev Return the log in base 2, rounded down, of a positive value.\n     * Returns 0 if given 0.\n     */\n    function log2(uint256 value) internal pure returns (uint256) {\n        uint256 result = 0;\n        unchecked {\n            if (value >> 128 > 0) {\n                value >>= 128;\n                result += 128;\n            }\n            if (value >> 64 > 0) {\n                value >>= 64;\n                result += 64;\n            }\n            if (value >> 32 > 0) {\n                value >>= 32;\n                result += 32;\n            }\n            if (value >> 16 > 0) {\n                value >>= 16;\n                result += 16;\n            }\n            if (value >> 8 > 0) {\n                value >>= 8;\n                result += 8;\n            }\n            if (value >> 4 > 0) {\n                value >>= 4;\n                result += 4;\n            }\n            if (value >> 2 > 0) {\n                value >>= 2;\n                result += 2;\n            }\n            if (value >> 1 > 0) {\n                result += 1;\n            }\n        }\n        return result;\n    }\n\n    /**\n     * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n     * Returns 0 if given 0.\n     */\n    function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = log2(value);\n            return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);\n        }\n    }\n\n    /**\n     * @dev Return the log in base 10, rounded down, of a positive value.\n     * Returns 0 if given 0.\n     */\n    function log10(uint256 value) internal pure returns (uint256) {\n        uint256 result = 0;\n        unchecked {\n            if (value >= 10**64) {\n                value /= 10**64;\n                result += 64;\n            }\n            if (value >= 10**32) {\n                value /= 10**32;\n                result += 32;\n            }\n            if (value >= 10**16) {\n                value /= 10**16;\n                result += 16;\n            }\n            if (value >= 10**8) {\n                value /= 10**8;\n                result += 8;\n            }\n            if (value >= 10**4) {\n                value /= 10**4;\n                result += 4;\n            }\n            if (value >= 10**2) {\n                value /= 10**2;\n                result += 2;\n            }\n            if (value >= 10**1) {\n                result += 1;\n            }\n        }\n        return result;\n    }\n\n    /**\n     * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n     * Returns 0 if given 0.\n     */\n    function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = log10(value);\n            return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);\n        }\n    }\n\n    /**\n     * @dev Return the log in base 256, rounded down, of a positive value.\n     * Returns 0 if given 0.\n     *\n     * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n     */\n    function log256(uint256 value) internal pure returns (uint256) {\n        uint256 result = 0;\n        unchecked {\n            if (value >> 128 > 0) {\n                value >>= 128;\n                result += 16;\n            }\n            if (value >> 64 > 0) {\n                value >>= 64;\n                result += 8;\n            }\n            if (value >> 32 > 0) {\n                value >>= 32;\n                result += 4;\n            }\n            if (value >> 16 > 0) {\n                value >>= 16;\n                result += 2;\n            }\n            if (value >> 8 > 0) {\n                result += 1;\n            }\n        }\n        return result;\n    }\n\n    /**\n     * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n     * Returns 0 if given 0.\n     */\n    function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n        unchecked {\n            uint256 result = log256(value);\n            return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/Strings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./math/Math.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n    bytes16 private constant _SYMBOLS = \"0123456789abcdef\";\n    uint8 private constant _ADDRESS_LENGTH = 20;\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n     */\n    function toString(uint256 value) internal pure returns (string memory) {\n        unchecked {\n            uint256 length = Math.log10(value) + 1;\n            string memory buffer = new string(length);\n            uint256 ptr;\n            /// @solidity memory-safe-assembly\n            assembly {\n                ptr := add(buffer, add(32, length))\n            }\n            while (true) {\n                ptr--;\n                /// @solidity memory-safe-assembly\n                assembly {\n                    mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\n                }\n                value /= 10;\n                if (value == 0) break;\n            }\n            return buffer;\n        }\n    }\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n     */\n    function toHexString(uint256 value) internal pure returns (string memory) {\n        unchecked {\n            return toHexString(value, Math.log256(value) + 1);\n        }\n    }\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n     */\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n        bytes memory buffer = new bytes(2 * length + 2);\n        buffer[0] = \"0\";\n        buffer[1] = \"x\";\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\n            buffer[i] = _SYMBOLS[value & 0xf];\n            value >>= 4;\n        }\n        require(value == 0, \"Strings: hex length insufficient\");\n        return string(buffer);\n    }\n\n    /**\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n     */\n    function toHexString(address addr) internal pure returns (string memory) {\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n    }\n}\n"}},"settings":{"optimizer":{"enabled":true,"runs":2000},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"sources":{"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/ERC721.sol","exportedSymbols":{"Address":[1820],"Context":[1842],"ERC165":[2041],"ERC721":[944],"IERC165":[2053],"IERC721":[1060],"IERC721Metadata":[1490],"IERC721Receiver":[1078],"Math":[2918],"Strings":[2017]},"id":945,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"107:23:0"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"./IERC721.sol","id":2,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":945,"sourceUnit":1061,"src":"132:23:0","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","file":"./IERC721Receiver.sol","id":3,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":945,"sourceUnit":1079,"src":"156:31:0","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","file":"./extensions/IERC721Metadata.sol","id":4,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":945,"sourceUnit":1491,"src":"188:42:0","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"../../utils/Address.sol","id":5,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":945,"sourceUnit":1821,"src":"231:33:0","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":6,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":945,"sourceUnit":1843,"src":"265:33:0","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"../../utils/Strings.sol","id":7,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":945,"sourceUnit":2018,"src":"299:33:0","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","file":"../../utils/introspection/ERC165.sol","id":8,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":945,"sourceUnit":2042,"src":"333:46:0","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":10,"name":"Context","nameLocations":["647:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1842,"src":"647:7:0"},"id":11,"nodeType":"InheritanceSpecifier","src":"647:7:0"},{"baseName":{"id":12,"name":"ERC165","nameLocations":["656:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2041,"src":"656:6:0"},"id":13,"nodeType":"InheritanceSpecifier","src":"656:6:0"},{"baseName":{"id":14,"name":"IERC721","nameLocations":["664:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1060,"src":"664:7:0"},"id":15,"nodeType":"InheritanceSpecifier","src":"664:7:0"},{"baseName":{"id":16,"name":"IERC721Metadata","nameLocations":["673:15:0"],"nodeType":"IdentifierPath","referencedDeclaration":1490,"src":"673:15:0"},"id":17,"nodeType":"InheritanceSpecifier","src":"673:15:0"}],"canonicalName":"ERC721","contractDependencies":[],"contractKind":"contract","documentation":{"id":9,"nodeType":"StructuredDocumentation","src":"381:246:0","text":" @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."},"fullyImplemented":true,"id":944,"linearizedBaseContracts":[944,1490,1060,2041,2053,1842],"name":"ERC721","nameLocation":"637:6:0","nodeType":"ContractDefinition","nodes":[{"global":false,"id":20,"libraryName":{"id":18,"name":"Address","nameLocations":["701:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":1820,"src":"701:7:0"},"nodeType":"UsingForDirective","src":"695:26:0","typeName":{"id":19,"name":"address","nodeType":"ElementaryTypeName","src":"713:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},{"global":false,"id":23,"libraryName":{"id":21,"name":"Strings","nameLocations":["732:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":2017,"src":"732:7:0"},"nodeType":"UsingForDirective","src":"726:26:0","typeName":{"id":22,"name":"uint256","nodeType":"ElementaryTypeName","src":"744:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"constant":false,"id":25,"mutability":"mutable","name":"_name","nameLocation":"791:5:0","nodeType":"VariableDeclaration","scope":944,"src":"776:20:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":24,"name":"string","nodeType":"ElementaryTypeName","src":"776:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":27,"mutability":"mutable","name":"_symbol","nameLocation":"838:7:0","nodeType":"VariableDeclaration","scope":944,"src":"823:22:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":26,"name":"string","nodeType":"ElementaryTypeName","src":"823:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":31,"mutability":"mutable","name":"_owners","nameLocation":"934:7:0","nodeType":"VariableDeclaration","scope":944,"src":"898:43:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":30,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":28,"name":"uint256","nodeType":"ElementaryTypeName","src":"906:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"898:27:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":29,"name":"address","nodeType":"ElementaryTypeName","src":"917:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":35,"mutability":"mutable","name":"_balances","nameLocation":"1028:9:0","nodeType":"VariableDeclaration","scope":944,"src":"992:45:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":34,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":32,"name":"address","nodeType":"ElementaryTypeName","src":"1000:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"992:27:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":33,"name":"uint256","nodeType":"ElementaryTypeName","src":"1011:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":39,"mutability":"mutable","name":"_tokenApprovals","nameLocation":"1129:15:0","nodeType":"VariableDeclaration","scope":944,"src":"1093:51:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"typeName":{"id":38,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":36,"name":"uint256","nodeType":"ElementaryTypeName","src":"1101:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1093:27:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":37,"name":"address","nodeType":"ElementaryTypeName","src":"1112:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}},"visibility":"private"},{"constant":false,"id":45,"mutability":"mutable","name":"_operatorApprovals","nameLocation":"1252:18:0","nodeType":"VariableDeclaration","scope":944,"src":"1199:71:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"typeName":{"id":44,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":40,"name":"address","nodeType":"ElementaryTypeName","src":"1207:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1199:44:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":43,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":41,"name":"address","nodeType":"ElementaryTypeName","src":"1226:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1218:24:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":42,"name":"bool","nodeType":"ElementaryTypeName","src":"1237:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"private"},{"body":{"id":61,"nodeType":"Block","src":"1446:57:0","statements":[{"expression":{"id":55,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":53,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25,"src":"1456:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48,"src":"1464:5:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1456:13:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":56,"nodeType":"ExpressionStatement","src":"1456:13:0"},{"expression":{"id":59,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":57,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27,"src":"1479:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":58,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50,"src":"1489:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1479:17:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":60,"nodeType":"ExpressionStatement","src":"1479:17:0"}]},"documentation":{"id":46,"nodeType":"StructuredDocumentation","src":"1277:108:0","text":" @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."},"id":62,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":51,"nodeType":"ParameterList","parameters":[{"constant":false,"id":48,"mutability":"mutable","name":"name_","nameLocation":"1416:5:0","nodeType":"VariableDeclaration","scope":62,"src":"1402:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":47,"name":"string","nodeType":"ElementaryTypeName","src":"1402:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":50,"mutability":"mutable","name":"symbol_","nameLocation":"1437:7:0","nodeType":"VariableDeclaration","scope":62,"src":"1423:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":49,"name":"string","nodeType":"ElementaryTypeName","src":"1423:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1401:44:0"},"returnParameters":{"id":52,"nodeType":"ParameterList","parameters":[],"src":"1446:0:0"},"scope":944,"src":"1390:113:0","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[2040,2052],"body":{"id":92,"nodeType":"Block","src":"1678:192:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":90,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":85,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":78,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":73,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65,"src":"1707:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":75,"name":"IERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1060,"src":"1727:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721_$1060_$","typeString":"type(contract IERC721)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721_$1060_$","typeString":"type(contract IERC721)"}],"id":74,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1722:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":76,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1722:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721_$1060","typeString":"type(contract IERC721)"}},"id":77,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1736:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"1722:25:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1707:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":84,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65,"src":"1763:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":81,"name":"IERC721Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1490,"src":"1783:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1490_$","typeString":"type(contract IERC721Metadata)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Metadata_$1490_$","typeString":"type(contract IERC721Metadata)"}],"id":80,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1778:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":82,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1778:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Metadata_$1490","typeString":"type(contract IERC721Metadata)"}},"id":83,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1800:11:0","memberName":"interfaceId","nodeType":"MemberAccess","src":"1778:33:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1763:48:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1707:104:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":88,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65,"src":"1851:11:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":86,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1827:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721_$944_$","typeString":"type(contract super ERC721)"}},"id":87,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1833:17:0","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":2040,"src":"1827:23:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":89,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1827:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1707:156:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":72,"id":91,"nodeType":"Return","src":"1688:175:0"}]},"documentation":{"id":63,"nodeType":"StructuredDocumentation","src":"1509:56:0","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":93,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1579:17:0","nodeType":"FunctionDefinition","overrides":{"id":69,"nodeType":"OverrideSpecifier","overrides":[{"id":67,"name":"ERC165","nameLocations":["1646:6:0"],"nodeType":"IdentifierPath","referencedDeclaration":2041,"src":"1646:6:0"},{"id":68,"name":"IERC165","nameLocations":["1654:7:0"],"nodeType":"IdentifierPath","referencedDeclaration":2053,"src":"1654:7:0"}],"src":"1637:25:0"},"parameters":{"id":66,"nodeType":"ParameterList","parameters":[{"constant":false,"id":65,"mutability":"mutable","name":"interfaceId","nameLocation":"1604:11:0","nodeType":"VariableDeclaration","scope":93,"src":"1597:18:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":64,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1597:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1596:20:0"},"returnParameters":{"id":72,"nodeType":"ParameterList","parameters":[{"constant":false,"id":71,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":93,"src":"1672:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":70,"name":"bool","nodeType":"ElementaryTypeName","src":"1672:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1671:6:0"},"scope":944,"src":"1570:300:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[985],"body":{"id":116,"nodeType":"Block","src":"2010:123:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":103,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":96,"src":"2028:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2045:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":105,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2037:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":104,"name":"address","nodeType":"ElementaryTypeName","src":"2037:7:0","typeDescriptions":{}}},"id":107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2037:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2028:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572","id":109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2049:43:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""},"value":"ERC721: address zero is not a valid owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159","typeString":"literal_string \"ERC721: address zero is not a valid owner\""}],"id":102,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2020:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2020:73:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":111,"nodeType":"ExpressionStatement","src":"2020:73:0"},{"expression":{"baseExpression":{"id":112,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"2110:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":114,"indexExpression":{"id":113,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":96,"src":"2120:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2110:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":101,"id":115,"nodeType":"Return","src":"2103:23:0"}]},"documentation":{"id":94,"nodeType":"StructuredDocumentation","src":"1876:48:0","text":" @dev See {IERC721-balanceOf}."},"functionSelector":"70a08231","id":117,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"1938:9:0","nodeType":"FunctionDefinition","overrides":{"id":98,"nodeType":"OverrideSpecifier","overrides":[],"src":"1983:8:0"},"parameters":{"id":97,"nodeType":"ParameterList","parameters":[{"constant":false,"id":96,"mutability":"mutable","name":"owner","nameLocation":"1956:5:0","nodeType":"VariableDeclaration","scope":117,"src":"1948:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":95,"name":"address","nodeType":"ElementaryTypeName","src":"1948:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1947:15:0"},"returnParameters":{"id":101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":100,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":117,"src":"2001:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":99,"name":"uint256","nodeType":"ElementaryTypeName","src":"2001:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2000:9:0"},"scope":944,"src":"1929:204:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[993],"body":{"id":144,"nodeType":"Block","src":"2271:138:0","statements":[{"assignments":[127],"declarations":[{"constant":false,"id":127,"mutability":"mutable","name":"owner","nameLocation":"2289:5:0","nodeType":"VariableDeclaration","scope":144,"src":"2281:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":126,"name":"address","nodeType":"ElementaryTypeName","src":"2281:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":131,"initialValue":{"arguments":[{"id":129,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120,"src":"2306:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":128,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":427,"src":"2297:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2297:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2281:33:0"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":133,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"2332:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":136,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2349:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2341:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":134,"name":"address","nodeType":"ElementaryTypeName","src":"2341:7:0","typeDescriptions":{}}},"id":137,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2341:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2332:19:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","id":139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2353:26:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""},"value":"ERC721: invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""}],"id":132,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2324:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":140,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2324:56:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":141,"nodeType":"ExpressionStatement","src":"2324:56:0"},{"expression":{"id":142,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":127,"src":"2397:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":125,"id":143,"nodeType":"Return","src":"2390:12:0"}]},"documentation":{"id":118,"nodeType":"StructuredDocumentation","src":"2139:46:0","text":" @dev See {IERC721-ownerOf}."},"functionSelector":"6352211e","id":145,"implemented":true,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"2199:7:0","nodeType":"FunctionDefinition","overrides":{"id":122,"nodeType":"OverrideSpecifier","overrides":[],"src":"2244:8:0"},"parameters":{"id":121,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120,"mutability":"mutable","name":"tokenId","nameLocation":"2215:7:0","nodeType":"VariableDeclaration","scope":145,"src":"2207:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":119,"name":"uint256","nodeType":"ElementaryTypeName","src":"2207:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2206:17:0"},"returnParameters":{"id":125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":124,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":145,"src":"2262:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":123,"name":"address","nodeType":"ElementaryTypeName","src":"2262:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2261:9:0"},"scope":944,"src":"2190:219:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1475],"body":{"id":154,"nodeType":"Block","src":"2540:29:0","statements":[{"expression":{"id":152,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":25,"src":"2557:5:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":151,"id":153,"nodeType":"Return","src":"2550:12:0"}]},"documentation":{"id":146,"nodeType":"StructuredDocumentation","src":"2415:51:0","text":" @dev See {IERC721Metadata-name}."},"functionSelector":"06fdde03","id":155,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"2480:4:0","nodeType":"FunctionDefinition","overrides":{"id":148,"nodeType":"OverrideSpecifier","overrides":[],"src":"2507:8:0"},"parameters":{"id":147,"nodeType":"ParameterList","parameters":[],"src":"2484:2:0"},"returnParameters":{"id":151,"nodeType":"ParameterList","parameters":[{"constant":false,"id":150,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":155,"src":"2525:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":149,"name":"string","nodeType":"ElementaryTypeName","src":"2525:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2524:15:0"},"scope":944,"src":"2471:98:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1481],"body":{"id":164,"nodeType":"Block","src":"2704:31:0","statements":[{"expression":{"id":162,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":27,"src":"2721:7:0","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":161,"id":163,"nodeType":"Return","src":"2714:14:0"}]},"documentation":{"id":156,"nodeType":"StructuredDocumentation","src":"2575:53:0","text":" @dev See {IERC721Metadata-symbol}."},"functionSelector":"95d89b41","id":165,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"2642:6:0","nodeType":"FunctionDefinition","overrides":{"id":158,"nodeType":"OverrideSpecifier","overrides":[],"src":"2671:8:0"},"parameters":{"id":157,"nodeType":"ParameterList","parameters":[],"src":"2648:2:0"},"returnParameters":{"id":161,"nodeType":"ParameterList","parameters":[{"constant":false,"id":160,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":165,"src":"2689:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":159,"name":"string","nodeType":"ElementaryTypeName","src":"2689:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2688:15:0"},"scope":944,"src":"2633:102:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1489],"body":{"id":203,"nodeType":"Block","src":"2889:188:0","statements":[{"expression":{"arguments":[{"id":175,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":168,"src":"2914:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":174,"name":"_requireMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":822,"src":"2899:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2899:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":177,"nodeType":"ExpressionStatement","src":"2899:23:0"},{"assignments":[179],"declarations":[{"constant":false,"id":179,"mutability":"mutable","name":"baseURI","nameLocation":"2947:7:0","nodeType":"VariableDeclaration","scope":203,"src":"2933:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":178,"name":"string","nodeType":"ElementaryTypeName","src":"2933:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":182,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":180,"name":"_baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":213,"src":"2957:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2957:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"2933:34:0"},{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":185,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"2990:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":184,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2984:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":183,"name":"bytes","nodeType":"ElementaryTypeName","src":"2984:5:0","typeDescriptions":{}}},"id":186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2984:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2999:6:0","memberName":"length","nodeType":"MemberAccess","src":"2984:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3008:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2984:25:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3068:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2984:86:0","trueExpression":{"arguments":[{"arguments":[{"id":194,"name":"baseURI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":179,"src":"3036:7:0","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":195,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":168,"src":"3045:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3053:8:0","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1900,"src":"3045:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$","typeString":"function (uint256) pure returns (string memory)"}},"id":197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3045:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"expression":{"id":192,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"3019:3:0","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":193,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3023:12:0","memberName":"encodePacked","nodeType":"MemberAccess","src":"3019:16:0","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3019:45:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":191,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3012:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":190,"name":"string","nodeType":"ElementaryTypeName","src":"3012:6:0","typeDescriptions":{}}},"id":199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3012:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":173,"id":202,"nodeType":"Return","src":"2977:93:0"}]},"documentation":{"id":166,"nodeType":"StructuredDocumentation","src":"2741:55:0","text":" @dev See {IERC721Metadata-tokenURI}."},"functionSelector":"c87b56dd","id":204,"implemented":true,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"2810:8:0","nodeType":"FunctionDefinition","overrides":{"id":170,"nodeType":"OverrideSpecifier","overrides":[],"src":"2856:8:0"},"parameters":{"id":169,"nodeType":"ParameterList","parameters":[{"constant":false,"id":168,"mutability":"mutable","name":"tokenId","nameLocation":"2827:7:0","nodeType":"VariableDeclaration","scope":204,"src":"2819:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":167,"name":"uint256","nodeType":"ElementaryTypeName","src":"2819:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2818:17:0"},"returnParameters":{"id":173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":172,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":204,"src":"2874:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":171,"name":"string","nodeType":"ElementaryTypeName","src":"2874:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2873:15:0"},"scope":944,"src":"2801:276:0","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":212,"nodeType":"Block","src":"3385:26:0","statements":[{"expression":{"hexValue":"","id":210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3402:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"functionReturnParameters":209,"id":211,"nodeType":"Return","src":"3395:9:0"}]},"documentation":{"id":205,"nodeType":"StructuredDocumentation","src":"3083:231:0","text":" @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."},"id":213,"implemented":true,"kind":"function","modifiers":[],"name":"_baseURI","nameLocation":"3328:8:0","nodeType":"FunctionDefinition","parameters":{"id":206,"nodeType":"ParameterList","parameters":[],"src":"3336:2:0"},"returnParameters":{"id":209,"nodeType":"ParameterList","parameters":[{"constant":false,"id":208,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":213,"src":"3370:13:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":207,"name":"string","nodeType":"ElementaryTypeName","src":"3370:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3369:15:0"},"scope":944,"src":"3319:92:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[1033],"body":{"id":255,"nodeType":"Block","src":"3538:336:0","statements":[{"assignments":[223],"declarations":[{"constant":false,"id":223,"mutability":"mutable","name":"owner","nameLocation":"3556:5:0","nodeType":"VariableDeclaration","scope":255,"src":"3548:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":222,"name":"address","nodeType":"ElementaryTypeName","src":"3548:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":228,"initialValue":{"arguments":[{"id":226,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":218,"src":"3579:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":224,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":944,"src":"3564:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$944_$","typeString":"type(contract ERC721)"}},"id":225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3571:7:0","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":145,"src":"3564:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3564:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3548:39:0"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":230,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":216,"src":"3605:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":231,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":223,"src":"3611:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3605:11:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572","id":233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3618:35:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","typeString":"literal_string \"ERC721: approval to current owner\""},"value":"ERC721: approval to current owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942","typeString":"literal_string \"ERC721: approval to current owner\""}],"id":229,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3597:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3597:57:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":235,"nodeType":"ExpressionStatement","src":"3597:57:0"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":237,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1832,"src":"3686:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3686:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":239,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":223,"src":"3702:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3686:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":242,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":223,"src":"3728:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":243,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1832,"src":"3735:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":244,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3735:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":241,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"3711:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3711:37:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3686:62:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c","id":247,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3762:63:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83","typeString":"literal_string \"ERC721: approve caller is not token owner or approved for all\""},"value":"ERC721: approve caller is not token owner or approved for all"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83","typeString":"literal_string \"ERC721: approve caller is not token owner or approved for all\""}],"id":236,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3665:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":248,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3665:170:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":249,"nodeType":"ExpressionStatement","src":"3665:170:0"},{"expression":{"arguments":[{"id":251,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":216,"src":"3855:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":252,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":218,"src":"3859:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":250,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":776,"src":"3846:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3846:21:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":254,"nodeType":"ExpressionStatement","src":"3846:21:0"}]},"documentation":{"id":214,"nodeType":"StructuredDocumentation","src":"3417:46:0","text":" @dev See {IERC721-approve}."},"functionSelector":"095ea7b3","id":256,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3477:7:0","nodeType":"FunctionDefinition","overrides":{"id":220,"nodeType":"OverrideSpecifier","overrides":[],"src":"3529:8:0"},"parameters":{"id":219,"nodeType":"ParameterList","parameters":[{"constant":false,"id":216,"mutability":"mutable","name":"to","nameLocation":"3493:2:0","nodeType":"VariableDeclaration","scope":256,"src":"3485:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":215,"name":"address","nodeType":"ElementaryTypeName","src":"3485:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":218,"mutability":"mutable","name":"tokenId","nameLocation":"3505:7:0","nodeType":"VariableDeclaration","scope":256,"src":"3497:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":217,"name":"uint256","nodeType":"ElementaryTypeName","src":"3497:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3484:29:0"},"returnParameters":{"id":221,"nodeType":"ParameterList","parameters":[],"src":"3538:0:0"},"scope":944,"src":"3468:406:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1049],"body":{"id":273,"nodeType":"Block","src":"4020:82:0","statements":[{"expression":{"arguments":[{"id":266,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":259,"src":"4045:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":265,"name":"_requireMinted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":822,"src":"4030:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$__$","typeString":"function (uint256) view"}},"id":267,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4030:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":268,"nodeType":"ExpressionStatement","src":"4030:23:0"},{"expression":{"baseExpression":{"id":269,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39,"src":"4071:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":271,"indexExpression":{"id":270,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":259,"src":"4087:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4071:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":264,"id":272,"nodeType":"Return","src":"4064:31:0"}]},"documentation":{"id":257,"nodeType":"StructuredDocumentation","src":"3880:50:0","text":" @dev See {IERC721-getApproved}."},"functionSelector":"081812fc","id":274,"implemented":true,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"3944:11:0","nodeType":"FunctionDefinition","overrides":{"id":261,"nodeType":"OverrideSpecifier","overrides":[],"src":"3993:8:0"},"parameters":{"id":260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":259,"mutability":"mutable","name":"tokenId","nameLocation":"3964:7:0","nodeType":"VariableDeclaration","scope":274,"src":"3956:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":258,"name":"uint256","nodeType":"ElementaryTypeName","src":"3956:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3955:17:0"},"returnParameters":{"id":264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":263,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":274,"src":"4011:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":262,"name":"address","nodeType":"ElementaryTypeName","src":"4011:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4010:9:0"},"scope":944,"src":"3935:167:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1041],"body":{"id":290,"nodeType":"Block","src":"4253:69:0","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":284,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1832,"src":"4282:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4282:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":286,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":277,"src":"4296:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":287,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":279,"src":"4306:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":283,"name":"_setApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"4263:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4263:52:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":289,"nodeType":"ExpressionStatement","src":"4263:52:0"}]},"documentation":{"id":275,"nodeType":"StructuredDocumentation","src":"4108:56:0","text":" @dev See {IERC721-setApprovalForAll}."},"functionSelector":"a22cb465","id":291,"implemented":true,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4178:17:0","nodeType":"FunctionDefinition","overrides":{"id":281,"nodeType":"OverrideSpecifier","overrides":[],"src":"4244:8:0"},"parameters":{"id":280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":277,"mutability":"mutable","name":"operator","nameLocation":"4204:8:0","nodeType":"VariableDeclaration","scope":291,"src":"4196:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":276,"name":"address","nodeType":"ElementaryTypeName","src":"4196:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":279,"mutability":"mutable","name":"approved","nameLocation":"4219:8:0","nodeType":"VariableDeclaration","scope":291,"src":"4214:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":278,"name":"bool","nodeType":"ElementaryTypeName","src":"4214:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4195:33:0"},"returnParameters":{"id":282,"nodeType":"ParameterList","parameters":[],"src":"4253:0:0"},"scope":944,"src":"4169:153:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1059],"body":{"id":308,"nodeType":"Block","src":"4491:59:0","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":302,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45,"src":"4508:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":304,"indexExpression":{"id":303,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":294,"src":"4527:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4508:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":306,"indexExpression":{"id":305,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":296,"src":"4534:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4508:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":301,"id":307,"nodeType":"Return","src":"4501:42:0"}]},"documentation":{"id":292,"nodeType":"StructuredDocumentation","src":"4328:55:0","text":" @dev See {IERC721-isApprovedForAll}."},"functionSelector":"e985e9c5","id":309,"implemented":true,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4397:16:0","nodeType":"FunctionDefinition","overrides":{"id":298,"nodeType":"OverrideSpecifier","overrides":[],"src":"4467:8:0"},"parameters":{"id":297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":294,"mutability":"mutable","name":"owner","nameLocation":"4422:5:0","nodeType":"VariableDeclaration","scope":309,"src":"4414:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":293,"name":"address","nodeType":"ElementaryTypeName","src":"4414:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":296,"mutability":"mutable","name":"operator","nameLocation":"4437:8:0","nodeType":"VariableDeclaration","scope":309,"src":"4429:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":295,"name":"address","nodeType":"ElementaryTypeName","src":"4429:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4413:33:0"},"returnParameters":{"id":301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":300,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":309,"src":"4485:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":299,"name":"bool","nodeType":"ElementaryTypeName","src":"4485:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4484:6:0"},"scope":944,"src":"4388:162:0","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1025],"body":{"id":335,"nodeType":"Block","src":"4731:207:0","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":322,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1832,"src":"4820:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4820:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":324,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":316,"src":"4834:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":321,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":479,"src":"4801:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4801:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f766564","id":326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4844:47:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af","typeString":"literal_string \"ERC721: caller is not token owner or approved\""},"value":"ERC721: caller is not token owner or approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af","typeString":"literal_string \"ERC721: caller is not token owner or approved\""}],"id":320,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4793:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4793:99:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":328,"nodeType":"ExpressionStatement","src":"4793:99:0"},{"expression":{"arguments":[{"id":330,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":312,"src":"4913:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":331,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"4919:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":332,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":316,"src":"4923:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":329,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"4903:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4903:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":334,"nodeType":"ExpressionStatement","src":"4903:28:0"}]},"documentation":{"id":310,"nodeType":"StructuredDocumentation","src":"4556:51:0","text":" @dev See {IERC721-transferFrom}."},"functionSelector":"23b872dd","id":336,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"4621:12:0","nodeType":"FunctionDefinition","overrides":{"id":318,"nodeType":"OverrideSpecifier","overrides":[],"src":"4722:8:0"},"parameters":{"id":317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":312,"mutability":"mutable","name":"from","nameLocation":"4651:4:0","nodeType":"VariableDeclaration","scope":336,"src":"4643:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":311,"name":"address","nodeType":"ElementaryTypeName","src":"4643:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":314,"mutability":"mutable","name":"to","nameLocation":"4673:2:0","nodeType":"VariableDeclaration","scope":336,"src":"4665:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":313,"name":"address","nodeType":"ElementaryTypeName","src":"4665:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":316,"mutability":"mutable","name":"tokenId","nameLocation":"4693:7:0","nodeType":"VariableDeclaration","scope":336,"src":"4685:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":315,"name":"uint256","nodeType":"ElementaryTypeName","src":"4685:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4633:73:0"},"returnParameters":{"id":319,"nodeType":"ParameterList","parameters":[],"src":"4731:0:0"},"scope":944,"src":"4612:326:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1015],"body":{"id":354,"nodeType":"Block","src":"5127:56:0","statements":[{"expression":{"arguments":[{"id":348,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":339,"src":"5154:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":349,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":341,"src":"5160:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":350,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":343,"src":"5164:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":351,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5173:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":347,"name":"safeTransferFrom","nodeType":"Identifier","overloadedDeclarations":[355,385],"referencedDeclaration":385,"src":"5137:16:0","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":352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5137:39:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":353,"nodeType":"ExpressionStatement","src":"5137:39:0"}]},"documentation":{"id":337,"nodeType":"StructuredDocumentation","src":"4944:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"42842e0e","id":355,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"5013:16:0","nodeType":"FunctionDefinition","overrides":{"id":345,"nodeType":"OverrideSpecifier","overrides":[],"src":"5118:8:0"},"parameters":{"id":344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":339,"mutability":"mutable","name":"from","nameLocation":"5047:4:0","nodeType":"VariableDeclaration","scope":355,"src":"5039:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":338,"name":"address","nodeType":"ElementaryTypeName","src":"5039:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":341,"mutability":"mutable","name":"to","nameLocation":"5069:2:0","nodeType":"VariableDeclaration","scope":355,"src":"5061:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":340,"name":"address","nodeType":"ElementaryTypeName","src":"5061:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":343,"mutability":"mutable","name":"tokenId","nameLocation":"5089:7:0","nodeType":"VariableDeclaration","scope":355,"src":"5081:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":342,"name":"uint256","nodeType":"ElementaryTypeName","src":"5081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5029:73:0"},"returnParameters":{"id":346,"nodeType":"ParameterList","parameters":[],"src":"5127:0:0"},"scope":944,"src":"5004:179:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[1005],"body":{"id":384,"nodeType":"Block","src":"5399:164:0","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":370,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1832,"src":"5436:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5436:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":372,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":362,"src":"5450:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":369,"name":"_isApprovedOrOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":479,"src":"5417:18:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) view returns (bool)"}},"id":373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5417:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206f7220617070726f766564","id":374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5460:47:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af","typeString":"literal_string \"ERC721: caller is not token owner or approved\""},"value":"ERC721: caller is not token owner or approved"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af","typeString":"literal_string \"ERC721: caller is not token owner or approved\""}],"id":368,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5409:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5409:99:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":376,"nodeType":"ExpressionStatement","src":"5409:99:0"},{"expression":{"arguments":[{"id":378,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":358,"src":"5532:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":379,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":360,"src":"5538:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":380,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":362,"src":"5542:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":381,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":364,"src":"5551:4:0","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":377,"name":"_safeTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":414,"src":"5518:13:0","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":382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5518:38:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":383,"nodeType":"ExpressionStatement","src":"5518:38:0"}]},"documentation":{"id":356,"nodeType":"StructuredDocumentation","src":"5189:55:0","text":" @dev See {IERC721-safeTransferFrom}."},"functionSelector":"b88d4fde","id":385,"implemented":true,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"5258:16:0","nodeType":"FunctionDefinition","overrides":{"id":366,"nodeType":"OverrideSpecifier","overrides":[],"src":"5390:8:0"},"parameters":{"id":365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":358,"mutability":"mutable","name":"from","nameLocation":"5292:4:0","nodeType":"VariableDeclaration","scope":385,"src":"5284:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":357,"name":"address","nodeType":"ElementaryTypeName","src":"5284:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":360,"mutability":"mutable","name":"to","nameLocation":"5314:2:0","nodeType":"VariableDeclaration","scope":385,"src":"5306:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":359,"name":"address","nodeType":"ElementaryTypeName","src":"5306:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":362,"mutability":"mutable","name":"tokenId","nameLocation":"5334:7:0","nodeType":"VariableDeclaration","scope":385,"src":"5326:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":361,"name":"uint256","nodeType":"ElementaryTypeName","src":"5326:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":364,"mutability":"mutable","name":"data","nameLocation":"5364:4:0","nodeType":"VariableDeclaration","scope":385,"src":"5351:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":363,"name":"bytes","nodeType":"ElementaryTypeName","src":"5351:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5274:100:0"},"returnParameters":{"id":367,"nodeType":"ParameterList","parameters":[],"src":"5399:0:0"},"scope":944,"src":"5249:314:0","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":413,"nodeType":"Block","src":"6564:165:0","statements":[{"expression":{"arguments":[{"id":398,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"6584:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":399,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":390,"src":"6590:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":400,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"6594:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":397,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":752,"src":"6574:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6574:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":402,"nodeType":"ExpressionStatement","src":"6574:28:0"},{"expression":{"arguments":[{"arguments":[{"id":405,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"6643:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":406,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":390,"src":"6649:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":407,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"6653:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":408,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":394,"src":"6662:4:0","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":404,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":884,"src":"6620:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":409,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6620:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":410,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6669:52:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":403,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6612:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6612:110:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":412,"nodeType":"ExpressionStatement","src":"6612:110:0"}]},"documentation":{"id":386,"nodeType":"StructuredDocumentation","src":"5569:850:0","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":414,"implemented":true,"kind":"function","modifiers":[],"name":"_safeTransfer","nameLocation":"6433:13:0","nodeType":"FunctionDefinition","parameters":{"id":395,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"from","nameLocation":"6464:4:0","nodeType":"VariableDeclaration","scope":414,"src":"6456:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":387,"name":"address","nodeType":"ElementaryTypeName","src":"6456:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"to","nameLocation":"6486:2:0","nodeType":"VariableDeclaration","scope":414,"src":"6478:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":389,"name":"address","nodeType":"ElementaryTypeName","src":"6478:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":392,"mutability":"mutable","name":"tokenId","nameLocation":"6506:7:0","nodeType":"VariableDeclaration","scope":414,"src":"6498:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":391,"name":"uint256","nodeType":"ElementaryTypeName","src":"6498:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":394,"mutability":"mutable","name":"data","nameLocation":"6536:4:0","nodeType":"VariableDeclaration","scope":414,"src":"6523:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":393,"name":"bytes","nodeType":"ElementaryTypeName","src":"6523:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6446:100:0"},"returnParameters":{"id":396,"nodeType":"ParameterList","parameters":[],"src":"6564:0:0"},"scope":944,"src":"6424:305:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":426,"nodeType":"Block","src":"6913:40:0","statements":[{"expression":{"baseExpression":{"id":422,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31,"src":"6930:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":424,"indexExpression":{"id":423,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"6938:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6930:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":421,"id":425,"nodeType":"Return","src":"6923:23:0"}]},"documentation":{"id":415,"nodeType":"StructuredDocumentation","src":"6735:98:0","text":" @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist"},"id":427,"implemented":true,"kind":"function","modifiers":[],"name":"_ownerOf","nameLocation":"6847:8:0","nodeType":"FunctionDefinition","parameters":{"id":418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":417,"mutability":"mutable","name":"tokenId","nameLocation":"6864:7:0","nodeType":"VariableDeclaration","scope":427,"src":"6856:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":416,"name":"uint256","nodeType":"ElementaryTypeName","src":"6856:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6855:17:0"},"returnParameters":{"id":421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":420,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":427,"src":"6904:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":419,"name":"address","nodeType":"ElementaryTypeName","src":"6904:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6903:9:0"},"scope":944,"src":"6838:115:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":444,"nodeType":"Block","src":"7327:55:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":436,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":430,"src":"7353:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":435,"name":"_ownerOf","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":427,"src":"7344:8:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7344:17:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7373:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":439,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7365:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":438,"name":"address","nodeType":"ElementaryTypeName","src":"7365:7:0","typeDescriptions":{}}},"id":441,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7365:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7344:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":434,"id":443,"nodeType":"Return","src":"7337:38:0"}]},"documentation":{"id":428,"nodeType":"StructuredDocumentation","src":"6959:292:0","text":" @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)."},"id":445,"implemented":true,"kind":"function","modifiers":[],"name":"_exists","nameLocation":"7265:7:0","nodeType":"FunctionDefinition","parameters":{"id":431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":430,"mutability":"mutable","name":"tokenId","nameLocation":"7281:7:0","nodeType":"VariableDeclaration","scope":445,"src":"7273:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":429,"name":"uint256","nodeType":"ElementaryTypeName","src":"7273:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7272:17:0"},"returnParameters":{"id":434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":433,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":445,"src":"7321:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":432,"name":"bool","nodeType":"ElementaryTypeName","src":"7321:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7320:6:0"},"scope":944,"src":"7256:126:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":478,"nodeType":"Block","src":"7639:162:0","statements":[{"assignments":[456],"declarations":[{"constant":false,"id":456,"mutability":"mutable","name":"owner","nameLocation":"7657:5:0","nodeType":"VariableDeclaration","scope":478,"src":"7649:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":455,"name":"address","nodeType":"ElementaryTypeName","src":"7649:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":461,"initialValue":{"arguments":[{"id":459,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":450,"src":"7680:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":457,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":944,"src":"7665:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$944_$","typeString":"type(contract ERC721)"}},"id":458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7672:7:0","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":145,"src":"7665:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7665:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"7649:39:0"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":462,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":448,"src":"7706:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":463,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":456,"src":"7717:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7706:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":466,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":456,"src":"7743:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":467,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":448,"src":"7750:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":465,"name":"isApprovedForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":309,"src":"7726:16:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":468,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7726:32:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7706:52:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":471,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":450,"src":"7774:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":470,"name":"getApproved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":274,"src":"7762:11:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7762:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":473,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":448,"src":"7786:7:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7762:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7706:87:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":476,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7705:89:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":454,"id":477,"nodeType":"Return","src":"7698:96:0"}]},"documentation":{"id":446,"nodeType":"StructuredDocumentation","src":"7388:147:0","text":" @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."},"id":479,"implemented":true,"kind":"function","modifiers":[],"name":"_isApprovedOrOwner","nameLocation":"7549:18:0","nodeType":"FunctionDefinition","parameters":{"id":451,"nodeType":"ParameterList","parameters":[{"constant":false,"id":448,"mutability":"mutable","name":"spender","nameLocation":"7576:7:0","nodeType":"VariableDeclaration","scope":479,"src":"7568:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":447,"name":"address","nodeType":"ElementaryTypeName","src":"7568:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":450,"mutability":"mutable","name":"tokenId","nameLocation":"7593:7:0","nodeType":"VariableDeclaration","scope":479,"src":"7585:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":449,"name":"uint256","nodeType":"ElementaryTypeName","src":"7585:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7567:34:0"},"returnParameters":{"id":454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":453,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":479,"src":"7633:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":452,"name":"bool","nodeType":"ElementaryTypeName","src":"7633:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7632:6:0"},"scope":944,"src":"7540:261:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":493,"nodeType":"Block","src":"8196:43:0","statements":[{"expression":{"arguments":[{"id":488,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":482,"src":"8216:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":489,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":484,"src":"8220:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8229:2:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"id":487,"name":"_safeMint","nodeType":"Identifier","overloadedDeclarations":[494,523],"referencedDeclaration":523,"src":"8206:9:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory)"}},"id":491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8206:26:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":492,"nodeType":"ExpressionStatement","src":"8206:26:0"}]},"documentation":{"id":480,"nodeType":"StructuredDocumentation","src":"7807:319:0","text":" @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"id":494,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"8140:9:0","nodeType":"FunctionDefinition","parameters":{"id":485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":482,"mutability":"mutable","name":"to","nameLocation":"8158:2:0","nodeType":"VariableDeclaration","scope":494,"src":"8150:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":481,"name":"address","nodeType":"ElementaryTypeName","src":"8150:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":484,"mutability":"mutable","name":"tokenId","nameLocation":"8170:7:0","nodeType":"VariableDeclaration","scope":494,"src":"8162:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":483,"name":"uint256","nodeType":"ElementaryTypeName","src":"8162:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8149:29:0"},"returnParameters":{"id":486,"nodeType":"ParameterList","parameters":[],"src":"8196:0:0"},"scope":944,"src":"8131:108:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":522,"nodeType":"Block","src":"8574:195:0","statements":[{"expression":{"arguments":[{"id":505,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":497,"src":"8590:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":506,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":499,"src":"8594:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":504,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":600,"src":"8584:5:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8584:18:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":508,"nodeType":"ExpressionStatement","src":"8584:18:0"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":513,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8664:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":512,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8656:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":511,"name":"address","nodeType":"ElementaryTypeName","src":"8656:7:0","typeDescriptions":{}}},"id":514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8656:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":515,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":497,"src":"8668:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":516,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":499,"src":"8672:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":517,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":501,"src":"8681:4:0","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":510,"name":"_checkOnERC721Received","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":884,"src":"8633:22:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,address,uint256,bytes memory) returns (bool)"}},"id":518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8633:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8700:52:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":509,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8612:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8612:150:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":521,"nodeType":"ExpressionStatement","src":"8612:150:0"}]},"documentation":{"id":495,"nodeType":"StructuredDocumentation","src":"8245:210:0","text":" @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."},"id":523,"implemented":true,"kind":"function","modifiers":[],"name":"_safeMint","nameLocation":"8469:9:0","nodeType":"FunctionDefinition","parameters":{"id":502,"nodeType":"ParameterList","parameters":[{"constant":false,"id":497,"mutability":"mutable","name":"to","nameLocation":"8496:2:0","nodeType":"VariableDeclaration","scope":523,"src":"8488:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":496,"name":"address","nodeType":"ElementaryTypeName","src":"8488:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":499,"mutability":"mutable","name":"tokenId","nameLocation":"8516:7:0","nodeType":"VariableDeclaration","scope":523,"src":"8508:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":498,"name":"uint256","nodeType":"ElementaryTypeName","src":"8508:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":501,"mutability":"mutable","name":"data","nameLocation":"8546:4:0","nodeType":"VariableDeclaration","scope":523,"src":"8533:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":500,"name":"bytes","nodeType":"ElementaryTypeName","src":"8533:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8478:78:0"},"returnParameters":{"id":503,"nodeType":"ParameterList","parameters":[],"src":"8574:0:0"},"scope":944,"src":"8460:309:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":599,"nodeType":"Block","src":"9152:859:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":532,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"9170:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":535,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9184:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":534,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9176:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":533,"name":"address","nodeType":"ElementaryTypeName","src":"9176:7:0","typeDescriptions":{}}},"id":536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9176:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9170:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a206d696e7420746f20746865207a65726f2061646472657373","id":538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9188:34:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""},"value":"ERC721: mint to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6","typeString":"literal_string \"ERC721: mint to the zero address\""}],"id":531,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9162:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9162:61:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":540,"nodeType":"ExpressionStatement","src":"9162:61:0"},{"expression":{"arguments":[{"id":545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9241:17:0","subExpression":{"arguments":[{"id":543,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"9250:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":542,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":445,"src":"9242:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":544,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9242:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","id":546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9260:30:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""},"value":"ERC721: token already minted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""}],"id":541,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9233:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9233:58:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":548,"nodeType":"ExpressionStatement","src":"9233:58:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9331:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9323:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":550,"name":"address","nodeType":"ElementaryTypeName","src":"9323:7:0","typeDescriptions":{}}},"id":553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9323:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":554,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"9335:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":555,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"9339:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9348:1:0","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":549,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":930,"src":"9302:20:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9302:48:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":558,"nodeType":"ExpressionStatement","src":"9302:48:0"},{"expression":{"arguments":[{"id":563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"9445:17:0","subExpression":{"arguments":[{"id":561,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"9454:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":560,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":445,"src":"9446:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9446:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20746f6b656e20616c7265616479206d696e746564","id":564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9464:30:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""},"value":"ERC721: token already minted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57","typeString":"literal_string \"ERC721: token already minted\""}],"id":559,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9437:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9437:58:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":566,"nodeType":"ExpressionStatement","src":"9437:58:0"},{"id":573,"nodeType":"UncheckedBlock","src":"9506:360:0","statements":[{"expression":{"id":571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":567,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"9837:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":569,"indexExpression":{"id":568,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"9847:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9837:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9854:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9837:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":572,"nodeType":"ExpressionStatement","src":"9837:18:0"}]},{"expression":{"id":578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":574,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31,"src":"9876:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":576,"indexExpression":{"id":575,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"9884:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9876:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":577,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"9895:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9876:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":579,"nodeType":"ExpressionStatement","src":"9876:21:0"},{"eventCall":{"arguments":[{"arguments":[{"hexValue":"30","id":583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9930:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":582,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9922:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":581,"name":"address","nodeType":"ElementaryTypeName","src":"9922:7:0","typeDescriptions":{}}},"id":584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9922:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":585,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"9934:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":586,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"9938:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":580,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":959,"src":"9913:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9913:33:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":588,"nodeType":"EmitStatement","src":"9908:38:0"},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9985:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":591,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9977:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":590,"name":"address","nodeType":"ElementaryTypeName","src":"9977:7:0","typeDescriptions":{}}},"id":593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9977:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":594,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":526,"src":"9989:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":595,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":528,"src":"9993:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10002:1:0","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":589,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":943,"src":"9957:19:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9957:47:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":598,"nodeType":"ExpressionStatement","src":"9957:47:0"}]},"documentation":{"id":524,"nodeType":"StructuredDocumentation","src":"8775:311:0","text":" @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."},"id":600,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"9100:5:0","nodeType":"FunctionDefinition","parameters":{"id":529,"nodeType":"ParameterList","parameters":[{"constant":false,"id":526,"mutability":"mutable","name":"to","nameLocation":"9114:2:0","nodeType":"VariableDeclaration","scope":600,"src":"9106:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":525,"name":"address","nodeType":"ElementaryTypeName","src":"9106:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":528,"mutability":"mutable","name":"tokenId","nameLocation":"9126:7:0","nodeType":"VariableDeclaration","scope":600,"src":"9118:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":527,"name":"uint256","nodeType":"ElementaryTypeName","src":"9118:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9105:29:0"},"returnParameters":{"id":530,"nodeType":"ParameterList","parameters":[],"src":"9152:0:0"},"scope":944,"src":"9091:920:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":666,"nodeType":"Block","src":"10386:713:0","statements":[{"assignments":[607],"declarations":[{"constant":false,"id":607,"mutability":"mutable","name":"owner","nameLocation":"10404:5:0","nodeType":"VariableDeclaration","scope":666,"src":"10396:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":606,"name":"address","nodeType":"ElementaryTypeName","src":"10396:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":612,"initialValue":{"arguments":[{"id":610,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":603,"src":"10427:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":608,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":944,"src":"10412:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$944_$","typeString":"type(contract ERC721)"}},"id":609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10419:7:0","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":145,"src":"10412:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":611,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10412:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"10396:39:0"},{"expression":{"arguments":[{"id":614,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":607,"src":"10467:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10482:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10474:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":615,"name":"address","nodeType":"ElementaryTypeName","src":"10474:7:0","typeDescriptions":{}}},"id":618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10474:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":619,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":603,"src":"10486:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10495:1:0","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":613,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":930,"src":"10446:20:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10446:51:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":622,"nodeType":"ExpressionStatement","src":"10446:51:0"},{"expression":{"id":628,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":623,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":607,"src":"10599:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":626,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":603,"src":"10622:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":624,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":944,"src":"10607:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$944_$","typeString":"type(contract ERC721)"}},"id":625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10614:7:0","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":145,"src":"10607:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10607:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10599:31:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":629,"nodeType":"ExpressionStatement","src":"10599:31:0"},{"expression":{"id":633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"10668:31:0","subExpression":{"baseExpression":{"id":630,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39,"src":"10675:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":632,"indexExpression":{"id":631,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":603,"src":"10691:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10675:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":634,"nodeType":"ExpressionStatement","src":"10668:31:0"},{"id":641,"nodeType":"UncheckedBlock","src":"10710:237:0","statements":[{"expression":{"id":639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":635,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"10915:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":637,"indexExpression":{"id":636,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":607,"src":"10925:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10915:16:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":638,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10935:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10915:21:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":640,"nodeType":"ExpressionStatement","src":"10915:21:0"}]},{"expression":{"id":645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"10956:23:0","subExpression":{"baseExpression":{"id":642,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31,"src":"10963:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":644,"indexExpression":{"id":643,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":603,"src":"10971:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"10963:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":646,"nodeType":"ExpressionStatement","src":"10956:23:0"},{"eventCall":{"arguments":[{"id":648,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":607,"src":"11004:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":651,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11019:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":650,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11011:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":649,"name":"address","nodeType":"ElementaryTypeName","src":"11011:7:0","typeDescriptions":{}}},"id":652,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11011:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":653,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":603,"src":"11023:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":647,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":959,"src":"10995:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10995:36:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":655,"nodeType":"EmitStatement","src":"10990:41:0"},{"expression":{"arguments":[{"id":657,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":607,"src":"11062:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11077:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":659,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11069:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":658,"name":"address","nodeType":"ElementaryTypeName","src":"11069:7:0","typeDescriptions":{}}},"id":661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11069:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":662,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":603,"src":"11081:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11090:1:0","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":656,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":943,"src":"11042:19:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11042:50:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":665,"nodeType":"ExpressionStatement","src":"11042:50:0"}]},"documentation":{"id":601,"nodeType":"StructuredDocumentation","src":"10017:315:0","text":" @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."},"id":667,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"10346:5:0","nodeType":"FunctionDefinition","parameters":{"id":604,"nodeType":"ParameterList","parameters":[{"constant":false,"id":603,"mutability":"mutable","name":"tokenId","nameLocation":"10360:7:0","nodeType":"VariableDeclaration","scope":667,"src":"10352:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":602,"name":"uint256","nodeType":"ElementaryTypeName","src":"10352:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10351:17:0"},"returnParameters":{"id":605,"nodeType":"ParameterList","parameters":[],"src":"10386:0:0"},"scope":944,"src":"10337:762:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":751,"nodeType":"Block","src":"11532:1124:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":680,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":674,"src":"11565:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":678,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":944,"src":"11550:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$944_$","typeString":"type(contract ERC721)"}},"id":679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11557:7:0","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":145,"src":"11550:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11550:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":682,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"11577:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11550:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572","id":684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11583:39:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""},"value":"ERC721: transfer from incorrect owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""}],"id":677,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11542:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11542:81:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":686,"nodeType":"ExpressionStatement","src":"11542:81:0"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":688,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":672,"src":"11641:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11655:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":690,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11647:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":689,"name":"address","nodeType":"ElementaryTypeName","src":"11647:7:0","typeDescriptions":{}}},"id":692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11647:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11641:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373","id":694,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11659:38:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""},"value":"ERC721: transfer to the zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4","typeString":"literal_string \"ERC721: transfer to the zero address\""}],"id":687,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11633:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11633:65:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":696,"nodeType":"ExpressionStatement","src":"11633:65:0"},{"expression":{"arguments":[{"id":698,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"11730:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":699,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":672,"src":"11736:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":700,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":674,"src":"11740:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11749:1:0","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":697,"name":"_beforeTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":930,"src":"11709:20:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":702,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11709:42:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":703,"nodeType":"ExpressionStatement","src":"11709:42:0"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":707,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":674,"src":"11866:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":705,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":944,"src":"11851:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$944_$","typeString":"type(contract ERC721)"}},"id":706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11858:7:0","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":145,"src":"11851:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11851:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":709,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"11878:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11851:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572","id":711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11884:39:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""},"value":"ERC721: transfer from incorrect owner"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48","typeString":"literal_string \"ERC721: transfer from incorrect owner\""}],"id":704,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11843:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11843:81:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":713,"nodeType":"ExpressionStatement","src":"11843:81:0"},{"expression":{"id":717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"11986:31:0","subExpression":{"baseExpression":{"id":714,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39,"src":"11993:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":716,"indexExpression":{"id":715,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":674,"src":"12009:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"11993:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":718,"nodeType":"ExpressionStatement","src":"11986:31:0"},{"id":731,"nodeType":"UncheckedBlock","src":"12028:496:0","statements":[{"expression":{"id":723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":719,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"12461:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":721,"indexExpression":{"id":720,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"12471:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12461:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"31","id":722,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12480:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12461:20:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":724,"nodeType":"ExpressionStatement","src":"12461:20:0"},{"expression":{"id":729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":725,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"12495:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":727,"indexExpression":{"id":726,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":672,"src":"12505:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12495:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":728,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12512:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12495:18:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":730,"nodeType":"ExpressionStatement","src":"12495:18:0"}]},{"expression":{"id":736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":732,"name":"_owners","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":31,"src":"12533:7:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":734,"indexExpression":{"id":733,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":674,"src":"12541:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12533:16:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":735,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":672,"src":"12552:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12533:21:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":737,"nodeType":"ExpressionStatement","src":"12533:21:0"},{"eventCall":{"arguments":[{"id":739,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"12579:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":740,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":672,"src":"12585:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":741,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":674,"src":"12589:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":738,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":959,"src":"12570:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12570:27:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":743,"nodeType":"EmitStatement","src":"12565:32:0"},{"expression":{"arguments":[{"id":745,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":670,"src":"12628:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":746,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":672,"src":"12634:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":747,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":674,"src":"12638:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12647:1:0","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":744,"name":"_afterTokenTransfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":943,"src":"12608:19:0","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12608:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":750,"nodeType":"ExpressionStatement","src":"12608:41:0"}]},"documentation":{"id":668,"nodeType":"StructuredDocumentation","src":"11105:313:0","text":" @dev Transfers `tokenId` from `from` to `to`.\n  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."},"id":752,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"11432:9:0","nodeType":"FunctionDefinition","parameters":{"id":675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":670,"mutability":"mutable","name":"from","nameLocation":"11459:4:0","nodeType":"VariableDeclaration","scope":752,"src":"11451:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":669,"name":"address","nodeType":"ElementaryTypeName","src":"11451:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":672,"mutability":"mutable","name":"to","nameLocation":"11481:2:0","nodeType":"VariableDeclaration","scope":752,"src":"11473:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":671,"name":"address","nodeType":"ElementaryTypeName","src":"11473:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":674,"mutability":"mutable","name":"tokenId","nameLocation":"11501:7:0","nodeType":"VariableDeclaration","scope":752,"src":"11493:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":673,"name":"uint256","nodeType":"ElementaryTypeName","src":"11493:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11441:73:0"},"returnParameters":{"id":676,"nodeType":"ParameterList","parameters":[],"src":"11532:0:0"},"scope":944,"src":"11423:1233:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":775,"nodeType":"Block","src":"12832:107:0","statements":[{"expression":{"id":764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":760,"name":"_tokenApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39,"src":"12842:15:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":762,"indexExpression":{"id":761,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":757,"src":"12858:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12842:24:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":763,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"12869:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12842:29:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":765,"nodeType":"ExpressionStatement","src":"12842:29:0"},{"eventCall":{"arguments":[{"arguments":[{"id":769,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":757,"src":"12910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":767,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":944,"src":"12895:6:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$944_$","typeString":"type(contract ERC721)"}},"id":768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12902:7:0","memberName":"ownerOf","nodeType":"MemberAccess","referencedDeclaration":145,"src":"12895:14:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_address_$","typeString":"function (uint256) view returns (address)"}},"id":770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12895:23:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":771,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":755,"src":"12920:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":772,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":757,"src":"12924:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":766,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":968,"src":"12886:8:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12886:46:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":774,"nodeType":"EmitStatement","src":"12881:51:0"}]},"documentation":{"id":753,"nodeType":"StructuredDocumentation","src":"12662:101:0","text":" @dev Approve `to` to operate on `tokenId`\n Emits an {Approval} event."},"id":776,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"12777:8:0","nodeType":"FunctionDefinition","parameters":{"id":758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":755,"mutability":"mutable","name":"to","nameLocation":"12794:2:0","nodeType":"VariableDeclaration","scope":776,"src":"12786:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":754,"name":"address","nodeType":"ElementaryTypeName","src":"12786:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":757,"mutability":"mutable","name":"tokenId","nameLocation":"12806:7:0","nodeType":"VariableDeclaration","scope":776,"src":"12798:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":756,"name":"uint256","nodeType":"ElementaryTypeName","src":"12798:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12785:29:0"},"returnParameters":{"id":759,"nodeType":"ParameterList","parameters":[],"src":"12832:0:0"},"scope":944,"src":"12768:171:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":807,"nodeType":"Block","src":"13198:184:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":787,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":779,"src":"13216:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":788,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":781,"src":"13225:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13216:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","id":790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13235:27:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","typeString":"literal_string \"ERC721: approve to caller\""},"value":"ERC721: approve to caller"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05","typeString":"literal_string \"ERC721: approve to caller\""}],"id":786,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13208:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13208:55:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":792,"nodeType":"ExpressionStatement","src":"13208:55:0"},{"expression":{"id":799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":793,"name":"_operatorApprovals","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45,"src":"13273:18:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$","typeString":"mapping(address => mapping(address => bool))"}},"id":796,"indexExpression":{"id":794,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":779,"src":"13292:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13273:25:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":797,"indexExpression":{"id":795,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":781,"src":"13299:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13273:35:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":798,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"13311:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13273:46:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":800,"nodeType":"ExpressionStatement","src":"13273:46:0"},{"eventCall":{"arguments":[{"id":802,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":779,"src":"13349:5:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":803,"name":"operator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":781,"src":"13356:8:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":804,"name":"approved","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"13366:8:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":801,"name":"ApprovalForAll","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":977,"src":"13334:14:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$","typeString":"function (address,address,bool)"}},"id":805,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13334:41:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":806,"nodeType":"EmitStatement","src":"13329:46:0"}]},"documentation":{"id":777,"nodeType":"StructuredDocumentation","src":"12945:125:0","text":" @dev Approve `operator` to operate on all of `owner` tokens\n Emits an {ApprovalForAll} event."},"id":808,"implemented":true,"kind":"function","modifiers":[],"name":"_setApprovalForAll","nameLocation":"13084:18:0","nodeType":"FunctionDefinition","parameters":{"id":784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":779,"mutability":"mutable","name":"owner","nameLocation":"13120:5:0","nodeType":"VariableDeclaration","scope":808,"src":"13112:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":778,"name":"address","nodeType":"ElementaryTypeName","src":"13112:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":781,"mutability":"mutable","name":"operator","nameLocation":"13143:8:0","nodeType":"VariableDeclaration","scope":808,"src":"13135:16:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":780,"name":"address","nodeType":"ElementaryTypeName","src":"13135:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":783,"mutability":"mutable","name":"approved","nameLocation":"13166:8:0","nodeType":"VariableDeclaration","scope":808,"src":"13161:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":782,"name":"bool","nodeType":"ElementaryTypeName","src":"13161:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13102:78:0"},"returnParameters":{"id":785,"nodeType":"ParameterList","parameters":[],"src":"13198:0:0"},"scope":944,"src":"13075:307:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":821,"nodeType":"Block","src":"13529:70:0","statements":[{"expression":{"arguments":[{"arguments":[{"id":816,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":811,"src":"13555:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":815,"name":"_exists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":445,"src":"13547:7:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13547:16:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","id":818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13565:26:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""},"value":"ERC721: invalid token ID"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f","typeString":"literal_string \"ERC721: invalid token ID\""}],"id":814,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13539:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13539:53:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":820,"nodeType":"ExpressionStatement","src":"13539:53:0"}]},"documentation":{"id":809,"nodeType":"StructuredDocumentation","src":"13388:73:0","text":" @dev Reverts if the `tokenId` has not been minted yet."},"id":822,"implemented":true,"kind":"function","modifiers":[],"name":"_requireMinted","nameLocation":"13475:14:0","nodeType":"FunctionDefinition","parameters":{"id":812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":811,"mutability":"mutable","name":"tokenId","nameLocation":"13498:7:0","nodeType":"VariableDeclaration","scope":822,"src":"13490:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":810,"name":"uint256","nodeType":"ElementaryTypeName","src":"13490:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13489:17:0"},"returnParameters":{"id":813,"nodeType":"ParameterList","parameters":[],"src":"13529:0:0"},"scope":944,"src":"13466:133:0","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":883,"nodeType":"Block","src":"14306:676:0","statements":[{"condition":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":836,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":827,"src":"14320:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14323:10:0","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":1508,"src":"14320:13:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$attached_to$_t_address_$","typeString":"function (address) view returns (bool)"}},"id":838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14320:15:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":881,"nodeType":"Block","src":"14940:36:0","statements":[{"expression":{"hexValue":"74727565","id":879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"14961:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":835,"id":880,"nodeType":"Return","src":"14954:11:0"}]},"id":882,"nodeType":"IfStatement","src":"14316:660:0","trueBody":{"id":878,"nodeType":"Block","src":"14337:597:0","statements":[{"clauses":[{"block":{"id":858,"nodeType":"Block","src":"14451:91:0","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":852,"name":"retval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":850,"src":"14476:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":853,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1078,"src":"14486:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1078_$","typeString":"type(contract IERC721Receiver)"}},"id":854,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14502:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1077,"src":"14486:32:0","typeDescriptions":{"typeIdentifier":"t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$","typeString":"function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"}},"id":855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14519:8:0","memberName":"selector","nodeType":"MemberAccess","src":"14486:41:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"14476:51:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":835,"id":857,"nodeType":"Return","src":"14469:58:0"}]},"errorName":"","id":859,"nodeType":"TryCatchClause","parameters":{"id":851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":850,"mutability":"mutable","name":"retval","nameLocation":"14443:6:0","nodeType":"VariableDeclaration","scope":859,"src":"14436:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":849,"name":"bytes4","nodeType":"ElementaryTypeName","src":"14436:6:0","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"14435:15:0"},"src":"14427:115:0"},{"block":{"id":875,"nodeType":"Block","src":"14571:353:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":863,"name":"reason","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":861,"src":"14593:6:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14600:6:0","memberName":"length","nodeType":"MemberAccess","src":"14593:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14610:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14593:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":873,"nodeType":"Block","src":"14720:190:0","statements":[{"AST":{"nodeType":"YulBlock","src":"14806:86:0","statements":[{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"14843:2:0","type":"","value":"32"},{"name":"reason","nodeType":"YulIdentifier","src":"14847:6:0"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"14839:3:0"},"nodeType":"YulFunctionCall","src":"14839:15:0"},{"arguments":[{"name":"reason","nodeType":"YulIdentifier","src":"14862:6:0"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"14856:5:0"},"nodeType":"YulFunctionCall","src":"14856:13:0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"14832:6:0"},"nodeType":"YulFunctionCall","src":"14832:38:0"},"nodeType":"YulExpressionStatement","src":"14832:38:0"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":861,"isOffset":false,"isSlot":false,"src":"14847:6:0","valueSize":1},{"declaration":861,"isOffset":false,"isSlot":false,"src":"14862:6:0","valueSize":1}],"id":872,"nodeType":"InlineAssembly","src":"14797:95:0"}]},"id":874,"nodeType":"IfStatement","src":"14589:321:0","trueBody":{"id":871,"nodeType":"Block","src":"14613:101:0","statements":[{"expression":{"arguments":[{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572","id":868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14642:52:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""},"value":"ERC721: transfer to non ERC721Receiver implementer"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e","typeString":"literal_string \"ERC721: transfer to non ERC721Receiver implementer\""}],"id":867,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"14635:6:0","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14635:60:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":870,"nodeType":"ExpressionStatement","src":"14635:60:0"}]}}]},"errorName":"","id":876,"nodeType":"TryCatchClause","parameters":{"id":862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":861,"mutability":"mutable","name":"reason","nameLocation":"14563:6:0","nodeType":"VariableDeclaration","scope":876,"src":"14550:19:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":860,"name":"bytes","nodeType":"ElementaryTypeName","src":"14550:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14549:21:0"},"src":"14543:381:0"}],"externalCall":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":843,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1832,"src":"14392:10:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14392:12:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":845,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":825,"src":"14406:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":846,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":829,"src":"14412:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":847,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":831,"src":"14421:4:0","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"id":840,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":827,"src":"14371:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":839,"name":"IERC721Receiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1078,"src":"14355:15:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Receiver_$1078_$","typeString":"type(contract IERC721Receiver)"}},"id":841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14355:19:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC721Receiver_$1078","typeString":"contract IERC721Receiver"}},"id":842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14375:16:0","memberName":"onERC721Received","nodeType":"MemberAccess","referencedDeclaration":1077,"src":"14355:36:0","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":848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14355:71:0","tryCall":true,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":877,"nodeType":"TryStatement","src":"14351:573:0"}]}}]},"documentation":{"id":823,"nodeType":"StructuredDocumentation","src":"13605:541:0","text":" @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value"},"id":884,"implemented":true,"kind":"function","modifiers":[],"name":"_checkOnERC721Received","nameLocation":"14160:22:0","nodeType":"FunctionDefinition","parameters":{"id":832,"nodeType":"ParameterList","parameters":[{"constant":false,"id":825,"mutability":"mutable","name":"from","nameLocation":"14200:4:0","nodeType":"VariableDeclaration","scope":884,"src":"14192:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":824,"name":"address","nodeType":"ElementaryTypeName","src":"14192:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":827,"mutability":"mutable","name":"to","nameLocation":"14222:2:0","nodeType":"VariableDeclaration","scope":884,"src":"14214:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":826,"name":"address","nodeType":"ElementaryTypeName","src":"14214:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":829,"mutability":"mutable","name":"tokenId","nameLocation":"14242:7:0","nodeType":"VariableDeclaration","scope":884,"src":"14234:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":828,"name":"uint256","nodeType":"ElementaryTypeName","src":"14234:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":831,"mutability":"mutable","name":"data","nameLocation":"14272:4:0","nodeType":"VariableDeclaration","scope":884,"src":"14259:17:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":830,"name":"bytes","nodeType":"ElementaryTypeName","src":"14259:5:0","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"14182:100:0"},"returnParameters":{"id":835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":884,"src":"14300:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":833,"name":"bool","nodeType":"ElementaryTypeName","src":"14300:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"14299:6:0"},"scope":944,"src":"14151:831:0","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":929,"nodeType":"Block","src":"15856:238:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":896,"name":"batchSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":893,"src":"15870:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15882:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15870:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":928,"nodeType":"IfStatement","src":"15866:222:0","trueBody":{"id":927,"nodeType":"Block","src":"15885:203:0","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":899,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":887,"src":"15903:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15919:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":901,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15911:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":900,"name":"address","nodeType":"ElementaryTypeName","src":"15911:7:0","typeDescriptions":{}}},"id":903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15911:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"15903:18:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":912,"nodeType":"IfStatement","src":"15899:85:0","trueBody":{"id":911,"nodeType":"Block","src":"15923:61:0","statements":[{"expression":{"id":909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":905,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"15941:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":907,"indexExpression":{"id":906,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":887,"src":"15951:4:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15941:15:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":908,"name":"batchSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":893,"src":"15960:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15941:28:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":910,"nodeType":"ExpressionStatement","src":"15941:28:0"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":918,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":913,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":889,"src":"16001:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16015:1:0","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":915,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16007:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":914,"name":"address","nodeType":"ElementaryTypeName","src":"16007:7:0","typeDescriptions":{}}},"id":917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16007:10:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16001:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":926,"nodeType":"IfStatement","src":"15997:81:0","trueBody":{"id":925,"nodeType":"Block","src":"16019:59:0","statements":[{"expression":{"id":923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":919,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":35,"src":"16037:9:0","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":921,"indexExpression":{"id":920,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":889,"src":"16047:2:0","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16037:13:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":922,"name":"batchSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":893,"src":"16054:9:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16037:26:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":924,"nodeType":"ExpressionStatement","src":"16037:26:0"}]}}]}}]},"documentation":{"id":885,"nodeType":"StructuredDocumentation","src":"14988:705:0","text":" @dev Hook that is called before any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s tokens will be transferred to `to`.\n - When `from` is zero, the tokens will be minted for `to`.\n - When `to` is zero, ``from``'s tokens will be burned.\n - `from` and `to` are never both zero.\n - `batchSize` is non-zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":930,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"15707:20:0","nodeType":"FunctionDefinition","parameters":{"id":894,"nodeType":"ParameterList","parameters":[{"constant":false,"id":887,"mutability":"mutable","name":"from","nameLocation":"15745:4:0","nodeType":"VariableDeclaration","scope":930,"src":"15737:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":886,"name":"address","nodeType":"ElementaryTypeName","src":"15737:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":889,"mutability":"mutable","name":"to","nameLocation":"15767:2:0","nodeType":"VariableDeclaration","scope":930,"src":"15759:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":888,"name":"address","nodeType":"ElementaryTypeName","src":"15759:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":891,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":930,"src":"15779:7:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":890,"name":"uint256","nodeType":"ElementaryTypeName","src":"15779:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":893,"mutability":"mutable","name":"batchSize","nameLocation":"15823:9:0","nodeType":"VariableDeclaration","scope":930,"src":"15815:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":892,"name":"uint256","nodeType":"ElementaryTypeName","src":"15815:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15727:111:0"},"returnParameters":{"id":895,"nodeType":"ParameterList","parameters":[],"src":"15856:0:0"},"scope":944,"src":"15698:396:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":942,"nodeType":"Block","src":"16951:2:0","statements":[]},"documentation":{"id":931,"nodeType":"StructuredDocumentation","src":"16100:695:0","text":" @dev Hook that is called after any token transfer. This includes minting and burning. If {ERC721Consecutive} is\n used, the hook may be called as part of a consecutive (batch) mint, as indicated by `batchSize` greater than 1.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s tokens were transferred to `to`.\n - When `from` is zero, the tokens were minted for `to`.\n - When `to` is zero, ``from``'s tokens were burned.\n - `from` and `to` are never both zero.\n - `batchSize` is non-zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."},"id":943,"implemented":true,"kind":"function","modifiers":[],"name":"_afterTokenTransfer","nameLocation":"16809:19:0","nodeType":"FunctionDefinition","parameters":{"id":940,"nodeType":"ParameterList","parameters":[{"constant":false,"id":933,"mutability":"mutable","name":"from","nameLocation":"16846:4:0","nodeType":"VariableDeclaration","scope":943,"src":"16838:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":932,"name":"address","nodeType":"ElementaryTypeName","src":"16838:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":935,"mutability":"mutable","name":"to","nameLocation":"16868:2:0","nodeType":"VariableDeclaration","scope":943,"src":"16860:10:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":934,"name":"address","nodeType":"ElementaryTypeName","src":"16860:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":937,"mutability":"mutable","name":"firstTokenId","nameLocation":"16888:12:0","nodeType":"VariableDeclaration","scope":943,"src":"16880:20:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":936,"name":"uint256","nodeType":"ElementaryTypeName","src":"16880:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":939,"mutability":"mutable","name":"batchSize","nameLocation":"16918:9:0","nodeType":"VariableDeclaration","scope":943,"src":"16910:17:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":938,"name":"uint256","nodeType":"ElementaryTypeName","src":"16910:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16828:105:0"},"returnParameters":{"id":941,"nodeType":"ParameterList","parameters":[],"src":"16951:0:0"},"scope":944,"src":"16800:153:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":945,"src":"628:16327:0","usedErrors":[]}],"src":"107:16849:0"},"id":0},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","exportedSymbols":{"IERC165":[2053],"IERC721":[1060]},"id":1061,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":946,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"108:23:1"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"../../utils/introspection/IERC165.sol","id":947,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1061,"sourceUnit":2054,"src":"133:47:1","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":949,"name":"IERC165","nameLocations":["271:7:1"],"nodeType":"IdentifierPath","referencedDeclaration":2053,"src":"271:7:1"},"id":950,"nodeType":"InheritanceSpecifier","src":"271:7:1"}],"canonicalName":"IERC721","contractDependencies":[],"contractKind":"interface","documentation":{"id":948,"nodeType":"StructuredDocumentation","src":"182:67:1","text":" @dev Required interface of an ERC721 compliant contract."},"fullyImplemented":false,"id":1060,"linearizedBaseContracts":[1060,2053],"name":"IERC721","nameLocation":"260:7:1","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":951,"nodeType":"StructuredDocumentation","src":"285:88:1","text":" @dev Emitted when `tokenId` token is transferred from `from` to `to`."},"eventSelector":"ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","id":959,"name":"Transfer","nameLocation":"384:8:1","nodeType":"EventDefinition","parameters":{"id":958,"nodeType":"ParameterList","parameters":[{"constant":false,"id":953,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"409:4:1","nodeType":"VariableDeclaration","scope":959,"src":"393:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":952,"name":"address","nodeType":"ElementaryTypeName","src":"393:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":955,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"431:2:1","nodeType":"VariableDeclaration","scope":959,"src":"415:18:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":954,"name":"address","nodeType":"ElementaryTypeName","src":"415:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":957,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"451:7:1","nodeType":"VariableDeclaration","scope":959,"src":"435:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":956,"name":"uint256","nodeType":"ElementaryTypeName","src":"435:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"392:67:1"},"src":"378:82:1"},{"anonymous":false,"documentation":{"id":960,"nodeType":"StructuredDocumentation","src":"466:94:1","text":" @dev Emitted when `owner` enables `approved` to manage the `tokenId` token."},"eventSelector":"8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925","id":968,"name":"Approval","nameLocation":"571:8:1","nodeType":"EventDefinition","parameters":{"id":967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":962,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"596:5:1","nodeType":"VariableDeclaration","scope":968,"src":"580:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":961,"name":"address","nodeType":"ElementaryTypeName","src":"580:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":964,"indexed":true,"mutability":"mutable","name":"approved","nameLocation":"619:8:1","nodeType":"VariableDeclaration","scope":968,"src":"603:24:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":963,"name":"address","nodeType":"ElementaryTypeName","src":"603:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":966,"indexed":true,"mutability":"mutable","name":"tokenId","nameLocation":"645:7:1","nodeType":"VariableDeclaration","scope":968,"src":"629:23:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":965,"name":"uint256","nodeType":"ElementaryTypeName","src":"629:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"579:74:1"},"src":"565:89:1"},{"anonymous":false,"documentation":{"id":969,"nodeType":"StructuredDocumentation","src":"660:117:1","text":" @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets."},"eventSelector":"17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31","id":977,"name":"ApprovalForAll","nameLocation":"788:14:1","nodeType":"EventDefinition","parameters":{"id":976,"nodeType":"ParameterList","parameters":[{"constant":false,"id":971,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"819:5:1","nodeType":"VariableDeclaration","scope":977,"src":"803:21:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":970,"name":"address","nodeType":"ElementaryTypeName","src":"803:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":973,"indexed":true,"mutability":"mutable","name":"operator","nameLocation":"842:8:1","nodeType":"VariableDeclaration","scope":977,"src":"826:24:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":972,"name":"address","nodeType":"ElementaryTypeName","src":"826:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":975,"indexed":false,"mutability":"mutable","name":"approved","nameLocation":"857:8:1","nodeType":"VariableDeclaration","scope":977,"src":"852:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":974,"name":"bool","nodeType":"ElementaryTypeName","src":"852:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"802:64:1"},"src":"782:85:1"},{"documentation":{"id":978,"nodeType":"StructuredDocumentation","src":"873:76:1","text":" @dev Returns the number of tokens in ``owner``'s account."},"functionSelector":"70a08231","id":985,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"963:9:1","nodeType":"FunctionDefinition","parameters":{"id":981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":980,"mutability":"mutable","name":"owner","nameLocation":"981:5:1","nodeType":"VariableDeclaration","scope":985,"src":"973:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":979,"name":"address","nodeType":"ElementaryTypeName","src":"973:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"972:15:1"},"returnParameters":{"id":984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":983,"mutability":"mutable","name":"balance","nameLocation":"1019:7:1","nodeType":"VariableDeclaration","scope":985,"src":"1011:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":982,"name":"uint256","nodeType":"ElementaryTypeName","src":"1011:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1010:17:1"},"scope":1060,"src":"954:74:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":986,"nodeType":"StructuredDocumentation","src":"1034:131:1","text":" @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"6352211e","id":993,"implemented":false,"kind":"function","modifiers":[],"name":"ownerOf","nameLocation":"1179:7:1","nodeType":"FunctionDefinition","parameters":{"id":989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":988,"mutability":"mutable","name":"tokenId","nameLocation":"1195:7:1","nodeType":"VariableDeclaration","scope":993,"src":"1187:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":987,"name":"uint256","nodeType":"ElementaryTypeName","src":"1187:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1186:17:1"},"returnParameters":{"id":992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":991,"mutability":"mutable","name":"owner","nameLocation":"1235:5:1","nodeType":"VariableDeclaration","scope":993,"src":"1227:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":990,"name":"address","nodeType":"ElementaryTypeName","src":"1227:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1226:15:1"},"scope":1060,"src":"1170:72:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":994,"nodeType":"StructuredDocumentation","src":"1248:556:1","text":" @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"b88d4fde","id":1005,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"1818:16:1","nodeType":"FunctionDefinition","parameters":{"id":1003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":996,"mutability":"mutable","name":"from","nameLocation":"1852:4:1","nodeType":"VariableDeclaration","scope":1005,"src":"1844:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":995,"name":"address","nodeType":"ElementaryTypeName","src":"1844:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":998,"mutability":"mutable","name":"to","nameLocation":"1874:2:1","nodeType":"VariableDeclaration","scope":1005,"src":"1866:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":997,"name":"address","nodeType":"ElementaryTypeName","src":"1866:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1000,"mutability":"mutable","name":"tokenId","nameLocation":"1894:7:1","nodeType":"VariableDeclaration","scope":1005,"src":"1886:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":999,"name":"uint256","nodeType":"ElementaryTypeName","src":"1886:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1002,"mutability":"mutable","name":"data","nameLocation":"1926:4:1","nodeType":"VariableDeclaration","scope":1005,"src":"1911:19:1","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1001,"name":"bytes","nodeType":"ElementaryTypeName","src":"1911:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"1834:102:1"},"returnParameters":{"id":1004,"nodeType":"ParameterList","parameters":[],"src":"1945:0:1"},"scope":1060,"src":"1809:137:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1006,"nodeType":"StructuredDocumentation","src":"1952:687:1","text":" @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."},"functionSelector":"42842e0e","id":1015,"implemented":false,"kind":"function","modifiers":[],"name":"safeTransferFrom","nameLocation":"2653:16:1","nodeType":"FunctionDefinition","parameters":{"id":1013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1008,"mutability":"mutable","name":"from","nameLocation":"2687:4:1","nodeType":"VariableDeclaration","scope":1015,"src":"2679:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1007,"name":"address","nodeType":"ElementaryTypeName","src":"2679:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1010,"mutability":"mutable","name":"to","nameLocation":"2709:2:1","nodeType":"VariableDeclaration","scope":1015,"src":"2701:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1009,"name":"address","nodeType":"ElementaryTypeName","src":"2701:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1012,"mutability":"mutable","name":"tokenId","nameLocation":"2729:7:1","nodeType":"VariableDeclaration","scope":1015,"src":"2721:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1011,"name":"uint256","nodeType":"ElementaryTypeName","src":"2721:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2669:73:1"},"returnParameters":{"id":1014,"nodeType":"ParameterList","parameters":[],"src":"2751:0:1"},"scope":1060,"src":"2644:108:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1016,"nodeType":"StructuredDocumentation","src":"2758:732:1","text":" @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event."},"functionSelector":"23b872dd","id":1025,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"3504:12:1","nodeType":"FunctionDefinition","parameters":{"id":1023,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1018,"mutability":"mutable","name":"from","nameLocation":"3534:4:1","nodeType":"VariableDeclaration","scope":1025,"src":"3526:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1017,"name":"address","nodeType":"ElementaryTypeName","src":"3526:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1020,"mutability":"mutable","name":"to","nameLocation":"3556:2:1","nodeType":"VariableDeclaration","scope":1025,"src":"3548:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1019,"name":"address","nodeType":"ElementaryTypeName","src":"3548:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1022,"mutability":"mutable","name":"tokenId","nameLocation":"3576:7:1","nodeType":"VariableDeclaration","scope":1025,"src":"3568:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1021,"name":"uint256","nodeType":"ElementaryTypeName","src":"3568:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3516:73:1"},"returnParameters":{"id":1024,"nodeType":"ParameterList","parameters":[],"src":"3598:0:1"},"scope":1060,"src":"3495:104:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1026,"nodeType":"StructuredDocumentation","src":"3605:452:1","text":" @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event."},"functionSelector":"095ea7b3","id":1033,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"4071:7:1","nodeType":"FunctionDefinition","parameters":{"id":1031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1028,"mutability":"mutable","name":"to","nameLocation":"4087:2:1","nodeType":"VariableDeclaration","scope":1033,"src":"4079:10:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1027,"name":"address","nodeType":"ElementaryTypeName","src":"4079:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1030,"mutability":"mutable","name":"tokenId","nameLocation":"4099:7:1","nodeType":"VariableDeclaration","scope":1033,"src":"4091:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1029,"name":"uint256","nodeType":"ElementaryTypeName","src":"4091:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4078:29:1"},"returnParameters":{"id":1032,"nodeType":"ParameterList","parameters":[],"src":"4116:0:1"},"scope":1060,"src":"4062:55:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1034,"nodeType":"StructuredDocumentation","src":"4123:309:1","text":" @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the caller.\n Emits an {ApprovalForAll} event."},"functionSelector":"a22cb465","id":1041,"implemented":false,"kind":"function","modifiers":[],"name":"setApprovalForAll","nameLocation":"4446:17:1","nodeType":"FunctionDefinition","parameters":{"id":1039,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1036,"mutability":"mutable","name":"operator","nameLocation":"4472:8:1","nodeType":"VariableDeclaration","scope":1041,"src":"4464:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1035,"name":"address","nodeType":"ElementaryTypeName","src":"4464:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1038,"mutability":"mutable","name":"_approved","nameLocation":"4487:9:1","nodeType":"VariableDeclaration","scope":1041,"src":"4482:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1037,"name":"bool","nodeType":"ElementaryTypeName","src":"4482:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4463:34:1"},"returnParameters":{"id":1040,"nodeType":"ParameterList","parameters":[],"src":"4506:0:1"},"scope":1060,"src":"4437:70:1","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":1042,"nodeType":"StructuredDocumentation","src":"4513:139:1","text":" @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist."},"functionSelector":"081812fc","id":1049,"implemented":false,"kind":"function","modifiers":[],"name":"getApproved","nameLocation":"4666:11:1","nodeType":"FunctionDefinition","parameters":{"id":1045,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1044,"mutability":"mutable","name":"tokenId","nameLocation":"4686:7:1","nodeType":"VariableDeclaration","scope":1049,"src":"4678:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1043,"name":"uint256","nodeType":"ElementaryTypeName","src":"4678:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4677:17:1"},"returnParameters":{"id":1048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1047,"mutability":"mutable","name":"operator","nameLocation":"4726:8:1","nodeType":"VariableDeclaration","scope":1049,"src":"4718:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1046,"name":"address","nodeType":"ElementaryTypeName","src":"4718:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4717:18:1"},"scope":1060,"src":"4657:79:1","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1050,"nodeType":"StructuredDocumentation","src":"4742:138:1","text":" @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}"},"functionSelector":"e985e9c5","id":1059,"implemented":false,"kind":"function","modifiers":[],"name":"isApprovedForAll","nameLocation":"4894:16:1","nodeType":"FunctionDefinition","parameters":{"id":1055,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1052,"mutability":"mutable","name":"owner","nameLocation":"4919:5:1","nodeType":"VariableDeclaration","scope":1059,"src":"4911:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1051,"name":"address","nodeType":"ElementaryTypeName","src":"4911:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1054,"mutability":"mutable","name":"operator","nameLocation":"4934:8:1","nodeType":"VariableDeclaration","scope":1059,"src":"4926:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1053,"name":"address","nodeType":"ElementaryTypeName","src":"4926:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4910:33:1"},"returnParameters":{"id":1058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1057,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1059,"src":"4967:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1056,"name":"bool","nodeType":"ElementaryTypeName","src":"4967:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4966:6:1"},"scope":1060,"src":"4885:88:1","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1061,"src":"250:4725:1","usedErrors":[]}],"src":"108:4868:1"},"id":1},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol","exportedSymbols":{"IERC721Receiver":[1078]},"id":1079,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1062,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"116:23:2"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Receiver","contractDependencies":[],"contractKind":"interface","documentation":{"id":1063,"nodeType":"StructuredDocumentation","src":"141:152:2","text":" @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts."},"fullyImplemented":false,"id":1078,"linearizedBaseContracts":[1078],"name":"IERC721Receiver","nameLocation":"304:15:2","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1064,"nodeType":"StructuredDocumentation","src":"326:493:2","text":" @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`."},"functionSelector":"150b7a02","id":1077,"implemented":false,"kind":"function","modifiers":[],"name":"onERC721Received","nameLocation":"833:16:2","nodeType":"FunctionDefinition","parameters":{"id":1073,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1066,"mutability":"mutable","name":"operator","nameLocation":"867:8:2","nodeType":"VariableDeclaration","scope":1077,"src":"859:16:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1065,"name":"address","nodeType":"ElementaryTypeName","src":"859:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1068,"mutability":"mutable","name":"from","nameLocation":"893:4:2","nodeType":"VariableDeclaration","scope":1077,"src":"885:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1067,"name":"address","nodeType":"ElementaryTypeName","src":"885:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1070,"mutability":"mutable","name":"tokenId","nameLocation":"915:7:2","nodeType":"VariableDeclaration","scope":1077,"src":"907:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1069,"name":"uint256","nodeType":"ElementaryTypeName","src":"907:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1072,"mutability":"mutable","name":"data","nameLocation":"947:4:2","nodeType":"VariableDeclaration","scope":1077,"src":"932:19:2","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1071,"name":"bytes","nodeType":"ElementaryTypeName","src":"932:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"849:108:2"},"returnParameters":{"id":1076,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1075,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1077,"src":"976:6:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1074,"name":"bytes4","nodeType":"ElementaryTypeName","src":"976:6:2","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"975:8:2"},"scope":1078,"src":"824:160:2","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":1079,"src":"294:692:2","usedErrors":[]}],"src":"116:871:2"},"id":2},"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol","exportedSymbols":{"Address":[1820],"Context":[1842],"ERC165":[2041],"ERC721":[944],"ERC721Enumerable":[1432],"IERC165":[2053],"IERC721":[1060],"IERC721Enumerable":[1463],"IERC721Metadata":[1490],"IERC721Receiver":[1078],"Math":[2918],"Strings":[2017]},"id":1433,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1080,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"128:23:3"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/ERC721.sol","file":"../ERC721.sol","id":1081,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1433,"sourceUnit":945,"src":"153:23:3","symbolAliases":[],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol","file":"./IERC721Enumerable.sol","id":1082,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1433,"sourceUnit":1464,"src":"177:33:3","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":1084,"name":"ERC721","nameLocations":["450:6:3"],"nodeType":"IdentifierPath","referencedDeclaration":944,"src":"450:6:3"},"id":1085,"nodeType":"InheritanceSpecifier","src":"450:6:3"},{"baseName":{"id":1086,"name":"IERC721Enumerable","nameLocations":["458:17:3"],"nodeType":"IdentifierPath","referencedDeclaration":1463,"src":"458:17:3"},"id":1087,"nodeType":"InheritanceSpecifier","src":"458:17:3"}],"canonicalName":"ERC721Enumerable","contractDependencies":[],"contractKind":"contract","documentation":{"id":1083,"nodeType":"StructuredDocumentation","src":"212:199:3","text":" @dev This implements an optional extension of {ERC721} defined in the EIP that adds\n enumerability of all the token ids in the contract as well as all token ids owned by each\n account."},"fullyImplemented":true,"id":1432,"linearizedBaseContracts":[1432,1463,944,1490,1060,2041,2053,1842],"name":"ERC721Enumerable","nameLocation":"430:16:3","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":1093,"mutability":"mutable","name":"_ownedTokens","nameLocation":"591:12:3","nodeType":"VariableDeclaration","scope":1432,"src":"535:68:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"typeName":{"id":1092,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":1088,"name":"address","nodeType":"ElementaryTypeName","src":"543:7:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"535:47:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1091,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":1089,"name":"uint256","nodeType":"ElementaryTypeName","src":"562:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"554:27:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1090,"name":"uint256","nodeType":"ElementaryTypeName","src":"573:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":1097,"mutability":"mutable","name":"_ownedTokensIndex","nameLocation":"709:17:3","nodeType":"VariableDeclaration","scope":1432,"src":"673:53:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":1096,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":1094,"name":"uint256","nodeType":"ElementaryTypeName","src":"681:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"673:27:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1095,"name":"uint256","nodeType":"ElementaryTypeName","src":"692:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":1100,"mutability":"mutable","name":"_allTokens","nameLocation":"805:10:3","nodeType":"VariableDeclaration","scope":1432,"src":"787:28:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[]"},"typeName":{"baseType":{"id":1098,"name":"uint256","nodeType":"ElementaryTypeName","src":"787:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1099,"nodeType":"ArrayTypeName","src":"787:9:3","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"private"},{"constant":false,"id":1104,"mutability":"mutable","name":"_allTokensIndex","nameLocation":"922:15:3","nodeType":"VariableDeclaration","scope":1432,"src":"886:51:3","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":1103,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":1101,"name":"uint256","nodeType":"ElementaryTypeName","src":"894:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"886:27:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1102,"name":"uint256","nodeType":"ElementaryTypeName","src":"905:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"baseFunctions":[93,2052],"body":{"id":1127,"nodeType":"Block","src":"1113:114:3","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1125,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":1120,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1115,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1107,"src":"1130:11:3","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1117,"name":"IERC721Enumerable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1463,"src":"1150:17:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC721Enumerable_$1463_$","typeString":"type(contract IERC721Enumerable)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC721Enumerable_$1463_$","typeString":"type(contract IERC721Enumerable)"}],"id":1116,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1145:4:3","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":1118,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1145:23:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC721Enumerable_$1463","typeString":"type(contract IERC721Enumerable)"}},"id":1119,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1169:11:3","memberName":"interfaceId","nodeType":"MemberAccess","src":"1145:35:3","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"1130:50:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":1123,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1107,"src":"1208:11:3","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1121,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"1184:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721Enumerable_$1432_$","typeString":"type(contract super ERC721Enumerable)"}},"id":1122,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1190:17:3","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":93,"src":"1184:23:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes4_$returns$_t_bool_$","typeString":"function (bytes4) view returns (bool)"}},"id":1124,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1184:36:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1130:90:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1114,"id":1126,"nodeType":"Return","src":"1123:97:3"}]},"documentation":{"id":1105,"nodeType":"StructuredDocumentation","src":"944:56:3","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":1128,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1014:17:3","nodeType":"FunctionDefinition","overrides":{"id":1111,"nodeType":"OverrideSpecifier","overrides":[{"id":1109,"name":"IERC165","nameLocations":["1081:7:3"],"nodeType":"IdentifierPath","referencedDeclaration":2053,"src":"1081:7:3"},{"id":1110,"name":"ERC721","nameLocations":["1090:6:3"],"nodeType":"IdentifierPath","referencedDeclaration":944,"src":"1090:6:3"}],"src":"1072:25:3"},"parameters":{"id":1108,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1107,"mutability":"mutable","name":"interfaceId","nameLocation":"1039:11:3","nodeType":"VariableDeclaration","scope":1128,"src":"1032:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1106,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1032:6:3","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1031:20:3"},"returnParameters":{"id":1114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1113,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1128,"src":"1107:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1112,"name":"bool","nodeType":"ElementaryTypeName","src":"1107:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1106:6:3"},"scope":1432,"src":"1005:222:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1454],"body":{"id":1155,"nodeType":"Block","src":"1412:147:3","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1140,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1133,"src":"1430:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[{"id":1143,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1131,"src":"1455:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1141,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":944,"src":"1438:6:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$944_$","typeString":"type(contract ERC721)"}},"id":1142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1445:9:3","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":117,"src":"1438:16:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1438:23:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1430:31:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e6473","id":1146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1463:45:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c","typeString":"literal_string \"ERC721Enumerable: owner index out of bounds\""},"value":"ERC721Enumerable: owner index out of bounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1d7f5dcf03a65f41ee49b0ab593e3851cfbe3fd7da53b6cf4eddd83c7df5734c","typeString":"literal_string \"ERC721Enumerable: owner index out of bounds\""}],"id":1139,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1422:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1147,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1422:87:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1148,"nodeType":"ExpressionStatement","src":"1422:87:3"},{"expression":{"baseExpression":{"baseExpression":{"id":1149,"name":"_ownedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1093,"src":"1526:12:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":1151,"indexExpression":{"id":1150,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1131,"src":"1539:5:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1526:19:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":1153,"indexExpression":{"id":1152,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1133,"src":"1546:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1526:26:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1138,"id":1154,"nodeType":"Return","src":"1519:33:3"}]},"documentation":{"id":1129,"nodeType":"StructuredDocumentation","src":"1233:68:3","text":" @dev See {IERC721Enumerable-tokenOfOwnerByIndex}."},"functionSelector":"2f745c59","id":1156,"implemented":true,"kind":"function","modifiers":[],"name":"tokenOfOwnerByIndex","nameLocation":"1315:19:3","nodeType":"FunctionDefinition","overrides":{"id":1135,"nodeType":"OverrideSpecifier","overrides":[],"src":"1385:8:3"},"parameters":{"id":1134,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1131,"mutability":"mutable","name":"owner","nameLocation":"1343:5:3","nodeType":"VariableDeclaration","scope":1156,"src":"1335:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1130,"name":"address","nodeType":"ElementaryTypeName","src":"1335:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1133,"mutability":"mutable","name":"index","nameLocation":"1358:5:3","nodeType":"VariableDeclaration","scope":1156,"src":"1350:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1132,"name":"uint256","nodeType":"ElementaryTypeName","src":"1350:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1334:30:3"},"returnParameters":{"id":1138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1137,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1156,"src":"1403:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1136,"name":"uint256","nodeType":"ElementaryTypeName","src":"1403:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1402:9:3"},"scope":1432,"src":"1306:253:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1444],"body":{"id":1166,"nodeType":"Block","src":"1700:41:3","statements":[{"expression":{"expression":{"id":1163,"name":"_allTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"1717:10:3","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":1164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1728:6:3","memberName":"length","nodeType":"MemberAccess","src":"1717:17:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1162,"id":1165,"nodeType":"Return","src":"1710:24:3"}]},"documentation":{"id":1157,"nodeType":"StructuredDocumentation","src":"1565:60:3","text":" @dev See {IERC721Enumerable-totalSupply}."},"functionSelector":"18160ddd","id":1167,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"1639:11:3","nodeType":"FunctionDefinition","overrides":{"id":1159,"nodeType":"OverrideSpecifier","overrides":[],"src":"1673:8:3"},"parameters":{"id":1158,"nodeType":"ParameterList","parameters":[],"src":"1650:2:3"},"returnParameters":{"id":1162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1161,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1167,"src":"1691:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1160,"name":"uint256","nodeType":"ElementaryTypeName","src":"1691:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1690:9:3"},"scope":1432,"src":"1630:111:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[1462],"body":{"id":1189,"nodeType":"Block","src":"1897:146:3","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1177,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1170,"src":"1915:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1178,"name":"ERC721Enumerable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1432,"src":"1923:16:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721Enumerable_$1432_$","typeString":"type(contract ERC721Enumerable)"}},"id":1179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1940:11:3","memberName":"totalSupply","nodeType":"MemberAccess","referencedDeclaration":1167,"src":"1923:28:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":1180,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1923:30:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1915:38:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473","id":1182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1955:46:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc","typeString":"literal_string \"ERC721Enumerable: global index out of bounds\""},"value":"ERC721Enumerable: global index out of bounds"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d269a4e9f5820dcdb69ea21f528512eb9b927c8d846d48aa51c9219f461d4dcc","typeString":"literal_string \"ERC721Enumerable: global index out of bounds\""}],"id":1176,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1907:7:3","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1907:95:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1184,"nodeType":"ExpressionStatement","src":"1907:95:3"},{"expression":{"baseExpression":{"id":1185,"name":"_allTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"2019:10:3","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":1187,"indexExpression":{"id":1186,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1170,"src":"2030:5:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2019:17:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1175,"id":1188,"nodeType":"Return","src":"2012:24:3"}]},"documentation":{"id":1168,"nodeType":"StructuredDocumentation","src":"1747:61:3","text":" @dev See {IERC721Enumerable-tokenByIndex}."},"functionSelector":"4f6ccce7","id":1190,"implemented":true,"kind":"function","modifiers":[],"name":"tokenByIndex","nameLocation":"1822:12:3","nodeType":"FunctionDefinition","overrides":{"id":1172,"nodeType":"OverrideSpecifier","overrides":[],"src":"1870:8:3"},"parameters":{"id":1171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1170,"mutability":"mutable","name":"index","nameLocation":"1843:5:3","nodeType":"VariableDeclaration","scope":1190,"src":"1835:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1169,"name":"uint256","nodeType":"ElementaryTypeName","src":"1835:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1834:15:3"},"returnParameters":{"id":1175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1174,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1190,"src":"1888:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1173,"name":"uint256","nodeType":"ElementaryTypeName","src":"1888:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1887:9:3"},"scope":1432,"src":"1813:230:3","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[930],"body":{"id":1269,"nodeType":"Block","src":"2273:729:3","statements":[{"expression":{"arguments":[{"id":1206,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"2310:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1207,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"2316:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1208,"name":"firstTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1197,"src":"2320:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1209,"name":"batchSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1199,"src":"2334:9:3","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"}],"expression":{"id":1203,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"2283:5:3","typeDescriptions":{"typeIdentifier":"t_type$_t_super$_ERC721Enumerable_$1432_$","typeString":"type(contract super ERC721Enumerable)"}},"id":1205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2289:20:3","memberName":"_beforeTokenTransfer","nodeType":"MemberAccess","referencedDeclaration":930,"src":"2283:26:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256,uint256)"}},"id":1210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2283:61:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1211,"nodeType":"ExpressionStatement","src":"2283:61:3"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1212,"name":"batchSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1199,"src":"2359:9:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2371:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2359:13:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1220,"nodeType":"IfStatement","src":"2355:219:3","trueBody":{"id":1219,"nodeType":"Block","src":"2374:200:3","statements":[{"expression":{"arguments":[{"hexValue":"455243373231456e756d657261626c653a20636f6e7365637574697665207472616e7366657273206e6f7420737570706f72746564","id":1216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2507:55:3","typeDescriptions":{"typeIdentifier":"t_stringliteral_da49291af84b6a1e37ed9eacd9a67360593e4a0e561cb261a6a738f621783314","typeString":"literal_string \"ERC721Enumerable: consecutive transfers not supported\""},"value":"ERC721Enumerable: consecutive transfers not supported"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_da49291af84b6a1e37ed9eacd9a67360593e4a0e561cb261a6a738f621783314","typeString":"literal_string \"ERC721Enumerable: consecutive transfers not supported\""}],"id":1215,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"2500:6:3","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2500:63:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1218,"nodeType":"ExpressionStatement","src":"2500:63:3"}]}},{"assignments":[1222],"declarations":[{"constant":false,"id":1222,"mutability":"mutable","name":"tokenId","nameLocation":"2592:7:3","nodeType":"VariableDeclaration","scope":1269,"src":"2584:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1221,"name":"uint256","nodeType":"ElementaryTypeName","src":"2584:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1224,"initialValue":{"id":1223,"name":"firstTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1197,"src":"2602:12:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2584:30:3"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1225,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"2629:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2645:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2637:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1226,"name":"address","nodeType":"ElementaryTypeName","src":"2637:7:3","typeDescriptions":{}}},"id":1229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2637:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2629:18:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1236,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"2724:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1237,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"2732:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2724:10:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1245,"nodeType":"IfStatement","src":"2720:88:3","trueBody":{"id":1244,"nodeType":"Block","src":"2736:72:3","statements":[{"expression":{"arguments":[{"id":1240,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"2783:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1241,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1222,"src":"2789:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1239,"name":"_removeTokenFromOwnerEnumeration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1383,"src":"2750:32:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":1242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2750:47:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1243,"nodeType":"ExpressionStatement","src":"2750:47:3"}]}},"id":1246,"nodeType":"IfStatement","src":"2625:183:3","trueBody":{"id":1235,"nodeType":"Block","src":"2649:65:3","statements":[{"expression":{"arguments":[{"id":1232,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1222,"src":"2695:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1231,"name":"_addTokenToAllTokensEnumeration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1320,"src":"2663:31:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":1233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2663:40:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1234,"nodeType":"ExpressionStatement","src":"2663:40:3"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1247,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"2821:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2835:1:3","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":1249,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2827:7:3","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1248,"name":"address","nodeType":"ElementaryTypeName","src":"2827:7:3","typeDescriptions":{}}},"id":1251,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2827:10:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2821:16:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1258,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"2919:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1259,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1193,"src":"2925:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2919:10:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1267,"nodeType":"IfStatement","src":"2915:81:3","trueBody":{"id":1266,"nodeType":"Block","src":"2931:65:3","statements":[{"expression":{"arguments":[{"id":1262,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1195,"src":"2973:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1263,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1222,"src":"2977:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1261,"name":"_addTokenToOwnerEnumeration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1300,"src":"2945:27:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2945:40:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1265,"nodeType":"ExpressionStatement","src":"2945:40:3"}]}},"id":1268,"nodeType":"IfStatement","src":"2817:179:3","trueBody":{"id":1257,"nodeType":"Block","src":"2839:70:3","statements":[{"expression":{"arguments":[{"id":1254,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1222,"src":"2890:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1253,"name":"_removeTokenFromAllTokensEnumeration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1431,"src":"2853:36:3","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2853:45:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1256,"nodeType":"ExpressionStatement","src":"2853:45:3"}]}}]},"documentation":{"id":1191,"nodeType":"StructuredDocumentation","src":"2049:58:3","text":" @dev See {ERC721-_beforeTokenTransfer}."},"id":1270,"implemented":true,"kind":"function","modifiers":[],"name":"_beforeTokenTransfer","nameLocation":"2121:20:3","nodeType":"FunctionDefinition","overrides":{"id":1201,"nodeType":"OverrideSpecifier","overrides":[],"src":"2264:8:3"},"parameters":{"id":1200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1193,"mutability":"mutable","name":"from","nameLocation":"2159:4:3","nodeType":"VariableDeclaration","scope":1270,"src":"2151:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1192,"name":"address","nodeType":"ElementaryTypeName","src":"2151:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1195,"mutability":"mutable","name":"to","nameLocation":"2181:2:3","nodeType":"VariableDeclaration","scope":1270,"src":"2173:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1194,"name":"address","nodeType":"ElementaryTypeName","src":"2173:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1197,"mutability":"mutable","name":"firstTokenId","nameLocation":"2201:12:3","nodeType":"VariableDeclaration","scope":1270,"src":"2193:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1196,"name":"uint256","nodeType":"ElementaryTypeName","src":"2193:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1199,"mutability":"mutable","name":"batchSize","nameLocation":"2231:9:3","nodeType":"VariableDeclaration","scope":1270,"src":"2223:17:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1198,"name":"uint256","nodeType":"ElementaryTypeName","src":"2223:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2141:105:3"},"returnParameters":{"id":1202,"nodeType":"ParameterList","parameters":[],"src":"2273:0:3"},"scope":1432,"src":"2112:890:3","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1299,"nodeType":"Block","src":"3370:143:3","statements":[{"assignments":[1279],"declarations":[{"constant":false,"id":1279,"mutability":"mutable","name":"length","nameLocation":"3388:6:3","nodeType":"VariableDeclaration","scope":1299,"src":"3380:14:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1278,"name":"uint256","nodeType":"ElementaryTypeName","src":"3380:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1284,"initialValue":{"arguments":[{"id":1282,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1273,"src":"3414:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1280,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":944,"src":"3397:6:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$944_$","typeString":"type(contract ERC721)"}},"id":1281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3404:9:3","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":117,"src":"3397:16:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3397:20:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3380:37:3"},{"expression":{"id":1291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":1285,"name":"_ownedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1093,"src":"3427:12:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":1288,"indexExpression":{"id":1286,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1273,"src":"3440:2:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3427:16:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":1289,"indexExpression":{"id":1287,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1279,"src":"3444:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3427:24:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1290,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1275,"src":"3454:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3427:34:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1292,"nodeType":"ExpressionStatement","src":"3427:34:3"},{"expression":{"id":1297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1293,"name":"_ownedTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"3471:17:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":1295,"indexExpression":{"id":1294,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1275,"src":"3489:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3471:26:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1296,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1279,"src":"3500:6:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3471:35:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1298,"nodeType":"ExpressionStatement","src":"3471:35:3"}]},"documentation":{"id":1271,"nodeType":"StructuredDocumentation","src":"3008:283:3","text":" @dev Private function to add a token to this extension's ownership-tracking data structures.\n @param to address representing the new owner of the given token ID\n @param tokenId uint256 ID of the token to be added to the tokens list of the given address"},"id":1300,"implemented":true,"kind":"function","modifiers":[],"name":"_addTokenToOwnerEnumeration","nameLocation":"3305:27:3","nodeType":"FunctionDefinition","parameters":{"id":1276,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1273,"mutability":"mutable","name":"to","nameLocation":"3341:2:3","nodeType":"VariableDeclaration","scope":1300,"src":"3333:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1272,"name":"address","nodeType":"ElementaryTypeName","src":"3333:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1275,"mutability":"mutable","name":"tokenId","nameLocation":"3353:7:3","nodeType":"VariableDeclaration","scope":1300,"src":"3345:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1274,"name":"uint256","nodeType":"ElementaryTypeName","src":"3345:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3332:29:3"},"returnParameters":{"id":1277,"nodeType":"ParameterList","parameters":[],"src":"3370:0:3"},"scope":1432,"src":"3296:217:3","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1319,"nodeType":"Block","src":"3774:95:3","statements":[{"expression":{"id":1311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1306,"name":"_allTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1104,"src":"3784:15:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":1308,"indexExpression":{"id":1307,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"3800:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3784:24:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":1309,"name":"_allTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"3811:10:3","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":1310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3822:6:3","memberName":"length","nodeType":"MemberAccess","src":"3811:17:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3784:44:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1312,"nodeType":"ExpressionStatement","src":"3784:44:3"},{"expression":{"arguments":[{"id":1316,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1303,"src":"3854:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1313,"name":"_allTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"3838:10:3","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":1315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3849:4:3","memberName":"push","nodeType":"MemberAccess","src":"3838:15:3","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$","typeString":"function (uint256[] storage pointer,uint256)"}},"id":1317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3838:24:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1318,"nodeType":"ExpressionStatement","src":"3838:24:3"}]},"documentation":{"id":1301,"nodeType":"StructuredDocumentation","src":"3519:184:3","text":" @dev Private function to add a token to this extension's token tracking data structures.\n @param tokenId uint256 ID of the token to be added to the tokens list"},"id":1320,"implemented":true,"kind":"function","modifiers":[],"name":"_addTokenToAllTokensEnumeration","nameLocation":"3717:31:3","nodeType":"FunctionDefinition","parameters":{"id":1304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1303,"mutability":"mutable","name":"tokenId","nameLocation":"3757:7:3","nodeType":"VariableDeclaration","scope":1320,"src":"3749:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1302,"name":"uint256","nodeType":"ElementaryTypeName","src":"3749:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3748:17:3"},"returnParameters":{"id":1305,"nodeType":"ParameterList","parameters":[],"src":"3774:0:3"},"scope":1432,"src":"3708:161:3","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1382,"nodeType":"Block","src":"4567:889:3","statements":[{"assignments":[1329],"declarations":[{"constant":false,"id":1329,"mutability":"mutable","name":"lastTokenIndex","nameLocation":"4756:14:3","nodeType":"VariableDeclaration","scope":1382,"src":"4748:22:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1328,"name":"uint256","nodeType":"ElementaryTypeName","src":"4748:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1336,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1335,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1332,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1323,"src":"4790:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1330,"name":"ERC721","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":944,"src":"4773:6:3","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC721_$944_$","typeString":"type(contract ERC721)"}},"id":1331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4780:9:3","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":117,"src":"4773:16:3","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":1333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4773:22:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4798:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4773:26:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4748:51:3"},{"assignments":[1338],"declarations":[{"constant":false,"id":1338,"mutability":"mutable","name":"tokenIndex","nameLocation":"4817:10:3","nodeType":"VariableDeclaration","scope":1382,"src":"4809:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1337,"name":"uint256","nodeType":"ElementaryTypeName","src":"4809:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1342,"initialValue":{"baseExpression":{"id":1339,"name":"_ownedTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"4830:17:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":1341,"indexExpression":{"id":1340,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1325,"src":"4848:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4830:26:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4809:47:3"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1343,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"4960:10:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1344,"name":"lastTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1329,"src":"4974:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4960:28:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1369,"nodeType":"IfStatement","src":"4956:323:3","trueBody":{"id":1368,"nodeType":"Block","src":"4990:289:3","statements":[{"assignments":[1347],"declarations":[{"constant":false,"id":1347,"mutability":"mutable","name":"lastTokenId","nameLocation":"5012:11:3","nodeType":"VariableDeclaration","scope":1368,"src":"5004:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1346,"name":"uint256","nodeType":"ElementaryTypeName","src":"5004:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1353,"initialValue":{"baseExpression":{"baseExpression":{"id":1348,"name":"_ownedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1093,"src":"5026:12:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":1350,"indexExpression":{"id":1349,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1323,"src":"5039:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5026:18:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":1352,"indexExpression":{"id":1351,"name":"lastTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1329,"src":"5045:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5026:34:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5004:56:3"},{"expression":{"id":1360,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":1354,"name":"_ownedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1093,"src":"5075:12:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":1357,"indexExpression":{"id":1355,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1323,"src":"5088:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5075:18:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":1358,"indexExpression":{"id":1356,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"5094:10:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5075:30:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1359,"name":"lastTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1347,"src":"5108:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5075:44:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1361,"nodeType":"ExpressionStatement","src":"5075:44:3"},{"expression":{"id":1366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1362,"name":"_ownedTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"5191:17:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":1364,"indexExpression":{"id":1363,"name":"lastTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1347,"src":"5209:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5191:30:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1365,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1338,"src":"5224:10:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5191:43:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1367,"nodeType":"ExpressionStatement","src":"5191:43:3"}]}},{"expression":{"id":1373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"5365:33:3","subExpression":{"baseExpression":{"id":1370,"name":"_ownedTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1097,"src":"5372:17:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":1372,"indexExpression":{"id":1371,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1325,"src":"5390:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5372:26:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1374,"nodeType":"ExpressionStatement","src":"5365:33:3"},{"expression":{"id":1380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"5408:41:3","subExpression":{"baseExpression":{"baseExpression":{"id":1375,"name":"_ownedTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1093,"src":"5415:12:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(address => mapping(uint256 => uint256))"}},"id":1377,"indexExpression":{"id":1376,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1323,"src":"5428:4:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5415:18:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":1379,"indexExpression":{"id":1378,"name":"lastTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1329,"src":"5434:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5415:34:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1381,"nodeType":"ExpressionStatement","src":"5408:41:3"}]},"documentation":{"id":1321,"nodeType":"StructuredDocumentation","src":"3875:606:3","text":" @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that\n while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for\n gas optimizations e.g. when performing a transfer operation (avoiding double writes).\n This has O(1) time complexity, but alters the order of the _ownedTokens array.\n @param from address representing the previous owner of the given token ID\n @param tokenId uint256 ID of the token to be removed from the tokens list of the given address"},"id":1383,"implemented":true,"kind":"function","modifiers":[],"name":"_removeTokenFromOwnerEnumeration","nameLocation":"4495:32:3","nodeType":"FunctionDefinition","parameters":{"id":1326,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1323,"mutability":"mutable","name":"from","nameLocation":"4536:4:3","nodeType":"VariableDeclaration","scope":1383,"src":"4528:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1322,"name":"address","nodeType":"ElementaryTypeName","src":"4528:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1325,"mutability":"mutable","name":"tokenId","nameLocation":"4550:7:3","nodeType":"VariableDeclaration","scope":1383,"src":"4542:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1324,"name":"uint256","nodeType":"ElementaryTypeName","src":"4542:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4527:31:3"},"returnParameters":{"id":1327,"nodeType":"ParameterList","parameters":[],"src":"4567:0:3"},"scope":1432,"src":"4486:970:3","stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"body":{"id":1430,"nodeType":"Block","src":"5815:990:3","statements":[{"assignments":[1390],"declarations":[{"constant":false,"id":1390,"mutability":"mutable","name":"lastTokenIndex","nameLocation":"6001:14:3","nodeType":"VariableDeclaration","scope":1430,"src":"5993:22:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1389,"name":"uint256","nodeType":"ElementaryTypeName","src":"5993:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1395,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1394,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1391,"name":"_allTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"6018:10:3","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":1392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6029:6:3","memberName":"length","nodeType":"MemberAccess","src":"6018:17:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6038:1:3","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6018:21:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5993:46:3"},{"assignments":[1397],"declarations":[{"constant":false,"id":1397,"mutability":"mutable","name":"tokenIndex","nameLocation":"6057:10:3","nodeType":"VariableDeclaration","scope":1430,"src":"6049:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1396,"name":"uint256","nodeType":"ElementaryTypeName","src":"6049:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1401,"initialValue":{"baseExpression":{"id":1398,"name":"_allTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1104,"src":"6070:15:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":1400,"indexExpression":{"id":1399,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"6086:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6070:24:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6049:45:3"},{"assignments":[1403],"declarations":[{"constant":false,"id":1403,"mutability":"mutable","name":"lastTokenId","nameLocation":"6424:11:3","nodeType":"VariableDeclaration","scope":1430,"src":"6416:19:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1402,"name":"uint256","nodeType":"ElementaryTypeName","src":"6416:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1407,"initialValue":{"baseExpression":{"id":1404,"name":"_allTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"6438:10:3","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":1406,"indexExpression":{"id":1405,"name":"lastTokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1390,"src":"6449:14:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6438:26:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6416:48:3"},{"expression":{"id":1412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1408,"name":"_allTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"6475:10:3","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":1410,"indexExpression":{"id":1409,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1397,"src":"6486:10:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6475:22:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1411,"name":"lastTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"6500:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6475:36:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1413,"nodeType":"ExpressionStatement","src":"6475:36:3"},{"expression":{"id":1418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1414,"name":"_allTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1104,"src":"6579:15:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":1416,"indexExpression":{"id":1415,"name":"lastTokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1403,"src":"6595:11:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6579:28:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1417,"name":"tokenIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1397,"src":"6610:10:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6579:41:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1419,"nodeType":"ExpressionStatement","src":"6579:41:3"},{"expression":{"id":1423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"6741:31:3","subExpression":{"baseExpression":{"id":1420,"name":"_allTokensIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1104,"src":"6748:15:3","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":1422,"indexExpression":{"id":1421,"name":"tokenId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"6764:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6748:24:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1424,"nodeType":"ExpressionStatement","src":"6741:31:3"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":1425,"name":"_allTokens","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"6782:10:3","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":1427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6793:3:3","memberName":"pop","nodeType":"MemberAccess","src":"6782:14:3","typeDescriptions":{"typeIdentifier":"t_function_arraypop_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$","typeString":"function (uint256[] storage pointer)"}},"id":1428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6782:16:3","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1429,"nodeType":"ExpressionStatement","src":"6782:16:3"}]},"documentation":{"id":1384,"nodeType":"StructuredDocumentation","src":"5462:277:3","text":" @dev Private function to remove a token from this extension's token tracking data structures.\n This has O(1) time complexity, but alters the order of the _allTokens array.\n @param tokenId uint256 ID of the token to be removed from the tokens list"},"id":1431,"implemented":true,"kind":"function","modifiers":[],"name":"_removeTokenFromAllTokensEnumeration","nameLocation":"5753:36:3","nodeType":"FunctionDefinition","parameters":{"id":1387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1386,"mutability":"mutable","name":"tokenId","nameLocation":"5798:7:3","nodeType":"VariableDeclaration","scope":1431,"src":"5790:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1385,"name":"uint256","nodeType":"ElementaryTypeName","src":"5790:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5789:17:3"},"returnParameters":{"id":1388,"nodeType":"ParameterList","parameters":[],"src":"5815:0:3"},"scope":1432,"src":"5744:1061:3","stateMutability":"nonpayable","virtual":false,"visibility":"private"}],"scope":1433,"src":"412:6395:3","usedErrors":[]}],"src":"128:6680:3"},"id":3},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol","exportedSymbols":{"IERC165":[2053],"IERC721":[1060],"IERC721Enumerable":[1463]},"id":1464,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1434,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"129:23:4"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"../IERC721.sol","id":1435,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1464,"sourceUnit":1061,"src":"154:24:4","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1437,"name":"IERC721","nameLocations":["348:7:4"],"nodeType":"IdentifierPath","referencedDeclaration":1060,"src":"348:7:4"},"id":1438,"nodeType":"InheritanceSpecifier","src":"348:7:4"}],"canonicalName":"IERC721Enumerable","contractDependencies":[],"contractKind":"interface","documentation":{"id":1436,"nodeType":"StructuredDocumentation","src":"180:136:4","text":" @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":1463,"linearizedBaseContracts":[1463,1060,2053],"name":"IERC721Enumerable","nameLocation":"327:17:4","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1439,"nodeType":"StructuredDocumentation","src":"362:82:4","text":" @dev Returns the total amount of tokens stored by the contract."},"functionSelector":"18160ddd","id":1444,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"458:11:4","nodeType":"FunctionDefinition","parameters":{"id":1440,"nodeType":"ParameterList","parameters":[],"src":"469:2:4"},"returnParameters":{"id":1443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1442,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1444,"src":"495:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1441,"name":"uint256","nodeType":"ElementaryTypeName","src":"495:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"494:9:4"},"scope":1463,"src":"449:55:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1445,"nodeType":"StructuredDocumentation","src":"510:171:4","text":" @dev Returns a token ID owned by `owner` at a given `index` of its token list.\n Use along with {balanceOf} to enumerate all of ``owner``'s tokens."},"functionSelector":"2f745c59","id":1454,"implemented":false,"kind":"function","modifiers":[],"name":"tokenOfOwnerByIndex","nameLocation":"695:19:4","nodeType":"FunctionDefinition","parameters":{"id":1450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1447,"mutability":"mutable","name":"owner","nameLocation":"723:5:4","nodeType":"VariableDeclaration","scope":1454,"src":"715:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1446,"name":"address","nodeType":"ElementaryTypeName","src":"715:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1449,"mutability":"mutable","name":"index","nameLocation":"738:5:4","nodeType":"VariableDeclaration","scope":1454,"src":"730:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1448,"name":"uint256","nodeType":"ElementaryTypeName","src":"730:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"714:30:4"},"returnParameters":{"id":1453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1454,"src":"768:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1451,"name":"uint256","nodeType":"ElementaryTypeName","src":"768:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"767:9:4"},"scope":1463,"src":"686:91:4","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1455,"nodeType":"StructuredDocumentation","src":"783:164:4","text":" @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\n Use along with {totalSupply} to enumerate all tokens."},"functionSelector":"4f6ccce7","id":1462,"implemented":false,"kind":"function","modifiers":[],"name":"tokenByIndex","nameLocation":"961:12:4","nodeType":"FunctionDefinition","parameters":{"id":1458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1457,"mutability":"mutable","name":"index","nameLocation":"982:5:4","nodeType":"VariableDeclaration","scope":1462,"src":"974:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1456,"name":"uint256","nodeType":"ElementaryTypeName","src":"974:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"973:15:4"},"returnParameters":{"id":1461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1460,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1462,"src":"1012:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1459,"name":"uint256","nodeType":"ElementaryTypeName","src":"1012:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1011:9:4"},"scope":1463,"src":"952:69:4","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1464,"src":"317:706:4","usedErrors":[]}],"src":"129:895:4"},"id":4},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol","exportedSymbols":{"IERC165":[2053],"IERC721":[1060],"IERC721Metadata":[1490]},"id":1491,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1465,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"112:23:5"},{"absolutePath":"@openzeppelin/contracts/token/ERC721/IERC721.sol","file":"../IERC721.sol","id":1466,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1491,"sourceUnit":1061,"src":"137:24:5","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1468,"name":"IERC721","nameLocations":["326:7:5"],"nodeType":"IdentifierPath","referencedDeclaration":1060,"src":"326:7:5"},"id":1469,"nodeType":"InheritanceSpecifier","src":"326:7:5"}],"canonicalName":"IERC721Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":1467,"nodeType":"StructuredDocumentation","src":"163:133:5","text":" @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721"},"fullyImplemented":false,"id":1490,"linearizedBaseContracts":[1490,1060,2053],"name":"IERC721Metadata","nameLocation":"307:15:5","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1470,"nodeType":"StructuredDocumentation","src":"340:58:5","text":" @dev Returns the token collection name."},"functionSelector":"06fdde03","id":1475,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"412:4:5","nodeType":"FunctionDefinition","parameters":{"id":1471,"nodeType":"ParameterList","parameters":[],"src":"416:2:5"},"returnParameters":{"id":1474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1473,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1475,"src":"442:13:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1472,"name":"string","nodeType":"ElementaryTypeName","src":"442:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"441:15:5"},"scope":1490,"src":"403:54:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1476,"nodeType":"StructuredDocumentation","src":"463:60:5","text":" @dev Returns the token collection symbol."},"functionSelector":"95d89b41","id":1481,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"537:6:5","nodeType":"FunctionDefinition","parameters":{"id":1477,"nodeType":"ParameterList","parameters":[],"src":"543:2:5"},"returnParameters":{"id":1480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1479,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1481,"src":"569:13:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1478,"name":"string","nodeType":"ElementaryTypeName","src":"569:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"568:15:5"},"scope":1490,"src":"528:56:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":1482,"nodeType":"StructuredDocumentation","src":"590:90:5","text":" @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"functionSelector":"c87b56dd","id":1489,"implemented":false,"kind":"function","modifiers":[],"name":"tokenURI","nameLocation":"694:8:5","nodeType":"FunctionDefinition","parameters":{"id":1485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1484,"mutability":"mutable","name":"tokenId","nameLocation":"711:7:5","nodeType":"VariableDeclaration","scope":1489,"src":"703:15:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1483,"name":"uint256","nodeType":"ElementaryTypeName","src":"703:7:5","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"702:17:5"},"returnParameters":{"id":1488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1487,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1489,"src":"743:13:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1486,"name":"string","nodeType":"ElementaryTypeName","src":"743:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"742:15:5"},"scope":1490,"src":"685:73:5","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1491,"src":"297:463:5","usedErrors":[]}],"src":"112:649:5"},"id":5},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[1820]},"id":1821,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1492,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:6"},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":1493,"nodeType":"StructuredDocumentation","src":"126:67:6","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":1820,"linearizedBaseContracts":[1820],"name":"Address","nameLocation":"202:7:6","nodeType":"ContractDefinition","nodes":[{"body":{"id":1507,"nodeType":"Block","src":"1241:254:6","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":1501,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1496,"src":"1465:7:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1473:4:6","memberName":"code","nodeType":"MemberAccess","src":"1465:12:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1478:6:6","memberName":"length","nodeType":"MemberAccess","src":"1465:19:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1487:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1465:23:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1500,"id":1506,"nodeType":"Return","src":"1458:30:6"}]},"documentation":{"id":1494,"nodeType":"StructuredDocumentation","src":"216:954:6","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 ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":1508,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1184:10:6","nodeType":"FunctionDefinition","parameters":{"id":1497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1496,"mutability":"mutable","name":"account","nameLocation":"1203:7:6","nodeType":"VariableDeclaration","scope":1508,"src":"1195:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1495,"name":"address","nodeType":"ElementaryTypeName","src":"1195:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1194:17:6"},"returnParameters":{"id":1500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1499,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1508,"src":"1235:4:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1498,"name":"bool","nodeType":"ElementaryTypeName","src":"1235:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1234:6:6"},"scope":1820,"src":"1175:320:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1541,"nodeType":"Block","src":"2483:241:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1519,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2509:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$1820","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$1820","typeString":"library Address"}],"id":1518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2501:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1517,"name":"address","nodeType":"ElementaryTypeName","src":"2501:7:6","typeDescriptions":{}}},"id":1520,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2501:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2515:7:6","memberName":"balance","nodeType":"MemberAccess","src":"2501:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1522,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1513,"src":"2526:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2501:31:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":1524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2534:31:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":1516,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2493:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2493:73:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1526,"nodeType":"ExpressionStatement","src":"2493:73:6"},{"assignments":[1528,null],"declarations":[{"constant":false,"id":1528,"mutability":"mutable","name":"success","nameLocation":"2583:7:6","nodeType":"VariableDeclaration","scope":1541,"src":"2578:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1527,"name":"bool","nodeType":"ElementaryTypeName","src":"2578:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":1535,"initialValue":{"arguments":[{"hexValue":"","id":1533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2626:2:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":1529,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1511,"src":"2596:9:6","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":1530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2606:4:6","memberName":"call","nodeType":"MemberAccess","src":"2596:14: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":1532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1531,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1513,"src":"2618:6:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2596:29:6","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2596:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2577:52:6"},{"expression":{"arguments":[{"id":1537,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1528,"src":"2647:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":1538,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2656:60:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":1536,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2639:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2639:78:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1540,"nodeType":"ExpressionStatement","src":"2639:78:6"}]},"documentation":{"id":1509,"nodeType":"StructuredDocumentation","src":"1501:906:6","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":1542,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2421:9:6","nodeType":"FunctionDefinition","parameters":{"id":1514,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1511,"mutability":"mutable","name":"recipient","nameLocation":"2447:9:6","nodeType":"VariableDeclaration","scope":1542,"src":"2431:25:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":1510,"name":"address","nodeType":"ElementaryTypeName","src":"2431:15:6","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":1513,"mutability":"mutable","name":"amount","nameLocation":"2466:6:6","nodeType":"VariableDeclaration","scope":1542,"src":"2458:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1512,"name":"uint256","nodeType":"ElementaryTypeName","src":"2458:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2430:43:6"},"returnParameters":{"id":1515,"nodeType":"ParameterList","parameters":[],"src":"2483:0:6"},"scope":1820,"src":"2412:312:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1559,"nodeType":"Block","src":"3555:96:6","statements":[{"expression":{"arguments":[{"id":1553,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1545,"src":"3594:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1554,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1547,"src":"3602:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":1555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3608:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":1556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3611:32:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":1552,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[1600,1644],"referencedDeclaration":1644,"src":"3572:21:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":1557,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3572:72:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1551,"id":1558,"nodeType":"Return","src":"3565:79:6"}]},"documentation":{"id":1543,"nodeType":"StructuredDocumentation","src":"2730:731:6","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":1560,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3475:12:6","nodeType":"FunctionDefinition","parameters":{"id":1548,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1545,"mutability":"mutable","name":"target","nameLocation":"3496:6:6","nodeType":"VariableDeclaration","scope":1560,"src":"3488:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1544,"name":"address","nodeType":"ElementaryTypeName","src":"3488:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1547,"mutability":"mutable","name":"data","nameLocation":"3517:4:6","nodeType":"VariableDeclaration","scope":1560,"src":"3504:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1546,"name":"bytes","nodeType":"ElementaryTypeName","src":"3504:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3487:35:6"},"returnParameters":{"id":1551,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1550,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1560,"src":"3541:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1549,"name":"bytes","nodeType":"ElementaryTypeName","src":"3541:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3540:14:6"},"scope":1820,"src":"3466:185:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1579,"nodeType":"Block","src":"4020:76:6","statements":[{"expression":{"arguments":[{"id":1573,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1563,"src":"4059:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1574,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1565,"src":"4067:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":1575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4073:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":1576,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1567,"src":"4076:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1572,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[1600,1644],"referencedDeclaration":1644,"src":"4037:21:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":1577,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4037:52:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1571,"id":1578,"nodeType":"Return","src":"4030:59:6"}]},"documentation":{"id":1561,"nodeType":"StructuredDocumentation","src":"3657:211:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":1580,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3882:12:6","nodeType":"FunctionDefinition","parameters":{"id":1568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1563,"mutability":"mutable","name":"target","nameLocation":"3912:6:6","nodeType":"VariableDeclaration","scope":1580,"src":"3904:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1562,"name":"address","nodeType":"ElementaryTypeName","src":"3904:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1565,"mutability":"mutable","name":"data","nameLocation":"3941:4:6","nodeType":"VariableDeclaration","scope":1580,"src":"3928:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1564,"name":"bytes","nodeType":"ElementaryTypeName","src":"3928:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1567,"mutability":"mutable","name":"errorMessage","nameLocation":"3969:12:6","nodeType":"VariableDeclaration","scope":1580,"src":"3955:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1566,"name":"string","nodeType":"ElementaryTypeName","src":"3955:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3894:93:6"},"returnParameters":{"id":1571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1570,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1580,"src":"4006:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1569,"name":"bytes","nodeType":"ElementaryTypeName","src":"4006:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4005:14:6"},"scope":1820,"src":"3873:223:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1599,"nodeType":"Block","src":"4601:111:6","statements":[{"expression":{"arguments":[{"id":1593,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1583,"src":"4640:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1594,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1585,"src":"4648:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1595,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1587,"src":"4654:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":1596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4661:43:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":1592,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[1600,1644],"referencedDeclaration":1644,"src":"4618:21:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":1597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4618:87:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1591,"id":1598,"nodeType":"Return","src":"4611:94:6"}]},"documentation":{"id":1581,"nodeType":"StructuredDocumentation","src":"4102:351:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":1600,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4467:21:6","nodeType":"FunctionDefinition","parameters":{"id":1588,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1583,"mutability":"mutable","name":"target","nameLocation":"4506:6:6","nodeType":"VariableDeclaration","scope":1600,"src":"4498:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1582,"name":"address","nodeType":"ElementaryTypeName","src":"4498:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1585,"mutability":"mutable","name":"data","nameLocation":"4535:4:6","nodeType":"VariableDeclaration","scope":1600,"src":"4522:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1584,"name":"bytes","nodeType":"ElementaryTypeName","src":"4522:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1587,"mutability":"mutable","name":"value","nameLocation":"4557:5:6","nodeType":"VariableDeclaration","scope":1600,"src":"4549:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1586,"name":"uint256","nodeType":"ElementaryTypeName","src":"4549:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4488:80:6"},"returnParameters":{"id":1591,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1590,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1600,"src":"4587:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1589,"name":"bytes","nodeType":"ElementaryTypeName","src":"4587:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4586:14:6"},"scope":1820,"src":"4458:254:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1643,"nodeType":"Block","src":"5139:267:6","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1617,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5165:4:6","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$1820","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$1820","typeString":"library Address"}],"id":1616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5157:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1615,"name":"address","nodeType":"ElementaryTypeName","src":"5157:7:6","typeDescriptions":{}}},"id":1618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5157:13:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5171:7:6","memberName":"balance","nodeType":"MemberAccess","src":"5157:21:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1620,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"5182:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5157:30:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":1622,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5189:40:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":1614,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5149:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1623,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5149:81:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1624,"nodeType":"ExpressionStatement","src":"5149:81:6"},{"assignments":[1626,1628],"declarations":[{"constant":false,"id":1626,"mutability":"mutable","name":"success","nameLocation":"5246:7:6","nodeType":"VariableDeclaration","scope":1643,"src":"5241:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1625,"name":"bool","nodeType":"ElementaryTypeName","src":"5241:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1628,"mutability":"mutable","name":"returndata","nameLocation":"5268:10:6","nodeType":"VariableDeclaration","scope":1643,"src":"5255:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1627,"name":"bytes","nodeType":"ElementaryTypeName","src":"5255:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1635,"initialValue":{"arguments":[{"id":1633,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1605,"src":"5308:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1629,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1603,"src":"5282:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5289:4:6","memberName":"call","nodeType":"MemberAccess","src":"5282: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":1632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1631,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1607,"src":"5301:5:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5282:25:6","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1634,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5282:31:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5240:73:6"},{"expression":{"arguments":[{"id":1637,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1603,"src":"5357:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1638,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1626,"src":"5365:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1639,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1628,"src":"5374:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1640,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1609,"src":"5386:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1636,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1775,"src":"5330:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":1641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5330:69:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1613,"id":1642,"nodeType":"Return","src":"5323:76:6"}]},"documentation":{"id":1601,"nodeType":"StructuredDocumentation","src":"4718:237:6","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":1644,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4969:21:6","nodeType":"FunctionDefinition","parameters":{"id":1610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1603,"mutability":"mutable","name":"target","nameLocation":"5008:6:6","nodeType":"VariableDeclaration","scope":1644,"src":"5000:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1602,"name":"address","nodeType":"ElementaryTypeName","src":"5000:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1605,"mutability":"mutable","name":"data","nameLocation":"5037:4:6","nodeType":"VariableDeclaration","scope":1644,"src":"5024:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1604,"name":"bytes","nodeType":"ElementaryTypeName","src":"5024:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1607,"mutability":"mutable","name":"value","nameLocation":"5059:5:6","nodeType":"VariableDeclaration","scope":1644,"src":"5051:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1606,"name":"uint256","nodeType":"ElementaryTypeName","src":"5051:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1609,"mutability":"mutable","name":"errorMessage","nameLocation":"5088:12:6","nodeType":"VariableDeclaration","scope":1644,"src":"5074:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1608,"name":"string","nodeType":"ElementaryTypeName","src":"5074:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4990:116:6"},"returnParameters":{"id":1613,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1612,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1644,"src":"5125:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1611,"name":"bytes","nodeType":"ElementaryTypeName","src":"5125:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5124:14:6"},"scope":1820,"src":"4960:446:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1660,"nodeType":"Block","src":"5683:97:6","statements":[{"expression":{"arguments":[{"id":1655,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1647,"src":"5719:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1656,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1649,"src":"5727:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":1657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5733:39:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":1654,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[1661,1690],"referencedDeclaration":1690,"src":"5700:18:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":1658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5700:73:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1653,"id":1659,"nodeType":"Return","src":"5693:80:6"}]},"documentation":{"id":1645,"nodeType":"StructuredDocumentation","src":"5412:166:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":1661,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5592:18:6","nodeType":"FunctionDefinition","parameters":{"id":1650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1647,"mutability":"mutable","name":"target","nameLocation":"5619:6:6","nodeType":"VariableDeclaration","scope":1661,"src":"5611:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1646,"name":"address","nodeType":"ElementaryTypeName","src":"5611:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1649,"mutability":"mutable","name":"data","nameLocation":"5640:4:6","nodeType":"VariableDeclaration","scope":1661,"src":"5627:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1648,"name":"bytes","nodeType":"ElementaryTypeName","src":"5627:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5610:35:6"},"returnParameters":{"id":1653,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1652,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1661,"src":"5669:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1651,"name":"bytes","nodeType":"ElementaryTypeName","src":"5669:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5668:14:6"},"scope":1820,"src":"5583:197:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1689,"nodeType":"Block","src":"6122:168:6","statements":[{"assignments":[1674,1676],"declarations":[{"constant":false,"id":1674,"mutability":"mutable","name":"success","nameLocation":"6138:7:6","nodeType":"VariableDeclaration","scope":1689,"src":"6133:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1673,"name":"bool","nodeType":"ElementaryTypeName","src":"6133:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1676,"mutability":"mutable","name":"returndata","nameLocation":"6160:10:6","nodeType":"VariableDeclaration","scope":1689,"src":"6147:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1675,"name":"bytes","nodeType":"ElementaryTypeName","src":"6147:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1681,"initialValue":{"arguments":[{"id":1679,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1666,"src":"6192:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1677,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1664,"src":"6174:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6181:10:6","memberName":"staticcall","nodeType":"MemberAccess","src":"6174:17:6","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":1680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6174:23:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6132:65:6"},{"expression":{"arguments":[{"id":1683,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1664,"src":"6241:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1684,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1674,"src":"6249:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1685,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1676,"src":"6258:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1686,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1668,"src":"6270:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1682,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1775,"src":"6214:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":1687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6214:69:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1672,"id":1688,"nodeType":"Return","src":"6207:76:6"}]},"documentation":{"id":1662,"nodeType":"StructuredDocumentation","src":"5786:173:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":1690,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5973:18:6","nodeType":"FunctionDefinition","parameters":{"id":1669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1664,"mutability":"mutable","name":"target","nameLocation":"6009:6:6","nodeType":"VariableDeclaration","scope":1690,"src":"6001:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1663,"name":"address","nodeType":"ElementaryTypeName","src":"6001:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1666,"mutability":"mutable","name":"data","nameLocation":"6038:4:6","nodeType":"VariableDeclaration","scope":1690,"src":"6025:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1665,"name":"bytes","nodeType":"ElementaryTypeName","src":"6025:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1668,"mutability":"mutable","name":"errorMessage","nameLocation":"6066:12:6","nodeType":"VariableDeclaration","scope":1690,"src":"6052:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1667,"name":"string","nodeType":"ElementaryTypeName","src":"6052:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5991:93:6"},"returnParameters":{"id":1672,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1671,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1690,"src":"6108:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1670,"name":"bytes","nodeType":"ElementaryTypeName","src":"6108:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6107:14:6"},"scope":1820,"src":"5964:326:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1706,"nodeType":"Block","src":"6566:101:6","statements":[{"expression":{"arguments":[{"id":1701,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1693,"src":"6604:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1702,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1695,"src":"6612:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":1703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6618:41:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":1700,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[1707,1736],"referencedDeclaration":1736,"src":"6583:20:6","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":1704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6583:77:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1699,"id":1705,"nodeType":"Return","src":"6576:84:6"}]},"documentation":{"id":1691,"nodeType":"StructuredDocumentation","src":"6296:168:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":1707,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6478:20:6","nodeType":"FunctionDefinition","parameters":{"id":1696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1693,"mutability":"mutable","name":"target","nameLocation":"6507:6:6","nodeType":"VariableDeclaration","scope":1707,"src":"6499:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1692,"name":"address","nodeType":"ElementaryTypeName","src":"6499:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1695,"mutability":"mutable","name":"data","nameLocation":"6528:4:6","nodeType":"VariableDeclaration","scope":1707,"src":"6515:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1694,"name":"bytes","nodeType":"ElementaryTypeName","src":"6515:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6498:35:6"},"returnParameters":{"id":1699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1698,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1707,"src":"6552:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1697,"name":"bytes","nodeType":"ElementaryTypeName","src":"6552:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6551:14:6"},"scope":1820,"src":"6469:198:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1735,"nodeType":"Block","src":"7008:170:6","statements":[{"assignments":[1720,1722],"declarations":[{"constant":false,"id":1720,"mutability":"mutable","name":"success","nameLocation":"7024:7:6","nodeType":"VariableDeclaration","scope":1735,"src":"7019:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1719,"name":"bool","nodeType":"ElementaryTypeName","src":"7019:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1722,"mutability":"mutable","name":"returndata","nameLocation":"7046:10:6","nodeType":"VariableDeclaration","scope":1735,"src":"7033:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1721,"name":"bytes","nodeType":"ElementaryTypeName","src":"7033:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1727,"initialValue":{"arguments":[{"id":1725,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1712,"src":"7080:4:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":1723,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1710,"src":"7060:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7067:12:6","memberName":"delegatecall","nodeType":"MemberAccess","src":"7060:19:6","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":1726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7060:25:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7018:67:6"},{"expression":{"arguments":[{"id":1729,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1710,"src":"7129:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1730,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1720,"src":"7137:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":1731,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1722,"src":"7146:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1732,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1714,"src":"7158:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1728,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1775,"src":"7102:26:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":1733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7102:69:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1718,"id":1734,"nodeType":"Return","src":"7095:76:6"}]},"documentation":{"id":1708,"nodeType":"StructuredDocumentation","src":"6673:175:6","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":1736,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6862:20:6","nodeType":"FunctionDefinition","parameters":{"id":1715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1710,"mutability":"mutable","name":"target","nameLocation":"6900:6:6","nodeType":"VariableDeclaration","scope":1736,"src":"6892:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1709,"name":"address","nodeType":"ElementaryTypeName","src":"6892:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1712,"mutability":"mutable","name":"data","nameLocation":"6929:4:6","nodeType":"VariableDeclaration","scope":1736,"src":"6916:17:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1711,"name":"bytes","nodeType":"ElementaryTypeName","src":"6916:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1714,"mutability":"mutable","name":"errorMessage","nameLocation":"6957:12:6","nodeType":"VariableDeclaration","scope":1736,"src":"6943:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1713,"name":"string","nodeType":"ElementaryTypeName","src":"6943:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6882:93:6"},"returnParameters":{"id":1718,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1717,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1736,"src":"6994:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1716,"name":"bytes","nodeType":"ElementaryTypeName","src":"6994:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6993:14:6"},"scope":1820,"src":"6853:325:6","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1774,"nodeType":"Block","src":"7660:434:6","statements":[{"condition":{"id":1750,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1741,"src":"7674:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1772,"nodeType":"Block","src":"8030:58:6","statements":[{"expression":{"arguments":[{"id":1768,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"8052:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1769,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"8064:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1767,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1819,"src":"8044:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":1770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8044:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1771,"nodeType":"ExpressionStatement","src":"8044:33:6"}]},"id":1773,"nodeType":"IfStatement","src":"7670:418:6","trueBody":{"id":1766,"nodeType":"Block","src":"7683:341:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1751,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"7701:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7712:6:6","memberName":"length","nodeType":"MemberAccess","src":"7701:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7722:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7701:22:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1763,"nodeType":"IfStatement","src":"7697:286:6","trueBody":{"id":1762,"nodeType":"Block","src":"7725:258:6","statements":[{"expression":{"arguments":[{"arguments":[{"id":1757,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1739,"src":"7927:6:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1756,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"7916:10:6","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":1758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7916:18:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":1759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7936:31:6","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":1755,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7908:7:6","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7908:60:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1761,"nodeType":"ExpressionStatement","src":"7908:60:6"}]}},{"expression":{"id":1764,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1743,"src":"8003:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1749,"id":1765,"nodeType":"Return","src":"7996:17:6"}]}}]},"documentation":{"id":1737,"nodeType":"StructuredDocumentation","src":"7184:277:6","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":1775,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7475:26:6","nodeType":"FunctionDefinition","parameters":{"id":1746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1739,"mutability":"mutable","name":"target","nameLocation":"7519:6:6","nodeType":"VariableDeclaration","scope":1775,"src":"7511:14:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1738,"name":"address","nodeType":"ElementaryTypeName","src":"7511:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1741,"mutability":"mutable","name":"success","nameLocation":"7540:7:6","nodeType":"VariableDeclaration","scope":1775,"src":"7535:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1740,"name":"bool","nodeType":"ElementaryTypeName","src":"7535:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1743,"mutability":"mutable","name":"returndata","nameLocation":"7570:10:6","nodeType":"VariableDeclaration","scope":1775,"src":"7557:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1742,"name":"bytes","nodeType":"ElementaryTypeName","src":"7557:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1745,"mutability":"mutable","name":"errorMessage","nameLocation":"7604:12:6","nodeType":"VariableDeclaration","scope":1775,"src":"7590:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1744,"name":"string","nodeType":"ElementaryTypeName","src":"7590:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7501:121:6"},"returnParameters":{"id":1749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1748,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1775,"src":"7646:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1747,"name":"bytes","nodeType":"ElementaryTypeName","src":"7646:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7645:14:6"},"scope":1820,"src":"7466:628:6","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1798,"nodeType":"Block","src":"8475:135:6","statements":[{"condition":{"id":1787,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1778,"src":"8489:7:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1796,"nodeType":"Block","src":"8546:58:6","statements":[{"expression":{"arguments":[{"id":1792,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1780,"src":"8568:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1793,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1782,"src":"8580:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1791,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1819,"src":"8560:7:6","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":1794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8560:33:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1795,"nodeType":"ExpressionStatement","src":"8560:33:6"}]},"id":1797,"nodeType":"IfStatement","src":"8485:119:6","trueBody":{"id":1790,"nodeType":"Block","src":"8498:42:6","statements":[{"expression":{"id":1788,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1780,"src":"8519:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":1786,"id":1789,"nodeType":"Return","src":"8512:17:6"}]}}]},"documentation":{"id":1776,"nodeType":"StructuredDocumentation","src":"8100:210:6","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":1799,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8324:16:6","nodeType":"FunctionDefinition","parameters":{"id":1783,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1778,"mutability":"mutable","name":"success","nameLocation":"8355:7:6","nodeType":"VariableDeclaration","scope":1799,"src":"8350:12:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1777,"name":"bool","nodeType":"ElementaryTypeName","src":"8350:4:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1780,"mutability":"mutable","name":"returndata","nameLocation":"8385:10:6","nodeType":"VariableDeclaration","scope":1799,"src":"8372:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1779,"name":"bytes","nodeType":"ElementaryTypeName","src":"8372:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1782,"mutability":"mutable","name":"errorMessage","nameLocation":"8419:12:6","nodeType":"VariableDeclaration","scope":1799,"src":"8405:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1781,"name":"string","nodeType":"ElementaryTypeName","src":"8405:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8340:97:6"},"returnParameters":{"id":1786,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1785,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1799,"src":"8461:12:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1784,"name":"bytes","nodeType":"ElementaryTypeName","src":"8461:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8460:14:6"},"scope":1820,"src":"8315:295:6","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1818,"nodeType":"Block","src":"8699:457:6","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1806,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1801,"src":"8775:10:6","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8786:6:6","memberName":"length","nodeType":"MemberAccess","src":"8775:17:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8795:1:6","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8775:21:6","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1816,"nodeType":"Block","src":"9105:45:6","statements":[{"expression":{"arguments":[{"id":1813,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1803,"src":"9126:12:6","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1812,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9119:6:6","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":1814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9119:20:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1815,"nodeType":"ExpressionStatement","src":"9119:20:6"}]},"id":1817,"nodeType":"IfStatement","src":"8771:379:6","trueBody":{"id":1811,"nodeType":"Block","src":"8798:301:6","statements":[{"AST":{"nodeType":"YulBlock","src":"8956:133:6","statements":[{"nodeType":"YulVariableDeclaration","src":"8974:40:6","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"9003:10:6"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8997:5:6"},"nodeType":"YulFunctionCall","src":"8997:17:6"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"8978:15:6","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9042:2:6","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"9046:10:6"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9038:3:6"},"nodeType":"YulFunctionCall","src":"9038:19:6"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"9059:15:6"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9031:6:6"},"nodeType":"YulFunctionCall","src":"9031:44:6"},"nodeType":"YulExpressionStatement","src":"9031:44:6"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1801,"isOffset":false,"isSlot":false,"src":"9003:10:6","valueSize":1},{"declaration":1801,"isOffset":false,"isSlot":false,"src":"9046:10:6","valueSize":1}],"id":1810,"nodeType":"InlineAssembly","src":"8947:142:6"}]}}]},"id":1819,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8625:7:6","nodeType":"FunctionDefinition","parameters":{"id":1804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1801,"mutability":"mutable","name":"returndata","nameLocation":"8646:10:6","nodeType":"VariableDeclaration","scope":1819,"src":"8633:23:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1800,"name":"bytes","nodeType":"ElementaryTypeName","src":"8633:5:6","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1803,"mutability":"mutable","name":"errorMessage","nameLocation":"8672:12:6","nodeType":"VariableDeclaration","scope":1819,"src":"8658:26:6","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1802,"name":"string","nodeType":"ElementaryTypeName","src":"8658:6:6","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8632:53:6"},"returnParameters":{"id":1805,"nodeType":"ParameterList","parameters":[],"src":"8699:0:6"},"scope":1820,"src":"8616:540:6","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":1821,"src":"194:8964:6","usedErrors":[]}],"src":"101:9058:6"},"id":6},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[1842]},"id":1843,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1822,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"86:23:7"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":1823,"nodeType":"StructuredDocumentation","src":"111:496:7","text":" @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts."},"fullyImplemented":true,"id":1842,"linearizedBaseContracts":[1842],"name":"Context","nameLocation":"626:7:7","nodeType":"ContractDefinition","nodes":[{"body":{"id":1831,"nodeType":"Block","src":"702:34:7","statements":[{"expression":{"expression":{"id":1828,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"719:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"723:6:7","memberName":"sender","nodeType":"MemberAccess","src":"719:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1827,"id":1830,"nodeType":"Return","src":"712:17:7"}]},"id":1832,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"649:10:7","nodeType":"FunctionDefinition","parameters":{"id":1824,"nodeType":"ParameterList","parameters":[],"src":"659:2:7"},"returnParameters":{"id":1827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1826,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1832,"src":"693:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1825,"name":"address","nodeType":"ElementaryTypeName","src":"693:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"692:9:7"},"scope":1842,"src":"640:96:7","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":1840,"nodeType":"Block","src":"809:32:7","statements":[{"expression":{"expression":{"id":1837,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"826:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1838,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"830:4:7","memberName":"data","nodeType":"MemberAccess","src":"826:8:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":1836,"id":1839,"nodeType":"Return","src":"819:15:7"}]},"id":1841,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"751:8:7","nodeType":"FunctionDefinition","parameters":{"id":1833,"nodeType":"ParameterList","parameters":[],"src":"759:2:7"},"returnParameters":{"id":1836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1835,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1841,"src":"793:14:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1834,"name":"bytes","nodeType":"ElementaryTypeName","src":"793:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"792:16:7"},"scope":1842,"src":"742:99:7","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":1843,"src":"608:235:7","usedErrors":[]}],"src":"86:758:7"},"id":7},"@openzeppelin/contracts/utils/Strings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","exportedSymbols":{"Math":[2918],"Strings":[2017]},"id":2018,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1844,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"101:23:8"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"./math/Math.sol","id":1845,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2018,"sourceUnit":2919,"src":"126:25:8","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"153:34:8","text":" @dev String operations."},"fullyImplemented":true,"id":2017,"linearizedBaseContracts":[2017],"name":"Strings","nameLocation":"196:7:8","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":1849,"mutability":"constant","name":"_SYMBOLS","nameLocation":"235:8:8","nodeType":"VariableDeclaration","scope":2017,"src":"210:54:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1847,"name":"bytes16","nodeType":"ElementaryTypeName","src":"210:7:8","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1848,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"246:18:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":1852,"mutability":"constant","name":"_ADDRESS_LENGTH","nameLocation":"293:15:8","nodeType":"VariableDeclaration","scope":2017,"src":"270:43:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1850,"name":"uint8","nodeType":"ElementaryTypeName","src":"270:5:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"311:2:8","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"body":{"id":1899,"nodeType":"Block","src":"486:625:8","statements":[{"id":1898,"nodeType":"UncheckedBlock","src":"496:609:8","statements":[{"assignments":[1861],"declarations":[{"constant":false,"id":1861,"mutability":"mutable","name":"length","nameLocation":"528:6:8","nodeType":"VariableDeclaration","scope":1898,"src":"520:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1860,"name":"uint256","nodeType":"ElementaryTypeName","src":"520:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1868,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1864,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"548:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1862,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2918,"src":"537:4:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$2918_$","typeString":"type(library Math)"}},"id":1863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"542:5:8","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":2755,"src":"537:10:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"537:17:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"557:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"537:21:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"520:38:8"},{"assignments":[1870],"declarations":[{"constant":false,"id":1870,"mutability":"mutable","name":"buffer","nameLocation":"586:6:8","nodeType":"VariableDeclaration","scope":1898,"src":"572:20:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1869,"name":"string","nodeType":"ElementaryTypeName","src":"572:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1875,"initialValue":{"arguments":[{"id":1873,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1861,"src":"606:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1872,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"595:10:8","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1871,"name":"string","nodeType":"ElementaryTypeName","src":"599:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"595:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"572:41:8"},{"assignments":[1877],"declarations":[{"constant":false,"id":1877,"mutability":"mutable","name":"ptr","nameLocation":"635:3:8","nodeType":"VariableDeclaration","scope":1898,"src":"627:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1876,"name":"uint256","nodeType":"ElementaryTypeName","src":"627:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1878,"nodeType":"VariableDeclarationStatement","src":"627:11:8"},{"AST":{"nodeType":"YulBlock","src":"708:67:8","statements":[{"nodeType":"YulAssignment","src":"726:35:8","value":{"arguments":[{"name":"buffer","nodeType":"YulIdentifier","src":"737:6:8"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"749:2:8","type":"","value":"32"},{"name":"length","nodeType":"YulIdentifier","src":"753:6:8"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"745:3:8"},"nodeType":"YulFunctionCall","src":"745:15:8"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"733:3:8"},"nodeType":"YulFunctionCall","src":"733:28:8"},"variableNames":[{"name":"ptr","nodeType":"YulIdentifier","src":"726:3:8"}]}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1870,"isOffset":false,"isSlot":false,"src":"737:6:8","valueSize":1},{"declaration":1861,"isOffset":false,"isSlot":false,"src":"753:6:8","valueSize":1},{"declaration":1877,"isOffset":false,"isSlot":false,"src":"726:3:8","valueSize":1}],"id":1879,"nodeType":"InlineAssembly","src":"699:76:8"},{"body":{"id":1894,"nodeType":"Block","src":"801:267:8","statements":[{"expression":{"id":1882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"819:5:8","subExpression":{"id":1881,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1877,"src":"819:3:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1883,"nodeType":"ExpressionStatement","src":"819:5:8"},{"AST":{"nodeType":"YulBlock","src":"902:84:8","statements":[{"expression":{"arguments":[{"name":"ptr","nodeType":"YulIdentifier","src":"932:3:8"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"946:5:8"},{"kind":"number","nodeType":"YulLiteral","src":"953:2:8","type":"","value":"10"}],"functionName":{"name":"mod","nodeType":"YulIdentifier","src":"942:3:8"},"nodeType":"YulFunctionCall","src":"942:14:8"},{"name":"_SYMBOLS","nodeType":"YulIdentifier","src":"958:8:8"}],"functionName":{"name":"byte","nodeType":"YulIdentifier","src":"937:4:8"},"nodeType":"YulFunctionCall","src":"937:30:8"}],"functionName":{"name":"mstore8","nodeType":"YulIdentifier","src":"924:7:8"},"nodeType":"YulFunctionCall","src":"924:44:8"},"nodeType":"YulExpressionStatement","src":"924:44:8"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":1849,"isOffset":false,"isSlot":false,"src":"958:8:8","valueSize":1},{"declaration":1877,"isOffset":false,"isSlot":false,"src":"932:3:8","valueSize":1},{"declaration":1855,"isOffset":false,"isSlot":false,"src":"946:5:8","valueSize":1}],"id":1884,"nodeType":"InlineAssembly","src":"893:93:8"},{"expression":{"id":1887,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1885,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"1003:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1012:2:8","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1003:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1888,"nodeType":"ExpressionStatement","src":"1003:11:8"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1855,"src":"1036:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1890,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1045:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1036:10:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1893,"nodeType":"IfStatement","src":"1032:21:8","trueBody":{"id":1892,"nodeType":"Break","src":"1048:5:8"}}]},"condition":{"hexValue":"74727565","id":1880,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"795:4:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1895,"nodeType":"WhileStatement","src":"788:280:8"},{"expression":{"id":1896,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1870,"src":"1088:6:8","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1859,"id":1897,"nodeType":"Return","src":"1081:13:8"}]}]},"documentation":{"id":1853,"nodeType":"StructuredDocumentation","src":"320:90:8","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":1900,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"424:8:8","nodeType":"FunctionDefinition","parameters":{"id":1856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1855,"mutability":"mutable","name":"value","nameLocation":"441:5:8","nodeType":"VariableDeclaration","scope":1900,"src":"433:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1854,"name":"uint256","nodeType":"ElementaryTypeName","src":"433:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"432:15:8"},"returnParameters":{"id":1859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1858,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1900,"src":"471:13:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1857,"name":"string","nodeType":"ElementaryTypeName","src":"471:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"470:15:8"},"scope":2017,"src":"415:696:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1919,"nodeType":"Block","src":"1290:100:8","statements":[{"id":1918,"nodeType":"UncheckedBlock","src":"1300:84:8","statements":[{"expression":{"arguments":[{"id":1909,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1903,"src":"1343:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1912,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1903,"src":"1362:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1910,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2918,"src":"1350:4:8","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$2918_$","typeString":"type(library Math)"}},"id":1911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1355:6:8","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":2878,"src":"1350:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1350:18:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1371:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1350:22:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1908,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1920,1996,2016],"referencedDeclaration":1996,"src":"1331:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1331:42:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1907,"id":1917,"nodeType":"Return","src":"1324:49:8"}]}]},"documentation":{"id":1901,"nodeType":"StructuredDocumentation","src":"1117:94:8","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":1920,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1225:11:8","nodeType":"FunctionDefinition","parameters":{"id":1904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1903,"mutability":"mutable","name":"value","nameLocation":"1245:5:8","nodeType":"VariableDeclaration","scope":1920,"src":"1237:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1902,"name":"uint256","nodeType":"ElementaryTypeName","src":"1237:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1236:15:8"},"returnParameters":{"id":1907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1906,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1920,"src":"1275:13:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1905,"name":"string","nodeType":"ElementaryTypeName","src":"1275:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1274:15:8"},"scope":2017,"src":"1216:174:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1995,"nodeType":"Block","src":"1603:347:8","statements":[{"assignments":[1931],"declarations":[{"constant":false,"id":1931,"mutability":"mutable","name":"buffer","nameLocation":"1626:6:8","nodeType":"VariableDeclaration","scope":1995,"src":"1613:19:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1930,"name":"bytes","nodeType":"ElementaryTypeName","src":"1613:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1940,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1645:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1935,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1925,"src":"1649:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1645:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1658:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"1645:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1933,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1635:9:8","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1932,"name":"bytes","nodeType":"ElementaryTypeName","src":"1639:5:8","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1939,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1635:25:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1613:47:8"},{"expression":{"id":1945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1941,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1931,"src":"1670:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1943,"indexExpression":{"hexValue":"30","id":1942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1677:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1670:9:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1682:3:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"1670:15:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1946,"nodeType":"ExpressionStatement","src":"1670:15:8"},{"expression":{"id":1951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1947,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1931,"src":"1695:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1949,"indexExpression":{"hexValue":"31","id":1948,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1702:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1695:9:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1707:3:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"1695:15:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1952,"nodeType":"ExpressionStatement","src":"1695:15:8"},{"body":{"id":1981,"nodeType":"Block","src":"1765:83:8","statements":[{"expression":{"id":1975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1967,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1931,"src":"1779:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1969,"indexExpression":{"id":1968,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"1786:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1779:9:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1970,"name":"_SYMBOLS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1849,"src":"1791:8:8","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1974,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1971,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1923,"src":"1800:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1808:3:8","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"1800:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1791:21:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"1779:33:8","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1976,"nodeType":"ExpressionStatement","src":"1779:33:8"},{"expression":{"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1977,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1923,"src":"1826:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1978,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1836:1:8","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"1826:11:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1980,"nodeType":"ExpressionStatement","src":"1826:11:8"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1961,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"1753:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1962,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1757:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1753:5:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1982,"initializationExpression":{"assignments":[1954],"declarations":[{"constant":false,"id":1954,"mutability":"mutable","name":"i","nameLocation":"1733:1:8","nodeType":"VariableDeclaration","scope":1982,"src":"1725:9:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1953,"name":"uint256","nodeType":"ElementaryTypeName","src":"1725:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1960,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1957,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1737:1:8","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1956,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1925,"src":"1741:6:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1737:10:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1958,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1750:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1737:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1725:26:8"},"loopExpression":{"expression":{"id":1965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"1760:3:8","subExpression":{"id":1964,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1954,"src":"1762:1:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1966,"nodeType":"ExpressionStatement","src":"1760:3:8"},"nodeType":"ForStatement","src":"1720:128:8"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1984,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1923,"src":"1865:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1874:1:8","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1865:10:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"537472696e67733a20686578206c656e67746820696e73756666696369656e74","id":1987,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1877:34:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""},"value":"Strings: hex length insufficient"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2","typeString":"literal_string \"Strings: hex length insufficient\""}],"id":1983,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1857:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1857:55:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1989,"nodeType":"ExpressionStatement","src":"1857:55:8"},{"expression":{"arguments":[{"id":1992,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1931,"src":"1936:6:8","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1991,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1929:6:8","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1990,"name":"string","nodeType":"ElementaryTypeName","src":"1929:6:8","typeDescriptions":{}}},"id":1993,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1929:14:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1929,"id":1994,"nodeType":"Return","src":"1922:21:8"}]},"documentation":{"id":1921,"nodeType":"StructuredDocumentation","src":"1396:112:8","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":1996,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"1522:11:8","nodeType":"FunctionDefinition","parameters":{"id":1926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1923,"mutability":"mutable","name":"value","nameLocation":"1542:5:8","nodeType":"VariableDeclaration","scope":1996,"src":"1534:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1922,"name":"uint256","nodeType":"ElementaryTypeName","src":"1534:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1925,"mutability":"mutable","name":"length","nameLocation":"1557:6:8","nodeType":"VariableDeclaration","scope":1996,"src":"1549:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1924,"name":"uint256","nodeType":"ElementaryTypeName","src":"1549:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1533:31:8"},"returnParameters":{"id":1929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1928,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1996,"src":"1588:13:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1927,"name":"string","nodeType":"ElementaryTypeName","src":"1588:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1587:15:8"},"scope":2017,"src":"1513:437:8","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2015,"nodeType":"Block","src":"2175:76:8","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":2009,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1999,"src":"2220:4:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2008,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2212:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":2007,"name":"uint160","nodeType":"ElementaryTypeName","src":"2212:7:8","typeDescriptions":{}}},"id":2010,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2212:13:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2006,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2204:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2005,"name":"uint256","nodeType":"ElementaryTypeName","src":"2204:7:8","typeDescriptions":{}}},"id":2011,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2204:22:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2012,"name":"_ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1852,"src":"2228:15:8","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":2004,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1920,1996,2016],"referencedDeclaration":1996,"src":"2192:11:8","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":2013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2192:52:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2003,"id":2014,"nodeType":"Return","src":"2185:59:8"}]},"documentation":{"id":1997,"nodeType":"StructuredDocumentation","src":"1956:141:8","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."},"id":2016,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2111:11:8","nodeType":"FunctionDefinition","parameters":{"id":2000,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1999,"mutability":"mutable","name":"addr","nameLocation":"2131:4:8","nodeType":"VariableDeclaration","scope":2016,"src":"2123:12:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1998,"name":"address","nodeType":"ElementaryTypeName","src":"2123:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2122:14:8"},"returnParameters":{"id":2003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2002,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2016,"src":"2160:13:8","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2001,"name":"string","nodeType":"ElementaryTypeName","src":"2160:6:8","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2159:15:8"},"scope":2017,"src":"2102:149:8","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2018,"src":"188:2065:8","usedErrors":[]}],"src":"101:2153:8"},"id":8},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165.sol","exportedSymbols":{"ERC165":[2041],"IERC165":[2053]},"id":2042,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2019,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"99:23:9"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"./IERC165.sol","id":2020,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2042,"sourceUnit":2054,"src":"124:23:9","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":2022,"name":"IERC165","nameLocations":["754:7:9"],"nodeType":"IdentifierPath","referencedDeclaration":2053,"src":"754:7:9"},"id":2023,"nodeType":"InheritanceSpecifier","src":"754:7:9"}],"canonicalName":"ERC165","contractDependencies":[],"contractKind":"contract","documentation":{"id":2021,"nodeType":"StructuredDocumentation","src":"149:576:9","text":" @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```\n Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation."},"fullyImplemented":true,"id":2041,"linearizedBaseContracts":[2041,2053],"name":"ERC165","nameLocation":"744:6:9","nodeType":"ContractDefinition","nodes":[{"baseFunctions":[2052],"body":{"id":2039,"nodeType":"Block","src":"920:64:9","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"id":2037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2032,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2026,"src":"937:11:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":2034,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2053,"src":"957:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$2053_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$2053_$","typeString":"type(contract IERC165)"}],"id":2033,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"952:4:9","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2035,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"952:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$2053","typeString":"type(contract IERC165)"}},"id":2036,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"966:11:9","memberName":"interfaceId","nodeType":"MemberAccess","src":"952:25:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"src":"937:40:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":2031,"id":2038,"nodeType":"Return","src":"930:47:9"}]},"documentation":{"id":2024,"nodeType":"StructuredDocumentation","src":"768:56:9","text":" @dev See {IERC165-supportsInterface}."},"functionSelector":"01ffc9a7","id":2040,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"838:17:9","nodeType":"FunctionDefinition","overrides":{"id":2028,"nodeType":"OverrideSpecifier","overrides":[],"src":"896:8:9"},"parameters":{"id":2027,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2026,"mutability":"mutable","name":"interfaceId","nameLocation":"863:11:9","nodeType":"VariableDeclaration","scope":2040,"src":"856:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2025,"name":"bytes4","nodeType":"ElementaryTypeName","src":"856:6:9","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"855:20:9"},"returnParameters":{"id":2031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2030,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2040,"src":"914:4:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2029,"name":"bool","nodeType":"ElementaryTypeName","src":"914:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"913:6:9"},"scope":2041,"src":"829:155:9","stateMutability":"view","virtual":true,"visibility":"public"}],"scope":2042,"src":"726:260:9","usedErrors":[]}],"src":"99:888:9"},"id":9},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[2053]},"id":2054,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2043,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:10"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":2044,"nodeType":"StructuredDocumentation","src":"125:279:10","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":2053,"linearizedBaseContracts":[2053],"name":"IERC165","nameLocation":"415:7:10","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":2045,"nodeType":"StructuredDocumentation","src":"429:340:10","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":2052,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"783:17:10","nodeType":"FunctionDefinition","parameters":{"id":2048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2047,"mutability":"mutable","name":"interfaceId","nameLocation":"808:11:10","nodeType":"VariableDeclaration","scope":2052,"src":"801:18:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2046,"name":"bytes4","nodeType":"ElementaryTypeName","src":"801:6:10","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"800:20:10"},"returnParameters":{"id":2051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2050,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2052,"src":"844:4:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2049,"name":"bool","nodeType":"ElementaryTypeName","src":"844:4:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"843:6:10"},"scope":2053,"src":"774:76:10","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":2054,"src":"405:447:10","usedErrors":[]}],"src":"100:753:10"},"id":10},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[2918]},"id":2919,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2055,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"103:23:11"},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":2056,"nodeType":"StructuredDocumentation","src":"128:73:11","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":2918,"linearizedBaseContracts":[2918],"name":"Math","nameLocation":"210:4:11","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Math.Rounding","id":2060,"members":[{"id":2057,"name":"Down","nameLocation":"245:4:11","nodeType":"EnumValue","src":"245:4:11"},{"id":2058,"name":"Up","nameLocation":"287:2:11","nodeType":"EnumValue","src":"287:2:11"},{"id":2059,"name":"Zero","nameLocation":"318:4:11","nodeType":"EnumValue","src":"318:4:11"}],"name":"Rounding","nameLocation":"226:8:11","nodeType":"EnumDefinition","src":"221:122:11"},{"body":{"id":2077,"nodeType":"Block","src":"480:37:11","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2070,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"497:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2071,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2065,"src":"501:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"497:5:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2074,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2065,"src":"509:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"497:13:11","trueExpression":{"id":2073,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2063,"src":"505:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2069,"id":2076,"nodeType":"Return","src":"490:20:11"}]},"documentation":{"id":2061,"nodeType":"StructuredDocumentation","src":"349:59:11","text":" @dev Returns the largest of two numbers."},"id":2078,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"422:3:11","nodeType":"FunctionDefinition","parameters":{"id":2066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2063,"mutability":"mutable","name":"a","nameLocation":"434:1:11","nodeType":"VariableDeclaration","scope":2078,"src":"426:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2062,"name":"uint256","nodeType":"ElementaryTypeName","src":"426:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2065,"mutability":"mutable","name":"b","nameLocation":"445:1:11","nodeType":"VariableDeclaration","scope":2078,"src":"437:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2064,"name":"uint256","nodeType":"ElementaryTypeName","src":"437:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"425:22:11"},"returnParameters":{"id":2069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2068,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2078,"src":"471:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2067,"name":"uint256","nodeType":"ElementaryTypeName","src":"471:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"470:9:11"},"scope":2918,"src":"413:104:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2095,"nodeType":"Block","src":"655:37:11","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2088,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2081,"src":"672:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2089,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2083,"src":"676:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"672:5:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":2092,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2083,"src":"684:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"672:13:11","trueExpression":{"id":2091,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2081,"src":"680:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2087,"id":2094,"nodeType":"Return","src":"665:20:11"}]},"documentation":{"id":2079,"nodeType":"StructuredDocumentation","src":"523:60:11","text":" @dev Returns the smallest of two numbers."},"id":2096,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"597:3:11","nodeType":"FunctionDefinition","parameters":{"id":2084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2081,"mutability":"mutable","name":"a","nameLocation":"609:1:11","nodeType":"VariableDeclaration","scope":2096,"src":"601:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2080,"name":"uint256","nodeType":"ElementaryTypeName","src":"601:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2083,"mutability":"mutable","name":"b","nameLocation":"620:1:11","nodeType":"VariableDeclaration","scope":2096,"src":"612:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2082,"name":"uint256","nodeType":"ElementaryTypeName","src":"612:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"600:22:11"},"returnParameters":{"id":2087,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2086,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2096,"src":"646:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2085,"name":"uint256","nodeType":"ElementaryTypeName","src":"646:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"645:9:11"},"scope":2918,"src":"588:104:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2118,"nodeType":"Block","src":"876:82:11","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2106,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2099,"src":"931:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":2107,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2101,"src":"935:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"931:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2109,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"930:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2110,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2099,"src":"941:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":2111,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2101,"src":"945:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"941:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2113,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"940:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":2114,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"950:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"940:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"930:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2105,"id":2117,"nodeType":"Return","src":"923:28:11"}]},"documentation":{"id":2097,"nodeType":"StructuredDocumentation","src":"698:102:11","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":2119,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"814:7:11","nodeType":"FunctionDefinition","parameters":{"id":2102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2099,"mutability":"mutable","name":"a","nameLocation":"830:1:11","nodeType":"VariableDeclaration","scope":2119,"src":"822:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2098,"name":"uint256","nodeType":"ElementaryTypeName","src":"822:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2101,"mutability":"mutable","name":"b","nameLocation":"841:1:11","nodeType":"VariableDeclaration","scope":2119,"src":"833:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2100,"name":"uint256","nodeType":"ElementaryTypeName","src":"833:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"821:22:11"},"returnParameters":{"id":2105,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2104,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2119,"src":"867:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2103,"name":"uint256","nodeType":"ElementaryTypeName","src":"867:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"866:9:11"},"scope":2918,"src":"805:153:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2143,"nodeType":"Block","src":"1228:123:11","statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2131,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2129,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2122,"src":"1316:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1321:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1316:6:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2133,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2122,"src":"1330:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1334:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1330:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2136,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1329:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2137,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2124,"src":"1339:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1329:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1343:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1329:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"1316:28:11","trueExpression":{"hexValue":"30","id":2132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1325:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2128,"id":2142,"nodeType":"Return","src":"1309:35:11"}]},"documentation":{"id":2120,"nodeType":"StructuredDocumentation","src":"964:188:11","text":" @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds up instead\n of rounding down."},"id":2144,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"1166:7:11","nodeType":"FunctionDefinition","parameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2122,"mutability":"mutable","name":"a","nameLocation":"1182:1:11","nodeType":"VariableDeclaration","scope":2144,"src":"1174:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2121,"name":"uint256","nodeType":"ElementaryTypeName","src":"1174:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2124,"mutability":"mutable","name":"b","nameLocation":"1193:1:11","nodeType":"VariableDeclaration","scope":2144,"src":"1185:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2123,"name":"uint256","nodeType":"ElementaryTypeName","src":"1185:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1173:22:11"},"returnParameters":{"id":2128,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2127,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2144,"src":"1219:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2126,"name":"uint256","nodeType":"ElementaryTypeName","src":"1219:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1218:9:11"},"scope":2918,"src":"1157:194:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2265,"nodeType":"Block","src":"1795:3797:11","statements":[{"id":2264,"nodeType":"UncheckedBlock","src":"1805:3781:11","statements":[{"assignments":[2157],"declarations":[{"constant":false,"id":2157,"mutability":"mutable","name":"prod0","nameLocation":"2134:5:11","nodeType":"VariableDeclaration","scope":2264,"src":"2126:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2156,"name":"uint256","nodeType":"ElementaryTypeName","src":"2126:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2158,"nodeType":"VariableDeclarationStatement","src":"2126:13:11"},{"assignments":[2160],"declarations":[{"constant":false,"id":2160,"mutability":"mutable","name":"prod1","nameLocation":"2206:5:11","nodeType":"VariableDeclaration","scope":2264,"src":"2198:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2159,"name":"uint256","nodeType":"ElementaryTypeName","src":"2198:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2161,"nodeType":"VariableDeclarationStatement","src":"2198:13:11"},{"AST":{"nodeType":"YulBlock","src":"2278:157:11","statements":[{"nodeType":"YulVariableDeclaration","src":"2296:30:11","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2313:1:11"},{"name":"y","nodeType":"YulIdentifier","src":"2316:1:11"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2323:1:11","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2319:3:11"},"nodeType":"YulFunctionCall","src":"2319:6:11"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"2306:6:11"},"nodeType":"YulFunctionCall","src":"2306:20:11"},"variables":[{"name":"mm","nodeType":"YulTypedName","src":"2300:2:11","type":""}]},{"nodeType":"YulAssignment","src":"2343:18:11","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2356:1:11"},{"name":"y","nodeType":"YulIdentifier","src":"2359:1:11"}],"functionName":{"name":"mul","nodeType":"YulIdentifier","src":"2352:3:11"},"nodeType":"YulFunctionCall","src":"2352:9:11"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"2343:5:11"}]},{"nodeType":"YulAssignment","src":"2378:43:11","value":{"arguments":[{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2395:2:11"},{"name":"prod0","nodeType":"YulIdentifier","src":"2399:5:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2391:3:11"},"nodeType":"YulFunctionCall","src":"2391:14:11"},{"arguments":[{"name":"mm","nodeType":"YulIdentifier","src":"2410:2:11"},{"name":"prod0","nodeType":"YulIdentifier","src":"2414:5:11"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2407:2:11"},"nodeType":"YulFunctionCall","src":"2407:13:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2387:3:11"},"nodeType":"YulFunctionCall","src":"2387:34:11"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"2378:5:11"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2157,"isOffset":false,"isSlot":false,"src":"2343:5:11","valueSize":1},{"declaration":2157,"isOffset":false,"isSlot":false,"src":"2399:5:11","valueSize":1},{"declaration":2157,"isOffset":false,"isSlot":false,"src":"2414:5:11","valueSize":1},{"declaration":2160,"isOffset":false,"isSlot":false,"src":"2378:5:11","valueSize":1},{"declaration":2147,"isOffset":false,"isSlot":false,"src":"2313:1:11","valueSize":1},{"declaration":2147,"isOffset":false,"isSlot":false,"src":"2356:1:11","valueSize":1},{"declaration":2149,"isOffset":false,"isSlot":false,"src":"2316:1:11","valueSize":1},{"declaration":2149,"isOffset":false,"isSlot":false,"src":"2359:1:11","valueSize":1}],"id":2162,"nodeType":"InlineAssembly","src":"2269:166:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2163,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2160,"src":"2516:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2525:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2516:10:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2171,"nodeType":"IfStatement","src":"2512:75:11","trueBody":{"id":2170,"nodeType":"Block","src":"2528:59:11","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2166,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2157,"src":"2553:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2167,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"2561:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2553:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2155,"id":2169,"nodeType":"Return","src":"2546:26:11"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2173,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"2697:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2174,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2160,"src":"2711:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2697:19:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2172,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2689:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":2176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2689:28:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2177,"nodeType":"ExpressionStatement","src":"2689:28:11"},{"assignments":[2179],"declarations":[{"constant":false,"id":2179,"mutability":"mutable","name":"remainder","nameLocation":"2981:9:11","nodeType":"VariableDeclaration","scope":2264,"src":"2973:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2178,"name":"uint256","nodeType":"ElementaryTypeName","src":"2973:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2180,"nodeType":"VariableDeclarationStatement","src":"2973:17:11"},{"AST":{"nodeType":"YulBlock","src":"3013:291:11","statements":[{"nodeType":"YulAssignment","src":"3082:38:11","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3102:1:11"},{"name":"y","nodeType":"YulIdentifier","src":"3105:1:11"},{"name":"denominator","nodeType":"YulIdentifier","src":"3108:11:11"}],"functionName":{"name":"mulmod","nodeType":"YulIdentifier","src":"3095:6:11"},"nodeType":"YulFunctionCall","src":"3095:25:11"},"variableNames":[{"name":"remainder","nodeType":"YulIdentifier","src":"3082:9:11"}]},{"nodeType":"YulAssignment","src":"3202:41:11","value":{"arguments":[{"name":"prod1","nodeType":"YulIdentifier","src":"3215:5:11"},{"arguments":[{"name":"remainder","nodeType":"YulIdentifier","src":"3225:9:11"},{"name":"prod0","nodeType":"YulIdentifier","src":"3236:5:11"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3222:2:11"},"nodeType":"YulFunctionCall","src":"3222:20:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3211:3:11"},"nodeType":"YulFunctionCall","src":"3211:32:11"},"variableNames":[{"name":"prod1","nodeType":"YulIdentifier","src":"3202:5:11"}]},{"nodeType":"YulAssignment","src":"3260:30:11","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"3273:5:11"},{"name":"remainder","nodeType":"YulIdentifier","src":"3280:9:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3269:3:11"},"nodeType":"YulFunctionCall","src":"3269:21:11"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"3260:5:11"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2151,"isOffset":false,"isSlot":false,"src":"3108:11:11","valueSize":1},{"declaration":2157,"isOffset":false,"isSlot":false,"src":"3236:5:11","valueSize":1},{"declaration":2157,"isOffset":false,"isSlot":false,"src":"3260:5:11","valueSize":1},{"declaration":2157,"isOffset":false,"isSlot":false,"src":"3273:5:11","valueSize":1},{"declaration":2160,"isOffset":false,"isSlot":false,"src":"3202:5:11","valueSize":1},{"declaration":2160,"isOffset":false,"isSlot":false,"src":"3215:5:11","valueSize":1},{"declaration":2179,"isOffset":false,"isSlot":false,"src":"3082:9:11","valueSize":1},{"declaration":2179,"isOffset":false,"isSlot":false,"src":"3225:9:11","valueSize":1},{"declaration":2179,"isOffset":false,"isSlot":false,"src":"3280:9:11","valueSize":1},{"declaration":2147,"isOffset":false,"isSlot":false,"src":"3102:1:11","valueSize":1},{"declaration":2149,"isOffset":false,"isSlot":false,"src":"3105:1:11","valueSize":1}],"id":2181,"nodeType":"InlineAssembly","src":"3004:300:11"},{"assignments":[2183],"declarations":[{"constant":false,"id":2183,"mutability":"mutable","name":"twos","nameLocation":"3619:4:11","nodeType":"VariableDeclaration","scope":2264,"src":"3611:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2182,"name":"uint256","nodeType":"ElementaryTypeName","src":"3611:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2191,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2184,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"3626:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"~","prefix":true,"src":"3641:12:11","subExpression":{"id":2185,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"3642:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3656:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3641:16:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2189,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3640:18:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3626:32:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3611:47:11"},{"AST":{"nodeType":"YulBlock","src":"3681:362:11","statements":[{"nodeType":"YulAssignment","src":"3746:37:11","value":{"arguments":[{"name":"denominator","nodeType":"YulIdentifier","src":"3765:11:11"},{"name":"twos","nodeType":"YulIdentifier","src":"3778:4:11"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3761:3:11"},"nodeType":"YulFunctionCall","src":"3761:22:11"},"variableNames":[{"name":"denominator","nodeType":"YulIdentifier","src":"3746:11:11"}]},{"nodeType":"YulAssignment","src":"3850:25:11","value":{"arguments":[{"name":"prod0","nodeType":"YulIdentifier","src":"3863:5:11"},{"name":"twos","nodeType":"YulIdentifier","src":"3870:4:11"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"3859:3:11"},"nodeType":"YulFunctionCall","src":"3859:16:11"},"variableNames":[{"name":"prod0","nodeType":"YulIdentifier","src":"3850:5:11"}]},{"nodeType":"YulAssignment","src":"3990:39:11","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4010:1:11","type":"","value":"0"},{"name":"twos","nodeType":"YulIdentifier","src":"4013:4:11"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4006:3:11"},"nodeType":"YulFunctionCall","src":"4006:12:11"},{"name":"twos","nodeType":"YulIdentifier","src":"4020:4:11"}],"functionName":{"name":"div","nodeType":"YulIdentifier","src":"4002:3:11"},"nodeType":"YulFunctionCall","src":"4002:23:11"},{"kind":"number","nodeType":"YulLiteral","src":"4027:1:11","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3998:3:11"},"nodeType":"YulFunctionCall","src":"3998:31:11"},"variableNames":[{"name":"twos","nodeType":"YulIdentifier","src":"3990:4:11"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2151,"isOffset":false,"isSlot":false,"src":"3746:11:11","valueSize":1},{"declaration":2151,"isOffset":false,"isSlot":false,"src":"3765:11:11","valueSize":1},{"declaration":2157,"isOffset":false,"isSlot":false,"src":"3850:5:11","valueSize":1},{"declaration":2157,"isOffset":false,"isSlot":false,"src":"3863:5:11","valueSize":1},{"declaration":2183,"isOffset":false,"isSlot":false,"src":"3778:4:11","valueSize":1},{"declaration":2183,"isOffset":false,"isSlot":false,"src":"3870:4:11","valueSize":1},{"declaration":2183,"isOffset":false,"isSlot":false,"src":"3990:4:11","valueSize":1},{"declaration":2183,"isOffset":false,"isSlot":false,"src":"4013:4:11","valueSize":1},{"declaration":2183,"isOffset":false,"isSlot":false,"src":"4020:4:11","valueSize":1}],"id":2192,"nodeType":"InlineAssembly","src":"3672:371:11"},{"expression":{"id":2197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2193,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2157,"src":"4109:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2194,"name":"prod1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2160,"src":"4118:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2195,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2183,"src":"4126:4:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4118:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4109:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2198,"nodeType":"ExpressionStatement","src":"4109:21:11"},{"assignments":[2200],"declarations":[{"constant":false,"id":2200,"mutability":"mutable","name":"inverse","nameLocation":"4456:7:11","nodeType":"VariableDeclaration","scope":2264,"src":"4448:15:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2199,"name":"uint256","nodeType":"ElementaryTypeName","src":"4448:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2207,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":2201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4467:1:11","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2202,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"4471:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4467:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2204,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4466:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":2205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4486:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"4466:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4448:39:11"},{"expression":{"id":2214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2208,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"4704:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4715:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2212,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2210,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"4719:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2211,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"4733:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4719:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4715:25:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4704:36:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2215,"nodeType":"ExpressionStatement","src":"4704:36:11"},{"expression":{"id":2222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2216,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"4773:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4784:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2218,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"4788:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2219,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"4802:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4788:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4784:25:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4773:36:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2223,"nodeType":"ExpressionStatement","src":"4773:36:11"},{"expression":{"id":2230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2224,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"4843:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2225,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4854:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2226,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"4858:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2227,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"4872:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4858:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4854:25:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4843:36:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2231,"nodeType":"ExpressionStatement","src":"4843:36:11"},{"expression":{"id":2238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2232,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"4913:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4924:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2234,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"4928:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2235,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"4942:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4928:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4924:25:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4913:36:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2239,"nodeType":"ExpressionStatement","src":"4913:36:11"},{"expression":{"id":2246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2240,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"4983:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2241,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4994:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2242,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"4998:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2243,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"5012:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4998:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4994:25:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4983:36:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2247,"nodeType":"ExpressionStatement","src":"4983:36:11"},{"expression":{"id":2254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2248,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"5054:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2249,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5065:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2250,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2151,"src":"5069:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2251,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"5083:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5069:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5065:25:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5054:36:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2255,"nodeType":"ExpressionStatement","src":"5054:36:11"},{"expression":{"id":2260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2256,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2154,"src":"5524:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2257,"name":"prod0","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2157,"src":"5533:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2258,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2200,"src":"5541:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5533:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5524:24:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2261,"nodeType":"ExpressionStatement","src":"5524:24:11"},{"expression":{"id":2262,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2154,"src":"5569:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2155,"id":2263,"nodeType":"Return","src":"5562:13:11"}]}]},"documentation":{"id":2145,"nodeType":"StructuredDocumentation","src":"1357:305:11","text":" @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0\n @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv)\n with further edits by Uniswap Labs also under MIT license."},"id":2266,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"1676:6:11","nodeType":"FunctionDefinition","parameters":{"id":2152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2147,"mutability":"mutable","name":"x","nameLocation":"1700:1:11","nodeType":"VariableDeclaration","scope":2266,"src":"1692:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2146,"name":"uint256","nodeType":"ElementaryTypeName","src":"1692:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2149,"mutability":"mutable","name":"y","nameLocation":"1719:1:11","nodeType":"VariableDeclaration","scope":2266,"src":"1711:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2148,"name":"uint256","nodeType":"ElementaryTypeName","src":"1711:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2151,"mutability":"mutable","name":"denominator","nameLocation":"1738:11:11","nodeType":"VariableDeclaration","scope":2266,"src":"1730:19:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2150,"name":"uint256","nodeType":"ElementaryTypeName","src":"1730:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1682:73:11"},"returnParameters":{"id":2155,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2154,"mutability":"mutable","name":"result","nameLocation":"1787:6:11","nodeType":"VariableDeclaration","scope":2266,"src":"1779:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2153,"name":"uint256","nodeType":"ElementaryTypeName","src":"1779:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1778:16:11"},"scope":2918,"src":"1667:3925:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2309,"nodeType":"Block","src":"5872:189:11","statements":[{"assignments":[2282],"declarations":[{"constant":false,"id":2282,"mutability":"mutable","name":"result","nameLocation":"5890:6:11","nodeType":"VariableDeclaration","scope":2309,"src":"5882:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2281,"name":"uint256","nodeType":"ElementaryTypeName","src":"5882:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2288,"initialValue":{"arguments":[{"id":2284,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2269,"src":"5906:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2285,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2271,"src":"5909:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2286,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2273,"src":"5912:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2283,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[2266,2310],"referencedDeclaration":2266,"src":"5899:6:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5899:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5882:42:11"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"},"id":2292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2289,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2276,"src":"5938:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2290,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2060,"src":"5950:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$2060_$","typeString":"type(enum Math.Rounding)"}},"id":2291,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5959:2:11","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":2058,"src":"5950:11:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"}},"src":"5938:23:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2294,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2269,"src":"5972:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2295,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2271,"src":"5975:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2296,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2273,"src":"5978:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2293,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"5965:6:11","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":2297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5965:25:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2298,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5993:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5965:29:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5938:56:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2306,"nodeType":"IfStatement","src":"5934:98:11","trueBody":{"id":2305,"nodeType":"Block","src":"5996:36:11","statements":[{"expression":{"id":2303,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2301,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2282,"src":"6010:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6020:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6010:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2304,"nodeType":"ExpressionStatement","src":"6010:11:11"}]}},{"expression":{"id":2307,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2282,"src":"6048:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2280,"id":2308,"nodeType":"Return","src":"6041:13:11"}]},"documentation":{"id":2267,"nodeType":"StructuredDocumentation","src":"5598:121:11","text":" @notice Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":2310,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"5733:6:11","nodeType":"FunctionDefinition","parameters":{"id":2277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2269,"mutability":"mutable","name":"x","nameLocation":"5757:1:11","nodeType":"VariableDeclaration","scope":2310,"src":"5749:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2268,"name":"uint256","nodeType":"ElementaryTypeName","src":"5749:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2271,"mutability":"mutable","name":"y","nameLocation":"5776:1:11","nodeType":"VariableDeclaration","scope":2310,"src":"5768:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2270,"name":"uint256","nodeType":"ElementaryTypeName","src":"5768:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2273,"mutability":"mutable","name":"denominator","nameLocation":"5795:11:11","nodeType":"VariableDeclaration","scope":2310,"src":"5787:19:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2272,"name":"uint256","nodeType":"ElementaryTypeName","src":"5787:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2276,"mutability":"mutable","name":"rounding","nameLocation":"5825:8:11","nodeType":"VariableDeclaration","scope":2310,"src":"5816:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"},"typeName":{"id":2275,"nodeType":"UserDefinedTypeName","pathNode":{"id":2274,"name":"Rounding","nameLocations":["5816:8:11"],"nodeType":"IdentifierPath","referencedDeclaration":2060,"src":"5816:8:11"},"referencedDeclaration":2060,"src":"5816:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"5739:100:11"},"returnParameters":{"id":2280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2279,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2310,"src":"5863:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2278,"name":"uint256","nodeType":"ElementaryTypeName","src":"5863:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5862:9:11"},"scope":2918,"src":"5724:337:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2421,"nodeType":"Block","src":"6337:1585:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2318,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"6351:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":2319,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6356:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6351:6:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2324,"nodeType":"IfStatement","src":"6347:45:11","trueBody":{"id":2323,"nodeType":"Block","src":"6359:33:11","statements":[{"expression":{"hexValue":"30","id":2321,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6380:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":2317,"id":2322,"nodeType":"Return","src":"6373:8:11"}]}},{"assignments":[2326],"declarations":[{"constant":false,"id":2326,"mutability":"mutable","name":"result","nameLocation":"7079:6:11","nodeType":"VariableDeclaration","scope":2421,"src":"7071:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2325,"name":"uint256","nodeType":"ElementaryTypeName","src":"7071:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2335,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2327,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7088:1:11","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":2332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2329,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"7099:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2328,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[2590,2626],"referencedDeclaration":2590,"src":"7094:4:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7094:7:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7105:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7094:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2333,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7093:14:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7088:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7071:36:11"},{"id":2420,"nodeType":"UncheckedBlock","src":"7508:408:11","statements":[{"expression":{"id":2345,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2336,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"7532:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2337,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"7542:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2338,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"7551:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2339,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"7555:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7551:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7542:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2342,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7541:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2343,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7566:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7541:26:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7532:35:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2346,"nodeType":"ExpressionStatement","src":"7532:35:11"},{"expression":{"id":2356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2347,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"7581:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2352,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2348,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"7591:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2349,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"7600:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2350,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"7604:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7600:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7591:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2353,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7590:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7615:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7590:26:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7581:35:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2357,"nodeType":"ExpressionStatement","src":"7581:35:11"},{"expression":{"id":2367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2358,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"7630:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2363,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2359,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"7640:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2360,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"7649:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2361,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"7653:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7649:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7640:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2364,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7639:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2365,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7664:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7639:26:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7630:35:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2368,"nodeType":"ExpressionStatement","src":"7630:35:11"},{"expression":{"id":2378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2369,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"7679:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2370,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"7689:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2371,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"7698:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2372,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"7702:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7698:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7689:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2375,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7688:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7713:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7688:26:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7679:35:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2379,"nodeType":"ExpressionStatement","src":"7679:35:11"},{"expression":{"id":2389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2380,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"7728:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2381,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"7738:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2382,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"7747:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2383,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"7751:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7747:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7738:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2386,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7737:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7762:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7737:26:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7728:35:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2390,"nodeType":"ExpressionStatement","src":"7728:35:11"},{"expression":{"id":2400,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2391,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"7777:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2392,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"7787:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2393,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"7796:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2394,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"7800:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7796:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7787:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2397,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7786:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2398,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7811:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7786:26:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7777:35:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2401,"nodeType":"ExpressionStatement","src":"7777:35:11"},{"expression":{"id":2411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2402,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"7826:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2403,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"7836:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2406,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2404,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"7845:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2405,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"7849:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7845:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7836:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2408,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7835:21:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7860:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7835:26:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7826:35:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2412,"nodeType":"ExpressionStatement","src":"7826:35:11"},{"expression":{"arguments":[{"id":2414,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"7886:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2415,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2313,"src":"7894:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":2416,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2326,"src":"7898:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7894:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2413,"name":"min","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2096,"src":"7882:3:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":2418,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7882:23:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2317,"id":2419,"nodeType":"Return","src":"7875:30:11"}]}]},"documentation":{"id":2311,"nodeType":"StructuredDocumentation","src":"6067:208:11","text":" @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down.\n Inspired by Henry S. Warren, Jr.'s \"Hacker's Delight\" (Chapter 11)."},"id":2422,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"6289:4:11","nodeType":"FunctionDefinition","parameters":{"id":2314,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2313,"mutability":"mutable","name":"a","nameLocation":"6302:1:11","nodeType":"VariableDeclaration","scope":2422,"src":"6294:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2312,"name":"uint256","nodeType":"ElementaryTypeName","src":"6294:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6293:11:11"},"returnParameters":{"id":2317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2316,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2422,"src":"6328:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2315,"name":"uint256","nodeType":"ElementaryTypeName","src":"6328:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6327:9:11"},"scope":2918,"src":"6280:1642:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2457,"nodeType":"Block","src":"8098:161:11","statements":[{"id":2456,"nodeType":"UncheckedBlock","src":"8108:145:11","statements":[{"assignments":[2434],"declarations":[{"constant":false,"id":2434,"mutability":"mutable","name":"result","nameLocation":"8140:6:11","nodeType":"VariableDeclaration","scope":2456,"src":"8132:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2433,"name":"uint256","nodeType":"ElementaryTypeName","src":"8132:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2438,"initialValue":{"arguments":[{"id":2436,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2425,"src":"8154:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2435,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[2422,2458],"referencedDeclaration":2422,"src":"8149:4:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8149:7:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8132:24:11"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2439,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"8177:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"},"id":2443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2440,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2428,"src":"8187:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2441,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2060,"src":"8199:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$2060_$","typeString":"type(enum Math.Rounding)"}},"id":2442,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8208:2:11","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":2058,"src":"8199:11:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"}},"src":"8187:23:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2444,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"8214:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":2445,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2434,"src":"8223:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8214:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2447,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2425,"src":"8232:1:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8214:19:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"8187:46:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2451,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8240:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8187:54:11","trueExpression":{"hexValue":"31","id":2450,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8236:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2453,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8186:56:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"8177:65:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2432,"id":2455,"nodeType":"Return","src":"8170:72:11"}]}]},"documentation":{"id":2423,"nodeType":"StructuredDocumentation","src":"7928:89:11","text":" @notice Calculates sqrt(a), following the selected rounding direction."},"id":2458,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"8031:4:11","nodeType":"FunctionDefinition","parameters":{"id":2429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2425,"mutability":"mutable","name":"a","nameLocation":"8044:1:11","nodeType":"VariableDeclaration","scope":2458,"src":"8036:9:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2424,"name":"uint256","nodeType":"ElementaryTypeName","src":"8036:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2428,"mutability":"mutable","name":"rounding","nameLocation":"8056:8:11","nodeType":"VariableDeclaration","scope":2458,"src":"8047:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"},"typeName":{"id":2427,"nodeType":"UserDefinedTypeName","pathNode":{"id":2426,"name":"Rounding","nameLocations":["8047:8:11"],"nodeType":"IdentifierPath","referencedDeclaration":2060,"src":"8047:8:11"},"referencedDeclaration":2060,"src":"8047:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"8035:30:11"},"returnParameters":{"id":2432,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2431,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2458,"src":"8089:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2430,"name":"uint256","nodeType":"ElementaryTypeName","src":"8089:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8088:9:11"},"scope":2918,"src":"8022:237:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2589,"nodeType":"Block","src":"8444:922:11","statements":[{"assignments":[2467],"declarations":[{"constant":false,"id":2467,"mutability":"mutable","name":"result","nameLocation":"8462:6:11","nodeType":"VariableDeclaration","scope":2589,"src":"8454:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2466,"name":"uint256","nodeType":"ElementaryTypeName","src":"8454:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2469,"initialValue":{"hexValue":"30","id":2468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8471:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"8454:18:11"},{"id":2586,"nodeType":"UncheckedBlock","src":"8482:855:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2472,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2470,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2461,"src":"8510:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2471,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8519:3:11","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8510:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8525:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8510:16:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2484,"nodeType":"IfStatement","src":"8506:99:11","trueBody":{"id":2483,"nodeType":"Block","src":"8528:77:11","statements":[{"expression":{"id":2477,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2475,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2461,"src":"8546:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":2476,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8556:3:11","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8546:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2478,"nodeType":"ExpressionStatement","src":"8546:13:11"},{"expression":{"id":2481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2479,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2467,"src":"8577:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"313238","id":2480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8587:3:11","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"8577:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2482,"nodeType":"ExpressionStatement","src":"8577:13:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2485,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2461,"src":"8622:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":2486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8631:2:11","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8622:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2488,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8636:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8622:15:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2499,"nodeType":"IfStatement","src":"8618:96:11","trueBody":{"id":2498,"nodeType":"Block","src":"8639:75:11","statements":[{"expression":{"id":2492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2490,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2461,"src":"8657:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":2491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8667:2:11","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8657:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2493,"nodeType":"ExpressionStatement","src":"8657:12:11"},{"expression":{"id":2496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2494,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2467,"src":"8687:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":2495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8697:2:11","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"8687:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2497,"nodeType":"ExpressionStatement","src":"8687:12:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2500,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2461,"src":"8731:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":2501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8740:2:11","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8731:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2503,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8745:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8731:15:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2514,"nodeType":"IfStatement","src":"8727:96:11","trueBody":{"id":2513,"nodeType":"Block","src":"8748:75:11","statements":[{"expression":{"id":2507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2505,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2461,"src":"8766:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":2506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8776:2:11","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8766:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2508,"nodeType":"ExpressionStatement","src":"8766:12:11"},{"expression":{"id":2511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2509,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2467,"src":"8796:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":2510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8806:2:11","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"8796:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2512,"nodeType":"ExpressionStatement","src":"8796:12:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2515,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2461,"src":"8840:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":2516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8849:2:11","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"8840:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8854:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8840:15:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2529,"nodeType":"IfStatement","src":"8836:96:11","trueBody":{"id":2528,"nodeType":"Block","src":"8857:75:11","statements":[{"expression":{"id":2522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2520,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2461,"src":"8875:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":2521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8885:2:11","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"8875:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2523,"nodeType":"ExpressionStatement","src":"8875:12:11"},{"expression":{"id":2526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2524,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2467,"src":"8905:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8915:2:11","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"8905:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2527,"nodeType":"ExpressionStatement","src":"8905:12:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2534,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2530,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2461,"src":"8949:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":2531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8958:1:11","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"8949:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8962:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8949:14:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2544,"nodeType":"IfStatement","src":"8945:93:11","trueBody":{"id":2543,"nodeType":"Block","src":"8965:73:11","statements":[{"expression":{"id":2537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2535,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2461,"src":"8983:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":2536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8993:1:11","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"8983:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2538,"nodeType":"ExpressionStatement","src":"8983:11:11"},{"expression":{"id":2541,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2539,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2467,"src":"9012:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9022:1:11","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"9012:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2542,"nodeType":"ExpressionStatement","src":"9012:11:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2545,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2461,"src":"9055:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"34","id":2546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9064:1:11","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9055:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9068:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9055:14:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2559,"nodeType":"IfStatement","src":"9051:93:11","trueBody":{"id":2558,"nodeType":"Block","src":"9071:73:11","statements":[{"expression":{"id":2552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2550,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2461,"src":"9089:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":2551,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9099:1:11","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9089:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2553,"nodeType":"ExpressionStatement","src":"9089:11:11"},{"expression":{"id":2556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2554,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2467,"src":"9118:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9128:1:11","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"9118:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2557,"nodeType":"ExpressionStatement","src":"9118:11:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2560,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2461,"src":"9161:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"32","id":2561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9170:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9161:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9174:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9161:14:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2574,"nodeType":"IfStatement","src":"9157:93:11","trueBody":{"id":2573,"nodeType":"Block","src":"9177:73:11","statements":[{"expression":{"id":2567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2565,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2461,"src":"9195:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"32","id":2566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9205:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9195:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2568,"nodeType":"ExpressionStatement","src":"9195:11:11"},{"expression":{"id":2571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2569,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2467,"src":"9224:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9234:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9224:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2572,"nodeType":"ExpressionStatement","src":"9224:11:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2575,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2461,"src":"9267:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":2576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9276:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9267:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2578,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9280:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9267:14:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2585,"nodeType":"IfStatement","src":"9263:64:11","trueBody":{"id":2584,"nodeType":"Block","src":"9283:44:11","statements":[{"expression":{"id":2582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2580,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2467,"src":"9301:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9311:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9301:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2583,"nodeType":"ExpressionStatement","src":"9301:11:11"}]}}]},{"expression":{"id":2587,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2467,"src":"9353:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2465,"id":2588,"nodeType":"Return","src":"9346:13:11"}]},"documentation":{"id":2459,"nodeType":"StructuredDocumentation","src":"8265:113:11","text":" @dev Return the log in base 2, rounded down, of a positive value.\n Returns 0 if given 0."},"id":2590,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"8392:4:11","nodeType":"FunctionDefinition","parameters":{"id":2462,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2461,"mutability":"mutable","name":"value","nameLocation":"8405:5:11","nodeType":"VariableDeclaration","scope":2590,"src":"8397:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2460,"name":"uint256","nodeType":"ElementaryTypeName","src":"8397:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8396:15:11"},"returnParameters":{"id":2465,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2464,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2590,"src":"8435:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2463,"name":"uint256","nodeType":"ElementaryTypeName","src":"8435:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8434:9:11"},"scope":2918,"src":"8383:983:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2625,"nodeType":"Block","src":"9599:165:11","statements":[{"id":2624,"nodeType":"UncheckedBlock","src":"9609:149:11","statements":[{"assignments":[2602],"declarations":[{"constant":false,"id":2602,"mutability":"mutable","name":"result","nameLocation":"9641:6:11","nodeType":"VariableDeclaration","scope":2624,"src":"9633:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2601,"name":"uint256","nodeType":"ElementaryTypeName","src":"9633:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2606,"initialValue":{"arguments":[{"id":2604,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2593,"src":"9655:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2603,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[2590,2626],"referencedDeclaration":2590,"src":"9650:4:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9650:11:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9633:28:11"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2607,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2602,"src":"9682:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2617,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"},"id":2611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2608,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2596,"src":"9692:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2609,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2060,"src":"9704:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$2060_$","typeString":"type(enum Math.Rounding)"}},"id":2610,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9713:2:11","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":2058,"src":"9704:11:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"}},"src":"9692:23:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9719:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":2613,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2602,"src":"9724:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9719:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2615,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2593,"src":"9733:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9719:19:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9692:46:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9745:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9692:54:11","trueExpression":{"hexValue":"31","id":2618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9741:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2621,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9691:56:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"9682:65:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2600,"id":2623,"nodeType":"Return","src":"9675:72:11"}]}]},"documentation":{"id":2591,"nodeType":"StructuredDocumentation","src":"9372:142:11","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":2626,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"9528:4:11","nodeType":"FunctionDefinition","parameters":{"id":2597,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2593,"mutability":"mutable","name":"value","nameLocation":"9541:5:11","nodeType":"VariableDeclaration","scope":2626,"src":"9533:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2592,"name":"uint256","nodeType":"ElementaryTypeName","src":"9533:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2596,"mutability":"mutable","name":"rounding","nameLocation":"9557:8:11","nodeType":"VariableDeclaration","scope":2626,"src":"9548:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"},"typeName":{"id":2595,"nodeType":"UserDefinedTypeName","pathNode":{"id":2594,"name":"Rounding","nameLocations":["9548:8:11"],"nodeType":"IdentifierPath","referencedDeclaration":2060,"src":"9548:8:11"},"referencedDeclaration":2060,"src":"9548:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"9532:34:11"},"returnParameters":{"id":2600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2599,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2626,"src":"9590:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2598,"name":"uint256","nodeType":"ElementaryTypeName","src":"9590:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9589:9:11"},"scope":2918,"src":"9519:245:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2754,"nodeType":"Block","src":"9951:828:11","statements":[{"assignments":[2635],"declarations":[{"constant":false,"id":2635,"mutability":"mutable","name":"result","nameLocation":"9969:6:11","nodeType":"VariableDeclaration","scope":2754,"src":"9961:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2634,"name":"uint256","nodeType":"ElementaryTypeName","src":"9961:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2637,"initialValue":{"hexValue":"30","id":2636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9978:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9961:18:11"},{"id":2751,"nodeType":"UncheckedBlock","src":"9989:761:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2638,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"10017:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":2641,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10026:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":2640,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10030:2:11","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10026:6:11","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10017:15:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2654,"nodeType":"IfStatement","src":"10013:99:11","trueBody":{"id":2653,"nodeType":"Block","src":"10034:78:11","statements":[{"expression":{"id":2647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2643,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"10052:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"},"id":2646,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2644,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10061:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":2645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10065:2:11","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10061:6:11","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"10052:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2648,"nodeType":"ExpressionStatement","src":"10052:15:11"},{"expression":{"id":2651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2649,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2635,"src":"10085:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":2650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10095:2:11","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"10085:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2652,"nodeType":"ExpressionStatement","src":"10085:12:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2655,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"10129:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":2658,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2656,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10138:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":2657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10142:2:11","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10138:6:11","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10129:15:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2671,"nodeType":"IfStatement","src":"10125:99:11","trueBody":{"id":2670,"nodeType":"Block","src":"10146:78:11","statements":[{"expression":{"id":2664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2660,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"10164:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"},"id":2663,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10173:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":2662,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10177:2:11","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10173:6:11","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"10164:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2665,"nodeType":"ExpressionStatement","src":"10164:15:11"},{"expression":{"id":2668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2666,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2635,"src":"10197:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":2667,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10207:2:11","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"10197:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2669,"nodeType":"ExpressionStatement","src":"10197:12:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2676,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2672,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"10241:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2673,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10250:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":2674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10254:2:11","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10250:6:11","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10241:15:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2688,"nodeType":"IfStatement","src":"10237:99:11","trueBody":{"id":2687,"nodeType":"Block","src":"10258:78:11","statements":[{"expression":{"id":2681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2677,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"10276:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":2680,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10285:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":2679,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10289:2:11","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10285:6:11","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"10276:15:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2682,"nodeType":"ExpressionStatement","src":"10276:15:11"},{"expression":{"id":2685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2683,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2635,"src":"10309:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2684,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10319:2:11","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"10309:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2686,"nodeType":"ExpressionStatement","src":"10309:12:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2689,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"10353:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":2692,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10362:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":2691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10366:1:11","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10362:5:11","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10353:14:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2705,"nodeType":"IfStatement","src":"10349:96:11","trueBody":{"id":2704,"nodeType":"Block","src":"10369:76:11","statements":[{"expression":{"id":2698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2694,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"10387:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":2697,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10396:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":2696,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10400:1:11","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10396:5:11","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"10387:14:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2699,"nodeType":"ExpressionStatement","src":"10387:14:11"},{"expression":{"id":2702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2700,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2635,"src":"10419:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10429:1:11","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"10419:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2703,"nodeType":"ExpressionStatement","src":"10419:11:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2706,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"10462:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":2709,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10471:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":2708,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10475:1:11","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10471:5:11","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10462:14:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2722,"nodeType":"IfStatement","src":"10458:96:11","trueBody":{"id":2721,"nodeType":"Block","src":"10478:76:11","statements":[{"expression":{"id":2715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2711,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"10496:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":2714,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2712,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10505:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":2713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10509:1:11","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10505:5:11","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"10496:14:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2716,"nodeType":"ExpressionStatement","src":"10496:14:11"},{"expression":{"id":2719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2717,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2635,"src":"10528:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2718,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10538:1:11","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"10528:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2720,"nodeType":"ExpressionStatement","src":"10528:11:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2723,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"10571:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":2726,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2724,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10580:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":2725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10584:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10580:5:11","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10571:14:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2739,"nodeType":"IfStatement","src":"10567:96:11","trueBody":{"id":2738,"nodeType":"Block","src":"10587:76:11","statements":[{"expression":{"id":2732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2728,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"10605:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":2731,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10614:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":2730,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10618:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10614:5:11","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"10605:14:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2733,"nodeType":"ExpressionStatement","src":"10605:14:11"},{"expression":{"id":2736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2734,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2635,"src":"10637:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10647:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"10637:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2737,"nodeType":"ExpressionStatement","src":"10637:11:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2740,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2629,"src":"10680:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":2743,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10689:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":2742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10693:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10689:5:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"10680:14:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2750,"nodeType":"IfStatement","src":"10676:64:11","trueBody":{"id":2749,"nodeType":"Block","src":"10696:44:11","statements":[{"expression":{"id":2747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2745,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2635,"src":"10714:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2746,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10724:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10714:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2748,"nodeType":"ExpressionStatement","src":"10714:11:11"}]}}]},{"expression":{"id":2752,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2635,"src":"10766:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2633,"id":2753,"nodeType":"Return","src":"10759:13:11"}]},"documentation":{"id":2627,"nodeType":"StructuredDocumentation","src":"9770:114:11","text":" @dev Return the log in base 10, rounded down, of a positive value.\n Returns 0 if given 0."},"id":2755,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"9898:5:11","nodeType":"FunctionDefinition","parameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2629,"mutability":"mutable","name":"value","nameLocation":"9912:5:11","nodeType":"VariableDeclaration","scope":2755,"src":"9904:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2628,"name":"uint256","nodeType":"ElementaryTypeName","src":"9904:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9903:15:11"},"returnParameters":{"id":2633,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2632,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2755,"src":"9942:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2631,"name":"uint256","nodeType":"ElementaryTypeName","src":"9942:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9941:9:11"},"scope":2918,"src":"9889:890:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2790,"nodeType":"Block","src":"11014:165:11","statements":[{"id":2789,"nodeType":"UncheckedBlock","src":"11024:149:11","statements":[{"assignments":[2767],"declarations":[{"constant":false,"id":2767,"mutability":"mutable","name":"result","nameLocation":"11056:6:11","nodeType":"VariableDeclaration","scope":2789,"src":"11048:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2766,"name":"uint256","nodeType":"ElementaryTypeName","src":"11048:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2771,"initialValue":{"arguments":[{"id":2769,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2758,"src":"11071:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2768,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[2755,2791],"referencedDeclaration":2755,"src":"11065:5:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11065:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11048:29:11"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2772,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2767,"src":"11098:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"},"id":2776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2773,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2761,"src":"11108:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2774,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2060,"src":"11120:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$2060_$","typeString":"type(enum Math.Rounding)"}},"id":2775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11129:2:11","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":2058,"src":"11120:11:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"}},"src":"11108:23:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":2777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11135:2:11","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":2778,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2767,"src":"11139:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11135:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2780,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2758,"src":"11148:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11135:18:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11108:45:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11160:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"11108:53:11","trueExpression":{"hexValue":"31","id":2783,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11156:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2786,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11107:55:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11098:64:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2765,"id":2788,"nodeType":"Return","src":"11091:71:11"}]}]},"documentation":{"id":2756,"nodeType":"StructuredDocumentation","src":"10785:143:11","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":2791,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"10942:5:11","nodeType":"FunctionDefinition","parameters":{"id":2762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2758,"mutability":"mutable","name":"value","nameLocation":"10956:5:11","nodeType":"VariableDeclaration","scope":2791,"src":"10948:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2757,"name":"uint256","nodeType":"ElementaryTypeName","src":"10948:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2761,"mutability":"mutable","name":"rounding","nameLocation":"10972:8:11","nodeType":"VariableDeclaration","scope":2791,"src":"10963:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"},"typeName":{"id":2760,"nodeType":"UserDefinedTypeName","pathNode":{"id":2759,"name":"Rounding","nameLocations":["10963:8:11"],"nodeType":"IdentifierPath","referencedDeclaration":2060,"src":"10963:8:11"},"referencedDeclaration":2060,"src":"10963:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"10947:34:11"},"returnParameters":{"id":2765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2764,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2791,"src":"11005:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2763,"name":"uint256","nodeType":"ElementaryTypeName","src":"11005:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11004:9:11"},"scope":2918,"src":"10933:246:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2877,"nodeType":"Block","src":"11493:600:11","statements":[{"assignments":[2800],"declarations":[{"constant":false,"id":2800,"mutability":"mutable","name":"result","nameLocation":"11511:6:11","nodeType":"VariableDeclaration","scope":2877,"src":"11503:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2799,"name":"uint256","nodeType":"ElementaryTypeName","src":"11503:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2802,"initialValue":{"hexValue":"30","id":2801,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11520:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11503:18:11"},{"id":2874,"nodeType":"UncheckedBlock","src":"11531:533:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2803,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2794,"src":"11559:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"313238","id":2804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11568:3:11","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11559:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11574:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11559:16:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2817,"nodeType":"IfStatement","src":"11555:98:11","trueBody":{"id":2816,"nodeType":"Block","src":"11577:76:11","statements":[{"expression":{"id":2810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2808,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2794,"src":"11595:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":2809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11605:3:11","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"11595:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2811,"nodeType":"ExpressionStatement","src":"11595:13:11"},{"expression":{"id":2814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2812,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2800,"src":"11626:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":2813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11636:2:11","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11626:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2815,"nodeType":"ExpressionStatement","src":"11626:12:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2818,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2794,"src":"11670:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3634","id":2819,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11679:2:11","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11670:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11684:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11670:15:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2832,"nodeType":"IfStatement","src":"11666:95:11","trueBody":{"id":2831,"nodeType":"Block","src":"11687:74:11","statements":[{"expression":{"id":2825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2823,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2794,"src":"11705:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":2824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11715:2:11","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"11705:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2826,"nodeType":"ExpressionStatement","src":"11705:12:11"},{"expression":{"id":2829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2827,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2800,"src":"11735:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":2828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11745:1:11","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11735:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2830,"nodeType":"ExpressionStatement","src":"11735:11:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2835,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2833,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2794,"src":"11778:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3332","id":2834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11787:2:11","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11778:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11792:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11778:15:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2847,"nodeType":"IfStatement","src":"11774:95:11","trueBody":{"id":2846,"nodeType":"Block","src":"11795:74:11","statements":[{"expression":{"id":2840,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2838,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2794,"src":"11813:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":2839,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11823:2:11","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"11813:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2841,"nodeType":"ExpressionStatement","src":"11813:12:11"},{"expression":{"id":2844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2842,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2800,"src":"11843:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":2843,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11853:1:11","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"11843:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2845,"nodeType":"ExpressionStatement","src":"11843:11:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2848,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2794,"src":"11886:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"3136","id":2849,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11895:2:11","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11886:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11900:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11886:15:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2862,"nodeType":"IfStatement","src":"11882:95:11","trueBody":{"id":2861,"nodeType":"Block","src":"11903:74:11","statements":[{"expression":{"id":2855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2853,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2794,"src":"11921:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":2854,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11931:2:11","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"11921:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2856,"nodeType":"ExpressionStatement","src":"11921:12:11"},{"expression":{"id":2859,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2857,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2800,"src":"11951:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":2858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11961:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"11951:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2860,"nodeType":"ExpressionStatement","src":"11951:11:11"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2863,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2794,"src":"11994:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"38","id":2864,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12003:1:11","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"11994:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":2866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12007:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11994:14:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2873,"nodeType":"IfStatement","src":"11990:64:11","trueBody":{"id":2872,"nodeType":"Block","src":"12010:44:11","statements":[{"expression":{"id":2870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2868,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2800,"src":"12028:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":2869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12038:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12028:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2871,"nodeType":"ExpressionStatement","src":"12028:11:11"}]}}]},{"expression":{"id":2875,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2800,"src":"12080:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2798,"id":2876,"nodeType":"Return","src":"12073:13:11"}]},"documentation":{"id":2792,"nodeType":"StructuredDocumentation","src":"11185:240:11","text":" @dev Return the log in base 256, rounded down, of a positive value.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string."},"id":2878,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"11439:6:11","nodeType":"FunctionDefinition","parameters":{"id":2795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2794,"mutability":"mutable","name":"value","nameLocation":"11454:5:11","nodeType":"VariableDeclaration","scope":2878,"src":"11446:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2793,"name":"uint256","nodeType":"ElementaryTypeName","src":"11446:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11445:15:11"},"returnParameters":{"id":2798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2797,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2878,"src":"11484:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2796,"name":"uint256","nodeType":"ElementaryTypeName","src":"11484:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11483:9:11"},"scope":2918,"src":"11430:663:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2916,"nodeType":"Block","src":"12329:173:11","statements":[{"id":2915,"nodeType":"UncheckedBlock","src":"12339:157:11","statements":[{"assignments":[2890],"declarations":[{"constant":false,"id":2890,"mutability":"mutable","name":"result","nameLocation":"12371:6:11","nodeType":"VariableDeclaration","scope":2915,"src":"12363:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2889,"name":"uint256","nodeType":"ElementaryTypeName","src":"12363:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2894,"initialValue":{"arguments":[{"id":2892,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2881,"src":"12387:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2891,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[2878,2917],"referencedDeclaration":2878,"src":"12380:6:11","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":2893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12380:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12363:30:11"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2913,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2895,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2890,"src":"12414:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"},"id":2899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2896,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2884,"src":"12424:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":2897,"name":"Rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2060,"src":"12436:8:11","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_Rounding_$2060_$","typeString":"type(enum Math.Rounding)"}},"id":2898,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12445:2:11","memberName":"Up","nodeType":"MemberAccess","referencedDeclaration":2058,"src":"12436:11:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"}},"src":"12424:23:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12451:1:11","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":2903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2901,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2890,"src":"12457:6:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"38","id":2902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12466:1:11","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"12457:10:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2904,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12456:12:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12451:17:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2906,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2881,"src":"12471:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12451:25:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12424:52:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":2910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12483:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":2911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"12424:60:11","trueExpression":{"hexValue":"31","id":2909,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12479:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"id":2912,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12423:62:11","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12414:71:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2888,"id":2914,"nodeType":"Return","src":"12407:78:11"}]}]},"documentation":{"id":2879,"nodeType":"StructuredDocumentation","src":"12099:143:11","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":2917,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"12256:6:11","nodeType":"FunctionDefinition","parameters":{"id":2885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2881,"mutability":"mutable","name":"value","nameLocation":"12271:5:11","nodeType":"VariableDeclaration","scope":2917,"src":"12263:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2880,"name":"uint256","nodeType":"ElementaryTypeName","src":"12263:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2884,"mutability":"mutable","name":"rounding","nameLocation":"12287:8:11","nodeType":"VariableDeclaration","scope":2917,"src":"12278:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"},"typeName":{"id":2883,"nodeType":"UserDefinedTypeName","pathNode":{"id":2882,"name":"Rounding","nameLocations":["12278:8:11"],"nodeType":"IdentifierPath","referencedDeclaration":2060,"src":"12278:8:11"},"referencedDeclaration":2060,"src":"12278:8:11","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$2060","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"12262:34:11"},"returnParameters":{"id":2888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2887,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2917,"src":"12320:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2886,"name":"uint256","nodeType":"ElementaryTypeName","src":"12320:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12319:9:11"},"scope":2918,"src":"12247:255:11","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":2919,"src":"202:12302:11","usedErrors":[]}],"src":"103:12402:11"},"id":11}},"contracts":{"@openzeppelin/contracts/token/ERC721/ERC721.sol":{"ERC721":{"abi":[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_62":{"entryPoint":null,"id":62,"parameterSlots":2,"returnSlots":0},"abi_decode_string_fromMemory":{"entryPoint":112,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory":{"entryPoint":287,"id":null,"parameterSlots":2,"returnSlots":2},"array_dataslot_string_storage":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"clean_up_bytearray_end_slots_string_storage":{"entryPoint":453,"id":null,"parameterSlots":3,"returnSlots":0},"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage":{"entryPoint":536,"id":null,"parameterSlots":2,"returnSlots":0},"extract_byte_array_length":{"entryPoint":393,"id":null,"parameterSlots":1,"returnSlots":1},"extract_used_part_and_set_length_of_short_byte_array":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"panic_error_0x41":{"entryPoint":90,"id":null,"parameterSlots":0,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4144:12","statements":[{"nodeType":"YulBlock","src":"6:3:12","statements":[]},{"body":{"nodeType":"YulBlock","src":"46:95:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"63:1:12","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"70:3:12","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"75:10:12","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"66:3:12"},"nodeType":"YulFunctionCall","src":"66:20:12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"56:6:12"},"nodeType":"YulFunctionCall","src":"56:31:12"},"nodeType":"YulExpressionStatement","src":"56:31:12"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"103:1:12","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"106:4:12","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"96:6:12"},"nodeType":"YulFunctionCall","src":"96:15:12"},"nodeType":"YulExpressionStatement","src":"96:15:12"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"127:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"130:4:12","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"120:6:12"},"nodeType":"YulFunctionCall","src":"120:15:12"},"nodeType":"YulExpressionStatement","src":"120:15:12"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"14:127:12"},{"body":{"nodeType":"YulBlock","src":"210:776:12","statements":[{"body":{"nodeType":"YulBlock","src":"259:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"268:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"271:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"261:6:12"},"nodeType":"YulFunctionCall","src":"261:12:12"},"nodeType":"YulExpressionStatement","src":"261:12:12"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"238:6:12"},{"kind":"number","nodeType":"YulLiteral","src":"246:4:12","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"234:3:12"},"nodeType":"YulFunctionCall","src":"234:17:12"},{"name":"end","nodeType":"YulIdentifier","src":"253:3:12"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"230:3:12"},"nodeType":"YulFunctionCall","src":"230:27:12"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"223:6:12"},"nodeType":"YulFunctionCall","src":"223:35:12"},"nodeType":"YulIf","src":"220:55:12"},{"nodeType":"YulVariableDeclaration","src":"284:23:12","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"300:6:12"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"294:5:12"},"nodeType":"YulFunctionCall","src":"294:13:12"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"288:2:12","type":""}]},{"nodeType":"YulVariableDeclaration","src":"316:28:12","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"334:2:12","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"338:1:12","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"330:3:12"},"nodeType":"YulFunctionCall","src":"330:10:12"},{"kind":"number","nodeType":"YulLiteral","src":"342:1:12","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"326:3:12"},"nodeType":"YulFunctionCall","src":"326:18:12"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"320:2:12","type":""}]},{"body":{"nodeType":"YulBlock","src":"367:22:12","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"369:16:12"},"nodeType":"YulFunctionCall","src":"369:18:12"},"nodeType":"YulExpressionStatement","src":"369:18:12"}]},"condition":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"359:2:12"},{"name":"_2","nodeType":"YulIdentifier","src":"363:2:12"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"356:2:12"},"nodeType":"YulFunctionCall","src":"356:10:12"},"nodeType":"YulIf","src":"353:36:12"},{"nodeType":"YulVariableDeclaration","src":"398:17:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"412:2:12","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"408:3:12"},"nodeType":"YulFunctionCall","src":"408:7:12"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"402:2:12","type":""}]},{"nodeType":"YulVariableDeclaration","src":"424:23:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"444:2:12","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"438:5:12"},"nodeType":"YulFunctionCall","src":"438:9:12"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"428:6:12","type":""}]},{"nodeType":"YulVariableDeclaration","src":"456:71:12","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"478:6:12"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"502:2:12"},{"kind":"number","nodeType":"YulLiteral","src":"506:4:12","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"498:3:12"},"nodeType":"YulFunctionCall","src":"498:13:12"},{"name":"_3","nodeType":"YulIdentifier","src":"513:2:12"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"494:3:12"},"nodeType":"YulFunctionCall","src":"494:22:12"},{"kind":"number","nodeType":"YulLiteral","src":"518:2:12","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"490:3:12"},"nodeType":"YulFunctionCall","src":"490:31:12"},{"name":"_3","nodeType":"YulIdentifier","src":"523:2:12"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"486:3:12"},"nodeType":"YulFunctionCall","src":"486:40:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"474:3:12"},"nodeType":"YulFunctionCall","src":"474:53:12"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"460:10:12","type":""}]},{"body":{"nodeType":"YulBlock","src":"586:22:12","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"588:16:12"},"nodeType":"YulFunctionCall","src":"588:18:12"},"nodeType":"YulExpressionStatement","src":"588:18:12"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"545:10:12"},{"name":"_2","nodeType":"YulIdentifier","src":"557:2:12"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"542:2:12"},"nodeType":"YulFunctionCall","src":"542:18:12"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"565:10:12"},{"name":"memPtr","nodeType":"YulIdentifier","src":"577:6:12"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"562:2:12"},"nodeType":"YulFunctionCall","src":"562:22:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"539:2:12"},"nodeType":"YulFunctionCall","src":"539:46:12"},"nodeType":"YulIf","src":"536:72:12"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"624:2:12","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"628:10:12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"617:6:12"},"nodeType":"YulFunctionCall","src":"617:22:12"},"nodeType":"YulExpressionStatement","src":"617:22:12"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"655:6:12"},{"name":"_1","nodeType":"YulIdentifier","src":"663:2:12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"648:6:12"},"nodeType":"YulFunctionCall","src":"648:18:12"},"nodeType":"YulExpressionStatement","src":"648:18:12"},{"nodeType":"YulVariableDeclaration","src":"675:14:12","value":{"kind":"number","nodeType":"YulLiteral","src":"685:4:12","type":"","value":"0x20"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"679:2:12","type":""}]},{"body":{"nodeType":"YulBlock","src":"735:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"744:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"747:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"737:6:12"},"nodeType":"YulFunctionCall","src":"737:12:12"},"nodeType":"YulExpressionStatement","src":"737:12:12"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"712:6:12"},{"name":"_1","nodeType":"YulIdentifier","src":"720:2:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"708:3:12"},"nodeType":"YulFunctionCall","src":"708:15:12"},{"name":"_4","nodeType":"YulIdentifier","src":"725:2:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"704:3:12"},"nodeType":"YulFunctionCall","src":"704:24:12"},{"name":"end","nodeType":"YulIdentifier","src":"730:3:12"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"701:2:12"},"nodeType":"YulFunctionCall","src":"701:33:12"},"nodeType":"YulIf","src":"698:53:12"},{"nodeType":"YulVariableDeclaration","src":"760:10:12","value":{"kind":"number","nodeType":"YulLiteral","src":"769:1:12","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"764:1:12","type":""}]},{"body":{"nodeType":"YulBlock","src":"825:87:12","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"854:6:12"},{"name":"i","nodeType":"YulIdentifier","src":"862:1:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"850:3:12"},"nodeType":"YulFunctionCall","src":"850:14:12"},{"name":"_4","nodeType":"YulIdentifier","src":"866:2:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"846:3:12"},"nodeType":"YulFunctionCall","src":"846:23:12"},{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"885:6:12"},{"name":"i","nodeType":"YulIdentifier","src":"893:1:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"881:3:12"},"nodeType":"YulFunctionCall","src":"881:14:12"},{"name":"_4","nodeType":"YulIdentifier","src":"897:2:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"877:3:12"},"nodeType":"YulFunctionCall","src":"877:23:12"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"871:5:12"},"nodeType":"YulFunctionCall","src":"871:30:12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"839:6:12"},"nodeType":"YulFunctionCall","src":"839:63:12"},"nodeType":"YulExpressionStatement","src":"839:63:12"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"790:1:12"},{"name":"_1","nodeType":"YulIdentifier","src":"793:2:12"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"787:2:12"},"nodeType":"YulFunctionCall","src":"787:9:12"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"797:19:12","statements":[{"nodeType":"YulAssignment","src":"799:15:12","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"808:1:12"},{"name":"_4","nodeType":"YulIdentifier","src":"811:2:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"804:3:12"},"nodeType":"YulFunctionCall","src":"804:10:12"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"799:1:12"}]}]},"pre":{"nodeType":"YulBlock","src":"783:3:12","statements":[]},"src":"779:133:12"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"936:6:12"},{"name":"_1","nodeType":"YulIdentifier","src":"944:2:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"932:3:12"},"nodeType":"YulFunctionCall","src":"932:15:12"},{"name":"_4","nodeType":"YulIdentifier","src":"949:2:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"928:3:12"},"nodeType":"YulFunctionCall","src":"928:24:12"},{"kind":"number","nodeType":"YulLiteral","src":"954:1:12","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"921:6:12"},"nodeType":"YulFunctionCall","src":"921:35:12"},"nodeType":"YulExpressionStatement","src":"921:35:12"},{"nodeType":"YulAssignment","src":"965:15:12","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"974:6:12"},"variableNames":[{"name":"array","nodeType":"YulIdentifier","src":"965:5:12"}]}]},"name":"abi_decode_string_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"184:6:12","type":""},{"name":"end","nodeType":"YulTypedName","src":"192:3:12","type":""}],"returnVariables":[{"name":"array","nodeType":"YulTypedName","src":"200:5:12","type":""}],"src":"146:840:12"},{"body":{"nodeType":"YulBlock","src":"1109:444:12","statements":[{"body":{"nodeType":"YulBlock","src":"1155:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1164:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1167:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1157:6:12"},"nodeType":"YulFunctionCall","src":"1157:12:12"},"nodeType":"YulExpressionStatement","src":"1157:12:12"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1130:7:12"},{"name":"headStart","nodeType":"YulIdentifier","src":"1139:9:12"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1126:3:12"},"nodeType":"YulFunctionCall","src":"1126:23:12"},{"kind":"number","nodeType":"YulLiteral","src":"1151:2:12","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1122:3:12"},"nodeType":"YulFunctionCall","src":"1122:32:12"},"nodeType":"YulIf","src":"1119:52:12"},{"nodeType":"YulVariableDeclaration","src":"1180:30:12","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1200:9:12"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1194:5:12"},"nodeType":"YulFunctionCall","src":"1194:16:12"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"1184:6:12","type":""}]},{"nodeType":"YulVariableDeclaration","src":"1219:28:12","value":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1237:2:12","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"1241:1:12","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1233:3:12"},"nodeType":"YulFunctionCall","src":"1233:10:12"},{"kind":"number","nodeType":"YulLiteral","src":"1245:1:12","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1229:3:12"},"nodeType":"YulFunctionCall","src":"1229:18:12"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"1223:2:12","type":""}]},{"body":{"nodeType":"YulBlock","src":"1274:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1283:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1286:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1276:6:12"},"nodeType":"YulFunctionCall","src":"1276:12:12"},"nodeType":"YulExpressionStatement","src":"1276:12:12"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1262:6:12"},{"name":"_1","nodeType":"YulIdentifier","src":"1270:2:12"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1259:2:12"},"nodeType":"YulFunctionCall","src":"1259:14:12"},"nodeType":"YulIf","src":"1256:34:12"},{"nodeType":"YulAssignment","src":"1299:71:12","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1342:9:12"},{"name":"offset","nodeType":"YulIdentifier","src":"1353:6:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1338:3:12"},"nodeType":"YulFunctionCall","src":"1338:22:12"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1362:7:12"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1309:28:12"},"nodeType":"YulFunctionCall","src":"1309:61:12"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1299:6:12"}]},{"nodeType":"YulVariableDeclaration","src":"1379:41:12","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1405:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"1416:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1401:3:12"},"nodeType":"YulFunctionCall","src":"1401:18:12"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1395:5:12"},"nodeType":"YulFunctionCall","src":"1395:25:12"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1383:8:12","type":""}]},{"body":{"nodeType":"YulBlock","src":"1449:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1458:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1461:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1451:6:12"},"nodeType":"YulFunctionCall","src":"1451:12:12"},"nodeType":"YulExpressionStatement","src":"1451:12:12"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1435:8:12"},{"name":"_1","nodeType":"YulIdentifier","src":"1445:2:12"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1432:2:12"},"nodeType":"YulFunctionCall","src":"1432:16:12"},"nodeType":"YulIf","src":"1429:36:12"},{"nodeType":"YulAssignment","src":"1474:73:12","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1517:9:12"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1528:8:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1513:3:12"},"nodeType":"YulFunctionCall","src":"1513:24:12"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1539:7:12"}],"functionName":{"name":"abi_decode_string_fromMemory","nodeType":"YulIdentifier","src":"1484:28:12"},"nodeType":"YulFunctionCall","src":"1484:63:12"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1474:6:12"}]}]},"name":"abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1067:9:12","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1078:7:12","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1090:6:12","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1098:6:12","type":""}],"src":"991:562:12"},{"body":{"nodeType":"YulBlock","src":"1613:325:12","statements":[{"nodeType":"YulAssignment","src":"1623:22:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1637:1:12","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"1640:4:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"1633:3:12"},"nodeType":"YulFunctionCall","src":"1633:12:12"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1623:6:12"}]},{"nodeType":"YulVariableDeclaration","src":"1654:38:12","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"1684:4:12"},{"kind":"number","nodeType":"YulLiteral","src":"1690:1:12","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1680:3:12"},"nodeType":"YulFunctionCall","src":"1680:12:12"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"1658:18:12","type":""}]},{"body":{"nodeType":"YulBlock","src":"1731:31:12","statements":[{"nodeType":"YulAssignment","src":"1733:27:12","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1747:6:12"},{"kind":"number","nodeType":"YulLiteral","src":"1755:4:12","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1743:3:12"},"nodeType":"YulFunctionCall","src":"1743:17:12"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"1733:6:12"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1711:18:12"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1704:6:12"},"nodeType":"YulFunctionCall","src":"1704:26:12"},"nodeType":"YulIf","src":"1701:61:12"},{"body":{"nodeType":"YulBlock","src":"1821:111:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1842:1:12","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1849:3:12","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"1854:10:12","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"1845:3:12"},"nodeType":"YulFunctionCall","src":"1845:20:12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1835:6:12"},"nodeType":"YulFunctionCall","src":"1835:31:12"},"nodeType":"YulExpressionStatement","src":"1835:31:12"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1886:1:12","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1889:4:12","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1879:6:12"},"nodeType":"YulFunctionCall","src":"1879:15:12"},"nodeType":"YulExpressionStatement","src":"1879:15:12"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1914:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1917:4:12","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1907:6:12"},"nodeType":"YulFunctionCall","src":"1907:15:12"},"nodeType":"YulExpressionStatement","src":"1907:15:12"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"1777:18:12"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1800:6:12"},{"kind":"number","nodeType":"YulLiteral","src":"1808:2:12","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"1797:2:12"},"nodeType":"YulFunctionCall","src":"1797:14:12"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1774:2:12"},"nodeType":"YulFunctionCall","src":"1774:38:12"},"nodeType":"YulIf","src":"1771:161:12"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"1593:4:12","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"1602:6:12","type":""}],"src":"1558:380:12"},{"body":{"nodeType":"YulBlock","src":"1999:65:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2016:1:12","type":"","value":"0"},{"name":"ptr","nodeType":"YulIdentifier","src":"2019:3:12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2009:6:12"},"nodeType":"YulFunctionCall","src":"2009:14:12"},"nodeType":"YulExpressionStatement","src":"2009:14:12"},{"nodeType":"YulAssignment","src":"2032:26:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2050:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2053:4:12","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2040:9:12"},"nodeType":"YulFunctionCall","src":"2040:18:12"},"variableNames":[{"name":"data","nodeType":"YulIdentifier","src":"2032:4:12"}]}]},"name":"array_dataslot_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"ptr","nodeType":"YulTypedName","src":"1982:3:12","type":""}],"returnVariables":[{"name":"data","nodeType":"YulTypedName","src":"1990:4:12","type":""}],"src":"1943:121:12"},{"body":{"nodeType":"YulBlock","src":"2150:464:12","statements":[{"body":{"nodeType":"YulBlock","src":"2183:425:12","statements":[{"nodeType":"YulVariableDeclaration","src":"2197:11:12","value":{"kind":"number","nodeType":"YulLiteral","src":"2207:1:12","type":"","value":"0"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2201:2:12","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2228:2:12"},{"name":"array","nodeType":"YulIdentifier","src":"2232:5:12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2221:6:12"},"nodeType":"YulFunctionCall","src":"2221:17:12"},"nodeType":"YulExpressionStatement","src":"2221:17:12"},{"nodeType":"YulVariableDeclaration","src":"2251:31:12","value":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2273:2:12"},{"kind":"number","nodeType":"YulLiteral","src":"2277:4:12","type":"","value":"0x20"}],"functionName":{"name":"keccak256","nodeType":"YulIdentifier","src":"2263:9:12"},"nodeType":"YulFunctionCall","src":"2263:19:12"},"variables":[{"name":"data","nodeType":"YulTypedName","src":"2255:4:12","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2295:57:12","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2318:4:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2328:1:12","type":"","value":"5"},{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2335:10:12"},{"kind":"number","nodeType":"YulLiteral","src":"2347:2:12","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2331:3:12"},"nodeType":"YulFunctionCall","src":"2331:19:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2324:3:12"},"nodeType":"YulFunctionCall","src":"2324:27:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2314:3:12"},"nodeType":"YulFunctionCall","src":"2314:38:12"},"variables":[{"name":"deleteStart","nodeType":"YulTypedName","src":"2299:11:12","type":""}]},{"body":{"nodeType":"YulBlock","src":"2389:23:12","statements":[{"nodeType":"YulAssignment","src":"2391:19:12","value":{"name":"data","nodeType":"YulIdentifier","src":"2406:4:12"},"variableNames":[{"name":"deleteStart","nodeType":"YulIdentifier","src":"2391:11:12"}]}]},"condition":{"arguments":[{"name":"startIndex","nodeType":"YulIdentifier","src":"2371:10:12"},{"kind":"number","nodeType":"YulLiteral","src":"2383:4:12","type":"","value":"0x20"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2368:2:12"},"nodeType":"YulFunctionCall","src":"2368:20:12"},"nodeType":"YulIf","src":"2365:47:12"},{"nodeType":"YulVariableDeclaration","src":"2425:41:12","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2439:4:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2449:1:12","type":"","value":"5"},{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2456:3:12"},{"kind":"number","nodeType":"YulLiteral","src":"2461:2:12","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2452:3:12"},"nodeType":"YulFunctionCall","src":"2452:12:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2445:3:12"},"nodeType":"YulFunctionCall","src":"2445:20:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2435:3:12"},"nodeType":"YulFunctionCall","src":"2435:31:12"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"2429:2:12","type":""}]},{"nodeType":"YulVariableDeclaration","src":"2479:24:12","value":{"name":"deleteStart","nodeType":"YulIdentifier","src":"2492:11:12"},"variables":[{"name":"start","nodeType":"YulTypedName","src":"2483:5:12","type":""}]},{"body":{"nodeType":"YulBlock","src":"2577:21:12","statements":[{"expression":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2586:5:12"},{"name":"_1","nodeType":"YulIdentifier","src":"2593:2:12"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"2579:6:12"},"nodeType":"YulFunctionCall","src":"2579:17:12"},"nodeType":"YulExpressionStatement","src":"2579:17:12"}]},"condition":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2527:5:12"},{"name":"_2","nodeType":"YulIdentifier","src":"2534:2:12"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"2524:2:12"},"nodeType":"YulFunctionCall","src":"2524:13:12"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"2538:26:12","statements":[{"nodeType":"YulAssignment","src":"2540:22:12","value":{"arguments":[{"name":"start","nodeType":"YulIdentifier","src":"2553:5:12"},{"kind":"number","nodeType":"YulLiteral","src":"2560:1:12","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2549:3:12"},"nodeType":"YulFunctionCall","src":"2549:13:12"},"variableNames":[{"name":"start","nodeType":"YulIdentifier","src":"2540:5:12"}]}]},"pre":{"nodeType":"YulBlock","src":"2520:3:12","statements":[]},"src":"2516:82:12"}]},"condition":{"arguments":[{"name":"len","nodeType":"YulIdentifier","src":"2166:3:12"},{"kind":"number","nodeType":"YulLiteral","src":"2171:2:12","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2163:2:12"},"nodeType":"YulFunctionCall","src":"2163:11:12"},"nodeType":"YulIf","src":"2160:448:12"}]},"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"array","nodeType":"YulTypedName","src":"2122:5:12","type":""},{"name":"len","nodeType":"YulTypedName","src":"2129:3:12","type":""},{"name":"startIndex","nodeType":"YulTypedName","src":"2134:10:12","type":""}],"src":"2069:545:12"},{"body":{"nodeType":"YulBlock","src":"2704:81:12","statements":[{"nodeType":"YulAssignment","src":"2714:65:12","value":{"arguments":[{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"2729:4:12"},{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2747:1:12","type":"","value":"3"},{"name":"len","nodeType":"YulIdentifier","src":"2750:3:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2743:3:12"},"nodeType":"YulFunctionCall","src":"2743:11:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2760:1:12","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2756:3:12"},"nodeType":"YulFunctionCall","src":"2756:6:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"2739:3:12"},"nodeType":"YulFunctionCall","src":"2739:24:12"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"2735:3:12"},"nodeType":"YulFunctionCall","src":"2735:29:12"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2725:3:12"},"nodeType":"YulFunctionCall","src":"2725:40:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2771:1:12","type":"","value":"1"},{"name":"len","nodeType":"YulIdentifier","src":"2774:3:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2767:3:12"},"nodeType":"YulFunctionCall","src":"2767:11:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"2722:2:12"},"nodeType":"YulFunctionCall","src":"2722:57:12"},"variableNames":[{"name":"used","nodeType":"YulIdentifier","src":"2714:4:12"}]}]},"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"2681:4:12","type":""},{"name":"len","nodeType":"YulTypedName","src":"2687:3:12","type":""}],"returnVariables":[{"name":"used","nodeType":"YulTypedName","src":"2695:4:12","type":""}],"src":"2619:166:12"},{"body":{"nodeType":"YulBlock","src":"2886:1256:12","statements":[{"nodeType":"YulVariableDeclaration","src":"2896:24:12","value":{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"2916:3:12"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2910:5:12"},"nodeType":"YulFunctionCall","src":"2910:10:12"},"variables":[{"name":"newLen","nodeType":"YulTypedName","src":"2900:6:12","type":""}]},{"body":{"nodeType":"YulBlock","src":"2963:22:12","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"2965:16:12"},"nodeType":"YulFunctionCall","src":"2965:18:12"},"nodeType":"YulExpressionStatement","src":"2965:18:12"}]},"condition":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"2935:6:12"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2951:2:12","type":"","value":"64"},{"kind":"number","nodeType":"YulLiteral","src":"2955:1:12","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"2947:3:12"},"nodeType":"YulFunctionCall","src":"2947:10:12"},{"kind":"number","nodeType":"YulLiteral","src":"2959:1:12","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2943:3:12"},"nodeType":"YulFunctionCall","src":"2943:18:12"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2932:2:12"},"nodeType":"YulFunctionCall","src":"2932:30:12"},"nodeType":"YulIf","src":"2929:56:12"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3038:4:12"},{"arguments":[{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3076:4:12"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"3070:5:12"},"nodeType":"YulFunctionCall","src":"3070:11:12"}],"functionName":{"name":"extract_byte_array_length","nodeType":"YulIdentifier","src":"3044:25:12"},"nodeType":"YulFunctionCall","src":"3044:38:12"},{"name":"newLen","nodeType":"YulIdentifier","src":"3084:6:12"}],"functionName":{"name":"clean_up_bytearray_end_slots_string_storage","nodeType":"YulIdentifier","src":"2994:43:12"},"nodeType":"YulFunctionCall","src":"2994:97:12"},"nodeType":"YulExpressionStatement","src":"2994:97:12"},{"nodeType":"YulVariableDeclaration","src":"3100:18:12","value":{"kind":"number","nodeType":"YulLiteral","src":"3117:1:12","type":"","value":"0"},"variables":[{"name":"srcOffset","nodeType":"YulTypedName","src":"3104:9:12","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3127:23:12","value":{"kind":"number","nodeType":"YulLiteral","src":"3146:4:12","type":"","value":"0x20"},"variables":[{"name":"srcOffset_1","nodeType":"YulTypedName","src":"3131:11:12","type":""}]},{"nodeType":"YulAssignment","src":"3159:24:12","value":{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3172:11:12"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3159:9:12"}]},{"cases":[{"body":{"nodeType":"YulBlock","src":"3229:656:12","statements":[{"nodeType":"YulVariableDeclaration","src":"3243:35:12","value":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3262:6:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3274:2:12","type":"","value":"31"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3270:3:12"},"nodeType":"YulFunctionCall","src":"3270:7:12"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3258:3:12"},"nodeType":"YulFunctionCall","src":"3258:20:12"},"variables":[{"name":"loopEnd","nodeType":"YulTypedName","src":"3247:7:12","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3291:49:12","value":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3335:4:12"}],"functionName":{"name":"array_dataslot_string_storage","nodeType":"YulIdentifier","src":"3305:29:12"},"nodeType":"YulFunctionCall","src":"3305:35:12"},"variables":[{"name":"dstPtr","nodeType":"YulTypedName","src":"3295:6:12","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3353:10:12","value":{"kind":"number","nodeType":"YulLiteral","src":"3362:1:12","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3357:1:12","type":""}]},{"body":{"nodeType":"YulBlock","src":"3440:172:12","statements":[{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3465:6:12"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3483:3:12"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3488:9:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3479:3:12"},"nodeType":"YulFunctionCall","src":"3479:19:12"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3473:5:12"},"nodeType":"YulFunctionCall","src":"3473:26:12"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3458:6:12"},"nodeType":"YulFunctionCall","src":"3458:42:12"},"nodeType":"YulExpressionStatement","src":"3458:42:12"},{"nodeType":"YulAssignment","src":"3517:24:12","value":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3531:6:12"},{"kind":"number","nodeType":"YulLiteral","src":"3539:1:12","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3527:3:12"},"nodeType":"YulFunctionCall","src":"3527:14:12"},"variableNames":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3517:6:12"}]},{"nodeType":"YulAssignment","src":"3558:40:12","value":{"arguments":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3575:9:12"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3586:11:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3571:3:12"},"nodeType":"YulFunctionCall","src":"3571:27:12"},"variableNames":[{"name":"srcOffset","nodeType":"YulIdentifier","src":"3558:9:12"}]}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3387:1:12"},{"name":"loopEnd","nodeType":"YulIdentifier","src":"3390:7:12"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3384:2:12"},"nodeType":"YulFunctionCall","src":"3384:14:12"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3399:28:12","statements":[{"nodeType":"YulAssignment","src":"3401:24:12","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3410:1:12"},{"name":"srcOffset_1","nodeType":"YulIdentifier","src":"3413:11:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3406:3:12"},"nodeType":"YulFunctionCall","src":"3406:19:12"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3401:1:12"}]}]},"pre":{"nodeType":"YulBlock","src":"3380:3:12","statements":[]},"src":"3376:236:12"},{"body":{"nodeType":"YulBlock","src":"3660:166:12","statements":[{"nodeType":"YulVariableDeclaration","src":"3678:43:12","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3705:3:12"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"3710:9:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:12"},"nodeType":"YulFunctionCall","src":"3701:19:12"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3695:5:12"},"nodeType":"YulFunctionCall","src":"3695:26:12"},"variables":[{"name":"lastValue","nodeType":"YulTypedName","src":"3682:9:12","type":""}]},{"expression":{"arguments":[{"name":"dstPtr","nodeType":"YulIdentifier","src":"3745:6:12"},{"arguments":[{"name":"lastValue","nodeType":"YulIdentifier","src":"3757:9:12"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3784:1:12","type":"","value":"3"},{"name":"newLen","nodeType":"YulIdentifier","src":"3787:6:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3780:3:12"},"nodeType":"YulFunctionCall","src":"3780:14:12"},{"kind":"number","nodeType":"YulLiteral","src":"3796:3:12","type":"","value":"248"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3776:3:12"},"nodeType":"YulFunctionCall","src":"3776:24:12"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3806:1:12","type":"","value":"0"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3802:3:12"},"nodeType":"YulFunctionCall","src":"3802:6:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"3772:3:12"},"nodeType":"YulFunctionCall","src":"3772:37:12"}],"functionName":{"name":"not","nodeType":"YulIdentifier","src":"3768:3:12"},"nodeType":"YulFunctionCall","src":"3768:42:12"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"3753:3:12"},"nodeType":"YulFunctionCall","src":"3753:58:12"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3738:6:12"},"nodeType":"YulFunctionCall","src":"3738:74:12"},"nodeType":"YulExpressionStatement","src":"3738:74:12"}]},"condition":{"arguments":[{"name":"loopEnd","nodeType":"YulIdentifier","src":"3631:7:12"},{"name":"newLen","nodeType":"YulIdentifier","src":"3640:6:12"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3628:2:12"},"nodeType":"YulFunctionCall","src":"3628:19:12"},"nodeType":"YulIf","src":"3625:201:12"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"3846:4:12"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3860:1:12","type":"","value":"1"},{"name":"newLen","nodeType":"YulIdentifier","src":"3863:6:12"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"3856:3:12"},"nodeType":"YulFunctionCall","src":"3856:14:12"},{"kind":"number","nodeType":"YulLiteral","src":"3872:1:12","type":"","value":"1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3852:3:12"},"nodeType":"YulFunctionCall","src":"3852:22:12"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"3839:6:12"},"nodeType":"YulFunctionCall","src":"3839:36:12"},"nodeType":"YulExpressionStatement","src":"3839:36:12"}]},"nodeType":"YulCase","src":"3222:663:12","value":{"kind":"number","nodeType":"YulLiteral","src":"3227:1:12","type":"","value":"1"}},{"body":{"nodeType":"YulBlock","src":"3902:234:12","statements":[{"nodeType":"YulVariableDeclaration","src":"3916:14:12","value":{"kind":"number","nodeType":"YulLiteral","src":"3929:1:12","type":"","value":"0"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3920:5:12","type":""}]},{"body":{"nodeType":"YulBlock","src":"3965:67:12","statements":[{"nodeType":"YulAssignment","src":"3983:35:12","value":{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4002:3:12"},{"name":"srcOffset","nodeType":"YulIdentifier","src":"4007:9:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3998:3:12"},"nodeType":"YulFunctionCall","src":"3998:19:12"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3992:5:12"},"nodeType":"YulFunctionCall","src":"3992:26:12"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"3983:5:12"}]}]},"condition":{"name":"newLen","nodeType":"YulIdentifier","src":"3946:6:12"},"nodeType":"YulIf","src":"3943:89:12"},{"expression":{"arguments":[{"name":"slot","nodeType":"YulIdentifier","src":"4052:4:12"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"4111:5:12"},{"name":"newLen","nodeType":"YulIdentifier","src":"4118:6:12"}],"functionName":{"name":"extract_used_part_and_set_length_of_short_byte_array","nodeType":"YulIdentifier","src":"4058:52:12"},"nodeType":"YulFunctionCall","src":"4058:67:12"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"4045:6:12"},"nodeType":"YulFunctionCall","src":"4045:81:12"},"nodeType":"YulExpressionStatement","src":"4045:81:12"}]},"nodeType":"YulCase","src":"3894:242:12","value":"default"}],"expression":{"arguments":[{"name":"newLen","nodeType":"YulIdentifier","src":"3202:6:12"},{"kind":"number","nodeType":"YulLiteral","src":"3210:2:12","type":"","value":"31"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3199:2:12"},"nodeType":"YulFunctionCall","src":"3199:14:12"},"nodeType":"YulSwitch","src":"3192:944:12"}]},"name":"copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage","nodeType":"YulFunctionDefinition","parameters":[{"name":"slot","nodeType":"YulTypedName","src":"2871:4:12","type":""},{"name":"src","nodeType":"YulTypedName","src":"2877:3:12","type":""}],"src":"2790:1352:12"}]},"contents":"{\n    { }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_string_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := mload(offset)\n        let _2 := sub(shl(64, 1), 1)\n        if gt(_1, _2) { panic_error_0x41() }\n        let _3 := not(31)\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n        if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _1)\n        let _4 := 0x20\n        if gt(add(add(offset, _1), _4), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, _1) { i := add(i, _4) }\n        {\n            mstore(add(add(memPtr, i), _4), mload(add(add(offset, i), _4)))\n        }\n        mstore(add(add(memPtr, _1), _4), 0)\n        array := memPtr\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := mload(headStart)\n        let _1 := sub(shl(64, 1), 1)\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_string_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        value1 := abi_decode_string_fromMemory(add(headStart, offset_1), dataEnd)\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function array_dataslot_string_storage(ptr) -> data\n    {\n        mstore(0, ptr)\n        data := keccak256(0, 0x20)\n    }\n    function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n    {\n        if gt(len, 31)\n        {\n            let _1 := 0\n            mstore(_1, array)\n            let data := keccak256(_1, 0x20)\n            let deleteStart := add(data, shr(5, add(startIndex, 31)))\n            if lt(startIndex, 0x20) { deleteStart := data }\n            let _2 := add(data, shr(5, add(len, 31)))\n            let start := deleteStart\n            for { } lt(start, _2) { start := add(start, 1) }\n            { sstore(start, _1) }\n        }\n    }\n    function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n    {\n        used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n    }\n    function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n    {\n        let newLen := mload(src)\n        if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n        clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n        let srcOffset := 0\n        let srcOffset_1 := 0x20\n        srcOffset := srcOffset_1\n        switch gt(newLen, 31)\n        case 1 {\n            let loopEnd := and(newLen, not(31))\n            let dstPtr := array_dataslot_string_storage(slot)\n            let i := 0\n            for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n            {\n                sstore(dstPtr, mload(add(src, srcOffset)))\n                dstPtr := add(dstPtr, 1)\n                srcOffset := add(srcOffset, srcOffset_1)\n            }\n            if lt(loopEnd, newLen)\n            {\n                let lastValue := mload(add(src, srcOffset))\n                sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n            }\n            sstore(slot, add(shl(1, newLen), 1))\n        }\n        default {\n            let value := 0\n            if newLen\n            {\n                value := mload(add(src, srcOffset))\n            }\n            sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n        }\n    }\n}","id":12,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b50604051620017b2380380620017b283398101604081905262000034916200011f565b600062000042838262000218565b50600162000051828262000218565b505050620002e4565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200008257600080fd5b81516001600160401b03808211156200009f576200009f6200005a565b604051601f8301601f19908116603f01168101908282118183101715620000ca57620000ca6200005a565b81604052838152602092508683858801011115620000e757600080fd5b600091505b838210156200010b5785820183015181830184015290820190620000ec565b600093810190920192909252949350505050565b600080604083850312156200013357600080fd5b82516001600160401b03808211156200014b57600080fd5b620001598683870162000070565b935060208501519150808211156200017057600080fd5b506200017f8582860162000070565b9150509250929050565b600181811c908216806200019e57607f821691505b602082108103620001bf57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200021357600081815260208120601f850160051c81016020861015620001ee5750805b601f850160051c820191505b818110156200020f57828155600101620001fa565b5050505b505050565b81516001600160401b038111156200023457620002346200005a565b6200024c8162000245845462000189565b84620001c5565b602080601f8311600181146200028457600084156200026b5750858301515b600019600386901b1c1916600185901b1785556200020f565b600085815260208120601f198616915b82811015620002b55788860151825594840194600190910190840162000294565b5085821015620002d45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6114be80620002f46000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101c3578063b88d4fde146101d6578063c87b56dd146101e9578063e985e9c5146101fc57600080fd5b80636352211e1461018757806370a082311461019a57806395d89b41146101bb57600080fd5b8063095ea7b3116100bd578063095ea7b31461014c57806323b872dd1461016157806342842e0e1461017457600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f23660046110f3565b610238565b60405190151581526020015b60405180910390f35b61011461031d565b6040516101039190611160565b61013461012f366004611173565b6103af565b6040516001600160a01b039091168152602001610103565b61015f61015a3660046111a8565b6103d6565b005b61015f61016f3660046111d2565b61052a565b61015f6101823660046111d2565b6105b1565b610134610195366004611173565b6105cc565b6101ad6101a836600461120e565b610631565b604051908152602001610103565b6101146106cb565b61015f6101d1366004611229565b6106da565b61015f6101e436600461127b565b6106e9565b6101146101f7366004611173565b610777565b6100f761020a366004611357565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102cb57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061031757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606000805461032c9061138a565b80601f01602080910402602001604051908101604052809291908181526020018280546103589061138a565b80156103a55780601f1061037a576101008083540402835291602001916103a5565b820191906000526020600020905b81548152906001019060200180831161038857829003601f168201915b5050505050905090565b60006103ba826107eb565b506000908152600460205260409020546001600160a01b031690565b60006103e1826105cc565b9050806001600160a01b0316836001600160a01b03160361046f5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b336001600160a01b03821614806104a957506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b61051b5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610466565b6105258383610852565b505050565b61053433826108d8565b6105a65760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401610466565b610525838383610957565b610525838383604051806020016040528060008152506106e9565b6000818152600260205260408120546001600160a01b0316806103175760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610466565b60006001600160a01b0382166106af5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610466565b506001600160a01b031660009081526003602052604090205490565b60606001805461032c9061138a565b6106e5338383610ba5565b5050565b6106f333836108d8565b6107655760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401610466565b61077184848484610c91565b50505050565b6060610782826107eb565b600061079960408051602081019091526000815290565b905060008151116107b957604051806020016040528060008152506107e4565b806107c384610d1a565b6040516020016107d49291906113c4565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b031661084f5760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610466565b50565b600081815260046020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416908117909155819061089f826105cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806108e4836105cc565b9050806001600160a01b0316846001600160a01b0316148061092b57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b8061094f5750836001600160a01b0316610944846103af565b6001600160a01b0316145b949350505050565b826001600160a01b031661096a826105cc565b6001600160a01b0316146109e65760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610466565b6001600160a01b038216610a615760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610466565b610a6e8383836001610dba565b826001600160a01b0316610a81826105cc565b6001600160a01b031614610afd5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610466565b600081815260046020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031603610c065760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610466565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610c9c848484610957565b610ca884848484610e42565b6107715760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610466565b60606000610d2783610fe3565b600101905060008167ffffffffffffffff811115610d4757610d47611265565b6040519080825280601f01601f191660200182016040528015610d71576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610d7b57509392505050565b6001811115610771576001600160a01b03841615610e00576001600160a01b03841660009081526003602052604081208054839290610dfa908490611409565b90915550505b6001600160a01b03831615610771576001600160a01b03831660009081526003602052604081208054839290610e3790849061141c565b909155505050505050565b60006001600160a01b0384163b15610fd8576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a0290610e9f90339089908890889060040161142f565b6020604051808303816000875af1925050508015610eda575060408051601f3d908101601f19168201909252610ed79181019061146b565b60015b610f8d573d808015610f08576040519150601f19603f3d011682016040523d82523d6000602084013e610f0d565b606091505b508051600003610f855760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610466565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a020000000000000000000000000000000000000000000000000000000014905061094f565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061102c577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611058576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061107657662386f26fc10000830492506010015b6305f5e100831061108e576305f5e100830492506008015b61271083106110a257612710830492506004015b606483106110b4576064830492506002015b600a83106103175760010192915050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461084f57600080fd5b60006020828403121561110557600080fd5b81356107e4816110c5565b60005b8381101561112b578181015183820152602001611113565b50506000910152565b6000815180845261114c816020860160208601611110565b601f01601f19169290920160200192915050565b6020815260006107e46020830184611134565b60006020828403121561118557600080fd5b5035919050565b80356001600160a01b03811681146111a357600080fd5b919050565b600080604083850312156111bb57600080fd5b6111c48361118c565b946020939093013593505050565b6000806000606084860312156111e757600080fd5b6111f08461118c565b92506111fe6020850161118c565b9150604084013590509250925092565b60006020828403121561122057600080fd5b6107e48261118c565b6000806040838503121561123c57600080fd5b6112458361118c565b91506020830135801515811461125a57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561129157600080fd5b61129a8561118c565b93506112a86020860161118c565b925060408501359150606085013567ffffffffffffffff808211156112cc57600080fd5b818701915087601f8301126112e057600080fd5b8135818111156112f2576112f2611265565b604051601f8201601f19908116603f0116810190838211818310171561131a5761131a611265565b816040528281528a602084870101111561133357600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561136a57600080fd5b6113738361118c565b91506113816020840161118c565b90509250929050565b600181811c9082168061139e57607f821691505b6020821081036113be57634e487b7160e01b600052602260045260246000fd5b50919050565b600083516113d6818460208801611110565b8351908301906113ea818360208801611110565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610317576103176113f3565b80820180821115610317576103176113f3565b60006001600160a01b038087168352808616602084015250836040830152608060608301526114616080830184611134565b9695505050505050565b60006020828403121561147d57600080fd5b81516107e4816110c556fea2646970667358221220ecc078c6139c732eb51f26627972b6cdd1231665b2bec499233b1089304b1ebe64736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x17B2 CODESIZE SUB DUP1 PUSH3 0x17B2 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x11F JUMP JUMPDEST PUSH1 0x0 PUSH3 0x42 DUP4 DUP3 PUSH3 0x218 JUMP JUMPDEST POP PUSH1 0x1 PUSH3 0x51 DUP3 DUP3 PUSH3 0x218 JUMP JUMPDEST POP POP POP PUSH3 0x2E4 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH3 0x82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x9F JUMPI PUSH3 0x9F PUSH3 0x5A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0xCA JUMPI PUSH3 0xCA PUSH3 0x5A JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 SWAP3 POP DUP7 DUP4 DUP6 DUP9 ADD ADD GT ISZERO PUSH3 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP4 DUP3 LT ISZERO PUSH3 0x10B JUMPI DUP6 DUP3 ADD DUP4 ADD MLOAD DUP2 DUP4 ADD DUP5 ADD MSTORE SWAP1 DUP3 ADD SWAP1 PUSH3 0xEC JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP2 ADD SWAP1 SWAP3 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x133 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH3 0x14B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x159 DUP7 DUP4 DUP8 ADD PUSH3 0x70 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH3 0x170 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x17F DUP6 DUP3 DUP7 ADD PUSH3 0x70 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x19E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x1BF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x213 JUMPI PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x1EE JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x20F JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x1FA JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x234 JUMPI PUSH3 0x234 PUSH3 0x5A JUMP JUMPDEST PUSH3 0x24C DUP2 PUSH3 0x245 DUP5 SLOAD PUSH3 0x189 JUMP JUMPDEST DUP5 PUSH3 0x1C5 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x284 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x26B JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x20F JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x2B5 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x294 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x2D4 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x14BE DUP1 PUSH3 0x2F4 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x1FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x121 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0x10F3 JUMP JUMPDEST PUSH2 0x238 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x114 PUSH2 0x31D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0x1160 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0x1173 JUMP JUMPDEST PUSH2 0x3AF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST PUSH2 0x15F PUSH2 0x15A CALLDATASIZE PUSH1 0x4 PUSH2 0x11A8 JUMP JUMPDEST PUSH2 0x3D6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15F PUSH2 0x16F CALLDATASIZE PUSH1 0x4 PUSH2 0x11D2 JUMP JUMPDEST PUSH2 0x52A JUMP JUMPDEST PUSH2 0x15F PUSH2 0x182 CALLDATASIZE PUSH1 0x4 PUSH2 0x11D2 JUMP JUMPDEST PUSH2 0x5B1 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x195 CALLDATASIZE PUSH1 0x4 PUSH2 0x1173 JUMP JUMPDEST PUSH2 0x5CC JUMP JUMPDEST PUSH2 0x1AD PUSH2 0x1A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x120E JUMP JUMPDEST PUSH2 0x631 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST PUSH2 0x114 PUSH2 0x6CB JUMP JUMPDEST PUSH2 0x15F PUSH2 0x1D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1229 JUMP JUMPDEST PUSH2 0x6DA JUMP JUMPDEST PUSH2 0x15F PUSH2 0x1E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x127B JUMP JUMPDEST PUSH2 0x6E9 JUMP JUMPDEST PUSH2 0x114 PUSH2 0x1F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1173 JUMP JUMPDEST PUSH2 0x777 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x20A CALLDATASIZE PUSH1 0x4 PUSH2 0x1357 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x2CB JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x317 JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x32C SWAP1 PUSH2 0x138A JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x358 SWAP1 PUSH2 0x138A JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3A5 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x37A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3A5 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 0x388 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3BA DUP3 PUSH2 0x7EB JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E1 DUP3 PUSH2 0x5CC JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x46F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x4A9 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x51B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206F7220617070726F76656420666F7220616C6C000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x466 JUMP JUMPDEST PUSH2 0x525 DUP4 DUP4 PUSH2 0x852 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x534 CALLER DUP3 PUSH2 0x8D8 JUMP JUMPDEST PUSH2 0x5A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72206F7220617070726F76656400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x466 JUMP JUMPDEST PUSH2 0x525 DUP4 DUP4 DUP4 PUSH2 0x957 JUMP JUMPDEST PUSH2 0x525 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x6E9 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x317 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x466 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x6AF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x466 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x32C SWAP1 PUSH2 0x138A JUMP JUMPDEST PUSH2 0x6E5 CALLER DUP4 DUP4 PUSH2 0xBA5 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x6F3 CALLER DUP4 PUSH2 0x8D8 JUMP JUMPDEST PUSH2 0x765 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72206F7220617070726F76656400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x466 JUMP JUMPDEST PUSH2 0x771 DUP5 DUP5 DUP5 DUP5 PUSH2 0xC91 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x782 DUP3 PUSH2 0x7EB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x799 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x7B9 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x7E4 JUMP JUMPDEST DUP1 PUSH2 0x7C3 DUP5 PUSH2 0xD1A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x7D4 SWAP3 SWAP2 SWAP1 PUSH2 0x13C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x84F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x466 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x89F DUP3 PUSH2 0x5CC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8E4 DUP4 PUSH2 0x5CC JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x92B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x94F JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x944 DUP5 PUSH2 0x3AF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x96A DUP3 PUSH2 0x5CC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x9E6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x466 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xA61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x466 JUMP JUMPDEST PUSH2 0xA6E DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0xDBA JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA81 DUP3 PUSH2 0x5CC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xAFD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x466 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP1 DUP7 MSTORE PUSH1 0x3 DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP1 DUP8 AND DUP1 DUP7 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP7 DUP7 MSTORE PUSH1 0x2 SWAP1 SWAP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 AND DUP5 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP5 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xC06 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x466 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xC9C DUP5 DUP5 DUP5 PUSH2 0x957 JUMP JUMPDEST PUSH2 0xCA8 DUP5 DUP5 DUP5 DUP5 PUSH2 0xE42 JUMP JUMPDEST PUSH2 0x771 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x466 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xD27 DUP4 PUSH2 0xFE3 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD47 JUMPI PUSH2 0xD47 PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD71 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0xD7B JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x771 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO PUSH2 0xE00 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0xDFA SWAP1 DUP5 SWAP1 PUSH2 0x1409 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0x771 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0xE37 SWAP1 DUP5 SWAP1 PUSH2 0x141C JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0xFD8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xE9F SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x142F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xEDA JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xED7 SWAP2 DUP2 ADD SWAP1 PUSH2 0x146B JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xF8D JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xF08 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 0xF0D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xF85 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x466 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 EQ SWAP1 POP PUSH2 0x94F JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 LT PUSH2 0x102C JUMPI PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x1058 JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x1076 JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x108E JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x10A2 JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x10B4 JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x317 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x84F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x7E4 DUP2 PUSH2 0x10C5 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x112B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1113 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x114C DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1110 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x7E4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1134 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x11A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x11BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11C4 DUP4 PUSH2 0x118C JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x11E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11F0 DUP5 PUSH2 0x118C JUMP JUMPDEST SWAP3 POP PUSH2 0x11FE PUSH1 0x20 DUP6 ADD PUSH2 0x118C JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7E4 DUP3 PUSH2 0x118C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x123C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1245 DUP4 PUSH2 0x118C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x125A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x129A DUP6 PUSH2 0x118C JUMP JUMPDEST SWAP4 POP PUSH2 0x12A8 PUSH1 0x20 DUP7 ADD PUSH2 0x118C JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x12CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x12E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x12F2 JUMPI PUSH2 0x12F2 PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x131A JUMPI PUSH2 0x131A PUSH2 0x1265 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1333 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x136A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1373 DUP4 PUSH2 0x118C JUMP JUMPDEST SWAP2 POP PUSH2 0x1381 PUSH1 0x20 DUP5 ADD PUSH2 0x118C JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x139E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x13BE JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x13D6 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x1110 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x13EA DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x1110 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x317 JUMPI PUSH2 0x317 PUSH2 0x13F3 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x317 JUMPI PUSH2 0x317 PUSH2 0x13F3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1461 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x1134 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x147D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x7E4 DUP2 PUSH2 0x10C5 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEC 0xC0 PUSH25 0xC6139C732EB51F26627972B6CDD1231665B2BEC499233B1089 ADDRESS 0x4B 0x1E 0xBE PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"628:16327:0:-:0;;;1390:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1456:5;:13;1464:5;1456;:13;:::i;:::-;-1:-1:-1;1479:7:0;:17;1489:7;1479;:17;:::i;:::-;;1390:113;;628:16327;;14:127:12;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:840;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;294:13;;-1:-1:-1;;;;;356:10:12;;;353:36;;;369:18;;:::i;:::-;444:2;438:9;412:2;498:13;;-1:-1:-1;;494:22:12;;;518:2;490:31;486:40;474:53;;;542:18;;;562:22;;;539:46;536:72;;;588:18;;:::i;:::-;628:10;624:2;617:22;663:2;655:6;648:18;685:4;675:14;;730:3;725:2;720;712:6;708:15;704:24;701:33;698:53;;;747:1;744;737:12;698:53;769:1;760:10;;779:133;793:2;790:1;787:9;779:133;;;881:14;;;877:23;;871:30;850:14;;;846:23;;839:63;804:10;;;;779:133;;;954:1;932:15;;;928:24;;;921:35;;;;936:6;146:840;-1:-1:-1;;;;146:840:12:o;991:562::-;1090:6;1098;1151:2;1139:9;1130:7;1126:23;1122:32;1119:52;;;1167:1;1164;1157:12;1119:52;1194:16;;-1:-1:-1;;;;;1259:14:12;;;1256:34;;;1286:1;1283;1276:12;1256:34;1309:61;1362:7;1353:6;1342:9;1338:22;1309:61;:::i;:::-;1299:71;;1416:2;1405:9;1401:18;1395:25;1379:41;;1445:2;1435:8;1432:16;1429:36;;;1461:1;1458;1451:12;1429:36;;1484:63;1539:7;1528:8;1517:9;1513:24;1484:63;:::i;:::-;1474:73;;;991:562;;;;;:::o;1558:380::-;1637:1;1633:12;;;;1680;;;1701:61;;1755:4;1747:6;1743:17;1733:27;;1701:61;1808:2;1800:6;1797:14;1777:18;1774:38;1771:161;;1854:10;1849:3;1845:20;1842:1;1835:31;1889:4;1886:1;1879:15;1917:4;1914:1;1907:15;1771:161;;1558:380;;;:::o;2069:545::-;2171:2;2166:3;2163:11;2160:448;;;2207:1;2232:5;2228:2;2221:17;2277:4;2273:2;2263:19;2347:2;2335:10;2331:19;2328:1;2324:27;2318:4;2314:38;2383:4;2371:10;2368:20;2365:47;;;-1:-1:-1;2406:4:12;2365:47;2461:2;2456:3;2452:12;2449:1;2445:20;2439:4;2435:31;2425:41;;2516:82;2534:2;2527:5;2524:13;2516:82;;;2579:17;;;2560:1;2549:13;2516:82;;;2520:3;;;2160:448;2069:545;;;:::o;2790:1352::-;2910:10;;-1:-1:-1;;;;;2932:30:12;;2929:56;;;2965:18;;:::i;:::-;2994:97;3084:6;3044:38;3076:4;3070:11;3044:38;:::i;:::-;3038:4;2994:97;:::i;:::-;3146:4;;3210:2;3199:14;;3227:1;3222:663;;;;3929:1;3946:6;3943:89;;;-1:-1:-1;3998:19:12;;;3992:26;3943:89;-1:-1:-1;;2747:1:12;2743:11;;;2739:24;2735:29;2725:40;2771:1;2767:11;;;2722:57;4045:81;;3192:944;;3222:663;2016:1;2009:14;;;2053:4;2040:18;;-1:-1:-1;;3258:20:12;;;3376:236;3390:7;3387:1;3384:14;3376:236;;;3479:19;;;3473:26;3458:42;;3571:27;;;;3539:1;3527:14;;;;3406:19;;3376:236;;;3380:3;3640:6;3631:7;3628:19;3625:201;;;3701:19;;;3695:26;-1:-1:-1;;3784:1:12;3780:14;;;3796:3;3776:24;3772:37;3768:42;3753:58;3738:74;;3625:201;-1:-1:-1;;;;;3872:1:12;3856:14;;;3852:22;3839:36;;-1:-1:-1;2790:1352:12:o;:::-;628:16327:0;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_afterTokenTransfer_943":{"entryPoint":null,"id":943,"parameterSlots":4,"returnSlots":0},"@_approve_776":{"entryPoint":2130,"id":776,"parameterSlots":2,"returnSlots":0},"@_baseURI_213":{"entryPoint":null,"id":213,"parameterSlots":0,"returnSlots":1},"@_beforeTokenTransfer_930":{"entryPoint":3514,"id":930,"parameterSlots":4,"returnSlots":0},"@_checkOnERC721Received_884":{"entryPoint":3650,"id":884,"parameterSlots":4,"returnSlots":1},"@_exists_445":{"entryPoint":null,"id":445,"parameterSlots":1,"returnSlots":1},"@_isApprovedOrOwner_479":{"entryPoint":2264,"id":479,"parameterSlots":2,"returnSlots":1},"@_msgSender_1832":{"entryPoint":null,"id":1832,"parameterSlots":0,"returnSlots":1},"@_ownerOf_427":{"entryPoint":null,"id":427,"parameterSlots":1,"returnSlots":1},"@_requireMinted_822":{"entryPoint":2027,"id":822,"parameterSlots":1,"returnSlots":0},"@_safeTransfer_414":{"entryPoint":3217,"id":414,"parameterSlots":4,"returnSlots":0},"@_setApprovalForAll_808":{"entryPoint":2981,"id":808,"parameterSlots":3,"returnSlots":0},"@_transfer_752":{"entryPoint":2391,"id":752,"parameterSlots":3,"returnSlots":0},"@approve_256":{"entryPoint":982,"id":256,"parameterSlots":2,"returnSlots":0},"@balanceOf_117":{"entryPoint":1585,"id":117,"parameterSlots":1,"returnSlots":1},"@getApproved_274":{"entryPoint":943,"id":274,"parameterSlots":1,"returnSlots":1},"@isApprovedForAll_309":{"entryPoint":null,"id":309,"parameterSlots":2,"returnSlots":1},"@isContract_1508":{"entryPoint":null,"id":1508,"parameterSlots":1,"returnSlots":1},"@log10_2755":{"entryPoint":4067,"id":2755,"parameterSlots":1,"returnSlots":1},"@name_155":{"entryPoint":797,"id":155,"parameterSlots":0,"returnSlots":1},"@ownerOf_145":{"entryPoint":1484,"id":145,"parameterSlots":1,"returnSlots":1},"@safeTransferFrom_355":{"entryPoint":1457,"id":355,"parameterSlots":3,"returnSlots":0},"@safeTransferFrom_385":{"entryPoint":1769,"id":385,"parameterSlots":4,"returnSlots":0},"@setApprovalForAll_291":{"entryPoint":1754,"id":291,"parameterSlots":2,"returnSlots":0},"@supportsInterface_2040":{"entryPoint":null,"id":2040,"parameterSlots":1,"returnSlots":1},"@supportsInterface_93":{"entryPoint":568,"id":93,"parameterSlots":1,"returnSlots":1},"@symbol_165":{"entryPoint":1739,"id":165,"parameterSlots":0,"returnSlots":1},"@toString_1900":{"entryPoint":3354,"id":1900,"parameterSlots":1,"returnSlots":1},"@tokenURI_204":{"entryPoint":1911,"id":204,"parameterSlots":1,"returnSlots":1},"@transferFrom_336":{"entryPoint":1322,"id":336,"parameterSlots":3,"returnSlots":0},"abi_decode_address":{"entryPoint":4492,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_address":{"entryPoint":4622,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_address":{"entryPoint":4951,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_addresst_uint256":{"entryPoint":4562,"id":null,"parameterSlots":2,"returnSlots":3},"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr":{"entryPoint":4731,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_addresst_bool":{"entryPoint":4649,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_uint256":{"entryPoint":4520,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_bytes4":{"entryPoint":4339,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes4_fromMemory":{"entryPoint":5227,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":4467,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string":{"entryPoint":4404,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":5060,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed":{"entryPoint":5167,"id":null,"parameterSlots":5,"returnSlots":1},"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4448,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_add_t_uint256":{"entryPoint":5148,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":5129,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4368,"id":null,"parameterSlots":3,"returnSlots":0},"extract_byte_array_length":{"entryPoint":5002,"id":null,"parameterSlots":1,"returnSlots":1},"panic_error_0x11":{"entryPoint":5107,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x12":{"entryPoint":null,"id":null,"parameterSlots":0,"returnSlots":0},"panic_error_0x41":{"entryPoint":4709,"id":null,"parameterSlots":0,"returnSlots":0},"validator_revert_bytes4":{"entryPoint":4293,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:10988:12","statements":[{"nodeType":"YulBlock","src":"6:3:12","statements":[]},{"body":{"nodeType":"YulBlock","src":"58:133:12","statements":[{"body":{"nodeType":"YulBlock","src":"169:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"178:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"181:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"171:6:12"},"nodeType":"YulFunctionCall","src":"171:12:12"},"nodeType":"YulExpressionStatement","src":"171:12:12"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"81:5:12"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"92:5:12"},{"kind":"number","nodeType":"YulLiteral","src":"99:66:12","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"88:3:12"},"nodeType":"YulFunctionCall","src":"88:78:12"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"78:2:12"},"nodeType":"YulFunctionCall","src":"78:89:12"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"71:6:12"},"nodeType":"YulFunctionCall","src":"71:97:12"},"nodeType":"YulIf","src":"68:117:12"}]},"name":"validator_revert_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"47:5:12","type":""}],"src":"14:177:12"},{"body":{"nodeType":"YulBlock","src":"265:176:12","statements":[{"body":{"nodeType":"YulBlock","src":"311:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"320:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"323:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"313:6:12"},"nodeType":"YulFunctionCall","src":"313:12:12"},"nodeType":"YulExpressionStatement","src":"313:12:12"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"286:7:12"},{"name":"headStart","nodeType":"YulIdentifier","src":"295:9:12"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"282:3:12"},"nodeType":"YulFunctionCall","src":"282:23:12"},{"kind":"number","nodeType":"YulLiteral","src":"307:2:12","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"278:3:12"},"nodeType":"YulFunctionCall","src":"278:32:12"},"nodeType":"YulIf","src":"275:52:12"},{"nodeType":"YulVariableDeclaration","src":"336:36:12","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"362:9:12"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"349:12:12"},"nodeType":"YulFunctionCall","src":"349:23:12"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"340:5:12","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"405:5:12"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"381:23:12"},"nodeType":"YulFunctionCall","src":"381:30:12"},"nodeType":"YulExpressionStatement","src":"381:30:12"},{"nodeType":"YulAssignment","src":"420:15:12","value":{"name":"value","nodeType":"YulIdentifier","src":"430:5:12"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"420:6:12"}]}]},"name":"abi_decode_tuple_t_bytes4","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"231:9:12","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"242:7:12","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"254:6:12","type":""}],"src":"196:245:12"},{"body":{"nodeType":"YulBlock","src":"541:92:12","statements":[{"nodeType":"YulAssignment","src":"551:26:12","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"563:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"574:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"559:3:12"},"nodeType":"YulFunctionCall","src":"559:18:12"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"551:4:12"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"593:9:12"},{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"618:6:12"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"611:6:12"},"nodeType":"YulFunctionCall","src":"611:14:12"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"604:6:12"},"nodeType":"YulFunctionCall","src":"604:22:12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"586:6:12"},"nodeType":"YulFunctionCall","src":"586:41:12"},"nodeType":"YulExpressionStatement","src":"586:41:12"}]},"name":"abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"510:9:12","type":""},{"name":"value0","nodeType":"YulTypedName","src":"521:6:12","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"532:4:12","type":""}],"src":"446:187:12"},{"body":{"nodeType":"YulBlock","src":"704:184:12","statements":[{"nodeType":"YulVariableDeclaration","src":"714:10:12","value":{"kind":"number","nodeType":"YulLiteral","src":"723:1:12","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"718:1:12","type":""}]},{"body":{"nodeType":"YulBlock","src":"783:63:12","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"808:3:12"},{"name":"i","nodeType":"YulIdentifier","src":"813:1:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"804:3:12"},"nodeType":"YulFunctionCall","src":"804:11:12"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"827:3:12"},{"name":"i","nodeType":"YulIdentifier","src":"832:1:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"823:3:12"},"nodeType":"YulFunctionCall","src":"823:11:12"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"817:5:12"},"nodeType":"YulFunctionCall","src":"817:18:12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"797:6:12"},"nodeType":"YulFunctionCall","src":"797:39:12"},"nodeType":"YulExpressionStatement","src":"797:39:12"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"744:1:12"},{"name":"length","nodeType":"YulIdentifier","src":"747:6:12"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"741:2:12"},"nodeType":"YulFunctionCall","src":"741:13:12"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"755:19:12","statements":[{"nodeType":"YulAssignment","src":"757:15:12","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"766:1:12"},{"kind":"number","nodeType":"YulLiteral","src":"769:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"762:3:12"},"nodeType":"YulFunctionCall","src":"762:10:12"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"757:1:12"}]}]},"pre":{"nodeType":"YulBlock","src":"737:3:12","statements":[]},"src":"733:113:12"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"866:3:12"},{"name":"length","nodeType":"YulIdentifier","src":"871:6:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"862:3:12"},"nodeType":"YulFunctionCall","src":"862:16:12"},{"kind":"number","nodeType":"YulLiteral","src":"880:1:12","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"855:6:12"},"nodeType":"YulFunctionCall","src":"855:27:12"},"nodeType":"YulExpressionStatement","src":"855:27:12"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"682:3:12","type":""},{"name":"dst","nodeType":"YulTypedName","src":"687:3:12","type":""},{"name":"length","nodeType":"YulTypedName","src":"692:6:12","type":""}],"src":"638:250:12"},{"body":{"nodeType":"YulBlock","src":"943:280:12","statements":[{"nodeType":"YulVariableDeclaration","src":"953:26:12","value":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"973:5:12"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"967:5:12"},"nodeType":"YulFunctionCall","src":"967:12:12"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"957:6:12","type":""}]},{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"995:3:12"},{"name":"length","nodeType":"YulIdentifier","src":"1000:6:12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"988:6:12"},"nodeType":"YulFunctionCall","src":"988:19:12"},"nodeType":"YulExpressionStatement","src":"988:19:12"},{"expression":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1055:5:12"},{"kind":"number","nodeType":"YulLiteral","src":"1062:4:12","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1051:3:12"},"nodeType":"YulFunctionCall","src":"1051:16:12"},{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1073:3:12"},{"kind":"number","nodeType":"YulLiteral","src":"1078:4:12","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1069:3:12"},"nodeType":"YulFunctionCall","src":"1069:14:12"},{"name":"length","nodeType":"YulIdentifier","src":"1085:6:12"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"1016:34:12"},"nodeType":"YulFunctionCall","src":"1016:76:12"},"nodeType":"YulExpressionStatement","src":"1016:76:12"},{"nodeType":"YulAssignment","src":"1101:116:12","value":{"arguments":[{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"1116:3:12"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"1129:6:12"},{"kind":"number","nodeType":"YulLiteral","src":"1137:2:12","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1125:3:12"},"nodeType":"YulFunctionCall","src":"1125:15:12"},{"kind":"number","nodeType":"YulLiteral","src":"1142:66:12","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1121:3:12"},"nodeType":"YulFunctionCall","src":"1121:88:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1112:3:12"},"nodeType":"YulFunctionCall","src":"1112:98:12"},{"kind":"number","nodeType":"YulLiteral","src":"1212:4:12","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1108:3:12"},"nodeType":"YulFunctionCall","src":"1108:109:12"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"1101:3:12"}]}]},"name":"abi_encode_string","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"920:5:12","type":""},{"name":"pos","nodeType":"YulTypedName","src":"927:3:12","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"935:3:12","type":""}],"src":"893:330:12"},{"body":{"nodeType":"YulBlock","src":"1349:99:12","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1366:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"1377:2:12","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1359:6:12"},"nodeType":"YulFunctionCall","src":"1359:21:12"},"nodeType":"YulExpressionStatement","src":"1359:21:12"},{"nodeType":"YulAssignment","src":"1389:53:12","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1415:6:12"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1427:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"1438:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1423:3:12"},"nodeType":"YulFunctionCall","src":"1423:18:12"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"1397:17:12"},"nodeType":"YulFunctionCall","src":"1397:45:12"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1389:4:12"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1318:9:12","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1329:6:12","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1340:4:12","type":""}],"src":"1228:220:12"},{"body":{"nodeType":"YulBlock","src":"1523:110:12","statements":[{"body":{"nodeType":"YulBlock","src":"1569:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1578:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1581:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1571:6:12"},"nodeType":"YulFunctionCall","src":"1571:12:12"},"nodeType":"YulExpressionStatement","src":"1571:12:12"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1544:7:12"},{"name":"headStart","nodeType":"YulIdentifier","src":"1553:9:12"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1540:3:12"},"nodeType":"YulFunctionCall","src":"1540:23:12"},{"kind":"number","nodeType":"YulLiteral","src":"1565:2:12","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1536:3:12"},"nodeType":"YulFunctionCall","src":"1536:32:12"},"nodeType":"YulIf","src":"1533:52:12"},{"nodeType":"YulAssignment","src":"1594:33:12","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1617:9:12"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1604:12:12"},"nodeType":"YulFunctionCall","src":"1604:23:12"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1594:6:12"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1489:9:12","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1500:7:12","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1512:6:12","type":""}],"src":"1453:180:12"},{"body":{"nodeType":"YulBlock","src":"1739:125:12","statements":[{"nodeType":"YulAssignment","src":"1749:26:12","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1761:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"1772:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1757:3:12"},"nodeType":"YulFunctionCall","src":"1757:18:12"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1749:4:12"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1791:9:12"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1806:6:12"},{"kind":"number","nodeType":"YulLiteral","src":"1814:42:12","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1802:3:12"},"nodeType":"YulFunctionCall","src":"1802:55:12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1784:6:12"},"nodeType":"YulFunctionCall","src":"1784:74:12"},"nodeType":"YulExpressionStatement","src":"1784:74:12"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1708:9:12","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1719:6:12","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1730:4:12","type":""}],"src":"1638:226:12"},{"body":{"nodeType":"YulBlock","src":"1918:147:12","statements":[{"nodeType":"YulAssignment","src":"1928:29:12","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1950:6:12"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1937:12:12"},"nodeType":"YulFunctionCall","src":"1937:20:12"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"1928:5:12"}]},{"body":{"nodeType":"YulBlock","src":"2043:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2052:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2055:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2045:6:12"},"nodeType":"YulFunctionCall","src":"2045:12:12"},"nodeType":"YulExpressionStatement","src":"2045:12:12"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1979:5:12"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1990:5:12"},{"kind":"number","nodeType":"YulLiteral","src":"1997:42:12","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1986:3:12"},"nodeType":"YulFunctionCall","src":"1986:54:12"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1976:2:12"},"nodeType":"YulFunctionCall","src":"1976:65:12"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1969:6:12"},"nodeType":"YulFunctionCall","src":"1969:73:12"},"nodeType":"YulIf","src":"1966:93:12"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"1897:6:12","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"1908:5:12","type":""}],"src":"1869:196:12"},{"body":{"nodeType":"YulBlock","src":"2157:167:12","statements":[{"body":{"nodeType":"YulBlock","src":"2203:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2212:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2215:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2205:6:12"},"nodeType":"YulFunctionCall","src":"2205:12:12"},"nodeType":"YulExpressionStatement","src":"2205:12:12"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2178:7:12"},{"name":"headStart","nodeType":"YulIdentifier","src":"2187:9:12"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2174:3:12"},"nodeType":"YulFunctionCall","src":"2174:23:12"},{"kind":"number","nodeType":"YulLiteral","src":"2199:2:12","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2170:3:12"},"nodeType":"YulFunctionCall","src":"2170:32:12"},"nodeType":"YulIf","src":"2167:52:12"},{"nodeType":"YulAssignment","src":"2228:39:12","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2257:9:12"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2238:18:12"},"nodeType":"YulFunctionCall","src":"2238:29:12"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2228:6:12"}]},{"nodeType":"YulAssignment","src":"2276:42:12","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2303:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"2314:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2299:3:12"},"nodeType":"YulFunctionCall","src":"2299:18:12"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2286:12:12"},"nodeType":"YulFunctionCall","src":"2286:32:12"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2276:6:12"}]}]},"name":"abi_decode_tuple_t_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2115:9:12","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2126:7:12","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2138:6:12","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2146:6:12","type":""}],"src":"2070:254:12"},{"body":{"nodeType":"YulBlock","src":"2433:224:12","statements":[{"body":{"nodeType":"YulBlock","src":"2479:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2488:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2491:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2481:6:12"},"nodeType":"YulFunctionCall","src":"2481:12:12"},"nodeType":"YulExpressionStatement","src":"2481:12:12"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2454:7:12"},{"name":"headStart","nodeType":"YulIdentifier","src":"2463:9:12"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2450:3:12"},"nodeType":"YulFunctionCall","src":"2450:23:12"},{"kind":"number","nodeType":"YulLiteral","src":"2475:2:12","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2446:3:12"},"nodeType":"YulFunctionCall","src":"2446:32:12"},"nodeType":"YulIf","src":"2443:52:12"},{"nodeType":"YulAssignment","src":"2504:39:12","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2533:9:12"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2514:18:12"},"nodeType":"YulFunctionCall","src":"2514:29:12"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2504:6:12"}]},{"nodeType":"YulAssignment","src":"2552:48:12","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2585:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"2596:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2581:3:12"},"nodeType":"YulFunctionCall","src":"2581:18:12"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2562:18:12"},"nodeType":"YulFunctionCall","src":"2562:38:12"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2552:6:12"}]},{"nodeType":"YulAssignment","src":"2609:42:12","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2636:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"2647:2:12","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2632:3:12"},"nodeType":"YulFunctionCall","src":"2632:18:12"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2619:12:12"},"nodeType":"YulFunctionCall","src":"2619:32:12"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"2609:6:12"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2383:9:12","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2394:7:12","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2406:6:12","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2414:6:12","type":""},{"name":"value2","nodeType":"YulTypedName","src":"2422:6:12","type":""}],"src":"2329:328:12"},{"body":{"nodeType":"YulBlock","src":"2732:116:12","statements":[{"body":{"nodeType":"YulBlock","src":"2778:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2787:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2790:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2780:6:12"},"nodeType":"YulFunctionCall","src":"2780:12:12"},"nodeType":"YulExpressionStatement","src":"2780:12:12"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2753:7:12"},{"name":"headStart","nodeType":"YulIdentifier","src":"2762:9:12"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2749:3:12"},"nodeType":"YulFunctionCall","src":"2749:23:12"},{"kind":"number","nodeType":"YulLiteral","src":"2774:2:12","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2745:3:12"},"nodeType":"YulFunctionCall","src":"2745:32:12"},"nodeType":"YulIf","src":"2742:52:12"},{"nodeType":"YulAssignment","src":"2803:39:12","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2832:9:12"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"2813:18:12"},"nodeType":"YulFunctionCall","src":"2813:29:12"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2803:6:12"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2698:9:12","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2709:7:12","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2721:6:12","type":""}],"src":"2662:186:12"},{"body":{"nodeType":"YulBlock","src":"2954:76:12","statements":[{"nodeType":"YulAssignment","src":"2964:26:12","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2976:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"2987:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2972:3:12"},"nodeType":"YulFunctionCall","src":"2972:18:12"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2964:4:12"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3006:9:12"},{"name":"value0","nodeType":"YulIdentifier","src":"3017:6:12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2999:6:12"},"nodeType":"YulFunctionCall","src":"2999:25:12"},"nodeType":"YulExpressionStatement","src":"2999:25:12"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2923:9:12","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2934:6:12","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2945:4:12","type":""}],"src":"2853:177:12"},{"body":{"nodeType":"YulBlock","src":"3119:263:12","statements":[{"body":{"nodeType":"YulBlock","src":"3165:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3174:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3177:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3167:6:12"},"nodeType":"YulFunctionCall","src":"3167:12:12"},"nodeType":"YulExpressionStatement","src":"3167:12:12"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3140:7:12"},{"name":"headStart","nodeType":"YulIdentifier","src":"3149:9:12"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3136:3:12"},"nodeType":"YulFunctionCall","src":"3136:23:12"},{"kind":"number","nodeType":"YulLiteral","src":"3161:2:12","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3132:3:12"},"nodeType":"YulFunctionCall","src":"3132:32:12"},"nodeType":"YulIf","src":"3129:52:12"},{"nodeType":"YulAssignment","src":"3190:39:12","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3219:9:12"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3200:18:12"},"nodeType":"YulFunctionCall","src":"3200:29:12"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3190:6:12"}]},{"nodeType":"YulVariableDeclaration","src":"3238:45:12","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3268:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"3279:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3264:3:12"},"nodeType":"YulFunctionCall","src":"3264:18:12"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3251:12:12"},"nodeType":"YulFunctionCall","src":"3251:32:12"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"3242:5:12","type":""}]},{"body":{"nodeType":"YulBlock","src":"3336:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3345:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3348:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3338:6:12"},"nodeType":"YulFunctionCall","src":"3338:12:12"},"nodeType":"YulExpressionStatement","src":"3338:12:12"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3305:5:12"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"3326:5:12"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3319:6:12"},"nodeType":"YulFunctionCall","src":"3319:13:12"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3312:6:12"},"nodeType":"YulFunctionCall","src":"3312:21:12"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"3302:2:12"},"nodeType":"YulFunctionCall","src":"3302:32:12"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"3295:6:12"},"nodeType":"YulFunctionCall","src":"3295:40:12"},"nodeType":"YulIf","src":"3292:60:12"},{"nodeType":"YulAssignment","src":"3361:15:12","value":{"name":"value","nodeType":"YulIdentifier","src":"3371:5:12"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3361:6:12"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3077:9:12","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3088:7:12","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3100:6:12","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3108:6:12","type":""}],"src":"3035:347:12"},{"body":{"nodeType":"YulBlock","src":"3419:152:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3436:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3439:77:12","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3429:6:12"},"nodeType":"YulFunctionCall","src":"3429:88:12"},"nodeType":"YulExpressionStatement","src":"3429:88:12"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3533:1:12","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3536:4:12","type":"","value":"0x41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3526:6:12"},"nodeType":"YulFunctionCall","src":"3526:15:12"},"nodeType":"YulExpressionStatement","src":"3526:15:12"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3557:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3560:4:12","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3550:6:12"},"nodeType":"YulFunctionCall","src":"3550:15:12"},"nodeType":"YulExpressionStatement","src":"3550:15:12"}]},"name":"panic_error_0x41","nodeType":"YulFunctionDefinition","src":"3387:184:12"},{"body":{"nodeType":"YulBlock","src":"3706:1067:12","statements":[{"body":{"nodeType":"YulBlock","src":"3753:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3762:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3765:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3755:6:12"},"nodeType":"YulFunctionCall","src":"3755:12:12"},"nodeType":"YulExpressionStatement","src":"3755:12:12"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"3727:7:12"},{"name":"headStart","nodeType":"YulIdentifier","src":"3736:9:12"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3723:3:12"},"nodeType":"YulFunctionCall","src":"3723:23:12"},{"kind":"number","nodeType":"YulLiteral","src":"3748:3:12","type":"","value":"128"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"3719:3:12"},"nodeType":"YulFunctionCall","src":"3719:33:12"},"nodeType":"YulIf","src":"3716:53:12"},{"nodeType":"YulAssignment","src":"3778:39:12","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3807:9:12"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3788:18:12"},"nodeType":"YulFunctionCall","src":"3788:29:12"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"3778:6:12"}]},{"nodeType":"YulAssignment","src":"3826:48:12","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3859:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"3870:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3855:3:12"},"nodeType":"YulFunctionCall","src":"3855:18:12"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"3836:18:12"},"nodeType":"YulFunctionCall","src":"3836:38:12"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"3826:6:12"}]},{"nodeType":"YulAssignment","src":"3883:42:12","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3910:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"3921:2:12","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3906:3:12"},"nodeType":"YulFunctionCall","src":"3906:18:12"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3893:12:12"},"nodeType":"YulFunctionCall","src":"3893:32:12"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"3883:6:12"}]},{"nodeType":"YulVariableDeclaration","src":"3934:46:12","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3965:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"3976:2:12","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3961:3:12"},"nodeType":"YulFunctionCall","src":"3961:18:12"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"3948:12:12"},"nodeType":"YulFunctionCall","src":"3948:32:12"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"3938:6:12","type":""}]},{"nodeType":"YulVariableDeclaration","src":"3989:28:12","value":{"kind":"number","nodeType":"YulLiteral","src":"3999:18:12","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3993:2:12","type":""}]},{"body":{"nodeType":"YulBlock","src":"4044:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4053:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4056:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4046:6:12"},"nodeType":"YulFunctionCall","src":"4046:12:12"},"nodeType":"YulExpressionStatement","src":"4046:12:12"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"4032:6:12"},{"name":"_1","nodeType":"YulIdentifier","src":"4040:2:12"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4029:2:12"},"nodeType":"YulFunctionCall","src":"4029:14:12"},"nodeType":"YulIf","src":"4026:34:12"},{"nodeType":"YulVariableDeclaration","src":"4069:32:12","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4083:9:12"},{"name":"offset","nodeType":"YulIdentifier","src":"4094:6:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4079:3:12"},"nodeType":"YulFunctionCall","src":"4079:22:12"},"variables":[{"name":"_2","nodeType":"YulTypedName","src":"4073:2:12","type":""}]},{"body":{"nodeType":"YulBlock","src":"4149:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4158:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4161:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4151:6:12"},"nodeType":"YulFunctionCall","src":"4151:12:12"},"nodeType":"YulExpressionStatement","src":"4151:12:12"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4128:2:12"},{"kind":"number","nodeType":"YulLiteral","src":"4132:4:12","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4124:3:12"},"nodeType":"YulFunctionCall","src":"4124:13:12"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4139:7:12"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4120:3:12"},"nodeType":"YulFunctionCall","src":"4120:27:12"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"4113:6:12"},"nodeType":"YulFunctionCall","src":"4113:35:12"},"nodeType":"YulIf","src":"4110:55:12"},{"nodeType":"YulVariableDeclaration","src":"4174:26:12","value":{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4197:2:12"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"4184:12:12"},"nodeType":"YulFunctionCall","src":"4184:16:12"},"variables":[{"name":"_3","nodeType":"YulTypedName","src":"4178:2:12","type":""}]},{"body":{"nodeType":"YulBlock","src":"4223:22:12","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4225:16:12"},"nodeType":"YulFunctionCall","src":"4225:18:12"},"nodeType":"YulExpressionStatement","src":"4225:18:12"}]},"condition":{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4215:2:12"},{"name":"_1","nodeType":"YulIdentifier","src":"4219:2:12"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4212:2:12"},"nodeType":"YulFunctionCall","src":"4212:10:12"},"nodeType":"YulIf","src":"4209:36:12"},{"nodeType":"YulVariableDeclaration","src":"4254:76:12","value":{"kind":"number","nodeType":"YulLiteral","src":"4264:66:12","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"},"variables":[{"name":"_4","nodeType":"YulTypedName","src":"4258:2:12","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4339:23:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4359:2:12","type":"","value":"64"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4353:5:12"},"nodeType":"YulFunctionCall","src":"4353:9:12"},"variables":[{"name":"memPtr","nodeType":"YulTypedName","src":"4343:6:12","type":""}]},{"nodeType":"YulVariableDeclaration","src":"4371:71:12","value":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4393:6:12"},{"arguments":[{"arguments":[{"arguments":[{"arguments":[{"name":"_3","nodeType":"YulIdentifier","src":"4417:2:12"},{"kind":"number","nodeType":"YulLiteral","src":"4421:4:12","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4413:3:12"},"nodeType":"YulFunctionCall","src":"4413:13:12"},{"name":"_4","nodeType":"YulIdentifier","src":"4428:2:12"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4409:3:12"},"nodeType":"YulFunctionCall","src":"4409:22:12"},{"kind":"number","nodeType":"YulLiteral","src":"4433:2:12","type":"","value":"63"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4405:3:12"},"nodeType":"YulFunctionCall","src":"4405:31:12"},{"name":"_4","nodeType":"YulIdentifier","src":"4438:2:12"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4401:3:12"},"nodeType":"YulFunctionCall","src":"4401:40:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4389:3:12"},"nodeType":"YulFunctionCall","src":"4389:53:12"},"variables":[{"name":"newFreePtr","nodeType":"YulTypedName","src":"4375:10:12","type":""}]},{"body":{"nodeType":"YulBlock","src":"4501:22:12","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x41","nodeType":"YulIdentifier","src":"4503:16:12"},"nodeType":"YulFunctionCall","src":"4503:18:12"},"nodeType":"YulExpressionStatement","src":"4503:18:12"}]},"condition":{"arguments":[{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4460:10:12"},{"name":"_1","nodeType":"YulIdentifier","src":"4472:2:12"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4457:2:12"},"nodeType":"YulFunctionCall","src":"4457:18:12"},{"arguments":[{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4480:10:12"},{"name":"memPtr","nodeType":"YulIdentifier","src":"4492:6:12"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4477:2:12"},"nodeType":"YulFunctionCall","src":"4477:22:12"}],"functionName":{"name":"or","nodeType":"YulIdentifier","src":"4454:2:12"},"nodeType":"YulFunctionCall","src":"4454:46:12"},"nodeType":"YulIf","src":"4451:72:12"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4539:2:12","type":"","value":"64"},{"name":"newFreePtr","nodeType":"YulIdentifier","src":"4543:10:12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4532:6:12"},"nodeType":"YulFunctionCall","src":"4532:22:12"},"nodeType":"YulExpressionStatement","src":"4532:22:12"},{"expression":{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4570:6:12"},{"name":"_3","nodeType":"YulIdentifier","src":"4578:2:12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4563:6:12"},"nodeType":"YulFunctionCall","src":"4563:18:12"},"nodeType":"YulExpressionStatement","src":"4563:18:12"},{"body":{"nodeType":"YulBlock","src":"4627:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4636:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4639:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4629:6:12"},"nodeType":"YulFunctionCall","src":"4629:12:12"},"nodeType":"YulExpressionStatement","src":"4629:12:12"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4604:2:12"},{"name":"_3","nodeType":"YulIdentifier","src":"4608:2:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4600:3:12"},"nodeType":"YulFunctionCall","src":"4600:11:12"},{"kind":"number","nodeType":"YulLiteral","src":"4613:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4596:3:12"},"nodeType":"YulFunctionCall","src":"4596:20:12"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"4618:7:12"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"4593:2:12"},"nodeType":"YulFunctionCall","src":"4593:33:12"},"nodeType":"YulIf","src":"4590:53:12"},{"expression":{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4669:6:12"},{"kind":"number","nodeType":"YulLiteral","src":"4677:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4665:3:12"},"nodeType":"YulFunctionCall","src":"4665:15:12"},{"arguments":[{"name":"_2","nodeType":"YulIdentifier","src":"4686:2:12"},{"kind":"number","nodeType":"YulLiteral","src":"4690:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4682:3:12"},"nodeType":"YulFunctionCall","src":"4682:11:12"},{"name":"_3","nodeType":"YulIdentifier","src":"4695:2:12"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"4652:12:12"},"nodeType":"YulFunctionCall","src":"4652:46:12"},"nodeType":"YulExpressionStatement","src":"4652:46:12"},{"expression":{"arguments":[{"arguments":[{"arguments":[{"name":"memPtr","nodeType":"YulIdentifier","src":"4722:6:12"},{"name":"_3","nodeType":"YulIdentifier","src":"4730:2:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4718:3:12"},"nodeType":"YulFunctionCall","src":"4718:15:12"},{"kind":"number","nodeType":"YulLiteral","src":"4735:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4714:3:12"},"nodeType":"YulFunctionCall","src":"4714:24:12"},{"kind":"number","nodeType":"YulLiteral","src":"4740:1:12","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4707:6:12"},"nodeType":"YulFunctionCall","src":"4707:35:12"},"nodeType":"YulExpressionStatement","src":"4707:35:12"},{"nodeType":"YulAssignment","src":"4751:16:12","value":{"name":"memPtr","nodeType":"YulIdentifier","src":"4761:6:12"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"4751:6:12"}]}]},"name":"abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3648:9:12","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"3659:7:12","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"3671:6:12","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3679:6:12","type":""},{"name":"value2","nodeType":"YulTypedName","src":"3687:6:12","type":""},{"name":"value3","nodeType":"YulTypedName","src":"3695:6:12","type":""}],"src":"3576:1197:12"},{"body":{"nodeType":"YulBlock","src":"4865:173:12","statements":[{"body":{"nodeType":"YulBlock","src":"4911:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4920:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"4923:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"4913:6:12"},"nodeType":"YulFunctionCall","src":"4913:12:12"},"nodeType":"YulExpressionStatement","src":"4913:12:12"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"4886:7:12"},{"name":"headStart","nodeType":"YulIdentifier","src":"4895:9:12"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"4882:3:12"},"nodeType":"YulFunctionCall","src":"4882:23:12"},{"kind":"number","nodeType":"YulLiteral","src":"4907:2:12","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"4878:3:12"},"nodeType":"YulFunctionCall","src":"4878:32:12"},"nodeType":"YulIf","src":"4875:52:12"},{"nodeType":"YulAssignment","src":"4936:39:12","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4965:9:12"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4946:18:12"},"nodeType":"YulFunctionCall","src":"4946:29:12"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"4936:6:12"}]},{"nodeType":"YulAssignment","src":"4984:48:12","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5017:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"5028:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5013:3:12"},"nodeType":"YulFunctionCall","src":"5013:18:12"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"4994:18:12"},"nodeType":"YulFunctionCall","src":"4994:38:12"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"4984:6:12"}]}]},"name":"abi_decode_tuple_t_addresst_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4823:9:12","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"4834:7:12","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"4846:6:12","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4854:6:12","type":""}],"src":"4778:260:12"},{"body":{"nodeType":"YulBlock","src":"5098:382:12","statements":[{"nodeType":"YulAssignment","src":"5108:22:12","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5122:1:12","type":"","value":"1"},{"name":"data","nodeType":"YulIdentifier","src":"5125:4:12"}],"functionName":{"name":"shr","nodeType":"YulIdentifier","src":"5118:3:12"},"nodeType":"YulFunctionCall","src":"5118:12:12"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"5108:6:12"}]},{"nodeType":"YulVariableDeclaration","src":"5139:38:12","value":{"arguments":[{"name":"data","nodeType":"YulIdentifier","src":"5169:4:12"},{"kind":"number","nodeType":"YulLiteral","src":"5175:1:12","type":"","value":"1"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5165:3:12"},"nodeType":"YulFunctionCall","src":"5165:12:12"},"variables":[{"name":"outOfPlaceEncoding","nodeType":"YulTypedName","src":"5143:18:12","type":""}]},{"body":{"nodeType":"YulBlock","src":"5216:31:12","statements":[{"nodeType":"YulAssignment","src":"5218:27:12","value":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5232:6:12"},{"kind":"number","nodeType":"YulLiteral","src":"5240:4:12","type":"","value":"0x7f"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5228:3:12"},"nodeType":"YulFunctionCall","src":"5228:17:12"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"5218:6:12"}]}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"5196:18:12"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"5189:6:12"},"nodeType":"YulFunctionCall","src":"5189:26:12"},"nodeType":"YulIf","src":"5186:61:12"},{"body":{"nodeType":"YulBlock","src":"5306:168:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5327:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5330:77:12","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5320:6:12"},"nodeType":"YulFunctionCall","src":"5320:88:12"},"nodeType":"YulExpressionStatement","src":"5320:88:12"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5428:1:12","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"5431:4:12","type":"","value":"0x22"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5421:6:12"},"nodeType":"YulFunctionCall","src":"5421:15:12"},"nodeType":"YulExpressionStatement","src":"5421:15:12"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5456:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5459:4:12","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5449:6:12"},"nodeType":"YulFunctionCall","src":"5449:15:12"},"nodeType":"YulExpressionStatement","src":"5449:15:12"}]},"condition":{"arguments":[{"name":"outOfPlaceEncoding","nodeType":"YulIdentifier","src":"5262:18:12"},{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5285:6:12"},{"kind":"number","nodeType":"YulLiteral","src":"5293:2:12","type":"","value":"32"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5282:2:12"},"nodeType":"YulFunctionCall","src":"5282:14:12"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"5259:2:12"},"nodeType":"YulFunctionCall","src":"5259:38:12"},"nodeType":"YulIf","src":"5256:218:12"}]},"name":"extract_byte_array_length","nodeType":"YulFunctionDefinition","parameters":[{"name":"data","nodeType":"YulTypedName","src":"5078:4:12","type":""}],"returnVariables":[{"name":"length","nodeType":"YulTypedName","src":"5087:6:12","type":""}],"src":"5043:437:12"},{"body":{"nodeType":"YulBlock","src":"5659:223:12","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5676:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"5687:2:12","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5669:6:12"},"nodeType":"YulFunctionCall","src":"5669:21:12"},"nodeType":"YulExpressionStatement","src":"5669:21:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5710:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"5721:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5706:3:12"},"nodeType":"YulFunctionCall","src":"5706:18:12"},{"kind":"number","nodeType":"YulLiteral","src":"5726:2:12","type":"","value":"33"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5699:6:12"},"nodeType":"YulFunctionCall","src":"5699:30:12"},"nodeType":"YulExpressionStatement","src":"5699:30:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5749:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"5760:2:12","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5745:3:12"},"nodeType":"YulFunctionCall","src":"5745:18:12"},{"hexValue":"4552433732313a20617070726f76616c20746f2063757272656e74206f776e65","kind":"string","nodeType":"YulLiteral","src":"5765:34:12","type":"","value":"ERC721: approval to current owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5738:6:12"},"nodeType":"YulFunctionCall","src":"5738:62:12"},"nodeType":"YulExpressionStatement","src":"5738:62:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5820:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"5831:2:12","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5816:3:12"},"nodeType":"YulFunctionCall","src":"5816:18:12"},{"hexValue":"72","kind":"string","nodeType":"YulLiteral","src":"5836:3:12","type":"","value":"r"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5809:6:12"},"nodeType":"YulFunctionCall","src":"5809:31:12"},"nodeType":"YulExpressionStatement","src":"5809:31:12"},{"nodeType":"YulAssignment","src":"5849:27:12","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5861:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"5872:3:12","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5857:3:12"},"nodeType":"YulFunctionCall","src":"5857:19:12"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5849:4:12"}]}]},"name":"abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5636:9:12","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5650:4:12","type":""}],"src":"5485:397:12"},{"body":{"nodeType":"YulBlock","src":"6061:251:12","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6078:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"6089:2:12","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6071:6:12"},"nodeType":"YulFunctionCall","src":"6071:21:12"},"nodeType":"YulExpressionStatement","src":"6071:21:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6112:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"6123:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6108:3:12"},"nodeType":"YulFunctionCall","src":"6108:18:12"},{"kind":"number","nodeType":"YulLiteral","src":"6128:2:12","type":"","value":"61"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6101:6:12"},"nodeType":"YulFunctionCall","src":"6101:30:12"},"nodeType":"YulExpressionStatement","src":"6101:30:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6151:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"6162:2:12","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6147:3:12"},"nodeType":"YulFunctionCall","src":"6147:18:12"},{"hexValue":"4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f","kind":"string","nodeType":"YulLiteral","src":"6167:34:12","type":"","value":"ERC721: approve caller is not to"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6140:6:12"},"nodeType":"YulFunctionCall","src":"6140:62:12"},"nodeType":"YulExpressionStatement","src":"6140:62:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6222:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"6233:2:12","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6218:3:12"},"nodeType":"YulFunctionCall","src":"6218:18:12"},{"hexValue":"6b656e206f776e6572206f7220617070726f76656420666f7220616c6c","kind":"string","nodeType":"YulLiteral","src":"6238:31:12","type":"","value":"ken owner or approved for all"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6211:6:12"},"nodeType":"YulFunctionCall","src":"6211:59:12"},"nodeType":"YulExpressionStatement","src":"6211:59:12"},{"nodeType":"YulAssignment","src":"6279:27:12","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6291:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"6302:3:12","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6287:3:12"},"nodeType":"YulFunctionCall","src":"6287:19:12"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6279:4:12"}]}]},"name":"abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6038:9:12","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6052:4:12","type":""}],"src":"5887:425:12"},{"body":{"nodeType":"YulBlock","src":"6491:235:12","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6508:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"6519:2:12","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6501:6:12"},"nodeType":"YulFunctionCall","src":"6501:21:12"},"nodeType":"YulExpressionStatement","src":"6501:21:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6542:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"6553:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6538:3:12"},"nodeType":"YulFunctionCall","src":"6538:18:12"},{"kind":"number","nodeType":"YulLiteral","src":"6558:2:12","type":"","value":"45"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6531:6:12"},"nodeType":"YulFunctionCall","src":"6531:30:12"},"nodeType":"YulExpressionStatement","src":"6531:30:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6581:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"6592:2:12","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6577:3:12"},"nodeType":"YulFunctionCall","src":"6577:18:12"},{"hexValue":"4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e65","kind":"string","nodeType":"YulLiteral","src":"6597:34:12","type":"","value":"ERC721: caller is not token owne"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6570:6:12"},"nodeType":"YulFunctionCall","src":"6570:62:12"},"nodeType":"YulExpressionStatement","src":"6570:62:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6652:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"6663:2:12","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6648:3:12"},"nodeType":"YulFunctionCall","src":"6648:18:12"},{"hexValue":"72206f7220617070726f766564","kind":"string","nodeType":"YulLiteral","src":"6668:15:12","type":"","value":"r or approved"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6641:6:12"},"nodeType":"YulFunctionCall","src":"6641:43:12"},"nodeType":"YulExpressionStatement","src":"6641:43:12"},{"nodeType":"YulAssignment","src":"6693:27:12","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6705:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"6716:3:12","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6701:3:12"},"nodeType":"YulFunctionCall","src":"6701:19:12"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6693:4:12"}]}]},"name":"abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6468:9:12","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6482:4:12","type":""}],"src":"6317:409:12"},{"body":{"nodeType":"YulBlock","src":"6905:174:12","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6922:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"6933:2:12","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6915:6:12"},"nodeType":"YulFunctionCall","src":"6915:21:12"},"nodeType":"YulExpressionStatement","src":"6915:21:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6956:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"6967:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6952:3:12"},"nodeType":"YulFunctionCall","src":"6952:18:12"},{"kind":"number","nodeType":"YulLiteral","src":"6972:2:12","type":"","value":"24"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6945:6:12"},"nodeType":"YulFunctionCall","src":"6945:30:12"},"nodeType":"YulExpressionStatement","src":"6945:30:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6995:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"7006:2:12","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6991:3:12"},"nodeType":"YulFunctionCall","src":"6991:18:12"},{"hexValue":"4552433732313a20696e76616c696420746f6b656e204944","kind":"string","nodeType":"YulLiteral","src":"7011:26:12","type":"","value":"ERC721: invalid token ID"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6984:6:12"},"nodeType":"YulFunctionCall","src":"6984:54:12"},"nodeType":"YulExpressionStatement","src":"6984:54:12"},{"nodeType":"YulAssignment","src":"7047:26:12","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7059:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"7070:2:12","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7055:3:12"},"nodeType":"YulFunctionCall","src":"7055:18:12"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7047:4:12"}]}]},"name":"abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6882:9:12","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6896:4:12","type":""}],"src":"6731:348:12"},{"body":{"nodeType":"YulBlock","src":"7258:231:12","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7275:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"7286:2:12","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7268:6:12"},"nodeType":"YulFunctionCall","src":"7268:21:12"},"nodeType":"YulExpressionStatement","src":"7268:21:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7309:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"7320:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7305:3:12"},"nodeType":"YulFunctionCall","src":"7305:18:12"},{"kind":"number","nodeType":"YulLiteral","src":"7325:2:12","type":"","value":"41"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7298:6:12"},"nodeType":"YulFunctionCall","src":"7298:30:12"},"nodeType":"YulExpressionStatement","src":"7298:30:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7348:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"7359:2:12","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7344:3:12"},"nodeType":"YulFunctionCall","src":"7344:18:12"},{"hexValue":"4552433732313a2061646472657373207a65726f206973206e6f742061207661","kind":"string","nodeType":"YulLiteral","src":"7364:34:12","type":"","value":"ERC721: address zero is not a va"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7337:6:12"},"nodeType":"YulFunctionCall","src":"7337:62:12"},"nodeType":"YulExpressionStatement","src":"7337:62:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7419:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"7430:2:12","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7415:3:12"},"nodeType":"YulFunctionCall","src":"7415:18:12"},{"hexValue":"6c6964206f776e6572","kind":"string","nodeType":"YulLiteral","src":"7435:11:12","type":"","value":"lid owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7408:6:12"},"nodeType":"YulFunctionCall","src":"7408:39:12"},"nodeType":"YulExpressionStatement","src":"7408:39:12"},{"nodeType":"YulAssignment","src":"7456:27:12","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7468:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"7479:3:12","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7464:3:12"},"nodeType":"YulFunctionCall","src":"7464:19:12"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7456:4:12"}]}]},"name":"abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7235:9:12","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7249:4:12","type":""}],"src":"7084:405:12"},{"body":{"nodeType":"YulBlock","src":"7681:309:12","statements":[{"nodeType":"YulVariableDeclaration","src":"7691:27:12","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7711:6:12"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7705:5:12"},"nodeType":"YulFunctionCall","src":"7705:13:12"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7695:6:12","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7766:6:12"},{"kind":"number","nodeType":"YulLiteral","src":"7774:4:12","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7762:3:12"},"nodeType":"YulFunctionCall","src":"7762:17:12"},{"name":"pos","nodeType":"YulIdentifier","src":"7781:3:12"},{"name":"length","nodeType":"YulIdentifier","src":"7786:6:12"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7727:34:12"},"nodeType":"YulFunctionCall","src":"7727:66:12"},"nodeType":"YulExpressionStatement","src":"7727:66:12"},{"nodeType":"YulVariableDeclaration","src":"7802:29:12","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7819:3:12"},{"name":"length","nodeType":"YulIdentifier","src":"7824:6:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7815:3:12"},"nodeType":"YulFunctionCall","src":"7815:16:12"},"variables":[{"name":"end_1","nodeType":"YulTypedName","src":"7806:5:12","type":""}]},{"nodeType":"YulVariableDeclaration","src":"7840:29:12","value":{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7862:6:12"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7856:5:12"},"nodeType":"YulFunctionCall","src":"7856:13:12"},"variables":[{"name":"length_1","nodeType":"YulTypedName","src":"7844:8:12","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"7917:6:12"},{"kind":"number","nodeType":"YulLiteral","src":"7925:4:12","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7913:3:12"},"nodeType":"YulFunctionCall","src":"7913:17:12"},{"name":"end_1","nodeType":"YulIdentifier","src":"7932:5:12"},{"name":"length_1","nodeType":"YulIdentifier","src":"7939:8:12"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7878:34:12"},"nodeType":"YulFunctionCall","src":"7878:70:12"},"nodeType":"YulExpressionStatement","src":"7878:70:12"},{"nodeType":"YulAssignment","src":"7957:27:12","value":{"arguments":[{"name":"end_1","nodeType":"YulIdentifier","src":"7968:5:12"},{"name":"length_1","nodeType":"YulIdentifier","src":"7975:8:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7964:3:12"},"nodeType":"YulFunctionCall","src":"7964:20:12"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"7957:3:12"}]}]},"name":"abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"7649:3:12","type":""},{"name":"value1","nodeType":"YulTypedName","src":"7654:6:12","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7662:6:12","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"7673:3:12","type":""}],"src":"7494:496:12"},{"body":{"nodeType":"YulBlock","src":"8169:227:12","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8186:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"8197:2:12","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8179:6:12"},"nodeType":"YulFunctionCall","src":"8179:21:12"},"nodeType":"YulExpressionStatement","src":"8179:21:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8220:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"8231:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8216:3:12"},"nodeType":"YulFunctionCall","src":"8216:18:12"},{"kind":"number","nodeType":"YulLiteral","src":"8236:2:12","type":"","value":"37"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8209:6:12"},"nodeType":"YulFunctionCall","src":"8209:30:12"},"nodeType":"YulExpressionStatement","src":"8209:30:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8259:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"8270:2:12","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8255:3:12"},"nodeType":"YulFunctionCall","src":"8255:18:12"},{"hexValue":"4552433732313a207472616e736665722066726f6d20696e636f727265637420","kind":"string","nodeType":"YulLiteral","src":"8275:34:12","type":"","value":"ERC721: transfer from incorrect "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8248:6:12"},"nodeType":"YulFunctionCall","src":"8248:62:12"},"nodeType":"YulExpressionStatement","src":"8248:62:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8330:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"8341:2:12","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8326:3:12"},"nodeType":"YulFunctionCall","src":"8326:18:12"},{"hexValue":"6f776e6572","kind":"string","nodeType":"YulLiteral","src":"8346:7:12","type":"","value":"owner"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8319:6:12"},"nodeType":"YulFunctionCall","src":"8319:35:12"},"nodeType":"YulExpressionStatement","src":"8319:35:12"},{"nodeType":"YulAssignment","src":"8363:27:12","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8375:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"8386:3:12","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8371:3:12"},"nodeType":"YulFunctionCall","src":"8371:19:12"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8363:4:12"}]}]},"name":"abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8146:9:12","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8160:4:12","type":""}],"src":"7995:401:12"},{"body":{"nodeType":"YulBlock","src":"8575:226:12","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8592:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"8603:2:12","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8585:6:12"},"nodeType":"YulFunctionCall","src":"8585:21:12"},"nodeType":"YulExpressionStatement","src":"8585:21:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8626:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"8637:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8622:3:12"},"nodeType":"YulFunctionCall","src":"8622:18:12"},{"kind":"number","nodeType":"YulLiteral","src":"8642:2:12","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8615:6:12"},"nodeType":"YulFunctionCall","src":"8615:30:12"},"nodeType":"YulExpressionStatement","src":"8615:30:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8665:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"8676:2:12","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8661:3:12"},"nodeType":"YulFunctionCall","src":"8661:18:12"},{"hexValue":"4552433732313a207472616e7366657220746f20746865207a65726f20616464","kind":"string","nodeType":"YulLiteral","src":"8681:34:12","type":"","value":"ERC721: transfer to the zero add"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8654:6:12"},"nodeType":"YulFunctionCall","src":"8654:62:12"},"nodeType":"YulExpressionStatement","src":"8654:62:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8736:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"8747:2:12","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8732:3:12"},"nodeType":"YulFunctionCall","src":"8732:18:12"},{"hexValue":"72657373","kind":"string","nodeType":"YulLiteral","src":"8752:6:12","type":"","value":"ress"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8725:6:12"},"nodeType":"YulFunctionCall","src":"8725:34:12"},"nodeType":"YulExpressionStatement","src":"8725:34:12"},{"nodeType":"YulAssignment","src":"8768:27:12","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8780:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"8791:3:12","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8776:3:12"},"nodeType":"YulFunctionCall","src":"8776:19:12"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8768:4:12"}]}]},"name":"abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8552:9:12","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8566:4:12","type":""}],"src":"8401:400:12"},{"body":{"nodeType":"YulBlock","src":"8980:175:12","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8997:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"9008:2:12","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8990:6:12"},"nodeType":"YulFunctionCall","src":"8990:21:12"},"nodeType":"YulExpressionStatement","src":"8990:21:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9031:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"9042:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9027:3:12"},"nodeType":"YulFunctionCall","src":"9027:18:12"},{"kind":"number","nodeType":"YulLiteral","src":"9047:2:12","type":"","value":"25"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9020:6:12"},"nodeType":"YulFunctionCall","src":"9020:30:12"},"nodeType":"YulExpressionStatement","src":"9020:30:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9070:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"9081:2:12","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9066:3:12"},"nodeType":"YulFunctionCall","src":"9066:18:12"},{"hexValue":"4552433732313a20617070726f766520746f2063616c6c6572","kind":"string","nodeType":"YulLiteral","src":"9086:27:12","type":"","value":"ERC721: approve to caller"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9059:6:12"},"nodeType":"YulFunctionCall","src":"9059:55:12"},"nodeType":"YulExpressionStatement","src":"9059:55:12"},{"nodeType":"YulAssignment","src":"9123:26:12","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9135:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"9146:2:12","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9131:3:12"},"nodeType":"YulFunctionCall","src":"9131:18:12"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9123:4:12"}]}]},"name":"abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8957:9:12","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8971:4:12","type":""}],"src":"8806:349:12"},{"body":{"nodeType":"YulBlock","src":"9334:240:12","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9351:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"9362:2:12","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9344:6:12"},"nodeType":"YulFunctionCall","src":"9344:21:12"},"nodeType":"YulExpressionStatement","src":"9344:21:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9385:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"9396:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9381:3:12"},"nodeType":"YulFunctionCall","src":"9381:18:12"},{"kind":"number","nodeType":"YulLiteral","src":"9401:2:12","type":"","value":"50"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9374:6:12"},"nodeType":"YulFunctionCall","src":"9374:30:12"},"nodeType":"YulExpressionStatement","src":"9374:30:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9424:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"9435:2:12","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9420:3:12"},"nodeType":"YulFunctionCall","src":"9420:18:12"},{"hexValue":"4552433732313a207472616e7366657220746f206e6f6e204552433732315265","kind":"string","nodeType":"YulLiteral","src":"9440:34:12","type":"","value":"ERC721: transfer to non ERC721Re"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9413:6:12"},"nodeType":"YulFunctionCall","src":"9413:62:12"},"nodeType":"YulExpressionStatement","src":"9413:62:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9495:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"9506:2:12","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9491:3:12"},"nodeType":"YulFunctionCall","src":"9491:18:12"},{"hexValue":"63656976657220696d706c656d656e746572","kind":"string","nodeType":"YulLiteral","src":"9511:20:12","type":"","value":"ceiver implementer"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9484:6:12"},"nodeType":"YulFunctionCall","src":"9484:48:12"},"nodeType":"YulExpressionStatement","src":"9484:48:12"},{"nodeType":"YulAssignment","src":"9541:27:12","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"9553:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"9564:3:12","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9549:3:12"},"nodeType":"YulFunctionCall","src":"9549:19:12"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"9541:4:12"}]}]},"name":"abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"9311:9:12","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"9325:4:12","type":""}],"src":"9160:414:12"},{"body":{"nodeType":"YulBlock","src":"9611:152:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9628:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9631:77:12","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9621:6:12"},"nodeType":"YulFunctionCall","src":"9621:88:12"},"nodeType":"YulExpressionStatement","src":"9621:88:12"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9725:1:12","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"9728:4:12","type":"","value":"0x12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9718:6:12"},"nodeType":"YulFunctionCall","src":"9718:15:12"},"nodeType":"YulExpressionStatement","src":"9718:15:12"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9749:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9752:4:12","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9742:6:12"},"nodeType":"YulFunctionCall","src":"9742:15:12"},"nodeType":"YulExpressionStatement","src":"9742:15:12"}]},"name":"panic_error_0x12","nodeType":"YulFunctionDefinition","src":"9579:184:12"},{"body":{"nodeType":"YulBlock","src":"9800:152:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9817:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9820:77:12","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9810:6:12"},"nodeType":"YulFunctionCall","src":"9810:88:12"},"nodeType":"YulExpressionStatement","src":"9810:88:12"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9914:1:12","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"9917:4:12","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"9907:6:12"},"nodeType":"YulFunctionCall","src":"9907:15:12"},"nodeType":"YulExpressionStatement","src":"9907:15:12"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9938:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"9941:4:12","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9931:6:12"},"nodeType":"YulFunctionCall","src":"9931:15:12"},"nodeType":"YulExpressionStatement","src":"9931:15:12"}]},"name":"panic_error_0x11","nodeType":"YulFunctionDefinition","src":"9768:184:12"},{"body":{"nodeType":"YulBlock","src":"10006:79:12","statements":[{"nodeType":"YulAssignment","src":"10016:17:12","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10028:1:12"},{"name":"y","nodeType":"YulIdentifier","src":"10031:1:12"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10024:3:12"},"nodeType":"YulFunctionCall","src":"10024:9:12"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"10016:4:12"}]},{"body":{"nodeType":"YulBlock","src":"10057:22:12","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10059:16:12"},"nodeType":"YulFunctionCall","src":"10059:18:12"},"nodeType":"YulExpressionStatement","src":"10059:18:12"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"10048:4:12"},{"name":"x","nodeType":"YulIdentifier","src":"10054:1:12"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10045:2:12"},"nodeType":"YulFunctionCall","src":"10045:11:12"},"nodeType":"YulIf","src":"10042:37:12"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"9988:1:12","type":""},{"name":"y","nodeType":"YulTypedName","src":"9991:1:12","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"9997:4:12","type":""}],"src":"9957:128:12"},{"body":{"nodeType":"YulBlock","src":"10138:77:12","statements":[{"nodeType":"YulAssignment","src":"10148:16:12","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10159:1:12"},{"name":"y","nodeType":"YulIdentifier","src":"10162:1:12"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10155:3:12"},"nodeType":"YulFunctionCall","src":"10155:9:12"},"variableNames":[{"name":"sum","nodeType":"YulIdentifier","src":"10148:3:12"}]},{"body":{"nodeType":"YulBlock","src":"10187:22:12","statements":[{"expression":{"arguments":[],"functionName":{"name":"panic_error_0x11","nodeType":"YulIdentifier","src":"10189:16:12"},"nodeType":"YulFunctionCall","src":"10189:18:12"},"nodeType":"YulExpressionStatement","src":"10189:18:12"}]},"condition":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"10179:1:12"},{"name":"sum","nodeType":"YulIdentifier","src":"10182:3:12"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"10176:2:12"},"nodeType":"YulFunctionCall","src":"10176:10:12"},"nodeType":"YulIf","src":"10173:36:12"}]},"name":"checked_add_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"10121:1:12","type":""},{"name":"y","nodeType":"YulTypedName","src":"10124:1:12","type":""}],"returnVariables":[{"name":"sum","nodeType":"YulTypedName","src":"10130:3:12","type":""}],"src":"10090:125:12"},{"body":{"nodeType":"YulBlock","src":"10423:309:12","statements":[{"nodeType":"YulVariableDeclaration","src":"10433:52:12","value":{"kind":"number","nodeType":"YulLiteral","src":"10443:42:12","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"10437:2:12","type":""}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10501:9:12"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"10516:6:12"},{"name":"_1","nodeType":"YulIdentifier","src":"10524:2:12"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10512:3:12"},"nodeType":"YulFunctionCall","src":"10512:15:12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10494:6:12"},"nodeType":"YulFunctionCall","src":"10494:34:12"},"nodeType":"YulExpressionStatement","src":"10494:34:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10548:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"10559:2:12","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10544:3:12"},"nodeType":"YulFunctionCall","src":"10544:18:12"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"10568:6:12"},{"name":"_1","nodeType":"YulIdentifier","src":"10576:2:12"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"10564:3:12"},"nodeType":"YulFunctionCall","src":"10564:15:12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10537:6:12"},"nodeType":"YulFunctionCall","src":"10537:43:12"},"nodeType":"YulExpressionStatement","src":"10537:43:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10600:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"10611:2:12","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10596:3:12"},"nodeType":"YulFunctionCall","src":"10596:18:12"},{"name":"value2","nodeType":"YulIdentifier","src":"10616:6:12"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10589:6:12"},"nodeType":"YulFunctionCall","src":"10589:34:12"},"nodeType":"YulExpressionStatement","src":"10589:34:12"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10643:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"10654:2:12","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10639:3:12"},"nodeType":"YulFunctionCall","src":"10639:18:12"},{"kind":"number","nodeType":"YulLiteral","src":"10659:3:12","type":"","value":"128"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"10632:6:12"},"nodeType":"YulFunctionCall","src":"10632:31:12"},"nodeType":"YulExpressionStatement","src":"10632:31:12"},{"nodeType":"YulAssignment","src":"10672:54:12","value":{"arguments":[{"name":"value3","nodeType":"YulIdentifier","src":"10698:6:12"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10710:9:12"},{"kind":"number","nodeType":"YulLiteral","src":"10721:3:12","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"10706:3:12"},"nodeType":"YulFunctionCall","src":"10706:19:12"}],"functionName":{"name":"abi_encode_string","nodeType":"YulIdentifier","src":"10680:17:12"},"nodeType":"YulFunctionCall","src":"10680:46:12"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"10672:4:12"}]}]},"name":"abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10368:9:12","type":""},{"name":"value3","nodeType":"YulTypedName","src":"10379:6:12","type":""},{"name":"value2","nodeType":"YulTypedName","src":"10387:6:12","type":""},{"name":"value1","nodeType":"YulTypedName","src":"10395:6:12","type":""},{"name":"value0","nodeType":"YulTypedName","src":"10403:6:12","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"10414:4:12","type":""}],"src":"10220:512:12"},{"body":{"nodeType":"YulBlock","src":"10817:169:12","statements":[{"body":{"nodeType":"YulBlock","src":"10863:16:12","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"10872:1:12","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"10875:1:12","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"10865:6:12"},"nodeType":"YulFunctionCall","src":"10865:12:12"},"nodeType":"YulExpressionStatement","src":"10865:12:12"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"10838:7:12"},{"name":"headStart","nodeType":"YulIdentifier","src":"10847:9:12"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"10834:3:12"},"nodeType":"YulFunctionCall","src":"10834:23:12"},{"kind":"number","nodeType":"YulLiteral","src":"10859:2:12","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"10830:3:12"},"nodeType":"YulFunctionCall","src":"10830:32:12"},"nodeType":"YulIf","src":"10827:52:12"},{"nodeType":"YulVariableDeclaration","src":"10888:29:12","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"10907:9:12"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"10901:5:12"},"nodeType":"YulFunctionCall","src":"10901:16:12"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"10892:5:12","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"10950:5:12"}],"functionName":{"name":"validator_revert_bytes4","nodeType":"YulIdentifier","src":"10926:23:12"},"nodeType":"YulFunctionCall","src":"10926:30:12"},"nodeType":"YulExpressionStatement","src":"10926:30:12"},{"nodeType":"YulAssignment","src":"10965:15:12","value":{"name":"value","nodeType":"YulIdentifier","src":"10975:5:12"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"10965:6:12"}]}]},"name":"abi_decode_tuple_t_bytes4_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"10783:9:12","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"10794:7:12","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"10806:6:12","type":""}],"src":"10737:249:12"}]},"contents":"{\n    { }\n    function validator_revert_bytes4(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_string(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value1 := value\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n        let _3 := calldataload(_2)\n        if gt(_3, _1) { panic_error_0x41() }\n        let _4 := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, _3)\n        if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n        calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n        mstore(add(add(memPtr, _3), 32), 0)\n        value3 := memPtr\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"ERC721: approval to current owne\")\n        mstore(add(headStart, 96), \"r\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c6e14a63ffb144eeef7cce6988e5dce07c60a7e0a7b1ef25dbe18c61483e0a83__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 61)\n        mstore(add(headStart, 64), \"ERC721: approve caller is not to\")\n        mstore(add(headStart, 96), \"ken owner or approved for all\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_12a8e5623d251e191fe4a291d9a59bcc01a4db7a1f5c20fc8de44358c18308af__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 45)\n        mstore(add(headStart, 64), \"ERC721: caller is not token owne\")\n        mstore(add(headStart, 96), \"r or approved\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"ERC721: invalid token ID\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"ERC721: address zero is not a va\")\n        mstore(add(headStart, 96), \"lid owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        let length_1 := mload(value1)\n        copy_memory_to_memory_with_cleanup(add(value1, 0x20), end_1, length_1)\n        end := add(end_1, length_1)\n    }\n    function abi_encode_tuple_t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 37)\n        mstore(add(headStart, 64), \"ERC721: transfer from incorrect \")\n        mstore(add(headStart, 96), \"owner\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"ERC721: transfer to the zero add\")\n        mstore(add(headStart, 96), \"ress\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"ERC721: approve to caller\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 50)\n        mstore(add(headStart, 64), \"ERC721: transfer to non ERC721Re\")\n        mstore(add(headStart, 96), \"ceiver implementer\")\n        tail := add(headStart, 128)\n    }\n    function panic_error_0x12()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x12)\n        revert(0, 0x24)\n    }\n    function panic_error_0x11()\n    {\n        mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n        mstore(4, 0x11)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x) { panic_error_0x11() }\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        sum := add(x, y)\n        if gt(x, sum) { panic_error_0x11() }\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), 128)\n        tail := abi_encode_string(value3, add(headStart, 128))\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_bytes4(value)\n        value0 := value\n    }\n}","id":12,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101c3578063b88d4fde146101d6578063c87b56dd146101e9578063e985e9c5146101fc57600080fd5b80636352211e1461018757806370a082311461019a57806395d89b41146101bb57600080fd5b8063095ea7b3116100bd578063095ea7b31461014c57806323b872dd1461016157806342842e0e1461017457600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f23660046110f3565b610238565b60405190151581526020015b60405180910390f35b61011461031d565b6040516101039190611160565b61013461012f366004611173565b6103af565b6040516001600160a01b039091168152602001610103565b61015f61015a3660046111a8565b6103d6565b005b61015f61016f3660046111d2565b61052a565b61015f6101823660046111d2565b6105b1565b610134610195366004611173565b6105cc565b6101ad6101a836600461120e565b610631565b604051908152602001610103565b6101146106cb565b61015f6101d1366004611229565b6106da565b61015f6101e436600461127b565b6106e9565b6101146101f7366004611173565b610777565b6100f761020a366004611357565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102cb57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061031757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606000805461032c9061138a565b80601f01602080910402602001604051908101604052809291908181526020018280546103589061138a565b80156103a55780601f1061037a576101008083540402835291602001916103a5565b820191906000526020600020905b81548152906001019060200180831161038857829003601f168201915b5050505050905090565b60006103ba826107eb565b506000908152600460205260409020546001600160a01b031690565b60006103e1826105cc565b9050806001600160a01b0316836001600160a01b03160361046f5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b336001600160a01b03821614806104a957506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b61051b5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610466565b6105258383610852565b505050565b61053433826108d8565b6105a65760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401610466565b610525838383610957565b610525838383604051806020016040528060008152506106e9565b6000818152600260205260408120546001600160a01b0316806103175760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610466565b60006001600160a01b0382166106af5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610466565b506001600160a01b031660009081526003602052604090205490565b60606001805461032c9061138a565b6106e5338383610ba5565b5050565b6106f333836108d8565b6107655760405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206f7220617070726f766564000000000000000000000000000000000000006064820152608401610466565b61077184848484610c91565b50505050565b6060610782826107eb565b600061079960408051602081019091526000815290565b905060008151116107b957604051806020016040528060008152506107e4565b806107c384610d1a565b6040516020016107d49291906113c4565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b031661084f5760405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610466565b50565b600081815260046020526040902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038416908117909155819061089f826105cc565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806108e4836105cc565b9050806001600160a01b0316846001600160a01b0316148061092b57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b8061094f5750836001600160a01b0316610944846103af565b6001600160a01b0316145b949350505050565b826001600160a01b031661096a826105cc565b6001600160a01b0316146109e65760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610466565b6001600160a01b038216610a615760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610466565b610a6e8383836001610dba565b826001600160a01b0316610a81826105cc565b6001600160a01b031614610afd5760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610466565b600081815260046020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b031603610c065760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610466565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610c9c848484610957565b610ca884848484610e42565b6107715760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610466565b60606000610d2783610fe3565b600101905060008167ffffffffffffffff811115610d4757610d47611265565b6040519080825280601f01601f191660200182016040528015610d71576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610d7b57509392505050565b6001811115610771576001600160a01b03841615610e00576001600160a01b03841660009081526003602052604081208054839290610dfa908490611409565b90915550505b6001600160a01b03831615610771576001600160a01b03831660009081526003602052604081208054839290610e3790849061141c565b909155505050505050565b60006001600160a01b0384163b15610fd8576040517f150b7a020000000000000000000000000000000000000000000000000000000081526001600160a01b0385169063150b7a0290610e9f90339089908890889060040161142f565b6020604051808303816000875af1925050508015610eda575060408051601f3d908101601f19168201909252610ed79181019061146b565b60015b610f8d573d808015610f08576040519150601f19603f3d011682016040523d82523d6000602084013e610f0d565b606091505b508051600003610f855760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610466565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a020000000000000000000000000000000000000000000000000000000014905061094f565b506001949350505050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061102c577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611058576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061107657662386f26fc10000830492506010015b6305f5e100831061108e576305f5e100830492506008015b61271083106110a257612710830492506004015b606483106110b4576064830492506002015b600a83106103175760010192915050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461084f57600080fd5b60006020828403121561110557600080fd5b81356107e4816110c5565b60005b8381101561112b578181015183820152602001611113565b50506000910152565b6000815180845261114c816020860160208601611110565b601f01601f19169290920160200192915050565b6020815260006107e46020830184611134565b60006020828403121561118557600080fd5b5035919050565b80356001600160a01b03811681146111a357600080fd5b919050565b600080604083850312156111bb57600080fd5b6111c48361118c565b946020939093013593505050565b6000806000606084860312156111e757600080fd5b6111f08461118c565b92506111fe6020850161118c565b9150604084013590509250925092565b60006020828403121561122057600080fd5b6107e48261118c565b6000806040838503121561123c57600080fd5b6112458361118c565b91506020830135801515811461125a57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561129157600080fd5b61129a8561118c565b93506112a86020860161118c565b925060408501359150606085013567ffffffffffffffff808211156112cc57600080fd5b818701915087601f8301126112e057600080fd5b8135818111156112f2576112f2611265565b604051601f8201601f19908116603f0116810190838211818310171561131a5761131a611265565b816040528281528a602084870101111561133357600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561136a57600080fd5b6113738361118c565b91506113816020840161118c565b90509250929050565b600181811c9082168061139e57607f821691505b6020821081036113be57634e487b7160e01b600052602260045260246000fd5b50919050565b600083516113d6818460208801611110565b8351908301906113ea818360208801611110565b01949350505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610317576103176113f3565b80820180821115610317576103176113f3565b60006001600160a01b038087168352808616602084015250836040830152608060608301526114616080830184611134565b9695505050505050565b60006020828403121561147d57600080fd5b81516107e4816110c556fea2646970667358221220ecc078c6139c732eb51f26627972b6cdd1231665b2bec499233b1089304b1ebe64736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1C3 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x1D6 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x1E9 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x1FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x95EA7B3 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x10C JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x121 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0xF2 CALLDATASIZE PUSH1 0x4 PUSH2 0x10F3 JUMP JUMPDEST PUSH2 0x238 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x114 PUSH2 0x31D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x103 SWAP2 SWAP1 PUSH2 0x1160 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0x1173 JUMP JUMPDEST PUSH2 0x3AF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST PUSH2 0x15F PUSH2 0x15A CALLDATASIZE PUSH1 0x4 PUSH2 0x11A8 JUMP JUMPDEST PUSH2 0x3D6 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15F PUSH2 0x16F CALLDATASIZE PUSH1 0x4 PUSH2 0x11D2 JUMP JUMPDEST PUSH2 0x52A JUMP JUMPDEST PUSH2 0x15F PUSH2 0x182 CALLDATASIZE PUSH1 0x4 PUSH2 0x11D2 JUMP JUMPDEST PUSH2 0x5B1 JUMP JUMPDEST PUSH2 0x134 PUSH2 0x195 CALLDATASIZE PUSH1 0x4 PUSH2 0x1173 JUMP JUMPDEST PUSH2 0x5CC JUMP JUMPDEST PUSH2 0x1AD PUSH2 0x1A8 CALLDATASIZE PUSH1 0x4 PUSH2 0x120E JUMP JUMPDEST PUSH2 0x631 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x103 JUMP JUMPDEST PUSH2 0x114 PUSH2 0x6CB JUMP JUMPDEST PUSH2 0x15F PUSH2 0x1D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1229 JUMP JUMPDEST PUSH2 0x6DA JUMP JUMPDEST PUSH2 0x15F PUSH2 0x1E4 CALLDATASIZE PUSH1 0x4 PUSH2 0x127B JUMP JUMPDEST PUSH2 0x6E9 JUMP JUMPDEST PUSH2 0x114 PUSH2 0x1F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1173 JUMP JUMPDEST PUSH2 0x777 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x20A CALLDATASIZE PUSH1 0x4 PUSH2 0x1357 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x80AC58CD00000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x2CB JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x5B5E139F00000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x317 JUMPI POP PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x32C SWAP1 PUSH2 0x138A JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x358 SWAP1 PUSH2 0x138A JUMP JUMPDEST DUP1 ISZERO PUSH2 0x3A5 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x37A JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x3A5 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 0x388 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3BA DUP3 PUSH2 0x7EB JUMP JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3E1 DUP3 PUSH2 0x5CC JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x46F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7200000000000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x4A9 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST PUSH2 0x51B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206F7220617070726F76656420666F7220616C6C000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x466 JUMP JUMPDEST PUSH2 0x525 DUP4 DUP4 PUSH2 0x852 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x534 CALLER DUP3 PUSH2 0x8D8 JUMP JUMPDEST PUSH2 0x5A6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72206F7220617070726F76656400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x466 JUMP JUMPDEST PUSH2 0x525 DUP4 DUP4 DUP4 PUSH2 0x957 JUMP JUMPDEST PUSH2 0x525 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x6E9 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x317 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x466 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x6AF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6C6964206F776E65720000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x466 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x1 DUP1 SLOAD PUSH2 0x32C SWAP1 PUSH2 0x138A JUMP JUMPDEST PUSH2 0x6E5 CALLER DUP4 DUP4 PUSH2 0xBA5 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x6F3 CALLER DUP4 PUSH2 0x8D8 JUMP JUMPDEST PUSH2 0x765 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72206F7220617070726F76656400000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x466 JUMP JUMPDEST PUSH2 0x771 DUP5 DUP5 DUP5 DUP5 PUSH2 0xC91 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x782 DUP3 PUSH2 0x7EB JUMP JUMPDEST PUSH1 0x0 PUSH2 0x799 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x7B9 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x7E4 JUMP JUMPDEST DUP1 PUSH2 0x7C3 DUP5 PUSH2 0xD1A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x7D4 SWAP3 SWAP2 SWAP1 PUSH2 0x13C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x84F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20696E76616C696420746F6B656E2049440000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x466 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x89F DUP3 PUSH2 0x5CC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x8E4 DUP4 PUSH2 0x5CC JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x92B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP9 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST DUP1 PUSH2 0x94F JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x944 DUP5 PUSH2 0x3AF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x96A DUP3 PUSH2 0x5CC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x9E6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x466 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xA61 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x7265737300000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x466 JUMP JUMPDEST PUSH2 0xA6E DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0xDBA JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xA81 DUP3 PUSH2 0x5CC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xAFD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6F776E6572000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x466 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP1 DUP2 AND SWAP1 SWAP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 DUP2 AND DUP1 DUP7 MSTORE PUSH1 0x3 DUP6 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE SWAP1 DUP8 AND DUP1 DUP7 MSTORE DUP4 DUP7 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE DUP7 DUP7 MSTORE PUSH1 0x2 SWAP1 SWAP5 MSTORE DUP3 DUP6 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 AND DUP5 OR SWAP1 SWAP2 SSTORE SWAP1 MLOAD DUP5 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0xC06 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x466 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xC9C DUP5 DUP5 DUP5 PUSH2 0x957 JUMP JUMPDEST PUSH2 0xCA8 DUP5 DUP5 DUP5 DUP5 PUSH2 0xE42 JUMP JUMPDEST PUSH2 0x771 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x466 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xD27 DUP4 PUSH2 0xFE3 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD47 JUMPI PUSH2 0xD47 PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD71 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH32 0x3031323334353637383961626364656600000000000000000000000000000000 PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0xD7B JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x771 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO PUSH2 0xE00 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0xDFA SWAP1 DUP5 SWAP1 PUSH2 0x1409 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO PUSH2 0x771 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP4 SWAP3 SWAP1 PUSH2 0xE37 SWAP1 DUP5 SWAP1 PUSH2 0x141C JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0xFD8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xE9F SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x142F JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xEDA JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xED7 SWAP2 DUP2 ADD SWAP1 PUSH2 0x146B JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xF8D JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xF08 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 0xF0D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0xF85 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x32 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x63656976657220696D706C656D656E7465720000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x466 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x150B7A0200000000000000000000000000000000000000000000000000000000 EQ SWAP1 POP PUSH2 0x94F JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 LT PUSH2 0x102C JUMPI PUSH27 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F010000000000000000 DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 LT PUSH2 0x1058 JUMPI PUSH14 0x4EE2D6D415B85ACEF8100000000 DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x1076 JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x108E JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x10A2 JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x10B4 JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x317 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x84F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1105 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x7E4 DUP2 PUSH2 0x10C5 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x112B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1113 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x114C DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1110 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x7E4 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1134 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1185 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x11A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x11BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11C4 DUP4 PUSH2 0x118C JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x11E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x11F0 DUP5 PUSH2 0x118C JUMP JUMPDEST SWAP3 POP PUSH2 0x11FE PUSH1 0x20 DUP6 ADD PUSH2 0x118C JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7E4 DUP3 PUSH2 0x118C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x123C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1245 DUP4 PUSH2 0x118C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x125A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x129A DUP6 PUSH2 0x118C JUMP JUMPDEST SWAP4 POP PUSH2 0x12A8 PUSH1 0x20 DUP7 ADD PUSH2 0x118C JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x12CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x12E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0x12F2 JUMPI PUSH2 0x12F2 PUSH2 0x1265 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x131A JUMPI PUSH2 0x131A PUSH2 0x1265 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x1333 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP6 POP POP POP POP POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x136A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1373 DUP4 PUSH2 0x118C JUMP JUMPDEST SWAP2 POP PUSH2 0x1381 PUSH1 0x20 DUP5 ADD PUSH2 0x118C JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x139E JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x13BE JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x13D6 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x1110 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x13EA DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x1110 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x317 JUMPI PUSH2 0x317 PUSH2 0x13F3 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x317 JUMPI PUSH2 0x317 PUSH2 0x13F3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP4 PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x80 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0x1461 PUSH1 0x80 DUP4 ADD DUP5 PUSH2 0x1134 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x147D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x7E4 DUP2 PUSH2 0x10C5 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEC 0xC0 PUSH25 0xC6139C732EB51F26627972B6CDD1231665B2BEC499233B1089 ADDRESS 0x4B 0x1E 0xBE PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"628:16327:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:300;;;;;;:::i;:::-;;:::i;:::-;;;611:14:12;;604:22;586:41;;574:2;559:18;1570:300:0;;;;;;;;2471:98;;;:::i;:::-;;;;;;;:::i;3935:167::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1802:55:12;;;1784:74;;1772:2;1757:18;3935:167:0;1638:226:12;3468:406:0;;;;;;:::i;:::-;;:::i;:::-;;4612:326;;;;;;:::i;:::-;;:::i;5004:179::-;;;;;;:::i;:::-;;:::i;2190:219::-;;;;;;:::i;:::-;;:::i;1929:204::-;;;;;;:::i;:::-;;:::i;:::-;;;2999:25:12;;;2987:2;2972:18;1929:204:0;2853:177:12;2633:102:0;;;:::i;4169:153::-;;;;;;:::i;:::-;;:::i;5249:314::-;;;;;;:::i;:::-;;:::i;2801:276::-;;;;;;:::i;:::-;;:::i;4388:162::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4508:25:0;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4388:162;1570:300;1672:4;1707:40;;;1722:25;1707:40;;:104;;-1:-1:-1;1763:48:0;;;1778:33;1763:48;1707:104;:156;;;-1:-1:-1;952:25:9;937:40;;;;1827:36:0;1688:175;1570:300;-1:-1:-1;;1570:300:0:o;2471:98::-;2525:13;2557:5;2550:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:98;:::o;3935:167::-;4011:7;4030:23;4045:7;4030:14;:23::i;:::-;-1:-1:-1;4071:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;4071:24:0;;3935:167::o;3468:406::-;3548:13;3564:23;3579:7;3564:14;:23::i;:::-;3548:39;;3611:5;-1:-1:-1;;;;;3605:11:0;:2;-1:-1:-1;;;;;3605:11:0;;3597:57;;;;-1:-1:-1;;;3597:57:0;;5687:2:12;3597:57:0;;;5669:21:12;5726:2;5706:18;;;5699:30;5765:34;5745:18;;;5738:62;5836:3;5816:18;;;5809:31;5857:19;;3597:57:0;;;;;;;;;719:10:7;-1:-1:-1;;;;;3686:21:0;;;;:62;;-1:-1:-1;;;;;;4508:25:0;;4485:4;4508:25;;;:18;:25;;;;;;;;719:10:7;4508:35:0;;;;;;;;;;3711:37;3665:170;;;;-1:-1:-1;;;3665:170:0;;6089:2:12;3665:170:0;;;6071:21:12;6128:2;6108:18;;;6101:30;6167:34;6147:18;;;6140:62;6238:31;6218:18;;;6211:59;6287:19;;3665:170:0;5887:425:12;3665:170:0;3846:21;3855:2;3859:7;3846:8;:21::i;:::-;3538:336;3468:406;;:::o;4612:326::-;4801:41;719:10:7;4834:7:0;4801:18;:41::i;:::-;4793:99;;;;-1:-1:-1;;;4793:99:0;;6519:2:12;4793:99:0;;;6501:21:12;6558:2;6538:18;;;6531:30;6597:34;6577:18;;;6570:62;6668:15;6648:18;;;6641:43;6701:19;;4793:99:0;6317:409:12;4793:99:0;4903:28;4913:4;4919:2;4923:7;4903:9;:28::i;5004:179::-;5137:39;5154:4;5160:2;5164:7;5137:39;;;;;;;;;;;;:16;:39::i;2190:219::-;2262:7;6930:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6930:16:0;;2324:56;;;;-1:-1:-1;;;2324:56:0;;6933:2:12;2324:56:0;;;6915:21:12;6972:2;6952:18;;;6945:30;7011:26;6991:18;;;6984:54;7055:18;;2324:56:0;6731:348:12;1929:204:0;2001:7;-1:-1:-1;;;;;2028:19:0;;2020:73;;;;-1:-1:-1;;;2020:73:0;;7286:2:12;2020:73:0;;;7268:21:12;7325:2;7305:18;;;7298:30;7364:34;7344:18;;;7337:62;7435:11;7415:18;;;7408:39;7464:19;;2020:73:0;7084:405:12;2020:73:0;-1:-1:-1;;;;;;2110:16:0;;;;;:9;:16;;;;;;;1929:204::o;2633:102::-;2689:13;2721:7;2714:14;;;;;:::i;4169:153::-;4263:52;719:10:7;4296:8:0;4306;4263:18;:52::i;:::-;4169:153;;:::o;5249:314::-;5417:41;719:10:7;5450:7:0;5417:18;:41::i;:::-;5409:99;;;;-1:-1:-1;;;5409:99:0;;6519:2:12;5409:99:0;;;6501:21:12;6558:2;6538:18;;;6531:30;6597:34;6577:18;;;6570:62;6668:15;6648:18;;;6641:43;6701:19;;5409:99:0;6317:409:12;5409:99:0;5518:38;5532:4;5538:2;5542:7;5551:4;5518:13;:38::i;:::-;5249:314;;;;:::o;2801:276::-;2874:13;2899:23;2914:7;2899:14;:23::i;:::-;2933:21;2957:10;3395:9;;;;;;;;;-1:-1:-1;3395:9:0;;;3319:92;2957:10;2933:34;;3008:1;2990:7;2984:21;:25;:86;;;;;;;;;;;;;;;;;3036:7;3045:18;:7;:16;:18::i;:::-;3019:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2984:86;2977:93;2801:276;-1:-1:-1;;;2801:276:0:o;13466:133::-;7321:4;6930:16;;;:7;:16;;;;;;-1:-1:-1;;;;;6930:16:0;13539:53;;;;-1:-1:-1;;;13539:53:0;;6933:2:12;13539:53:0;;;6915:21:12;6972:2;6952:18;;;6945:30;7011:26;6991:18;;;6984:54;7055:18;;13539:53:0;6731:348:12;13539:53:0;13466:133;:::o;12768:171::-;12842:24;;;;:15;:24;;;;;:29;;;;-1:-1:-1;;;;;12842:29:0;;;;;;;;:24;;12895:23;12842:24;12895:14;:23::i;:::-;-1:-1:-1;;;;;12886:46:0;;;;;;;;;;;12768:171;;:::o;7540:261::-;7633:4;7649:13;7665:23;7680:7;7665:14;:23::i;:::-;7649:39;;7717:5;-1:-1:-1;;;;;7706:16:0;:7;-1:-1:-1;;;;;7706:16:0;;:52;;;-1:-1:-1;;;;;;4508:25:0;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7726:32;7706:87;;;;7786:7;-1:-1:-1;;;;;7762:31:0;:20;7774:7;7762:11;:20::i;:::-;-1:-1:-1;;;;;7762:31:0;;7706:87;7698:96;7540:261;-1:-1:-1;;;;7540:261:0:o;11423:1233::-;11577:4;-1:-1:-1;;;;;11550:31:0;:23;11565:7;11550:14;:23::i;:::-;-1:-1:-1;;;;;11550:31:0;;11542:81;;;;-1:-1:-1;;;11542:81:0;;8197:2:12;11542:81:0;;;8179:21:12;8236:2;8216:18;;;8209:30;8275:34;8255:18;;;8248:62;8346:7;8326:18;;;8319:35;8371:19;;11542:81:0;7995:401:12;11542:81:0;-1:-1:-1;;;;;11641:16:0;;11633:65;;;;-1:-1:-1;;;11633:65:0;;8603:2:12;11633:65:0;;;8585:21:12;8642:2;8622:18;;;8615:30;8681:34;8661:18;;;8654:62;8752:6;8732:18;;;8725:34;8776:19;;11633:65:0;8401:400:12;11633:65:0;11709:42;11730:4;11736:2;11740:7;11749:1;11709:20;:42::i;:::-;11878:4;-1:-1:-1;;;;;11851:31:0;:23;11866:7;11851:14;:23::i;:::-;-1:-1:-1;;;;;11851:31:0;;11843:81;;;;-1:-1:-1;;;11843:81:0;;8197:2:12;11843:81:0;;;8179:21:12;8236:2;8216:18;;;8209:30;8275:34;8255:18;;;8248:62;8346:7;8326:18;;;8319:35;8371:19;;11843:81:0;7995:401:12;11843:81:0;11993:24;;;;:15;:24;;;;;;;;11986:31;;;;;;;;;-1:-1:-1;;;;;12461:15:0;;;;;;:9;:15;;;;;:20;;-1:-1:-1;;12461:20:0;;;12495:13;;;;;;;;;:18;;11986:31;12495:18;;;12533:16;;;:7;:16;;;;;;:21;;;;;;;;;;12570:27;;12009:7;;12570:27;;;3538:336;3468:406;;:::o;13075:307::-;13225:8;-1:-1:-1;;;;;13216:17:0;:5;-1:-1:-1;;;;;13216:17:0;;13208:55;;;;-1:-1:-1;;;13208:55:0;;9008:2:12;13208:55:0;;;8990:21:12;9047:2;9027:18;;;9020:30;9086:27;9066:18;;;9059:55;9131:18;;13208:55:0;8806:349:12;13208:55:0;-1:-1:-1;;;;;13273:25:0;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;;;;;;;;;;;;13334:41;;586::12;;;13334::0;;559:18:12;13334:41:0;;;;;;;13075:307;;;:::o;6424:305::-;6574:28;6584:4;6590:2;6594:7;6574:9;:28::i;:::-;6620:47;6643:4;6649:2;6653:7;6662:4;6620:22;:47::i;:::-;6612:110;;;;-1:-1:-1;;;6612:110:0;;9362:2:12;6612:110:0;;;9344:21:12;9401:2;9381:18;;;9374:30;9440:34;9420:18;;;9413:62;9511:20;9491:18;;;9484:48;9549:19;;6612:110:0;9160:414:12;415:696:8;471:13;520:14;537:17;548:5;537:10;:17::i;:::-;557:1;537:21;520:38;;572:20;606:6;595:18;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;595:18:8;-1:-1:-1;572:41:8;-1:-1:-1;733:28:8;;;749:2;733:28;788:280;-1:-1:-1;;819:5:8;958:8;953:2;942:14;;937:30;819:5;924:44;1012:2;1003:11;;;-1:-1:-1;1032:21:8;788:280;1032:21;-1:-1:-1;1088:6:8;415:696;-1:-1:-1;;;415:696:8:o;15698:396:0:-;15882:1;15870:9;:13;15866:222;;;-1:-1:-1;;;;;15903:18:0;;;15899:85;;-1:-1:-1;;;;;15941:15:0;;;;;;:9;:15;;;;;:28;;15960:9;;15941:15;:28;;15960:9;;15941:28;:::i;:::-;;;;-1:-1:-1;;15899:85:0;-1:-1:-1;;;;;16001:16:0;;;15997:81;;-1:-1:-1;;;;;16037:13:0;;;;;;:9;:13;;;;;:26;;16054:9;;16037:13;:26;;16054:9;;16037:26;:::i;:::-;;;;-1:-1:-1;;15698:396:0;;;;:::o;14151:831::-;14300:4;-1:-1:-1;;;;;14320:13:0;;1465:19:6;:23;14316:660:0;;14355:71;;;;;-1:-1:-1;;;;;14355:36:0;;;;;:71;;719:10:7;;14406:4:0;;14412:7;;14421:4;;14355:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14355:71:0;;;;;;;;-1:-1:-1;;14355:71:0;;;;;;;;;;;;:::i;:::-;;;14351:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14593:6;:13;14610:1;14593:18;14589:321;;14635:60;;-1:-1:-1;;;14635:60:0;;9362:2:12;14635:60:0;;;9344:21:12;9401:2;9381:18;;;9374:30;9440:34;9420:18;;;9413:62;9511:20;9491:18;;;9484:48;9549:19;;14635:60:0;9160:414:12;14589:321:0;14862:6;14856:13;14847:6;14843:2;14839:15;14832:38;14351:573;14476:51;;14486:41;14476:51;;-1:-1:-1;14469:58:0;;14316:660;-1:-1:-1;14961:4:0;14151:831;;;;;;:::o;9889:890:11:-;9942:7;;10026:6;10017:15;;10013:99;;10061:6;10052:15;;;-1:-1:-1;10095:2:11;10085:12;10013:99;10138:6;10129:5;:15;10125:99;;10173:6;10164:15;;;-1:-1:-1;10207:2:11;10197:12;10125:99;10250:6;10241:5;:15;10237:99;;10285:6;10276:15;;;-1:-1:-1;10319:2:11;10309:12;10237:99;10362:5;10353;:14;10349:96;;10396:5;10387:14;;;-1:-1:-1;10429:1:11;10419:11;10349:96;10471:5;10462;:14;10458:96;;10505:5;10496:14;;;-1:-1:-1;10538:1:11;10528:11;10458:96;10580:5;10571;:14;10567:96;;10614:5;10605:14;;;-1:-1:-1;10647:1:11;10637:11;10567:96;10689:5;10680;:14;10676:64;;10724:1;10714:11;10766:6;9889:890;-1:-1:-1;;9889:890:11:o;14:177:12:-;99:66;92:5;88:78;81:5;78:89;68:117;;181:1;178;171:12;196:245;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;362:9;349:23;381:30;405:5;381:30;:::i;638:250::-;723:1;733:113;747:6;744:1;741:13;733:113;;;823:11;;;817:18;804:11;;;797:39;769:2;762:10;733:113;;;-1:-1:-1;;880:1:12;862:16;;855:27;638:250::o;893:330::-;935:3;973:5;967:12;1000:6;995:3;988:19;1016:76;1085:6;1078:4;1073:3;1069:14;1062:4;1055:5;1051:16;1016:76;:::i;:::-;1137:2;1125:15;-1:-1:-1;;1121:88:12;1112:98;;;;1212:4;1108:109;;893:330;-1:-1:-1;;893:330:12:o;1228:220::-;1377:2;1366:9;1359:21;1340:4;1397:45;1438:2;1427:9;1423:18;1415:6;1397:45;:::i;1453:180::-;1512:6;1565:2;1553:9;1544:7;1540:23;1536:32;1533:52;;;1581:1;1578;1571:12;1533:52;-1:-1:-1;1604:23:12;;1453:180;-1:-1:-1;1453:180:12:o;1869:196::-;1937:20;;-1:-1:-1;;;;;1986:54:12;;1976:65;;1966:93;;2055:1;2052;2045:12;1966:93;1869:196;;;:::o;2070:254::-;2138:6;2146;2199:2;2187:9;2178:7;2174:23;2170:32;2167:52;;;2215:1;2212;2205:12;2167:52;2238:29;2257:9;2238:29;:::i;:::-;2228:39;2314:2;2299:18;;;;2286:32;;-1:-1:-1;;;2070:254:12:o;2329:328::-;2406:6;2414;2422;2475:2;2463:9;2454:7;2450:23;2446:32;2443:52;;;2491:1;2488;2481:12;2443:52;2514:29;2533:9;2514:29;:::i;:::-;2504:39;;2562:38;2596:2;2585:9;2581:18;2562:38;:::i;:::-;2552:48;;2647:2;2636:9;2632:18;2619:32;2609:42;;2329:328;;;;;:::o;2662:186::-;2721:6;2774:2;2762:9;2753:7;2749:23;2745:32;2742:52;;;2790:1;2787;2780:12;2742:52;2813:29;2832:9;2813:29;:::i;3035:347::-;3100:6;3108;3161:2;3149:9;3140:7;3136:23;3132:32;3129:52;;;3177:1;3174;3167:12;3129:52;3200:29;3219:9;3200:29;:::i;:::-;3190:39;;3279:2;3268:9;3264:18;3251:32;3326:5;3319:13;3312:21;3305:5;3302:32;3292:60;;3348:1;3345;3338:12;3292:60;3371:5;3361:15;;;3035:347;;;;;:::o;3387:184::-;-1:-1:-1;;;3436:1:12;3429:88;3536:4;3533:1;3526:15;3560:4;3557:1;3550:15;3576:1197;3671:6;3679;3687;3695;3748:3;3736:9;3727:7;3723:23;3719:33;3716:53;;;3765:1;3762;3755:12;3716:53;3788:29;3807:9;3788:29;:::i;:::-;3778:39;;3836:38;3870:2;3859:9;3855:18;3836:38;:::i;:::-;3826:48;;3921:2;3910:9;3906:18;3893:32;3883:42;;3976:2;3965:9;3961:18;3948:32;3999:18;4040:2;4032:6;4029:14;4026:34;;;4056:1;4053;4046:12;4026:34;4094:6;4083:9;4079:22;4069:32;;4139:7;4132:4;4128:2;4124:13;4120:27;4110:55;;4161:1;4158;4151:12;4110:55;4197:2;4184:16;4219:2;4215;4212:10;4209:36;;;4225:18;;:::i;:::-;4359:2;4353:9;4421:4;4413:13;;-1:-1:-1;;4409:22:12;;;4433:2;4405:31;4401:40;4389:53;;;4457:18;;;4477:22;;;4454:46;4451:72;;;4503:18;;:::i;:::-;4543:10;4539:2;4532:22;4578:2;4570:6;4563:18;4618:7;4613:2;4608;4604;4600:11;4596:20;4593:33;4590:53;;;4639:1;4636;4629:12;4590:53;4695:2;4690;4686;4682:11;4677:2;4669:6;4665:15;4652:46;4740:1;4735:2;4730;4722:6;4718:15;4714:24;4707:35;4761:6;4751:16;;;;;;;3576:1197;;;;;;;:::o;4778:260::-;4846:6;4854;4907:2;4895:9;4886:7;4882:23;4878:32;4875:52;;;4923:1;4920;4913:12;4875:52;4946:29;4965:9;4946:29;:::i;:::-;4936:39;;4994:38;5028:2;5017:9;5013:18;4994:38;:::i;:::-;4984:48;;4778:260;;;;;:::o;5043:437::-;5122:1;5118:12;;;;5165;;;5186:61;;5240:4;5232:6;5228:17;5218:27;;5186:61;5293:2;5285:6;5282:14;5262:18;5259:38;5256:218;;-1:-1:-1;;;5327:1:12;5320:88;5431:4;5428:1;5421:15;5459:4;5456:1;5449:15;5256:218;;5043:437;;;:::o;7494:496::-;7673:3;7711:6;7705:13;7727:66;7786:6;7781:3;7774:4;7766:6;7762:17;7727:66;:::i;:::-;7856:13;;7815:16;;;;7878:70;7856:13;7815:16;7925:4;7913:17;;7878:70;:::i;:::-;7964:20;;7494:496;-1:-1:-1;;;;7494:496:12:o;9768:184::-;-1:-1:-1;;;9817:1:12;9810:88;9917:4;9914:1;9907:15;9941:4;9938:1;9931:15;9957:128;10024:9;;;10045:11;;;10042:37;;;10059:18;;:::i;10090:125::-;10155:9;;;10176:10;;;10173:36;;;10189:18;;:::i;10220:512::-;10414:4;-1:-1:-1;;;;;10524:2:12;10516:6;10512:15;10501:9;10494:34;10576:2;10568:6;10564:15;10559:2;10548:9;10544:18;10537:43;;10616:6;10611:2;10600:9;10596:18;10589:34;10659:3;10654:2;10643:9;10639:18;10632:31;10680:46;10721:3;10710:9;10706:19;10698:6;10680:46;:::i;:::-;10672:54;10220:512;-1:-1:-1;;;;;;10220:512:12:o;10737:249::-;10806:6;10859:2;10847:9;10838:7;10834:23;10830:32;10827:52;;;10875:1;10872;10865:12;10827:52;10907:9;10901:16;10926:30;10950:5;10926:30;:::i"},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the contract by setting a `name` and a `symbol` to the token collection.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":\"ERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0xd89f3585b211fc9e3408384a4c4efdc3a93b2f877a3821046fa01c219d35be1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ea15ef7c8980240ccd46df13809d163f749bc0a01d8bced1875660d4872da1c\",\"dweb:/ipfs/QmbDfAT9VeCSG4cnPd6tjDMp8ED85dLHbWyMyv7wbmL4CH\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269\",\"dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC721/IERC721.sol":{"IERC721":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"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","supportsInterface(bytes4)":"01ffc9a7","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC721 compliant contract.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol":{"IERC721Receiver":{"abi":[{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"onERC721Received(address,address,uint256,bytes)":"150b7a02"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"}},\"title\":\"ERC721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol":{"ERC721Enumerable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","tokenURI(uint256)":"c87b56dd","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This implements an optional extension of {ERC721} defined in the EIP that adds enumerability of all the token ids in the contract as well as all token ids owned by each account.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol\":\"ERC721Enumerable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0xd89f3585b211fc9e3408384a4c4efdc3a93b2f877a3821046fa01c219d35be1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5ea15ef7c8980240ccd46df13809d163f749bc0a01d8bced1875660d4872da1c\",\"dweb:/ipfs/QmbDfAT9VeCSG4cnPd6tjDMp8ED85dLHbWyMyv7wbmL4CH\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol\":{\"keccak256\":\"0xa8796bd16014cefb8c26449413981a49c510f92a98d6828494f5fd046223ced3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://63a5e0bb5a7d182e0d0eef87033f78115eab791de3626a929bc98c157087880a\",\"dweb:/ipfs/QmetkXAu2CJKS4qrZtEQPU8okAPwUwa6HL4XYwk8vrYMk8\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269\",\"dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol":{"IERC721Enumerable":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"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","supportsInterface(bytes4)":"01ffc9a7","tokenByIndex(uint256)":"4f6ccce7","tokenOfOwnerByIndex(address,uint256)":"2f745c59","totalSupply()":"18160ddd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"tokenByIndex(uint256)\":{\"details\":\"Returns a token ID at a given `index` of all the tokens stored by the contract. Use along with {totalSupply} to enumerate all tokens.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Returns a token ID owned by `owner` at a given `index` of its token list. Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\"},\"totalSupply()\":{\"details\":\"Returns the total amount of tokens stored by the contract.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional enumeration extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":\"IERC721Enumerable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0xd1556954440b31c97a142c6ba07d5cade45f96fafd52091d33a14ebe365aecbf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26fef835622b46a5ba08b3ef6b46a22e94b5f285d0f0fb66b703bd30217d2c34\",\"dweb:/ipfs/QmZ548qdwfL1qF7aXz3xh1GCdTiST81kGGuKRqVUfYmPZR\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"IERC721Metadata":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"_approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","isApprovedForAll(address,address)":"e985e9c5","name()":"06fdde03","ownerOf(uint256)":"6352211e","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the caller. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":\"IERC721Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xab28a56179c1db258c9bf5235b382698cb650debecb51b23d12be9e241374b68\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://daae589a9d6fa7e55f99f86c0a16796ca490f243fb3693632c3711c0646c1d56\",\"dweb:/ipfs/QmR3zpd7wNw3rcUdekwiv6FYHJqksuTCXLVioTxu6Fbxk3\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f2998e5e68b494355e161ec67c23079c9766dafb301d39428c04a5ba169801b864736f6c63430008130033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLCODE SWAP10 DUP15 0x5E PUSH9 0xB494355E161EC67C23 SMOD SWAP13 SWAP8 PUSH7 0xDAFB301D39428C DIV 0xA5 0xBA AND SWAP9 ADD 0xB8 PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"194:8964:6:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:8964:6;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f2998e5e68b494355e161ec67c23079c9766dafb301d39428c04a5ba169801b864736f6c63430008130033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLCODE SWAP10 DUP15 0x5E PUSH9 0xB494355E161EC67C23 SMOD SWAP13 SWAP8 PUSH7 0xDAFB301D39428C DIV 0xA5 0xBA AND SWAP9 ADD 0xB8 PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"194:8964:6:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xf96f969e24029d43d0df89e59d365f277021dac62b48e1c1e3ebe0acdd7f1ca1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ec772b45a624be516f1c81970caa8a2e144301e9d0921cbc1a2789fef39a1269\",\"dweb:/ipfs/QmNyjwxCrGhQMyzLD93oUobJXVe9ceJvRvfXwbEtuxPiEj\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Context.sol":{"Context":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Strings.sol":{"Strings":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220356e99ae97ff0cef63143e46229963318ec57aef7cca9f7256870979f44ef00464736f6c63430008130033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATALOAD PUSH15 0x99AE97FF0CEF63143E46229963318E 0xC5 PUSH27 0xEF7CCA9F7256870979F44EF00464736F6C63430008130033000000 ","sourceMap":"188:2065:8:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;188:2065:8;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220356e99ae97ff0cef63143e46229963318ec57aef7cca9f7256870979f44ef00464736f6c63430008130033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATALOAD PUSH15 0x99AE97FF0CEF63143E46229963318E 0xC5 PUSH27 0xEF7CCA9F7256870979F44EF00464736F6C63430008130033000000 ","sourceMap":"188:2065:8:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"String operations.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/introspection/ERC165.sol":{"ERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {     return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ``` Alternatively, {ERC165Storage} provides an easier to use but more expensive implementation.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":\"ERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/math/Math.sol":{"Math":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d99a35d21473b2c5d99b5a0c1cc953161223b6524eb08cc29e5b1ffd56b4bcd064736f6c63430008130033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 SWAP11 CALLDATALOAD 0xD2 EQ PUSH20 0xB2C5D99B5A0C1CC953161223B6524EB08CC29E5B 0x1F REVERT JUMP 0xB4 0xBC 0xD0 PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"202:12302:11:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;202:12302:11;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d99a35d21473b2c5d99b5a0c1cc953161223b6524eb08cc29e5b1ffd56b4bcd064736f6c63430008130033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD9 SWAP11 CALLDATALOAD 0xD2 EQ PUSH20 0xB2C5D99B5A0C1CC953161223B6524EB08CC29E5B 0x1F REVERT JUMP 0xB4 0xBC 0xD0 PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"202:12302:11:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":2000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]}},\"version\":1}"}}}}}