2024-07-01 16:28:42 +08:00

696 lines
42 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "NFTLock",
"sourceName": "contracts/game/NFTLock.sol",
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "_duration",
"type": "uint256"
},
{
"internalType": "address",
"name": "_verifier",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "duration",
"type": "uint256"
}
],
"name": "DurationUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "nft",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "tokenIds",
"type": "uint256[]"
}
],
"name": "Lock",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Paused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "nft",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "nonce",
"type": "uint256"
},
{
"components": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "bool",
"name": "isMint",
"type": "bool"
}
],
"indexed": false,
"internalType": "struct NFTLock.NFTInfo[]",
"name": "nftList",
"type": "tuple[]"
}
],
"name": "UnLock",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Unpaused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "verifier",
"type": "address"
}
],
"name": "VerifierUpdated",
"type": "event"
},
{
"inputs": [],
"name": "_CACHED_CHAIN_ID",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "_CACHED_THIS",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "nftList",
"type": "address[]"
}
],
"name": "addSupportNftList",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "nft",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "addressOriginal",
"outputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "signer",
"type": "address"
},
{
"internalType": "bytes32",
"name": "hash",
"type": "bytes32"
},
{
"internalType": "bytes",
"name": "signature",
"type": "bytes"
}
],
"name": "checkSigner",
"outputs": [],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [],
"name": "duration",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_to",
"type": "address"
},
{
"internalType": "address",
"name": "_nft",
"type": "address"
},
{
"components": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "bool",
"name": "isMint",
"type": "bool"
}
],
"internalType": "struct NFTLock.NFTInfo[]",
"name": "_ids",
"type": "tuple[]"
},
{
"internalType": "address",
"name": "_contract",
"type": "address"
},
{
"internalType": "uint256",
"name": "_chainId",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_signTime",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_saltNonce",
"type": "uint256"
}
],
"name": "getMessageHash",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "nft",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "tokenIds",
"type": "uint256[]"
}
],
"name": "lock",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "lockedNft",
"outputs": [
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
},
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "lockedNum",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "maxBatch",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "minDuration",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC721Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "nft",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "passportOriginal",
"outputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "paused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "nftAddress",
"type": "address"
}
],
"name": "removeSupportNft",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "nft",
"type": "address"
}
],
"name": "supportNftList",
"outputs": [
{
"internalType": "bool",
"name": "status",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "nft",
"type": "address"
},
{
"components": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "bool",
"name": "isMint",
"type": "bool"
}
],
"internalType": "struct NFTLock.NFTInfo[]",
"name": "nftList",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "signTime",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "saltNonce",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "signature",
"type": "bytes"
}
],
"name": "unlockOrMint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "nft",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "tokenIds",
"type": "uint256[]"
}
],
"name": "unlockWithSvr",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_maxBatch",
"type": "uint256"
}
],
"name": "updateBatch",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "valNew",
"type": "uint256"
}
],
"name": "updateDuation",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_verifier",
"type": "address"
}
],
"name": "updateVerifier",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "verifier",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60c0346100fb57601f611c6b38819003918201601f19168301916001600160401b038311848410176101005780849260409485528339810103126100fb5780516020909101516001600160a01b039182821682036100fb576000543360018060a01b0319821617600055604051933391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600255610708600355600480546064600555466080523060a0526001600160a81b03191660089290921b610100600160a81b0316919091179055611b54908161011782396080518181816109840152610fd7015260a05181818161021b01526109a60152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604081815260048036101561001557600080fd5b600092833560e01c9081630fb5a6b4146112015750806312750292146111c3578063150b7a021461116e578063230fb7fe14610ffa5780632b437d4814610fbf5780632b7ac3f314610f9457806338e2c2eb14610f725780635671576114610f535780635c975abb14610f305780635fb110ca14610ea957806367765b8714610e8a5780636d04319414610e3d578063715018a614610de357806376bd0cfd14610890578063799048fa146108075780637f9d30961461077b5780638da5cb5b1461075357806397fc007c1461068a5780639a14da5814610646578063a0634724146105fd578063bdfe78c9146105b9578063c419028f146103a0578063ce3d1b2d14610313578063d13344c91461024e578063da28b527146102065763f2fde38b1461014157600080fd5b346102025760203660031901126102025761015a61121d565b9061016361141d565b6001600160a01b039182169283156101b057505082546001600160a01b0319811683178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8280fd5b50503461024a578160031936011261024a57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5080fd5b8284346103105781600319360112610310579061026961121d565b91610272611238565b6001600160a01b039384168252600860209081528383209190941682528352818120825181548082529183528483208186019392849190845b8181106102fc57505050816102c19103826112a6565b83519485948186019282875251809352850193925b8281106102e557505050500390f35b8351855286955093810193928101926001016102d6565b8254845292880192600192830192016102ab565b80fd5b50346102025760e03660031901126102025761032d61121d565b610335611238565b91604435906001600160401b03821161039c573660238301121561039c5781602461036593369301359101611368565b93606435906001600160a01b0382168203610310575091602094916103959360c4359360a4359360843593611a0d565b9051908152f35b8580fd5b5034610202576060366003190112610202576103ba61121d565b916103c3611238565b916044356001600160401b03811161039c576103e2903690830161132b565b91909360ff825416610583576103fc6005548411156116e5565b6001600160a01b0390811695610413871515611725565b16928387526020916009835261042e60ff838a205416611725565b875b84811061048d57505080518281529182018390526001600160fb1b038311610489577f356278d4d01db4ac9a53decc4eeeceecfb494d3bd0c463b305d33e65305e2bf29260051b8095828401378133958101030190a480f35b8680fd5b858952600684528289206104a282878a611788565b358a52845282892080546001600160a01b03199081168a17909155868a5260078552838a206104d283888b611788565b358b528552838a2090339082541617905585895260088452828920888a52845261050a838a2061050383888b611788565b35906117c6565b50610516818689611788565b3589873b156103105784516323b872dd60e01b815233858201908152306020820152604081019390935291829081906060010381838b5af180156105795790610565929161056a575b50611763565b610430565b61057390611262565b3861055f565b84513d8c823e3d90fd5b835162461bcd60e51b8152602081840152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606490fd5b50503461024a578060031936011261024a576020916001600160a01b03908290826105e261121d565b16815260078552818120602435825285522054169051908152f35b50503461024a578060031936011261024a578060209261061b61121d565b610623611238565b6001600160a01b0391821683526008865283832091168252845220549051908152f35b50503461024a578060031936011261024a576020916001600160a01b039082908261066f61121d565b16815260068552818120602435825285522054169051908152f35b5034610202576020366003190112610202576106a461121d565b6106ac61141d565b6001600160a01b03811692831561070557508154610100600160a81b03191660089190911b610100600160a81b03161790557fd24015cc99cc1700cafca3042840a1d8ac1e3964fd2e0e37ea29c654056ee3278280a280f35b5162461bcd60e51b8152602081840152602360248201527f4e4654436c61696d65723a20616464726573732063616e206e6f74206265207a60448201526265726f60e81b6064820152608490fd5b50503461024a578160031936011261024a57905490516001600160a01b039091168152602090f35b50346102025760203660031901126102025780359161079861141d565b6003548311156107cf575050806002557f91abcc2d6823e3a3f11d31b208dd3065d2c6a791f1c7c9fe96a42ce12897eac58280a280f35b906020606492519162461bcd60e51b83528201526012602482015271191d5c985d1a5bdb881d1bdbc81cda1bdc9d60721b6044820152fd5b50346102025760203660031901126102025761082161121d565b61082961141d565b6001600160a01b031680845260096020528284205490919060ff161561085e5750825260096020528120805460ff1916905580f35b606490602084519162461bcd60e51b8352820152600c60248201526b63616e27742072656d6f766560a01b6044820152fd5b5090346102025760a0366003190112610202576108ab61121d565b916024916001600160401b039083358281116104895736602382011215610489578084013590838211610ddf5785810195606091813691848602010111610ddb576044938435946064359760843591888311610dd75736602384011215610dd75782820135988911610dd75784830192858a3692010111610dd757835194898487378986019860ff8760019b8c81526020998a91030190205416610d65576002548101808211610d52574211610ceb57908d8f93928d908f6005548d1115610972906116e5565b8c369061097e92611368565b6109cc937f0000000000000000000000000000000000000000000000000000000000000000917f00000000000000000000000000000000000000000000000000000000000000009133611a0d565b9a87855496366109dd9084836112c7565b9d600160a01b600190039e8f60089a8b1c16916109f992611475565b885182818f86858337868201908152030190205460ff1615610cc8575b505050829998979695995b8d898210610abc57505050505050508285519786890190895286838a01525281870197948a915b848310610a7d578b33898d167f9a5ba7d70cc7e1cd613eb99e6ed8ea301d889773c9d4517218560eee5153803e8c8e038da380f35b90919293948480889b610aa7868b869c3584528d610a9c89830161124e565b16888501520161135b565b151581870152019a0196959493019190610a48565b9a610acd828b839a9b9c9d9e611850565b01358015158103610cc4578f8f9190898f928e8d878b93600014610b6757505050505016610b11838d610b0b8d610b05848489611850565b01611898565b94611850565b3591813b1561048957858f918880948d5196879586946340c10f1960e01b8652168d850152898401525af18015610b5d5790610b52929161056a5750611763565b999897969599610a21565b88513d87823e3d90fd5b8691610b05610bd1928487999a610bd898999c9b169b8c8a528b610b94848a8460069e8f8b522093611850565b358c528552610baa8b8383339220541614611860565b8c8b5260079a8b86528c610bc2858b85852093611850565b3582528652205416958a611850565b1614611860565b8388528b52898720610beb858f85611850565b3588528b5289872080546001600160a01b0319908116909155838852908b52898720610c18858f85611850565b3588528b52898720908154169055818652878a528886203387528a52610c4d8c610c46858c8a209285611850565b35906118ac565b50610c68838d610c628d610b05848488611850565b93611850565b35823b156104895789516323b872dd60e01b815230818a019081526001600160a01b039093166020840152604083019190915291869183919082908490829060600103925af18015610b5d5790610b52929161056a5750611763565b8480fd5b828951938492833781018d815203019020805460ff19168b179055388781610a16565b855162461bcd60e51b8152808501889052603b818401527f657870697265642c20706c656173652073656e6420616e6f7468657220747261818501527f6e73616374696f6e2077697468206e6577207369676e617475726500000000006064820152608490fd5b5050634e487b7160e01b8e52601183528dfd5b855162461bcd60e51b81528085018890526042818401527f7369676e617475726520757365642e20706c656173652073656e6420616e6f74818501527f686572207472616e73616374696f6e2077697468206e6577207369676e617475606482015261726560f01b608482015260a490fd5b8c80fd5b8880fd5b8780fd5b8334610310578060031936011261031057610dfc61141d565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b83823461024a57606036600319011261024a57610e5861121d565b6044356001600160401b038111610e8657610e8392610e799136910161130d565b9060243590611475565b80f35b8380fd5b50503461024a578160031936011261024a576020906005549051908152f35b5090346102025760209182600319360112610e86578035906001600160401b038211610cc457610edb9136910161132b565b9290610ee561141d565b845b848110610ef2578580f35b610f2b906001600160a01b03610f11610f0c838987611788565b611898565b16875260098452848720805460ff19166001179055611763565b610ee7565b5091346103105780600319360112610310575060ff602092541690519015158152f35b50503461024a578160031936011261024a576020906003549051908152f35b83823461024a57602036600319011261024a57610f8d61141d565b3560055580f35b503461020257826003193601126102025754905160089190911c6001600160a01b0316815260209150f35b50503461024a578160031936011261024a57602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b503461020257816003193601126102025761101361121d565b91836024356001600160401b03811161024a57611033903690850161132b565b61103e95919561141d565b61104c6005548211156116e5565b6001600160a01b0391821690835b818110611065578480f35b8285526007602081815287872061107d84868d611788565b358852815285888820541691858852600682528a61109f85878c8c2093611788565b358952825288882080546001600160a01b03199081169091558689529082528888206110cc85878e611788565b35895282528888209081541690558487526008815287872090828852526110fa878720610c4684868d611788565b5061110682848b611788565b3590843b156104895787516323b872dd60e01b8152308a82019081526001600160a01b0390921660208301526040820192909252869082908190606001038183885af18015611164579061115f929161056a5750611763565b61105a565b87513d88823e3d90fd5b5091346103105760803660031901126103105761118961121d565b50611192611238565b50606435906001600160401b03821161031057506020926111b59136910161130d565b5051630a85bd0160e11b8152f35b50503461024a57602036600319011261024a5760209160ff9082906001600160a01b036111ee61121d565b1681526009855220541690519015158152f35b84903461024a578160031936011261024a576020906002548152f35b600435906001600160a01b038216820361123357565b600080fd5b602435906001600160a01b038216820361123357565b35906001600160a01b038216820361123357565b6001600160401b03811161127557604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761127557604052565b90601f801991011681019081106001600160401b0382111761127557604052565b9291926001600160401b03821161127557604051916112f0601f8201601f1916602001846112a6565b829481845281830111611233578281602093846000960137010152565b9080601f8301121561123357816020611328933591016112c7565b90565b9181601f84011215611233578235916001600160401b038311611233576020808501948460051b01011161123357565b3590811515820361123357565b6001600160401b03939284831161127557604090815195602092611391848760051b01896112a6565b83888781520192606080970286019581871161123357935b8685106113ba575050505050505050565b878583031261123357825190888201908282108683111761140857899288928652873581526113ea83890161124e565b838201526113f986890161135b565b868201528152019401936113a9565b60246000634e487b7160e01b81526041600452fd5b6000546001600160a01b0316330361143157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b906114b7926114af917f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c60002061161e565b929092611504565b6001600160a01b039081169116036114cb57565b60405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b6044820152606490fd5b600581101561160857806115155750565b600181036115625760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b600281036115af5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146115b857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b634e487b7160e01b600052602160045260246000fd5b90604181511460001461164c57611648916020820151906060604084015193015160001a90611656565b9091565b5050600090600290565b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116116d95791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156116cc5781516001600160a01b038116156116c6579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b156116ec57565b60405162461bcd60e51b8152602060048201526011602482015270746f6b656e49647320746f6f206d616e7960781b6044820152606490fd5b1561172c57565b60405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081cdd5c1c1bdc9d081b999d608a1b6044820152606490fd5b60001981146117725760010190565b634e487b7160e01b600052601160045260246000fd5b91908110156117985760051b0190565b634e487b7160e01b600052603260045260246000fd5b80548210156117985760005260206000200190600090565b9190600183016000908282528060205260408220541560001461184a5784549468010000000000000000861015611836578361182661180f886001604098999a018555846117ae565b819391549060031b91821b91600019901b19161790565b9055549382526020522055600190565b634e487b7160e01b83526041600452602483fd5b50925050565b9190811015611798576060020190565b1561186757565b60405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b6044820152606490fd5b356001600160a01b03811681036112335790565b9060018201906000928184528260205260408420549081151560001461199557600019918083018181116119815782549084820191821161196d57808203611938575b505050805480156119245782019161190783836117ae565b909182549160031b1b191690555582526020526040812055600190565b634e487b7160e01b86526031600452602486fd5b61195861194861180f93866117ae565b90549060031b1c928392866117ae565b905586528460205260408620553880806118ef565b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b87526011600452602487fd5b5050505090565b80518210156117985760209160051b010190565b9081519160005b8381106119c8575050016000815290565b80602080928401015181850152016119b7565b611a0b906119fd6119f7949360405195869360208501906119b0565b906119b0565b03601f1981018452836112a6565b565b939092919496956040978851926bffffffffffffffffffffffff198095816060988160209b8b1b168b890152891b166034870152871b166048850152605c840152607c830152609c820152609c815260c081018181106001600160401b038211176112755787526000905b8551821015611b0e57611b02611ada611ab3611b0893611a98868b61199c565b5151908c51918a830152898252611aae8261128b565b6119db565b87611abe868b61199c565b51015190868c5192891b168983015260148252611aae8261128b565b89611ae5858a61199c565b5101511515908a519160f81b8883015260018252611aae8261128b565b91611763565b90611a78565b959650505050905081519101209056fea26469706673582212202ec6c1dbc7ff13a84f5b0a731d10b9e918fc8edf4084e389bbf967e329f2e5c964736f6c63430008130033",
"deployedBytecode": "0x6080604081815260048036101561001557600080fd5b600092833560e01c9081630fb5a6b4146112015750806312750292146111c3578063150b7a021461116e578063230fb7fe14610ffa5780632b437d4814610fbf5780632b7ac3f314610f9457806338e2c2eb14610f725780635671576114610f535780635c975abb14610f305780635fb110ca14610ea957806367765b8714610e8a5780636d04319414610e3d578063715018a614610de357806376bd0cfd14610890578063799048fa146108075780637f9d30961461077b5780638da5cb5b1461075357806397fc007c1461068a5780639a14da5814610646578063a0634724146105fd578063bdfe78c9146105b9578063c419028f146103a0578063ce3d1b2d14610313578063d13344c91461024e578063da28b527146102065763f2fde38b1461014157600080fd5b346102025760203660031901126102025761015a61121d565b9061016361141d565b6001600160a01b039182169283156101b057505082546001600160a01b0319811683178455167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b906020608492519162461bcd60e51b8352820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8280fd5b50503461024a578160031936011261024a57517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5080fd5b8284346103105781600319360112610310579061026961121d565b91610272611238565b6001600160a01b039384168252600860209081528383209190941682528352818120825181548082529183528483208186019392849190845b8181106102fc57505050816102c19103826112a6565b83519485948186019282875251809352850193925b8281106102e557505050500390f35b8351855286955093810193928101926001016102d6565b8254845292880192600192830192016102ab565b80fd5b50346102025760e03660031901126102025761032d61121d565b610335611238565b91604435906001600160401b03821161039c573660238301121561039c5781602461036593369301359101611368565b93606435906001600160a01b0382168203610310575091602094916103959360c4359360a4359360843593611a0d565b9051908152f35b8580fd5b5034610202576060366003190112610202576103ba61121d565b916103c3611238565b916044356001600160401b03811161039c576103e2903690830161132b565b91909360ff825416610583576103fc6005548411156116e5565b6001600160a01b0390811695610413871515611725565b16928387526020916009835261042e60ff838a205416611725565b875b84811061048d57505080518281529182018390526001600160fb1b038311610489577f356278d4d01db4ac9a53decc4eeeceecfb494d3bd0c463b305d33e65305e2bf29260051b8095828401378133958101030190a480f35b8680fd5b858952600684528289206104a282878a611788565b358a52845282892080546001600160a01b03199081168a17909155868a5260078552838a206104d283888b611788565b358b528552838a2090339082541617905585895260088452828920888a52845261050a838a2061050383888b611788565b35906117c6565b50610516818689611788565b3589873b156103105784516323b872dd60e01b815233858201908152306020820152604081019390935291829081906060010381838b5af180156105795790610565929161056a575b50611763565b610430565b61057390611262565b3861055f565b84513d8c823e3d90fd5b835162461bcd60e51b8152602081840152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606490fd5b50503461024a578060031936011261024a576020916001600160a01b03908290826105e261121d565b16815260078552818120602435825285522054169051908152f35b50503461024a578060031936011261024a578060209261061b61121d565b610623611238565b6001600160a01b0391821683526008865283832091168252845220549051908152f35b50503461024a578060031936011261024a576020916001600160a01b039082908261066f61121d565b16815260068552818120602435825285522054169051908152f35b5034610202576020366003190112610202576106a461121d565b6106ac61141d565b6001600160a01b03811692831561070557508154610100600160a81b03191660089190911b610100600160a81b03161790557fd24015cc99cc1700cafca3042840a1d8ac1e3964fd2e0e37ea29c654056ee3278280a280f35b5162461bcd60e51b8152602081840152602360248201527f4e4654436c61696d65723a20616464726573732063616e206e6f74206265207a60448201526265726f60e81b6064820152608490fd5b50503461024a578160031936011261024a57905490516001600160a01b039091168152602090f35b50346102025760203660031901126102025780359161079861141d565b6003548311156107cf575050806002557f91abcc2d6823e3a3f11d31b208dd3065d2c6a791f1c7c9fe96a42ce12897eac58280a280f35b906020606492519162461bcd60e51b83528201526012602482015271191d5c985d1a5bdb881d1bdbc81cda1bdc9d60721b6044820152fd5b50346102025760203660031901126102025761082161121d565b61082961141d565b6001600160a01b031680845260096020528284205490919060ff161561085e5750825260096020528120805460ff1916905580f35b606490602084519162461bcd60e51b8352820152600c60248201526b63616e27742072656d6f766560a01b6044820152fd5b5090346102025760a0366003190112610202576108ab61121d565b916024916001600160401b039083358281116104895736602382011215610489578084013590838211610ddf5785810195606091813691848602010111610ddb576044938435946064359760843591888311610dd75736602384011215610dd75782820135988911610dd75784830192858a3692010111610dd757835194898487378986019860ff8760019b8c81526020998a91030190205416610d65576002548101808211610d52574211610ceb57908d8f93928d908f6005548d1115610972906116e5565b8c369061097e92611368565b6109cc937f0000000000000000000000000000000000000000000000000000000000000000917f00000000000000000000000000000000000000000000000000000000000000009133611a0d565b9a87855496366109dd9084836112c7565b9d600160a01b600190039e8f60089a8b1c16916109f992611475565b885182818f86858337868201908152030190205460ff1615610cc8575b505050829998979695995b8d898210610abc57505050505050508285519786890190895286838a01525281870197948a915b848310610a7d578b33898d167f9a5ba7d70cc7e1cd613eb99e6ed8ea301d889773c9d4517218560eee5153803e8c8e038da380f35b90919293948480889b610aa7868b869c3584528d610a9c89830161124e565b16888501520161135b565b151581870152019a0196959493019190610a48565b9a610acd828b839a9b9c9d9e611850565b01358015158103610cc4578f8f9190898f928e8d878b93600014610b6757505050505016610b11838d610b0b8d610b05848489611850565b01611898565b94611850565b3591813b1561048957858f918880948d5196879586946340c10f1960e01b8652168d850152898401525af18015610b5d5790610b52929161056a5750611763565b999897969599610a21565b88513d87823e3d90fd5b8691610b05610bd1928487999a610bd898999c9b169b8c8a528b610b94848a8460069e8f8b522093611850565b358c528552610baa8b8383339220541614611860565b8c8b5260079a8b86528c610bc2858b85852093611850565b3582528652205416958a611850565b1614611860565b8388528b52898720610beb858f85611850565b3588528b5289872080546001600160a01b0319908116909155838852908b52898720610c18858f85611850565b3588528b52898720908154169055818652878a528886203387528a52610c4d8c610c46858c8a209285611850565b35906118ac565b50610c68838d610c628d610b05848488611850565b93611850565b35823b156104895789516323b872dd60e01b815230818a019081526001600160a01b039093166020840152604083019190915291869183919082908490829060600103925af18015610b5d5790610b52929161056a5750611763565b8480fd5b828951938492833781018d815203019020805460ff19168b179055388781610a16565b855162461bcd60e51b8152808501889052603b818401527f657870697265642c20706c656173652073656e6420616e6f7468657220747261818501527f6e73616374696f6e2077697468206e6577207369676e617475726500000000006064820152608490fd5b5050634e487b7160e01b8e52601183528dfd5b855162461bcd60e51b81528085018890526042818401527f7369676e617475726520757365642e20706c656173652073656e6420616e6f74818501527f686572207472616e73616374696f6e2077697468206e6577207369676e617475606482015261726560f01b608482015260a490fd5b8c80fd5b8880fd5b8780fd5b8334610310578060031936011261031057610dfc61141d565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b83823461024a57606036600319011261024a57610e5861121d565b6044356001600160401b038111610e8657610e8392610e799136910161130d565b9060243590611475565b80f35b8380fd5b50503461024a578160031936011261024a576020906005549051908152f35b5090346102025760209182600319360112610e86578035906001600160401b038211610cc457610edb9136910161132b565b9290610ee561141d565b845b848110610ef2578580f35b610f2b906001600160a01b03610f11610f0c838987611788565b611898565b16875260098452848720805460ff19166001179055611763565b610ee7565b5091346103105780600319360112610310575060ff602092541690519015158152f35b50503461024a578160031936011261024a576020906003549051908152f35b83823461024a57602036600319011261024a57610f8d61141d565b3560055580f35b503461020257826003193601126102025754905160089190911c6001600160a01b0316815260209150f35b50503461024a578160031936011261024a57602090517f00000000000000000000000000000000000000000000000000000000000000008152f35b503461020257816003193601126102025761101361121d565b91836024356001600160401b03811161024a57611033903690850161132b565b61103e95919561141d565b61104c6005548211156116e5565b6001600160a01b0391821690835b818110611065578480f35b8285526007602081815287872061107d84868d611788565b358852815285888820541691858852600682528a61109f85878c8c2093611788565b358952825288882080546001600160a01b03199081169091558689529082528888206110cc85878e611788565b35895282528888209081541690558487526008815287872090828852526110fa878720610c4684868d611788565b5061110682848b611788565b3590843b156104895787516323b872dd60e01b8152308a82019081526001600160a01b0390921660208301526040820192909252869082908190606001038183885af18015611164579061115f929161056a5750611763565b61105a565b87513d88823e3d90fd5b5091346103105760803660031901126103105761118961121d565b50611192611238565b50606435906001600160401b03821161031057506020926111b59136910161130d565b5051630a85bd0160e11b8152f35b50503461024a57602036600319011261024a5760209160ff9082906001600160a01b036111ee61121d565b1681526009855220541690519015158152f35b84903461024a578160031936011261024a576020906002548152f35b600435906001600160a01b038216820361123357565b600080fd5b602435906001600160a01b038216820361123357565b35906001600160a01b038216820361123357565b6001600160401b03811161127557604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b0382111761127557604052565b90601f801991011681019081106001600160401b0382111761127557604052565b9291926001600160401b03821161127557604051916112f0601f8201601f1916602001846112a6565b829481845281830111611233578281602093846000960137010152565b9080601f8301121561123357816020611328933591016112c7565b90565b9181601f84011215611233578235916001600160401b038311611233576020808501948460051b01011161123357565b3590811515820361123357565b6001600160401b03939284831161127557604090815195602092611391848760051b01896112a6565b83888781520192606080970286019581871161123357935b8685106113ba575050505050505050565b878583031261123357825190888201908282108683111761140857899288928652873581526113ea83890161124e565b838201526113f986890161135b565b868201528152019401936113a9565b60246000634e487b7160e01b81526041600452fd5b6000546001600160a01b0316330361143157565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b906114b7926114af917f19457468657265756d205369676e6564204d6573736167653a0a333200000000600052601c52603c60002061161e565b929092611504565b6001600160a01b039081169116036114cb57565b60405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b6044820152606490fd5b600581101561160857806115155750565b600181036115625760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606490fd5b600281036115af5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606490fd5b6003146115b857565b60405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608490fd5b634e487b7160e01b600052602160045260246000fd5b90604181511460001461164c57611648916020820151906060604084015193015160001a90611656565b9091565b5050600090600290565b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116116d95791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156116cc5781516001600160a01b038116156116c6579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b156116ec57565b60405162461bcd60e51b8152602060048201526011602482015270746f6b656e49647320746f6f206d616e7960781b6044820152606490fd5b1561172c57565b60405162461bcd60e51b815260206004820152600f60248201526e1b9bdd081cdd5c1c1bdc9d081b999d608a1b6044820152606490fd5b60001981146117725760010190565b634e487b7160e01b600052601160045260246000fd5b91908110156117985760051b0190565b634e487b7160e01b600052603260045260246000fd5b80548210156117985760005260206000200190600090565b9190600183016000908282528060205260408220541560001461184a5784549468010000000000000000861015611836578361182661180f886001604098999a018555846117ae565b819391549060031b91821b91600019901b19161790565b9055549382526020522055600190565b634e487b7160e01b83526041600452602483fd5b50925050565b9190811015611798576060020190565b1561186757565b60405162461bcd60e51b81526020600482015260096024820152683737ba1037bbb732b960b91b6044820152606490fd5b356001600160a01b03811681036112335790565b9060018201906000928184528260205260408420549081151560001461199557600019918083018181116119815782549084820191821161196d57808203611938575b505050805480156119245782019161190783836117ae565b909182549160031b1b191690555582526020526040812055600190565b634e487b7160e01b86526031600452602486fd5b61195861194861180f93866117ae565b90549060031b1c928392866117ae565b905586528460205260408620553880806118ef565b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b87526011600452602487fd5b5050505090565b80518210156117985760209160051b010190565b9081519160005b8381106119c8575050016000815290565b80602080928401015181850152016119b7565b611a0b906119fd6119f7949360405195869360208501906119b0565b906119b0565b03601f1981018452836112a6565b565b939092919496956040978851926bffffffffffffffffffffffff198095816060988160209b8b1b168b890152891b166034870152871b166048850152605c840152607c830152609c820152609c815260c081018181106001600160401b038211176112755787526000905b8551821015611b0e57611b02611ada611ab3611b0893611a98868b61199c565b5151908c51918a830152898252611aae8261128b565b6119db565b87611abe868b61199c565b51015190868c5192891b168983015260148252611aae8261128b565b89611ae5858a61199c565b5101511515908a519160f81b8883015260018252611aae8261128b565b91611763565b90611a78565b959650505050905081519101209056fea26469706673582212202ec6c1dbc7ff13a84f5b0a731d10b9e918fc8edf4084e389bbf967e329f2e5c964736f6c63430008130033",
"linkReferences": {},
"deployedLinkReferences": {}
}