{
  "_format": "hh-sol-artifact-1",
  "contractName": "TestNFT",
  "sourceName": "contracts/TestNFT.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name_",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol_",
          "type": "string"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "ERC721IncorrectOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721InsufficientApproval",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "approver",
          "type": "address"
        }
      ],
      "name": "ERC721InvalidApprover",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "ERC721InvalidOperator",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "ERC721InvalidOwner",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "ERC721InvalidReceiver",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "ERC721InvalidSender",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ERC721NonexistentToken",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "OnlyOwnerCanBurn",
      "type": "error"
    },
    {
      "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": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        }
      ],
      "name": "isApprovedForAll",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5060405161130f38038061130f83398101604081905261002f91610120565b8181600061003d8382610212565b50600161004a8282610212565b5050600680546001600160a01b03191633179055506102d0915050565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261008e57600080fd5b81516001600160401b038111156100a7576100a7610067565b604051601f8201601f19908116603f011681016001600160401b03811182821017156100d5576100d5610067565b6040528181528382016020018510156100ed57600080fd5b60005b8281101561010c576020818601810151838301820152016100f0565b506000918101602001919091529392505050565b6000806040838503121561013357600080fd5b82516001600160401b0381111561014957600080fd5b6101558582860161007d565b602085015190935090506001600160401b0381111561017357600080fd5b61017f8582860161007d565b9150509250929050565b600181811c9082168061019d57607f821691505b6020821081036101bd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561020d57806000526020600020601f840160051c810160208510156101ea5750805b601f840160051c820191505b8181101561020a57600081556001016101f6565b50505b505050565b81516001600160401b0381111561022b5761022b610067565b61023f816102398454610189565b846101c3565b6020601f821160018114610273576000831561025b5750848201515b600019600385901b1c1916600184901b17845561020a565b600084815260208120601f198516915b828110156102a35787850151825560209485019460019092019101610283565b50848210156102c15786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b611030806102df6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806342966c6811610097578063a22cb46511610066578063a22cb465146101ff578063b88d4fde14610212578063c87b56dd14610225578063e985e9c51461023857600080fd5b806342966c68146101b05780636352211e146101c357806370a08231146101d657806395d89b41146101f757600080fd5b8063095ea7b3116100d3578063095ea7b31461016257806323b872dd1461017757806340c10f191461018a57806342842e0e1461019d57600080fd5b806301ffc9a7146100fa57806306fdde0314610122578063081812fc14610137575b600080fd5b61010d610108366004610c97565b61024b565b60405190151581526020015b60405180910390f35b61012a61029d565b6040516101199190610d04565b61014a610145366004610d17565b61032f565b6040516001600160a01b039091168152602001610119565b610175610170366004610d4c565b610358565b005b610175610185366004610d76565b610367565b610175610198366004610d4c565b6103f7565b6101756101ab366004610d76565b610401565b6101756101be366004610d17565b610421565b61014a6101d1366004610d17565b610475565b6101e96101e4366004610db3565b610480565b604051908152602001610119565b61012a6104c8565b61017561020d366004610dce565b6104d7565b610175610220366004610e20565b6104e2565b61012a610233366004610d17565b6104fa565b61010d610246366004610f04565b61056f565b60006001600160e01b031982166380ac58cd60e01b148061027c57506001600160e01b03198216635b5e139f60e01b145b8061029757506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102ac90610f37565b80601f01602080910402602001604051908101604052809291908181526020018280546102d890610f37565b80156103255780601f106102fa57610100808354040283529160200191610325565b820191906000526020600020905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b600061033a8261059d565b506000828152600460205260409020546001600160a01b0316610297565b6103638282336105d6565b5050565b6001600160a01b03821661039657604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103a38383336105e3565b9050836001600160a01b0316816001600160a01b0316146103f1576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161038d565b50505050565b61036382826106dc565b61041c838383604051806020016040528060008152506104e2565b505050565b3361042b82610475565b6001600160a01b03161461043e82610475565b9061046857604051638ac985cd60e01b81526001600160a01b03909116600482015260240161038d565b5061047281610741565b50565b60006102978261059d565b60006001600160a01b0382166104ac576040516322718ad960e21b81526000600482015260240161038d565b506001600160a01b031660009081526003602052604090205490565b6060600180546102ac90610f37565b61036333838361077c565b6104ed848484610367565b6103f1338585858561081b565b60606105058261059d565b50600061051d60408051602081019091526000815290565b9050600081511161053d5760405180602001604052806000815250610568565b8061054784610946565b604051602001610558929190610f71565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260408120546001600160a01b03168061029757604051637e27328960e01b81526004810184905260240161038d565b61041c83838360016109d9565b6000828152600260205260408120546001600160a01b039081169083161561061057610610818486610adf565b6001600160a01b0381161561064e5761062d6000856000806109d9565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561067d576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6001600160a01b03821661070657604051633250574960e11b81526000600482015260240161038d565b6000610714838360006105e3565b90506001600160a01b0381161561041c576040516339e3563760e11b81526000600482015260240161038d565b600061075060008360006105e3565b90506001600160a01b03811661036357604051637e27328960e01b81526004810183905260240161038d565b6001600160a01b0382166107ae57604051630b61174360e31b81526001600160a01b038316600482015260240161038d565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561093f57604051630a85bd0160e11b81526001600160a01b0384169063150b7a029061085d908890889087908790600401610fa0565b6020604051808303816000875af1925050508015610898575060408051601f3d908101601f1916820190925261089591810190610fdd565b60015b610901573d8080156108c6576040519150601f19603f3d011682016040523d82523d6000602084013e6108cb565b606091505b5080516000036108f957604051633250574960e11b81526001600160a01b038516600482015260240161038d565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461093d57604051633250574960e11b81526001600160a01b038516600482015260240161038d565b505b5050505050565b6060600061095383610b43565b600101905060008167ffffffffffffffff81111561097357610973610e0a565b6040519080825280601f01601f19166020018201604052801561099d576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846109a757509392505050565b80806109ed57506001600160a01b03821615155b15610aaf5760006109fd8461059d565b90506001600160a01b03831615801590610a295750826001600160a01b0316816001600160a01b031614155b8015610a3c5750610a3a818461056f565b155b15610a655760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161038d565b8115610aad5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610aea838383610c1b565b61041c576001600160a01b038316610b1857604051637e27328960e01b81526004810182905260240161038d565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161038d565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610b825772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610bae576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610bcc57662386f26fc10000830492506010015b6305f5e1008310610be4576305f5e100830492506008015b6127108310610bf857612710830492506004015b60648310610c0a576064830492506002015b600a83106102975760010192915050565b60006001600160a01b03831615801590610c795750826001600160a01b0316846001600160a01b03161480610c555750610c55848461056f565b80610c7957506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160e01b03198116811461047257600080fd5b600060208284031215610ca957600080fd5b813561056881610c81565b60005b83811015610ccf578181015183820152602001610cb7565b50506000910152565b60008151808452610cf0816020860160208601610cb4565b601f01601f19169290920160200192915050565b6020815260006105686020830184610cd8565b600060208284031215610d2957600080fd5b5035919050565b80356001600160a01b0381168114610d4757600080fd5b919050565b60008060408385031215610d5f57600080fd5b610d6883610d30565b946020939093013593505050565b600080600060608486031215610d8b57600080fd5b610d9484610d30565b9250610da260208501610d30565b929592945050506040919091013590565b600060208284031215610dc557600080fd5b61056882610d30565b60008060408385031215610de157600080fd5b610dea83610d30565b915060208301358015158114610dff57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610e3657600080fd5b610e3f85610d30565b9350610e4d60208601610d30565b925060408501359150606085013567ffffffffffffffff811115610e7057600080fd5b8501601f81018713610e8157600080fd5b803567ffffffffffffffff811115610e9b57610e9b610e0a565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610eca57610eca610e0a565b604052818152828201602001891015610ee257600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610f1757600080fd5b610f2083610d30565b9150610f2e60208401610d30565b90509250929050565b600181811c90821680610f4b57607f821691505b602082108103610f6b57634e487b7160e01b600052602260045260246000fd5b50919050565b60008351610f83818460208801610cb4565b835190830190610f97818360208801610cb4565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090610fd390830184610cd8565b9695505050505050565b600060208284031215610fef57600080fd5b815161056881610c8156fea264697066735822122080a6cfc6422ca488b02c32d780767055c6b4c7b24dfce86db77bf844aef1c06764736f6c634300081c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f55760003560e01c806342966c6811610097578063a22cb46511610066578063a22cb465146101ff578063b88d4fde14610212578063c87b56dd14610225578063e985e9c51461023857600080fd5b806342966c68146101b05780636352211e146101c357806370a08231146101d657806395d89b41146101f757600080fd5b8063095ea7b3116100d3578063095ea7b31461016257806323b872dd1461017757806340c10f191461018a57806342842e0e1461019d57600080fd5b806301ffc9a7146100fa57806306fdde0314610122578063081812fc14610137575b600080fd5b61010d610108366004610c97565b61024b565b60405190151581526020015b60405180910390f35b61012a61029d565b6040516101199190610d04565b61014a610145366004610d17565b61032f565b6040516001600160a01b039091168152602001610119565b610175610170366004610d4c565b610358565b005b610175610185366004610d76565b610367565b610175610198366004610d4c565b6103f7565b6101756101ab366004610d76565b610401565b6101756101be366004610d17565b610421565b61014a6101d1366004610d17565b610475565b6101e96101e4366004610db3565b610480565b604051908152602001610119565b61012a6104c8565b61017561020d366004610dce565b6104d7565b610175610220366004610e20565b6104e2565b61012a610233366004610d17565b6104fa565b61010d610246366004610f04565b61056f565b60006001600160e01b031982166380ac58cd60e01b148061027c57506001600160e01b03198216635b5e139f60e01b145b8061029757506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600080546102ac90610f37565b80601f01602080910402602001604051908101604052809291908181526020018280546102d890610f37565b80156103255780601f106102fa57610100808354040283529160200191610325565b820191906000526020600020905b81548152906001019060200180831161030857829003601f168201915b5050505050905090565b600061033a8261059d565b506000828152600460205260409020546001600160a01b0316610297565b6103638282336105d6565b5050565b6001600160a01b03821661039657604051633250574960e11b8152600060048201526024015b60405180910390fd5b60006103a38383336105e3565b9050836001600160a01b0316816001600160a01b0316146103f1576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161038d565b50505050565b61036382826106dc565b61041c838383604051806020016040528060008152506104e2565b505050565b3361042b82610475565b6001600160a01b03161461043e82610475565b9061046857604051638ac985cd60e01b81526001600160a01b03909116600482015260240161038d565b5061047281610741565b50565b60006102978261059d565b60006001600160a01b0382166104ac576040516322718ad960e21b81526000600482015260240161038d565b506001600160a01b031660009081526003602052604090205490565b6060600180546102ac90610f37565b61036333838361077c565b6104ed848484610367565b6103f1338585858561081b565b60606105058261059d565b50600061051d60408051602081019091526000815290565b9050600081511161053d5760405180602001604052806000815250610568565b8061054784610946565b604051602001610558929190610f71565b6040516020818303038152906040525b9392505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000818152600260205260408120546001600160a01b03168061029757604051637e27328960e01b81526004810184905260240161038d565b61041c83838360016109d9565b6000828152600260205260408120546001600160a01b039081169083161561061057610610818486610adf565b6001600160a01b0381161561064e5761062d6000856000806109d9565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b0385161561067d576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6001600160a01b03821661070657604051633250574960e11b81526000600482015260240161038d565b6000610714838360006105e3565b90506001600160a01b0381161561041c576040516339e3563760e11b81526000600482015260240161038d565b600061075060008360006105e3565b90506001600160a01b03811661036357604051637e27328960e01b81526004810183905260240161038d565b6001600160a01b0382166107ae57604051630b61174360e31b81526001600160a01b038316600482015260240161038d565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0383163b1561093f57604051630a85bd0160e11b81526001600160a01b0384169063150b7a029061085d908890889087908790600401610fa0565b6020604051808303816000875af1925050508015610898575060408051601f3d908101601f1916820190925261089591810190610fdd565b60015b610901573d8080156108c6576040519150601f19603f3d011682016040523d82523d6000602084013e6108cb565b606091505b5080516000036108f957604051633250574960e11b81526001600160a01b038516600482015260240161038d565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461093d57604051633250574960e11b81526001600160a01b038516600482015260240161038d565b505b5050505050565b6060600061095383610b43565b600101905060008167ffffffffffffffff81111561097357610973610e0a565b6040519080825280601f01601f19166020018201604052801561099d576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846109a757509392505050565b80806109ed57506001600160a01b03821615155b15610aaf5760006109fd8461059d565b90506001600160a01b03831615801590610a295750826001600160a01b0316816001600160a01b031614155b8015610a3c5750610a3a818461056f565b155b15610a655760405163a9fbf51f60e01b81526001600160a01b038416600482015260240161038d565b8115610aad5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b610aea838383610c1b565b61041c576001600160a01b038316610b1857604051637e27328960e01b81526004810182905260240161038d565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161038d565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610b825772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610bae576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610bcc57662386f26fc10000830492506010015b6305f5e1008310610be4576305f5e100830492506008015b6127108310610bf857612710830492506004015b60648310610c0a576064830492506002015b600a83106102975760010192915050565b60006001600160a01b03831615801590610c795750826001600160a01b0316846001600160a01b03161480610c555750610c55848461056f565b80610c7957506000828152600460205260409020546001600160a01b038481169116145b949350505050565b6001600160e01b03198116811461047257600080fd5b600060208284031215610ca957600080fd5b813561056881610c81565b60005b83811015610ccf578181015183820152602001610cb7565b50506000910152565b60008151808452610cf0816020860160208601610cb4565b601f01601f19169290920160200192915050565b6020815260006105686020830184610cd8565b600060208284031215610d2957600080fd5b5035919050565b80356001600160a01b0381168114610d4757600080fd5b919050565b60008060408385031215610d5f57600080fd5b610d6883610d30565b946020939093013593505050565b600080600060608486031215610d8b57600080fd5b610d9484610d30565b9250610da260208501610d30565b929592945050506040919091013590565b600060208284031215610dc557600080fd5b61056882610d30565b60008060408385031215610de157600080fd5b610dea83610d30565b915060208301358015158114610dff57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610e3657600080fd5b610e3f85610d30565b9350610e4d60208601610d30565b925060408501359150606085013567ffffffffffffffff811115610e7057600080fd5b8501601f81018713610e8157600080fd5b803567ffffffffffffffff811115610e9b57610e9b610e0a565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610eca57610eca610e0a565b604052818152828201602001891015610ee257600080fd5b8160208401602083013760006020838301015280935050505092959194509250565b60008060408385031215610f1757600080fd5b610f2083610d30565b9150610f2e60208401610d30565b90509250929050565b600181811c90821680610f4b57607f821691505b602082108103610f6b57634e487b7160e01b600052602260045260246000fd5b50919050565b60008351610f83818460208801610cb4565b835190830190610f97818360208801610cb4565b01949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090610fd390830184610cd8565b9695505050505050565b600060208284031215610fef57600080fd5b815161056881610c8156fea264697066735822122080a6cfc6422ca488b02c32d780767055c6b4c7b24dfce86db77bf844aef1c06764736f6c634300081c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
