Files
2026-03-02 12:14:09 -08:00

777 lines
49 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "GRUFormulasNFT",
"sourceName": "contracts/nft/GRUFormulasNFT.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "admin",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"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"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "approved",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "ApprovalForAll",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_fromTokenId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_toTokenId",
"type": "uint256"
}
],
"name": "BatchMetadataUpdate",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
}
],
"name": "MetadataUpdate",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"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": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MAX_TOKEN_ID",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MINTER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "TOKEN_ID_MONEY_MULTIPLIER",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "TOKEN_ID_MONEY_SUPPLY",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "TOKEN_ID_MONEY_VELOCITY",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "approve",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "getApproved",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"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": "to",
"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": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "callerConfirmation",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "tokenId",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "safeTransferFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"internalType": "bool",
"name": "approved",
"type": "bool"
}
],
"name": "setApprovalForAll",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"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": "0x6080346200036057601f1990601f906001600160401b03620023833881900384810186168401838111858210176200034a57849282916040528339602093849181010312620003605751926001600160a01b038416840362000360576200006562000365565b92600c84526b47525520466f726d756c617360a01b818501526200008862000365565b90600482526323a92aa360e11b818301528451968488116200034a576000978854966001978881811c911680156200033f575b858210146200032b57908187849311620002d8575b50849087831160011462000277578b926200026b575b5050600019600383901b1c191690871b1788555b8251948511620002575785548681811c911680156200024c575b838210146200023857848111620001f0575b5081938511600114620001875750509082916200016a96926200017b575b5050600019600383901b1c191690821b1790555b620001638162000385565b5062000406565b50604051611eb99081620004aa8239f35b01519050388062000144565b8588528188209497908816915b828210620001d857505091849391876200016a989410620001be575b505050811b01905562000158565b015160001960f88460031b161c19169055388080620001b0565b80878697829497870151815501960194019062000194565b8689528289208580880160051c8201928589106200022e575b0160051c019087905b8281106200022257505062000126565b8a815501879062000212565b9250819262000209565b634e487b7160e01b89526022600452602489fd5b90607f169062000114565b634e487b7160e01b88526041600452602488fd5b015190503880620000e6565b90848a9416918c8052868d20928d5b88828210620002c15750508411620002a7575b505050811b018855620000fa565b015160001960f88460031b161c1916905538808062000299565b8385015186558d9790950194938401930162000286565b9091508a8052848b208780850160051c82019287861062000321575b918b91869594930160051c01915b82811062000312575050620000d0565b8d81558594508b910162000302565b92508192620002f4565b634e487b7160e01b8b52602260045260248bfd5b90607f1690620000bb565b634e487b7160e01b600052604160045260246000fd5b600080fd5b60408051919082016001600160401b038111838210176200034a57604052565b6001600160a01b031660008181527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df602052604081205490919060ff16620004025781805260076020526040822081835260205260408220600160ff198254161790553391600080516020620023638339815191528180a4600190565b5090565b6001600160a01b031660008181527fa4bfd7afe708e2e87e7f0e2ad9b4d545417e0f795f57b5c5ab5d799c565a04f460205260408120549091907f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a69060ff16620004a45780835260076020526040832082845260205260408320600160ff1982541617905560008051602062002363833981519152339380a4600190565b50509056fe608060408181526004918236101561001657600080fd5b600092833560e01c91826301ffc9a7146115ee5750816306fdde0314611521578163081812fc146114e5578163095ea7b31461140857816323b872dd146113f0578163248a9ca3146113c55781632f2ff15d1461139b57816336568abe1461135557816340c10f191461107257816342842e0e146110435781635ef32c2c1461100d5781636352211e146110125781636bb516be14610e2f5781636da612d81461100d57816370a0823114610fb857816391d1485414610f7157816395d89b4114610e66578163987c88a714610e4a578163a217fddf14610e2f578163a22cb46514610d8d578163b88d4fde14610cf8578163c87b56dd14610207578163d5391393146101cc578163d547741f14610188575063e985e9c51461013857600080fd5b3461018457806003193601126101845760ff816020936101566116e6565b61015e611701565b6001600160a01b0391821683526005875283832091168252855220549151911615158152f35b5080fd5b919050346101c857806003193601126101c8576101c491356101bf60016101ad611701565b938387526007602052862001546119ea565b611aae565b5080f35b8280fd5b505034610184578160031936011261018457602090517f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68152f35b839150346101845760209182600319360112610cf557813580825260028452848220546001600160a01b031615610cb257806106f1575083516102498161179a565b6014815273475255204d6f6e657920537570706c7920284d2960601b848201529184519160a083019183831067ffffffffffffffff8411176106de57505091610589604761067a936106da958852606881527f475255206d6f6e6574617279206c61796572733a2031204d3030203d2035204d878201527f30203d203235204d312028626173652c20636f6c6c61746572616c2c20637265888201527f646974292e204e6f6e2d49534f2073796e74686574696320756e6974206f662060608201526730b1b1b7bab73a1760c11b60808201529261058e7f6d696c793d2773616e732d73657269662720666f6e742d73697a653d2731342761058961018f8b8b81519485927f3d276d6964646c65272066696c6c3d27236561656165612720666f6e742d66616103c561037d858701611e0e565b7f3c726563742077696474683d2733323027206865696768743d2731323027206681527534b6361e939198b098b099329390393c1e939c13979f60511b602082015260360190565b937f3c7465787420783d273136302720793d2734322720746578742d616e63686f7285528401528201527f3e4d6f6e657920537570706c7920284d29202d20475255206c61796572733c2f6060820152643a32bc3a1f60d91b60808201527f3c7465787420783d273136302720793d2736382720746578742d616e63686f7260858201527f3d276d6964646c65272066696c6c3d27236130653061302720666f6e742d666160a58201527f6d696c793d276d6f6e6f73706163652720666f6e742d73697a653d273136273e60c58201527f31204d3030203d2035204d30203d203235204d313c2f746578743e000000000060e58201527f3c7465787420783d273136302720793d2739322720746578742d616e63686f726101008201527f3d276d6964646c65272066696c6c3d27233838382720666f6e742d66616d696c6101208201527f793d2773616e732d73657269662720666f6e742d73697a653d273131273e4d306101408201527f302062617365207c204d3020636f6c6c61746572616c207c204d3120637265646101608201526834ba1e17ba32bc3a1f60b91b610180820152651e17b9bb339f60d11b6101898201520361016f8101845201826117d2565b611c69565b88516105e0603a828b8101947f646174613a696d6167652f7376672b786d6c3b6261736536342c00000000000086526105d08d8251928391868601910161169e565b810103601a8101845201826117d2565b6106608a51968794683d913730b6b2911d1160b91b8c87015261060d8c825192839160298a01910161169e565b8501701116113232b9b1b934b83a34b7b7111d1160791b602982015261063d8c8351938491603a8501910161169e565b01916a11161134b6b0b3b2911d1160a91b603a840152518093604584019061169e565b0161227d60f01b60458201520360278101845201826117d2565b926106cb603d825180967f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000878301526106bb8151809289868601910161169e565b810103601d8101875201856117d2565b519282849384528301906116c1565b0390f35b634e487b7160e01b825260419052602490fd5b90506001810361099b5750506106da61067a835161070e8161179a565b60128152714d6f6e65792056656c6f636974792028562960701b848201526105896047865161073c816117b6565b605281527f4571756174696f6e206f662065786368616e67653a204d20782056203d205020878201527f78205920286d6f6e657920737570706c792c2076656c6f636974792c20707269888201527131b2903632bb32b6161037baba383aba149760711b60608201529261058e7f6d696c793d2773616e732d73657269662720666f6e742d73697a653d273134276105896101698b8b81519485927f3d276d6964646c65272066696c6c3d27236561656165612720666f6e742d666161080661037d858701611e0e565b937f3c7465787420783d273136302720793d2734322720746578742d616e63686f7285528401528201527f3e4d6f6e65792056656c6f63697479202856293c2f746578743e00000000000060608201527f3c7465787420783d273136302720793d2737322720746578742d616e63686f72607a8201527f3d276d6964646c65272066696c6c3d27236130633066662720666f6e742d6661609a8201527f6d696c793d2773657269662720666f6e742d73697a653d273230273e4d202a2060ba8201526f2b101e90281015102c9e17ba32bc3a1f60811b60da8201527f3c7465787420783d273136302720793d2739382720746578742d616e63686f7260ea8201527f3d276d6964646c65272066696c6c3d27233838382720666f6e742d66616d696c61010a8201527f793d2773616e732d73657269662720666f6e742d73697a653d273130273e457161012a8201527f756174696f6e206f662065786368616e67653c2f746578743e0000000000000061014a820152651e17b9bb339f60d11b610163820152036101498101845201826117d2565b600203610c6257506106da61067a83516109b48161179a565b60148152734d6f6e6579204d756c7469706c69657220286d2960601b84820152610589604786516109e4816117b6565b604f81527f6d203d2052657365727665202f20537570706c793b2047525520616e64204953878201527f4f343231375720656e666f726365206d203d20312e3020286e6f206672616374888201526e34b7b730b6103932b9b2b93b32949760891b60608201529261058e7f6d696c793d2773616e732d73657269662720666f6e742d73697a653d2731342761058961018a8b8b81519485927f3d276d6964646c65272066696c6c3d27236561656165612720666f6e742d6661610aab61037d858701611e0e565b937f3c7465787420783d273136302720793d2734322720746578742d616e63686f7285528401528201527f3e4d6f6e6579204d756c7469706c69657220286d293c2f746578743e0000000060608201527f3c7465787420783d273136302720793d2737322720746578742d616e63686f72607c8201527f3d276d6964646c65272066696c6c3d27236666633061302720666f6e742d6661609c8201527f6d696c793d2773657269662720666f6e742d73697a653d273138273e6d203d2060bc8201527f52657365727665202f20537570706c79203d20312e303c2f746578743e00000060dc8201527f3c7465787420783d273136302720793d2739382720746578742d616e63686f7260f98201527f3d276d6964646c65272066696c6c3d27233838382720666f6e742d66616d696c6101198201527f793d2773616e732d73657269662720666f6e742d73697a653d273130273e4e6f6101398201527f206672616374696f6e616c20726573657276652028475255202f2049534f34326101598201526a189bab949e17ba32bc3a1f60a91b610179820152651e17b9bb339f60d11b6101848201520361016a8101845201826117d2565b610cae90835191829162461bcd60e51b8352820160609060208152601f60208201527f475255466f726d756c61734e46543a20696e76616c696420746f6b656e49640060408201520190565b0390fd5b845162461bcd60e51b8152808401859052601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606490fd5b80fd5b919050346101c85760803660031901126101c857610d146116e6565b610d1c611701565b60443591856064359567ffffffffffffffff871161018457366023880112156101845786013595610d58610d4f886117f4565b965196876117d2565b86865236602488830101116101845786610d8a976024602093018389013786010152610d85838383611810565b611b25565b80f35b919050346101c857806003193601126101c857610da86116e6565b9060243591821515809303610e2b576001600160a01b0316928315610e165750338452600560205280842083855260205280842060ff1981541660ff8416179055519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a380f35b836024925191630b61174360e31b8352820152fd5b8480fd5b50503461018457816003193601126101845751908152602090f35b5050346101845781600319360112610184576020905160018152f35b828434610cf55780600319360112610cf55781519181600192600154938460011c9160018616958615610f67575b6020968785108114610f54578899509688969785829a529182600014610f2d575050600114610ed1575b5050506106da92916106cb9103856117d2565b9190869350600183527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b828410610f1557505050820101816106cb6106da610ebe565b8054848a018601528895508794909301928101610efc565b60ff19168782015293151560051b860190930193508492506106cb91506106da9050610ebe565b634e487b7160e01b835260228a52602483fd5b92607f1692610e94565b9050346101c857816003193601126101c8578160209360ff92610f92611701565b90358252600786528282206001600160a01b039091168252855220549151911615158152f35b828434610cf5576020366003190112610cf5576001600160a01b03610fdb6116e6565b16928315610ff85750806020938392526003845220549051908152f35b91516322718ad960e21b815291820152602490fd5b61174c565b828434610cf5576020366003190112610cf55750611032602092356119af565b90516001600160a01b039091168152f35b50503461018457610d8a9061105736611717565b9192519261106484611768565b858452610d85838383611810565b9050346101c857816003193601126101c85761108c6116e6565b60249283357f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a69081875260209160078352838820338952835260ff8489205416156113385750600281116112ed5782516110e581611768565b8781526001600160a01b03858116959086156112d757838a5260028552858a205416838782151592836112a4575b818d5260038852888d2080546001019055828d5260028852888d2080546001600160a01b031916831790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8d80a461128e573b61116f578780f35b908288886111af899a9b969798999589519586948594630a85bd0160e11b998a8752339087015285015260448401526080606484015260848301906116c1565b0381868a5af183918161124a575b506112125750503d1561120a573d6111d4816117f4565b906111e1855192836117d2565b81528091833d92013e5b80519182611207575050505191633250574960e11b8352820152fd5b01fd5b5060606111eb565b919695949392506001600160e01b0319909116036112395750505050388080808080808780f35b51633250574960e11b815291820152fd5b9091508481813d8311611287575b61126281836117d2565b8101031261128357516001600160e01b0319811681036112835790386111bd565b8380fd5b503d611258565b84516339e3563760e11b81528088018a90528890fd5b600083815260046020526040902080546001600160a01b0319169055808d5260038852888d208054600019019055611113565b8551633250574960e11b81528089018b90528990fd5b825162461bcd60e51b81526020818701818152601f918101919091527f475255466f726d756c61734e46543a20696e76616c696420746f6b656e496400604082015281906060010390fd5b835163e2517d3f60e01b8152338188015280880191909152604490fd5b83833461018457806003193601126101845761136f611701565b90336001600160a01b0383160361138c57506101c4919235611aae565b5163334bd91960e11b81528390fd5b919050346101c857806003193601126101c8576101c491356113c060016101ad611701565b611a2e565b9050346101c85760203660031901126101c85781602093600192358152600785522001549051908152f35b8334610cf557610d8a61140236611717565b91611810565b919050346101c857806003193601126101c8576114236116e6565b91602435611430816119af565b331515806114d2575b806114a9575b611493576001600160a01b039485169482918691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258880a48452602052822080546001600160a01b031916909117905580f35b835163a9fbf51f60e01b81523381850152602490fd5b506001600160a01b03811686526005602090815284872033885290528386205460ff161561143f565b506001600160a01b038116331415611439565b9050346101c85760203660031901126101c857918260209335611507816119af565b50825283528190205490516001600160a01b039091168152f35b828434610cf55780600319360112610cf5578151918182549260018460011c91600186169586156115e4575b6020968785108114610f54578899509688969785829a529182600014610f2d575050600114611589575050506106da92916106cb9103856117d2565b91908693508280527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b8284106115cc57505050820101816106cb6106da610ebe565b8054848a0186015288955087949093019281016115b3565b92607f169261154d565b8491346101c85760203660031901126101c8573563ffffffff60e01b81168091036101c85760209250637965db0b60e01b8114908115611641575b50808015611639575b5015158152f35b905083611632565b632483248360e11b81149150811561165b575b5083611629565b6380ac58cd60e01b81149150811561168d575b811561167c575b5083611654565b6301ffc9a760e01b14905083611675565b635b5e139f60e01b8114915061166e565b60005b8381106116b15750506000910152565b81810151838201526020016116a1565b906020916116da8151809281855285808601910161169e565b601f01601f1916010190565b600435906001600160a01b03821682036116fc57565b600080fd5b602435906001600160a01b03821682036116fc57565b60609060031901126116fc576001600160a01b039060043582811681036116fc579160243590811681036116fc579060443590565b346116fc5760003660031901126116fc57602060405160028152f35b6020810190811067ffffffffffffffff82111761178457604052565b634e487b7160e01b600052604160045260246000fd5b6040810190811067ffffffffffffffff82111761178457604052565b6080810190811067ffffffffffffffff82111761178457604052565b90601f8019910116810190811067ffffffffffffffff82111761178457604052565b67ffffffffffffffff811161178457601f01601f191660200190565b6001600160a01b03918216929091831561199657600092828452826020956002875260409684888820541696879133151580611900575b509060027fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92846118cd575b858352600381528b8320805460010190558683525289812080546001600160a01b0319168517905580a416928383036118ac5750505050565b6064945051926364283d7b60e01b8452600484015260248301526044820152fd5b600087815260046020526040902080546001600160a01b0319169055848352600381528b83208054600019019055611873565b91939450915080611955575b1561191c57859291879138611847565b878688611939576024915190637e27328960e01b82526004820152fd5b604491519063177e802f60e01b82523360048301526024820152fd5b50338714801561197a575b8061190c575085825260048152338589842054161461190c565b5086825260058152878220338352815260ff8883205416611960565b604051633250574960e11b815260006004820152602490fd5b6000818152600260205260409020546001600160a01b03169081156119d2575090565b60249060405190637e27328960e01b82526004820152fd5b80600052600760205260406000203360005260205260ff6040600020541615611a105750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b906000918083526007602052604083209160018060a01b03169182845260205260ff60408420541615600014611aa95780835260076020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b906000918083526007602052604083209160018060a01b03169182845260205260ff604084205416600014611aa9578083526007602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b813b611b32575b50505050565b604051630a85bd0160e11b8082523360048301526001600160a01b03928316602483015260448201949094526080606482015260209592909116939092908390611b809060848301906116c1565b039285816000958187895af1849181611c29575b50611bf4575050503d600014611bec573d611bae816117f4565b90611bbc60405192836117d2565b81528091843d92013e5b80519283611be757604051633250574960e11b815260048101849052602490fd5b019050fd5b506060611bc6565b919450915063ffffffff60e01b1603611c11575038808080611b2c565b60249060405190633250574960e11b82526004820152fd5b9091508681813d8311611c62575b611c4181836117d2565b81010312610e2b57516001600160e01b031981168103610e2b579038611b94565b503d611c37565b90815115611df957604051916060830183811067ffffffffffffffff82111761178457604052604083527f4142434445464748494a4b4c4d4e4f505152535455565758595a61626364656660208401527f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f604084015280519260029160028501809511611de357600394859004600281901b93906001600160fe1b03811603611de35794611d2f611d19856117f4565b94611d2760405196876117d2565b8086526117f4565b6020850190601f190136823792829183518401976020890192835194600085525b8a8110611d9657505050506003939495965052510680600114611d8357600214611d78575090565b603d90600019015390565b50603d9081600019820153600119015390565b836004919b989b019a8b51600190603f9082828260121c16870101518453828282600c1c16870101518385015382828260061c168701015187850153168401015185820153019699611d50565b634e487b7160e01b600052601160045260246000fd5b9050604051611e0781611768565b6000815290565b7f3c73766720786d6c6e733d27687474703a2f2f7777772e77332e6f72672f323081527f30302f737667272076696577426f783d2730203020333230203132302720776960208201527f6474683d2733323027206865696768743d27313230273e00000000000000000060408201526057019056fea26469706673582212205bc581a0bf4630f96169a856aeee9bc8128c7111732d9e97b45d94c6f32e80fc64736f6c634300081600332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
"deployedBytecode": "0x608060408181526004918236101561001657600080fd5b600092833560e01c91826301ffc9a7146115ee5750816306fdde0314611521578163081812fc146114e5578163095ea7b31461140857816323b872dd146113f0578163248a9ca3146113c55781632f2ff15d1461139b57816336568abe1461135557816340c10f191461107257816342842e0e146110435781635ef32c2c1461100d5781636352211e146110125781636bb516be14610e2f5781636da612d81461100d57816370a0823114610fb857816391d1485414610f7157816395d89b4114610e66578163987c88a714610e4a578163a217fddf14610e2f578163a22cb46514610d8d578163b88d4fde14610cf8578163c87b56dd14610207578163d5391393146101cc578163d547741f14610188575063e985e9c51461013857600080fd5b3461018457806003193601126101845760ff816020936101566116e6565b61015e611701565b6001600160a01b0391821683526005875283832091168252855220549151911615158152f35b5080fd5b919050346101c857806003193601126101c8576101c491356101bf60016101ad611701565b938387526007602052862001546119ea565b611aae565b5080f35b8280fd5b505034610184578160031936011261018457602090517f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68152f35b839150346101845760209182600319360112610cf557813580825260028452848220546001600160a01b031615610cb257806106f1575083516102498161179a565b6014815273475255204d6f6e657920537570706c7920284d2960601b848201529184519160a083019183831067ffffffffffffffff8411176106de57505091610589604761067a936106da958852606881527f475255206d6f6e6574617279206c61796572733a2031204d3030203d2035204d878201527f30203d203235204d312028626173652c20636f6c6c61746572616c2c20637265888201527f646974292e204e6f6e2d49534f2073796e74686574696320756e6974206f662060608201526730b1b1b7bab73a1760c11b60808201529261058e7f6d696c793d2773616e732d73657269662720666f6e742d73697a653d2731342761058961018f8b8b81519485927f3d276d6964646c65272066696c6c3d27236561656165612720666f6e742d66616103c561037d858701611e0e565b7f3c726563742077696474683d2733323027206865696768743d2731323027206681527534b6361e939198b098b099329390393c1e939c13979f60511b602082015260360190565b937f3c7465787420783d273136302720793d2734322720746578742d616e63686f7285528401528201527f3e4d6f6e657920537570706c7920284d29202d20475255206c61796572733c2f6060820152643a32bc3a1f60d91b60808201527f3c7465787420783d273136302720793d2736382720746578742d616e63686f7260858201527f3d276d6964646c65272066696c6c3d27236130653061302720666f6e742d666160a58201527f6d696c793d276d6f6e6f73706163652720666f6e742d73697a653d273136273e60c58201527f31204d3030203d2035204d30203d203235204d313c2f746578743e000000000060e58201527f3c7465787420783d273136302720793d2739322720746578742d616e63686f726101008201527f3d276d6964646c65272066696c6c3d27233838382720666f6e742d66616d696c6101208201527f793d2773616e732d73657269662720666f6e742d73697a653d273131273e4d306101408201527f302062617365207c204d3020636f6c6c61746572616c207c204d3120637265646101608201526834ba1e17ba32bc3a1f60b91b610180820152651e17b9bb339f60d11b6101898201520361016f8101845201826117d2565b611c69565b88516105e0603a828b8101947f646174613a696d6167652f7376672b786d6c3b6261736536342c00000000000086526105d08d8251928391868601910161169e565b810103601a8101845201826117d2565b6106608a51968794683d913730b6b2911d1160b91b8c87015261060d8c825192839160298a01910161169e565b8501701116113232b9b1b934b83a34b7b7111d1160791b602982015261063d8c8351938491603a8501910161169e565b01916a11161134b6b0b3b2911d1160a91b603a840152518093604584019061169e565b0161227d60f01b60458201520360278101845201826117d2565b926106cb603d825180967f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000878301526106bb8151809289868601910161169e565b810103601d8101875201856117d2565b519282849384528301906116c1565b0390f35b634e487b7160e01b825260419052602490fd5b90506001810361099b5750506106da61067a835161070e8161179a565b60128152714d6f6e65792056656c6f636974792028562960701b848201526105896047865161073c816117b6565b605281527f4571756174696f6e206f662065786368616e67653a204d20782056203d205020878201527f78205920286d6f6e657920737570706c792c2076656c6f636974792c20707269888201527131b2903632bb32b6161037baba383aba149760711b60608201529261058e7f6d696c793d2773616e732d73657269662720666f6e742d73697a653d273134276105896101698b8b81519485927f3d276d6964646c65272066696c6c3d27236561656165612720666f6e742d666161080661037d858701611e0e565b937f3c7465787420783d273136302720793d2734322720746578742d616e63686f7285528401528201527f3e4d6f6e65792056656c6f63697479202856293c2f746578743e00000000000060608201527f3c7465787420783d273136302720793d2737322720746578742d616e63686f72607a8201527f3d276d6964646c65272066696c6c3d27236130633066662720666f6e742d6661609a8201527f6d696c793d2773657269662720666f6e742d73697a653d273230273e4d202a2060ba8201526f2b101e90281015102c9e17ba32bc3a1f60811b60da8201527f3c7465787420783d273136302720793d2739382720746578742d616e63686f7260ea8201527f3d276d6964646c65272066696c6c3d27233838382720666f6e742d66616d696c61010a8201527f793d2773616e732d73657269662720666f6e742d73697a653d273130273e457161012a8201527f756174696f6e206f662065786368616e67653c2f746578743e0000000000000061014a820152651e17b9bb339f60d11b610163820152036101498101845201826117d2565b600203610c6257506106da61067a83516109b48161179a565b60148152734d6f6e6579204d756c7469706c69657220286d2960601b84820152610589604786516109e4816117b6565b604f81527f6d203d2052657365727665202f20537570706c793b2047525520616e64204953878201527f4f343231375720656e666f726365206d203d20312e3020286e6f206672616374888201526e34b7b730b6103932b9b2b93b32949760891b60608201529261058e7f6d696c793d2773616e732d73657269662720666f6e742d73697a653d2731342761058961018a8b8b81519485927f3d276d6964646c65272066696c6c3d27236561656165612720666f6e742d6661610aab61037d858701611e0e565b937f3c7465787420783d273136302720793d2734322720746578742d616e63686f7285528401528201527f3e4d6f6e6579204d756c7469706c69657220286d293c2f746578743e0000000060608201527f3c7465787420783d273136302720793d2737322720746578742d616e63686f72607c8201527f3d276d6964646c65272066696c6c3d27236666633061302720666f6e742d6661609c8201527f6d696c793d2773657269662720666f6e742d73697a653d273138273e6d203d2060bc8201527f52657365727665202f20537570706c79203d20312e303c2f746578743e00000060dc8201527f3c7465787420783d273136302720793d2739382720746578742d616e63686f7260f98201527f3d276d6964646c65272066696c6c3d27233838382720666f6e742d66616d696c6101198201527f793d2773616e732d73657269662720666f6e742d73697a653d273130273e4e6f6101398201527f206672616374696f6e616c20726573657276652028475255202f2049534f34326101598201526a189bab949e17ba32bc3a1f60a91b610179820152651e17b9bb339f60d11b6101848201520361016a8101845201826117d2565b610cae90835191829162461bcd60e51b8352820160609060208152601f60208201527f475255466f726d756c61734e46543a20696e76616c696420746f6b656e49640060408201520190565b0390fd5b845162461bcd60e51b8152808401859052601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606490fd5b80fd5b919050346101c85760803660031901126101c857610d146116e6565b610d1c611701565b60443591856064359567ffffffffffffffff871161018457366023880112156101845786013595610d58610d4f886117f4565b965196876117d2565b86865236602488830101116101845786610d8a976024602093018389013786010152610d85838383611810565b611b25565b80f35b919050346101c857806003193601126101c857610da86116e6565b9060243591821515809303610e2b576001600160a01b0316928315610e165750338452600560205280842083855260205280842060ff1981541660ff8416179055519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a380f35b836024925191630b61174360e31b8352820152fd5b8480fd5b50503461018457816003193601126101845751908152602090f35b5050346101845781600319360112610184576020905160018152f35b828434610cf55780600319360112610cf55781519181600192600154938460011c9160018616958615610f67575b6020968785108114610f54578899509688969785829a529182600014610f2d575050600114610ed1575b5050506106da92916106cb9103856117d2565b9190869350600183527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b828410610f1557505050820101816106cb6106da610ebe565b8054848a018601528895508794909301928101610efc565b60ff19168782015293151560051b860190930193508492506106cb91506106da9050610ebe565b634e487b7160e01b835260228a52602483fd5b92607f1692610e94565b9050346101c857816003193601126101c8578160209360ff92610f92611701565b90358252600786528282206001600160a01b039091168252855220549151911615158152f35b828434610cf5576020366003190112610cf5576001600160a01b03610fdb6116e6565b16928315610ff85750806020938392526003845220549051908152f35b91516322718ad960e21b815291820152602490fd5b61174c565b828434610cf5576020366003190112610cf55750611032602092356119af565b90516001600160a01b039091168152f35b50503461018457610d8a9061105736611717565b9192519261106484611768565b858452610d85838383611810565b9050346101c857816003193601126101c85761108c6116e6565b60249283357f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a69081875260209160078352838820338952835260ff8489205416156113385750600281116112ed5782516110e581611768565b8781526001600160a01b03858116959086156112d757838a5260028552858a205416838782151592836112a4575b818d5260038852888d2080546001019055828d5260028852888d2080546001600160a01b031916831790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8d80a461128e573b61116f578780f35b908288886111af899a9b969798999589519586948594630a85bd0160e11b998a8752339087015285015260448401526080606484015260848301906116c1565b0381868a5af183918161124a575b506112125750503d1561120a573d6111d4816117f4565b906111e1855192836117d2565b81528091833d92013e5b80519182611207575050505191633250574960e11b8352820152fd5b01fd5b5060606111eb565b919695949392506001600160e01b0319909116036112395750505050388080808080808780f35b51633250574960e11b815291820152fd5b9091508481813d8311611287575b61126281836117d2565b8101031261128357516001600160e01b0319811681036112835790386111bd565b8380fd5b503d611258565b84516339e3563760e11b81528088018a90528890fd5b600083815260046020526040902080546001600160a01b0319169055808d5260038852888d208054600019019055611113565b8551633250574960e11b81528089018b90528990fd5b825162461bcd60e51b81526020818701818152601f918101919091527f475255466f726d756c61734e46543a20696e76616c696420746f6b656e496400604082015281906060010390fd5b835163e2517d3f60e01b8152338188015280880191909152604490fd5b83833461018457806003193601126101845761136f611701565b90336001600160a01b0383160361138c57506101c4919235611aae565b5163334bd91960e11b81528390fd5b919050346101c857806003193601126101c8576101c491356113c060016101ad611701565b611a2e565b9050346101c85760203660031901126101c85781602093600192358152600785522001549051908152f35b8334610cf557610d8a61140236611717565b91611810565b919050346101c857806003193601126101c8576114236116e6565b91602435611430816119af565b331515806114d2575b806114a9575b611493576001600160a01b039485169482918691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258880a48452602052822080546001600160a01b031916909117905580f35b835163a9fbf51f60e01b81523381850152602490fd5b506001600160a01b03811686526005602090815284872033885290528386205460ff161561143f565b506001600160a01b038116331415611439565b9050346101c85760203660031901126101c857918260209335611507816119af565b50825283528190205490516001600160a01b039091168152f35b828434610cf55780600319360112610cf5578151918182549260018460011c91600186169586156115e4575b6020968785108114610f54578899509688969785829a529182600014610f2d575050600114611589575050506106da92916106cb9103856117d2565b91908693508280527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b8284106115cc57505050820101816106cb6106da610ebe565b8054848a0186015288955087949093019281016115b3565b92607f169261154d565b8491346101c85760203660031901126101c8573563ffffffff60e01b81168091036101c85760209250637965db0b60e01b8114908115611641575b50808015611639575b5015158152f35b905083611632565b632483248360e11b81149150811561165b575b5083611629565b6380ac58cd60e01b81149150811561168d575b811561167c575b5083611654565b6301ffc9a760e01b14905083611675565b635b5e139f60e01b8114915061166e565b60005b8381106116b15750506000910152565b81810151838201526020016116a1565b906020916116da8151809281855285808601910161169e565b601f01601f1916010190565b600435906001600160a01b03821682036116fc57565b600080fd5b602435906001600160a01b03821682036116fc57565b60609060031901126116fc576001600160a01b039060043582811681036116fc579160243590811681036116fc579060443590565b346116fc5760003660031901126116fc57602060405160028152f35b6020810190811067ffffffffffffffff82111761178457604052565b634e487b7160e01b600052604160045260246000fd5b6040810190811067ffffffffffffffff82111761178457604052565b6080810190811067ffffffffffffffff82111761178457604052565b90601f8019910116810190811067ffffffffffffffff82111761178457604052565b67ffffffffffffffff811161178457601f01601f191660200190565b6001600160a01b03918216929091831561199657600092828452826020956002875260409684888820541696879133151580611900575b509060027fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92846118cd575b858352600381528b8320805460010190558683525289812080546001600160a01b0319168517905580a416928383036118ac5750505050565b6064945051926364283d7b60e01b8452600484015260248301526044820152fd5b600087815260046020526040902080546001600160a01b0319169055848352600381528b83208054600019019055611873565b91939450915080611955575b1561191c57859291879138611847565b878688611939576024915190637e27328960e01b82526004820152fd5b604491519063177e802f60e01b82523360048301526024820152fd5b50338714801561197a575b8061190c575085825260048152338589842054161461190c565b5086825260058152878220338352815260ff8883205416611960565b604051633250574960e11b815260006004820152602490fd5b6000818152600260205260409020546001600160a01b03169081156119d2575090565b60249060405190637e27328960e01b82526004820152fd5b80600052600760205260406000203360005260205260ff6040600020541615611a105750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b906000918083526007602052604083209160018060a01b03169182845260205260ff60408420541615600014611aa95780835260076020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b906000918083526007602052604083209160018060a01b03169182845260205260ff604084205416600014611aa9578083526007602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b813b611b32575b50505050565b604051630a85bd0160e11b8082523360048301526001600160a01b03928316602483015260448201949094526080606482015260209592909116939092908390611b809060848301906116c1565b039285816000958187895af1849181611c29575b50611bf4575050503d600014611bec573d611bae816117f4565b90611bbc60405192836117d2565b81528091843d92013e5b80519283611be757604051633250574960e11b815260048101849052602490fd5b019050fd5b506060611bc6565b919450915063ffffffff60e01b1603611c11575038808080611b2c565b60249060405190633250574960e11b82526004820152fd5b9091508681813d8311611c62575b611c4181836117d2565b81010312610e2b57516001600160e01b031981168103610e2b579038611b94565b503d611c37565b90815115611df957604051916060830183811067ffffffffffffffff82111761178457604052604083527f4142434445464748494a4b4c4d4e4f505152535455565758595a61626364656660208401527f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f604084015280519260029160028501809511611de357600394859004600281901b93906001600160fe1b03811603611de35794611d2f611d19856117f4565b94611d2760405196876117d2565b8086526117f4565b6020850190601f190136823792829183518401976020890192835194600085525b8a8110611d9657505050506003939495965052510680600114611d8357600214611d78575090565b603d90600019015390565b50603d9081600019820153600119015390565b836004919b989b019a8b51600190603f9082828260121c16870101518453828282600c1c16870101518385015382828260061c168701015187850153168401015185820153019699611d50565b634e487b7160e01b600052601160045260246000fd5b9050604051611e0781611768565b6000815290565b7f3c73766720786d6c6e733d27687474703a2f2f7777772e77332e6f72672f323081527f30302f737667272076696577426f783d2730203020333230203132302720776960208201527f6474683d2733323027206865696768743d27313230273e00000000000000000060408201526057019056fea26469706673582212205bc581a0bf4630f96169a856aeee9bc8128c7111732d9e97b45d94c6f32e80fc64736f6c63430008160033",
"linkReferences": {},
"deployedLinkReferences": {}
}