UNPKG

@q-dev/gdk-sdk

Version:

Typescript Library to interact with GDK Contracts

828 lines 68.5 kB
{ "_format": "hh-sol-artifact-1", "contractName": "QSBT", "sourceName": "contracts/tokens/QSBT.sol", "abi": [ { "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": "string", "name": "contractURI", "type": "string" } ], "name": "ContractURIChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "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" }, { "indexed": false, "internalType": "enum IERC5484.BurnAuth", "name": "burnAuth", "type": "uint8" } ], "name": "Issued", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "name": "MetadataUpdate", "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": 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": "CHANGE_METADATA_PERMISSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "string", "name": "contractURI", "type": "string" }, { "internalType": "string", "name": "baseURI", "type": "string" }, { "internalType": "uint256", "name": "totalSupplyCap", "type": "uint256" }, { "internalType": "bool", "name": "isBaseURIToken", "type": "bool" } ], "internalType": "struct IQSBT.ConstructorParams", "name": "params_", "type": "tuple" } ], "name": "__QSBT_init", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "authorization", "outputs": [ { "internalType": "enum IERC5484.BurnAuth", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "burnAuth", "outputs": [ { "internalType": "enum IERC5484.BurnAuth", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account_", "type": "address" }, { "internalType": "uint256", "name": "tokenId_", "type": "uint256" } ], "name": "isAbleToBurn", "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": "isBaseURIToken", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver_", "type": "address" }, { "internalType": "uint256", "name": "tokenId_", "type": "uint256" }, { "internalType": "string", "name": "tokenURI_", "type": "string" } ], "name": "mintTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver_", "type": "address" }, { "internalType": "uint256", "name": "tokenId_", "type": "uint256" }, { "internalType": "string", "name": "tokenURI_", "type": "string" }, { "internalType": "enum IERC5484.BurnAuth", "name": "", "type": "uint8" } ], "name": "mintTo", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "renounceOwnership", "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": "string", "name": "baseURI_", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "contractURI_", "type": "string" } ], "name": "setContractMetadata", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "isBaseURIToken_", "type": "bool" } ], "name": "setIsBaseURIToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId_", "type": "uint256" }, { "internalType": "string", "name": "tokenURI_", "type": "string" } ], "name": "setTokenURI", "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": [], "name": "totalSupplyCap", "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": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x60808060405234610016576131d5908161001c8239f35b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c90816301ffc9a714611d0d575080630489b56f14611cb257806306fdde0314611c05578063081812fc14611be6578063095ea7b314611a71578063162094c41461193e57806318160ddd146119205780631c307863146118e65780631fbe7ae6146118b457806323b872dd1461188a5780632a316267146112275780632f745c591461117a57806342842e0e1461115257806342966c6814610de55780634f6ccce714610d5357806355f804b314610c495780636352211e14610c185780636c0360eb14610b7b57806370a0823114610b4f578063715018a614610af25780638da5cb5b14610ac957806395d89b41146109f95780639f6ed25f14610968578063a22cb46514610898578063af4b908314610836578063b88d4fde146107d6578063bb102aea146107b7578063c87b56dd14610783578063d00e97d41461051d578063e8a3d48514610447578063e985e9c5146103f7578063f2fde38b14610366578063f44db05d14610342578063f71471ce1461030a5763fce55037146101a257600080fd5b346103075760209081600319360112610307576001600160401b03916004358381116103035736602382011215610303576101e7903690602481600401359101612045565b906101f061254c565b81519384116102ef5761012d61020f8561020a8354611ee4565b612165565b81601f86116001146102745785859661024c926000805160206131898339815191529791610269575b508160011b916000199060031b1c19161790565b90555b610263604051928284938452830190611e2c565b0390a180f35b905085015138610238565b8185526000805160206131a983398151915290601f198716865b8181106102d857509187916000805160206131898339815191529798600194106102bf575b5050811b01905561024f565b86015160001960f88460031b161c1916905538806102b3565b91928560018192868a01518155019401920161028e565b634e487b7160e01b83526041600452602483fd5b8280fd5b80fd5b50346103075760203660031901126103075760ff604061033e92600435815261013160205220541660405191829182611de0565b0390f35b5034610307578060031936011261030757602060ff61013054166040519015158152f35b503461030757602036600319011261030757610380611e51565b61038861254c565b6001600160a01b038116156103a3576103a090612ae2565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b50346103075760403660031901126103075760ff6040602092610418611e51565b610420611e6c565b6001600160a01b039182168352606a86528383209116825284522054604051911615158152f35b503461030757806003193601126103075760405190808261012d92835461046d81611ee4565b93848452602095600192876001821691826000146104f95750506001146104b2575b50505061049e92500383611f4f565b61033e604051928284938452830190611e2c565b8152859250906000805160206131a98339815191525b8583106104e157505061049e935082010138808061048f565b805483890185015287945086939092019181016104c8565b93509450505061049e94915060ff191682840152151560051b82010138808061048f565b503461030757608036600319011261030757610537611e51565b602435906044356001600160401b03811161077f5761055a903690600401611e82565b90916004606435101561077b5761012f54801590811561074f575b50156106d9576001600160a01b0381169283156106955761064d926105c586610647946105c06105ba83600052606760205260018060a01b0360406000205416151590565b15612e8c565b612ed8565b6000868152606760205260409020546105e8906001600160a01b031615156105ba565b84875260686020526040872060018154019055858752606760205260408720856001600160601b0360a01b8254161790558585887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a43691612045565b8361238a565b81835261013160205260408320600360ff19825416179055604051600381527f135ffb3383e06280e062ac5095bbf8faa98517161e596a2536bd98a9a8b64a8860203392a480f35b606460405162461bcd60e51b815260206004820152602060248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152fd5b60405162461bcd60e51b815260206004820152604260248201527f5b5147444b2d3032303030305d2d546f74616c20737570706c7920636170616360448201527f6974792065786365656465642c206d696e74696e67206e6f7420616c6c6f7765606482015261321760f11b608482015260a490fd5b90506099546001810180911161076757111538610575565b634e487b7160e01b87526011600452602487fd5b8480fd5b8380fd5b50346103075760203660031901126103075761033e6107a360043561236d565b604051918291602083526020830190611e2c565b5034610307578060031936011261030757602061012f54604051908152f35b5034610307576080366003190112610307576107f0611e51565b6107f8611e6c565b606435916001600160401b03831161077f573660238401121561077f5761082c6103a0933690602481600401359101612045565b9160443591612325565b5034610307578060031936011261030757604051604081018181106001600160401b038211176102ef5761033e9250604052600f81526e4348414e47455f4d4554414441544160881b6020820152604051918291602083526020830190611e2c565b5034610307576040366003190112610307576108b2611e51565b60243590811515809203610303576001600160a01b03169033821461092357338352606a602052604083208284526020526040832060ff1981541660ff83161790556040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a380f35b60405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606490fd5b503461030757606036600319011261030757610982611e51565b602435906044356001600160401b03811161077f576109a5903690600401611e82565b909161012f54801590811561074f5750156106d9576001600160a01b0381169283156106955761064d926105c586610647946105c06105ba83600052606760205260018060a01b0360406000205416151590565b503461030757806003193601126103075760405190808260665491610a1d83611ee4565b9283835260209460019186600182169182600014610aa7575050600114610a4d575b505061049e92500383611f4f565b90859250606682527f46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e943545b858310610a8f57505061049e93508201013880610a3f565b80548389018501528794508693909201918101610a77565b925093505061049e94915060ff191682840152151560051b8201013880610a3f565b503461030757806003193601126103075760fb546040516001600160a01b039091168152602090f35b5034610307578060031936011261030757610b0b61254c565b60fb80546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b5034610307576020366003190112610307576020610b73610b6e611e51565b6122ae565b604051908152f35b503461030757806003193601126103075760405190808261012e928354610ba181611ee4565b93848452602095600192876001821691826000146104f9575050600114610bd15750505061049e92500383611f4f565b8152859250906000805160206131698339815191525b858310610c0057505061049e935082010138808061048f565b80548389018501528794508693909201918101610be7565b5034610307576020366003190112610307576020610c37600435612288565b6040516001600160a01b039091168152f35b5034610307576020906020600319360112610307576001600160401b0360043581811161030357610c7e903690600401611e82565b9091610c8861254c565b81116102ef5761012e91610ca582610ca08554611ee4565b6121aa565b8394601f8311600114610ce7575083948291610cd7949592610cdc575b50508160011b916000199060031b1c19161790565b905580f35b013590503880610cc2565b601f19831695600080516020613169833981519152929186905b888210610d3b57505083600195969710610d21575b505050811b01905580f35b0135600019600384901b60f8161c19169055388080610d16565b80600184968294958701358155019501920190610d01565b503461030757602036600319011261030757600435609954811015610d8b57610d7d6020916121ef565b90546040519160031b1c8152f35b60405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608490fd5b50346103075760208060031936011261114e5760043591610e0583612288565b6001600160a01b038082168015959286156110c4575050609954828452609a8552806040852055600160401b8110156110b05782610e4c826001610e6594016099556121ef565b90919082549060031b91821b91600019901b1916179055565b609954600019959086810190811161109c57838552609a8652610e8c6040862054916121ef565b90549060031b1c610ea081610e4c846121ef565b8552609a865260408520558284528360408120556099548015611088578601610edc610ecb826121ef565b8154906000199060031b1b19169055565b60995515610f4257608484610eef61254c565b6040519062461bcd60e51b82526004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152fd5b610f4f82949394336125a4565b15611038578380958392610f6284612288565b908484526069875260408420916001600160601b0360a01b928381541690551691828452606887526040842090815401905583835260678652604083209081541690557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a460c98252610fda6040842054611ee4565b610fe2575050f35b825260c981526040822090610ff78254611ee4565b908161100257505050f35b8390601f8311600114611016575050505580f35b838252812092909161103390601f0160051c84016001850161214e565b555580f35b60405162461bcd60e51b815260048101849052602260248201527f5b5147444b2d3032303030335d2d4275726e206e6f7420617574686f72697a65604482015261321760f11b6064820152608490fd5b634e487b7160e01b85526031600452602485fd5b634e487b7160e01b85526011600452602485fd5b634e487b7160e01b84526041600452602484fd5b6110cd906122ae565b60001981019190821161109c57838552609886526040852054828103611112575b50838552846040812055845260978552604084209084528452826040812055610e65565b818652609787526040862083875287526040862054828752609788526040872082885288528060408820558652609887526040862055386110ee565b5080fd5b5034610307576103a061116436611eaf565b906040519261117284611f1e565b858452612325565b503461030757604036600319011261030757611194611e51565b602435916111a1826122ae565b8310156111ce5760209260409260018060a01b031682526097845282822090825283522054604051908152f35b60405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608490fd5b50346103075760031960203682011261114e576001600160401b036004351161114e5760c090600435360301126103075780549060ff8260081c161580809161187d575b8015611866575b1561180a5760ff19831660011782556112e892816117f9575b506112a560ff835460081c166112a081612a82565b612a82565b6112ae33612ae2565b6112bc60048035018061211c565b6112e06112d660246004979497350160043560040161211c565b9690923691612045565b943691612045565b916112fd60ff825460081c166112a081612a82565b83516001600160401b03811161171257611318606554611ee4565b601f81116117ab575b506020601f821160011461172657819083949596611353949261162d5750508160011b916000199060031b1c19161790565b6065555b82516001600160401b03811161171257611372606654611ee4565b601f81116116b9575b506020601f82116001146116385781908394956113ac949261162d5750508160011b916000199060031b1c19161790565b6066555b6113ce6113c760446004350160043560040161211c565b3691612045565b6113de60ff835460081c16612a82565b80516001600160401b0381116102ef576113fe8161020a61012d54611ee4565b6020601f82116001146115a7579161143e826114569360008051602061318983398151915295879161159c57508160011b916000199060031b1c19161790565b61012d55604051918291602083526020830190611e2c565b0390a161146d60646004350160043560040161211c565b6001600160401b0381949294116102ef5761012e9061149081610ca08454611ee4565b83601f821160011461152d57819085966114c094959692610cdc5750508160011b916000199060031b1c19161790565b90555b6084600435013561012f5560a46004350135801515809103610303576101309060ff801983541691161790556114f65780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b828552601f1982169560008051602061316983398151915291865b8881106115845750836001959697981061156a575b505050811b0190556114c3565b0135600019600384901b60f8161c1916905538808061155d565b90926020600181928686013581550194019101611548565b905083015138610238565b61012d84526000805160206131a983398151915290845b601f1984168110611615575082600080516020613189833981519152949260019261145695601f198116106115fc575b5050811b0161012d556107a3565b84015160001960f88460031b161c1916905538806115ee565b909160206001819285880151815501930191016115be565b015190503880610cc2565b606683527f46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e9435490601f198316845b8181106116a157509583600195969710611688575b505050811b016066556113b0565b015160001960f88460031b161c1916905538808061167a565b9192602060018192868b015181550194019201611665565b61170290606684527f46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e94354601f840160051c81019160208510611708575b601f0160051c019061214e565b3861137b565b90915081906116f5565b634e487b7160e01b82526041600452602482fd5b606583527f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c790835b601f1984168110611793575060019394959683601f1981161061177a575b505050811b01606555611357565b015160001960f88460031b161c1916905538808061176c565b9091602060018192858b01518155019301910161174e565b6117f390606584527f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c7601f840160051c8101916020851061170857601f0160051c019061214e565b38611321565b61ffff19166101011782553861128b565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156112725750600160ff841614611272565b50600160ff84161061126b565b5034610307576103a061189c36611eaf565b916118af6118aa84336126cb565b6120ba565b612792565b50346103075760403660031901126103075760206118dc6118d3611e51565b602435906125a4565b6040519015158152f35b50346103075760203660031901126103075760043580151580910361114e5761190d61254c565b6101309060ff8019835416911617905580f35b50346103075780600319360112610307576020609954604051908152f35b5034610307576040366003190112610307576004356024356001600160401b03811161030357611972903690600401611e82565b61197d839293612288565b6001600160a01b039081163314908115611a5d575b508015611a1f575b156119b4576103a0926119ae913691612045565b9061238a565b60405162461bcd60e51b815260206004820152603860248201527f5b5147444b2d3032303030315d2d53657420746f6b656e20555249206e6f742060448201527f617070726f76656420627920746f6b656e206f776e65722e00000000000000006064820152608490fd5b50611a5833611a2d84612288565b60018060a01b03809116600052606a6020526040600020911660005260205260ff6040600020541690565b61199a565b339150611a698461207c565b161438611992565b503461030757604036600319011261030757611a8b611e51565b602435906001600160a01b038080611aa285612288565b16921691808314611b9757803314908115611b76575b5015611b0b5782845260696020526040842080546001600160a01b03191683179055611ae383612288565b167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258480a480f35b60405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608490fd5b90508452606a6020526040842033855260205260ff60408520541638611ab8565b60405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608490fd5b5034610307576020366003190112610307576020610c3760043561207c565b503461030757806003193601126103075760405190808260655491611c2983611ee4565b9283835260209460019186600182169182600014610aa7575050600114611c5857505061049e92500383611f4f565b90859250606582527f8ff97419363ffd7000167f130ef7168fbea05faf9251824ca5043f113cc6a7c75b858310611c9a57505061049e93508201013880610a3f565b80548389018501528794508693909201918101611c82565b50346103075760203660031901126103075760ff604061033e92600435611cf6611cf182600052606760205260018060a01b0360406000205416151590565b61223c565b815261013160205220541660405191829182611de0565b90503461114e57602036600319011261114e5760043563ffffffff60e01b8116809103610303576020925063521ec1f760e01b8114908115611dcf575b8115611d58575b5015158152f35b632483248360e11b811491508115611d72575b5038611d51565b63780e9d6360e01b811491508115611d8c575b5038611d6b565b6380ac58cd60e01b811491508115611dbe575b8115611dad575b5038611d85565b6301ffc9a760e01b14905038611da6565b635b5e139f60e01b81149150611d9f565b630489b56f60e01b81149150611d4a565b919060208301926004821015611df35752565b634e487b7160e01b600052602160045260246000fd5b60005b838110611e1c5750506000910152565b8181015183820152602001611e0c565b90602091611e4581518092818552858086019101611e09565b601f01601f1916010190565b600435906001600160a01b0382168203611e6757565b600080fd5b602435906001600160a01b0382168203611e6757565b9181601f84011215611e67578235916001600160401b038311611e675760208381860195010111611e6757565b6060906003190112611e67576001600160a01b03906004358281168103611e6757916024359081168103611e67579060443590565b90600182811c92168015611f14575b6020831014611efe57565b634e487b7160e01b600052602260045260246000fd5b91607f1691611ef3565b602081019081106001600160401b03821117611f3957604052565b634e487b7160e01b600052604160045260246000fd5b90601f801991011681019081106001600160401b03821117611f3957604052565b6040519060008261012e91825492611f8784611ee4565b808452936020916001918281169081156120045750600114611fb5575b505050611fb392500383611f4f565b565b60009081526000805160206131698339815191529590935091905b828410611fec5750611fb3945050508101602001388080611fa4565b85548885018301529485019487945092810192611fd0565b9250505060209250611fb394915060ff191682840152151560051b820101388080611fa4565b6001600160401b038111611f3957601f01601f191660200190565b9291926120518261202a565b9161205f6040519384611f4f565b829481845281830111611e67578281602093846000960137010152565b60008181526067602052604090205461209f906001600160a01b0316151561223c565b6000908152606960205260409020546001600160a01b031690565b156120c157565b60405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608490fd5b903590601e1981360301821215611e6757018035906001600160401b038211611e6757602001918136038313611e6757565b818110612159575050565b6000815560010161214e565b90601f8211612172575050565b611fb39161012d6000526000805160206131a9833981519152906020601f840160051c8301931061170857601f0160051c019061214e565b90601f82116121b7575050565b611fb39161012e600052600080516020613169833981519152906020601f840160051c8301931061170857601f0160051c019061214e565b6099548110156122265760996000527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000190600090565b634e487b7160e01b600052603260045260246000fd5b1561224357565b60405162461bcd60e51b815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606490fd5b6000908152606760205260409020546001600160a01b03166122ab81151561223c565b90565b6001600160a01b031680156122ce57600052606860205260406000205490565b60405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608490fd5b906123499392916123396118aa84336126cb565b612344838383612792565b613049565b1561235057565b60405162461bcd60e51b81528061236960048201612b2b565b0390fd5b60ff6101305416612381576122ab90612b7e565b506122ab611f70565b6000818152606760205260409020549192916001600160a01b0316156124f05760009080825260209160c9835260408120908551956001600160401b038711611712576123d78354611ee4565b601f81116124c2575b508491601f881160011461243e57966124329281927ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce798999261162d5750508160011b916000199060031b1c19161790565b90555b604051908152a1565b9190601f198816848452868420935b8181106124ab57509160019391897ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7999a9410612492575b505050811b019055612435565b015160001960f88460031b161c19169055388080612485565b92938760018192878601518155019501930161244d565b6124ea90848452868420601f8a0160051c810191888b1061170857601f0160051c019061214e565b386123e0565b60405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b6064820152608490fd5b60fb546001600160a01b0316330361256057565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b60009180835261013160205260ff6040842054169160048310156126b757600383146126b15760028314801593908581866126a7575b80612690575b612684576126705793612665575b506125f882612288565b6001600160a01b039081168282169081149391841561264e575b50508215612639575b505081612631575b5061262b5790565b50600190565b905038612623565b6126479250611a2d90612288565b388061261b565b9091935061265b8461207c565b1614913880612612565b6001149250386125ee565b634e487b7160e01b86526021600452602486fd5b50505050505050600190565b5060fb546001600160a01b038581169116146125e0565b50508582156125da565b50505090565b634e487b7160e01b84526021600452602484fd5b906001600160a01b0380806126df84612288565b16931691838314938415612711575b5083156126fb5750505090565b6127079192935061207c565b16143880806126b1565b909350600052606a60205260406000208260005260205260ff6040600020541692386126ee565b1561273f57565b60405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608490fd5b906127b8906127a084612288565b6001600160a01b038481169390929183168414612738565b818116938415612a31578315908115612985575060995486600052609a60205280604060002055600160401b811015611f395786610e4c8260016127ff94016099556121ef565b838503612953575b156128ff5761281890610b6e61254c565b6128ac57816128319161282a86612288565b1614612738565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60008481526069602052604081206001600160601b0360a01b9081815416905583825260686020526040822060001981540190558482526040822060018154019055858252606760205284604083209182541617905580a4565b60405162461bcd60e51b815260206004820152602560248201527f5b5147444b2d3032303030325d2d5573657220616c72656164792068617320616044820152641029a12a1760d91b6064820152608490fd5b60405162461bcd60e51b815260206004820152602660248201527f5b5147444b2d3032303030345d2d534254206973206e6f74207472616e7366656044820152653930b136329760d11b6064820152608490fd5b61295c826122ae565b604060008781526097602052818120838252602052888282205588815260986020522055612807565b858503612993575b506127ff565b61299c906122ae565b6000198101908111612a1b5760009087825260209060988252604091828420548281036129e4575b50898452838381205587845260978152828420918452528120553861298d565b88855260978252838520838652825283852054898652609783528486208287528352808587205585526098825283852055386129c4565b634e487b7160e01b600052601160045260246000fd5b60405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608490fd5b15612a8957565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b60fb80546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b60809060208152603260208201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60608201520190565b600081815260676020526040902054612ba1906001600160a01b0316151561223c565b600081815260209060c98252604090818120918051829380549482612bc587611ee4565b91828252888201936001988a600182169182600014612e6e575050600114612e30575b50612bf592500383611f4f565b612bfd611f70565b908151928315612e24578051612e0057505050600086815260676020526040902054612c3491506001600160a01b0316151561223c565b612c3c611f70565b805190939015612dea5785869184977a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000009081811015612ddb575b50506d04ee2d6d415b85acef810000000080841015612dcd575b50662386f26fc1000080841015612dbe575b506305f5e10080841015612daf575b5061271080841015612da0575b506064831015612d90575b600a80931015612d86575b9081602160018a0199612cf9612ce48c61202a565b9b612cf189519d8e611f4f565b808d5261202a565b8b8b019890601f1901368a37508a0101905b612d50575b5050505090612d44946122ab949392519583612d358895518092888089019101611e09565b84019151809386840190611e09565b01038084520182611f4f565b600019019083906f181899199a1a9b1b9c1cb0b131b232b360811b8282061a835304918215612d8157919082612d0b565b612d10565b9660010196612ccf565b9691606460029104920196612cc4565b60049198930492019638612cb9565b60089198930492019638612cac565b60109198930492019638612c9d565b879198930492019638612c8b565b94985088940492503880612c71565b5092509250505190612dfb82611f1e565b815290565b929750926122ab969550612d44919450612d35889151988996888089019101611e09565b97505050505050505090565b915050855282878087208888915b858310612e55575050612bf5935082010138612be8565b8091929450548385890101520191018890888693612e3e565b60ff19168752612bf595151560051b8501019250389150612be89050565b15612e9357565b60405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606490fd5b60995490600092808452602093609a85526040938085832055600160401b8110156117125782610e4c826001612f1194016099556121ef565b6001600160a01b0383168481613018575050609954600019929083810190811161300457818352609a8752612f4986842054916121ef565b90549060031b1c612f5d81610e4c846121ef565b8352609a87528583205581528084812055609954908115612ff05750612f97929101612f8b610ecb826121ef565b6099555b610b6e61254c565b612f9f575050565b60849250519062461bcd60e51b82526004820152602560248201527f5b5147444b2d3032303030325d2d5573657220616c72656164792068617320616044820152641029a12a1760d91b6064820152fd5b634e487b7160e01b81526031600452602490fd5b634e487b7160e01b83526011600452602483fd5b90918493613028612f97966122ae565b93825260978852828220848352885280838320558152609887522055612f8f565b9293919290803b1561315e5761309d9460018060a01b039460405192839187630a85bd0160e11b9687855233600486015216602484015260448301526080606483015281806020998a956084830190611e2c565b03916000988991165af184918161311e575b5061310d575050503d600014613105573d6130c98161202a565b906130d76040519283611f4f565b81528091833d92013e5b805191826131025760405162461bcd60e51b81528061236960048201612b2b565b01fd5b5060606130e1565b6001600160e01b0319161492509050565b9091508581813d8311613157575b6131368183611f4f565b8101031261077b57516001600160e01b03198116810361077b5790386130af565b503d61312c565b505091505060019056febdaadd9f750d0166045bf387a364eadd28ba243e04512a47282aa5147a68e37fd5ee5eaf65263bab5d569890714d123ad48a9e54409d35e71d374f3dd300bba0193a3ae4da5049eb74cee39e4cf5827f7ce7b1d1d1775ef1c6311eb60558e6d5a164736f6c6343000818000a", "deployedBytecode": "0x608080604052600436101561001357600080fd5b600090813560e01c90816301ffc9a714611d0d575080630489b56f14611cb257806306fdde0314611c05578063081812fc14611be6578063095ea7b314611a71578063162094c41461193e57806318160ddd146119205780631c307863146118e65780631fbe7ae6146118b457806323b872dd1461188a5780632a316267146112275780632f745c591461117a57806342842e0e1461115257806342966c6814610de55780634f6ccce714610d5357806355f804b314610c495780636352211e14610c185780636c0360eb14610b7b57806370a0823114610b4f578063715018a614610af25780638da5cb5b14610ac957806395d89b41146109f95780639f6ed25f14610968578063a22cb46514610898578063af4b908314610836578063b88d4fde146107d6578063bb102aea146107b7578063c87b56dd14610783578063d00e97d41461051d578063e8a3d48514610447578063e985e9c5146103f7578063f2fde38b14610366578063f44db05d14610342578063f71471ce1461030a5763fce55037146101a257600080fd5b346103075760209081600319360112610307576001600160401b03916004358381116103035736602382011215610303576101e7903690602481600401359101612045565b906101f061254c565b81519384116102ef5761012d61020f8561020a8354611ee4565b612165565b81601f86116001146102745785859661024c926000805160206131898339815191529791610269575b508160011b916000199060031b1c19161790565b90555b610263604051928284938452830190611e2c565b0390a180f35b905085015138610238565b8185526000805160206131a983398151915290601f198716865b8181106102d857509187916000805160206131898339815191529798600194106102bf575b5050811b01905561024f565b86015160001960f88460031b161c1916905538806102b3565b91928560018192868a01518155019401920161028e565b634e487b7160e01b83526041600452602483fd5b8280fd5b80fd5b50346103075760203660031901126103075760ff604061033e92600435815261013160205220541660405191829182611de0565b0390f35b5034610307578060031936011261030757602060ff61013054166040519015158152f35b503461030757602036600319011261030757610380611e51565b61038861254c565b6001600160a01b038116156103a3576103a090612ae2565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b50346103075760403660031901126103075760ff6040602092610418611e51565b610420611e6c565b6001600160a01b039182168352606a86528383209116825284522054604051911615158152f35b503461030757806003193601126103075760405190808261012d92835461046d81611ee4565b93848452602095600192876001821691826000146104f95750506001146104b2575b50505061049e92500383611f4f565b61033e604051928284938452830190611e2c565b8152859250906000805160206131a98339815191525b8583106104e157505061049e935082010138808061048f565b805483890185015287945086939092019181016104c8565b93509450505061049e94915060ff191682840152151560051b82010138808061048f565b503461030757608036600319011261030757610537611e51565b602435906044356001600160401b03811161077f5761055a903690600401611e82565b90916004606435101561077b5761012f54801590811561074f575b50156106d9576001600160a01b0381169283156106955761064d926105c586610647946105c06105ba83600052606760205260018060a01b0360406000205416151590565b15612e8c565b612ed8565b6000868152606760205260409020546105e8906001600160a01b031615156105ba565b84875260686020526040872060018154019055858752606760205260408720856001600160601b0360a01b8254161790558585887fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a43691612045565b8361238a565b81835261013160205260408320600360ff19825416179055604051600381527f135ffb3383e06280e062ac5095bbf8faa98517161e596a2536bd98a9a8b64a8860203392a480f35b606460405162461bcd60e51b815260206004820152602060248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152fd5b60405162461bcd60e51b815260206004820152604260248201527f5b5147444b2d3032303030305d2d546f74616c20737570706c7920636170616360448201527f6974792065786365656465642c206d696e74696e67206e6f7420616c6c6f7765606482015261321760f11b608482015260a490fd5b90506099546001810180911161076757111538610575565b634e487b7160e01b87526011600452602487fd5b8480fd5b8380fd5b50346103075760203660031901126103075761033e6107a360043561236d565b604051918291602083526020830190611e2c565b5034610307578060031936011261030757602061012f54604051908152f35b5034610307576080366003190112610307576107f0611e51565b6107f8611e6c565b606435916001600160401b03831161077f573660238401121561077f5761082c6103a0933690602481600401359101612045565b9160443591612325565b5034610307578060031936011261030757604051604081018181106001600160401b038211176102ef5761033e9250604052600f81526e4348414e47455f4d4554414441544160881b6020820152604051918291602083526020830190611e2c565b5034610307576040366003190112610307576108b2611e51565b60243590811515809203610303576001600160a01b03169033821461092357338352606a602052604083208284526020526040832060ff1981541660ff83161790556040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a380f35b60405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606490fd5b503461030757606036600319011261030757610982611e51565b602435906044356001600160401b03811161077f576109a5903690600401611e82565b909161012f54801590811561074f5750156106d9576001600160a01b0381169283156106955761064d926105c586610647946105c06105ba83600052606760205260018060a01b0360406000205416151590565b503461030757806003193601126103075760405190808260665491610a1d83611ee4565b9283835260209460019186600182169182600014610aa7575050600114610a4d575b505061049e92500383611f4f565b90859250606682527f46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e943545b858310610a8f57505061049e93508201013880610a3f565b80548389018501528794508693909201918101610a77565b925093505061049e94915060ff191682840152151560051b8201013880610a3f565b503461030757806003193601126103075760fb546040516001600160a01b039091168152602090f35b5034610307578060031936011261030757610b0b61254c565b60fb80546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b5034610307576020366003190112610307576020610b73610b6e611e51565b6122ae565b604051908152f35b503461030757806003193601126103075760405190808261012e928354610ba181611ee4565b93848452602095600192876001821691826000146104f9575050600114610bd15750505061049e92500383611f4f565b8152859250906000805160206131698339815191525b858310610c0057505061049e935082010138808061048f565b80548389018501528794508693909201918101610be7565b5034610307576020366003190112610307576020610c37600435612288565b6040516001600160a01b039091168152f35b5034610307576020906020600319360112610307576001600160401b0360043581811161030357610c7e903690600401611e82565b9091610c8861254c565b81116102ef5761012e91610ca582610ca08554611ee4565b6121aa565b8394601f8311600114610ce7575083948291610cd7949592610cdc575b50508160011b916000199060031b1c19161790565b905580f35b013590503880610cc2565b601f19831695600080516020613169833981519152929186905b888210610d3b57505083600195969710610d21575b505050811b01905580f35b0135600019600384901b60f8161c19169055388080610d16565b80600184968294958701358155019501920190610d01565b503461030757602036600319011261030757600435609954811015610d8b57610d7d6020916121ef565b90546040519160031b1c8152f35b60405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e6473