{
  "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"
    }
  ],
  "allSourcePaths": {
    "10": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Address.sol",
    "11": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Context.sol",
    "12": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Strings.sol",
    "14": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/introspection/ERC165.sol",
    "15": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/introspection/IERC165.sol",
    "6": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC721/ERC721.sol",
    "7": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC721/IERC721.sol",
    "8": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC721/IERC721Receiver.sol",
    "9": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC721/extensions/IERC721Metadata.sol"
  },
  "ast": {
    "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC721/ERC721.sol",
    "exportedSymbols": {
      "Address": [
        24852
      ],
      "Context": [
        15648
      ],
      "ERC165": [
        24921
      ],
      "ERC721": [
        24557
      ],
      "IERC165": [
        22864
      ],
      "IERC721": [
        13932
      ],
      "IERC721Metadata": [
        24897
      ],
      "IERC721Receiver": [
        24870
      ],
      "Strings": [
        16154
      ]
    },
    "id": 24558,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 23692,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "107:23:6"
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC721/IERC721.sol",
        "file": "./IERC721.sol",
        "id": 23693,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 24558,
        "sourceUnit": 13933,
        "src": "132:23:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC721/IERC721Receiver.sol",
        "file": "./IERC721Receiver.sol",
        "id": 23694,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 24558,
        "sourceUnit": 24871,
        "src": "156:31:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC721/extensions/IERC721Metadata.sol",
        "file": "./extensions/IERC721Metadata.sol",
        "id": 23695,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 24558,
        "sourceUnit": 24898,
        "src": "188:42:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Address.sol",
        "file": "../../utils/Address.sol",
        "id": 23696,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 24558,
        "sourceUnit": 24853,
        "src": "231:33:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Context.sol",
        "file": "../../utils/Context.sol",
        "id": 23697,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 24558,
        "sourceUnit": 15649,
        "src": "265:33:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Strings.sol",
        "file": "../../utils/Strings.sol",
        "id": 23698,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 24558,
        "sourceUnit": 16155,
        "src": "299:33:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/introspection/ERC165.sol",
        "file": "../../utils/introspection/ERC165.sol",
        "id": 23699,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 24558,
        "sourceUnit": 24922,
        "src": "333:46:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 23701,
              "name": "Context",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 15648,
              "src": "647:7:6"
            },
            "id": 23702,
            "nodeType": "InheritanceSpecifier",
            "src": "647:7:6"
          },
          {
            "baseName": {
              "id": 23703,
              "name": "ERC165",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 24921,
              "src": "656:6:6"
            },
            "id": 23704,
            "nodeType": "InheritanceSpecifier",
            "src": "656:6:6"
          },
          {
            "baseName": {
              "id": 23705,
              "name": "IERC721",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 13932,
              "src": "664:7:6"
            },
            "id": 23706,
            "nodeType": "InheritanceSpecifier",
            "src": "664:7:6"
          },
          {
            "baseName": {
              "id": 23707,
              "name": "IERC721Metadata",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 24897,
              "src": "673:15:6"
            },
            "id": 23708,
            "nodeType": "InheritanceSpecifier",
            "src": "673:15:6"
          }
        ],
        "contractDependencies": [
          13932,
          15648,
          22864,
          24897,
          24921
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 23700,
          "nodeType": "StructuredDocumentation",
          "src": "381:246:6",
          "text": " @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}."
        },
        "fullyImplemented": true,
        "id": 24557,
        "linearizedBaseContracts": [
          24557,
          24897,
          13932,
          24921,
          22864,
          15648
        ],
        "name": "ERC721",
        "nameLocation": "637:6:6",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 23711,
            "libraryName": {
              "id": 23709,
              "name": "Address",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 24852,
              "src": "701:7:6"
            },
            "nodeType": "UsingForDirective",
            "src": "695:26:6",
            "typeName": {
              "id": 23710,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "713:7:6",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            }
          },
          {
            "id": 23714,
            "libraryName": {
              "id": 23712,
              "name": "Strings",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 16154,
              "src": "732:7:6"
            },
            "nodeType": "UsingForDirective",
            "src": "726:26:6",
            "typeName": {
              "id": 23713,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "744:7:6",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 23716,
            "mutability": "mutable",
            "name": "_name",
            "nameLocation": "791:5:6",
            "nodeType": "VariableDeclaration",
            "scope": 24557,
            "src": "776:20:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 23715,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "776:6:6",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 23718,
            "mutability": "mutable",
            "name": "_symbol",
            "nameLocation": "838:7:6",
            "nodeType": "VariableDeclaration",
            "scope": 24557,
            "src": "823:22:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_storage",
              "typeString": "string"
            },
            "typeName": {
              "id": 23717,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "823:6:6",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 23722,
            "mutability": "mutable",
            "name": "_owners",
            "nameLocation": "934:7:6",
            "nodeType": "VariableDeclaration",
            "scope": 24557,
            "src": "898:43:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
              "typeString": "mapping(uint256 => address)"
            },
            "typeName": {
              "id": 23721,
              "keyType": {
                "id": 23719,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "906:7:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "898:27:6",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                "typeString": "mapping(uint256 => address)"
              },
              "valueType": {
                "id": 23720,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "917:7:6",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 23726,
            "mutability": "mutable",
            "name": "_balances",
            "nameLocation": "1028:9:6",
            "nodeType": "VariableDeclaration",
            "scope": 24557,
            "src": "992:45:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 23725,
              "keyType": {
                "id": 23723,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1000:7:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "992:27:6",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 23724,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1011:7:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 23730,
            "mutability": "mutable",
            "name": "_tokenApprovals",
            "nameLocation": "1129:15:6",
            "nodeType": "VariableDeclaration",
            "scope": 24557,
            "src": "1093:51:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
              "typeString": "mapping(uint256 => address)"
            },
            "typeName": {
              "id": 23729,
              "keyType": {
                "id": 23727,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1101:7:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "1093:27:6",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                "typeString": "mapping(uint256 => address)"
              },
              "valueType": {
                "id": 23728,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1112:7:6",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "visibility": "private"
          },
          {
            "constant": false,
            "id": 23736,
            "mutability": "mutable",
            "name": "_operatorApprovals",
            "nameLocation": "1252:18:6",
            "nodeType": "VariableDeclaration",
            "scope": 24557,
            "src": "1199:71:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
              "typeString": "mapping(address => mapping(address => bool))"
            },
            "typeName": {
              "id": 23735,
              "keyType": {
                "id": 23731,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1207:7:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1199:44:6",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                "typeString": "mapping(address => mapping(address => bool))"
              },
              "valueType": {
                "id": 23734,
                "keyType": {
                  "id": 23732,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1226:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "nodeType": "Mapping",
                "src": "1218:24:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                  "typeString": "mapping(address => bool)"
                },
                "valueType": {
                  "id": 23733,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "1237:4:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                }
              }
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 23752,
              "nodeType": "Block",
              "src": "1446:57:6",
              "statements": [
                {
                  "expression": {
                    "id": 23746,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 23744,
                      "name": "_name",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23716,
                      "src": "1456:5:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 23745,
                      "name": "name_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23739,
                      "src": "1464:5:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1456:13:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 23747,
                  "nodeType": "ExpressionStatement",
                  "src": "1456:13:6"
                },
                {
                  "expression": {
                    "id": 23750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 23748,
                      "name": "_symbol",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23718,
                      "src": "1479:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage",
                        "typeString": "string storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 23749,
                      "name": "symbol_",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23741,
                      "src": "1489:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "src": "1479:17:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "id": 23751,
                  "nodeType": "ExpressionStatement",
                  "src": "1479:17:6"
                }
              ]
            },
            "documentation": {
              "id": 23737,
              "nodeType": "StructuredDocumentation",
              "src": "1277:108:6",
              "text": " @dev Initializes the contract by setting a `name` and a `symbol` to the token collection."
            },
            "id": 23753,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23742,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23739,
                  "mutability": "mutable",
                  "name": "name_",
                  "nameLocation": "1416:5:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 23753,
                  "src": "1402:19:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23738,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1402:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23741,
                  "mutability": "mutable",
                  "name": "symbol_",
                  "nameLocation": "1437:7:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 23753,
                  "src": "1423:21:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23740,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1423:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1401:44:6"
            },
            "returnParameters": {
              "id": 23743,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1446:0:6"
            },
            "scope": 24557,
            "src": "1390:113:6",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              22863,
              24920
            ],
            "body": {
              "id": 23783,
              "nodeType": "Block",
              "src": "1678:192:6",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 23781,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 23776,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "commonType": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "id": 23769,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 23764,
                          "name": "interfaceId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23756,
                          "src": "1707:11:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 23766,
                                "name": "IERC721",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 13932,
                                "src": "1727:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC721_$13932_$",
                                  "typeString": "type(contract IERC721)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_type$_t_contract$_IERC721_$13932_$",
                                  "typeString": "type(contract IERC721)"
                                }
                              ],
                              "id": 23765,
                              "name": "type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -27,
                              "src": "1722:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 23767,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1722:13:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721_$13932",
                              "typeString": "type(contract IERC721)"
                            }
                          },
                          "id": 23768,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "interfaceId",
                          "nodeType": "MemberAccess",
                          "src": "1722:25:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "src": "1707:40:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "||",
                      "rightExpression": {
                        "commonType": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "id": 23775,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 23770,
                          "name": "interfaceId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23756,
                          "src": "1763:11:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "expression": {
                            "arguments": [
                              {
                                "id": 23772,
                                "name": "IERC721Metadata",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24897,
                                "src": "1783:15:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$24897_$",
                                  "typeString": "type(contract IERC721Metadata)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$24897_$",
                                  "typeString": "type(contract IERC721Metadata)"
                                }
                              ],
                              "id": 23771,
                              "name": "type",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -27,
                              "src": "1778:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 23773,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1778:21:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Metadata_$24897",
                              "typeString": "type(contract IERC721Metadata)"
                            }
                          },
                          "id": 23774,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "interfaceId",
                          "nodeType": "MemberAccess",
                          "src": "1778:33:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "src": "1763:48:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "1707:104:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "arguments": [
                        {
                          "id": 23779,
                          "name": "interfaceId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23756,
                          "src": "1851:11:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        ],
                        "expression": {
                          "id": 23777,
                          "name": "super",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -25,
                          "src": "1827:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_super$_ERC721_$24557_$",
                            "typeString": "type(contract super ERC721)"
                          }
                        },
                        "id": 23778,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "supportsInterface",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 24920,
                        "src": "1827:23:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$",
                          "typeString": "function (bytes4) view returns (bool)"
                        }
                      },
                      "id": 23780,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1827:36:6",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "1707:156:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 23763,
                  "id": 23782,
                  "nodeType": "Return",
                  "src": "1688:175:6"
                }
              ]
            },
            "documentation": {
              "id": 23754,
              "nodeType": "StructuredDocumentation",
              "src": "1509:56:6",
              "text": " @dev See {IERC165-supportsInterface}."
            },
            "functionSelector": "01ffc9a7",
            "id": 23784,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "supportsInterface",
            "nameLocation": "1579:17:6",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 23760,
              "nodeType": "OverrideSpecifier",
              "overrides": [
                {
                  "id": 23758,
                  "name": "ERC165",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 24921,
                  "src": "1646:6:6"
                },
                {
                  "id": 23759,
                  "name": "IERC165",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 22864,
                  "src": "1654:7:6"
                }
              ],
              "src": "1637:25:6"
            },
            "parameters": {
              "id": 23757,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23756,
                  "mutability": "mutable",
                  "name": "interfaceId",
                  "nameLocation": "1604:11:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 23784,
                  "src": "1597:18:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 23755,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1597:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1596:20:6"
            },
            "returnParameters": {
              "id": 23763,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23762,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 23784,
                  "src": "1672:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23761,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1672:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1671:6:6"
            },
            "scope": 24557,
            "src": "1570:300:6",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13857
            ],
            "body": {
              "id": 23807,
              "nodeType": "Block",
              "src": "2010:123:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 23799,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 23794,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23787,
                          "src": "2028:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 23797,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2045:1:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 23796,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2037:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 23795,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2037:7:6",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 23798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2037:10:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2028:19:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a2061646472657373207a65726f206973206e6f7420612076616c6964206f776e6572",
                        "id": 23800,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2049:43:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159",
                          "typeString": "literal_string \"ERC721: address zero is not a valid owner\""
                        },
                        "value": "ERC721: address zero is not a valid owner"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6d05c90094f31cfeb8f0eb86f0a513af3f7f8992991fbde41b08aa7960677159",
                          "typeString": "literal_string \"ERC721: address zero is not a valid owner\""
                        }
                      ],
                      "id": 23793,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2020:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 23801,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2020:73:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23802,
                  "nodeType": "ExpressionStatement",
                  "src": "2020:73:6"
                },
                {
                  "expression": {
                    "baseExpression": {
                      "id": 23803,
                      "name": "_balances",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23726,
                      "src": "2110:9:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 23805,
                    "indexExpression": {
                      "id": 23804,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23787,
                      "src": "2120:5:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2110:16:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 23792,
                  "id": 23806,
                  "nodeType": "Return",
                  "src": "2103:23:6"
                }
              ]
            },
            "documentation": {
              "id": 23785,
              "nodeType": "StructuredDocumentation",
              "src": "1876:48:6",
              "text": " @dev See {IERC721-balanceOf}."
            },
            "functionSelector": "70a08231",
            "id": 23808,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "balanceOf",
            "nameLocation": "1938:9:6",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 23789,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1983:8:6"
            },
            "parameters": {
              "id": 23788,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23787,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "1956:5:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 23808,
                  "src": "1948:13:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23786,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1948:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1947:15:6"
            },
            "returnParameters": {
              "id": 23792,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23791,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 23808,
                  "src": "2001:7:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23790,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2001:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2000:9:6"
            },
            "scope": 24557,
            "src": "1929:204:6",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13865
            ],
            "body": {
              "id": 23835,
              "nodeType": "Block",
              "src": "2271:137:6",
              "statements": [
                {
                  "assignments": [
                    23818
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 23818,
                      "mutability": "mutable",
                      "name": "owner",
                      "nameLocation": "2289:5:6",
                      "nodeType": "VariableDeclaration",
                      "scope": 23835,
                      "src": "2281:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 23817,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2281:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 23822,
                  "initialValue": {
                    "baseExpression": {
                      "id": 23819,
                      "name": "_owners",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23722,
                      "src": "2297:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                        "typeString": "mapping(uint256 => address)"
                      }
                    },
                    "id": 23821,
                    "indexExpression": {
                      "id": 23820,
                      "name": "tokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23811,
                      "src": "2305:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2297:16:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2281:32:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 23829,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 23824,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23818,
                          "src": "2331:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 23827,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2348:1:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 23826,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2340:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 23825,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2340:7:6",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 23828,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2340:10:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2331:19:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20696e76616c696420746f6b656e204944",
                        "id": 23830,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2352:26:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f",
                          "typeString": "literal_string \"ERC721: invalid token ID\""
                        },
                        "value": "ERC721: invalid token ID"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f",
                          "typeString": "literal_string \"ERC721: invalid token ID\""
                        }
                      ],
                      "id": 23823,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2323:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 23831,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2323:56:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23832,
                  "nodeType": "ExpressionStatement",
                  "src": "2323:56:6"
                },
                {
                  "expression": {
                    "id": 23833,
                    "name": "owner",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 23818,
                    "src": "2396:5:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 23816,
                  "id": 23834,
                  "nodeType": "Return",
                  "src": "2389:12:6"
                }
              ]
            },
            "documentation": {
              "id": 23809,
              "nodeType": "StructuredDocumentation",
              "src": "2139:46:6",
              "text": " @dev See {IERC721-ownerOf}."
            },
            "functionSelector": "6352211e",
            "id": 23836,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "ownerOf",
            "nameLocation": "2199:7:6",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 23813,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2244:8:6"
            },
            "parameters": {
              "id": 23812,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23811,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "2215:7:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 23836,
                  "src": "2207:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23810,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2207:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2206:17:6"
            },
            "returnParameters": {
              "id": 23816,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23815,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 23836,
                  "src": "2262:7:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23814,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2262:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2261:9:6"
            },
            "scope": 24557,
            "src": "2190:218:6",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              24882
            ],
            "body": {
              "id": 23845,
              "nodeType": "Block",
              "src": "2539:29:6",
              "statements": [
                {
                  "expression": {
                    "id": 23843,
                    "name": "_name",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 23716,
                    "src": "2556:5:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 23842,
                  "id": 23844,
                  "nodeType": "Return",
                  "src": "2549:12:6"
                }
              ]
            },
            "documentation": {
              "id": 23837,
              "nodeType": "StructuredDocumentation",
              "src": "2414:51:6",
              "text": " @dev See {IERC721Metadata-name}."
            },
            "functionSelector": "06fdde03",
            "id": 23846,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "name",
            "nameLocation": "2479:4:6",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 23839,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2506:8:6"
            },
            "parameters": {
              "id": 23838,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2483:2:6"
            },
            "returnParameters": {
              "id": 23842,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23841,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 23846,
                  "src": "2524:13:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23840,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2524:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2523:15:6"
            },
            "scope": 24557,
            "src": "2470:98:6",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              24888
            ],
            "body": {
              "id": 23855,
              "nodeType": "Block",
              "src": "2703:31:6",
              "statements": [
                {
                  "expression": {
                    "id": 23853,
                    "name": "_symbol",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 23718,
                    "src": "2720:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage",
                      "typeString": "string storage ref"
                    }
                  },
                  "functionReturnParameters": 23852,
                  "id": 23854,
                  "nodeType": "Return",
                  "src": "2713:14:6"
                }
              ]
            },
            "documentation": {
              "id": 23847,
              "nodeType": "StructuredDocumentation",
              "src": "2574:53:6",
              "text": " @dev See {IERC721Metadata-symbol}."
            },
            "functionSelector": "95d89b41",
            "id": 23856,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "symbol",
            "nameLocation": "2641:6:6",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 23849,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2670:8:6"
            },
            "parameters": {
              "id": 23848,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2647:2:6"
            },
            "returnParameters": {
              "id": 23852,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23851,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 23856,
                  "src": "2688:13:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23850,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2688:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2687:15:6"
            },
            "scope": 24557,
            "src": "2632:102:6",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              24896
            ],
            "body": {
              "id": 23894,
              "nodeType": "Block",
              "src": "2888:188:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 23866,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23859,
                        "src": "2913:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 23865,
                      "name": "_requireMinted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24472,
                      "src": "2898:14:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) view"
                      }
                    },
                    "id": 23867,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2898:23:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23868,
                  "nodeType": "ExpressionStatement",
                  "src": "2898:23:6"
                },
                {
                  "assignments": [
                    23870
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 23870,
                      "mutability": "mutable",
                      "name": "baseURI",
                      "nameLocation": "2946:7:6",
                      "nodeType": "VariableDeclaration",
                      "scope": 23894,
                      "src": "2932:21:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 23869,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "2932:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 23873,
                  "initialValue": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 23871,
                      "name": "_baseURI",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23904,
                      "src": "2956:8:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$",
                        "typeString": "function () view returns (string memory)"
                      }
                    },
                    "id": 23872,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2956:10:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2932:34:6"
                },
                {
                  "expression": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 23880,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "arguments": [
                            {
                              "id": 23876,
                              "name": "baseURI",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23870,
                              "src": "2989:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "id": 23875,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2983:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 23874,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2983:5:6",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 23877,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2983:14:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 23878,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "2983:21:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "hexValue": "30",
                        "id": 23879,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3007:1:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "2983:25:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "hexValue": "",
                      "id": 23891,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3067:2:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                        "typeString": "literal_string \"\""
                      },
                      "value": ""
                    },
                    "id": 23892,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "2983:86:6",
                    "trueExpression": {
                      "arguments": [
                        {
                          "arguments": [
                            {
                              "id": 23885,
                              "name": "baseURI",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23870,
                              "src": "3035:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 23886,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 23859,
                                  "src": "3044:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 23887,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "toString",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 16016,
                                "src": "3044:16:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (string memory)"
                                }
                              },
                              "id": 23888,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3044:18:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              },
                              {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            ],
                            "expression": {
                              "id": 23883,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "3018:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 23884,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "src": "3018:16:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 23889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3018:45:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 23882,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "3011:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                          "typeString": "type(string storage pointer)"
                        },
                        "typeName": {
                          "id": 23881,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3011:6:6",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 23890,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3011:53:6",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string memory"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 23864,
                  "id": 23893,
                  "nodeType": "Return",
                  "src": "2976:93:6"
                }
              ]
            },
            "documentation": {
              "id": 23857,
              "nodeType": "StructuredDocumentation",
              "src": "2740:55:6",
              "text": " @dev See {IERC721Metadata-tokenURI}."
            },
            "functionSelector": "c87b56dd",
            "id": 23895,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "tokenURI",
            "nameLocation": "2809:8:6",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 23861,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2855:8:6"
            },
            "parameters": {
              "id": 23860,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23859,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "2826:7:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 23895,
                  "src": "2818:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23858,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2818:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2817:17:6"
            },
            "returnParameters": {
              "id": 23864,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23863,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 23895,
                  "src": "2873:13:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23862,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2873:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2872:15:6"
            },
            "scope": 24557,
            "src": "2800:276:6",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 23903,
              "nodeType": "Block",
              "src": "3384:26:6",
              "statements": [
                {
                  "expression": {
                    "hexValue": "",
                    "id": 23901,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3401:2:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                      "typeString": "literal_string \"\""
                    },
                    "value": ""
                  },
                  "functionReturnParameters": 23900,
                  "id": 23902,
                  "nodeType": "Return",
                  "src": "3394:9:6"
                }
              ]
            },
            "documentation": {
              "id": 23896,
              "nodeType": "StructuredDocumentation",
              "src": "3082:231:6",
              "text": " @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts."
            },
            "id": 23904,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_baseURI",
            "nameLocation": "3327:8:6",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23897,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3335:2:6"
            },
            "returnParameters": {
              "id": 23900,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23899,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 23904,
                  "src": "3369:13:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 23898,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3369:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3368:15:6"
            },
            "scope": 24557,
            "src": "3318:92:6",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              13905
            ],
            "body": {
              "id": 23946,
              "nodeType": "Block",
              "src": "3537:337:6",
              "statements": [
                {
                  "assignments": [
                    23914
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 23914,
                      "mutability": "mutable",
                      "name": "owner",
                      "nameLocation": "3555:5:6",
                      "nodeType": "VariableDeclaration",
                      "scope": 23946,
                      "src": "3547:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 23913,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3547:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 23919,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 23917,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23909,
                        "src": "3578:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 23915,
                        "name": "ERC721",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24557,
                        "src": "3563:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC721_$24557_$",
                          "typeString": "type(contract ERC721)"
                        }
                      },
                      "id": 23916,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ownerOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 23836,
                      "src": "3563:14:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                        "typeString": "function (uint256) view returns (address)"
                      }
                    },
                    "id": 23918,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3563:23:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3547:39:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 23923,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 23921,
                          "name": "to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23907,
                          "src": "3604:2:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "id": 23922,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23914,
                          "src": "3610:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3604:11:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572",
                        "id": 23924,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3617:35:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942",
                          "typeString": "literal_string \"ERC721: approval to current owner\""
                        },
                        "value": "ERC721: approval to current owner"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942",
                          "typeString": "literal_string \"ERC721: approval to current owner\""
                        }
                      ],
                      "id": 23920,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3596:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 23925,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3596:57:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23926,
                  "nodeType": "ExpressionStatement",
                  "src": "3596:57:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 23937,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 23931,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 23928,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15638,
                              "src": "3685:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 23929,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3685:12:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 23930,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 23914,
                            "src": "3701:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3685:21:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "arguments": [
                            {
                              "id": 23933,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23914,
                              "src": "3727:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 23934,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15638,
                                "src": "3734:10:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 23935,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3734:12:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 23932,
                            "name": "isApprovedForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24000,
                            "src": "3710:16:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address,address) view returns (bool)"
                            }
                          },
                          "id": 23936,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3710:37:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3685:62:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c",
                        "id": 23938,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3761:64:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304",
                          "typeString": "literal_string \"ERC721: approve caller is not token owner nor approved for all\""
                        },
                        "value": "ERC721: approve caller is not token owner nor approved for all"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8a333355a81806ed720720a526142c1e97d1086371f6be2b18561203134ef304",
                          "typeString": "literal_string \"ERC721: approve caller is not token owner nor approved for all\""
                        }
                      ],
                      "id": 23927,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3664:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 23939,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3664:171:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23940,
                  "nodeType": "ExpressionStatement",
                  "src": "3664:171:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 23942,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23907,
                        "src": "3855:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 23943,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23909,
                        "src": "3859:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 23941,
                      "name": "_approve",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24426,
                      "src": "3846:8:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 23944,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3846:21:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23945,
                  "nodeType": "ExpressionStatement",
                  "src": "3846:21:6"
                }
              ]
            },
            "documentation": {
              "id": 23905,
              "nodeType": "StructuredDocumentation",
              "src": "3416:46:6",
              "text": " @dev See {IERC721-approve}."
            },
            "functionSelector": "095ea7b3",
            "id": 23947,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "approve",
            "nameLocation": "3476:7:6",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 23911,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3528:8:6"
            },
            "parameters": {
              "id": 23910,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23907,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "3492:2:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 23947,
                  "src": "3484:10:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23906,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3484:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23909,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "3504:7:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 23947,
                  "src": "3496:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23908,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3496:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3483:29:6"
            },
            "returnParameters": {
              "id": 23912,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3537:0:6"
            },
            "scope": 24557,
            "src": "3467:407:6",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13921
            ],
            "body": {
              "id": 23964,
              "nodeType": "Block",
              "src": "4020:82:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 23957,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23950,
                        "src": "4045:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 23956,
                      "name": "_requireMinted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24472,
                      "src": "4030:14:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) view"
                      }
                    },
                    "id": 23958,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4030:23:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23959,
                  "nodeType": "ExpressionStatement",
                  "src": "4030:23:6"
                },
                {
                  "expression": {
                    "baseExpression": {
                      "id": 23960,
                      "name": "_tokenApprovals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23730,
                      "src": "4071:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                        "typeString": "mapping(uint256 => address)"
                      }
                    },
                    "id": 23962,
                    "indexExpression": {
                      "id": 23961,
                      "name": "tokenId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23950,
                      "src": "4087:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4071:24:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 23955,
                  "id": 23963,
                  "nodeType": "Return",
                  "src": "4064:31:6"
                }
              ]
            },
            "documentation": {
              "id": 23948,
              "nodeType": "StructuredDocumentation",
              "src": "3880:50:6",
              "text": " @dev See {IERC721-getApproved}."
            },
            "functionSelector": "081812fc",
            "id": 23965,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getApproved",
            "nameLocation": "3944:11:6",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 23952,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3993:8:6"
            },
            "parameters": {
              "id": 23951,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23950,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "3964:7:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 23965,
                  "src": "3956:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23949,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3956:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3955:17:6"
            },
            "returnParameters": {
              "id": 23955,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23954,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 23965,
                  "src": "4011:7:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23953,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4011:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4010:9:6"
            },
            "scope": 24557,
            "src": "3935:167:6",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13913
            ],
            "body": {
              "id": 23981,
              "nodeType": "Block",
              "src": "4253:69:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 23975,
                          "name": "_msgSender",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15638,
                          "src": "4282:10:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                            "typeString": "function () view returns (address)"
                          }
                        },
                        "id": 23976,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4282:12:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 23977,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23968,
                        "src": "4296:8:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 23978,
                        "name": "approved",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23970,
                        "src": "4306:8:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 23974,
                      "name": "_setApprovalForAll",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24458,
                      "src": "4263:18:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                        "typeString": "function (address,address,bool)"
                      }
                    },
                    "id": 23979,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4263:52:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23980,
                  "nodeType": "ExpressionStatement",
                  "src": "4263:52:6"
                }
              ]
            },
            "documentation": {
              "id": 23966,
              "nodeType": "StructuredDocumentation",
              "src": "4108:56:6",
              "text": " @dev See {IERC721-setApprovalForAll}."
            },
            "functionSelector": "a22cb465",
            "id": 23982,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setApprovalForAll",
            "nameLocation": "4178:17:6",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 23972,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4244:8:6"
            },
            "parameters": {
              "id": 23971,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23968,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "4204:8:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 23982,
                  "src": "4196:16:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23967,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4196:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23970,
                  "mutability": "mutable",
                  "name": "approved",
                  "nameLocation": "4219:8:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 23982,
                  "src": "4214:13:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23969,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4214:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4195:33:6"
            },
            "returnParameters": {
              "id": 23973,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4253:0:6"
            },
            "scope": 24557,
            "src": "4169:153:6",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13931
            ],
            "body": {
              "id": 23999,
              "nodeType": "Block",
              "src": "4491:59:6",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "baseExpression": {
                        "id": 23993,
                        "name": "_operatorApprovals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23736,
                        "src": "4508:18:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                          "typeString": "mapping(address => mapping(address => bool))"
                        }
                      },
                      "id": 23995,
                      "indexExpression": {
                        "id": 23994,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23985,
                        "src": "4527:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "4508:25:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      }
                    },
                    "id": 23997,
                    "indexExpression": {
                      "id": 23996,
                      "name": "operator",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 23987,
                      "src": "4534:8:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4508:35:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 23992,
                  "id": 23998,
                  "nodeType": "Return",
                  "src": "4501:42:6"
                }
              ]
            },
            "documentation": {
              "id": 23983,
              "nodeType": "StructuredDocumentation",
              "src": "4328:55:6",
              "text": " @dev See {IERC721-isApprovedForAll}."
            },
            "functionSelector": "e985e9c5",
            "id": 24000,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isApprovedForAll",
            "nameLocation": "4397:16:6",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 23989,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4467:8:6"
            },
            "parameters": {
              "id": 23988,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23985,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "4422:5:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24000,
                  "src": "4414:13:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23984,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4414:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23987,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "4437:8:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24000,
                  "src": "4429:16:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23986,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4429:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4413:33:6"
            },
            "returnParameters": {
              "id": 23992,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23991,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 24000,
                  "src": "4485:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23990,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4485:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4484:6:6"
            },
            "scope": 24557,
            "src": "4388:162:6",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13897
            ],
            "body": {
              "id": 24026,
              "nodeType": "Block",
              "src": "4731:208:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 24013,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15638,
                              "src": "4820:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 24014,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4820:12:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24015,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24007,
                            "src": "4834:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 24012,
                          "name": "_isApprovedOrOwner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24157,
                          "src": "4801:18:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) view returns (bool)"
                          }
                        },
                        "id": 24016,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4801:41:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564",
                        "id": 24017,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4844:48:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b",
                          "typeString": "literal_string \"ERC721: caller is not token owner nor approved\""
                        },
                        "value": "ERC721: caller is not token owner nor approved"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b",
                          "typeString": "literal_string \"ERC721: caller is not token owner nor approved\""
                        }
                      ],
                      "id": 24011,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4793:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 24018,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4793:100:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24019,
                  "nodeType": "ExpressionStatement",
                  "src": "4793:100:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 24021,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24003,
                        "src": "4914:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24022,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24005,
                        "src": "4920:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24023,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24007,
                        "src": "4924:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 24020,
                      "name": "_transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24402,
                      "src": "4904:9:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 24024,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4904:28:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24025,
                  "nodeType": "ExpressionStatement",
                  "src": "4904:28:6"
                }
              ]
            },
            "documentation": {
              "id": 24001,
              "nodeType": "StructuredDocumentation",
              "src": "4556:51:6",
              "text": " @dev See {IERC721-transferFrom}."
            },
            "functionSelector": "23b872dd",
            "id": 24027,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "transferFrom",
            "nameLocation": "4621:12:6",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 24009,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4722:8:6"
            },
            "parameters": {
              "id": 24008,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24003,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "4651:4:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24027,
                  "src": "4643:12:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24002,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4643:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24005,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "4673:2:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24027,
                  "src": "4665:10:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24004,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4665:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24007,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "4693:7:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24027,
                  "src": "4685:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24006,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4685:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4633:73:6"
            },
            "returnParameters": {
              "id": 24010,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4731:0:6"
            },
            "scope": 24557,
            "src": "4612:327:6",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13887
            ],
            "body": {
              "id": 24045,
              "nodeType": "Block",
              "src": "5128:56:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 24039,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24030,
                        "src": "5155:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24040,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24032,
                        "src": "5161:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24041,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24034,
                        "src": "5165:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 24042,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5174:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "id": 24038,
                      "name": "safeTransferFrom",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        24046,
                        24076
                      ],
                      "referencedDeclaration": 24076,
                      "src": "5138:16:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,uint256,bytes memory)"
                      }
                    },
                    "id": 24043,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5138:39:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24044,
                  "nodeType": "ExpressionStatement",
                  "src": "5138:39:6"
                }
              ]
            },
            "documentation": {
              "id": 24028,
              "nodeType": "StructuredDocumentation",
              "src": "4945:55:6",
              "text": " @dev See {IERC721-safeTransferFrom}."
            },
            "functionSelector": "42842e0e",
            "id": 24046,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "safeTransferFrom",
            "nameLocation": "5014:16:6",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 24036,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5119:8:6"
            },
            "parameters": {
              "id": 24035,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24030,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "5048:4:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24046,
                  "src": "5040:12:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24029,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5040:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24032,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "5070:2:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24046,
                  "src": "5062:10:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24031,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5062:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24034,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "5090:7:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24046,
                  "src": "5082:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24033,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5082:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5030:73:6"
            },
            "returnParameters": {
              "id": 24037,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5128:0:6"
            },
            "scope": 24557,
            "src": "5005:179:6",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              13877
            ],
            "body": {
              "id": 24075,
              "nodeType": "Block",
              "src": "5400:165:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 24061,
                              "name": "_msgSender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15638,
                              "src": "5437:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                "typeString": "function () view returns (address)"
                              }
                            },
                            "id": 24062,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5437:12:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24063,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24053,
                            "src": "5451:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 24060,
                          "name": "_isApprovedOrOwner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24157,
                          "src": "5418:18:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) view returns (bool)"
                          }
                        },
                        "id": 24064,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5418:41:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6572206e6f7220617070726f766564",
                        "id": 24065,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5461:48:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b",
                          "typeString": "literal_string \"ERC721: caller is not token owner nor approved\""
                        },
                        "value": "ERC721: caller is not token owner nor approved"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_eb80b9f25203511adb7b7660e6222669e088cedd0909cd81ed7470e34dcd010b",
                          "typeString": "literal_string \"ERC721: caller is not token owner nor approved\""
                        }
                      ],
                      "id": 24059,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5410:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 24066,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5410:100:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24067,
                  "nodeType": "ExpressionStatement",
                  "src": "5410:100:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 24069,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24049,
                        "src": "5534:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24070,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24051,
                        "src": "5540:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24071,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24053,
                        "src": "5544:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 24072,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24055,
                        "src": "5553:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 24068,
                      "name": "_safeTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24105,
                      "src": "5520:13:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,uint256,bytes memory)"
                      }
                    },
                    "id": 24073,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5520:38:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24074,
                  "nodeType": "ExpressionStatement",
                  "src": "5520:38:6"
                }
              ]
            },
            "documentation": {
              "id": 24047,
              "nodeType": "StructuredDocumentation",
              "src": "5190:55:6",
              "text": " @dev See {IERC721-safeTransferFrom}."
            },
            "functionSelector": "b88d4fde",
            "id": 24076,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "safeTransferFrom",
            "nameLocation": "5259:16:6",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 24057,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5391:8:6"
            },
            "parameters": {
              "id": 24056,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24049,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "5293:4:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24076,
                  "src": "5285:12:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24048,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5285:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24051,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "5315:2:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24076,
                  "src": "5307:10:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24050,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5307:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24053,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "5335:7:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24076,
                  "src": "5327:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24052,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5327:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24055,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "5365:4:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24076,
                  "src": "5352:17:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 24054,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5352:5:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5275:100:6"
            },
            "returnParameters": {
              "id": 24058,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5400:0:6"
            },
            "scope": 24557,
            "src": "5250:315:6",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 24104,
              "nodeType": "Block",
              "src": "6566:165:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 24089,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24079,
                        "src": "6586:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24090,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24081,
                        "src": "6592:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24091,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24083,
                        "src": "6596:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 24088,
                      "name": "_transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24402,
                      "src": "6576:9:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 24092,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6576:28:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24093,
                  "nodeType": "ExpressionStatement",
                  "src": "6576:28:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 24096,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24079,
                            "src": "6645:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24097,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24081,
                            "src": "6651:2:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24098,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24083,
                            "src": "6655:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 24099,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24085,
                            "src": "6664:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 24095,
                          "name": "_checkOnERC721Received",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24534,
                          "src": "6622:22:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256,bytes memory) returns (bool)"
                          }
                        },
                        "id": 24100,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6622:47:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
                        "id": 24101,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6671:52:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                          "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                        },
                        "value": "ERC721: transfer to non ERC721Receiver implementer"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                          "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                        }
                      ],
                      "id": 24094,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "6614:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 24102,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6614:110:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24103,
                  "nodeType": "ExpressionStatement",
                  "src": "6614:110:6"
                }
              ]
            },
            "documentation": {
              "id": 24077,
              "nodeType": "StructuredDocumentation",
              "src": "5571:850:6",
              "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."
            },
            "id": 24105,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_safeTransfer",
            "nameLocation": "6435:13:6",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24086,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24079,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "6466:4:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24105,
                  "src": "6458:12:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24078,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6458:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24081,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "6488:2:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24105,
                  "src": "6480:10:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24080,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6480:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24083,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "6508:7:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24105,
                  "src": "6500:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24082,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6500:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24085,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "6538:4:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24105,
                  "src": "6525:17:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 24084,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6525:5:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6448:100:6"
            },
            "returnParameters": {
              "id": 24087,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6566:0:6"
            },
            "scope": 24557,
            "src": "6426:305:6",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24122,
              "nodeType": "Block",
              "src": "7105:54:6",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 24120,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "baseExpression": {
                        "id": 24113,
                        "name": "_owners",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23722,
                        "src": "7122:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 24115,
                      "indexExpression": {
                        "id": 24114,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24108,
                        "src": "7130:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "7122:16:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 24118,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7150:1:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 24117,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "7142:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 24116,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7142:7:6",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 24119,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7142:10:6",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "7122:30:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 24112,
                  "id": 24121,
                  "nodeType": "Return",
                  "src": "7115:37:6"
                }
              ]
            },
            "documentation": {
              "id": 24106,
              "nodeType": "StructuredDocumentation",
              "src": "6737:292:6",
              "text": " @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)."
            },
            "id": 24123,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_exists",
            "nameLocation": "7043:7:6",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24109,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24108,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "7059:7:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24123,
                  "src": "7051:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24107,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7051:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7050:17:6"
            },
            "returnParameters": {
              "id": 24112,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24111,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 24123,
                  "src": "7099:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 24110,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7099:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7098:6:6"
            },
            "scope": 24557,
            "src": "7034:125:6",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24156,
              "nodeType": "Block",
              "src": "7416:162:6",
              "statements": [
                {
                  "assignments": [
                    24134
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 24134,
                      "mutability": "mutable",
                      "name": "owner",
                      "nameLocation": "7434:5:6",
                      "nodeType": "VariableDeclaration",
                      "scope": 24156,
                      "src": "7426:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 24133,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7426:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 24139,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 24137,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24128,
                        "src": "7457:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 24135,
                        "name": "ERC721",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24557,
                        "src": "7442:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC721_$24557_$",
                          "typeString": "type(contract ERC721)"
                        }
                      },
                      "id": 24136,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ownerOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 23836,
                      "src": "7442:14:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                        "typeString": "function (uint256) view returns (address)"
                      }
                    },
                    "id": 24138,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7442:23:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7426:39:6"
                },
                {
                  "expression": {
                    "components": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 24153,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 24147,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 24142,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 24140,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24126,
                              "src": "7483:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 24141,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24134,
                              "src": "7494:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "7483:16:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 24144,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24134,
                                "src": "7520:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "id": 24145,
                                "name": "spender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24126,
                                "src": "7527:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 24143,
                              "name": "isApprovedForAll",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24000,
                              "src": "7503:16:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                "typeString": "function (address,address) view returns (bool)"
                              }
                            },
                            "id": 24146,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7503:32:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "7483:52:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 24152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 24149,
                                "name": "tokenId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24128,
                                "src": "7551:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 24148,
                              "name": "getApproved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23965,
                              "src": "7539:11:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                                "typeString": "function (uint256) view returns (address)"
                              }
                            },
                            "id": 24150,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7539:20:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 24151,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24126,
                            "src": "7563:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "7539:31:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "7483:87:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 24154,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "7482:89:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 24132,
                  "id": 24155,
                  "nodeType": "Return",
                  "src": "7475:96:6"
                }
              ]
            },
            "documentation": {
              "id": 24124,
              "nodeType": "StructuredDocumentation",
              "src": "7165:147:6",
              "text": " @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist."
            },
            "id": 24157,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_isApprovedOrOwner",
            "nameLocation": "7326:18:6",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24129,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24126,
                  "mutability": "mutable",
                  "name": "spender",
                  "nameLocation": "7353:7:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24157,
                  "src": "7345:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24125,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7345:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24128,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "7370:7:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24157,
                  "src": "7362:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24127,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7362:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7344:34:6"
            },
            "returnParameters": {
              "id": 24132,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24131,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 24157,
                  "src": "7410:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 24130,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "7410:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7409:6:6"
            },
            "scope": 24557,
            "src": "7317:261:6",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24171,
              "nodeType": "Block",
              "src": "7973:43:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 24166,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24160,
                        "src": "7993:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24167,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24162,
                        "src": "7997:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "",
                        "id": 24168,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8006:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        },
                        "value": ""
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                          "typeString": "literal_string \"\""
                        }
                      ],
                      "id": 24165,
                      "name": "_safeMint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        24172,
                        24201
                      ],
                      "referencedDeclaration": 24201,
                      "src": "7983:9:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,bytes memory)"
                      }
                    },
                    "id": 24169,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7983:26:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24170,
                  "nodeType": "ExpressionStatement",
                  "src": "7983:26:6"
                }
              ]
            },
            "documentation": {
              "id": 24158,
              "nodeType": "StructuredDocumentation",
              "src": "7584:319:6",
              "text": " @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event."
            },
            "id": 24172,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_safeMint",
            "nameLocation": "7917:9:6",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24163,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24160,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "7935:2:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24172,
                  "src": "7927:10:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24159,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7927:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24162,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "7947:7:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24172,
                  "src": "7939:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24161,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7939:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7926:29:6"
            },
            "returnParameters": {
              "id": 24164,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7973:0:6"
            },
            "scope": 24557,
            "src": "7908:108:6",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24200,
              "nodeType": "Block",
              "src": "8351:195:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 24183,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24175,
                        "src": "8367:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24184,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24177,
                        "src": "8371:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 24182,
                      "name": "_mint",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24267,
                      "src": "8361:5:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 24185,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8361:18:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24186,
                  "nodeType": "ExpressionStatement",
                  "src": "8361:18:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 24191,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8441:1:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 24190,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8433:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 24189,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "8433:7:6",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 24192,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8433:10:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24193,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24175,
                            "src": "8445:2:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 24194,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24177,
                            "src": "8449:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 24195,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24179,
                            "src": "8458:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 24188,
                          "name": "_checkOnERC721Received",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24534,
                          "src": "8410:22:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256,bytes memory) returns (bool)"
                          }
                        },
                        "id": 24196,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8410:53:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
                        "id": 24197,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8477:52:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                          "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                        },
                        "value": "ERC721: transfer to non ERC721Receiver implementer"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                          "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                        }
                      ],
                      "id": 24187,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "8389:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 24198,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8389:150:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24199,
                  "nodeType": "ExpressionStatement",
                  "src": "8389:150:6"
                }
              ]
            },
            "documentation": {
              "id": 24173,
              "nodeType": "StructuredDocumentation",
              "src": "8022:210:6",
              "text": " @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients."
            },
            "id": 24201,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_safeMint",
            "nameLocation": "8246:9:6",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24180,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24175,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "8273:2:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24201,
                  "src": "8265:10:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24174,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8265:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24177,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "8293:7:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24201,
                  "src": "8285:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24176,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8285:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24179,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "8323:4:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24201,
                  "src": "8310:17:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 24178,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "8310:5:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8255:78:6"
            },
            "returnParameters": {
              "id": 24181,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8351:0:6"
            },
            "scope": 24557,
            "src": "8237:309:6",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24266,
              "nodeType": "Block",
              "src": "8929:366:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 24215,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 24210,
                          "name": "to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24204,
                          "src": "8947:2:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 24213,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8961:1:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 24212,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "8953:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 24211,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8953:7:6",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 24214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8953:10:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "8947:16:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373",
                        "id": 24216,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8965:34:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6",
                          "typeString": "literal_string \"ERC721: mint to the zero address\""
                        },
                        "value": "ERC721: mint to the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6",
                          "typeString": "literal_string \"ERC721: mint to the zero address\""
                        }
                      ],
                      "id": 24209,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "8939:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 24217,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8939:61:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24218,
                  "nodeType": "ExpressionStatement",
                  "src": "8939:61:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 24223,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "9018:17:6",
                        "subExpression": {
                          "arguments": [
                            {
                              "id": 24221,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24206,
                              "src": "9027:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 24220,
                            "name": "_exists",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24123,
                            "src": "9019:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (uint256) view returns (bool)"
                            }
                          },
                          "id": 24222,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9019:16:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564",
                        "id": 24224,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9037:30:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57",
                          "typeString": "literal_string \"ERC721: token already minted\""
                        },
                        "value": "ERC721: token already minted"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57",
                          "typeString": "literal_string \"ERC721: token already minted\""
                        }
                      ],
                      "id": 24219,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "9010:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 24225,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9010:58:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24226,
                  "nodeType": "ExpressionStatement",
                  "src": "9010:58:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 24230,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9108:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 24229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9100:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 24228,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9100:7:6",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 24231,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9100:10:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24232,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24204,
                        "src": "9112:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24233,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24206,
                        "src": "9116:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 24227,
                      "name": "_beforeTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24545,
                      "src": "9079:20:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 24234,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9079:45:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24235,
                  "nodeType": "ExpressionStatement",
                  "src": "9079:45:6"
                },
                {
                  "expression": {
                    "id": 24240,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 24236,
                        "name": "_balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23726,
                        "src": "9135:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 24238,
                      "indexExpression": {
                        "id": 24237,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24204,
                        "src": "9145:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9135:13:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "hexValue": "31",
                      "id": 24239,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9152:1:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "9135:18:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 24241,
                  "nodeType": "ExpressionStatement",
                  "src": "9135:18:6"
                },
                {
                  "expression": {
                    "id": 24246,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 24242,
                        "name": "_owners",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23722,
                        "src": "9163:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 24244,
                      "indexExpression": {
                        "id": 24243,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24206,
                        "src": "9171:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9163:16:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 24245,
                      "name": "to",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24204,
                      "src": "9182:2:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "9163:21:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 24247,
                  "nodeType": "ExpressionStatement",
                  "src": "9163:21:6"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 24251,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9217:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 24250,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9209:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 24249,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9209:7:6",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 24252,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9209:10:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24253,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24204,
                        "src": "9221:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24254,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24206,
                        "src": "9225:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 24248,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13831,
                      "src": "9200:8:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 24255,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9200:33:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24256,
                  "nodeType": "EmitStatement",
                  "src": "9195:38:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 24260,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9272:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 24259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9264:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 24258,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9264:7:6",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 24261,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9264:10:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24262,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24204,
                        "src": "9276:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24263,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24206,
                        "src": "9280:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 24257,
                      "name": "_afterTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24556,
                      "src": "9244:19:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 24264,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9244:44:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24265,
                  "nodeType": "ExpressionStatement",
                  "src": "9244:44:6"
                }
              ]
            },
            "documentation": {
              "id": 24202,
              "nodeType": "StructuredDocumentation",
              "src": "8552:311:6",
              "text": " @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event."
            },
            "id": 24267,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_mint",
            "nameLocation": "8877:5:6",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24207,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24204,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "8891:2:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24267,
                  "src": "8883:10:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24203,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8883:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24206,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "8903:7:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24267,
                  "src": "8895:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24205,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8895:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8882:29:6"
            },
            "returnParameters": {
              "id": 24208,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8929:0:6"
            },
            "scope": 24557,
            "src": "8868:427:6",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24326,
              "nodeType": "Block",
              "src": "9561:357:6",
              "statements": [
                {
                  "assignments": [
                    24274
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 24274,
                      "mutability": "mutable",
                      "name": "owner",
                      "nameLocation": "9579:5:6",
                      "nodeType": "VariableDeclaration",
                      "scope": 24326,
                      "src": "9571:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 24273,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9571:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 24279,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 24277,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24270,
                        "src": "9602:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 24275,
                        "name": "ERC721",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24557,
                        "src": "9587:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ERC721_$24557_$",
                          "typeString": "type(contract ERC721)"
                        }
                      },
                      "id": 24276,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ownerOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 23836,
                      "src": "9587:14:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                        "typeString": "function (uint256) view returns (address)"
                      }
                    },
                    "id": 24278,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9587:23:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9571:39:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 24281,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24274,
                        "src": "9642:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 24284,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9657:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 24283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9649:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 24282,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9649:7:6",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 24285,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9649:10:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24286,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24270,
                        "src": "9661:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 24280,
                      "name": "_beforeTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24545,
                      "src": "9621:20:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 24287,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9621:48:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24288,
                  "nodeType": "ExpressionStatement",
                  "src": "9621:48:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 24292,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9724:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 24291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9716:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 24290,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9716:7:6",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 24293,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9716:10:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24294,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24270,
                        "src": "9728:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 24289,
                      "name": "_approve",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24426,
                      "src": "9707:8:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 24295,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9707:29:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24296,
                  "nodeType": "ExpressionStatement",
                  "src": "9707:29:6"
                },
                {
                  "expression": {
                    "id": 24301,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 24297,
                        "name": "_balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23726,
                        "src": "9747:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 24299,
                      "indexExpression": {
                        "id": 24298,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24274,
                        "src": "9757:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9747:16:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "-=",
                    "rightHandSide": {
                      "hexValue": "31",
                      "id": 24300,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9767:1:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "9747:21:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 24302,
                  "nodeType": "ExpressionStatement",
                  "src": "9747:21:6"
                },
                {
                  "expression": {
                    "id": 24306,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "9778:23:6",
                    "subExpression": {
                      "baseExpression": {
                        "id": 24303,
                        "name": "_owners",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23722,
                        "src": "9785:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 24305,
                      "indexExpression": {
                        "id": 24304,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24270,
                        "src": "9793:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9785:16:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24307,
                  "nodeType": "ExpressionStatement",
                  "src": "9778:23:6"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 24309,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24274,
                        "src": "9826:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 24312,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9841:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 24311,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9833:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 24310,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9833:7:6",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 24313,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9833:10:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24314,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24270,
                        "src": "9845:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 24308,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13831,
                      "src": "9817:8:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 24315,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9817:36:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24316,
                  "nodeType": "EmitStatement",
                  "src": "9812:41:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 24318,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24274,
                        "src": "9884:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 24321,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9899:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 24320,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "9891:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 24319,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9891:7:6",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 24322,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9891:10:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24323,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24270,
                        "src": "9903:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 24317,
                      "name": "_afterTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24556,
                      "src": "9864:19:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 24324,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9864:47:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24325,
                  "nodeType": "ExpressionStatement",
                  "src": "9864:47:6"
                }
              ]
            },
            "documentation": {
              "id": 24268,
              "nodeType": "StructuredDocumentation",
              "src": "9301:206:6",
              "text": " @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event."
            },
            "id": 24327,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_burn",
            "nameLocation": "9521:5:6",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24271,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24270,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "9535:7:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24327,
                  "src": "9527:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24269,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9527:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9526:17:6"
            },
            "returnParameters": {
              "id": 24272,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9561:0:6"
            },
            "scope": 24557,
            "src": "9512:406:6",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24401,
              "nodeType": "Block",
              "src": "10351:496:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 24343,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "id": 24340,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24334,
                              "src": "10384:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 24338,
                              "name": "ERC721",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24557,
                              "src": "10369:6:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ERC721_$24557_$",
                                "typeString": "type(contract ERC721)"
                              }
                            },
                            "id": 24339,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "ownerOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 23836,
                            "src": "10369:14:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 24341,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10369:23:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 24342,
                          "name": "from",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24330,
                          "src": "10396:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "10369:31:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a207472616e736665722066726f6d20696e636f7272656374206f776e6572",
                        "id": 24344,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10402:39:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48",
                          "typeString": "literal_string \"ERC721: transfer from incorrect owner\""
                        },
                        "value": "ERC721: transfer from incorrect owner"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_277f8ee9d5b4fc3c4149386f24de0fc1bbc63a8210e2197bfd1c0376a2ac5f48",
                          "typeString": "literal_string \"ERC721: transfer from incorrect owner\""
                        }
                      ],
                      "id": 24337,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "10361:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 24345,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10361:81:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24346,
                  "nodeType": "ExpressionStatement",
                  "src": "10361:81:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 24353,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 24348,
                          "name": "to",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24332,
                          "src": "10460:2:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 24351,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10474:1:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 24350,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10466:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 24349,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "10466:7:6",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 24352,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10466:10:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "10460:16:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373",
                        "id": 24354,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10478:38:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4",
                          "typeString": "literal_string \"ERC721: transfer to the zero address\""
                        },
                        "value": "ERC721: transfer to the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4",
                          "typeString": "literal_string \"ERC721: transfer to the zero address\""
                        }
                      ],
                      "id": 24347,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "10452:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 24355,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10452:65:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24356,
                  "nodeType": "ExpressionStatement",
                  "src": "10452:65:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 24358,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24330,
                        "src": "10549:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24359,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24332,
                        "src": "10555:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24360,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24334,
                        "src": "10559:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 24357,
                      "name": "_beforeTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24545,
                      "src": "10528:20:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 24361,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10528:39:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24362,
                  "nodeType": "ExpressionStatement",
                  "src": "10528:39:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "30",
                            "id": 24366,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10646:1:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "id": 24365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "10638:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 24364,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "10638:7:6",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 24367,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10638:10:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24368,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24334,
                        "src": "10650:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 24363,
                      "name": "_approve",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24426,
                      "src": "10629:8:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 24369,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10629:29:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24370,
                  "nodeType": "ExpressionStatement",
                  "src": "10629:29:6"
                },
                {
                  "expression": {
                    "id": 24375,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 24371,
                        "name": "_balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23726,
                        "src": "10669:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 24373,
                      "indexExpression": {
                        "id": 24372,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24330,
                        "src": "10679:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10669:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "-=",
                    "rightHandSide": {
                      "hexValue": "31",
                      "id": 24374,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10688:1:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "10669:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 24376,
                  "nodeType": "ExpressionStatement",
                  "src": "10669:20:6"
                },
                {
                  "expression": {
                    "id": 24381,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 24377,
                        "name": "_balances",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23726,
                        "src": "10699:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 24379,
                      "indexExpression": {
                        "id": 24378,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24332,
                        "src": "10709:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10699:13:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "hexValue": "31",
                      "id": 24380,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10716:1:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "10699:18:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 24382,
                  "nodeType": "ExpressionStatement",
                  "src": "10699:18:6"
                },
                {
                  "expression": {
                    "id": 24387,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 24383,
                        "name": "_owners",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23722,
                        "src": "10727:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 24385,
                      "indexExpression": {
                        "id": 24384,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24334,
                        "src": "10735:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10727:16:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 24386,
                      "name": "to",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24332,
                      "src": "10746:2:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "10727:21:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 24388,
                  "nodeType": "ExpressionStatement",
                  "src": "10727:21:6"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 24390,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24330,
                        "src": "10773:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24391,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24332,
                        "src": "10779:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24392,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24334,
                        "src": "10783:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 24389,
                      "name": "Transfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13831,
                      "src": "10764:8:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 24393,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10764:27:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24394,
                  "nodeType": "EmitStatement",
                  "src": "10759:32:6"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 24396,
                        "name": "from",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24330,
                        "src": "10822:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24397,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24332,
                        "src": "10828:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24398,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24334,
                        "src": "10832:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 24395,
                      "name": "_afterTokenTransfer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24556,
                      "src": "10802:19:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 24399,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10802:38:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24400,
                  "nodeType": "ExpressionStatement",
                  "src": "10802:38:6"
                }
              ]
            },
            "documentation": {
              "id": 24328,
              "nodeType": "StructuredDocumentation",
              "src": "9924:313:6",
              "text": " @dev Transfers `tokenId` from `from` to `to`.\n  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event."
            },
            "id": 24402,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_transfer",
            "nameLocation": "10251:9:6",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24335,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24330,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "10278:4:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24402,
                  "src": "10270:12:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24329,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10270:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24332,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "10300:2:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24402,
                  "src": "10292:10:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24331,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10292:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24334,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "10320:7:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24402,
                  "src": "10312:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24333,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10312:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10260:73:6"
            },
            "returnParameters": {
              "id": 24336,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10351:0:6"
            },
            "scope": 24557,
            "src": "10242:605:6",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24425,
              "nodeType": "Block",
              "src": "11023:107:6",
              "statements": [
                {
                  "expression": {
                    "id": 24414,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 24410,
                        "name": "_tokenApprovals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23730,
                        "src": "11033:15:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 24412,
                      "indexExpression": {
                        "id": 24411,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24407,
                        "src": "11049:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11033:24:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 24413,
                      "name": "to",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24405,
                      "src": "11060:2:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "11033:29:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 24415,
                  "nodeType": "ExpressionStatement",
                  "src": "11033:29:6"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 24419,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24407,
                            "src": "11101:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 24417,
                            "name": "ERC721",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24557,
                            "src": "11086:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_ERC721_$24557_$",
                              "typeString": "type(contract ERC721)"
                            }
                          },
                          "id": 24418,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "ownerOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 23836,
                          "src": "11086:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                            "typeString": "function (uint256) view returns (address)"
                          }
                        },
                        "id": 24420,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11086:23:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24421,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24405,
                        "src": "11111:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24422,
                        "name": "tokenId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24407,
                        "src": "11115:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 24416,
                      "name": "Approval",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13840,
                      "src": "11077:8:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 24423,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11077:46:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24424,
                  "nodeType": "EmitStatement",
                  "src": "11072:51:6"
                }
              ]
            },
            "documentation": {
              "id": 24403,
              "nodeType": "StructuredDocumentation",
              "src": "10853:101:6",
              "text": " @dev Approve `to` to operate on `tokenId`\n Emits an {Approval} event."
            },
            "id": 24426,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_approve",
            "nameLocation": "10968:8:6",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24408,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24405,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "10985:2:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24426,
                  "src": "10977:10:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24404,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10977:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24407,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "10997:7:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24426,
                  "src": "10989:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24406,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10989:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10976:29:6"
            },
            "returnParameters": {
              "id": 24409,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11023:0:6"
            },
            "scope": 24557,
            "src": "10959:171:6",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24457,
              "nodeType": "Block",
              "src": "11389:184:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 24439,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 24437,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24429,
                          "src": "11407:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "id": 24438,
                          "name": "operator",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24431,
                          "src": "11416:8:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "11407:17:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572",
                        "id": 24440,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11426:27:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05",
                          "typeString": "literal_string \"ERC721: approve to caller\""
                        },
                        "value": "ERC721: approve to caller"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05",
                          "typeString": "literal_string \"ERC721: approve to caller\""
                        }
                      ],
                      "id": 24436,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "11399:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 24441,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11399:55:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24442,
                  "nodeType": "ExpressionStatement",
                  "src": "11399:55:6"
                },
                {
                  "expression": {
                    "id": 24449,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 24443,
                          "name": "_operatorApprovals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23736,
                          "src": "11464:18:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                            "typeString": "mapping(address => mapping(address => bool))"
                          }
                        },
                        "id": 24446,
                        "indexExpression": {
                          "id": 24444,
                          "name": "owner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24429,
                          "src": "11483:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11464:25:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 24447,
                      "indexExpression": {
                        "id": 24445,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24431,
                        "src": "11490:8:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11464:35:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 24448,
                      "name": "approved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24433,
                      "src": "11502:8:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "11464:46:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 24450,
                  "nodeType": "ExpressionStatement",
                  "src": "11464:46:6"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 24452,
                        "name": "owner",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24429,
                        "src": "11540:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24453,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24431,
                        "src": "11547:8:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 24454,
                        "name": "approved",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24433,
                        "src": "11557:8:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 24451,
                      "name": "ApprovalForAll",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13849,
                      "src": "11525:14:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                        "typeString": "function (address,address,bool)"
                      }
                    },
                    "id": 24455,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11525:41:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24456,
                  "nodeType": "EmitStatement",
                  "src": "11520:46:6"
                }
              ]
            },
            "documentation": {
              "id": 24427,
              "nodeType": "StructuredDocumentation",
              "src": "11136:125:6",
              "text": " @dev Approve `operator` to operate on all of `owner` tokens\n Emits an {ApprovalForAll} event."
            },
            "id": 24458,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_setApprovalForAll",
            "nameLocation": "11275:18:6",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24434,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24429,
                  "mutability": "mutable",
                  "name": "owner",
                  "nameLocation": "11311:5:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24458,
                  "src": "11303:13:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24428,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11303:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24431,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "11334:8:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24458,
                  "src": "11326:16:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24430,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11326:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24433,
                  "mutability": "mutable",
                  "name": "approved",
                  "nameLocation": "11357:8:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24458,
                  "src": "11352:13:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 24432,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11352:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11293:78:6"
            },
            "returnParameters": {
              "id": 24435,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11389:0:6"
            },
            "scope": 24557,
            "src": "11266:307:6",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24471,
              "nodeType": "Block",
              "src": "11720:70:6",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 24466,
                            "name": "tokenId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24461,
                            "src": "11746:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 24465,
                          "name": "_exists",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24123,
                          "src": "11738:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (uint256) view returns (bool)"
                          }
                        },
                        "id": 24467,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11738:16:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4552433732313a20696e76616c696420746f6b656e204944",
                        "id": 24468,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11756:26:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f",
                          "typeString": "literal_string \"ERC721: invalid token ID\""
                        },
                        "value": "ERC721: invalid token ID"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b08d2b0fec7cc108ab049809a8beb42779d969a49299d0c317c907d9db22974f",
                          "typeString": "literal_string \"ERC721: invalid token ID\""
                        }
                      ],
                      "id": 24464,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "11730:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 24469,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11730:53:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 24470,
                  "nodeType": "ExpressionStatement",
                  "src": "11730:53:6"
                }
              ]
            },
            "documentation": {
              "id": 24459,
              "nodeType": "StructuredDocumentation",
              "src": "11579:73:6",
              "text": " @dev Reverts if the `tokenId` has not been minted yet."
            },
            "id": 24472,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_requireMinted",
            "nameLocation": "11666:14:6",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24462,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24461,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "11689:7:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24472,
                  "src": "11681:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24460,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "11681:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "11680:17:6"
            },
            "returnParameters": {
              "id": 24463,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11720:0:6"
            },
            "scope": 24557,
            "src": "11657:133:6",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24533,
              "nodeType": "Block",
              "src": "12497:676:6",
              "statements": [
                {
                  "condition": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 24486,
                        "name": "to",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24477,
                        "src": "12511:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 24487,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "isContract",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 24575,
                      "src": "12511:13:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                        "typeString": "function (address) view returns (bool)"
                      }
                    },
                    "id": 24488,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12511:15:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 24531,
                    "nodeType": "Block",
                    "src": "13131:36:6",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 24529,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13152:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 24485,
                        "id": 24530,
                        "nodeType": "Return",
                        "src": "13145:11:6"
                      }
                    ]
                  },
                  "id": 24532,
                  "nodeType": "IfStatement",
                  "src": "12507:660:6",
                  "trueBody": {
                    "id": 24528,
                    "nodeType": "Block",
                    "src": "12528:597:6",
                    "statements": [
                      {
                        "clauses": [
                          {
                            "block": {
                              "id": 24508,
                              "nodeType": "Block",
                              "src": "12642:91:6",
                              "statements": [
                                {
                                  "expression": {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    "id": 24506,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 24502,
                                      "name": "retval",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 24500,
                                      "src": "12667:6:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "expression": {
                                          "id": 24503,
                                          "name": "IERC721Receiver",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 24870,
                                          "src": "12677:15:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$24870_$",
                                            "typeString": "type(contract IERC721Receiver)"
                                          }
                                        },
                                        "id": 24504,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "onERC721Received",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 24869,
                                        "src": "12677:32:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                          "typeString": "function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)"
                                        }
                                      },
                                      "id": 24505,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "selector",
                                      "nodeType": "MemberAccess",
                                      "src": "12677:41:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "src": "12667:51:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "functionReturnParameters": 24485,
                                  "id": 24507,
                                  "nodeType": "Return",
                                  "src": "12660:58:6"
                                }
                              ]
                            },
                            "errorName": "",
                            "id": 24509,
                            "nodeType": "TryCatchClause",
                            "parameters": {
                              "id": 24501,
                              "nodeType": "ParameterList",
                              "parameters": [
                                {
                                  "constant": false,
                                  "id": 24500,
                                  "mutability": "mutable",
                                  "name": "retval",
                                  "nameLocation": "12634:6:6",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 24509,
                                  "src": "12627:13:6",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "typeName": {
                                    "id": 24499,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12627:6:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "src": "12626:15:6"
                            },
                            "src": "12618:115:6"
                          },
                          {
                            "block": {
                              "id": 24525,
                              "nodeType": "Block",
                              "src": "12762:353:6",
                              "statements": [
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 24516,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 24513,
                                        "name": "reason",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 24511,
                                        "src": "12784:6:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 24514,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "12784:13:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 24515,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12801:1:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "12784:18:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "id": 24523,
                                    "nodeType": "Block",
                                    "src": "12911:190:6",
                                    "statements": [
                                      {
                                        "AST": {
                                          "nodeType": "YulBlock",
                                          "src": "12997:86:6",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "13034:2:6",
                                                        "type": "",
                                                        "value": "32"
                                                      },
                                                      {
                                                        "name": "reason",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13038:6:6"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "13030:3:6"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "13030:15:6"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "reason",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13053:6:6"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "13047:5:6"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "13047:13:6"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "revert",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "13023:6:6"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "13023:38:6"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "13023:38:6"
                                            }
                                          ]
                                        },
                                        "documentation": "@solidity memory-safe-assembly",
                                        "evmVersion": "istanbul",
                                        "externalReferences": [
                                          {
                                            "declaration": 24511,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "13038:6:6",
                                            "valueSize": 1
                                          },
                                          {
                                            "declaration": 24511,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "13053:6:6",
                                            "valueSize": 1
                                          }
                                        ],
                                        "id": 24522,
                                        "nodeType": "InlineAssembly",
                                        "src": "12988:95:6"
                                      }
                                    ]
                                  },
                                  "id": 24524,
                                  "nodeType": "IfStatement",
                                  "src": "12780:321:6",
                                  "trueBody": {
                                    "id": 24521,
                                    "nodeType": "Block",
                                    "src": "12804:101:6",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572",
                                              "id": 24518,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "string",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "12833:52:6",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                                                "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                                              },
                                              "value": "ERC721: transfer to non ERC721Receiver implementer"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e",
                                                "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\""
                                              }
                                            ],
                                            "id": 24517,
                                            "name": "revert",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                              -19,
                                              -19
                                            ],
                                            "referencedDeclaration": -19,
                                            "src": "12826:6:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                              "typeString": "function (string memory) pure"
                                            }
                                          },
                                          "id": 24519,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "12826:60:6",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 24520,
                                        "nodeType": "ExpressionStatement",
                                        "src": "12826:60:6"
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "errorName": "",
                            "id": 24526,
                            "nodeType": "TryCatchClause",
                            "parameters": {
                              "id": 24512,
                              "nodeType": "ParameterList",
                              "parameters": [
                                {
                                  "constant": false,
                                  "id": 24511,
                                  "mutability": "mutable",
                                  "name": "reason",
                                  "nameLocation": "12754:6:6",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 24526,
                                  "src": "12741:19:6",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 24510,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12741:5:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "src": "12740:21:6"
                            },
                            "src": "12734:381:6"
                          }
                        ],
                        "externalCall": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 24493,
                                "name": "_msgSender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 15638,
                                "src": "12583:10:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                                  "typeString": "function () view returns (address)"
                                }
                              },
                              "id": 24494,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12583:12:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 24495,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24475,
                              "src": "12597:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 24496,
                              "name": "tokenId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24479,
                              "src": "12603:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 24497,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24481,
                              "src": "12612:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 24490,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 24477,
                                  "src": "12562:2:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 24489,
                                "name": "IERC721Receiver",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24870,
                                "src": "12546:15:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$24870_$",
                                  "typeString": "type(contract IERC721Receiver)"
                                }
                              },
                              "id": 24491,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12546:19:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC721Receiver_$24870",
                                "typeString": "contract IERC721Receiver"
                              }
                            },
                            "id": 24492,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "onERC721Received",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 24869,
                            "src": "12546:36:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                              "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)"
                            }
                          },
                          "id": 24498,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12546:71:6",
                          "tryCall": true,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 24527,
                        "nodeType": "TryStatement",
                        "src": "12542:573:6"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 24473,
              "nodeType": "StructuredDocumentation",
              "src": "11796:541:6",
              "text": " @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value"
            },
            "id": 24534,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_checkOnERC721Received",
            "nameLocation": "12351:22:6",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24482,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24475,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "12391:4:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24534,
                  "src": "12383:12:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24474,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12383:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24477,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "12413:2:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24534,
                  "src": "12405:10:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24476,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12405:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24479,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "12433:7:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24534,
                  "src": "12425:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24478,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12425:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24481,
                  "mutability": "mutable",
                  "name": "data",
                  "nameLocation": "12463:4:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24534,
                  "src": "12450:17:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 24480,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "12450:5:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12373:100:6"
            },
            "returnParameters": {
              "id": 24485,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24484,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 24534,
                  "src": "12491:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 24483,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "12491:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12490:6:6"
            },
            "scope": 24557,
            "src": "12342:831:6",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 24544,
              "nodeType": "Block",
              "src": "13849:2:6",
              "statements": []
            },
            "documentation": {
              "id": 24535,
              "nodeType": "StructuredDocumentation",
              "src": "13179:545:6",
              "text": " @dev Hook that is called before any token transfer. This includes minting\n and burning.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n transferred to `to`.\n - When `from` is zero, `tokenId` will be minted for `to`.\n - When `to` is zero, ``from``'s `tokenId` will be burned.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
            },
            "id": 24545,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_beforeTokenTransfer",
            "nameLocation": "13738:20:6",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24542,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24537,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "13776:4:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24545,
                  "src": "13768:12:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24536,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13768:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24539,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "13798:2:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24545,
                  "src": "13790:10:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24538,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "13790:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24541,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "13818:7:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24545,
                  "src": "13810:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24540,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "13810:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13758:73:6"
            },
            "returnParameters": {
              "id": 24543,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13849:0:6"
            },
            "scope": 24557,
            "src": "13729:122:6",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24555,
              "nodeType": "Block",
              "src": "14342:2:6",
              "statements": []
            },
            "documentation": {
              "id": 24546,
              "nodeType": "StructuredDocumentation",
              "src": "13857:361:6",
              "text": " @dev Hook that is called after any transfer of tokens. This includes\n minting and burning.\n Calling conditions:\n - when `from` and `to` are both non-zero.\n - `from` and `to` are never both zero.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]."
            },
            "id": 24556,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_afterTokenTransfer",
            "nameLocation": "14232:19:6",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24553,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24548,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "14269:4:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24556,
                  "src": "14261:12:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24547,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14261:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24550,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "14291:2:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24556,
                  "src": "14283:10:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 24549,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "14283:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24552,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "14311:7:6",
                  "nodeType": "VariableDeclaration",
                  "scope": 24556,
                  "src": "14303:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24551,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "14303:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14251:73:6"
            },
            "returnParameters": {
              "id": 24554,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14342:0:6"
            },
            "scope": 24557,
            "src": "14223:121:6",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "internal"
          }
        ],
        "scope": 24558,
        "src": "628:13718:6"
      }
    ],
    "src": "107:14240:6"
  },
  "bytecode": "60806040523480156200001157600080fd5b50604051620013c4380380620013c48339810160408190526200003491620001c1565b81516200004990600090602085019062000068565b5080516200005f90600190602084019062000068565b5050506200027b565b828054620000769062000228565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b600082601f8301126200011f578081fd5b81516001600160401b03808211156200013c576200013c62000265565b604051601f8301601f19908116603f0116810190828211818310171562000167576200016762000265565b8160405283815260209250868385880101111562000183578485fd5b8491505b83821015620001a6578582018301518183018401529082019062000187565b83821115620001b757848385830101525b9695505050505050565b60008060408385031215620001d4578182fd5b82516001600160401b0380821115620001eb578384fd5b620001f9868387016200010e565b935060208501519150808211156200020f578283fd5b506200021e858286016200010e565b9150509250929050565b6002810460018216806200023d57607f821691505b602082108114156200025f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b611139806200028b6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec576100cf565b80636352211e1461017757806370a082311461018a57806395d89b41146101ab576100cf565b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610e37565b610228565b60405190151581526020015b60405180910390f35b61010461027c565b6040516100f39190610f1f565b61012461011f366004610e6f565b61030e565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610e0e565b610335565b005b61014f61015f366004610cc4565b610450565b61014f610172366004610cc4565b610481565b610124610185366004610e6f565b61049c565b61019d610198366004610c78565b6104fc565b6040519081526020016100f3565b610104610582565b61014f6101c1366004610dd4565b610591565b61014f6101d4366004610cff565b6105a0565b6101046101e7366004610e6f565b6105d8565b6100e76101fa366004610c92565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b90505b919050565b60606000805461028b90611041565b80601f01602080910402602001604051908101604052809291908181526020018280546102b790611041565b80156103045780601f106102d957610100808354040283529160200191610304565b820191906000526020600020905b8154815290600101906020018083116102e757829003601f168201915b5050505050905090565b60006103198261064c565b506000908152600460205260409020546001600160a01b031690565b60006103408261049c565b9050806001600160a01b0316836001600160a01b031614156103b35760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103cf57506103cf81336101fa565b6104415760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016103aa565b61044b83836106ae565b505050565b61045a338261071c565b6104765760405162461bcd60e51b81526004016103aa90610f84565b61044b83838361079b565b61044b838383604051806020016040528060008152506105a0565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103aa565b60006001600160a01b0382166105665760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103aa565b506001600160a01b031660009081526003602052604090205490565b60606001805461028b90611041565b61059c338383610937565b5050565b6105aa338361071c565b6105c65760405162461bcd60e51b81526004016103aa90610f84565b6105d284848484610a06565b50505050565b60606105e38261064c565b60006105fa60408051602081019091526000815290565b9050600081511161061a5760405180602001604052806000815250610645565b8061062484610a39565b604051602001610635929190610eb3565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166106ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103aa565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e38261049c565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806107288361049c565b9050806001600160a01b0316846001600160a01b0316148061076f57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107935750836001600160a01b03166107888461030e565b6001600160a01b0316145b949350505050565b826001600160a01b03166107ae8261049c565b6001600160a01b0316146108125760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103aa565b6001600160a01b0382166108745760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103aa565b61087f6000826106ae565b6001600160a01b03831660009081526003602052604081208054600192906108a8908490610ffe565b90915550506001600160a01b03821660009081526003602052604081208054600192906108d6908490610fd2565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a461044b565b816001600160a01b0316836001600160a01b031614156109995760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103aa565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610a1184848461079b565b610a1d84848484610b54565b6105d25760405162461bcd60e51b81526004016103aa90610f32565b606081610a5e57506040805180820190915260018152600360fc1b6020820152610277565b8160005b8115610a885780610a728161107c565b9150610a819050600a83610fea565b9150610a62565b60008167ffffffffffffffff811115610ab157634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610adb576020820181803683370190505b5090505b841561079357610af0600183610ffe565b9150610afd600a86611097565b610b08906030610fd2565b60f81b818381518110610b2b57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350610b4d600a86610fea565b9450610adf565b60006001600160a01b0384163b15610c5657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610b98903390899088908890600401610ee2565b602060405180830381600087803b158015610bb257600080fd5b505af1925050508015610be2575060408051601f3d908101601f19168201909252610bdf91810190610e53565b60015b610c3c573d808015610c10576040519150601f19603f3d011682016040523d82523d6000602084013e610c15565b606091505b508051610c345760405162461bcd60e51b81526004016103aa90610f32565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610793565b506001949350505050565b80356001600160a01b038116811461027757600080fd5b600060208284031215610c89578081fd5b61064582610c61565b60008060408385031215610ca4578081fd5b610cad83610c61565b9150610cbb60208401610c61565b90509250929050565b600080600060608486031215610cd8578081fd5b610ce184610c61565b9250610cef60208501610c61565b9150604084013590509250925092565b60008060008060808587031215610d14578081fd5b610d1d85610c61565b9350610d2b60208601610c61565b925060408501359150606085013567ffffffffffffffff80821115610d4e578283fd5b818701915087601f830112610d61578283fd5b813581811115610d7357610d736110d7565b604051601f8201601f19908116603f01168101908382118183101715610d9b57610d9b6110d7565b816040528281528a6020848701011115610db3578586fd5b82602086016020830137918201602001949094529598949750929550505050565b60008060408385031215610de6578182fd5b610def83610c61565b915060208301358015158114610e03578182fd5b809150509250929050565b60008060408385031215610e20578182fd5b610e2983610c61565b946020939093013593505050565b600060208284031215610e48578081fd5b8135610645816110ed565b600060208284031215610e64578081fd5b8151610645816110ed565b600060208284031215610e80578081fd5b5035919050565b60008151808452610e9f816020860160208601611015565b601f01601f19169290920160200192915050565b60008351610ec5818460208801611015565b835190830190610ed9818360208801611015565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090610f1590830184610e87565b9695505050505050565b6000602082526106456020830184610e87565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008219821115610fe557610fe56110ab565b500190565b600082610ff957610ff96110c1565b500490565b600082821015611010576110106110ab565b500390565b60005b83811015611030578181015183820152602001611018565b838111156105d25750506000910152565b60028104600182168061105557607f821691505b6020821081141561107657634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611090576110906110ab565b5060010190565b6000826110a6576110a66110c1565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146106ab57600080fdfea264697066735822122080d264bcb981ce24f3416343536f6a62ec96ee348b16f5a4bb0f1f10e7c7a64364736f6c63430008020033",
  "bytecodeSha1": "6452aec8ea191f637262b8dda8470d0cc04e155c",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.2+commit.661d1103"
  },
  "contractName": "ERC721",
  "coverageMap": {
    "branches": {
      "10": {},
      "11": {},
      "12": {
        "Strings.toString": {
          "63": [
            665,
            675,
            false
          ]
        }
      },
      "14": {},
      "15": {},
      "6": {
        "ERC721._safeTransfer": {
          "62": [
            6622,
            6669,
            true
          ]
        },
        "ERC721._setApprovalForAll": {
          "61": [
            11407,
            11424,
            true
          ]
        },
        "ERC721._transfer": {
          "59": [
            10369,
            10400,
            true
          ],
          "60": [
            10460,
            10476,
            true
          ]
        },
        "ERC721.approve": {
          "51": [
            3604,
            3615,
            true
          ],
          "52": [
            3685,
            3706,
            true
          ],
          "53": [
            3710,
            3747,
            true
          ]
        },
        "ERC721.balanceOf": {
          "56": [
            2028,
            2047,
            true
          ]
        },
        "ERC721.ownerOf": {
          "55": [
            2331,
            2350,
            true
          ]
        },
        "ERC721.safeTransferFrom": {
          "57": [
            5418,
            5459,
            true
          ]
        },
        "ERC721.tokenURI": {
          "58": [
            2983,
            3008,
            true
          ]
        },
        "ERC721.transferFrom": {
          "54": [
            4801,
            4842,
            true
          ]
        }
      },
      "7": {},
      "8": {},
      "9": {}
    },
    "statements": {
      "10": {
        "Address.isContract": {
          "47": [
            1458,
            1488
          ]
        }
      },
      "11": {
        "Context._msgSender": {
          "7": [
            712,
            729
          ]
        }
      },
      "12": {
        "Strings.toString": {
          "41": [
            691,
            701
          ],
          "42": [
            807,
            815
          ],
          "43": [
            829,
            839
          ],
          "44": [
            941,
            952
          ],
          "45": [
            966,
            1022
          ],
          "46": [
            1036,
            1047
          ]
        }
      },
      "14": {
        "ERC165.supportsInterface": {
          "2": [
            930,
            977
          ]
        }
      },
      "15": {},
      "6": {
        "ERC721._approve": {
          "25": [
            11033,
            11062
          ],
          "26": [
            11072,
            11123
          ]
        },
        "ERC721._baseURI": {
          "21": [
            3394,
            3403
          ]
        },
        "ERC721._checkOnERC721Received": {
          "48": [
            12826,
            12886
          ],
          "49": [
            12660,
            12718
          ],
          "50": [
            13145,
            13156
          ]
        },
        "ERC721._exists": {
          "23": [
            7115,
            7152
          ]
        },
        "ERC721._isApprovedOrOwner": {
          "27": [
            7475,
            7571
          ]
        },
        "ERC721._requireMinted": {
          "24": [
            11730,
            11783
          ]
        },
        "ERC721._safeTransfer": {
          "39": [
            6576,
            6604
          ],
          "40": [
            6614,
            6724
          ]
        },
        "ERC721._setApprovalForAll": {
          "36": [
            11399,
            11454
          ],
          "37": [
            11464,
            11510
          ],
          "38": [
            11520,
            11566
          ]
        },
        "ERC721._transfer": {
          "28": [
            10361,
            10442
          ],
          "29": [
            10452,
            10517
          ],
          "30": [
            10629,
            10658
          ],
          "31": [
            10669,
            10689
          ],
          "32": [
            10699,
            10717
          ],
          "33": [
            10727,
            10748
          ],
          "34": [
            10759,
            10791
          ],
          "35": [
            10802,
            10840
          ]
        },
        "ERC721.approve": {
          "6": [
            3596,
            3653
          ],
          "8": [
            3664,
            3835
          ],
          "9": [
            3846,
            3867
          ]
        },
        "ERC721.balanceOf": {
          "14": [
            2020,
            2093
          ],
          "15": [
            2103,
            2126
          ]
        },
        "ERC721.getApproved": {
          "4": [
            4030,
            4053
          ],
          "5": [
            4064,
            4095
          ]
        },
        "ERC721.isApprovedForAll": {
          "0": [
            4501,
            4543
          ]
        },
        "ERC721.name": {
          "3": [
            2549,
            2561
          ]
        },
        "ERC721.ownerOf": {
          "13": [
            2323,
            2379
          ]
        },
        "ERC721.safeTransferFrom": {
          "12": [
            5138,
            5177
          ],
          "18": [
            5410,
            5510
          ],
          "19": [
            5520,
            5558
          ]
        },
        "ERC721.setApprovalForAll": {
          "17": [
            4263,
            4315
          ]
        },
        "ERC721.supportsInterface": {
          "1": [
            1688,
            1863
          ]
        },
        "ERC721.symbol": {
          "16": [
            2713,
            2727
          ]
        },
        "ERC721.tokenURI": {
          "20": [
            2898,
            2921
          ],
          "22": [
            2976,
            3069
          ]
        },
        "ERC721.transferFrom": {
          "10": [
            4793,
            4893
          ],
          "11": [
            4904,
            4932
          ]
        }
      },
      "7": {},
      "8": {},
      "9": {}
    }
  },
  "dependencies": [
    "OpenZeppelin/openzeppelin-contracts@4.7.3/Address",
    "OpenZeppelin/openzeppelin-contracts@4.7.3/Context",
    "OpenZeppelin/openzeppelin-contracts@4.7.3/ERC165",
    "OpenZeppelin/openzeppelin-contracts@4.7.3/IERC165",
    "OpenZeppelin/openzeppelin-contracts@4.7.3/IERC721",
    "OpenZeppelin/openzeppelin-contracts@4.7.3/IERC721Metadata",
    "OpenZeppelin/openzeppelin-contracts@4.7.3/IERC721Receiver",
    "OpenZeppelin/openzeppelin-contracts@4.7.3/Strings"
  ],
  "deployedBytecode": "608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec576100cf565b80636352211e1461017757806370a082311461018a57806395d89b41146101ab576100cf565b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610e37565b610228565b60405190151581526020015b60405180910390f35b61010461027c565b6040516100f39190610f1f565b61012461011f366004610e6f565b61030e565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610e0e565b610335565b005b61014f61015f366004610cc4565b610450565b61014f610172366004610cc4565b610481565b610124610185366004610e6f565b61049c565b61019d610198366004610c78565b6104fc565b6040519081526020016100f3565b610104610582565b61014f6101c1366004610dd4565b610591565b61014f6101d4366004610cff565b6105a0565b6101046101e7366004610e6f565b6105d8565b6100e76101fa366004610c92565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b90505b919050565b60606000805461028b90611041565b80601f01602080910402602001604051908101604052809291908181526020018280546102b790611041565b80156103045780601f106102d957610100808354040283529160200191610304565b820191906000526020600020905b8154815290600101906020018083116102e757829003601f168201915b5050505050905090565b60006103198261064c565b506000908152600460205260409020546001600160a01b031690565b60006103408261049c565b9050806001600160a01b0316836001600160a01b031614156103b35760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103cf57506103cf81336101fa565b6104415760405162461bcd60e51b815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016103aa565b61044b83836106ae565b505050565b61045a338261071c565b6104765760405162461bcd60e51b81526004016103aa90610f84565b61044b83838361079b565b61044b838383604051806020016040528060008152506105a0565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103aa565b60006001600160a01b0382166105665760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103aa565b506001600160a01b031660009081526003602052604090205490565b60606001805461028b90611041565b61059c338383610937565b5050565b6105aa338361071c565b6105c65760405162461bcd60e51b81526004016103aa90610f84565b6105d284848484610a06565b50505050565b60606105e38261064c565b60006105fa60408051602081019091526000815290565b9050600081511161061a5760405180602001604052806000815250610645565b8061062484610a39565b604051602001610635929190610eb3565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166106ab5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103aa565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e38261049c565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806107288361049c565b9050806001600160a01b0316846001600160a01b0316148061076f57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107935750836001600160a01b03166107888461030e565b6001600160a01b0316145b949350505050565b826001600160a01b03166107ae8261049c565b6001600160a01b0316146108125760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b60648201526084016103aa565b6001600160a01b0382166108745760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103aa565b61087f6000826106ae565b6001600160a01b03831660009081526003602052604081208054600192906108a8908490610ffe565b90915550506001600160a01b03821660009081526003602052604081208054600192906108d6908490610fd2565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a461044b565b816001600160a01b0316836001600160a01b031614156109995760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103aa565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610a1184848461079b565b610a1d84848484610b54565b6105d25760405162461bcd60e51b81526004016103aa90610f32565b606081610a5e57506040805180820190915260018152600360fc1b6020820152610277565b8160005b8115610a885780610a728161107c565b9150610a819050600a83610fea565b9150610a62565b60008167ffffffffffffffff811115610ab157634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610adb576020820181803683370190505b5090505b841561079357610af0600183610ffe565b9150610afd600a86611097565b610b08906030610fd2565b60f81b818381518110610b2b57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350610b4d600a86610fea565b9450610adf565b60006001600160a01b0384163b15610c5657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610b98903390899088908890600401610ee2565b602060405180830381600087803b158015610bb257600080fd5b505af1925050508015610be2575060408051601f3d908101601f19168201909252610bdf91810190610e53565b60015b610c3c573d808015610c10576040519150601f19603f3d011682016040523d82523d6000602084013e610c15565b606091505b508051610c345760405162461bcd60e51b81526004016103aa90610f32565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610793565b506001949350505050565b80356001600160a01b038116811461027757600080fd5b600060208284031215610c89578081fd5b61064582610c61565b60008060408385031215610ca4578081fd5b610cad83610c61565b9150610cbb60208401610c61565b90509250929050565b600080600060608486031215610cd8578081fd5b610ce184610c61565b9250610cef60208501610c61565b9150604084013590509250925092565b60008060008060808587031215610d14578081fd5b610d1d85610c61565b9350610d2b60208601610c61565b925060408501359150606085013567ffffffffffffffff80821115610d4e578283fd5b818701915087601f830112610d61578283fd5b813581811115610d7357610d736110d7565b604051601f8201601f19908116603f01168101908382118183101715610d9b57610d9b6110d7565b816040528281528a6020848701011115610db3578586fd5b82602086016020830137918201602001949094529598949750929550505050565b60008060408385031215610de6578182fd5b610def83610c61565b915060208301358015158114610e03578182fd5b809150509250929050565b60008060408385031215610e20578182fd5b610e2983610c61565b946020939093013593505050565b600060208284031215610e48578081fd5b8135610645816110ed565b600060208284031215610e64578081fd5b8151610645816110ed565b600060208284031215610e80578081fd5b5035919050565b60008151808452610e9f816020860160208601611015565b601f01601f19169290920160200192915050565b60008351610ec5818460208801611015565b835190830190610ed9818360208801611015565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090610f1590830184610e87565b9695505050505050565b6000602082526106456020830184610e87565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252602e908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526d1c881b9bdc88185c1c1c9bdd995960921b606082015260800190565b60008219821115610fe557610fe56110ab565b500190565b600082610ff957610ff96110c1565b500490565b600082821015611010576110106110ab565b500390565b60005b83811015611030578181015183820152602001611018565b838111156105d25750506000910152565b60028104600182168061105557607f821691505b6020821081141561107657634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415611090576110906110ab565b5060010190565b6000826110a6576110a66110c1565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146106ab57600080fdfea264697066735822122080d264bcb981ce24f3416343536f6a62ec96ee348b16f5a4bb0f1f10e7c7a64364736f6c63430008020033",
  "deployedSourceMap": "628:13718:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:300;;;;;;:::i;:::-;;:::i;:::-;;;5162:14:67;;5155:22;5137:41;;5125:2;5110:18;1570:300:6;;;;;;;;2470:98;;;:::i;:::-;;;;;;;:::i;3935:167::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;4460:32:67;;;4442:51;;4430:2;4415:18;3935:167:6;4397:102:67;3467:407:6;;;;;;:::i;:::-;;:::i;:::-;;4612:327;;;;;;:::i;:::-;;:::i;5005:179::-;;;;;;:::i;:::-;;:::i;2190:218::-;;;;;;:::i;:::-;;:::i;1929:204::-;;;;;;:::i;:::-;;:::i;:::-;;;9154:25:67;;;9142:2;9127:18;1929:204:6;9109:76:67;2632:102:6;;;:::i;4169:153::-;;;;;;:::i;:::-;;:::i;5250:315::-;;;;;;:::i;:::-;;:::i;2800:276::-;;;;;;:::i;:::-;;:::i;4388:162::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4508:25:6;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;4388:162;1570:300;1672:4;-1:-1:-1;;;;;;1707:40:6;;-1:-1:-1;;;1707:40:6;;:104;;-1:-1:-1;;;;;;;1763:48:6;;-1:-1:-1;;;1763:48:6;1707:104;:156;;;-1:-1:-1;;;;;;;;;;937:40:14;;;1827:36:6;1688:175;;1570:300;;;;:::o;2470:98::-;2524:13;2556:5;2549:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2470:98;:::o;3935:167::-;4011:7;4030:23;4045:7;4030:14;:23::i;:::-;-1:-1:-1;4071:24:6;;;;:15;:24;;;;;;-1:-1:-1;;;;;4071:24:6;;3935:167::o;3467:407::-;3547:13;3563:23;3578:7;3563:14;:23::i;:::-;3547:39;;3610:5;-1:-1:-1;;;;;3604:11:6;:2;-1:-1:-1;;;;;3604:11:6;;;3596:57;;;;-1:-1:-1;;;3596:57:6;;8393:2:67;3596:57:6;;;8375:21:67;8432:2;8412:18;;;8405:30;8471:34;8451:18;;;8444:62;-1:-1:-1;;;8522:18:67;;;8515:31;8563:19;;3596:57:6;;;;;;;;;719:10:11;-1:-1:-1;;;;;3685:21:6;;;;:62;;-1:-1:-1;3710:37:6;3727:5;719:10:11;3734:12:6;640:96:11;3710:37:6;3664:171;;;;-1:-1:-1;;;3664:171:6;;7609:2:67;3664:171:6;;;7591:21:67;7648:2;7628:18;;;7621:30;7687:34;7667:18;;;7660:62;7758:32;7738:18;;;7731:60;7808:19;;3664:171:6;7581:252:67;3664:171:6;3846:21;3855:2;3859:7;3846:8;:21::i;:::-;3467:407;;;:::o;4612:327::-;4801:41;719:10:11;4834:7:6;4801:18;:41::i;:::-;4793:100;;;;-1:-1:-1;;;4793:100:6;;;;;;;:::i;:::-;4904:28;4914:4;4920:2;4924:7;4904:9;:28::i;5005:179::-;5138:39;5155:4;5161:2;5165:7;5138:39;;;;;;;;;;;;:16;:39::i;2190:218::-;2262:7;2297:16;;;:7;:16;;;;;;-1:-1:-1;;;;;2297:16:6;2331:19;2323:56;;;;-1:-1:-1;;;2323:56:6;;8040:2:67;2323:56:6;;;8022:21:67;8079:2;8059:18;;;8052:30;-1:-1:-1;;;8098:18:67;;;8091:54;8162:18;;2323:56:6;8012:174:67;1929:204:6;2001:7;-1:-1:-1;;;;;2028:19:6;;2020:73;;;;-1:-1:-1;;;2020:73:6;;7199:2:67;2020:73:6;;;7181:21:67;7238:2;7218:18;;;7211:30;7277:34;7257:18;;;7250:62;-1:-1:-1;;;7328:18:67;;;7321:39;7377:19;;2020:73:6;7171:231:67;2020:73:6;-1:-1:-1;;;;;;2110:16:6;;;;;:9;:16;;;;;;;1929:204::o;2632:102::-;2688:13;2720:7;2713:14;;;;;:::i;4169:153::-;4263:52;719:10:11;4296:8:6;4306;4263:18;:52::i;:::-;4169:153;;:::o;5250:315::-;5418:41;719:10:11;5451:7:6;5418:18;:41::i;:::-;5410:100;;;;-1:-1:-1;;;5410:100:6;;;;;;;:::i;:::-;5520:38;5534:4;5540:2;5544:7;5553:4;5520:13;:38::i;:::-;5250:315;;;;:::o;2800:276::-;2873:13;2898:23;2913:7;2898:14;:23::i;:::-;2932:21;2956:10;3394:9;;;;;;;;;-1:-1:-1;3394:9:6;;3318:92;;2956:10;2932:34;;3007:1;2989:7;2983:21;:25;:86;;;;;;;;;;;;;;;;;3035:7;3044:18;:7;:16;:18::i;:::-;3018:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2983:86;2976:93;2800:276;-1:-1:-1;;;2800:276:6:o;11657:133::-;7099:4;7122:16;;;:7;:16;;;;;;-1:-1:-1;;;;;7122:16:6;11730:53;;;;-1:-1:-1;;;11730:53:6;;8040:2:67;11730:53:6;;;8022:21:67;8079:2;8059:18;;;8052:30;-1:-1:-1;;;8098:18:67;;;8091:54;8162:18;;11730:53:6;8012:174:67;11730:53:6;11657:133;:::o;10959:171::-;11033:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;11033:29:6;-1:-1:-1;;;;;11033:29:6;;;;;;;;:24;;11086:23;11033:24;11086:14;:23::i;:::-;-1:-1:-1;;;;;11077:46:6;;;;;;;;;;;10959:171;;:::o;7317:261::-;7410:4;7426:13;7442:23;7457:7;7442:14;:23::i;:::-;7426:39;;7494:5;-1:-1:-1;;;;;7483:16:6;:7;-1:-1:-1;;;;;7483:16:6;;:52;;;-1:-1:-1;;;;;;4508:25:6;;;4485:4;4508:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;7503:32;7483:87;;;;7563:7;-1:-1:-1;;;;;7539:31:6;:20;7551:7;7539:11;:20::i;:::-;-1:-1:-1;;;;;7539:31:6;;7483:87;7475:96;7317:261;-1:-1:-1;;;;7317:261:6:o;10242:605::-;10396:4;-1:-1:-1;;;;;10369:31:6;:23;10384:7;10369:14;:23::i;:::-;-1:-1:-1;;;;;10369:31:6;;10361:81;;;;-1:-1:-1;;;10361:81:6;;6034:2:67;10361:81:6;;;6016:21:67;6073:2;6053:18;;;6046:30;6112:34;6092:18;;;6085:62;-1:-1:-1;;;6163:18:67;;;6156:35;6208:19;;10361:81:6;6006:227:67;10361:81:6;-1:-1:-1;;;;;10460:16:6;;10452:65;;;;-1:-1:-1;;;10452:65:6;;6440:2:67;10452:65:6;;;6422:21:67;6479:2;6459:18;;;6452:30;6518:34;6498:18;;;6491:62;-1:-1:-1;;;6569:18:67;;;6562:34;6613:19;;10452:65:6;6412:226:67;10452:65:6;10629:29;10646:1;10650:7;10629:8;:29::i;:::-;-1:-1:-1;;;;;10669:15:6;;;;;;:9;:15;;;;;:20;;10688:1;;10669:15;:20;;10688:1;;10669:20;:::i;:::-;;;;-1:-1:-1;;;;;;;10699:13:6;;;;;;:9;:13;;;;;:18;;10716:1;;10699:13;:18;;10716:1;;10699:18;:::i;:::-;;;;-1:-1:-1;;10727:16:6;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;10727:21:6;-1:-1:-1;;;;;10727:21:6;;;;;;;;;10764:27;;10727:16;;10764:27;;;;;;;10802:38;3467:407;11266:307;11416:8;-1:-1:-1;;;;;11407:17:6;:5;-1:-1:-1;;;;;11407:17:6;;;11399:55;;;;-1:-1:-1;;;11399:55:6;;6845:2:67;11399:55:6;;;6827:21:67;6884:2;6864:18;;;6857:30;6923:27;6903:18;;;6896:55;6968:18;;11399:55:6;6817:175:67;11399:55:6;-1:-1:-1;;;;;11464:25:6;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;11464:46:6;;;;;;;;;;11525:41;;5137::67;;;11525::6;;5110:18:67;11525:41:6;;;;;;;11266:307;;;:::o;6426:305::-;6576:28;6586:4;6592:2;6596:7;6576:9;:28::i;:::-;6622:47;6645:4;6651:2;6655:7;6664:4;6622:22;:47::i;:::-;6614:110;;;;-1:-1:-1;;;6614:110:6;;;;;;;:::i;392:703:12:-;448:13;665:10;661:51;;-1:-1:-1;691:10:12;;;;;;;;;;;;-1:-1:-1;;;691:10:12;;;;;;661:51;736:5;721:12;775:75;782:9;;775:75;;807:8;;;;:::i;:::-;;-1:-1:-1;829:10:12;;-1:-1:-1;837:2:12;829:10;;:::i;:::-;;;775:75;;;859:19;891:6;881:17;;;;;;-1:-1:-1;;;881:17:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;881:17:12;;859:39;;908:150;915:10;;908:150;;941:11;951:1;941:11;;:::i;:::-;;-1:-1:-1;1009:10:12;1017:2;1009:5;:10;:::i;:::-;996:24;;:2;:24;:::i;:::-;983:39;;966:6;973;966:14;;;;;;-1:-1:-1;;;966:14:12;;;;;;;;;;;;:56;-1:-1:-1;;;;;966:56:12;;;;;;;;-1:-1:-1;1036:11:12;1045:2;1036:11;;:::i;:::-;;;908:150;;12342:831:6;12491:4;-1:-1:-1;;;;;12511:13:6;;1465:19:10;:23;12507:660:6;;12546:71;;-1:-1:-1;;;12546:71:6;;-1:-1:-1;;;;;12546:36:6;;;;;:71;;719:10:11;;12597:4:6;;12603:7;;12612:4;;12546:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12546:71:6;;;;;;;;-1:-1:-1;;12546:71:6;;;;;;;;;;;;:::i;:::-;;;12542:573;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12784:13:6;;12780:321;;12826:60;;-1:-1:-1;;;12826:60:6;;;;;;;:::i;12780:321::-;13053:6;13047:13;13038:6;13034:2;13030:15;13023:38;12542:573;-1:-1:-1;;;;;;12667:51:6;-1:-1:-1;;;12667:51:6;;-1:-1:-1;12660:58:6;;12507:660;-1:-1:-1;13152:4:6;12342:831;;;;;;:::o;14:173:67:-;82:20;;-1:-1:-1;;;;;131:31:67;;121:42;;111:2;;177:1;174;167:12;192:196;;304:2;292:9;283:7;279:23;275:32;272:2;;;325:6;317;310:22;272:2;353:29;372:9;353:29;:::i;393:270::-;;;522:2;510:9;501:7;497:23;493:32;490:2;;;543:6;535;528:22;490:2;571:29;590:9;571:29;:::i;:::-;561:39;;619:38;653:2;642:9;638:18;619:38;:::i;:::-;609:48;;480:183;;;;;:::o;668:338::-;;;;814:2;802:9;793:7;789:23;785:32;782:2;;;835:6;827;820:22;782:2;863:29;882:9;863:29;:::i;:::-;853:39;;911:38;945:2;934:9;930:18;911:38;:::i;:::-;901:48;;996:2;985:9;981:18;968:32;958:42;;772:234;;;;;:::o;1011:1183::-;;;;;1183:3;1171:9;1162:7;1158:23;1154:33;1151:2;;;1205:6;1197;1190:22;1151:2;1233:29;1252:9;1233:29;:::i;:::-;1223:39;;1281:38;1315:2;1304:9;1300:18;1281:38;:::i;:::-;1271:48;;1366:2;1355:9;1351:18;1338:32;1328:42;;1421:2;1410:9;1406:18;1393:32;1444:18;1485:2;1477:6;1474:14;1471:2;;;1506:6;1498;1491:22;1471:2;1549:6;1538:9;1534:22;1524:32;;1594:7;1587:4;1583:2;1579:13;1575:27;1565:2;;1621:6;1613;1606:22;1565:2;1662;1649:16;1684:2;1680;1677:10;1674:2;;;1690:18;;:::i;:::-;1765:2;1759:9;1733:2;1819:13;;-1:-1:-1;;1815:22:67;;;1839:2;1811:31;1807:40;1795:53;;;1863:18;;;1883:22;;;1860:46;1857:2;;;1909:18;;:::i;:::-;1949:10;1945:2;1938:22;1984:2;1976:6;1969:18;2024:7;2019:2;2014;2010;2006:11;2002:20;1999:33;1996:2;;;2050:6;2042;2035:22;1996:2;2111;2106;2102;2098:11;2093:2;2085:6;2081:15;2068:46;2134:15;;;2151:2;2130:24;2123:40;;;;1141:1053;;;;-1:-1:-1;1141:1053:67;;-1:-1:-1;;;;1141:1053:67:o;2199:367::-;;;2325:2;2313:9;2304:7;2300:23;2296:32;2293:2;;;2346:6;2338;2331:22;2293:2;2374:29;2393:9;2374:29;:::i;:::-;2364:39;;2453:2;2442:9;2438:18;2425:32;2500:5;2493:13;2486:21;2479:5;2476:32;2466:2;;2527:6;2519;2512:22;2466:2;2555:5;2545:15;;;2283:283;;;;;:::o;2571:264::-;;;2700:2;2688:9;2679:7;2675:23;2671:32;2668:2;;;2721:6;2713;2706:22;2668:2;2749:29;2768:9;2749:29;:::i;:::-;2739:39;2825:2;2810:18;;;;2797:32;;-1:-1:-1;;;2658:177:67:o;2840:255::-;;2951:2;2939:9;2930:7;2926:23;2922:32;2919:2;;;2972:6;2964;2957:22;2919:2;3016:9;3003:23;3035:30;3059:5;3035:30;:::i;3100:259::-;;3222:2;3210:9;3201:7;3197:23;3193:32;3190:2;;;3243:6;3235;3228:22;3190:2;3280:9;3274:16;3299:30;3323:5;3299:30;:::i;3364:190::-;;3476:2;3464:9;3455:7;3451:23;3447:32;3444:2;;;3497:6;3489;3482:22;3444:2;-1:-1:-1;3525:23:67;;3434:120;-1:-1:-1;3434:120:67:o;3559:257::-;;3638:5;3632:12;3665:6;3660:3;3653:19;3681:63;3737:6;3730:4;3725:3;3721:14;3714:4;3707:5;3703:16;3681:63;:::i;:::-;3798:2;3777:15;-1:-1:-1;;3773:29:67;3764:39;;;;3805:4;3760:50;;3608:208;-1:-1:-1;;3608:208:67:o;3821:470::-;;4038:6;4032:13;4054:53;4100:6;4095:3;4088:4;4080:6;4076:17;4054:53;:::i;:::-;4170:13;;4129:16;;;;4192:57;4170:13;4129:16;4226:4;4214:17;;4192:57;:::i;:::-;4265:20;;4008:283;-1:-1:-1;;;;4008:283:67:o;4504:488::-;-1:-1:-1;;;;;4773:15:67;;;4755:34;;4825:15;;4820:2;4805:18;;4798:43;4872:2;4857:18;;4850:34;;;4920:3;4915:2;4900:18;;4893:31;;;4504:488;;4941:45;;4966:19;;4958:6;4941:45;:::i;:::-;4933:53;4707:285;-1:-1:-1;;;;;;4707:285:67:o;5189:219::-;;5338:2;5327:9;5320:21;5358:44;5398:2;5387:9;5383:18;5375:6;5358:44;:::i;5413:414::-;5615:2;5597:21;;;5654:2;5634:18;;;5627:30;5693:34;5688:2;5673:18;;5666:62;-1:-1:-1;;;5759:2:67;5744:18;;5737:48;5817:3;5802:19;;5587:240::o;8593:410::-;8795:2;8777:21;;;8834:2;8814:18;;;8807:30;8873:34;8868:2;8853:18;;8846:62;-1:-1:-1;;;8939:2:67;8924:18;;8917:44;8993:3;8978:19;;8767:236::o;9190:128::-;;9261:1;9257:6;9254:1;9251:13;9248:2;;;9267:18;;:::i;:::-;-1:-1:-1;9303:9:67;;9238:80::o;9323:120::-;;9389:1;9379:2;;9394:18;;:::i;:::-;-1:-1:-1;9428:9:67;;9369:74::o;9448:125::-;;9516:1;9513;9510:8;9507:2;;;9521:18;;:::i;:::-;-1:-1:-1;9558:9:67;;9497:76::o;9578:258::-;9650:1;9660:113;9674:6;9671:1;9668:13;9660:113;;;9750:11;;;9744:18;9731:11;;;9724:39;9696:2;9689:10;9660:113;;;9791:6;9788:1;9785:13;9782:2;;;-1:-1:-1;;9826:1:67;9808:16;;9801:27;9631:205::o;9841:380::-;9926:1;9916:12;;9973:1;9963:12;;;9984:2;;10038:4;10030:6;10026:17;10016:27;;9984:2;10091;10083:6;10080:14;10060:18;10057:38;10054:2;;;10137:10;10132:3;10128:20;10125:1;10118:31;10172:4;10169:1;10162:15;10200:4;10197:1;10190:15;10054:2;;9896:325;;;:::o;10226:135::-;;-1:-1:-1;;10286:17:67;;10283:2;;;10306:18;;:::i;:::-;-1:-1:-1;10353:1:67;10342:13;;10273:88::o;10366:112::-;;10424:1;10414:2;;10429:18;;:::i;:::-;-1:-1:-1;10463:9:67;;10404:74::o;10483:127::-;10544:10;10539:3;10535:20;10532:1;10525:31;10575:4;10572:1;10565:15;10599:4;10596:1;10589:15;10615:127;10676:10;10671:3;10667:20;10664:1;10657:31;10707:4;10704:1;10697:15;10731:4;10728:1;10721:15;10747:127;10808:10;10803:3;10799:20;10796:1;10789:31;10839:4;10836:1;10829:15;10863:4;10860:1;10853:15;10879:131;-1:-1:-1;;;;;;10953:32:67;;10943:43;;10933:2;;11000:1;10997;10990:12",
  "language": "Solidity",
  "natspec": {
    "details": "Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.",
    "kind": "dev",
    "methods": {
      "approve(address,uint256)": {
        "details": "See {IERC721-approve}."
      },
      "balanceOf(address)": {
        "details": "See {IERC721-balanceOf}."
      },
      "constructor": {
        "details": "Initializes the contract by setting a `name` and a `symbol` to the token collection."
      },
      "getApproved(uint256)": {
        "details": "See {IERC721-getApproved}."
      },
      "isApprovedForAll(address,address)": {
        "details": "See {IERC721-isApprovedForAll}."
      },
      "name()": {
        "details": "See {IERC721Metadata-name}."
      },
      "ownerOf(uint256)": {
        "details": "See {IERC721-ownerOf}."
      },
      "safeTransferFrom(address,address,uint256)": {
        "details": "See {IERC721-safeTransferFrom}."
      },
      "safeTransferFrom(address,address,uint256,bytes)": {
        "details": "See {IERC721-safeTransferFrom}."
      },
      "setApprovalForAll(address,bool)": {
        "details": "See {IERC721-setApprovalForAll}."
      },
      "supportsInterface(bytes4)": {
        "details": "See {IERC165-supportsInterface}."
      },
      "symbol()": {
        "details": "See {IERC721Metadata-symbol}."
      },
      "tokenURI(uint256)": {
        "details": "See {IERC721Metadata-tokenURI}."
      },
      "transferFrom(address,address,uint256)": {
        "details": "See {IERC721-transferFrom}."
      }
    },
    "version": 1
  },
  "offset": [
    628,
    14346
  ],
  "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6352211E GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xA22CB465 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1B3 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x1C6 JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x1D9 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x1EC JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x6352211E EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x18A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x1AB JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xFC JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x111 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x13C JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x164 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE7 PUSH2 0xE2 CALLDATASIZE PUSH1 0x4 PUSH2 0xE37 JUMP JUMPDEST PUSH2 0x228 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x104 PUSH2 0x27C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF3 SWAP2 SWAP1 PUSH2 0xF1F JUMP JUMPDEST PUSH2 0x124 PUSH2 0x11F CALLDATASIZE PUSH1 0x4 PUSH2 0xE6F JUMP JUMPDEST PUSH2 0x30E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF3 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x14A CALLDATASIZE PUSH1 0x4 PUSH2 0xE0E JUMP JUMPDEST PUSH2 0x335 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x14F PUSH2 0x15F CALLDATASIZE PUSH1 0x4 PUSH2 0xCC4 JUMP JUMPDEST PUSH2 0x450 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x172 CALLDATASIZE PUSH1 0x4 PUSH2 0xCC4 JUMP JUMPDEST PUSH2 0x481 JUMP JUMPDEST PUSH2 0x124 PUSH2 0x185 CALLDATASIZE PUSH1 0x4 PUSH2 0xE6F JUMP JUMPDEST PUSH2 0x49C JUMP JUMPDEST PUSH2 0x19D PUSH2 0x198 CALLDATASIZE PUSH1 0x4 PUSH2 0xC78 JUMP JUMPDEST PUSH2 0x4FC JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xF3 JUMP JUMPDEST PUSH2 0x104 PUSH2 0x582 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x1C1 CALLDATASIZE PUSH1 0x4 PUSH2 0xDD4 JUMP JUMPDEST PUSH2 0x591 JUMP JUMPDEST PUSH2 0x14F PUSH2 0x1D4 CALLDATASIZE PUSH1 0x4 PUSH2 0xCFF JUMP JUMPDEST PUSH2 0x5A0 JUMP JUMPDEST PUSH2 0x104 PUSH2 0x1E7 CALLDATASIZE PUSH1 0x4 PUSH2 0xE6F JUMP JUMPDEST PUSH2 0x5D8 JUMP JUMPDEST PUSH2 0xE7 PUSH2 0x1FA CALLDATASIZE PUSH1 0x4 PUSH2 0xC92 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x259 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x274 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 SLOAD PUSH2 0x28B SWAP1 PUSH2 0x1041 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 0x2B7 SWAP1 PUSH2 0x1041 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x304 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2D9 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x304 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 0x2E7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x319 DUP3 PUSH2 0x64C 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 0x340 DUP3 PUSH2 0x49C JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x3B3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x21 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x39 PUSH1 0xF9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ DUP1 PUSH2 0x3CF JUMPI POP PUSH2 0x3CF DUP2 CALLER PUSH2 0x1FA JUMP JUMPDEST PUSH2 0x441 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x3E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3AA JUMP JUMPDEST PUSH2 0x44B DUP4 DUP4 PUSH2 0x6AE JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x45A CALLER DUP3 PUSH2 0x71C JUMP JUMPDEST PUSH2 0x476 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3AA SWAP1 PUSH2 0xF84 JUMP JUMPDEST PUSH2 0x44B DUP4 DUP4 DUP4 PUSH2 0x79B JUMP JUMPDEST PUSH2 0x44B DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x5A0 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP1 PUSH2 0x274 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3AA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x566 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A2061646472657373207A65726F206973206E6F742061207661 PUSH1 0x44 DUP3 ADD MSTORE PUSH9 0x3634B21037BBB732B9 PUSH1 0xB9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3AA 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 0x28B SWAP1 PUSH2 0x1041 JUMP JUMPDEST PUSH2 0x59C CALLER DUP4 DUP4 PUSH2 0x937 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH2 0x5AA CALLER DUP4 PUSH2 0x71C JUMP JUMPDEST PUSH2 0x5C6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3AA SWAP1 PUSH2 0xF84 JUMP JUMPDEST PUSH2 0x5D2 DUP5 DUP5 DUP5 DUP5 PUSH2 0xA06 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5E3 DUP3 PUSH2 0x64C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5FA 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 0x61A JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x645 JUMP JUMPDEST DUP1 PUSH2 0x624 DUP5 PUSH2 0xA39 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x635 SWAP3 SWAP2 SWAP1 PUSH2 0xEB3 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 0x6AB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x18 PUSH1 0x24 DUP3 ADD MSTORE PUSH24 0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251 PUSH1 0x42 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x3AA JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0x6E3 DUP3 PUSH2 0x49C 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 0x728 DUP4 PUSH2 0x49C 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 0x76F 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 0x793 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x788 DUP5 PUSH2 0x30E 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 0x7AE DUP3 PUSH2 0x49C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x812 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x25 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E736665722066726F6D20696E636F727265637420 PUSH1 0x44 DUP3 ADD MSTORE PUSH5 0x37BBB732B9 PUSH1 0xD9 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x874 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F20746865207A65726F20616464 PUSH1 0x44 DUP3 ADD MSTORE PUSH4 0x72657373 PUSH1 0xE0 SHL PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x3AA JUMP JUMPDEST PUSH2 0x87F PUSH1 0x0 DUP3 PUSH2 0x6AE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x8A8 SWAP1 DUP5 SWAP1 PUSH2 0xFFE JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0x8D6 SWAP1 DUP5 SWAP1 PUSH2 0xFD2 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP5 SWAP4 SWAP2 DUP8 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 PUSH2 0x44B JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x999 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 0x3AA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH2 0xA11 DUP5 DUP5 DUP5 PUSH2 0x79B JUMP JUMPDEST PUSH2 0xA1D DUP5 DUP5 DUP5 DUP5 PUSH2 0xB54 JUMP JUMPDEST PUSH2 0x5D2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3AA SWAP1 PUSH2 0xF32 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0xA5E JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x277 JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0xA88 JUMPI DUP1 PUSH2 0xA72 DUP2 PUSH2 0x107C JUMP JUMPDEST SWAP2 POP PUSH2 0xA81 SWAP1 POP PUSH1 0xA DUP4 PUSH2 0xFEA JUMP JUMPDEST SWAP2 POP PUSH2 0xA62 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xAB1 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT 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 0xADB JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP JUMPDEST DUP5 ISZERO PUSH2 0x793 JUMPI PUSH2 0xAF0 PUSH1 0x1 DUP4 PUSH2 0xFFE JUMP JUMPDEST SWAP2 POP PUSH2 0xAFD PUSH1 0xA DUP7 PUSH2 0x1097 JUMP JUMPDEST PUSH2 0xB08 SWAP1 PUSH1 0x30 PUSH2 0xFD2 JUMP JUMPDEST PUSH1 0xF8 SHL DUP2 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xB2B JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH2 0xB4D PUSH1 0xA DUP7 PUSH2 0xFEA JUMP JUMPDEST SWAP5 POP PUSH2 0xADF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO PUSH2 0xC56 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0xB98 SWAP1 CALLER SWAP1 DUP10 SWAP1 DUP9 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0xEE2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0xBE2 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0xBDF SWAP2 DUP2 ADD SWAP1 PUSH2 0xE53 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0xC3C JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0xC10 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 0xC15 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH2 0xC34 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3AA SWAP1 PUSH2 0xF32 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP1 POP PUSH2 0x793 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC89 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x645 DUP3 PUSH2 0xC61 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCA4 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xCAD DUP4 PUSH2 0xC61 JUMP JUMPDEST SWAP2 POP PUSH2 0xCBB PUSH1 0x20 DUP5 ADD PUSH2 0xC61 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xCD8 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xCE1 DUP5 PUSH2 0xC61 JUMP JUMPDEST SWAP3 POP PUSH2 0xCEF PUSH1 0x20 DUP6 ADD PUSH2 0xC61 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xD14 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xD1D DUP6 PUSH2 0xC61 JUMP JUMPDEST SWAP4 POP PUSH2 0xD2B PUSH1 0x20 DUP7 ADD PUSH2 0xC61 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xD4E JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP8 ADD SWAP2 POP DUP8 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xD61 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xD73 JUMPI PUSH2 0xD73 PUSH2 0x10D7 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 0xD9B JUMPI PUSH2 0xD9B PUSH2 0x10D7 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP11 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xDB3 JUMPI DUP6 DUP7 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY SWAP2 DUP3 ADD PUSH1 0x20 ADD SWAP5 SWAP1 SWAP5 MSTORE SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP3 SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xDE6 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xDEF DUP4 PUSH2 0xC61 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xE03 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xE20 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xE29 DUP4 PUSH2 0xC61 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE48 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x645 DUP2 PUSH2 0x10ED JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE64 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x645 DUP2 PUSH2 0x10ED JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xE80 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xE9F DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1015 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0xEC5 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x1015 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0xED9 DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x1015 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0xF15 SWAP1 DUP4 ADD DUP5 PUSH2 0xE87 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x645 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xE87 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265 PUSH1 0x40 DUP3 ADD MSTORE PUSH18 0x31B2B4BB32B91034B6B83632B6B2B73A32B9 PUSH1 0x71 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65 PUSH1 0x40 DUP3 ADD MSTORE PUSH14 0x1C881B9BDC88185C1C1C9BDD9959 PUSH1 0x92 SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0xFE5 JUMPI PUSH2 0xFE5 PUSH2 0x10AB JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0xFF9 JUMPI PUSH2 0xFF9 PUSH2 0x10C1 JUMP JUMPDEST POP DIV SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x1010 JUMPI PUSH2 0x1010 PUSH2 0x10AB JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1030 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1018 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x5D2 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x2 DUP2 DIV PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x1055 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 EQ ISZERO PUSH2 0x1076 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 PUSH1 0x0 NOT DUP3 EQ ISZERO PUSH2 0x1090 JUMPI PUSH2 0x1090 PUSH2 0x10AB JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x10A6 JUMPI PUSH2 0x10A6 PUSH2 0x10C1 JUMP JUMPDEST POP MOD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x6AB JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP1 0xD2 PUSH5 0xBCB981CE24 RETURN COINBASE PUSH4 0x43536F6A PUSH3 0xEC96EE CALLVALUE DUP12 AND CREATE2 LOG4 0xBB 0xF 0x1F LT 0xE7 0xC7 0xA6 NUMBER PUSH5 0x736F6C6343 STOP ADDMOD MUL STOP CALLER ",
  "pcMap": {
    "0": {
      "offset": [
        628,
        14346
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x80"
    },
    "2": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "4": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "5": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "CALLVALUE",
      "path": "6"
    },
    "6": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "DUP1",
      "path": "6"
    },
    "7": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "ISZERO",
      "path": "6"
    },
    "8": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x10"
    },
    "11": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "12": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "14": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "DUP1",
      "path": "6"
    },
    "15": {
      "dev": "Cannot send ether to nonpayable function",
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "REVERT",
      "path": "6"
    },
    "16": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "17": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "POP",
      "path": "6"
    },
    "18": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "20": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "CALLDATASIZE",
      "path": "6"
    },
    "21": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "LT",
      "path": "6"
    },
    "22": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xCF"
    },
    "25": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "26": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "28": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "CALLDATALOAD",
      "path": "6"
    },
    "29": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0xE0"
    },
    "31": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "SHR",
      "path": "6"
    },
    "32": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "DUP1",
      "path": "6"
    },
    "33": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH4",
      "path": "6",
      "value": "0x6352211E"
    },
    "38": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "GT",
      "path": "6"
    },
    "39": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x8C"
    },
    "42": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "43": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "DUP1",
      "path": "6"
    },
    "44": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH4",
      "path": "6",
      "value": "0xA22CB465"
    },
    "49": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "GT",
      "path": "6"
    },
    "50": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x66"
    },
    "53": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "54": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "DUP1",
      "path": "6"
    },
    "55": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH4",
      "path": "6",
      "value": "0xA22CB465"
    },
    "60": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "EQ",
      "path": "6"
    },
    "61": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x1B3"
    },
    "64": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "65": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "DUP1",
      "path": "6"
    },
    "66": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH4",
      "path": "6",
      "value": "0xB88D4FDE"
    },
    "71": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "EQ",
      "path": "6"
    },
    "72": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x1C6"
    },
    "75": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "76": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "DUP1",
      "path": "6"
    },
    "77": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH4",
      "path": "6",
      "value": "0xC87B56DD"
    },
    "82": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "EQ",
      "path": "6"
    },
    "83": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x1D9"
    },
    "86": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "87": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "DUP1",
      "path": "6"
    },
    "88": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH4",
      "path": "6",
      "value": "0xE985E9C5"
    },
    "93": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "EQ",
      "path": "6"
    },
    "94": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x1EC"
    },
    "97": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "98": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xCF"
    },
    "101": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "JUMP",
      "path": "6"
    },
    "102": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "103": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "DUP1",
      "path": "6"
    },
    "104": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH4",
      "path": "6",
      "value": "0x6352211E"
    },
    "109": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "EQ",
      "path": "6"
    },
    "110": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x177"
    },
    "113": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "114": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "DUP1",
      "path": "6"
    },
    "115": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH4",
      "path": "6",
      "value": "0x70A08231"
    },
    "120": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "EQ",
      "path": "6"
    },
    "121": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x18A"
    },
    "124": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "125": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "DUP1",
      "path": "6"
    },
    "126": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH4",
      "path": "6",
      "value": "0x95D89B41"
    },
    "131": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "EQ",
      "path": "6"
    },
    "132": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x1AB"
    },
    "135": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "136": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xCF"
    },
    "139": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "JUMP",
      "path": "6"
    },
    "140": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "141": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "DUP1",
      "path": "6"
    },
    "142": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH4",
      "path": "6",
      "value": "0x1FFC9A7"
    },
    "147": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "EQ",
      "path": "6"
    },
    "148": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xD4"
    },
    "151": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "152": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "DUP1",
      "path": "6"
    },
    "153": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH4",
      "path": "6",
      "value": "0x6FDDE03"
    },
    "158": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "EQ",
      "path": "6"
    },
    "159": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xFC"
    },
    "162": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "163": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "DUP1",
      "path": "6"
    },
    "164": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH4",
      "path": "6",
      "value": "0x81812FC"
    },
    "169": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "EQ",
      "path": "6"
    },
    "170": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x111"
    },
    "173": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "174": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "DUP1",
      "path": "6"
    },
    "175": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH4",
      "path": "6",
      "value": "0x95EA7B3"
    },
    "180": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "EQ",
      "path": "6"
    },
    "181": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x13C"
    },
    "184": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "185": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "DUP1",
      "path": "6"
    },
    "186": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH4",
      "path": "6",
      "value": "0x23B872DD"
    },
    "191": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "EQ",
      "path": "6"
    },
    "192": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x151"
    },
    "195": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "196": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "DUP1",
      "path": "6"
    },
    "197": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH4",
      "path": "6",
      "value": "0x42842E0E"
    },
    "202": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "EQ",
      "path": "6"
    },
    "203": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x164"
    },
    "206": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "207": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "208": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "210": {
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "DUP1",
      "path": "6"
    },
    "211": {
      "first_revert": true,
      "fn": null,
      "offset": [
        628,
        14346
      ],
      "op": "REVERT",
      "path": "6"
    },
    "212": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "213": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xE7"
    },
    "216": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xE2"
    },
    "219": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "CALLDATASIZE",
      "path": "6"
    },
    "220": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "222": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xE37"
    },
    "225": {
      "fn": "ERC721.supportsInterface",
      "jump": "i",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMP",
      "path": "6"
    },
    "226": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "227": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x228"
    },
    "230": {
      "fn": "ERC721.supportsInterface",
      "jump": "i",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMP",
      "path": "6"
    },
    "231": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "232": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "234": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "235": {
      "op": "SWAP1"
    },
    "236": {
      "op": "ISZERO"
    },
    "237": {
      "op": "ISZERO"
    },
    "238": {
      "op": "DUP2"
    },
    "239": {
      "op": "MSTORE"
    },
    "240": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "242": {
      "op": "ADD"
    },
    "243": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "244": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "246": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "247": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "DUP1",
      "path": "6"
    },
    "248": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "249": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "SUB",
      "path": "6"
    },
    "250": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "251": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "RETURN",
      "path": "6"
    },
    "252": {
      "fn": "ERC721.name",
      "offset": [
        2470,
        2568
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "253": {
      "fn": "ERC721.name",
      "offset": [
        2470,
        2568
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x104"
    },
    "256": {
      "fn": "ERC721.name",
      "offset": [
        2470,
        2568
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x27C"
    },
    "259": {
      "fn": "ERC721.name",
      "jump": "i",
      "offset": [
        2470,
        2568
      ],
      "op": "JUMP",
      "path": "6"
    },
    "260": {
      "fn": "ERC721.name",
      "offset": [
        2470,
        2568
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "261": {
      "fn": "ERC721.name",
      "offset": [
        2470,
        2568
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "263": {
      "fn": "ERC721.name",
      "offset": [
        2470,
        2568
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "264": {
      "fn": "ERC721.name",
      "offset": [
        2470,
        2568
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xF3"
    },
    "267": {
      "fn": "ERC721.name",
      "offset": [
        2470,
        2568
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "268": {
      "fn": "ERC721.name",
      "offset": [
        2470,
        2568
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "269": {
      "fn": "ERC721.name",
      "offset": [
        2470,
        2568
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xF1F"
    },
    "272": {
      "fn": "ERC721.name",
      "jump": "i",
      "offset": [
        2470,
        2568
      ],
      "op": "JUMP",
      "path": "6"
    },
    "273": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "274": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x124"
    },
    "277": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x11F"
    },
    "280": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "CALLDATASIZE",
      "path": "6"
    },
    "281": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "283": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xE6F"
    },
    "286": {
      "fn": "ERC721.getApproved",
      "jump": "i",
      "offset": [
        3935,
        4102
      ],
      "op": "JUMP",
      "path": "6"
    },
    "287": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "288": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x30E"
    },
    "291": {
      "fn": "ERC721.getApproved",
      "jump": "i",
      "offset": [
        3935,
        4102
      ],
      "op": "JUMP",
      "path": "6"
    },
    "292": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "293": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "295": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "296": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "298": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "300": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "302": {
      "op": "SHL"
    },
    "303": {
      "op": "SUB"
    },
    "304": {
      "op": "SWAP1"
    },
    "305": {
      "op": "SWAP2"
    },
    "306": {
      "op": "AND"
    },
    "307": {
      "op": "DUP2"
    },
    "308": {
      "op": "MSTORE"
    },
    "309": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "311": {
      "op": "ADD"
    },
    "312": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xF3"
    },
    "315": {
      "op": "JUMP"
    },
    "316": {
      "fn": "ERC721.approve",
      "offset": [
        3467,
        3874
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "317": {
      "fn": "ERC721.approve",
      "offset": [
        3467,
        3874
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x14F"
    },
    "320": {
      "fn": "ERC721.approve",
      "offset": [
        3467,
        3874
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x14A"
    },
    "323": {
      "fn": "ERC721.approve",
      "offset": [
        3467,
        3874
      ],
      "op": "CALLDATASIZE",
      "path": "6"
    },
    "324": {
      "fn": "ERC721.approve",
      "offset": [
        3467,
        3874
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "326": {
      "fn": "ERC721.approve",
      "offset": [
        3467,
        3874
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xE0E"
    },
    "329": {
      "fn": "ERC721.approve",
      "jump": "i",
      "offset": [
        3467,
        3874
      ],
      "op": "JUMP",
      "path": "6"
    },
    "330": {
      "fn": "ERC721.approve",
      "offset": [
        3467,
        3874
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "331": {
      "fn": "ERC721.approve",
      "offset": [
        3467,
        3874
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x335"
    },
    "334": {
      "fn": "ERC721.approve",
      "jump": "i",
      "offset": [
        3467,
        3874
      ],
      "op": "JUMP",
      "path": "6"
    },
    "335": {
      "fn": "ERC721.approve",
      "offset": [
        3467,
        3874
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "336": {
      "fn": "ERC721.approve",
      "offset": [
        3467,
        3874
      ],
      "op": "STOP",
      "path": "6"
    },
    "337": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4612,
        4939
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "338": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4612,
        4939
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x14F"
    },
    "341": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4612,
        4939
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x15F"
    },
    "344": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4612,
        4939
      ],
      "op": "CALLDATASIZE",
      "path": "6"
    },
    "345": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4612,
        4939
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "347": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4612,
        4939
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xCC4"
    },
    "350": {
      "fn": "ERC721.transferFrom",
      "jump": "i",
      "offset": [
        4612,
        4939
      ],
      "op": "JUMP",
      "path": "6"
    },
    "351": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4612,
        4939
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "352": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4612,
        4939
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x450"
    },
    "355": {
      "fn": "ERC721.transferFrom",
      "jump": "i",
      "offset": [
        4612,
        4939
      ],
      "op": "JUMP",
      "path": "6"
    },
    "356": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5005,
        5184
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "357": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5005,
        5184
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x14F"
    },
    "360": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5005,
        5184
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x172"
    },
    "363": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5005,
        5184
      ],
      "op": "CALLDATASIZE",
      "path": "6"
    },
    "364": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5005,
        5184
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "366": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5005,
        5184
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xCC4"
    },
    "369": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "i",
      "offset": [
        5005,
        5184
      ],
      "op": "JUMP",
      "path": "6"
    },
    "370": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5005,
        5184
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "371": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5005,
        5184
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x481"
    },
    "374": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "i",
      "offset": [
        5005,
        5184
      ],
      "op": "JUMP",
      "path": "6"
    },
    "375": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2190,
        2408
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "376": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2190,
        2408
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x124"
    },
    "379": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2190,
        2408
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x185"
    },
    "382": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2190,
        2408
      ],
      "op": "CALLDATASIZE",
      "path": "6"
    },
    "383": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2190,
        2408
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "385": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2190,
        2408
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xE6F"
    },
    "388": {
      "fn": "ERC721.ownerOf",
      "jump": "i",
      "offset": [
        2190,
        2408
      ],
      "op": "JUMP",
      "path": "6"
    },
    "389": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2190,
        2408
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "390": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2190,
        2408
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x49C"
    },
    "393": {
      "fn": "ERC721.ownerOf",
      "jump": "i",
      "offset": [
        2190,
        2408
      ],
      "op": "JUMP",
      "path": "6"
    },
    "394": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "395": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x19D"
    },
    "398": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x198"
    },
    "401": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "CALLDATASIZE",
      "path": "6"
    },
    "402": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "404": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xC78"
    },
    "407": {
      "fn": "ERC721.balanceOf",
      "jump": "i",
      "offset": [
        1929,
        2133
      ],
      "op": "JUMP",
      "path": "6"
    },
    "408": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "409": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x4FC"
    },
    "412": {
      "fn": "ERC721.balanceOf",
      "jump": "i",
      "offset": [
        1929,
        2133
      ],
      "op": "JUMP",
      "path": "6"
    },
    "413": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "414": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "416": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "417": {
      "op": "SWAP1"
    },
    "418": {
      "op": "DUP2"
    },
    "419": {
      "op": "MSTORE"
    },
    "420": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "422": {
      "op": "ADD"
    },
    "423": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xF3"
    },
    "426": {
      "op": "JUMP"
    },
    "427": {
      "fn": "ERC721.symbol",
      "offset": [
        2632,
        2734
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "428": {
      "fn": "ERC721.symbol",
      "offset": [
        2632,
        2734
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x104"
    },
    "431": {
      "fn": "ERC721.symbol",
      "offset": [
        2632,
        2734
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x582"
    },
    "434": {
      "fn": "ERC721.symbol",
      "jump": "i",
      "offset": [
        2632,
        2734
      ],
      "op": "JUMP",
      "path": "6"
    },
    "435": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4169,
        4322
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "436": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4169,
        4322
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x14F"
    },
    "439": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4169,
        4322
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x1C1"
    },
    "442": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4169,
        4322
      ],
      "op": "CALLDATASIZE",
      "path": "6"
    },
    "443": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4169,
        4322
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "445": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4169,
        4322
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xDD4"
    },
    "448": {
      "fn": "ERC721.setApprovalForAll",
      "jump": "i",
      "offset": [
        4169,
        4322
      ],
      "op": "JUMP",
      "path": "6"
    },
    "449": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4169,
        4322
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "450": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4169,
        4322
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x591"
    },
    "453": {
      "fn": "ERC721.setApprovalForAll",
      "jump": "i",
      "offset": [
        4169,
        4322
      ],
      "op": "JUMP",
      "path": "6"
    },
    "454": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5250,
        5565
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "455": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5250,
        5565
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x14F"
    },
    "458": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5250,
        5565
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x1D4"
    },
    "461": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5250,
        5565
      ],
      "op": "CALLDATASIZE",
      "path": "6"
    },
    "462": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5250,
        5565
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "464": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5250,
        5565
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xCFF"
    },
    "467": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "i",
      "offset": [
        5250,
        5565
      ],
      "op": "JUMP",
      "path": "6"
    },
    "468": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5250,
        5565
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "469": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5250,
        5565
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x5A0"
    },
    "472": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "i",
      "offset": [
        5250,
        5565
      ],
      "op": "JUMP",
      "path": "6"
    },
    "473": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2800,
        3076
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "474": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2800,
        3076
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x104"
    },
    "477": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2800,
        3076
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x1E7"
    },
    "480": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2800,
        3076
      ],
      "op": "CALLDATASIZE",
      "path": "6"
    },
    "481": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2800,
        3076
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "483": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2800,
        3076
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xE6F"
    },
    "486": {
      "fn": "ERC721.tokenURI",
      "jump": "i",
      "offset": [
        2800,
        3076
      ],
      "op": "JUMP",
      "path": "6"
    },
    "487": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2800,
        3076
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "488": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2800,
        3076
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x5D8"
    },
    "491": {
      "fn": "ERC721.tokenURI",
      "jump": "i",
      "offset": [
        2800,
        3076
      ],
      "op": "JUMP",
      "path": "6"
    },
    "492": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4388,
        4550
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "493": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4388,
        4550
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xE7"
    },
    "496": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4388,
        4550
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x1FA"
    },
    "499": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4388,
        4550
      ],
      "op": "CALLDATASIZE",
      "path": "6"
    },
    "500": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4388,
        4550
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "502": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4388,
        4550
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xC92"
    },
    "505": {
      "fn": "ERC721.isApprovedForAll",
      "jump": "i",
      "offset": [
        4388,
        4550
      ],
      "op": "JUMP",
      "path": "6"
    },
    "506": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4388,
        4550
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "507": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "509": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "511": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "513": {
      "op": "SHL"
    },
    "514": {
      "op": "SUB"
    },
    "515": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "SWAP2",
      "path": "6",
      "statement": 0
    },
    "516": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "DUP3",
      "path": "6"
    },
    "517": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "AND",
      "path": "6"
    },
    "518": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4485,
        4489
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "520": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "521": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "DUP2",
      "path": "6"
    },
    "522": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "523": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4526
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x5"
    },
    "525": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "527": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "528": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "DUP2",
      "path": "6"
    },
    "529": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "530": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "532": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "DUP1",
      "path": "6"
    },
    "533": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "DUP4",
      "path": "6"
    },
    "534": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "KECCAK256",
      "path": "6"
    },
    "535": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "SWAP4",
      "path": "6"
    },
    "536": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "537": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "SWAP5",
      "path": "6"
    },
    "538": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "AND",
      "path": "6"
    },
    "539": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "DUP3",
      "path": "6"
    },
    "540": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "541": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "542": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "543": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "544": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "545": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "KECCAK256",
      "path": "6"
    },
    "546": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "SLOAD",
      "path": "6"
    },
    "547": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0xFF"
    },
    "549": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "AND",
      "path": "6"
    },
    "550": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "551": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4388,
        4550
      ],
      "op": "JUMP",
      "path": "6"
    },
    "552": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "553": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1672,
        1676
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "555": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "557": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "559": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "561": {
      "op": "SHL"
    },
    "562": {
      "op": "SUB"
    },
    "563": {
      "op": "NOT"
    },
    "564": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1747
      ],
      "op": "DUP3",
      "path": "6",
      "statement": 1
    },
    "565": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1747
      ],
      "op": "AND",
      "path": "6"
    },
    "566": {
      "op": "PUSH4",
      "value": "0x80AC58CD"
    },
    "571": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "573": {
      "op": "SHL"
    },
    "574": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1747
      ],
      "op": "EQ",
      "path": "6"
    },
    "575": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1747
      ],
      "op": "DUP1",
      "path": "6"
    },
    "576": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1811
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x259"
    },
    "579": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1811
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "580": {
      "op": "POP"
    },
    "581": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "583": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "585": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "587": {
      "op": "SHL"
    },
    "588": {
      "op": "SUB"
    },
    "589": {
      "op": "NOT"
    },
    "590": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1763,
        1811
      ],
      "op": "DUP3",
      "path": "6"
    },
    "591": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1763,
        1811
      ],
      "op": "AND",
      "path": "6"
    },
    "592": {
      "op": "PUSH4",
      "value": "0x5B5E139F"
    },
    "597": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "599": {
      "op": "SHL"
    },
    "600": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1763,
        1811
      ],
      "op": "EQ",
      "path": "6"
    },
    "601": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1811
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "602": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1863
      ],
      "op": "DUP1",
      "path": "6"
    },
    "603": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1863
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x274"
    },
    "606": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1707,
        1863
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "607": {
      "op": "POP"
    },
    "608": {
      "op": "PUSH4",
      "value": "0x1FFC9A7"
    },
    "613": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "615": {
      "op": "SHL"
    },
    "616": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "618": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "620": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "622": {
      "op": "SHL"
    },
    "623": {
      "op": "SUB"
    },
    "624": {
      "op": "NOT"
    },
    "625": {
      "fn": "ERC165.supportsInterface",
      "offset": [
        937,
        977
      ],
      "op": "DUP4",
      "path": "14",
      "statement": 2
    },
    "626": {
      "fn": "ERC165.supportsInterface",
      "offset": [
        937,
        977
      ],
      "op": "AND",
      "path": "14"
    },
    "627": {
      "fn": "ERC165.supportsInterface",
      "offset": [
        937,
        977
      ],
      "op": "EQ",
      "path": "14"
    },
    "628": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1827,
        1863
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "629": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1688,
        1863
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "630": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1688,
        1863
      ],
      "op": "POP",
      "path": "6"
    },
    "631": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "632": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "633": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "634": {
      "fn": "ERC721.supportsInterface",
      "offset": [
        1570,
        1870
      ],
      "op": "POP",
      "path": "6"
    },
    "635": {
      "fn": "ERC721.supportsInterface",
      "jump": "o",
      "offset": [
        1570,
        1870
      ],
      "op": "JUMP",
      "path": "6"
    },
    "636": {
      "fn": "ERC721.name",
      "offset": [
        2470,
        2568
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "637": {
      "fn": "ERC721.name",
      "offset": [
        2524,
        2537
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x60"
    },
    "639": {
      "fn": "ERC721.name",
      "offset": [
        2556,
        2561
      ],
      "op": "PUSH1",
      "path": "6",
      "statement": 3,
      "value": "0x0"
    },
    "641": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "DUP1",
      "path": "6"
    },
    "642": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "SLOAD",
      "path": "6"
    },
    "643": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x28B"
    },
    "646": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "647": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x1041"
    },
    "650": {
      "fn": "ERC721.name",
      "jump": "i",
      "offset": [
        2549,
        2561
      ],
      "op": "JUMP",
      "path": "6"
    },
    "651": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "652": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "DUP1",
      "path": "6"
    },
    "653": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x1F"
    },
    "655": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "ADD",
      "path": "6"
    },
    "656": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "658": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "DUP1",
      "path": "6"
    },
    "659": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "660": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "DIV",
      "path": "6"
    },
    "661": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "MUL",
      "path": "6"
    },
    "662": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "664": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "ADD",
      "path": "6"
    },
    "665": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "667": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "668": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "669": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "DUP2",
      "path": "6"
    },
    "670": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "ADD",
      "path": "6"
    },
    "671": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "673": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "674": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "DUP1",
      "path": "6"
    },
    "675": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "SWAP3",
      "path": "6"
    },
    "676": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "677": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "678": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "DUP2",
      "path": "6"
    },
    "679": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "DUP2",
      "path": "6"
    },
    "680": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "681": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "683": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "ADD",
      "path": "6"
    },
    "684": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "DUP3",
      "path": "6"
    },
    "685": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "DUP1",
      "path": "6"
    },
    "686": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "SLOAD",
      "path": "6"
    },
    "687": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x2B7"
    },
    "690": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "691": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x1041"
    },
    "694": {
      "fn": "ERC721.name",
      "jump": "i",
      "offset": [
        2549,
        2561
      ],
      "op": "JUMP",
      "path": "6"
    },
    "695": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "696": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "DUP1",
      "path": "6"
    },
    "697": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "ISZERO",
      "path": "6"
    },
    "698": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x304"
    },
    "701": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "702": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "DUP1",
      "path": "6"
    },
    "703": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x1F"
    },
    "705": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "LT",
      "path": "6"
    },
    "706": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x2D9"
    },
    "709": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "710": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x100"
    },
    "713": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "DUP1",
      "path": "6"
    },
    "714": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "DUP4",
      "path": "6"
    },
    "715": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "SLOAD",
      "path": "6"
    },
    "716": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "DIV",
      "path": "6"
    },
    "717": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "MUL",
      "path": "6"
    },
    "718": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "DUP4",
      "path": "6"
    },
    "719": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "720": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "721": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "723": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "ADD",
      "path": "6"
    },
    "724": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "725": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x304"
    },
    "728": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "JUMP",
      "path": "6"
    },
    "729": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "730": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "DUP3",
      "path": "6"
    },
    "731": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "ADD",
      "path": "6"
    },
    "732": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "733": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "734": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "736": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "737": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "739": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "741": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "KECCAK256",
      "path": "6"
    },
    "742": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "743": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "744": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "DUP2",
      "path": "6"
    },
    "745": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "SLOAD",
      "path": "6"
    },
    "746": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "DUP2",
      "path": "6"
    },
    "747": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "748": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "749": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x1"
    },
    "751": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "ADD",
      "path": "6"
    },
    "752": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "753": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "755": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "ADD",
      "path": "6"
    },
    "756": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "DUP1",
      "path": "6"
    },
    "757": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "DUP4",
      "path": "6"
    },
    "758": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "GT",
      "path": "6"
    },
    "759": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x2E7"
    },
    "762": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "763": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "DUP3",
      "path": "6"
    },
    "764": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "765": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "SUB",
      "path": "6"
    },
    "766": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x1F"
    },
    "768": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "AND",
      "path": "6"
    },
    "769": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "DUP3",
      "path": "6"
    },
    "770": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "ADD",
      "path": "6"
    },
    "771": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "772": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "773": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "POP",
      "path": "6"
    },
    "774": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "POP",
      "path": "6"
    },
    "775": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "POP",
      "path": "6"
    },
    "776": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "POP",
      "path": "6"
    },
    "777": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "POP",
      "path": "6"
    },
    "778": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "779": {
      "fn": "ERC721.name",
      "offset": [
        2549,
        2561
      ],
      "op": "POP",
      "path": "6"
    },
    "780": {
      "fn": "ERC721.name",
      "offset": [
        2470,
        2568
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "781": {
      "fn": "ERC721.name",
      "jump": "o",
      "offset": [
        2470,
        2568
      ],
      "op": "JUMP",
      "path": "6"
    },
    "782": {
      "fn": "ERC721.getApproved",
      "offset": [
        3935,
        4102
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "783": {
      "fn": "ERC721.getApproved",
      "offset": [
        4011,
        4018
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "785": {
      "fn": "ERC721.getApproved",
      "offset": [
        4030,
        4053
      ],
      "op": "PUSH2",
      "path": "6",
      "statement": 4,
      "value": "0x319"
    },
    "788": {
      "fn": "ERC721.getApproved",
      "offset": [
        4045,
        4052
      ],
      "op": "DUP3",
      "path": "6"
    },
    "789": {
      "fn": "ERC721.getApproved",
      "offset": [
        4030,
        4044
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x64C"
    },
    "792": {
      "fn": "ERC721.getApproved",
      "jump": "i",
      "offset": [
        4030,
        4053
      ],
      "op": "JUMP",
      "path": "6"
    },
    "793": {
      "fn": "ERC721.getApproved",
      "offset": [
        4030,
        4053
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "794": {
      "op": "POP"
    },
    "795": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4095
      ],
      "op": "PUSH1",
      "path": "6",
      "statement": 5,
      "value": "0x0"
    },
    "797": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4095
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "798": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4095
      ],
      "op": "DUP2",
      "path": "6"
    },
    "799": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4095
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "800": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4086
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "802": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4095
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "804": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4095
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "805": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4095
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "807": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4095
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "808": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4095
      ],
      "op": "KECCAK256",
      "path": "6"
    },
    "809": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4095
      ],
      "op": "SLOAD",
      "path": "6"
    },
    "810": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "812": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "814": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "816": {
      "op": "SHL"
    },
    "817": {
      "op": "SUB"
    },
    "818": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4095
      ],
      "op": "AND",
      "path": "6"
    },
    "819": {
      "fn": "ERC721.getApproved",
      "offset": [
        4071,
        4095
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "820": {
      "fn": "ERC721.getApproved",
      "jump": "o",
      "offset": [
        3935,
        4102
      ],
      "op": "JUMP",
      "path": "6"
    },
    "821": {
      "fn": "ERC721.approve",
      "offset": [
        3467,
        3874
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "822": {
      "fn": "ERC721.approve",
      "offset": [
        3547,
        3560
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "824": {
      "fn": "ERC721.approve",
      "offset": [
        3563,
        3586
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x340"
    },
    "827": {
      "fn": "ERC721.approve",
      "offset": [
        3578,
        3585
      ],
      "op": "DUP3",
      "path": "6"
    },
    "828": {
      "fn": "ERC721.approve",
      "offset": [
        3563,
        3577
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x49C"
    },
    "831": {
      "fn": "ERC721.approve",
      "jump": "i",
      "offset": [
        3563,
        3586
      ],
      "op": "JUMP",
      "path": "6"
    },
    "832": {
      "fn": "ERC721.approve",
      "offset": [
        3563,
        3586
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "833": {
      "fn": "ERC721.approve",
      "offset": [
        3547,
        3586
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "834": {
      "fn": "ERC721.approve",
      "offset": [
        3547,
        3586
      ],
      "op": "POP",
      "path": "6"
    },
    "835": {
      "fn": "ERC721.approve",
      "offset": [
        3610,
        3615
      ],
      "op": "DUP1",
      "path": "6",
      "statement": 6
    },
    "836": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "838": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "840": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "842": {
      "op": "SHL"
    },
    "843": {
      "op": "SUB"
    },
    "844": {
      "fn": "ERC721.approve",
      "offset": [
        3604,
        3615
      ],
      "op": "AND",
      "path": "6"
    },
    "845": {
      "fn": "ERC721.approve",
      "offset": [
        3604,
        3606
      ],
      "op": "DUP4",
      "path": "6"
    },
    "846": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "848": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "850": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "852": {
      "op": "SHL"
    },
    "853": {
      "op": "SUB"
    },
    "854": {
      "fn": "ERC721.approve",
      "offset": [
        3604,
        3615
      ],
      "op": "AND",
      "path": "6"
    },
    "855": {
      "fn": "ERC721.approve",
      "offset": [
        3604,
        3615
      ],
      "op": "EQ",
      "path": "6"
    },
    "856": {
      "branch": 51,
      "fn": "ERC721.approve",
      "offset": [
        3604,
        3615
      ],
      "op": "ISZERO",
      "path": "6"
    },
    "857": {
      "fn": "ERC721.approve",
      "offset": [
        3596,
        3653
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x3B3"
    },
    "860": {
      "branch": 51,
      "fn": "ERC721.approve",
      "offset": [
        3596,
        3653
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "861": {
      "fn": "ERC721.approve",
      "offset": [
        3596,
        3653
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "863": {
      "fn": "ERC721.approve",
      "offset": [
        3596,
        3653
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "864": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "868": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "870": {
      "op": "SHL"
    },
    "871": {
      "fn": "ERC721.approve",
      "offset": [
        3596,
        3653
      ],
      "op": "DUP2",
      "path": "6"
    },
    "872": {
      "fn": "ERC721.approve",
      "offset": [
        3596,
        3653
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "873": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "875": {
      "fn": "ERC721.approve",
      "offset": [
        3596,
        3653
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "877": {
      "fn": "ERC721.approve",
      "offset": [
        3596,
        3653
      ],
      "op": "DUP3",
      "path": "6"
    },
    "878": {
      "fn": "ERC721.approve",
      "offset": [
        3596,
        3653
      ],
      "op": "ADD",
      "path": "6"
    },
    "879": {
      "op": "MSTORE"
    },
    "880": {
      "op": "PUSH1",
      "value": "0x21"
    },
    "882": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "884": {
      "op": "DUP3"
    },
    "885": {
      "op": "ADD"
    },
    "886": {
      "op": "MSTORE"
    },
    "887": {
      "op": "PUSH32",
      "value": "0x4552433732313A20617070726F76616C20746F2063757272656E74206F776E65"
    },
    "920": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "922": {
      "op": "DUP3"
    },
    "923": {
      "op": "ADD"
    },
    "924": {
      "op": "MSTORE"
    },
    "925": {
      "op": "PUSH1",
      "value": "0x39"
    },
    "927": {
      "op": "PUSH1",
      "value": "0xF9"
    },
    "929": {
      "op": "SHL"
    },
    "930": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "932": {
      "op": "DUP3"
    },
    "933": {
      "op": "ADD"
    },
    "934": {
      "op": "MSTORE"
    },
    "935": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "937": {
      "op": "ADD"
    },
    "938": {
      "fn": "ERC721.approve",
      "offset": [
        3596,
        3653
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "939": {
      "fn": "ERC721.approve",
      "offset": [
        3596,
        3653
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "941": {
      "fn": "ERC721.approve",
      "offset": [
        3596,
        3653
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "942": {
      "fn": "ERC721.approve",
      "offset": [
        3596,
        3653
      ],
      "op": "DUP1",
      "path": "6"
    },
    "943": {
      "fn": "ERC721.approve",
      "offset": [
        3596,
        3653
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "944": {
      "fn": "ERC721.approve",
      "offset": [
        3596,
        3653
      ],
      "op": "SUB",
      "path": "6"
    },
    "945": {
      "fn": "ERC721.approve",
      "offset": [
        3596,
        3653
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "946": {
      "fn": "ERC721.approve",
      "offset": [
        3596,
        3653
      ],
      "op": "REVERT",
      "optimizer_revert": true,
      "path": "6"
    },
    "947": {
      "fn": "ERC721.approve",
      "offset": [
        3596,
        3653
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "948": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "11",
      "statement": 7
    },
    "949": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "951": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "953": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "955": {
      "op": "SHL"
    },
    "956": {
      "op": "SUB"
    },
    "957": {
      "fn": "ERC721.approve",
      "offset": [
        3685,
        3706
      ],
      "op": "DUP3",
      "path": "6",
      "statement": 8
    },
    "958": {
      "fn": "ERC721.approve",
      "offset": [
        3685,
        3706
      ],
      "op": "AND",
      "path": "6"
    },
    "959": {
      "fn": "ERC721.approve",
      "offset": [
        3685,
        3706
      ],
      "op": "EQ",
      "path": "6"
    },
    "960": {
      "branch": 52,
      "fn": "ERC721.approve",
      "offset": [
        3685,
        3706
      ],
      "op": "DUP1",
      "path": "6"
    },
    "961": {
      "fn": "ERC721.approve",
      "offset": [
        3685,
        3747
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x3CF"
    },
    "964": {
      "branch": 52,
      "fn": "ERC721.approve",
      "offset": [
        3685,
        3747
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "965": {
      "op": "POP"
    },
    "966": {
      "fn": "ERC721.approve",
      "offset": [
        3710,
        3747
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x3CF"
    },
    "969": {
      "fn": "ERC721.approve",
      "offset": [
        3727,
        3732
      ],
      "op": "DUP2",
      "path": "6"
    },
    "970": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "11"
    },
    "971": {
      "fn": "ERC721.approve",
      "offset": [
        3734,
        3746
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x1FA"
    },
    "974": {
      "fn": "Context._msgSender",
      "offset": [
        640,
        736
      ],
      "op": "JUMP",
      "path": "11"
    },
    "975": {
      "branch": 53,
      "fn": "ERC721.approve",
      "offset": [
        3710,
        3747
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "976": {
      "fn": "ERC721.approve",
      "offset": [
        3664,
        3835
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x441"
    },
    "979": {
      "branch": 53,
      "fn": "ERC721.approve",
      "offset": [
        3664,
        3835
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "980": {
      "fn": "ERC721.approve",
      "offset": [
        3664,
        3835
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "982": {
      "fn": "ERC721.approve",
      "offset": [
        3664,
        3835
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "983": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "987": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "989": {
      "op": "SHL"
    },
    "990": {
      "fn": "ERC721.approve",
      "offset": [
        3664,
        3835
      ],
      "op": "DUP2",
      "path": "6"
    },
    "991": {
      "fn": "ERC721.approve",
      "offset": [
        3664,
        3835
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "992": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "994": {
      "fn": "ERC721.approve",
      "offset": [
        3664,
        3835
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "996": {
      "fn": "ERC721.approve",
      "offset": [
        3664,
        3835
      ],
      "op": "DUP3",
      "path": "6"
    },
    "997": {
      "fn": "ERC721.approve",
      "offset": [
        3664,
        3835
      ],
      "op": "ADD",
      "path": "6"
    },
    "998": {
      "op": "MSTORE"
    },
    "999": {
      "op": "PUSH1",
      "value": "0x3E"
    },
    "1001": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1003": {
      "op": "DUP3"
    },
    "1004": {
      "op": "ADD"
    },
    "1005": {
      "op": "MSTORE"
    },
    "1006": {
      "op": "PUSH32",
      "value": "0x4552433732313A20617070726F76652063616C6C6572206973206E6F7420746F"
    },
    "1039": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1041": {
      "op": "DUP3"
    },
    "1042": {
      "op": "ADD"
    },
    "1043": {
      "op": "MSTORE"
    },
    "1044": {
      "op": "PUSH32",
      "value": "0x6B656E206F776E6572206E6F7220617070726F76656420666F7220616C6C0000"
    },
    "1077": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1079": {
      "op": "DUP3"
    },
    "1080": {
      "op": "ADD"
    },
    "1081": {
      "op": "MSTORE"
    },
    "1082": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "1084": {
      "op": "ADD"
    },
    "1085": {
      "fn": "ERC721.approve",
      "offset": [
        3664,
        3835
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x3AA"
    },
    "1088": {
      "op": "JUMP"
    },
    "1089": {
      "fn": "ERC721.approve",
      "offset": [
        3664,
        3835
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1090": {
      "fn": "ERC721.approve",
      "offset": [
        3846,
        3867
      ],
      "op": "PUSH2",
      "path": "6",
      "statement": 9,
      "value": "0x44B"
    },
    "1093": {
      "fn": "ERC721.approve",
      "offset": [
        3855,
        3857
      ],
      "op": "DUP4",
      "path": "6"
    },
    "1094": {
      "fn": "ERC721.approve",
      "offset": [
        3859,
        3866
      ],
      "op": "DUP4",
      "path": "6"
    },
    "1095": {
      "fn": "ERC721.approve",
      "offset": [
        3846,
        3854
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x6AE"
    },
    "1098": {
      "fn": "ERC721.approve",
      "jump": "i",
      "offset": [
        3846,
        3867
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1099": {
      "fn": "ERC721.approve",
      "offset": [
        3846,
        3867
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1100": {
      "fn": "ERC721.approve",
      "offset": [
        3467,
        3874
      ],
      "op": "POP",
      "path": "6"
    },
    "1101": {
      "fn": "ERC721.approve",
      "offset": [
        3467,
        3874
      ],
      "op": "POP",
      "path": "6"
    },
    "1102": {
      "fn": "ERC721.approve",
      "offset": [
        3467,
        3874
      ],
      "op": "POP",
      "path": "6"
    },
    "1103": {
      "fn": "ERC721.approve",
      "jump": "o",
      "offset": [
        3467,
        3874
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1104": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4612,
        4939
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1105": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4801,
        4842
      ],
      "op": "PUSH2",
      "path": "6",
      "statement": 10,
      "value": "0x45A"
    },
    "1108": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "11"
    },
    "1109": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4834,
        4841
      ],
      "op": "DUP3",
      "path": "6"
    },
    "1110": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4801,
        4819
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x71C"
    },
    "1113": {
      "fn": "ERC721.transferFrom",
      "jump": "i",
      "offset": [
        4801,
        4842
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1114": {
      "branch": 54,
      "fn": "ERC721.transferFrom",
      "offset": [
        4801,
        4842
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1115": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4793,
        4893
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x476"
    },
    "1118": {
      "branch": 54,
      "fn": "ERC721.transferFrom",
      "offset": [
        4793,
        4893
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "1119": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4793,
        4893
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "1121": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4793,
        4893
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "1122": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1126": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1128": {
      "op": "SHL"
    },
    "1129": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4793,
        4893
      ],
      "op": "DUP2",
      "path": "6"
    },
    "1130": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4793,
        4893
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1131": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4793,
        4893
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "1133": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4793,
        4893
      ],
      "op": "ADD",
      "path": "6"
    },
    "1134": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4793,
        4893
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x3AA"
    },
    "1137": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4793,
        4893
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "1138": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4793,
        4893
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xF84"
    },
    "1141": {
      "fn": "ERC721.transferFrom",
      "jump": "i",
      "offset": [
        4793,
        4893
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1142": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4793,
        4893
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1143": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4904,
        4932
      ],
      "op": "PUSH2",
      "path": "6",
      "statement": 11,
      "value": "0x44B"
    },
    "1146": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4914,
        4918
      ],
      "op": "DUP4",
      "path": "6"
    },
    "1147": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4920,
        4922
      ],
      "op": "DUP4",
      "path": "6"
    },
    "1148": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4924,
        4931
      ],
      "op": "DUP4",
      "path": "6"
    },
    "1149": {
      "fn": "ERC721.transferFrom",
      "offset": [
        4904,
        4913
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x79B"
    },
    "1152": {
      "fn": "ERC721.transferFrom",
      "jump": "i",
      "offset": [
        4904,
        4932
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1153": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5005,
        5184
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1154": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5138,
        5177
      ],
      "op": "PUSH2",
      "path": "6",
      "statement": 12,
      "value": "0x44B"
    },
    "1157": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5155,
        5159
      ],
      "op": "DUP4",
      "path": "6"
    },
    "1158": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5161,
        5163
      ],
      "op": "DUP4",
      "path": "6"
    },
    "1159": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5165,
        5172
      ],
      "op": "DUP4",
      "path": "6"
    },
    "1160": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5138,
        5177
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "1162": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5138,
        5177
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "1163": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5138,
        5177
      ],
      "op": "DUP1",
      "path": "6"
    },
    "1164": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5138,
        5177
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "1166": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5138,
        5177
      ],
      "op": "ADD",
      "path": "6"
    },
    "1167": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5138,
        5177
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "1169": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5138,
        5177
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1170": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5138,
        5177
      ],
      "op": "DUP1",
      "path": "6"
    },
    "1171": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5138,
        5177
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "1173": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5138,
        5177
      ],
      "op": "DUP2",
      "path": "6"
    },
    "1174": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5138,
        5177
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1175": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5138,
        5177
      ],
      "op": "POP",
      "path": "6"
    },
    "1176": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5138,
        5154
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x5A0"
    },
    "1179": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "i",
      "offset": [
        5138,
        5177
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1180": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2190,
        2408
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1181": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2262,
        2269
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "1183": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2297,
        2313
      ],
      "op": "DUP2",
      "path": "6"
    },
    "1184": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2297,
        2313
      ],
      "op": "DUP2",
      "path": "6"
    },
    "1185": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2297,
        2313
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1186": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2297,
        2304
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x2"
    },
    "1188": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2297,
        2313
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "1190": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2297,
        2313
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1191": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2297,
        2313
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "1193": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2297,
        2313
      ],
      "op": "DUP2",
      "path": "6"
    },
    "1194": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2297,
        2313
      ],
      "op": "KECCAK256",
      "path": "6"
    },
    "1195": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2297,
        2313
      ],
      "op": "SLOAD",
      "path": "6"
    },
    "1196": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1198": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1200": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1202": {
      "op": "SHL"
    },
    "1203": {
      "op": "SUB"
    },
    "1204": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2297,
        2313
      ],
      "op": "AND",
      "path": "6"
    },
    "1205": {
      "branch": 55,
      "fn": "ERC721.ownerOf",
      "offset": [
        2331,
        2350
      ],
      "op": "DUP1",
      "path": "6",
      "statement": 13
    },
    "1206": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2323,
        2379
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x274"
    },
    "1209": {
      "branch": 55,
      "fn": "ERC721.ownerOf",
      "offset": [
        2323,
        2379
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "1210": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2323,
        2379
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "1212": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2323,
        2379
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "1213": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1217": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1219": {
      "op": "SHL"
    },
    "1220": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2323,
        2379
      ],
      "op": "DUP2",
      "path": "6"
    },
    "1221": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2323,
        2379
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1222": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1224": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2323,
        2379
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "1226": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2323,
        2379
      ],
      "op": "DUP3",
      "path": "6"
    },
    "1227": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2323,
        2379
      ],
      "op": "ADD",
      "path": "6"
    },
    "1228": {
      "op": "MSTORE"
    },
    "1229": {
      "op": "PUSH1",
      "value": "0x18"
    },
    "1231": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1233": {
      "op": "DUP3"
    },
    "1234": {
      "op": "ADD"
    },
    "1235": {
      "op": "MSTORE"
    },
    "1236": {
      "op": "PUSH24",
      "value": "0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251"
    },
    "1261": {
      "op": "PUSH1",
      "value": "0x42"
    },
    "1263": {
      "op": "SHL"
    },
    "1264": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1266": {
      "op": "DUP3"
    },
    "1267": {
      "op": "ADD"
    },
    "1268": {
      "op": "MSTORE"
    },
    "1269": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1271": {
      "op": "ADD"
    },
    "1272": {
      "fn": "ERC721.ownerOf",
      "offset": [
        2323,
        2379
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x3AA"
    },
    "1275": {
      "op": "JUMP"
    },
    "1276": {
      "fn": "ERC721.balanceOf",
      "offset": [
        1929,
        2133
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1277": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2001,
        2008
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "1279": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1281": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1283": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1285": {
      "op": "SHL"
    },
    "1286": {
      "op": "SUB"
    },
    "1287": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2028,
        2047
      ],
      "op": "DUP3",
      "path": "6",
      "statement": 14
    },
    "1288": {
      "branch": 56,
      "fn": "ERC721.balanceOf",
      "offset": [
        2028,
        2047
      ],
      "op": "AND",
      "path": "6"
    },
    "1289": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2093
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x566"
    },
    "1292": {
      "branch": 56,
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2093
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "1293": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2093
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "1295": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2093
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "1296": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1300": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1302": {
      "op": "SHL"
    },
    "1303": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2093
      ],
      "op": "DUP2",
      "path": "6"
    },
    "1304": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2093
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1305": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1307": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2093
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "1309": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2093
      ],
      "op": "DUP3",
      "path": "6"
    },
    "1310": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2093
      ],
      "op": "ADD",
      "path": "6"
    },
    "1311": {
      "op": "MSTORE"
    },
    "1312": {
      "op": "PUSH1",
      "value": "0x29"
    },
    "1314": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1316": {
      "op": "DUP3"
    },
    "1317": {
      "op": "ADD"
    },
    "1318": {
      "op": "MSTORE"
    },
    "1319": {
      "op": "PUSH32",
      "value": "0x4552433732313A2061646472657373207A65726F206973206E6F742061207661"
    },
    "1352": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1354": {
      "op": "DUP3"
    },
    "1355": {
      "op": "ADD"
    },
    "1356": {
      "op": "MSTORE"
    },
    "1357": {
      "op": "PUSH9",
      "value": "0x3634B21037BBB732B9"
    },
    "1367": {
      "op": "PUSH1",
      "value": "0xB9"
    },
    "1369": {
      "op": "SHL"
    },
    "1370": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1372": {
      "op": "DUP3"
    },
    "1373": {
      "op": "ADD"
    },
    "1374": {
      "op": "MSTORE"
    },
    "1375": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "1377": {
      "op": "ADD"
    },
    "1378": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2093
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x3AA"
    },
    "1381": {
      "op": "JUMP"
    },
    "1382": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2020,
        2093
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1383": {
      "op": "POP"
    },
    "1384": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1386": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1388": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1390": {
      "op": "SHL"
    },
    "1391": {
      "op": "SUB"
    },
    "1392": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2126
      ],
      "op": "AND",
      "path": "6",
      "statement": 15
    },
    "1393": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2126
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "1395": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2126
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "1396": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2126
      ],
      "op": "DUP2",
      "path": "6"
    },
    "1397": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2126
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1398": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2119
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x3"
    },
    "1400": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2126
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "1402": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2126
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1403": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2126
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "1405": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2126
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "1406": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2126
      ],
      "op": "KECCAK256",
      "path": "6"
    },
    "1407": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2126
      ],
      "op": "SLOAD",
      "path": "6"
    },
    "1408": {
      "fn": "ERC721.balanceOf",
      "offset": [
        2110,
        2126
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "1409": {
      "fn": "ERC721.balanceOf",
      "jump": "o",
      "offset": [
        1929,
        2133
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1410": {
      "fn": "ERC721.symbol",
      "offset": [
        2632,
        2734
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1411": {
      "fn": "ERC721.symbol",
      "offset": [
        2688,
        2701
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x60"
    },
    "1413": {
      "fn": "ERC721.symbol",
      "offset": [
        2720,
        2727
      ],
      "op": "PUSH1",
      "path": "6",
      "statement": 16,
      "value": "0x1"
    },
    "1415": {
      "fn": "ERC721.symbol",
      "offset": [
        2713,
        2727
      ],
      "op": "DUP1",
      "path": "6"
    },
    "1416": {
      "fn": "ERC721.symbol",
      "offset": [
        2713,
        2727
      ],
      "op": "SLOAD",
      "path": "6"
    },
    "1417": {
      "fn": "ERC721.symbol",
      "offset": [
        2713,
        2727
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x28B"
    },
    "1420": {
      "fn": "ERC721.symbol",
      "offset": [
        2713,
        2727
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "1421": {
      "fn": "ERC721.symbol",
      "offset": [
        2713,
        2727
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x1041"
    },
    "1424": {
      "fn": "ERC721.symbol",
      "jump": "i",
      "offset": [
        2713,
        2727
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1425": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4169,
        4322
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1426": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4263,
        4315
      ],
      "op": "PUSH2",
      "path": "6",
      "statement": 17,
      "value": "0x59C"
    },
    "1429": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "11"
    },
    "1430": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4296,
        4304
      ],
      "op": "DUP4",
      "path": "6"
    },
    "1431": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4306,
        4314
      ],
      "op": "DUP4",
      "path": "6"
    },
    "1432": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4263,
        4281
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x937"
    },
    "1435": {
      "fn": "ERC721.setApprovalForAll",
      "jump": "i",
      "offset": [
        4263,
        4315
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1436": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4263,
        4315
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1437": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4169,
        4322
      ],
      "op": "POP",
      "path": "6"
    },
    "1438": {
      "fn": "ERC721.setApprovalForAll",
      "offset": [
        4169,
        4322
      ],
      "op": "POP",
      "path": "6"
    },
    "1439": {
      "fn": "ERC721.setApprovalForAll",
      "jump": "o",
      "offset": [
        4169,
        4322
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1440": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5250,
        5565
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1441": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5418,
        5459
      ],
      "op": "PUSH2",
      "path": "6",
      "statement": 18,
      "value": "0x5AA"
    },
    "1444": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "11"
    },
    "1445": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5451,
        5458
      ],
      "op": "DUP4",
      "path": "6"
    },
    "1446": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5418,
        5436
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x71C"
    },
    "1449": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "i",
      "offset": [
        5418,
        5459
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1450": {
      "branch": 57,
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5418,
        5459
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1451": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5410,
        5510
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x5C6"
    },
    "1454": {
      "branch": 57,
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5410,
        5510
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "1455": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5410,
        5510
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "1457": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5410,
        5510
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "1458": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1462": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1464": {
      "op": "SHL"
    },
    "1465": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5410,
        5510
      ],
      "op": "DUP2",
      "path": "6"
    },
    "1466": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5410,
        5510
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1467": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5410,
        5510
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "1469": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5410,
        5510
      ],
      "op": "ADD",
      "path": "6"
    },
    "1470": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5410,
        5510
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x3AA"
    },
    "1473": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5410,
        5510
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "1474": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5410,
        5510
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xF84"
    },
    "1477": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "i",
      "offset": [
        5410,
        5510
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1478": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5410,
        5510
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1479": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5520,
        5558
      ],
      "op": "PUSH2",
      "path": "6",
      "statement": 19,
      "value": "0x5D2"
    },
    "1482": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5534,
        5538
      ],
      "op": "DUP5",
      "path": "6"
    },
    "1483": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5540,
        5542
      ],
      "op": "DUP5",
      "path": "6"
    },
    "1484": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5544,
        5551
      ],
      "op": "DUP5",
      "path": "6"
    },
    "1485": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5553,
        5557
      ],
      "op": "DUP5",
      "path": "6"
    },
    "1486": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5520,
        5533
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xA06"
    },
    "1489": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "i",
      "offset": [
        5520,
        5558
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1490": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5520,
        5558
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1491": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5250,
        5565
      ],
      "op": "POP",
      "path": "6"
    },
    "1492": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5250,
        5565
      ],
      "op": "POP",
      "path": "6"
    },
    "1493": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5250,
        5565
      ],
      "op": "POP",
      "path": "6"
    },
    "1494": {
      "fn": "ERC721.safeTransferFrom",
      "offset": [
        5250,
        5565
      ],
      "op": "POP",
      "path": "6"
    },
    "1495": {
      "fn": "ERC721.safeTransferFrom",
      "jump": "o",
      "offset": [
        5250,
        5565
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1496": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2800,
        3076
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1497": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2873,
        2886
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x60"
    },
    "1499": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2898,
        2921
      ],
      "op": "PUSH2",
      "path": "6",
      "statement": 20,
      "value": "0x5E3"
    },
    "1502": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2913,
        2920
      ],
      "op": "DUP3",
      "path": "6"
    },
    "1503": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2898,
        2912
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x64C"
    },
    "1506": {
      "fn": "ERC721.tokenURI",
      "jump": "i",
      "offset": [
        2898,
        2921
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1507": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2898,
        2921
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1508": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2932,
        2953
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "1510": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2956,
        2966
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x5FA"
    },
    "1513": {
      "fn": "ERC721._baseURI",
      "offset": [
        3394,
        3403
      ],
      "op": "PUSH1",
      "path": "6",
      "statement": 21,
      "value": "0x40"
    },
    "1515": {
      "fn": "ERC721._baseURI",
      "offset": [
        3394,
        3403
      ],
      "op": "DUP1",
      "path": "6"
    },
    "1516": {
      "fn": "ERC721._baseURI",
      "offset": [
        3394,
        3403
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "1517": {
      "fn": "ERC721._baseURI",
      "offset": [
        3394,
        3403
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "1519": {
      "fn": "ERC721._baseURI",
      "offset": [
        3394,
        3403
      ],
      "op": "DUP2",
      "path": "6"
    },
    "1520": {
      "fn": "ERC721._baseURI",
      "offset": [
        3394,
        3403
      ],
      "op": "ADD",
      "path": "6"
    },
    "1521": {
      "fn": "ERC721._baseURI",
      "offset": [
        3394,
        3403
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "1522": {
      "fn": "ERC721._baseURI",
      "offset": [
        3394,
        3403
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "1523": {
      "fn": "ERC721._baseURI",
      "offset": [
        3394,
        3403
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1524": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "1526": {
      "fn": "ERC721._baseURI",
      "offset": [
        3394,
        3403
      ],
      "op": "DUP2",
      "path": "6"
    },
    "1527": {
      "fn": "ERC721._baseURI",
      "offset": [
        3394,
        3403
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1528": {
      "fn": "ERC721._baseURI",
      "offset": [
        3318,
        3410
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "1529": {
      "fn": "ERC721._baseURI",
      "offset": [
        3318,
        3410
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1530": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2956,
        2966
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1531": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2932,
        2966
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "1532": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2932,
        2966
      ],
      "op": "POP",
      "path": "6"
    },
    "1533": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3007,
        3008
      ],
      "op": "PUSH1",
      "path": "6",
      "statement": 22,
      "value": "0x0"
    },
    "1535": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2989,
        2996
      ],
      "op": "DUP2",
      "path": "6"
    },
    "1536": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2983,
        3004
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "1537": {
      "branch": 58,
      "fn": "ERC721.tokenURI",
      "offset": [
        2983,
        3008
      ],
      "op": "GT",
      "path": "6"
    },
    "1538": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2983,
        3069
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x61A"
    },
    "1541": {
      "branch": 58,
      "fn": "ERC721.tokenURI",
      "offset": [
        2983,
        3069
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "1542": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2983,
        3069
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "1544": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2983,
        3069
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "1545": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2983,
        3069
      ],
      "op": "DUP1",
      "path": "6"
    },
    "1546": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2983,
        3069
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "1548": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2983,
        3069
      ],
      "op": "ADD",
      "path": "6"
    },
    "1549": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2983,
        3069
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "1551": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2983,
        3069
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1552": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2983,
        3069
      ],
      "op": "DUP1",
      "path": "6"
    },
    "1553": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2983,
        3069
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "1555": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2983,
        3069
      ],
      "op": "DUP2",
      "path": "6"
    },
    "1556": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2983,
        3069
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1557": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2983,
        3069
      ],
      "op": "POP",
      "path": "6"
    },
    "1558": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2983,
        3069
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x645"
    },
    "1561": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2983,
        3069
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1562": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2983,
        3069
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1563": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3035,
        3042
      ],
      "op": "DUP1",
      "path": "6"
    },
    "1564": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3044,
        3062
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x624"
    },
    "1567": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3044,
        3051
      ],
      "op": "DUP5",
      "path": "6"
    },
    "1568": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3044,
        3060
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xA39"
    },
    "1571": {
      "fn": "ERC721.tokenURI",
      "jump": "i",
      "offset": [
        3044,
        3062
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1572": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3044,
        3062
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1573": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3018,
        3063
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "1575": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3018,
        3063
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "1576": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3018,
        3063
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "1578": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3018,
        3063
      ],
      "op": "ADD",
      "path": "6"
    },
    "1579": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3018,
        3063
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x635"
    },
    "1582": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3018,
        3063
      ],
      "op": "SWAP3",
      "path": "6"
    },
    "1583": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3018,
        3063
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "1584": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3018,
        3063
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "1585": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3018,
        3063
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xEB3"
    },
    "1588": {
      "fn": "ERC721.tokenURI",
      "jump": "i",
      "offset": [
        3018,
        3063
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1589": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3018,
        3063
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1590": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3018,
        3063
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "1592": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3018,
        3063
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "1593": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3018,
        3063
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "1595": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3018,
        3063
      ],
      "op": "DUP2",
      "path": "6"
    },
    "1596": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3018,
        3063
      ],
      "op": "DUP4",
      "path": "6"
    },
    "1597": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3018,
        3063
      ],
      "op": "SUB",
      "path": "6"
    },
    "1598": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3018,
        3063
      ],
      "op": "SUB",
      "path": "6"
    },
    "1599": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3018,
        3063
      ],
      "op": "DUP2",
      "path": "6"
    },
    "1600": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3018,
        3063
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1601": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3018,
        3063
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "1602": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3018,
        3063
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "1604": {
      "fn": "ERC721.tokenURI",
      "offset": [
        3018,
        3063
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1605": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2983,
        3069
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1606": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2976,
        3069
      ],
      "op": "SWAP4",
      "path": "6"
    },
    "1607": {
      "fn": "ERC721.tokenURI",
      "offset": [
        2800,
        3076
      ],
      "op": "SWAP3",
      "path": "6"
    },
    "1608": {
      "op": "POP"
    },
    "1609": {
      "op": "POP"
    },
    "1610": {
      "op": "POP"
    },
    "1611": {
      "fn": "ERC721.tokenURI",
      "jump": "o",
      "offset": [
        2800,
        3076
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1612": {
      "fn": "ERC721._requireMinted",
      "offset": [
        11657,
        11790
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1613": {
      "fn": "ERC721._exists",
      "offset": [
        7099,
        7103
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "1615": {
      "fn": "ERC721._exists",
      "offset": [
        7122,
        7138
      ],
      "op": "DUP2",
      "path": "6",
      "statement": 23
    },
    "1616": {
      "fn": "ERC721._exists",
      "offset": [
        7122,
        7138
      ],
      "op": "DUP2",
      "path": "6"
    },
    "1617": {
      "fn": "ERC721._exists",
      "offset": [
        7122,
        7138
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1618": {
      "fn": "ERC721._exists",
      "offset": [
        7122,
        7129
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x2"
    },
    "1620": {
      "fn": "ERC721._exists",
      "offset": [
        7122,
        7138
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "1622": {
      "fn": "ERC721._exists",
      "offset": [
        7122,
        7138
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1623": {
      "fn": "ERC721._exists",
      "offset": [
        7122,
        7138
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "1625": {
      "fn": "ERC721._exists",
      "offset": [
        7122,
        7138
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "1626": {
      "fn": "ERC721._exists",
      "offset": [
        7122,
        7138
      ],
      "op": "KECCAK256",
      "path": "6"
    },
    "1627": {
      "fn": "ERC721._exists",
      "offset": [
        7122,
        7138
      ],
      "op": "SLOAD",
      "path": "6"
    },
    "1628": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1630": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1632": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1634": {
      "op": "SHL"
    },
    "1635": {
      "op": "SUB"
    },
    "1636": {
      "fn": "ERC721._exists",
      "offset": [
        7122,
        7138
      ],
      "op": "AND",
      "path": "6"
    },
    "1637": {
      "fn": "ERC721._requireMinted",
      "offset": [
        11730,
        11783
      ],
      "op": "PUSH2",
      "path": "6",
      "statement": 24,
      "value": "0x6AB"
    },
    "1640": {
      "fn": "ERC721._requireMinted",
      "offset": [
        11730,
        11783
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "1641": {
      "fn": "ERC721._requireMinted",
      "offset": [
        11730,
        11783
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "1643": {
      "fn": "ERC721._requireMinted",
      "offset": [
        11730,
        11783
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "1644": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1648": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1650": {
      "op": "SHL"
    },
    "1651": {
      "fn": "ERC721._requireMinted",
      "offset": [
        11730,
        11783
      ],
      "op": "DUP2",
      "path": "6"
    },
    "1652": {
      "fn": "ERC721._requireMinted",
      "offset": [
        11730,
        11783
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1653": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1655": {
      "fn": "ERC721._requireMinted",
      "offset": [
        11730,
        11783
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "1657": {
      "fn": "ERC721._requireMinted",
      "offset": [
        11730,
        11783
      ],
      "op": "DUP3",
      "path": "6"
    },
    "1658": {
      "fn": "ERC721._requireMinted",
      "offset": [
        11730,
        11783
      ],
      "op": "ADD",
      "path": "6"
    },
    "1659": {
      "op": "MSTORE"
    },
    "1660": {
      "op": "PUSH1",
      "value": "0x18"
    },
    "1662": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "1664": {
      "op": "DUP3"
    },
    "1665": {
      "op": "ADD"
    },
    "1666": {
      "op": "MSTORE"
    },
    "1667": {
      "op": "PUSH24",
      "value": "0x115490CDCC8C4E881A5B9D985B1A59081D1BDAD95B881251"
    },
    "1692": {
      "op": "PUSH1",
      "value": "0x42"
    },
    "1694": {
      "op": "SHL"
    },
    "1695": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "1697": {
      "op": "DUP3"
    },
    "1698": {
      "op": "ADD"
    },
    "1699": {
      "op": "MSTORE"
    },
    "1700": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "1702": {
      "op": "ADD"
    },
    "1703": {
      "fn": "ERC721._requireMinted",
      "offset": [
        11730,
        11783
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x3AA"
    },
    "1706": {
      "op": "JUMP"
    },
    "1707": {
      "fn": "ERC721._requireMinted",
      "offset": [
        11730,
        11783
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1708": {
      "fn": "ERC721._requireMinted",
      "offset": [
        11657,
        11790
      ],
      "op": "POP",
      "path": "6"
    },
    "1709": {
      "fn": "ERC721._requireMinted",
      "jump": "o",
      "offset": [
        11657,
        11790
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1710": {
      "fn": "ERC721._approve",
      "offset": [
        10959,
        11130
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1711": {
      "fn": "ERC721._approve",
      "offset": [
        11033,
        11057
      ],
      "op": "PUSH1",
      "path": "6",
      "statement": 25,
      "value": "0x0"
    },
    "1713": {
      "fn": "ERC721._approve",
      "offset": [
        11033,
        11057
      ],
      "op": "DUP2",
      "path": "6"
    },
    "1714": {
      "fn": "ERC721._approve",
      "offset": [
        11033,
        11057
      ],
      "op": "DUP2",
      "path": "6"
    },
    "1715": {
      "fn": "ERC721._approve",
      "offset": [
        11033,
        11057
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1716": {
      "fn": "ERC721._approve",
      "offset": [
        11033,
        11048
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "1718": {
      "fn": "ERC721._approve",
      "offset": [
        11033,
        11057
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "1720": {
      "fn": "ERC721._approve",
      "offset": [
        11033,
        11057
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1721": {
      "fn": "ERC721._approve",
      "offset": [
        11033,
        11057
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "1723": {
      "fn": "ERC721._approve",
      "offset": [
        11033,
        11057
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "1724": {
      "fn": "ERC721._approve",
      "offset": [
        11033,
        11057
      ],
      "op": "KECCAK256",
      "path": "6"
    },
    "1725": {
      "fn": "ERC721._approve",
      "offset": [
        11033,
        11062
      ],
      "op": "DUP1",
      "path": "6"
    },
    "1726": {
      "fn": "ERC721._approve",
      "offset": [
        11033,
        11062
      ],
      "op": "SLOAD",
      "path": "6"
    },
    "1727": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1729": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1731": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1733": {
      "op": "SHL"
    },
    "1734": {
      "op": "SUB"
    },
    "1735": {
      "op": "NOT"
    },
    "1736": {
      "fn": "ERC721._approve",
      "offset": [
        11033,
        11062
      ],
      "op": "AND",
      "path": "6"
    },
    "1737": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1739": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1741": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1743": {
      "op": "SHL"
    },
    "1744": {
      "op": "SUB"
    },
    "1745": {
      "fn": "ERC721._approve",
      "offset": [
        11033,
        11062
      ],
      "op": "DUP5",
      "path": "6"
    },
    "1746": {
      "fn": "ERC721._approve",
      "offset": [
        11033,
        11062
      ],
      "op": "AND",
      "path": "6"
    },
    "1747": {
      "fn": "ERC721._approve",
      "offset": [
        11033,
        11062
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "1748": {
      "fn": "ERC721._approve",
      "offset": [
        11033,
        11062
      ],
      "op": "DUP2",
      "path": "6"
    },
    "1749": {
      "fn": "ERC721._approve",
      "offset": [
        11033,
        11062
      ],
      "op": "OR",
      "path": "6"
    },
    "1750": {
      "fn": "ERC721._approve",
      "offset": [
        11033,
        11062
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "1751": {
      "fn": "ERC721._approve",
      "offset": [
        11033,
        11062
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "1752": {
      "fn": "ERC721._approve",
      "offset": [
        11033,
        11062
      ],
      "op": "SSTORE",
      "path": "6"
    },
    "1753": {
      "fn": "ERC721._approve",
      "offset": [
        11033,
        11057
      ],
      "op": "DUP2",
      "path": "6"
    },
    "1754": {
      "fn": "ERC721._approve",
      "offset": [
        11033,
        11057
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "1755": {
      "fn": "ERC721._approve",
      "offset": [
        11086,
        11109
      ],
      "op": "PUSH2",
      "path": "6",
      "statement": 26,
      "value": "0x6E3"
    },
    "1758": {
      "fn": "ERC721._approve",
      "offset": [
        11033,
        11057
      ],
      "op": "DUP3",
      "path": "6"
    },
    "1759": {
      "fn": "ERC721._approve",
      "offset": [
        11086,
        11100
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x49C"
    },
    "1762": {
      "fn": "ERC721._approve",
      "jump": "i",
      "offset": [
        11086,
        11109
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1763": {
      "fn": "ERC721._approve",
      "offset": [
        11086,
        11109
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1764": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1766": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1768": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1770": {
      "op": "SHL"
    },
    "1771": {
      "op": "SUB"
    },
    "1772": {
      "fn": "ERC721._approve",
      "offset": [
        11077,
        11123
      ],
      "op": "AND",
      "path": "6"
    },
    "1773": {
      "fn": "ERC721._approve",
      "offset": [
        11077,
        11123
      ],
      "op": "PUSH32",
      "path": "6",
      "value": "0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925"
    },
    "1806": {
      "fn": "ERC721._approve",
      "offset": [
        11077,
        11123
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "1808": {
      "fn": "ERC721._approve",
      "offset": [
        11077,
        11123
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "1809": {
      "fn": "ERC721._approve",
      "offset": [
        11077,
        11123
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "1811": {
      "fn": "ERC721._approve",
      "offset": [
        11077,
        11123
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "1812": {
      "fn": "ERC721._approve",
      "offset": [
        11077,
        11123
      ],
      "op": "DUP1",
      "path": "6"
    },
    "1813": {
      "fn": "ERC721._approve",
      "offset": [
        11077,
        11123
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "1814": {
      "fn": "ERC721._approve",
      "offset": [
        11077,
        11123
      ],
      "op": "SUB",
      "path": "6"
    },
    "1815": {
      "fn": "ERC721._approve",
      "offset": [
        11077,
        11123
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "1816": {
      "fn": "ERC721._approve",
      "offset": [
        11077,
        11123
      ],
      "op": "LOG4",
      "path": "6"
    },
    "1817": {
      "fn": "ERC721._approve",
      "offset": [
        10959,
        11130
      ],
      "op": "POP",
      "path": "6"
    },
    "1818": {
      "fn": "ERC721._approve",
      "offset": [
        10959,
        11130
      ],
      "op": "POP",
      "path": "6"
    },
    "1819": {
      "fn": "ERC721._approve",
      "jump": "o",
      "offset": [
        10959,
        11130
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1820": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7317,
        7578
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1821": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7410,
        7414
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "1823": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7426,
        7439
      ],
      "op": "DUP1",
      "path": "6"
    },
    "1824": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7442,
        7465
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x728"
    },
    "1827": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7457,
        7464
      ],
      "op": "DUP4",
      "path": "6"
    },
    "1828": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7442,
        7456
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x49C"
    },
    "1831": {
      "fn": "ERC721._isApprovedOrOwner",
      "jump": "i",
      "offset": [
        7442,
        7465
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1832": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7442,
        7465
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1833": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7426,
        7465
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "1834": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7426,
        7465
      ],
      "op": "POP",
      "path": "6"
    },
    "1835": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7494,
        7499
      ],
      "op": "DUP1",
      "path": "6",
      "statement": 27
    },
    "1836": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1838": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1840": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1842": {
      "op": "SHL"
    },
    "1843": {
      "op": "SUB"
    },
    "1844": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7483,
        7499
      ],
      "op": "AND",
      "path": "6"
    },
    "1845": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7483,
        7490
      ],
      "op": "DUP5",
      "path": "6"
    },
    "1846": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1848": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1850": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1852": {
      "op": "SHL"
    },
    "1853": {
      "op": "SUB"
    },
    "1854": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7483,
        7499
      ],
      "op": "AND",
      "path": "6"
    },
    "1855": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7483,
        7499
      ],
      "op": "EQ",
      "path": "6"
    },
    "1856": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7483,
        7535
      ],
      "op": "DUP1",
      "path": "6"
    },
    "1857": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7483,
        7535
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x76F"
    },
    "1860": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7483,
        7535
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "1861": {
      "op": "POP"
    },
    "1862": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1864": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1866": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1868": {
      "op": "SHL"
    },
    "1869": {
      "op": "SUB"
    },
    "1870": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "DUP1",
      "path": "6"
    },
    "1871": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "DUP3",
      "path": "6"
    },
    "1872": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "AND",
      "path": "6"
    },
    "1873": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4485,
        4489
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "1875": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "1876": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "DUP2",
      "path": "6"
    },
    "1877": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1878": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4526
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x5"
    },
    "1880": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "1882": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "1883": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "DUP2",
      "path": "6"
    },
    "1884": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1885": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "1887": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "DUP1",
      "path": "6"
    },
    "1888": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "DUP4",
      "path": "6"
    },
    "1889": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4533
      ],
      "op": "KECCAK256",
      "path": "6"
    },
    "1890": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "SWAP4",
      "path": "6"
    },
    "1891": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "DUP9",
      "path": "6"
    },
    "1892": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "AND",
      "path": "6"
    },
    "1893": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "DUP4",
      "path": "6"
    },
    "1894": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1895": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "SWAP3",
      "path": "6"
    },
    "1896": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "1897": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1898": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "KECCAK256",
      "path": "6"
    },
    "1899": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "SLOAD",
      "path": "6"
    },
    "1900": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0xFF"
    },
    "1902": {
      "fn": "ERC721.isApprovedForAll",
      "offset": [
        4508,
        4543
      ],
      "op": "AND",
      "path": "6"
    },
    "1903": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7503,
        7535
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1904": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7483,
        7570
      ],
      "op": "DUP1",
      "path": "6"
    },
    "1905": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7483,
        7570
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x793"
    },
    "1908": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7483,
        7570
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "1909": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7483,
        7570
      ],
      "op": "POP",
      "path": "6"
    },
    "1910": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7563,
        7570
      ],
      "op": "DUP4",
      "path": "6"
    },
    "1911": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1913": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1915": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1917": {
      "op": "SHL"
    },
    "1918": {
      "op": "SUB"
    },
    "1919": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7539,
        7570
      ],
      "op": "AND",
      "path": "6"
    },
    "1920": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7539,
        7559
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x788"
    },
    "1923": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7551,
        7558
      ],
      "op": "DUP5",
      "path": "6"
    },
    "1924": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7539,
        7550
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x30E"
    },
    "1927": {
      "fn": "ERC721._isApprovedOrOwner",
      "jump": "i",
      "offset": [
        7539,
        7559
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1928": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7539,
        7559
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1929": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1931": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1933": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1935": {
      "op": "SHL"
    },
    "1936": {
      "op": "SUB"
    },
    "1937": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7539,
        7570
      ],
      "op": "AND",
      "path": "6"
    },
    "1938": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7539,
        7570
      ],
      "op": "EQ",
      "path": "6"
    },
    "1939": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7483,
        7570
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1940": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7475,
        7571
      ],
      "op": "SWAP5",
      "path": "6"
    },
    "1941": {
      "fn": "ERC721._isApprovedOrOwner",
      "offset": [
        7317,
        7578
      ],
      "op": "SWAP4",
      "path": "6"
    },
    "1942": {
      "op": "POP"
    },
    "1943": {
      "op": "POP"
    },
    "1944": {
      "op": "POP"
    },
    "1945": {
      "op": "POP"
    },
    "1946": {
      "fn": "ERC721._isApprovedOrOwner",
      "jump": "o",
      "offset": [
        7317,
        7578
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1947": {
      "fn": "ERC721._transfer",
      "offset": [
        10242,
        10847
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1948": {
      "fn": "ERC721._transfer",
      "offset": [
        10396,
        10400
      ],
      "op": "DUP3",
      "path": "6",
      "statement": 28
    },
    "1949": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1951": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1953": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1955": {
      "op": "SHL"
    },
    "1956": {
      "op": "SUB"
    },
    "1957": {
      "fn": "ERC721._transfer",
      "offset": [
        10369,
        10400
      ],
      "op": "AND",
      "path": "6"
    },
    "1958": {
      "fn": "ERC721._transfer",
      "offset": [
        10369,
        10392
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x7AE"
    },
    "1961": {
      "fn": "ERC721._transfer",
      "offset": [
        10384,
        10391
      ],
      "op": "DUP3",
      "path": "6"
    },
    "1962": {
      "fn": "ERC721._transfer",
      "offset": [
        10369,
        10383
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x49C"
    },
    "1965": {
      "fn": "ERC721._transfer",
      "jump": "i",
      "offset": [
        10369,
        10392
      ],
      "op": "JUMP",
      "path": "6"
    },
    "1966": {
      "fn": "ERC721._transfer",
      "offset": [
        10369,
        10392
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "1967": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1969": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "1971": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "1973": {
      "op": "SHL"
    },
    "1974": {
      "op": "SUB"
    },
    "1975": {
      "fn": "ERC721._transfer",
      "offset": [
        10369,
        10400
      ],
      "op": "AND",
      "path": "6"
    },
    "1976": {
      "branch": 59,
      "fn": "ERC721._transfer",
      "offset": [
        10369,
        10400
      ],
      "op": "EQ",
      "path": "6"
    },
    "1977": {
      "fn": "ERC721._transfer",
      "offset": [
        10361,
        10442
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x812"
    },
    "1980": {
      "branch": 59,
      "fn": "ERC721._transfer",
      "offset": [
        10361,
        10442
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "1981": {
      "fn": "ERC721._transfer",
      "offset": [
        10361,
        10442
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "1983": {
      "fn": "ERC721._transfer",
      "offset": [
        10361,
        10442
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "1984": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "1988": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "1990": {
      "op": "SHL"
    },
    "1991": {
      "fn": "ERC721._transfer",
      "offset": [
        10361,
        10442
      ],
      "op": "DUP2",
      "path": "6"
    },
    "1992": {
      "fn": "ERC721._transfer",
      "offset": [
        10361,
        10442
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "1993": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "1995": {
      "fn": "ERC721._transfer",
      "offset": [
        10361,
        10442
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "1997": {
      "fn": "ERC721._transfer",
      "offset": [
        10361,
        10442
      ],
      "op": "DUP3",
      "path": "6"
    },
    "1998": {
      "fn": "ERC721._transfer",
      "offset": [
        10361,
        10442
      ],
      "op": "ADD",
      "path": "6"
    },
    "1999": {
      "op": "MSTORE"
    },
    "2000": {
      "op": "PUSH1",
      "value": "0x25"
    },
    "2002": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "2004": {
      "op": "DUP3"
    },
    "2005": {
      "op": "ADD"
    },
    "2006": {
      "op": "MSTORE"
    },
    "2007": {
      "op": "PUSH32",
      "value": "0x4552433732313A207472616E736665722066726F6D20696E636F727265637420"
    },
    "2040": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "2042": {
      "op": "DUP3"
    },
    "2043": {
      "op": "ADD"
    },
    "2044": {
      "op": "MSTORE"
    },
    "2045": {
      "op": "PUSH5",
      "value": "0x37BBB732B9"
    },
    "2051": {
      "op": "PUSH1",
      "value": "0xD9"
    },
    "2053": {
      "op": "SHL"
    },
    "2054": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "2056": {
      "op": "DUP3"
    },
    "2057": {
      "op": "ADD"
    },
    "2058": {
      "op": "MSTORE"
    },
    "2059": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "2061": {
      "op": "ADD"
    },
    "2062": {
      "fn": "ERC721._transfer",
      "offset": [
        10361,
        10442
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x3AA"
    },
    "2065": {
      "op": "JUMP"
    },
    "2066": {
      "fn": "ERC721._transfer",
      "offset": [
        10361,
        10442
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "2067": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2069": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2071": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2073": {
      "op": "SHL"
    },
    "2074": {
      "op": "SUB"
    },
    "2075": {
      "fn": "ERC721._transfer",
      "offset": [
        10460,
        10476
      ],
      "op": "DUP3",
      "path": "6",
      "statement": 29
    },
    "2076": {
      "branch": 60,
      "fn": "ERC721._transfer",
      "offset": [
        10460,
        10476
      ],
      "op": "AND",
      "path": "6"
    },
    "2077": {
      "fn": "ERC721._transfer",
      "offset": [
        10452,
        10517
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x874"
    },
    "2080": {
      "branch": 60,
      "fn": "ERC721._transfer",
      "offset": [
        10452,
        10517
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "2081": {
      "fn": "ERC721._transfer",
      "offset": [
        10452,
        10517
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "2083": {
      "fn": "ERC721._transfer",
      "offset": [
        10452,
        10517
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "2084": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "2088": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "2090": {
      "op": "SHL"
    },
    "2091": {
      "fn": "ERC721._transfer",
      "offset": [
        10452,
        10517
      ],
      "op": "DUP2",
      "path": "6"
    },
    "2092": {
      "fn": "ERC721._transfer",
      "offset": [
        10452,
        10517
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "2093": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "2095": {
      "fn": "ERC721._transfer",
      "offset": [
        10452,
        10517
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "2097": {
      "fn": "ERC721._transfer",
      "offset": [
        10452,
        10517
      ],
      "op": "DUP3",
      "path": "6"
    },
    "2098": {
      "fn": "ERC721._transfer",
      "offset": [
        10452,
        10517
      ],
      "op": "ADD",
      "path": "6"
    },
    "2099": {
      "op": "MSTORE"
    },
    "2100": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "2102": {
      "op": "DUP1"
    },
    "2103": {
      "op": "DUP3"
    },
    "2104": {
      "op": "ADD"
    },
    "2105": {
      "op": "MSTORE"
    },
    "2106": {
      "op": "PUSH32",
      "value": "0x4552433732313A207472616E7366657220746F20746865207A65726F20616464"
    },
    "2139": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "2141": {
      "op": "DUP3"
    },
    "2142": {
      "op": "ADD"
    },
    "2143": {
      "op": "MSTORE"
    },
    "2144": {
      "op": "PUSH4",
      "value": "0x72657373"
    },
    "2149": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "2151": {
      "op": "SHL"
    },
    "2152": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "2154": {
      "op": "DUP3"
    },
    "2155": {
      "op": "ADD"
    },
    "2156": {
      "op": "MSTORE"
    },
    "2157": {
      "op": "PUSH1",
      "value": "0x84"
    },
    "2159": {
      "op": "ADD"
    },
    "2160": {
      "fn": "ERC721._transfer",
      "offset": [
        10452,
        10517
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x3AA"
    },
    "2163": {
      "op": "JUMP"
    },
    "2164": {
      "fn": "ERC721._transfer",
      "offset": [
        10452,
        10517
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "2165": {
      "fn": "ERC721._transfer",
      "offset": [
        10629,
        10658
      ],
      "op": "PUSH2",
      "path": "6",
      "statement": 30,
      "value": "0x87F"
    },
    "2168": {
      "fn": "ERC721._transfer",
      "offset": [
        10646,
        10647
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "2170": {
      "fn": "ERC721._transfer",
      "offset": [
        10650,
        10657
      ],
      "op": "DUP3",
      "path": "6"
    },
    "2171": {
      "fn": "ERC721._transfer",
      "offset": [
        10629,
        10637
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x6AE"
    },
    "2174": {
      "fn": "ERC721._transfer",
      "jump": "i",
      "offset": [
        10629,
        10658
      ],
      "op": "JUMP",
      "path": "6"
    },
    "2175": {
      "fn": "ERC721._transfer",
      "offset": [
        10629,
        10658
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "2176": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2178": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2180": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2182": {
      "op": "SHL"
    },
    "2183": {
      "op": "SUB"
    },
    "2184": {
      "fn": "ERC721._transfer",
      "offset": [
        10669,
        10684
      ],
      "op": "DUP4",
      "path": "6",
      "statement": 31
    },
    "2185": {
      "fn": "ERC721._transfer",
      "offset": [
        10669,
        10684
      ],
      "op": "AND",
      "path": "6"
    },
    "2186": {
      "fn": "ERC721._transfer",
      "offset": [
        10669,
        10684
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "2188": {
      "fn": "ERC721._transfer",
      "offset": [
        10669,
        10684
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "2189": {
      "fn": "ERC721._transfer",
      "offset": [
        10669,
        10684
      ],
      "op": "DUP2",
      "path": "6"
    },
    "2190": {
      "fn": "ERC721._transfer",
      "offset": [
        10669,
        10684
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "2191": {
      "fn": "ERC721._transfer",
      "offset": [
        10669,
        10678
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x3"
    },
    "2193": {
      "fn": "ERC721._transfer",
      "offset": [
        10669,
        10684
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "2195": {
      "fn": "ERC721._transfer",
      "offset": [
        10669,
        10684
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "2196": {
      "fn": "ERC721._transfer",
      "offset": [
        10669,
        10684
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "2198": {
      "fn": "ERC721._transfer",
      "offset": [
        10669,
        10684
      ],
      "op": "DUP2",
      "path": "6"
    },
    "2199": {
      "fn": "ERC721._transfer",
      "offset": [
        10669,
        10684
      ],
      "op": "KECCAK256",
      "path": "6"
    },
    "2200": {
      "fn": "ERC721._transfer",
      "offset": [
        10669,
        10689
      ],
      "op": "DUP1",
      "path": "6"
    },
    "2201": {
      "fn": "ERC721._transfer",
      "offset": [
        10669,
        10689
      ],
      "op": "SLOAD",
      "path": "6"
    },
    "2202": {
      "fn": "ERC721._transfer",
      "offset": [
        10688,
        10689
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x1"
    },
    "2204": {
      "fn": "ERC721._transfer",
      "offset": [
        10688,
        10689
      ],
      "op": "SWAP3",
      "path": "6"
    },
    "2205": {
      "fn": "ERC721._transfer",
      "offset": [
        10669,
        10684
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "2206": {
      "fn": "ERC721._transfer",
      "offset": [
        10669,
        10689
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x8A8"
    },
    "2209": {
      "fn": "ERC721._transfer",
      "offset": [
        10669,
        10689
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "2210": {
      "fn": "ERC721._transfer",
      "offset": [
        10688,
        10689
      ],
      "op": "DUP5",
      "path": "6"
    },
    "2211": {
      "fn": "ERC721._transfer",
      "offset": [
        10688,
        10689
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "2212": {
      "fn": "ERC721._transfer",
      "offset": [
        10669,
        10689
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xFFE"
    },
    "2215": {
      "fn": "ERC721._transfer",
      "jump": "i",
      "offset": [
        10669,
        10689
      ],
      "op": "JUMP",
      "path": "6"
    },
    "2216": {
      "fn": "ERC721._transfer",
      "offset": [
        10669,
        10689
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "2217": {
      "fn": "ERC721._transfer",
      "offset": [
        10669,
        10689
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "2218": {
      "fn": "ERC721._transfer",
      "offset": [
        10669,
        10689
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "2219": {
      "fn": "ERC721._transfer",
      "offset": [
        10669,
        10689
      ],
      "op": "SSTORE",
      "path": "6"
    },
    "2220": {
      "op": "POP"
    },
    "2221": {
      "op": "POP"
    },
    "2222": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2224": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2226": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2228": {
      "op": "SHL"
    },
    "2229": {
      "op": "SUB"
    },
    "2230": {
      "fn": "ERC721._transfer",
      "offset": [
        10699,
        10712
      ],
      "op": "DUP3",
      "path": "6",
      "statement": 32
    },
    "2231": {
      "fn": "ERC721._transfer",
      "offset": [
        10699,
        10712
      ],
      "op": "AND",
      "path": "6"
    },
    "2232": {
      "fn": "ERC721._transfer",
      "offset": [
        10699,
        10712
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "2234": {
      "fn": "ERC721._transfer",
      "offset": [
        10699,
        10712
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "2235": {
      "fn": "ERC721._transfer",
      "offset": [
        10699,
        10712
      ],
      "op": "DUP2",
      "path": "6"
    },
    "2236": {
      "fn": "ERC721._transfer",
      "offset": [
        10699,
        10712
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "2237": {
      "fn": "ERC721._transfer",
      "offset": [
        10699,
        10708
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x3"
    },
    "2239": {
      "fn": "ERC721._transfer",
      "offset": [
        10699,
        10712
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "2241": {
      "fn": "ERC721._transfer",
      "offset": [
        10699,
        10712
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "2242": {
      "fn": "ERC721._transfer",
      "offset": [
        10699,
        10712
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "2244": {
      "fn": "ERC721._transfer",
      "offset": [
        10699,
        10712
      ],
      "op": "DUP2",
      "path": "6"
    },
    "2245": {
      "fn": "ERC721._transfer",
      "offset": [
        10699,
        10712
      ],
      "op": "KECCAK256",
      "path": "6"
    },
    "2246": {
      "fn": "ERC721._transfer",
      "offset": [
        10699,
        10717
      ],
      "op": "DUP1",
      "path": "6"
    },
    "2247": {
      "fn": "ERC721._transfer",
      "offset": [
        10699,
        10717
      ],
      "op": "SLOAD",
      "path": "6"
    },
    "2248": {
      "fn": "ERC721._transfer",
      "offset": [
        10716,
        10717
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x1"
    },
    "2250": {
      "fn": "ERC721._transfer",
      "offset": [
        10716,
        10717
      ],
      "op": "SWAP3",
      "path": "6"
    },
    "2251": {
      "fn": "ERC721._transfer",
      "offset": [
        10699,
        10712
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "2252": {
      "fn": "ERC721._transfer",
      "offset": [
        10699,
        10717
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x8D6"
    },
    "2255": {
      "fn": "ERC721._transfer",
      "offset": [
        10699,
        10717
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "2256": {
      "fn": "ERC721._transfer",
      "offset": [
        10716,
        10717
      ],
      "op": "DUP5",
      "path": "6"
    },
    "2257": {
      "fn": "ERC721._transfer",
      "offset": [
        10716,
        10717
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "2258": {
      "fn": "ERC721._transfer",
      "offset": [
        10699,
        10717
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xFD2"
    },
    "2261": {
      "fn": "ERC721._transfer",
      "jump": "i",
      "offset": [
        10699,
        10717
      ],
      "op": "JUMP",
      "path": "6"
    },
    "2262": {
      "fn": "ERC721._transfer",
      "offset": [
        10699,
        10717
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "2263": {
      "fn": "ERC721._transfer",
      "offset": [
        10699,
        10717
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "2264": {
      "fn": "ERC721._transfer",
      "offset": [
        10699,
        10717
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "2265": {
      "fn": "ERC721._transfer",
      "offset": [
        10699,
        10717
      ],
      "op": "SSTORE",
      "path": "6"
    },
    "2266": {
      "op": "POP"
    },
    "2267": {
      "op": "POP"
    },
    "2268": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10743
      ],
      "op": "PUSH1",
      "path": "6",
      "statement": 33,
      "value": "0x0"
    },
    "2270": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10743
      ],
      "op": "DUP2",
      "path": "6"
    },
    "2271": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10743
      ],
      "op": "DUP2",
      "path": "6"
    },
    "2272": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10743
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "2273": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10734
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x2"
    },
    "2275": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10743
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "2277": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10743
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "2278": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10743
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "2280": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10743
      ],
      "op": "DUP1",
      "path": "6"
    },
    "2281": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10743
      ],
      "op": "DUP3",
      "path": "6"
    },
    "2282": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10743
      ],
      "op": "KECCAK256",
      "path": "6"
    },
    "2283": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10748
      ],
      "op": "DUP1",
      "path": "6"
    },
    "2284": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10748
      ],
      "op": "SLOAD",
      "path": "6"
    },
    "2285": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2287": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2289": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2291": {
      "op": "SHL"
    },
    "2292": {
      "op": "SUB"
    },
    "2293": {
      "op": "NOT"
    },
    "2294": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10748
      ],
      "op": "AND",
      "path": "6"
    },
    "2295": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2297": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2299": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2301": {
      "op": "SHL"
    },
    "2302": {
      "op": "SUB"
    },
    "2303": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10748
      ],
      "op": "DUP7",
      "path": "6"
    },
    "2304": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10748
      ],
      "op": "DUP2",
      "path": "6"
    },
    "2305": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10748
      ],
      "op": "AND",
      "path": "6"
    },
    "2306": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10748
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "2307": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10748
      ],
      "op": "DUP3",
      "path": "6"
    },
    "2308": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10748
      ],
      "op": "OR",
      "path": "6"
    },
    "2309": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10748
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "2310": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10748
      ],
      "op": "SWAP3",
      "path": "6"
    },
    "2311": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10748
      ],
      "op": "SSTORE",
      "path": "6"
    },
    "2312": {
      "fn": "ERC721._transfer",
      "offset": [
        10764,
        10791
      ],
      "op": "SWAP2",
      "path": "6",
      "statement": 34
    },
    "2313": {
      "fn": "ERC721._transfer",
      "offset": [
        10764,
        10791
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "2314": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10743
      ],
      "op": "DUP5",
      "path": "6"
    },
    "2315": {
      "fn": "ERC721._transfer",
      "offset": [
        10727,
        10743
      ],
      "op": "SWAP4",
      "path": "6"
    },
    "2316": {
      "fn": "ERC721._transfer",
      "offset": [
        10764,
        10791
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "2317": {
      "fn": "ERC721._transfer",
      "offset": [
        10764,
        10791
      ],
      "op": "DUP8",
      "path": "6"
    },
    "2318": {
      "fn": "ERC721._transfer",
      "offset": [
        10764,
        10791
      ],
      "op": "AND",
      "path": "6"
    },
    "2319": {
      "fn": "ERC721._transfer",
      "offset": [
        10764,
        10791
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "2320": {
      "fn": "ERC721._transfer",
      "offset": [
        10764,
        10791
      ],
      "op": "PUSH32",
      "path": "6",
      "value": "0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF"
    },
    "2353": {
      "fn": "ERC721._transfer",
      "offset": [
        10764,
        10791
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "2354": {
      "fn": "ERC721._transfer",
      "offset": [
        10764,
        10791
      ],
      "op": "LOG4",
      "path": "6"
    },
    "2355": {
      "fn": "ERC721._transfer",
      "offset": [
        10802,
        10840
      ],
      "op": "PUSH2",
      "path": "6",
      "statement": 35,
      "value": "0x44B"
    },
    "2358": {
      "fn": "ERC721.approve",
      "offset": [
        3467,
        3874
      ],
      "op": "JUMP",
      "path": "6"
    },
    "2359": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11266,
        11573
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "2360": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11416,
        11424
      ],
      "op": "DUP2",
      "path": "6",
      "statement": 36
    },
    "2361": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2363": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2365": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2367": {
      "op": "SHL"
    },
    "2368": {
      "op": "SUB"
    },
    "2369": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11407,
        11424
      ],
      "op": "AND",
      "path": "6"
    },
    "2370": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11407,
        11412
      ],
      "op": "DUP4",
      "path": "6"
    },
    "2371": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2373": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2375": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2377": {
      "op": "SHL"
    },
    "2378": {
      "op": "SUB"
    },
    "2379": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11407,
        11424
      ],
      "op": "AND",
      "path": "6"
    },
    "2380": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11407,
        11424
      ],
      "op": "EQ",
      "path": "6"
    },
    "2381": {
      "branch": 61,
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11407,
        11424
      ],
      "op": "ISZERO",
      "path": "6"
    },
    "2382": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11399,
        11454
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x999"
    },
    "2385": {
      "branch": 61,
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11399,
        11454
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "2386": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11399,
        11454
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "2388": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11399,
        11454
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "2389": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "2393": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "2395": {
      "op": "SHL"
    },
    "2396": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11399,
        11454
      ],
      "op": "DUP2",
      "path": "6"
    },
    "2397": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11399,
        11454
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "2398": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "2400": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11399,
        11454
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "2402": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11399,
        11454
      ],
      "op": "DUP3",
      "path": "6"
    },
    "2403": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11399,
        11454
      ],
      "op": "ADD",
      "path": "6"
    },
    "2404": {
      "op": "MSTORE"
    },
    "2405": {
      "op": "PUSH1",
      "value": "0x19"
    },
    "2407": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "2409": {
      "op": "DUP3"
    },
    "2410": {
      "op": "ADD"
    },
    "2411": {
      "op": "MSTORE"
    },
    "2412": {
      "op": "PUSH32",
      "value": "0x4552433732313A20617070726F766520746F2063616C6C657200000000000000"
    },
    "2445": {
      "op": "PUSH1",
      "value": "0x44"
    },
    "2447": {
      "op": "DUP3"
    },
    "2448": {
      "op": "ADD"
    },
    "2449": {
      "op": "MSTORE"
    },
    "2450": {
      "op": "PUSH1",
      "value": "0x64"
    },
    "2452": {
      "op": "ADD"
    },
    "2453": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11399,
        11454
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x3AA"
    },
    "2456": {
      "op": "JUMP"
    },
    "2457": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11399,
        11454
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "2458": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2460": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2462": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2464": {
      "op": "SHL"
    },
    "2465": {
      "op": "SUB"
    },
    "2466": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11489
      ],
      "op": "DUP4",
      "path": "6",
      "statement": 37
    },
    "2467": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11489
      ],
      "op": "DUP2",
      "path": "6"
    },
    "2468": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11489
      ],
      "op": "AND",
      "path": "6"
    },
    "2469": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11489
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "2471": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11489
      ],
      "op": "DUP2",
      "path": "6"
    },
    "2472": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11489
      ],
      "op": "DUP2",
      "path": "6"
    },
    "2473": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11489
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "2474": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11482
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x5"
    },
    "2476": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11489
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "2478": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11489
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "2479": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11489
      ],
      "op": "DUP2",
      "path": "6"
    },
    "2480": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11489
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "2481": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11489
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "2483": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11489
      ],
      "op": "DUP1",
      "path": "6"
    },
    "2484": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11489
      ],
      "op": "DUP4",
      "path": "6"
    },
    "2485": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11489
      ],
      "op": "KECCAK256",
      "path": "6"
    },
    "2486": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11499
      ],
      "op": "SWAP5",
      "path": "6"
    },
    "2487": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11499
      ],
      "op": "DUP8",
      "path": "6"
    },
    "2488": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11499
      ],
      "op": "AND",
      "path": "6"
    },
    "2489": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11499
      ],
      "op": "DUP1",
      "path": "6"
    },
    "2490": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11499
      ],
      "op": "DUP5",
      "path": "6"
    },
    "2491": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11499
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "2492": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11499
      ],
      "op": "SWAP5",
      "path": "6"
    },
    "2493": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11499
      ],
      "op": "DUP3",
      "path": "6"
    },
    "2494": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11499
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "2495": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11499
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "2496": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11499
      ],
      "op": "DUP3",
      "path": "6"
    },
    "2497": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11499
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "2498": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11499
      ],
      "op": "KECCAK256",
      "path": "6"
    },
    "2499": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11510
      ],
      "op": "DUP1",
      "path": "6"
    },
    "2500": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11510
      ],
      "op": "SLOAD",
      "path": "6"
    },
    "2501": {
      "op": "PUSH1",
      "value": "0xFF"
    },
    "2503": {
      "op": "NOT"
    },
    "2504": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11510
      ],
      "op": "AND",
      "path": "6"
    },
    "2505": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11510
      ],
      "op": "DUP7",
      "path": "6"
    },
    "2506": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11510
      ],
      "op": "ISZERO",
      "path": "6"
    },
    "2507": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11510
      ],
      "op": "ISZERO",
      "path": "6"
    },
    "2508": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11510
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "2509": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11510
      ],
      "op": "DUP2",
      "path": "6"
    },
    "2510": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11510
      ],
      "op": "OR",
      "path": "6"
    },
    "2511": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11510
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "2512": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11510
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "2513": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11464,
        11510
      ],
      "op": "SSTORE",
      "path": "6"
    },
    "2514": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11525,
        11566
      ],
      "op": "SWAP2",
      "path": "6",
      "statement": 38
    },
    "2515": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11525,
        11566
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "2516": {
      "op": "SWAP2"
    },
    "2517": {
      "op": "DUP3"
    },
    "2518": {
      "op": "MSTORE"
    },
    "2519": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11525,
        11566
      ],
      "op": "PUSH32",
      "path": "6",
      "value": "0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31"
    },
    "2552": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11525,
        11566
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "2553": {
      "op": "ADD"
    },
    "2554": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11525,
        11566
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "2556": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11525,
        11566
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "2557": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11525,
        11566
      ],
      "op": "DUP1",
      "path": "6"
    },
    "2558": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11525,
        11566
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "2559": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11525,
        11566
      ],
      "op": "SUB",
      "path": "6"
    },
    "2560": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11525,
        11566
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "2561": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11525,
        11566
      ],
      "op": "LOG3",
      "path": "6"
    },
    "2562": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11266,
        11573
      ],
      "op": "POP",
      "path": "6"
    },
    "2563": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11266,
        11573
      ],
      "op": "POP",
      "path": "6"
    },
    "2564": {
      "fn": "ERC721._setApprovalForAll",
      "offset": [
        11266,
        11573
      ],
      "op": "POP",
      "path": "6"
    },
    "2565": {
      "fn": "ERC721._setApprovalForAll",
      "jump": "o",
      "offset": [
        11266,
        11573
      ],
      "op": "JUMP",
      "path": "6"
    },
    "2566": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6426,
        6731
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "2567": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6576,
        6604
      ],
      "op": "PUSH2",
      "path": "6",
      "statement": 39,
      "value": "0xA11"
    },
    "2570": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6586,
        6590
      ],
      "op": "DUP5",
      "path": "6"
    },
    "2571": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6592,
        6594
      ],
      "op": "DUP5",
      "path": "6"
    },
    "2572": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6596,
        6603
      ],
      "op": "DUP5",
      "path": "6"
    },
    "2573": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6576,
        6585
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x79B"
    },
    "2576": {
      "fn": "ERC721._safeTransfer",
      "jump": "i",
      "offset": [
        6576,
        6604
      ],
      "op": "JUMP",
      "path": "6"
    },
    "2577": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6576,
        6604
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "2578": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6622,
        6669
      ],
      "op": "PUSH2",
      "path": "6",
      "statement": 40,
      "value": "0xA1D"
    },
    "2581": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6645,
        6649
      ],
      "op": "DUP5",
      "path": "6"
    },
    "2582": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6651,
        6653
      ],
      "op": "DUP5",
      "path": "6"
    },
    "2583": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6655,
        6662
      ],
      "op": "DUP5",
      "path": "6"
    },
    "2584": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6664,
        6668
      ],
      "op": "DUP5",
      "path": "6"
    },
    "2585": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6622,
        6644
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xB54"
    },
    "2588": {
      "fn": "ERC721._safeTransfer",
      "jump": "i",
      "offset": [
        6622,
        6669
      ],
      "op": "JUMP",
      "path": "6"
    },
    "2589": {
      "branch": 62,
      "fn": "ERC721._safeTransfer",
      "offset": [
        6622,
        6669
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "2590": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6614,
        6724
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x5D2"
    },
    "2593": {
      "branch": 62,
      "fn": "ERC721._safeTransfer",
      "offset": [
        6614,
        6724
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "2594": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6614,
        6724
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "2596": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6614,
        6724
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "2597": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "2601": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "2603": {
      "op": "SHL"
    },
    "2604": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6614,
        6724
      ],
      "op": "DUP2",
      "path": "6"
    },
    "2605": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6614,
        6724
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "2606": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6614,
        6724
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "2608": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6614,
        6724
      ],
      "op": "ADD",
      "path": "6"
    },
    "2609": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6614,
        6724
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x3AA"
    },
    "2612": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6614,
        6724
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "2613": {
      "fn": "ERC721._safeTransfer",
      "offset": [
        6614,
        6724
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xF32"
    },
    "2616": {
      "fn": "ERC721._safeTransfer",
      "jump": "i",
      "offset": [
        6614,
        6724
      ],
      "op": "JUMP",
      "path": "6"
    },
    "2617": {
      "fn": "Strings.toString",
      "offset": [
        392,
        1095
      ],
      "op": "JUMPDEST",
      "path": "12"
    },
    "2618": {
      "fn": "Strings.toString",
      "offset": [
        448,
        461
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x60"
    },
    "2620": {
      "branch": 63,
      "fn": "Strings.toString",
      "offset": [
        665,
        675
      ],
      "op": "DUP2",
      "path": "12"
    },
    "2621": {
      "fn": "Strings.toString",
      "offset": [
        661,
        712
      ],
      "op": "PUSH2",
      "path": "12",
      "value": "0xA5E"
    },
    "2624": {
      "branch": 63,
      "fn": "Strings.toString",
      "offset": [
        661,
        712
      ],
      "op": "JUMPI",
      "path": "12"
    },
    "2625": {
      "op": "POP"
    },
    "2626": {
      "fn": "Strings.toString",
      "offset": [
        691,
        701
      ],
      "op": "PUSH1",
      "path": "12",
      "statement": 41,
      "value": "0x40"
    },
    "2628": {
      "fn": "Strings.toString",
      "offset": [
        691,
        701
      ],
      "op": "DUP1",
      "path": "12"
    },
    "2629": {
      "fn": "Strings.toString",
      "offset": [
        691,
        701
      ],
      "op": "MLOAD",
      "path": "12"
    },
    "2630": {
      "fn": "Strings.toString",
      "offset": [
        691,
        701
      ],
      "op": "DUP1",
      "path": "12"
    },
    "2631": {
      "fn": "Strings.toString",
      "offset": [
        691,
        701
      ],
      "op": "DUP3",
      "path": "12"
    },
    "2632": {
      "fn": "Strings.toString",
      "offset": [
        691,
        701
      ],
      "op": "ADD",
      "path": "12"
    },
    "2633": {
      "fn": "Strings.toString",
      "offset": [
        691,
        701
      ],
      "op": "SWAP1",
      "path": "12"
    },
    "2634": {
      "fn": "Strings.toString",
      "offset": [
        691,
        701
      ],
      "op": "SWAP2",
      "path": "12"
    },
    "2635": {
      "fn": "Strings.toString",
      "offset": [
        691,
        701
      ],
      "op": "MSTORE",
      "path": "12"
    },
    "2636": {
      "fn": "Strings.toString",
      "offset": [
        691,
        701
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x1"
    },
    "2638": {
      "fn": "Strings.toString",
      "offset": [
        691,
        701
      ],
      "op": "DUP2",
      "path": "12"
    },
    "2639": {
      "fn": "Strings.toString",
      "offset": [
        691,
        701
      ],
      "op": "MSTORE",
      "path": "12"
    },
    "2640": {
      "op": "PUSH1",
      "value": "0x3"
    },
    "2642": {
      "op": "PUSH1",
      "value": "0xFC"
    },
    "2644": {
      "op": "SHL"
    },
    "2645": {
      "fn": "Strings.toString",
      "offset": [
        691,
        701
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x20"
    },
    "2647": {
      "fn": "Strings.toString",
      "offset": [
        691,
        701
      ],
      "op": "DUP3",
      "path": "12"
    },
    "2648": {
      "fn": "Strings.toString",
      "offset": [
        691,
        701
      ],
      "op": "ADD",
      "path": "12"
    },
    "2649": {
      "fn": "Strings.toString",
      "offset": [
        691,
        701
      ],
      "op": "MSTORE",
      "path": "12"
    },
    "2650": {
      "fn": "Strings.toString",
      "offset": [
        691,
        701
      ],
      "op": "PUSH2",
      "path": "12",
      "value": "0x277"
    },
    "2653": {
      "fn": "Strings.toString",
      "offset": [
        691,
        701
      ],
      "op": "JUMP",
      "path": "12"
    },
    "2654": {
      "fn": "Strings.toString",
      "offset": [
        661,
        712
      ],
      "op": "JUMPDEST",
      "path": "12"
    },
    "2655": {
      "fn": "Strings.toString",
      "offset": [
        736,
        741
      ],
      "op": "DUP2",
      "path": "12"
    },
    "2656": {
      "fn": "Strings.toString",
      "offset": [
        721,
        733
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x0"
    },
    "2658": {
      "fn": "Strings.toString",
      "offset": [
        775,
        850
      ],
      "op": "JUMPDEST",
      "path": "12"
    },
    "2659": {
      "fn": "Strings.toString",
      "offset": [
        782,
        791
      ],
      "op": "DUP2",
      "path": "12"
    },
    "2660": {
      "fn": "Strings.toString",
      "offset": [
        782,
        791
      ],
      "op": "ISZERO",
      "path": "12"
    },
    "2661": {
      "fn": "Strings.toString",
      "offset": [
        775,
        850
      ],
      "op": "PUSH2",
      "path": "12",
      "value": "0xA88"
    },
    "2664": {
      "fn": "Strings.toString",
      "offset": [
        775,
        850
      ],
      "op": "JUMPI",
      "path": "12"
    },
    "2665": {
      "fn": "Strings.toString",
      "offset": [
        807,
        815
      ],
      "op": "DUP1",
      "path": "12",
      "statement": 42
    },
    "2666": {
      "fn": "Strings.toString",
      "offset": [
        807,
        815
      ],
      "op": "PUSH2",
      "path": "12",
      "value": "0xA72"
    },
    "2669": {
      "fn": "Strings.toString",
      "offset": [
        807,
        815
      ],
      "op": "DUP2",
      "path": "12"
    },
    "2670": {
      "fn": "Strings.toString",
      "offset": [
        807,
        815
      ],
      "op": "PUSH2",
      "path": "12",
      "value": "0x107C"
    },
    "2673": {
      "fn": "Strings.toString",
      "jump": "i",
      "offset": [
        807,
        815
      ],
      "op": "JUMP",
      "path": "12"
    },
    "2674": {
      "fn": "Strings.toString",
      "offset": [
        807,
        815
      ],
      "op": "JUMPDEST",
      "path": "12"
    },
    "2675": {
      "fn": "Strings.toString",
      "offset": [
        807,
        815
      ],
      "op": "SWAP2",
      "path": "12"
    },
    "2676": {
      "op": "POP"
    },
    "2677": {
      "fn": "Strings.toString",
      "offset": [
        829,
        839
      ],
      "op": "PUSH2",
      "path": "12",
      "statement": 43,
      "value": "0xA81"
    },
    "2680": {
      "fn": "Strings.toString",
      "offset": [
        829,
        839
      ],
      "op": "SWAP1",
      "path": "12"
    },
    "2681": {
      "op": "POP"
    },
    "2682": {
      "fn": "Strings.toString",
      "offset": [
        837,
        839
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0xA"
    },
    "2684": {
      "fn": "Strings.toString",
      "offset": [
        829,
        839
      ],
      "op": "DUP4",
      "path": "12"
    },
    "2685": {
      "fn": "Strings.toString",
      "offset": [
        829,
        839
      ],
      "op": "PUSH2",
      "path": "12",
      "value": "0xFEA"
    },
    "2688": {
      "fn": "Strings.toString",
      "jump": "i",
      "offset": [
        829,
        839
      ],
      "op": "JUMP",
      "path": "12"
    },
    "2689": {
      "fn": "Strings.toString",
      "offset": [
        829,
        839
      ],
      "op": "JUMPDEST",
      "path": "12"
    },
    "2690": {
      "fn": "Strings.toString",
      "offset": [
        829,
        839
      ],
      "op": "SWAP2",
      "path": "12"
    },
    "2691": {
      "fn": "Strings.toString",
      "offset": [
        829,
        839
      ],
      "op": "POP",
      "path": "12"
    },
    "2692": {
      "fn": "Strings.toString",
      "offset": [
        775,
        850
      ],
      "op": "PUSH2",
      "path": "12",
      "value": "0xA62"
    },
    "2695": {
      "fn": "Strings.toString",
      "offset": [
        775,
        850
      ],
      "op": "JUMP",
      "path": "12"
    },
    "2696": {
      "fn": "Strings.toString",
      "offset": [
        775,
        850
      ],
      "op": "JUMPDEST",
      "path": "12"
    },
    "2697": {
      "fn": "Strings.toString",
      "offset": [
        859,
        878
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x0"
    },
    "2699": {
      "fn": "Strings.toString",
      "offset": [
        891,
        897
      ],
      "op": "DUP2",
      "path": "12"
    },
    "2700": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "PUSH8",
      "path": "12",
      "value": "0xFFFFFFFFFFFFFFFF"
    },
    "2709": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "DUP2",
      "path": "12"
    },
    "2710": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "GT",
      "path": "12"
    },
    "2711": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "ISZERO",
      "path": "12"
    },
    "2712": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "PUSH2",
      "path": "12",
      "value": "0xAB1"
    },
    "2715": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "JUMPI",
      "path": "12"
    },
    "2716": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "2721": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "2723": {
      "op": "SHL"
    },
    "2724": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x0"
    },
    "2726": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "MSTORE",
      "path": "12"
    },
    "2727": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x41"
    },
    "2729": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x4"
    },
    "2731": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "MSTORE",
      "path": "12"
    },
    "2732": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x24"
    },
    "2734": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x0"
    },
    "2736": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "REVERT",
      "path": "12"
    },
    "2737": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "JUMPDEST",
      "path": "12"
    },
    "2738": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x40"
    },
    "2740": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "MLOAD",
      "path": "12"
    },
    "2741": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "SWAP1",
      "path": "12"
    },
    "2742": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "DUP1",
      "path": "12"
    },
    "2743": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "DUP3",
      "path": "12"
    },
    "2744": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "MSTORE",
      "path": "12"
    },
    "2745": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "DUP1",
      "path": "12"
    },
    "2746": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x1F"
    },
    "2748": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "ADD",
      "path": "12"
    },
    "2749": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x1F"
    },
    "2751": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "NOT",
      "path": "12"
    },
    "2752": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "AND",
      "path": "12"
    },
    "2753": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x20"
    },
    "2755": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "ADD",
      "path": "12"
    },
    "2756": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "DUP3",
      "path": "12"
    },
    "2757": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "ADD",
      "path": "12"
    },
    "2758": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x40"
    },
    "2760": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "MSTORE",
      "path": "12"
    },
    "2761": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "DUP1",
      "path": "12"
    },
    "2762": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "ISZERO",
      "path": "12"
    },
    "2763": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "PUSH2",
      "path": "12",
      "value": "0xADB"
    },
    "2766": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "JUMPI",
      "path": "12"
    },
    "2767": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x20"
    },
    "2769": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "DUP3",
      "path": "12"
    },
    "2770": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "ADD",
      "path": "12"
    },
    "2771": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "DUP2",
      "path": "12"
    },
    "2772": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "DUP1",
      "path": "12"
    },
    "2773": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "CALLDATASIZE",
      "path": "12"
    },
    "2774": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "DUP4",
      "path": "12"
    },
    "2775": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "CALLDATACOPY",
      "path": "12"
    },
    "2776": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "ADD",
      "path": "12"
    },
    "2777": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "SWAP1",
      "path": "12"
    },
    "2778": {
      "op": "POP"
    },
    "2779": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "JUMPDEST",
      "path": "12"
    },
    "2780": {
      "fn": "Strings.toString",
      "offset": [
        881,
        898
      ],
      "op": "POP",
      "path": "12"
    },
    "2781": {
      "fn": "Strings.toString",
      "offset": [
        859,
        898
      ],
      "op": "SWAP1",
      "path": "12"
    },
    "2782": {
      "fn": "Strings.toString",
      "offset": [
        859,
        898
      ],
      "op": "POP",
      "path": "12"
    },
    "2783": {
      "fn": "Strings.toString",
      "offset": [
        908,
        1058
      ],
      "op": "JUMPDEST",
      "path": "12"
    },
    "2784": {
      "fn": "Strings.toString",
      "offset": [
        915,
        925
      ],
      "op": "DUP5",
      "path": "12"
    },
    "2785": {
      "fn": "Strings.toString",
      "offset": [
        915,
        925
      ],
      "op": "ISZERO",
      "path": "12"
    },
    "2786": {
      "fn": "Strings.toString",
      "offset": [
        908,
        1058
      ],
      "op": "PUSH2",
      "path": "12",
      "value": "0x793"
    },
    "2789": {
      "fn": "Strings.toString",
      "offset": [
        908,
        1058
      ],
      "op": "JUMPI",
      "path": "12"
    },
    "2790": {
      "fn": "Strings.toString",
      "offset": [
        941,
        952
      ],
      "op": "PUSH2",
      "path": "12",
      "statement": 44,
      "value": "0xAF0"
    },
    "2793": {
      "fn": "Strings.toString",
      "offset": [
        951,
        952
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x1"
    },
    "2795": {
      "fn": "Strings.toString",
      "offset": [
        941,
        952
      ],
      "op": "DUP4",
      "path": "12"
    },
    "2796": {
      "fn": "Strings.toString",
      "offset": [
        941,
        952
      ],
      "op": "PUSH2",
      "path": "12",
      "value": "0xFFE"
    },
    "2799": {
      "fn": "Strings.toString",
      "jump": "i",
      "offset": [
        941,
        952
      ],
      "op": "JUMP",
      "path": "12"
    },
    "2800": {
      "fn": "Strings.toString",
      "offset": [
        941,
        952
      ],
      "op": "JUMPDEST",
      "path": "12"
    },
    "2801": {
      "fn": "Strings.toString",
      "offset": [
        941,
        952
      ],
      "op": "SWAP2",
      "path": "12"
    },
    "2802": {
      "op": "POP"
    },
    "2803": {
      "fn": "Strings.toString",
      "offset": [
        1009,
        1019
      ],
      "op": "PUSH2",
      "path": "12",
      "statement": 45,
      "value": "0xAFD"
    },
    "2806": {
      "fn": "Strings.toString",
      "offset": [
        1017,
        1019
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0xA"
    },
    "2808": {
      "fn": "Strings.toString",
      "offset": [
        1009,
        1014
      ],
      "op": "DUP7",
      "path": "12"
    },
    "2809": {
      "fn": "Strings.toString",
      "offset": [
        1009,
        1019
      ],
      "op": "PUSH2",
      "path": "12",
      "value": "0x1097"
    },
    "2812": {
      "fn": "Strings.toString",
      "jump": "i",
      "offset": [
        1009,
        1019
      ],
      "op": "JUMP",
      "path": "12"
    },
    "2813": {
      "fn": "Strings.toString",
      "offset": [
        1009,
        1019
      ],
      "op": "JUMPDEST",
      "path": "12"
    },
    "2814": {
      "fn": "Strings.toString",
      "offset": [
        996,
        1020
      ],
      "op": "PUSH2",
      "path": "12",
      "value": "0xB08"
    },
    "2817": {
      "fn": "Strings.toString",
      "offset": [
        996,
        1020
      ],
      "op": "SWAP1",
      "path": "12"
    },
    "2818": {
      "fn": "Strings.toString",
      "offset": [
        996,
        998
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x30"
    },
    "2820": {
      "fn": "Strings.toString",
      "offset": [
        996,
        1020
      ],
      "op": "PUSH2",
      "path": "12",
      "value": "0xFD2"
    },
    "2823": {
      "fn": "Strings.toString",
      "jump": "i",
      "offset": [
        996,
        1020
      ],
      "op": "JUMP",
      "path": "12"
    },
    "2824": {
      "fn": "Strings.toString",
      "offset": [
        996,
        1020
      ],
      "op": "JUMPDEST",
      "path": "12"
    },
    "2825": {
      "fn": "Strings.toString",
      "offset": [
        983,
        1022
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0xF8"
    },
    "2827": {
      "fn": "Strings.toString",
      "offset": [
        983,
        1022
      ],
      "op": "SHL",
      "path": "12"
    },
    "2828": {
      "fn": "Strings.toString",
      "offset": [
        966,
        972
      ],
      "op": "DUP2",
      "path": "12"
    },
    "2829": {
      "fn": "Strings.toString",
      "offset": [
        973,
        979
      ],
      "op": "DUP4",
      "path": "12"
    },
    "2830": {
      "fn": "Strings.toString",
      "offset": [
        966,
        980
      ],
      "op": "DUP2",
      "path": "12"
    },
    "2831": {
      "fn": "Strings.toString",
      "offset": [
        966,
        980
      ],
      "op": "MLOAD",
      "path": "12"
    },
    "2832": {
      "fn": "Strings.toString",
      "offset": [
        966,
        980
      ],
      "op": "DUP2",
      "path": "12"
    },
    "2833": {
      "fn": "Strings.toString",
      "offset": [
        966,
        980
      ],
      "op": "LT",
      "path": "12"
    },
    "2834": {
      "fn": "Strings.toString",
      "offset": [
        966,
        980
      ],
      "op": "PUSH2",
      "path": "12",
      "value": "0xB2B"
    },
    "2837": {
      "fn": "Strings.toString",
      "offset": [
        966,
        980
      ],
      "op": "JUMPI",
      "path": "12"
    },
    "2838": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "2843": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "2845": {
      "op": "SHL"
    },
    "2846": {
      "fn": "Strings.toString",
      "offset": [
        966,
        980
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x0"
    },
    "2848": {
      "fn": "Strings.toString",
      "offset": [
        966,
        980
      ],
      "op": "MSTORE",
      "path": "12"
    },
    "2849": {
      "fn": "Strings.toString",
      "offset": [
        966,
        980
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x32"
    },
    "2851": {
      "fn": "Strings.toString",
      "offset": [
        966,
        980
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x4"
    },
    "2853": {
      "fn": "Strings.toString",
      "offset": [
        966,
        980
      ],
      "op": "MSTORE",
      "path": "12"
    },
    "2854": {
      "fn": "Strings.toString",
      "offset": [
        966,
        980
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x24"
    },
    "2856": {
      "fn": "Strings.toString",
      "offset": [
        966,
        980
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x0"
    },
    "2858": {
      "fn": "Strings.toString",
      "offset": [
        966,
        980
      ],
      "op": "REVERT",
      "path": "12"
    },
    "2859": {
      "fn": "Strings.toString",
      "offset": [
        966,
        980
      ],
      "op": "JUMPDEST",
      "path": "12"
    },
    "2860": {
      "fn": "Strings.toString",
      "offset": [
        966,
        980
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x20"
    },
    "2862": {
      "fn": "Strings.toString",
      "offset": [
        966,
        980
      ],
      "op": "ADD",
      "path": "12"
    },
    "2863": {
      "fn": "Strings.toString",
      "offset": [
        966,
        980
      ],
      "op": "ADD",
      "path": "12"
    },
    "2864": {
      "fn": "Strings.toString",
      "offset": [
        966,
        1022
      ],
      "op": "SWAP1",
      "path": "12"
    },
    "2865": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2867": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2869": {
      "op": "PUSH1",
      "value": "0xF8"
    },
    "2871": {
      "op": "SHL"
    },
    "2872": {
      "op": "SUB"
    },
    "2873": {
      "fn": "Strings.toString",
      "offset": [
        966,
        1022
      ],
      "op": "NOT",
      "path": "12"
    },
    "2874": {
      "fn": "Strings.toString",
      "offset": [
        966,
        1022
      ],
      "op": "AND",
      "path": "12"
    },
    "2875": {
      "fn": "Strings.toString",
      "offset": [
        966,
        1022
      ],
      "op": "SWAP1",
      "path": "12"
    },
    "2876": {
      "fn": "Strings.toString",
      "offset": [
        966,
        1022
      ],
      "op": "DUP2",
      "path": "12"
    },
    "2877": {
      "fn": "Strings.toString",
      "offset": [
        966,
        1022
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0x0"
    },
    "2879": {
      "fn": "Strings.toString",
      "offset": [
        966,
        1022
      ],
      "op": "BYTE",
      "path": "12"
    },
    "2880": {
      "fn": "Strings.toString",
      "offset": [
        966,
        1022
      ],
      "op": "SWAP1",
      "path": "12"
    },
    "2881": {
      "fn": "Strings.toString",
      "offset": [
        966,
        1022
      ],
      "op": "MSTORE8",
      "path": "12"
    },
    "2882": {
      "op": "POP"
    },
    "2883": {
      "fn": "Strings.toString",
      "offset": [
        1036,
        1047
      ],
      "op": "PUSH2",
      "path": "12",
      "statement": 46,
      "value": "0xB4D"
    },
    "2886": {
      "fn": "Strings.toString",
      "offset": [
        1045,
        1047
      ],
      "op": "PUSH1",
      "path": "12",
      "value": "0xA"
    },
    "2888": {
      "fn": "Strings.toString",
      "offset": [
        1036,
        1047
      ],
      "op": "DUP7",
      "path": "12"
    },
    "2889": {
      "fn": "Strings.toString",
      "offset": [
        1036,
        1047
      ],
      "op": "PUSH2",
      "path": "12",
      "value": "0xFEA"
    },
    "2892": {
      "fn": "Strings.toString",
      "jump": "i",
      "offset": [
        1036,
        1047
      ],
      "op": "JUMP",
      "path": "12"
    },
    "2893": {
      "fn": "Strings.toString",
      "offset": [
        1036,
        1047
      ],
      "op": "JUMPDEST",
      "path": "12"
    },
    "2894": {
      "fn": "Strings.toString",
      "offset": [
        1036,
        1047
      ],
      "op": "SWAP5",
      "path": "12"
    },
    "2895": {
      "fn": "Strings.toString",
      "offset": [
        1036,
        1047
      ],
      "op": "POP",
      "path": "12"
    },
    "2896": {
      "fn": "Strings.toString",
      "offset": [
        908,
        1058
      ],
      "op": "PUSH2",
      "path": "12",
      "value": "0xADF"
    },
    "2899": {
      "fn": "Strings.toString",
      "offset": [
        908,
        1058
      ],
      "op": "JUMP",
      "path": "12"
    },
    "2900": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12342,
        13173
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "2901": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12491,
        12495
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "2903": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2905": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2907": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2909": {
      "op": "SHL"
    },
    "2910": {
      "op": "SUB"
    },
    "2911": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12511,
        12524
      ],
      "op": "DUP5",
      "path": "6"
    },
    "2912": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12511,
        12524
      ],
      "op": "AND",
      "path": "6"
    },
    "2913": {
      "fn": "Address.isContract",
      "offset": [
        1465,
        1484
      ],
      "op": "EXTCODESIZE",
      "path": "10",
      "statement": 47
    },
    "2914": {
      "fn": "Address.isContract",
      "offset": [
        1465,
        1488
      ],
      "op": "ISZERO",
      "path": "10"
    },
    "2915": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12507,
        13167
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xC56"
    },
    "2918": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12507,
        13167
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "2919": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "2921": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "2922": {
      "op": "PUSH4",
      "value": "0xA85BD01"
    },
    "2927": {
      "op": "PUSH1",
      "value": "0xE1"
    },
    "2929": {
      "op": "SHL"
    },
    "2930": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "DUP2",
      "path": "6"
    },
    "2931": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "2932": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2934": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "2936": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "2938": {
      "op": "SHL"
    },
    "2939": {
      "op": "SUB"
    },
    "2940": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12582
      ],
      "op": "DUP6",
      "path": "6"
    },
    "2941": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12582
      ],
      "op": "AND",
      "path": "6"
    },
    "2942": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12582
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "2943": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12582
      ],
      "op": "PUSH4",
      "path": "6",
      "value": "0x150B7A02"
    },
    "2948": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12582
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "2949": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xB98"
    },
    "2952": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "2953": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "CALLER",
      "path": "11"
    },
    "2954": {
      "fn": "Context._msgSender",
      "offset": [
        719,
        729
      ],
      "op": "SWAP1",
      "path": "11"
    },
    "2955": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12597,
        12601
      ],
      "op": "DUP10",
      "path": "6"
    },
    "2956": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12597,
        12601
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "2957": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12603,
        12610
      ],
      "op": "DUP9",
      "path": "6"
    },
    "2958": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12603,
        12610
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "2959": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12612,
        12616
      ],
      "op": "DUP9",
      "path": "6"
    },
    "2960": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12612,
        12616
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "2961": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "2963": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "ADD",
      "path": "6"
    },
    "2964": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xEE2"
    },
    "2967": {
      "fn": "ERC721._checkOnERC721Received",
      "jump": "i",
      "offset": [
        12546,
        12617
      ],
      "op": "JUMP",
      "path": "6"
    },
    "2968": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "2969": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "2971": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "2973": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "2974": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "DUP1",
      "path": "6"
    },
    "2975": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "DUP4",
      "path": "6"
    },
    "2976": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "SUB",
      "path": "6"
    },
    "2977": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "DUP2",
      "path": "6"
    },
    "2978": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "2980": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "DUP8",
      "path": "6"
    },
    "2981": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "DUP1",
      "path": "6"
    },
    "2982": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "EXTCODESIZE",
      "path": "6"
    },
    "2983": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "ISZERO",
      "path": "6"
    },
    "2984": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "DUP1",
      "path": "6"
    },
    "2985": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "ISZERO",
      "path": "6"
    },
    "2986": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xBB2"
    },
    "2989": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "2990": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "2992": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "DUP1",
      "path": "6"
    },
    "2993": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "REVERT",
      "path": "6"
    },
    "2994": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "2995": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "POP",
      "path": "6"
    },
    "2996": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "GAS",
      "path": "6"
    },
    "2997": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "CALL",
      "path": "6"
    },
    "2998": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "SWAP3",
      "path": "6"
    },
    "2999": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "POP",
      "path": "6"
    },
    "3000": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "POP",
      "path": "6"
    },
    "3001": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "POP",
      "path": "6"
    },
    "3002": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "DUP1",
      "path": "6"
    },
    "3003": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "ISZERO",
      "path": "6"
    },
    "3004": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xBE2"
    },
    "3007": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "3008": {
      "op": "POP"
    },
    "3009": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "3011": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "DUP1",
      "path": "6"
    },
    "3012": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "3013": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x1F"
    },
    "3015": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "RETURNDATASIZE",
      "path": "6"
    },
    "3016": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "3017": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "DUP2",
      "path": "6"
    },
    "3018": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "ADD",
      "path": "6"
    },
    "3019": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "3021": {
      "op": "NOT"
    },
    "3022": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "AND",
      "path": "6"
    },
    "3023": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "DUP3",
      "path": "6"
    },
    "3024": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "ADD",
      "path": "6"
    },
    "3025": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "3026": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "SWAP3",
      "path": "6"
    },
    "3027": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "3028": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xBDF"
    },
    "3031": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "3032": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "DUP2",
      "path": "6"
    },
    "3033": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "ADD",
      "path": "6"
    },
    "3034": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "3035": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xE53"
    },
    "3038": {
      "fn": "ERC721._checkOnERC721Received",
      "jump": "i",
      "offset": [
        12546,
        12617
      ],
      "op": "JUMP",
      "path": "6"
    },
    "3039": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "3040": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x1"
    },
    "3042": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12546,
        12617
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "3043": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xC3C"
    },
    "3046": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "3047": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "RETURNDATASIZE",
      "path": "6"
    },
    "3048": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "DUP1",
      "path": "6"
    },
    "3049": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "DUP1",
      "path": "6"
    },
    "3050": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "ISZERO",
      "path": "6"
    },
    "3051": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xC10"
    },
    "3054": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "3055": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "3057": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "3058": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "3059": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "POP",
      "path": "6"
    },
    "3060": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x1F"
    },
    "3062": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "NOT",
      "path": "6"
    },
    "3063": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x3F"
    },
    "3065": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "RETURNDATASIZE",
      "path": "6"
    },
    "3066": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "ADD",
      "path": "6"
    },
    "3067": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "AND",
      "path": "6"
    },
    "3068": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "DUP3",
      "path": "6"
    },
    "3069": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "ADD",
      "path": "6"
    },
    "3070": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x40"
    },
    "3072": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "3073": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "RETURNDATASIZE",
      "path": "6"
    },
    "3074": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "DUP3",
      "path": "6"
    },
    "3075": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "3076": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "RETURNDATASIZE",
      "path": "6"
    },
    "3077": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x0"
    },
    "3079": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "3081": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "DUP5",
      "path": "6"
    },
    "3082": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "ADD",
      "path": "6"
    },
    "3083": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "RETURNDATACOPY",
      "path": "6"
    },
    "3084": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xC15"
    },
    "3087": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "JUMP",
      "path": "6"
    },
    "3088": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "3089": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x60"
    },
    "3091": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "SWAP2",
      "path": "6"
    },
    "3092": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "POP",
      "path": "6"
    },
    "3093": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "3094": {
      "op": "POP"
    },
    "3095": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12784,
        12797
      ],
      "op": "DUP1",
      "path": "6"
    },
    "3096": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12784,
        12797
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "3097": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12780,
        13101
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xC34"
    },
    "3100": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12780,
        13101
      ],
      "op": "JUMPI",
      "path": "6"
    },
    "3101": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12826,
        12886
      ],
      "op": "PUSH1",
      "path": "6",
      "statement": 48,
      "value": "0x40"
    },
    "3103": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12826,
        12886
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "3104": {
      "op": "PUSH3",
      "value": "0x461BCD"
    },
    "3108": {
      "op": "PUSH1",
      "value": "0xE5"
    },
    "3110": {
      "op": "SHL"
    },
    "3111": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12826,
        12886
      ],
      "op": "DUP2",
      "path": "6"
    },
    "3112": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12826,
        12886
      ],
      "op": "MSTORE",
      "path": "6"
    },
    "3113": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12826,
        12886
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x4"
    },
    "3115": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12826,
        12886
      ],
      "op": "ADD",
      "path": "6"
    },
    "3116": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12826,
        12886
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x3AA"
    },
    "3119": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12826,
        12886
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "3120": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12826,
        12886
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0xF32"
    },
    "3123": {
      "fn": "ERC721._checkOnERC721Received",
      "jump": "i",
      "offset": [
        12826,
        12886
      ],
      "op": "JUMP",
      "path": "6"
    },
    "3124": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12780,
        13101
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "3125": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        13053,
        13059
      ],
      "op": "DUP1",
      "path": "6"
    },
    "3126": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        13047,
        13060
      ],
      "op": "MLOAD",
      "path": "6"
    },
    "3127": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        13038,
        13044
      ],
      "op": "DUP2",
      "path": "6"
    },
    "3128": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        13034,
        13036
      ],
      "op": "PUSH1",
      "path": "6",
      "value": "0x20"
    },
    "3130": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        13030,
        13045
      ],
      "op": "ADD",
      "path": "6"
    },
    "3131": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        13023,
        13061
      ],
      "op": "REVERT",
      "path": "6"
    },
    "3132": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12542,
        13115
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "3133": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3135": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3137": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "3139": {
      "op": "SHL"
    },
    "3140": {
      "op": "SUB"
    },
    "3141": {
      "op": "NOT"
    },
    "3142": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12667,
        12718
      ],
      "op": "AND",
      "path": "6",
      "statement": 49
    },
    "3143": {
      "op": "PUSH4",
      "value": "0xA85BD01"
    },
    "3148": {
      "op": "PUSH1",
      "value": "0xE1"
    },
    "3150": {
      "op": "SHL"
    },
    "3151": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12667,
        12718
      ],
      "op": "EQ",
      "path": "6"
    },
    "3152": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12667,
        12718
      ],
      "op": "SWAP1",
      "path": "6"
    },
    "3153": {
      "op": "POP"
    },
    "3154": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12660,
        12718
      ],
      "op": "PUSH2",
      "path": "6",
      "value": "0x793"
    },
    "3157": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12660,
        12718
      ],
      "op": "JUMP",
      "path": "6"
    },
    "3158": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12507,
        13167
      ],
      "op": "JUMPDEST",
      "path": "6"
    },
    "3159": {
      "op": "POP"
    },
    "3160": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        13152,
        13156
      ],
      "op": "PUSH1",
      "path": "6",
      "statement": 50,
      "value": "0x1"
    },
    "3162": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12342,
        13173
      ],
      "op": "SWAP5",
      "path": "6"
    },
    "3163": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12342,
        13173
      ],
      "op": "SWAP4",
      "path": "6"
    },
    "3164": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12342,
        13173
      ],
      "op": "POP",
      "path": "6"
    },
    "3165": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12342,
        13173
      ],
      "op": "POP",
      "path": "6"
    },
    "3166": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12342,
        13173
      ],
      "op": "POP",
      "path": "6"
    },
    "3167": {
      "fn": "ERC721._checkOnERC721Received",
      "offset": [
        12342,
        13173
      ],
      "op": "POP",
      "path": "6"
    },
    "3168": {
      "fn": "ERC721._checkOnERC721Received",
      "jump": "o",
      "offset": [
        12342,
        13173
      ],
      "op": "JUMP",
      "path": "6"
    },
    "3169": {
      "op": "JUMPDEST"
    },
    "3170": {
      "op": "DUP1"
    },
    "3171": {
      "op": "CALLDATALOAD"
    },
    "3172": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3174": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3176": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "3178": {
      "op": "SHL"
    },
    "3179": {
      "op": "SUB"
    },
    "3180": {
      "op": "DUP2"
    },
    "3181": {
      "op": "AND"
    },
    "3182": {
      "op": "DUP2"
    },
    "3183": {
      "op": "EQ"
    },
    "3184": {
      "op": "PUSH2",
      "value": "0x277"
    },
    "3187": {
      "op": "JUMPI"
    },
    "3188": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3190": {
      "op": "DUP1"
    },
    "3191": {
      "op": "REVERT"
    },
    "3192": {
      "op": "JUMPDEST"
    },
    "3193": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3195": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3197": {
      "op": "DUP3"
    },
    "3198": {
      "op": "DUP5"
    },
    "3199": {
      "op": "SUB"
    },
    "3200": {
      "op": "SLT"
    },
    "3201": {
      "op": "ISZERO"
    },
    "3202": {
      "op": "PUSH2",
      "value": "0xC89"
    },
    "3205": {
      "op": "JUMPI"
    },
    "3206": {
      "op": "DUP1"
    },
    "3207": {
      "op": "DUP2"
    },
    "3208": {
      "op": "REVERT"
    },
    "3209": {
      "op": "JUMPDEST"
    },
    "3210": {
      "op": "PUSH2",
      "value": "0x645"
    },
    "3213": {
      "op": "DUP3"
    },
    "3214": {
      "op": "PUSH2",
      "value": "0xC61"
    },
    "3217": {
      "jump": "i",
      "op": "JUMP"
    },
    "3218": {
      "op": "JUMPDEST"
    },
    "3219": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3221": {
      "op": "DUP1"
    },
    "3222": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3224": {
      "op": "DUP4"
    },
    "3225": {
      "op": "DUP6"
    },
    "3226": {
      "op": "SUB"
    },
    "3227": {
      "op": "SLT"
    },
    "3228": {
      "op": "ISZERO"
    },
    "3229": {
      "op": "PUSH2",
      "value": "0xCA4"
    },
    "3232": {
      "op": "JUMPI"
    },
    "3233": {
      "op": "DUP1"
    },
    "3234": {
      "op": "DUP2"
    },
    "3235": {
      "op": "REVERT"
    },
    "3236": {
      "op": "JUMPDEST"
    },
    "3237": {
      "op": "PUSH2",
      "value": "0xCAD"
    },
    "3240": {
      "op": "DUP4"
    },
    "3241": {
      "op": "PUSH2",
      "value": "0xC61"
    },
    "3244": {
      "jump": "i",
      "op": "JUMP"
    },
    "3245": {
      "op": "JUMPDEST"
    },
    "3246": {
      "op": "SWAP2"
    },
    "3247": {
      "op": "POP"
    },
    "3248": {
      "op": "PUSH2",
      "value": "0xCBB"
    },
    "3251": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3253": {
      "op": "DUP5"
    },
    "3254": {
      "op": "ADD"
    },
    "3255": {
      "op": "PUSH2",
      "value": "0xC61"
    },
    "3258": {
      "jump": "i",
      "op": "JUMP"
    },
    "3259": {
      "op": "JUMPDEST"
    },
    "3260": {
      "op": "SWAP1"
    },
    "3261": {
      "op": "POP"
    },
    "3262": {
      "op": "SWAP3"
    },
    "3263": {
      "op": "POP"
    },
    "3264": {
      "op": "SWAP3"
    },
    "3265": {
      "op": "SWAP1"
    },
    "3266": {
      "op": "POP"
    },
    "3267": {
      "jump": "o",
      "op": "JUMP"
    },
    "3268": {
      "op": "JUMPDEST"
    },
    "3269": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3271": {
      "op": "DUP1"
    },
    "3272": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3274": {
      "op": "PUSH1",
      "value": "0x60"
    },
    "3276": {
      "op": "DUP5"
    },
    "3277": {
      "op": "DUP7"
    },
    "3278": {
      "op": "SUB"
    },
    "3279": {
      "op": "SLT"
    },
    "3280": {
      "op": "ISZERO"
    },
    "3281": {
      "op": "PUSH2",
      "value": "0xCD8"
    },
    "3284": {
      "op": "JUMPI"
    },
    "3285": {
      "op": "DUP1"
    },
    "3286": {
      "op": "DUP2"
    },
    "3287": {
      "op": "REVERT"
    },
    "3288": {
      "op": "JUMPDEST"
    },
    "3289": {
      "op": "PUSH2",
      "value": "0xCE1"
    },
    "3292": {
      "op": "DUP5"
    },
    "3293": {
      "op": "PUSH2",
      "value": "0xC61"
    },
    "3296": {
      "jump": "i",
      "op": "JUMP"
    },
    "3297": {
      "op": "JUMPDEST"
    },
    "3298": {
      "op": "SWAP3"
    },
    "3299": {
      "op": "POP"
    },
    "3300": {
      "op": "PUSH2",
      "value": "0xCEF"
    },
    "3303": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3305": {
      "op": "DUP6"
    },
    "3306": {
      "op": "ADD"
    },
    "3307": {
      "op": "PUSH2",
      "value": "0xC61"
    },
    "3310": {
      "jump": "i",
      "op": "JUMP"
    },
    "3311": {
      "op": "JUMPDEST"
    },
    "3312": {
      "op": "SWAP2"
    },
    "3313": {
      "op": "POP"
    },
    "3314": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3316": {
      "op": "DUP5"
    },
    "3317": {
      "op": "ADD"
    },
    "3318": {
      "op": "CALLDATALOAD"
    },
    "3319": {
      "op": "SWAP1"
    },
    "3320": {
      "op": "POP"
    },
    "3321": {
      "op": "SWAP3"
    },
    "3322": {
      "op": "POP"
    },
    "3323": {
      "op": "SWAP3"
    },
    "3324": {
      "op": "POP"
    },
    "3325": {
      "op": "SWAP3"
    },
    "3326": {
      "jump": "o",
      "op": "JUMP"
    },
    "3327": {
      "op": "JUMPDEST"
    },
    "3328": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3330": {
      "op": "DUP1"
    },
    "3331": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3333": {
      "op": "DUP1"
    },
    "3334": {
      "op": "PUSH1",
      "value": "0x80"
    },
    "3336": {
      "op": "DUP6"
    },
    "3337": {
      "op": "DUP8"
    },
    "3338": {
      "op": "SUB"
    },
    "3339": {
      "op": "SLT"
    },
    "3340": {
      "op": "ISZERO"
    },
    "3341": {
      "op": "PUSH2",
      "value": "0xD14"
    },
    "3344": {
      "op": "JUMPI"
    },
    "3345": {
      "op": "DUP1"
    },
    "3346": {
      "op": "DUP2"
    },
    "3347": {
      "op": "REVERT"
    },
    "3348": {
      "op": "JUMPDEST"
    },
    "3349": {
      "op": "PUSH2",
      "value": "0xD1D"
    },
    "3352": {
      "op": "DUP6"
    },
    "3353": {
      "op": "PUSH2",
      "value": "0xC61"
    },
    "3356": {
      "jump": "i",
      "op": "JUMP"
    },
    "3357": {
      "op": "JUMPDEST"
    },
    "3358": {
      "op": "SWAP4"
    },
    "3359": {
      "op": "POP"
    },
    "3360": {
      "op": "PUSH2",
      "value": "0xD2B"
    },
    "3363": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3365": {
      "op": "DUP7"
    },
    "3366": {
      "op": "ADD"
    },
    "3367": {
      "op": "PUSH2",
      "value": "0xC61"
    },
    "3370": {
      "jump": "i",
      "op": "JUMP"
    },
    "3371": {
      "op": "JUMPDEST"
    },
    "3372": {
      "op": "SWAP3"
    },
    "3373": {
      "op": "POP"
    },
    "3374": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3376": {
      "op": "DUP6"
    },
    "3377": {
      "op": "ADD"
    },
    "3378": {
      "op": "CALLDATALOAD"
    },
    "3379": {
      "op": "SWAP2"
    },
    "3380": {
      "op": "POP"
    },
    "3381": {
      "op": "PUSH1",
      "value": "0x60"
    },
    "3383": {
      "op": "DUP6"
    },
    "3384": {
      "op": "ADD"
    },
    "3385": {
      "op": "CALLDATALOAD"
    },
    "3386": {
      "op": "PUSH8",
      "value": "0xFFFFFFFFFFFFFFFF"
    },
    "3395": {
      "op": "DUP1"
    },
    "3396": {
      "op": "DUP3"
    },
    "3397": {
      "op": "GT"
    },
    "3398": {
      "op": "ISZERO"
    },
    "3399": {
      "op": "PUSH2",
      "value": "0xD4E"
    },
    "3402": {
      "op": "JUMPI"
    },
    "3403": {
      "op": "DUP3"
    },
    "3404": {
      "op": "DUP4"
    },
    "3405": {
      "op": "REVERT"
    },
    "3406": {
      "op": "JUMPDEST"
    },
    "3407": {
      "op": "DUP2"
    },
    "3408": {
      "op": "DUP8"
    },
    "3409": {
      "op": "ADD"
    },
    "3410": {
      "op": "SWAP2"
    },
    "3411": {
      "op": "POP"
    },
    "3412": {
      "op": "DUP8"
    },
    "3413": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "3415": {
      "op": "DUP4"
    },
    "3416": {
      "op": "ADD"
    },
    "3417": {
      "op": "SLT"
    },
    "3418": {
      "op": "PUSH2",
      "value": "0xD61"
    },
    "3421": {
      "op": "JUMPI"
    },
    "3422": {
      "op": "DUP3"
    },
    "3423": {
      "op": "DUP4"
    },
    "3424": {
      "op": "REVERT"
    },
    "3425": {
      "op": "JUMPDEST"
    },
    "3426": {
      "op": "DUP2"
    },
    "3427": {
      "op": "CALLDATALOAD"
    },
    "3428": {
      "op": "DUP2"
    },
    "3429": {
      "op": "DUP2"
    },
    "3430": {
      "op": "GT"
    },
    "3431": {
      "op": "ISZERO"
    },
    "3432": {
      "op": "PUSH2",
      "value": "0xD73"
    },
    "3435": {
      "op": "JUMPI"
    },
    "3436": {
      "op": "PUSH2",
      "value": "0xD73"
    },
    "3439": {
      "op": "PUSH2",
      "value": "0x10D7"
    },
    "3442": {
      "jump": "i",
      "op": "JUMP"
    },
    "3443": {
      "op": "JUMPDEST"
    },
    "3444": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3446": {
      "op": "MLOAD"
    },
    "3447": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "3449": {
      "op": "DUP3"
    },
    "3450": {
      "op": "ADD"
    },
    "3451": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "3453": {
      "op": "NOT"
    },
    "3454": {
      "op": "SWAP1"
    },
    "3455": {
      "op": "DUP2"
    },
    "3456": {
      "op": "AND"
    },
    "3457": {
      "op": "PUSH1",
      "value": "0x3F"
    },
    "3459": {
      "op": "ADD"
    },
    "3460": {
      "op": "AND"
    },
    "3461": {
      "op": "DUP2"
    },
    "3462": {
      "op": "ADD"
    },
    "3463": {
      "op": "SWAP1"
    },
    "3464": {
      "op": "DUP4"
    },
    "3465": {
      "op": "DUP3"
    },
    "3466": {
      "op": "GT"
    },
    "3467": {
      "op": "DUP2"
    },
    "3468": {
      "op": "DUP4"
    },
    "3469": {
      "op": "LT"
    },
    "3470": {
      "op": "OR"
    },
    "3471": {
      "op": "ISZERO"
    },
    "3472": {
      "op": "PUSH2",
      "value": "0xD9B"
    },
    "3475": {
      "op": "JUMPI"
    },
    "3476": {
      "op": "PUSH2",
      "value": "0xD9B"
    },
    "3479": {
      "op": "PUSH2",
      "value": "0x10D7"
    },
    "3482": {
      "jump": "i",
      "op": "JUMP"
    },
    "3483": {
      "op": "JUMPDEST"
    },
    "3484": {
      "op": "DUP2"
    },
    "3485": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3487": {
      "op": "MSTORE"
    },
    "3488": {
      "op": "DUP3"
    },
    "3489": {
      "op": "DUP2"
    },
    "3490": {
      "op": "MSTORE"
    },
    "3491": {
      "op": "DUP11"
    },
    "3492": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3494": {
      "op": "DUP5"
    },
    "3495": {
      "op": "DUP8"
    },
    "3496": {
      "op": "ADD"
    },
    "3497": {
      "op": "ADD"
    },
    "3498": {
      "op": "GT"
    },
    "3499": {
      "op": "ISZERO"
    },
    "3500": {
      "op": "PUSH2",
      "value": "0xDB3"
    },
    "3503": {
      "op": "JUMPI"
    },
    "3504": {
      "op": "DUP6"
    },
    "3505": {
      "op": "DUP7"
    },
    "3506": {
      "op": "REVERT"
    },
    "3507": {
      "op": "JUMPDEST"
    },
    "3508": {
      "op": "DUP3"
    },
    "3509": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3511": {
      "op": "DUP7"
    },
    "3512": {
      "op": "ADD"
    },
    "3513": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3515": {
      "op": "DUP4"
    },
    "3516": {
      "op": "ADD"
    },
    "3517": {
      "op": "CALLDATACOPY"
    },
    "3518": {
      "op": "SWAP2"
    },
    "3519": {
      "op": "DUP3"
    },
    "3520": {
      "op": "ADD"
    },
    "3521": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3523": {
      "op": "ADD"
    },
    "3524": {
      "op": "SWAP5"
    },
    "3525": {
      "op": "SWAP1"
    },
    "3526": {
      "op": "SWAP5"
    },
    "3527": {
      "op": "MSTORE"
    },
    "3528": {
      "op": "SWAP6"
    },
    "3529": {
      "op": "SWAP9"
    },
    "3530": {
      "op": "SWAP5"
    },
    "3531": {
      "op": "SWAP8"
    },
    "3532": {
      "op": "POP"
    },
    "3533": {
      "op": "SWAP3"
    },
    "3534": {
      "op": "SWAP6"
    },
    "3535": {
      "op": "POP"
    },
    "3536": {
      "op": "POP"
    },
    "3537": {
      "op": "POP"
    },
    "3538": {
      "op": "POP"
    },
    "3539": {
      "jump": "o",
      "op": "JUMP"
    },
    "3540": {
      "op": "JUMPDEST"
    },
    "3541": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3543": {
      "op": "DUP1"
    },
    "3544": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3546": {
      "op": "DUP4"
    },
    "3547": {
      "op": "DUP6"
    },
    "3548": {
      "op": "SUB"
    },
    "3549": {
      "op": "SLT"
    },
    "3550": {
      "op": "ISZERO"
    },
    "3551": {
      "op": "PUSH2",
      "value": "0xDE6"
    },
    "3554": {
      "op": "JUMPI"
    },
    "3555": {
      "op": "DUP2"
    },
    "3556": {
      "op": "DUP3"
    },
    "3557": {
      "op": "REVERT"
    },
    "3558": {
      "op": "JUMPDEST"
    },
    "3559": {
      "op": "PUSH2",
      "value": "0xDEF"
    },
    "3562": {
      "op": "DUP4"
    },
    "3563": {
      "op": "PUSH2",
      "value": "0xC61"
    },
    "3566": {
      "jump": "i",
      "op": "JUMP"
    },
    "3567": {
      "op": "JUMPDEST"
    },
    "3568": {
      "op": "SWAP2"
    },
    "3569": {
      "op": "POP"
    },
    "3570": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3572": {
      "op": "DUP4"
    },
    "3573": {
      "op": "ADD"
    },
    "3574": {
      "op": "CALLDATALOAD"
    },
    "3575": {
      "op": "DUP1"
    },
    "3576": {
      "op": "ISZERO"
    },
    "3577": {
      "op": "ISZERO"
    },
    "3578": {
      "op": "DUP2"
    },
    "3579": {
      "op": "EQ"
    },
    "3580": {
      "op": "PUSH2",
      "value": "0xE03"
    },
    "3583": {
      "op": "JUMPI"
    },
    "3584": {
      "op": "DUP2"
    },
    "3585": {
      "op": "DUP3"
    },
    "3586": {
      "op": "REVERT"
    },
    "3587": {
      "op": "JUMPDEST"
    },
    "3588": {
      "op": "DUP1"
    },
    "3589": {
      "op": "SWAP2"
    },
    "3590": {
      "op": "POP"
    },
    "3591": {
      "op": "POP"
    },
    "3592": {
      "op": "SWAP3"
    },
    "3593": {
      "op": "POP"
    },
    "3594": {
      "op": "SWAP3"
    },
    "3595": {
      "op": "SWAP1"
    },
    "3596": {
      "op": "POP"
    },
    "3597": {
      "jump": "o",
      "op": "JUMP"
    },
    "3598": {
      "op": "JUMPDEST"
    },
    "3599": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3601": {
      "op": "DUP1"
    },
    "3602": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3604": {
      "op": "DUP4"
    },
    "3605": {
      "op": "DUP6"
    },
    "3606": {
      "op": "SUB"
    },
    "3607": {
      "op": "SLT"
    },
    "3608": {
      "op": "ISZERO"
    },
    "3609": {
      "op": "PUSH2",
      "value": "0xE20"
    },
    "3612": {
      "op": "JUMPI"
    },
    "3613": {
      "op": "DUP2"
    },
    "3614": {
      "op": "DUP3"
    },
    "3615": {
      "op": "REVERT"
    },
    "3616": {
      "op": "JUMPDEST"
    },
    "3617": {
      "op": "PUSH2",
      "value": "0xE29"
    },
    "3620": {
      "op": "DUP4"
    },
    "3621": {
      "op": "PUSH2",
      "value": "0xC61"
    },
    "3624": {
      "jump": "i",
      "op": "JUMP"
    },
    "3625": {
      "op": "JUMPDEST"
    },
    "3626": {
      "op": "SWAP5"
    },
    "3627": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3629": {
      "op": "SWAP4"
    },
    "3630": {
      "op": "SWAP1"
    },
    "3631": {
      "op": "SWAP4"
    },
    "3632": {
      "op": "ADD"
    },
    "3633": {
      "op": "CALLDATALOAD"
    },
    "3634": {
      "op": "SWAP4"
    },
    "3635": {
      "op": "POP"
    },
    "3636": {
      "op": "POP"
    },
    "3637": {
      "op": "POP"
    },
    "3638": {
      "jump": "o",
      "op": "JUMP"
    },
    "3639": {
      "op": "JUMPDEST"
    },
    "3640": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3642": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3644": {
      "op": "DUP3"
    },
    "3645": {
      "op": "DUP5"
    },
    "3646": {
      "op": "SUB"
    },
    "3647": {
      "op": "SLT"
    },
    "3648": {
      "op": "ISZERO"
    },
    "3649": {
      "op": "PUSH2",
      "value": "0xE48"
    },
    "3652": {
      "op": "JUMPI"
    },
    "3653": {
      "op": "DUP1"
    },
    "3654": {
      "op": "DUP2"
    },
    "3655": {
      "op": "REVERT"
    },
    "3656": {
      "op": "JUMPDEST"
    },
    "3657": {
      "op": "DUP2"
    },
    "3658": {
      "op": "CALLDATALOAD"
    },
    "3659": {
      "op": "PUSH2",
      "value": "0x645"
    },
    "3662": {
      "op": "DUP2"
    },
    "3663": {
      "op": "PUSH2",
      "value": "0x10ED"
    },
    "3666": {
      "jump": "i",
      "op": "JUMP"
    },
    "3667": {
      "op": "JUMPDEST"
    },
    "3668": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3670": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3672": {
      "op": "DUP3"
    },
    "3673": {
      "op": "DUP5"
    },
    "3674": {
      "op": "SUB"
    },
    "3675": {
      "op": "SLT"
    },
    "3676": {
      "op": "ISZERO"
    },
    "3677": {
      "op": "PUSH2",
      "value": "0xE64"
    },
    "3680": {
      "op": "JUMPI"
    },
    "3681": {
      "op": "DUP1"
    },
    "3682": {
      "op": "DUP2"
    },
    "3683": {
      "op": "REVERT"
    },
    "3684": {
      "op": "JUMPDEST"
    },
    "3685": {
      "op": "DUP2"
    },
    "3686": {
      "op": "MLOAD"
    },
    "3687": {
      "op": "PUSH2",
      "value": "0x645"
    },
    "3690": {
      "op": "DUP2"
    },
    "3691": {
      "op": "PUSH2",
      "value": "0x10ED"
    },
    "3694": {
      "jump": "i",
      "op": "JUMP"
    },
    "3695": {
      "op": "JUMPDEST"
    },
    "3696": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3698": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3700": {
      "op": "DUP3"
    },
    "3701": {
      "op": "DUP5"
    },
    "3702": {
      "op": "SUB"
    },
    "3703": {
      "op": "SLT"
    },
    "3704": {
      "op": "ISZERO"
    },
    "3705": {
      "op": "PUSH2",
      "value": "0xE80"
    },
    "3708": {
      "op": "JUMPI"
    },
    "3709": {
      "op": "DUP1"
    },
    "3710": {
      "op": "DUP2"
    },
    "3711": {
      "op": "REVERT"
    },
    "3712": {
      "op": "JUMPDEST"
    },
    "3713": {
      "op": "POP"
    },
    "3714": {
      "op": "CALLDATALOAD"
    },
    "3715": {
      "op": "SWAP2"
    },
    "3716": {
      "op": "SWAP1"
    },
    "3717": {
      "op": "POP"
    },
    "3718": {
      "jump": "o",
      "op": "JUMP"
    },
    "3719": {
      "op": "JUMPDEST"
    },
    "3720": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3722": {
      "op": "DUP2"
    },
    "3723": {
      "op": "MLOAD"
    },
    "3724": {
      "op": "DUP1"
    },
    "3725": {
      "op": "DUP5"
    },
    "3726": {
      "op": "MSTORE"
    },
    "3727": {
      "op": "PUSH2",
      "value": "0xE9F"
    },
    "3730": {
      "op": "DUP2"
    },
    "3731": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3733": {
      "op": "DUP7"
    },
    "3734": {
      "op": "ADD"
    },
    "3735": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3737": {
      "op": "DUP7"
    },
    "3738": {
      "op": "ADD"
    },
    "3739": {
      "op": "PUSH2",
      "value": "0x1015"
    },
    "3742": {
      "jump": "i",
      "op": "JUMP"
    },
    "3743": {
      "op": "JUMPDEST"
    },
    "3744": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "3746": {
      "op": "ADD"
    },
    "3747": {
      "op": "PUSH1",
      "value": "0x1F"
    },
    "3749": {
      "op": "NOT"
    },
    "3750": {
      "op": "AND"
    },
    "3751": {
      "op": "SWAP3"
    },
    "3752": {
      "op": "SWAP1"
    },
    "3753": {
      "op": "SWAP3"
    },
    "3754": {
      "op": "ADD"
    },
    "3755": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3757": {
      "op": "ADD"
    },
    "3758": {
      "op": "SWAP3"
    },
    "3759": {
      "op": "SWAP2"
    },
    "3760": {
      "op": "POP"
    },
    "3761": {
      "op": "POP"
    },
    "3762": {
      "jump": "o",
      "op": "JUMP"
    },
    "3763": {
      "op": "JUMPDEST"
    },
    "3764": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3766": {
      "op": "DUP4"
    },
    "3767": {
      "op": "MLOAD"
    },
    "3768": {
      "op": "PUSH2",
      "value": "0xEC5"
    },
    "3771": {
      "op": "DUP2"
    },
    "3772": {
      "op": "DUP5"
    },
    "3773": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3775": {
      "op": "DUP9"
    },
    "3776": {
      "op": "ADD"
    },
    "3777": {
      "op": "PUSH2",
      "value": "0x1015"
    },
    "3780": {
      "jump": "i",
      "op": "JUMP"
    },
    "3781": {
      "op": "JUMPDEST"
    },
    "3782": {
      "op": "DUP4"
    },
    "3783": {
      "op": "MLOAD"
    },
    "3784": {
      "op": "SWAP1"
    },
    "3785": {
      "op": "DUP4"
    },
    "3786": {
      "op": "ADD"
    },
    "3787": {
      "op": "SWAP1"
    },
    "3788": {
      "op": "PUSH2",
      "value": "0xED9"
    },
    "3791": {
      "op": "DUP2"
    },
    "3792": {
      "op": "DUP4"
    },
    "3793": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3795": {
      "op": "DUP9"
    },
    "3796": {
      "op": "ADD"
    },
    "3797": {
      "op": "PUSH2",
      "value": "0x1015"
    },
    "3800": {
      "jump": "i",
      "op": "JUMP"
    },
    "3801": {
      "op": "JUMPDEST"
    },
    "3802": {
      "op": "ADD"
    },
    "3803": {
      "op": "SWAP5"
    },
    "3804": {
      "op": "SWAP4"
    },
    "3805": {
      "op": "POP"
    },
    "3806": {
      "op": "POP"
    },
    "3807": {
      "op": "POP"
    },
    "3808": {
      "op": "POP"
    },
    "3809": {
      "jump": "o",
      "op": "JUMP"
    },
    "3810": {
      "op": "JUMPDEST"
    },
    "3811": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3813": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "3815": {
      "op": "PUSH1",
      "value": "0xA0"
    },
    "3817": {
      "op": "SHL"
    },
    "3818": {
      "op": "SUB"
    },
    "3819": {
      "op": "DUP6"
    },
    "3820": {
      "op": "DUP2"
    },
    "3821": {
      "op": "AND"
    },
    "3822": {
      "op": "DUP3"
    },
    "3823": {
      "op": "MSTORE"
    },
    "3824": {
      "op": "DUP5"
    },
    "3825": {
      "op": "AND"
    },
    "3826": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3828": {
      "op": "DUP3"
    },
    "3829": {
      "op": "ADD"
    },
    "3830": {
      "op": "MSTORE"
    },
    "3831": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3833": {
      "op": "DUP2"
    },
    "3834": {
      "op": "ADD"
    },
    "3835": {
      "op": "DUP4"
    },
    "3836": {
      "op": "SWAP1"
    },
    "3837": {
      "op": "MSTORE"
    },
    "3838": {
      "op": "PUSH1",
      "value": "0x80"
    },
    "3840": {
      "op": "PUSH1",
      "value": "0x60"
    },
    "3842": {
      "op": "DUP3"
    },
    "3843": {
      "op": "ADD"
    },
    "3844": {
      "op": "DUP2"
    },
    "3845": {
      "op": "SWAP1"
    },
    "3846": {
      "op": "MSTORE"
    },
    "3847": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3849": {
      "op": "SWAP1"
    },
    "3850": {
      "op": "PUSH2",
      "value": "0xF15"
    },
    "3853": {
      "op": "SWAP1"
    },
    "3854": {
      "op": "DUP4"
    },
    "3855": {
      "op": "ADD"
    },
    "3856": {
      "op": "DUP5"
    },
    "3857": {
      "op": "PUSH2",
      "value": "0xE87"
    },
    "3860": {
      "jump": "i",
      "op": "JUMP"
    },
    "3861": {
      "op": "JUMPDEST"
    },
    "3862": {
      "op": "SWAP7"
    },
    "3863": {
      "op": "SWAP6"
    },
    "3864": {
      "op": "POP"
    },
    "3865": {
      "op": "POP"
    },
    "3866": {
      "op": "POP"
    },
    "3867": {
      "op": "POP"
    },
    "3868": {
      "op": "POP"
    },
    "3869": {
      "op": "POP"
    },
    "3870": {
      "jump": "o",
      "op": "JUMP"
    },
    "3871": {
      "op": "JUMPDEST"
    },
    "3872": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "3874": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3876": {
      "op": "DUP3"
    },
    "3877": {
      "op": "MSTORE"
    },
    "3878": {
      "op": "PUSH2",
      "value": "0x645"
    },
    "3881": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3883": {
      "op": "DUP4"
    },
    "3884": {
      "op": "ADD"
    },
    "3885": {
      "op": "DUP5"
    },
    "3886": {
      "op": "PUSH2",
      "value": "0xE87"
    },
    "3889": {
      "jump": "i",
      "op": "JUMP"
    },
    "3890": {
      "op": "JUMPDEST"
    },
    "3891": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3893": {
      "op": "DUP1"
    },
    "3894": {
      "op": "DUP3"
    },
    "3895": {
      "op": "MSTORE"
    },
    "3896": {
      "op": "PUSH1",
      "value": "0x32"
    },
    "3898": {
      "op": "SWAP1"
    },
    "3899": {
      "op": "DUP3"
    },
    "3900": {
      "op": "ADD"
    },
    "3901": {
      "op": "MSTORE"
    },
    "3902": {
      "op": "PUSH32",
      "value": "0x4552433732313A207472616E7366657220746F206E6F6E204552433732315265"
    },
    "3935": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "3937": {
      "op": "DUP3"
    },
    "3938": {
      "op": "ADD"
    },
    "3939": {
      "op": "MSTORE"
    },
    "3940": {
      "op": "PUSH18",
      "value": "0x31B2B4BB32B91034B6B83632B6B2B73A32B9"
    },
    "3959": {
      "op": "PUSH1",
      "value": "0x71"
    },
    "3961": {
      "op": "SHL"
    },
    "3962": {
      "op": "PUSH1",
      "value": "0x60"
    },
    "3964": {
      "op": "DUP3"
    },
    "3965": {
      "op": "ADD"
    },
    "3966": {
      "op": "MSTORE"
    },
    "3967": {
      "op": "PUSH1",
      "value": "0x80"
    },
    "3969": {
      "op": "ADD"
    },
    "3970": {
      "op": "SWAP1"
    },
    "3971": {
      "jump": "o",
      "op": "JUMP"
    },
    "3972": {
      "op": "JUMPDEST"
    },
    "3973": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "3975": {
      "op": "DUP1"
    },
    "3976": {
      "op": "DUP3"
    },
    "3977": {
      "op": "MSTORE"
    },
    "3978": {
      "op": "PUSH1",
      "value": "0x2E"
    },
    "3980": {
      "op": "SWAP1"
    },
    "3981": {
      "op": "DUP3"
    },
    "3982": {
      "op": "ADD"
    },
    "3983": {
      "op": "MSTORE"
    },
    "3984": {
      "op": "PUSH32",
      "value": "0x4552433732313A2063616C6C6572206973206E6F7420746F6B656E206F776E65"
    },
    "4017": {
      "op": "PUSH1",
      "value": "0x40"
    },
    "4019": {
      "op": "DUP3"
    },
    "4020": {
      "op": "ADD"
    },
    "4021": {
      "op": "MSTORE"
    },
    "4022": {
      "op": "PUSH14",
      "value": "0x1C881B9BDC88185C1C1C9BDD9959"
    },
    "4037": {
      "op": "PUSH1",
      "value": "0x92"
    },
    "4039": {
      "op": "SHL"
    },
    "4040": {
      "op": "PUSH1",
      "value": "0x60"
    },
    "4042": {
      "op": "DUP3"
    },
    "4043": {
      "op": "ADD"
    },
    "4044": {
      "op": "MSTORE"
    },
    "4045": {
      "op": "PUSH1",
      "value": "0x80"
    },
    "4047": {
      "op": "ADD"
    },
    "4048": {
      "op": "SWAP1"
    },
    "4049": {
      "jump": "o",
      "op": "JUMP"
    },
    "4050": {
      "op": "JUMPDEST"
    },
    "4051": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4053": {
      "op": "DUP3"
    },
    "4054": {
      "op": "NOT"
    },
    "4055": {
      "op": "DUP3"
    },
    "4056": {
      "op": "GT"
    },
    "4057": {
      "op": "ISZERO"
    },
    "4058": {
      "op": "PUSH2",
      "value": "0xFE5"
    },
    "4061": {
      "op": "JUMPI"
    },
    "4062": {
      "op": "PUSH2",
      "value": "0xFE5"
    },
    "4065": {
      "op": "PUSH2",
      "value": "0x10AB"
    },
    "4068": {
      "jump": "i",
      "op": "JUMP"
    },
    "4069": {
      "op": "JUMPDEST"
    },
    "4070": {
      "op": "POP"
    },
    "4071": {
      "op": "ADD"
    },
    "4072": {
      "op": "SWAP1"
    },
    "4073": {
      "jump": "o",
      "op": "JUMP"
    },
    "4074": {
      "op": "JUMPDEST"
    },
    "4075": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4077": {
      "op": "DUP3"
    },
    "4078": {
      "op": "PUSH2",
      "value": "0xFF9"
    },
    "4081": {
      "op": "JUMPI"
    },
    "4082": {
      "op": "PUSH2",
      "value": "0xFF9"
    },
    "4085": {
      "op": "PUSH2",
      "value": "0x10C1"
    },
    "4088": {
      "jump": "i",
      "op": "JUMP"
    },
    "4089": {
      "op": "JUMPDEST"
    },
    "4090": {
      "op": "POP"
    },
    "4091": {
      "op": "DIV"
    },
    "4092": {
      "op": "SWAP1"
    },
    "4093": {
      "jump": "o",
      "op": "JUMP"
    },
    "4094": {
      "op": "JUMPDEST"
    },
    "4095": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4097": {
      "op": "DUP3"
    },
    "4098": {
      "op": "DUP3"
    },
    "4099": {
      "op": "LT"
    },
    "4100": {
      "op": "ISZERO"
    },
    "4101": {
      "op": "PUSH2",
      "value": "0x1010"
    },
    "4104": {
      "op": "JUMPI"
    },
    "4105": {
      "op": "PUSH2",
      "value": "0x1010"
    },
    "4108": {
      "op": "PUSH2",
      "value": "0x10AB"
    },
    "4111": {
      "jump": "i",
      "op": "JUMP"
    },
    "4112": {
      "op": "JUMPDEST"
    },
    "4113": {
      "op": "POP"
    },
    "4114": {
      "op": "SUB"
    },
    "4115": {
      "op": "SWAP1"
    },
    "4116": {
      "jump": "o",
      "op": "JUMP"
    },
    "4117": {
      "op": "JUMPDEST"
    },
    "4118": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4120": {
      "op": "JUMPDEST"
    },
    "4121": {
      "op": "DUP4"
    },
    "4122": {
      "op": "DUP2"
    },
    "4123": {
      "op": "LT"
    },
    "4124": {
      "op": "ISZERO"
    },
    "4125": {
      "op": "PUSH2",
      "value": "0x1030"
    },
    "4128": {
      "op": "JUMPI"
    },
    "4129": {
      "op": "DUP2"
    },
    "4130": {
      "op": "DUP2"
    },
    "4131": {
      "op": "ADD"
    },
    "4132": {
      "op": "MLOAD"
    },
    "4133": {
      "op": "DUP4"
    },
    "4134": {
      "op": "DUP3"
    },
    "4135": {
      "op": "ADD"
    },
    "4136": {
      "op": "MSTORE"
    },
    "4137": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4139": {
      "op": "ADD"
    },
    "4140": {
      "op": "PUSH2",
      "value": "0x1018"
    },
    "4143": {
      "op": "JUMP"
    },
    "4144": {
      "op": "JUMPDEST"
    },
    "4145": {
      "op": "DUP4"
    },
    "4146": {
      "op": "DUP2"
    },
    "4147": {
      "op": "GT"
    },
    "4148": {
      "op": "ISZERO"
    },
    "4149": {
      "op": "PUSH2",
      "value": "0x5D2"
    },
    "4152": {
      "op": "JUMPI"
    },
    "4153": {
      "op": "POP"
    },
    "4154": {
      "op": "POP"
    },
    "4155": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4157": {
      "op": "SWAP2"
    },
    "4158": {
      "op": "ADD"
    },
    "4159": {
      "op": "MSTORE"
    },
    "4160": {
      "jump": "o",
      "op": "JUMP"
    },
    "4161": {
      "op": "JUMPDEST"
    },
    "4162": {
      "op": "PUSH1",
      "value": "0x2"
    },
    "4164": {
      "op": "DUP2"
    },
    "4165": {
      "op": "DIV"
    },
    "4166": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "4168": {
      "op": "DUP3"
    },
    "4169": {
      "op": "AND"
    },
    "4170": {
      "op": "DUP1"
    },
    "4171": {
      "op": "PUSH2",
      "value": "0x1055"
    },
    "4174": {
      "op": "JUMPI"
    },
    "4175": {
      "op": "PUSH1",
      "value": "0x7F"
    },
    "4177": {
      "op": "DUP3"
    },
    "4178": {
      "op": "AND"
    },
    "4179": {
      "op": "SWAP2"
    },
    "4180": {
      "op": "POP"
    },
    "4181": {
      "op": "JUMPDEST"
    },
    "4182": {
      "op": "PUSH1",
      "value": "0x20"
    },
    "4184": {
      "op": "DUP3"
    },
    "4185": {
      "op": "LT"
    },
    "4186": {
      "op": "DUP2"
    },
    "4187": {
      "op": "EQ"
    },
    "4188": {
      "op": "ISZERO"
    },
    "4189": {
      "op": "PUSH2",
      "value": "0x1076"
    },
    "4192": {
      "op": "JUMPI"
    },
    "4193": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "4198": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "4200": {
      "op": "SHL"
    },
    "4201": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4203": {
      "op": "MSTORE"
    },
    "4204": {
      "op": "PUSH1",
      "value": "0x22"
    },
    "4206": {
      "op": "PUSH1",
      "value": "0x4"
    },
    "4208": {
      "op": "MSTORE"
    },
    "4209": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "4211": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4213": {
      "op": "REVERT"
    },
    "4214": {
      "op": "JUMPDEST"
    },
    "4215": {
      "op": "POP"
    },
    "4216": {
      "op": "SWAP2"
    },
    "4217": {
      "op": "SWAP1"
    },
    "4218": {
      "op": "POP"
    },
    "4219": {
      "jump": "o",
      "op": "JUMP"
    },
    "4220": {
      "op": "JUMPDEST"
    },
    "4221": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4223": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4225": {
      "op": "NOT"
    },
    "4226": {
      "op": "DUP3"
    },
    "4227": {
      "op": "EQ"
    },
    "4228": {
      "op": "ISZERO"
    },
    "4229": {
      "op": "PUSH2",
      "value": "0x1090"
    },
    "4232": {
      "op": "JUMPI"
    },
    "4233": {
      "op": "PUSH2",
      "value": "0x1090"
    },
    "4236": {
      "op": "PUSH2",
      "value": "0x10AB"
    },
    "4239": {
      "jump": "i",
      "op": "JUMP"
    },
    "4240": {
      "op": "JUMPDEST"
    },
    "4241": {
      "op": "POP"
    },
    "4242": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "4244": {
      "op": "ADD"
    },
    "4245": {
      "op": "SWAP1"
    },
    "4246": {
      "jump": "o",
      "op": "JUMP"
    },
    "4247": {
      "op": "JUMPDEST"
    },
    "4248": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4250": {
      "op": "DUP3"
    },
    "4251": {
      "op": "PUSH2",
      "value": "0x10A6"
    },
    "4254": {
      "op": "JUMPI"
    },
    "4255": {
      "op": "PUSH2",
      "value": "0x10A6"
    },
    "4258": {
      "op": "PUSH2",
      "value": "0x10C1"
    },
    "4261": {
      "jump": "i",
      "op": "JUMP"
    },
    "4262": {
      "op": "JUMPDEST"
    },
    "4263": {
      "op": "POP"
    },
    "4264": {
      "op": "MOD"
    },
    "4265": {
      "op": "SWAP1"
    },
    "4266": {
      "jump": "o",
      "op": "JUMP"
    },
    "4267": {
      "op": "JUMPDEST"
    },
    "4268": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "4273": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "4275": {
      "op": "SHL"
    },
    "4276": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4278": {
      "op": "MSTORE"
    },
    "4279": {
      "op": "PUSH1",
      "value": "0x11"
    },
    "4281": {
      "op": "PUSH1",
      "value": "0x4"
    },
    "4283": {
      "op": "MSTORE"
    },
    "4284": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "4286": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4288": {
      "op": "REVERT"
    },
    "4289": {
      "op": "JUMPDEST"
    },
    "4290": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "4295": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "4297": {
      "op": "SHL"
    },
    "4298": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4300": {
      "op": "MSTORE"
    },
    "4301": {
      "op": "PUSH1",
      "value": "0x12"
    },
    "4303": {
      "op": "PUSH1",
      "value": "0x4"
    },
    "4305": {
      "op": "MSTORE"
    },
    "4306": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "4308": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4310": {
      "op": "REVERT"
    },
    "4311": {
      "op": "JUMPDEST"
    },
    "4312": {
      "op": "PUSH4",
      "value": "0x4E487B71"
    },
    "4317": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "4319": {
      "op": "SHL"
    },
    "4320": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4322": {
      "op": "MSTORE"
    },
    "4323": {
      "op": "PUSH1",
      "value": "0x41"
    },
    "4325": {
      "op": "PUSH1",
      "value": "0x4"
    },
    "4327": {
      "op": "MSTORE"
    },
    "4328": {
      "op": "PUSH1",
      "value": "0x24"
    },
    "4330": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4332": {
      "op": "REVERT"
    },
    "4333": {
      "op": "JUMPDEST"
    },
    "4334": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "4336": {
      "op": "PUSH1",
      "value": "0x1"
    },
    "4338": {
      "op": "PUSH1",
      "value": "0xE0"
    },
    "4340": {
      "op": "SHL"
    },
    "4341": {
      "op": "SUB"
    },
    "4342": {
      "op": "NOT"
    },
    "4343": {
      "op": "DUP2"
    },
    "4344": {
      "op": "AND"
    },
    "4345": {
      "op": "DUP2"
    },
    "4346": {
      "op": "EQ"
    },
    "4347": {
      "op": "PUSH2",
      "value": "0x6AB"
    },
    "4350": {
      "op": "JUMPI"
    },
    "4351": {
      "op": "PUSH1",
      "value": "0x0"
    },
    "4353": {
      "op": "DUP1"
    },
    "4354": {
      "op": "REVERT"
    }
  },
  "sha1": "176c437a3504e5ce44866ed2fb1312dea872890f",
  "source": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.7.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 = _owners[tokenId];\n        require(owner != address(0), \"ERC721: invalid token ID\");\n        return owner;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-name}.\n     */\n    function name() public view virtual override returns (string memory) {\n        return _name;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-symbol}.\n     */\n    function symbol() public view virtual override returns (string memory) {\n        return _symbol;\n    }\n\n    /**\n     * @dev See {IERC721Metadata-tokenURI}.\n     */\n    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n        _requireMinted(tokenId);\n\n        string memory baseURI = _baseURI();\n        return bytes(baseURI).length > 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : \"\";\n    }\n\n    /**\n     * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n     * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n     * by default, can be overridden in child contracts.\n     */\n    function _baseURI() internal view virtual returns (string memory) {\n        return \"\";\n    }\n\n    /**\n     * @dev See {IERC721-approve}.\n     */\n    function approve(address to, uint256 tokenId) public virtual override {\n        address owner = 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 nor approved for all\"\n        );\n\n        _approve(to, tokenId);\n    }\n\n    /**\n     * @dev See {IERC721-getApproved}.\n     */\n    function getApproved(uint256 tokenId) public view virtual override returns (address) {\n        _requireMinted(tokenId);\n\n        return _tokenApprovals[tokenId];\n    }\n\n    /**\n     * @dev See {IERC721-setApprovalForAll}.\n     */\n    function setApprovalForAll(address operator, bool approved) public virtual override {\n        _setApprovalForAll(_msgSender(), operator, approved);\n    }\n\n    /**\n     * @dev See {IERC721-isApprovedForAll}.\n     */\n    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n        return _operatorApprovals[owner][operator];\n    }\n\n    /**\n     * @dev See {IERC721-transferFrom}.\n     */\n    function transferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public virtual override {\n        //solhint-disable-next-line max-line-length\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner nor approved\");\n\n        _transfer(from, to, tokenId);\n    }\n\n    /**\n     * @dev See {IERC721-safeTransferFrom}.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId\n    ) public virtual override {\n        safeTransferFrom(from, to, tokenId, \"\");\n    }\n\n    /**\n     * @dev See {IERC721-safeTransferFrom}.\n     */\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) public virtual override {\n        require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: caller is not token owner nor approved\");\n        _safeTransfer(from, to, tokenId, data);\n    }\n\n    /**\n     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n     * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n     *\n     * `data` is additional data, it has no specified format and it is sent in call to `to`.\n     *\n     * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n     * implement alternative mechanisms to perform token transfer, such as signature-based.\n     *\n     * Requirements:\n     *\n     * - `from` cannot be the zero address.\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must exist and be owned by `from`.\n     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _safeTransfer(\n        address from,\n        address to,\n        uint256 tokenId,\n        bytes memory data\n    ) internal virtual {\n        _transfer(from, to, tokenId);\n        require(_checkOnERC721Received(from, to, tokenId, data), \"ERC721: transfer to non ERC721Receiver implementer\");\n    }\n\n    /**\n     * @dev Returns whether `tokenId` exists.\n     *\n     * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n     *\n     * Tokens start existing when they are minted (`_mint`),\n     * and stop existing when they are burned (`_burn`).\n     */\n    function _exists(uint256 tokenId) internal view virtual returns (bool) {\n        return _owners[tokenId] != address(0);\n    }\n\n    /**\n     * @dev Returns whether `spender` is allowed to manage `tokenId`.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     */\n    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\n        address owner = 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);\n\n        _balances[to] += 1;\n        _owners[tokenId] = to;\n\n        emit Transfer(address(0), to, tokenId);\n\n        _afterTokenTransfer(address(0), to, tokenId);\n    }\n\n    /**\n     * @dev Destroys `tokenId`.\n     * The approval is cleared when the token is burned.\n     *\n     * Requirements:\n     *\n     * - `tokenId` must exist.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _burn(uint256 tokenId) internal virtual {\n        address owner = ERC721.ownerOf(tokenId);\n\n        _beforeTokenTransfer(owner, address(0), tokenId);\n\n        // Clear approvals\n        _approve(address(0), tokenId);\n\n        _balances[owner] -= 1;\n        delete _owners[tokenId];\n\n        emit Transfer(owner, address(0), tokenId);\n\n        _afterTokenTransfer(owner, address(0), tokenId);\n    }\n\n    /**\n     * @dev Transfers `tokenId` from `from` to `to`.\n     *  As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n     *\n     * Requirements:\n     *\n     * - `to` cannot be the zero address.\n     * - `tokenId` token must be owned by `from`.\n     *\n     * Emits a {Transfer} event.\n     */\n    function _transfer(\n        address from,\n        address to,\n        uint256 tokenId\n    ) internal virtual {\n        require(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);\n\n        // Clear approvals from the previous owner\n        _approve(address(0), tokenId);\n\n        _balances[from] -= 1;\n        _balances[to] += 1;\n        _owners[tokenId] = to;\n\n        emit Transfer(from, to, tokenId);\n\n        _afterTokenTransfer(from, to, tokenId);\n    }\n\n    /**\n     * @dev Approve `to` to operate on `tokenId`\n     *\n     * Emits an {Approval} event.\n     */\n    function _approve(address to, uint256 tokenId) internal virtual {\n        _tokenApprovals[tokenId] = to;\n        emit Approval(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\n     * and burning.\n     *\n     * Calling conditions:\n     *\n     * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n     * transferred to `to`.\n     * - When `from` is zero, `tokenId` will be minted for `to`.\n     * - When `to` is zero, ``from``'s `tokenId` will be burned.\n     * - `from` and `to` are never both zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _beforeTokenTransfer(\n        address from,\n        address to,\n        uint256 tokenId\n    ) internal virtual {}\n\n    /**\n     * @dev Hook that is called after any transfer of tokens. This includes\n     * minting and burning.\n     *\n     * Calling conditions:\n     *\n     * - when `from` and `to` are both non-zero.\n     * - `from` and `to` are never both zero.\n     *\n     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n     */\n    function _afterTokenTransfer(\n        address from,\n        address to,\n        uint256 tokenId\n    ) internal virtual {}\n}\n",
  "sourceMap": "628:13718:6:-:0;;;1390:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1456:13;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;1479:17:6;;;;:7;;:17;;;;;:::i;:::-;;1390:113;;628:13718;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;628:13718:6;;;-1:-1:-1;628:13718:6;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:909:67;;121:3;114:4;106:6;102:17;98:27;88:2;;143:5;136;129:20;88:2;170:13;;-1:-1:-1;;;;;232:10:67;;;229:2;;;245:18;;:::i;:::-;320:2;314:9;288:2;374:13;;-1:-1:-1;;370:22:67;;;394:2;366:31;362:40;350:53;;;418:18;;;438:22;;;415:46;412:2;;;464:18;;:::i;:::-;504:10;500:2;493:22;539:2;531:6;524:18;561:4;551:14;;606:3;601:2;596;588:6;584:15;580:24;577:33;574:2;;;627:5;620;613:20;574:2;653:5;644:14;;667:133;681:2;678:1;675:9;667:133;;;769:14;;;765:23;;759:30;738:14;;;734:23;;727:63;692:10;;;;667:133;;;818:2;815:1;812:9;809:2;;;877:5;872:2;867;859:6;855:15;851:24;844:39;809:2;911:6;78:845;-1:-1:-1;;;;;;78:845:67:o;928:592::-;;;1088:2;1076:9;1067:7;1063:23;1059:32;1056:2;;;1109:6;1101;1094:22;1056:2;1141:16;;-1:-1:-1;;;;;1206:14:67;;;1203:2;;;1238:6;1230;1223:22;1203:2;1266:61;1319:7;1310:6;1299:9;1295:22;1266:61;:::i;:::-;1256:71;;1373:2;1362:9;1358:18;1352:25;1336:41;;1402:2;1392:8;1389:16;1386:2;;;1423:6;1415;1408:22;1386:2;;1451:63;1506:7;1495:8;1484:9;1480:24;1451:63;:::i;:::-;1441:73;;;1046:474;;;;;:::o;1525:380::-;1610:1;1600:12;;1657:1;1647:12;;;1668:2;;1722:4;1714:6;1710:17;1700:27;;1668:2;1775;1767:6;1764:14;1744:18;1741:38;1738:2;;;1821:10;1816:3;1812:20;1809:1;1802:31;1856:4;1853:1;1846:15;1884:4;1881:1;1874:15;1738:2;;1580:325;;;:::o;1910:127::-;1971:10;1966:3;1962:20;1959:1;1952:31;2002:4;1999:1;1992:15;2026:4;2023:1;2016:15;1942:95;628:13718:6;;;;;;",
  "sourcePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/token/ERC721/ERC721.sol",
  "type": "contract"
}