UNPKG

@paulstinchcombe/kami721c-sdk

Version:

SDK for interacting with KAMI721C NFT contracts

1,249 lines 104 kB
{ "_format": "hh-sol-artifact-1", "contractName": "KAMI721C", "sourceName": "contracts/KAMI721C.sol", "abi": [ { "inputs": [ { "internalType": "address", "name": "usdcAddress_", "type": "address" }, { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "string", "name": "baseTokenURI_", "type": "string" }, { "internalType": "uint256", "name": "initialMintPrice_", "type": "uint256" }, { "internalType": "address", "name": "platformAddress_", "type": "address" }, { "internalType": "uint96", "name": "platformCommissionPercentage_", "type": "uint96" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "indexed": false, "internalType": "struct KAMI721C.RoyaltyData[]", "name": "royalties", "type": "tuple[]" } ], "name": "MintRoyaltiesUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "platformAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "PlatformCommissionPaid", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint96", "name": "newPercentage", "type": "uint96" }, { "indexed": false, "internalType": "address", "name": "newPlatformAddress", "type": "address" } ], "name": "PlatformCommissionUpdated", "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": false, "internalType": "uint96", "name": "newPercentage", "type": "uint96" } ], "name": "RoyaltyPercentageUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "indexed": false, "internalType": "struct KAMI721C.RoyaltyData[]", "name": "royalties", "type": "tuple[]" } ], "name": "TokenMintRoyaltiesUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "TokenSold", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "indexed": false, "internalType": "struct KAMI721C.RoyaltyData[]", "name": "royalties", "type": "tuple[]" } ], "name": "TokenTransferRoyaltiesUpdated", "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" }, { "anonymous": false, "inputs": [ { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "indexed": false, "internalType": "struct KAMI721C.RoyaltyData[]", "name": "royalties", "type": "tuple[]" } ], "name": "TransferRoyaltiesUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TransferRoyaltyDistributed", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "OWNER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PLATFORM_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "RENTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "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": "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getMintRoyaltyReceivers", "outputs": [ { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "internalType": "struct KAMI721C.RoyaltyData[]", "name": "", "type": "tuple[]" } ], "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": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getTransferRoyaltyReceivers", "outputs": [ { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "internalType": "struct KAMI721C.RoyaltyData[]", "name": "", "type": "tuple[]" } ], "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": [], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "mintPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "platformAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "platformCommissionPercentage", "outputs": [ { "internalType": "uint96", "name": "", "type": "uint96" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "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": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "royaltyInfo", "outputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "royaltyAmount", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "royaltyPercentage", "outputs": [ { "internalType": "uint96", "name": "", "type": "uint96" } ], "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": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "uint256", "name": "salePrice", "type": "uint256" } ], "name": "sellToken", "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": "string", "name": "baseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newMintPrice", "type": "uint256" } ], "name": "setMintPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "internalType": "struct KAMI721C.RoyaltyData[]", "name": "royalties", "type": "tuple[]" } ], "name": "setMintRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint96", "name": "newPlatformCommissionPercentage", "type": "uint96" }, { "internalType": "address", "name": "newPlatformAddress", "type": "address" } ], "name": "setPlatformCommission", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint96", "name": "newRoyaltyPercentage", "type": "uint96" } ], "name": "setRoyaltyPercentage", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "internalType": "struct KAMI721C.RoyaltyData[]", "name": "royalties", "type": "tuple[]" } ], "name": "setTokenMintRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "internalType": "struct KAMI721C.RoyaltyData[]", "name": "royalties", "type": "tuple[]" } ], "name": "setTokenTransferRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint96", "name": "feeNumerator", "type": "uint96" } ], "internalType": "struct KAMI721C.RoyaltyData[]", "name": "royalties", "type": "tuple[]" } ], "name": "setTransferRoyalties", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "tokenOfOwnerByIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "usdcToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x604060a081523462000765576200450d803803806200001e816200076a565b928339810160e0828203126200076557620000398262000790565b60208381015190939192916001600160401b039182811162000765578362000063918301620007a5565b90868101518381116200076557846200007e918301620007a5565b9360608201519084821162000765576200009a918301620007a5565b9260808201519060c0620000b160a0850162000790565b9301516001600160601b03811695908690036200076557845196828811620004c2576001978854968988811c981680156200075a575b8c891014620004a15781908c601f998a811162000701575b50508c908983116001146200068d5760009262000681575b5050600019600383901b1c191690891b1788555b805190838211620004c257600254908982811c9216801562000676575b8c831014620004a1578b82898594116200061c575b50508b90888311600114620005b057600092620005a4575b5050600019600383901b1c191690881b176002555b601580546001600160601b03199081166103e8179091556001600160a01b03988916989095908915620005605785169889156200051c576107d08811620004d8576080528151928311620004c257600f54918883811c93168015620004b7575b8b841014620004a157828285941162000448575b508a918311600114620003de57600092620003d2575b5050600019600383901b1c191690861b17600f555b600e5560601b161760105560008052600083528360002033600052835260ff8460002054161562000395575b7fb19546dff01e856fb3f010c267a7b1c60363cf8a4664e21cc89c26224620214e80600052600084528460002033600052845260ff8560002054161562000356575b507f797343f8d6a29aafeb3aaf0910a8973e0081c60c2f6c1f775cd9f76ea348fc1e9283600052600081528460002083600052815260ff8560002054161562000316575b8451613cd590816200081882396080518181816119e301528181611a1e01528181611a9f01528181611b8a01528181611f45015261220f0152f35b836000526000815284600020908360005252836000209060ff198254161790553391600080516020620044ed833981519152600080a438808080620002db565b806000526000845284600020336000528452846000208260ff1982541617905533903390600080516020620044ed833981519152600080a43862000297565b600080526000835283600020336000528352836000208160ff1982541617905533336000600080516020620044ed8339815191528180a462000255565b01519050388062000214565b90889350601f19831691600f6000528b6000209260005b8d82821062000431575050841162000417575b505050811b01600f5562000229565b015160001960f88460031b161c1916905538808062000408565b8385015186558c97909501949384019301620003f5565b90919250600f6000528a6000208380860160051c8201928d871062000497575b9186958c929594930160051c01915b82811062000487575050620001fe565b600081558695508b910162000477565b9250819262000468565b634e487b7160e01b600052602260045260246000fd5b92607f1692620001ea565b634e487b7160e01b600052604160045260246000fd5b8b5162461bcd60e51b8152600481018c9052601c60248201527f506c6174666f726d20636f6d6d697373696f6e20746f6f2068696768000000006044820152606490fd5b8b5162461bcd60e51b8152600481018c9052601860248201527f496e76616c696420706c6174666f726d206164647265737300000000000000006044820152606490fd5b8b5162461bcd60e51b8152600481018c9052601460248201527f496e76616c6964205553444320616464726573730000000000000000000000006044820152606490fd5b01519050388062000175565b8a9350908c91601f198416600260005283600020936000905b828210620006045750508411620005ea575b505050811b016002556200018a565b015160001960f88460031b161c19169055388080620005db565b8385015186558e979095019493840193018f620005c9565b90919250600260005288826000209181860160051c83019386106200066c575b918c91869594930160051c01915b8281106200065c57508d91506200015d565b600081558594508c91016200064a565b925081926200063c565b91607f169162000148565b01519050388062000117565b8b9350908d91601f1984168560005283600020936000905b828210620006df5750508411620006c5575b505050811b0188556200012b565b015160001960f88460031b161c19169055388080620006b7565b91929395968291958786015181550195019301908f918e9695949392620006a5565b909192508b60005289826000209181860160051c830193861062000750575b918d91869594930160051c01915b8281106200074057508e9150620000ff565b600081558594508d91016200072e565b9250819262000720565b97607f1697620000e7565b600080fd5b6040519190601f01601f191682016001600160401b03811183821017620004c257604052565b51906001600160a01b03821682036200076557565b919080601f84011215620007655782516001600160401b038111620004c257602090620007db601f8201601f191683016200076a565b92818452828287010111620007655760005b8181106200080357508260009394955001015290565b8581018301518482018401528201620007ed56fe6080806040526004908136101561001557600080fd5b60003560e01c90816301ffc9a7146125b65750806306fdde0314612508578063081812fc146124ea578063095ea7b31461236f5780630a0a35151461223e57806311eac855146121f95780631249c58b14611ef857806318160ddd14611eda57806323b872dd14611eb6578063248a9ca314611e885780632a55205a14611e4b5780632f2ff15d14611d995780632f745c5914611ce657806336568abe14611c565780633e11741f1461195457806342842e0e1461193d57806342966c68146116af578063463dace014611690578063492ae5a3146114e15780634f6ccce71461145057806355f804b3146112865780635e27a7751461125b578063602481b614610f7c5780636352211e14610f4c5780636817c76c14610f2e57806370824c5c14610ef357806370a0823114610ec85780638a71bb2d14610ea157806391d1485414610e5457806392303e0614610e2d57806395d89b4114610d5e5780639f6d68b014610c85578063a217fddf14610c69578063a22cb46514610b96578063b88d4fde14610b11578063b97c9f7714610ad6578063c87b56dd146107fe578063d547741f146107bd578063dbe55e561461079c578063e58378bb14610773578063e5f2e0cc1461050c578063e985e9c5146104b6578063f249fd161461024a5763f4a0a5281461020557600080fd5b3461024557602036600319011261024557336000908152600080516020613c60833981519152602052604090205461023f9060ff1661292b565b35600e55005b600080fd5b50346102455760403660031901126102455761026461289d565b61026c6126d4565b336000908152600080516020613c60833981519152602090815260409091205490919061029b9060ff1661292b565b6001600160a01b038116928315610472576001600160601b0316936107d0851161042e577f410d007abb80c65964518a8b4f3007c4b354d36d7cfb908d3e3fa6411506e27460408686868660105460601c906001600160601b03199060601b168417601055828103610314575b508351928352820152a1005b7f797343f8d6a29aafeb3aaf0910a8973e0081c60c2f6c1f775cd9f76ea348fc1e9081600052600083528560002081600052835260ff8660002054166103c3575b5080600052600082528460002083600052825260ff8560002054166103085780600052600082528460002083600052825284600020600160ff198254161790558233917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d600080a485610308565b81600052600083528560002081600052835260ff86600020541615610355578160005260008352856000208160005283528560002060ff1981541690553390827ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b600080a486610355565b60405162461bcd60e51b8152908101839052601c60248201527f506c6174666f726d20636f6d6d697373696f6e20746f6f2068696768000000006044820152606490fd5b60405162461bcd60e51b8152808601849052601860248201527f496e76616c696420706c6174666f726d206164647265737300000000000000006044820152606490fd5b34610245576040366003190112610245576104cf6126be565b6104d76126d4565b9060018060a01b03809116600052600660205260406000209116600052602052602060ff604060002054166040519015158152f35b50346102455761051b3661271a565b90600080516020613c8083398151915260005260209360008552604060002033600052855261055160ff6040600020541661292b565b600084815260036020526040902054610574906001600160a01b03161515612970565b83600052601480865261058a60406000206129dc565b6000906000905b8582106107015750506127106105b2816001600160601b0380941614612f5b565b841580156105f3575b867fcacd6190ee2ad101cd34b99d8fbaf3cdcda816ef83aaa4759f111ba1c416e62087876105ee60405192839283612b95565b0390a2005b6106ec5761060084612a3a565b6106198361060f8a8801612a8d565b169283111561380b565b6001600160a01b039081169384156106a857509061069e939291600c7fcacd6190ee2ad101cd34b99d8fbaf3cdcda816ef83aaa4759f111ba1c416e620989960405195610665876127de565b865280860193845260008b815291905260409020935191516001600160a01b039190921616911660a01b6001600160a01b031916179055565b83923880806105bb565b60405162461bcd60e51b8152908101899052601b60248201527f455243323938313a20496e76616c696420706172616d657465727300000000006044820152606490fd5b603283634e487b7160e01b6000525260246000fd5b909160019061074b906107306001600160a01b03610728610723888c8c612a14565b612a3a565b161515612a4e565b6107458a61073f878b8b612a14565b01612a8d565b90612aa1565b928760005282895261076c6040600020610766838a8a612a14565b90612af3565b0190610591565b34610245576000366003190112610245576020604051600080516020613c808339815191528152f35b3461024557600036600319011261024557602060105460601c604051908152f35b5034610245576040366003190112610245576107fc90356107dc6126d4565b908060005260006020526107f7600160406000200154613461565b613797565b005b503461024557602090816003193601126102455780356000818152600360205260409020549091839161083b906001600160a01b03161515612fc2565b604051906000600f549161084e836128b3565b808552848681019360019588600182169182600014610abb575050600114610a5d575b61087d9250038561282a565b835115610a41578586916000977a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000009081811015610a33575b50506d04ee2d6d415b85acef810000000080841015610a25575b50662386f26fc1000080841015610a16575b506305f5e10080841015610a07575b50612710808410156109f9575b505060648210156109e9575b600a809210156109df575b92600187019381602161093a6109248861284b565b97610932604051998a61282a565b80895261284b565b878a019a90601f1901368c37870101905b6109a9575b505050509361098f9392916109836109749660405197889551809288880190612676565b84019151809386840190612676565b0103808452018261282a565b905b6109a5604051928284938452830190612699565b0390f35b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a8353049182156109da5791908261094b565b610950565b956001019561090f565b9590606460029104910195610904565b9701969091049038806108f8565b600891989304920196386108eb565b601091989304920196386108dc565b8791989304920196386108ca565b6040995004925038806108b0565b505050505050604051610a538161280f565b6000815290610991565b5050600f60005284867f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802866000915b858310610aa257505061087d9350820101610871565b80919294505483858b0101520191018790868893610a8c565b60ff1916875261087d94151560051b84010191506108719050565b346102455760003660031901126102455760206040517f3b652633b3026fa70803ad50b58b0ae884cefe3497643f62c67c466f41a6e88d8152f35b503461024557608036600319011261024557610b2b6126be565b90610b346126d4565b91604435606435936001600160401b038511610245573660238601121561024557610b6e610b91948660246107fc98369301359101612866565b92610b81610b7c843361316d565b612d3a565b610b8c838383613235565b613af0565b6138bd565b503461024557604036600319011261024557610bb06126be565b60243590811515809203610245576001600160a01b031691338314610c255750336000526006602052604060002082600052602052604060002060ff1981541660ff83161790556040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a3005b60649060206040519162461bcd60e51b8352820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152fd5b3461024557600036600319011261024557602060405160008152f35b5034610245576020366003190112610245576001600160601b03610ca761289d565b336000908152600080516020613c608339815191526020526040902054610cd09060ff1661292b565b1690610bb88211610d1a577f8df4d6c1a5c8e6c4d7a71d760d42122503a5244aeab98f2ff8e3244be07a44e3602083806001600160601b03196015541617601555604051908152a1005b60649060206040519162461bcd60e51b8352820152601b60248201527f526f79616c74792070657263656e7461676520746f6f206869676800000000006044820152fd5b3461024557600036600319011261024557604051600254600082610d81836128b3565b9182825260209360019085600182169182600014610e0d575050600114610db0575b506109919250038361282a565b84915060026000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace906000915b858310610df5575050610991935082010185610da3565b80548389018501528794508693909201918101610dde565b60ff19168582015261099195151560051b8501019250879150610da39050565b346102455760003660031901126102455760206001600160601b0360105416604051908152f35b503461024557604036600319011261024557610e6e6126d4565b9035600052600060205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346102455760003660031901126102455760206001600160601b0360155416604051908152f35b34610245576020366003190112610245576020610eeb610ee66126be565b613031565b604051908152f35b346102455760003660031901126102455760206040517f797343f8d6a29aafeb3aaf0910a8973e0081c60c2f6c1f775cd9f76ea348fc1e8152f35b34610245576000366003190112610245576020600e54604051908152f35b503461024557602036600319011261024557610f6a6020913561300e565b6040516001600160a01b039091168152f35b503461024557602090816003193601126102455780356001600160401b03811161024557610fad90369083016126ea565b91600080516020613c80833981519152600052600084526040600020336000528452610fe060ff6040600020541661292b565b601280546000825580611218575b5060009060005b85811061111e575050612710611016816001600160601b0380941614612f5b565b84158015611055575b6040517fbb8446bab3f849e18e51a7f88d964208275772e34ae7283ced4d1850f2a6248b9080611050898983612b95565b0390a1005b6106ec5761106284612a3a565b61107c611070888701612a8d565b9384169283111561380b565b6001600160a01b03169283156110da57507fbb8446bab3f849e18e51a7f88d964208275772e34ae7283ced4d1850f2a6248b956040516110bb816127de565b848152015260a01b6001600160a01b03191617600b553880808061101f56