[ { "inputs": [ { "internalType": "address", "name": "admin", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "address", "name": "minter", "type": "address" }, { "internalType": "string", "name": "baseURI", "type": "string" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" } ], "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": [], "name": "ECDSAInvalidSignature", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "length", "type": "uint256" } ], "name": "ECDSAInvalidSignatureLength", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "ECDSAInvalidSignatureS", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC1155InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC1155InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "idsLength", "type": "uint256" }, { "internalType": "uint256", "name": "valuesLength", "type": "uint256" } ], "name": "ERC1155InvalidArrayLength", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC1155InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC1155InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC1155InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC1155MissingApprovalForAll", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "string", "name": "newBaseURI", "type": "string" } ], "name": "BaseURISet", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "userAddress", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "userNonce", "type": "uint256" }, { "indexed": false, "internalType": "uint256[]", "name": "nftIds", "type": "uint256[]" } ], "name": "Minted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newPrice", "type": "uint256" } ], "name": "PriceUpdated", "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": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "string", "name": "newTokenURI", "type": "string" } ], "name": "TokenURISet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "bool", "name": "lock", "type": "bool" } ], "name": "TokenUnlockSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "ids", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256[]", "name": "values", "type": "uint256[]" } ], "name": "TransferBatch", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "TransferSingle", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "string", "name": "value", "type": "string" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "URI", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Withdrawed", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MINTER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "NAME", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "OPERATOR_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "VERSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address[]", "name": "accounts", "type": "address[]" }, { "internalType": "uint256[]", "name": "ids", "type": "uint256[]" } ], "name": "balanceOfBatch", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "exists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "getTransferStatus", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "userAddress", "type": "address" } ], "name": "getUserNonce", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "account", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "ids", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "values", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "address", "name": "userAddress", "type": "address" }, { "internalType": "uint256", "name": "userNonce", "type": "uint256" }, { "internalType": "uint256[]", "name": "nftIds", "type": "uint256[]" } ], "internalType": "struct IRubyscore_Achievement.MintParams", "name": "mintParams", "type": "tuple" }, { "internalType": "bytes", "name": "operatorSignature", "type": "bytes" } ], "name": "safeMint", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "id", "type": "uint256" }, { "internalType": "uint256", "name": "value", "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": "newBaseURI", "type": "string" } ], "name": "setBaseURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "tokenIds", "type": "uint256[]" }, { "internalType": "string[]", "name": "newTokenURIs", "type": "string[]" } ], "name": "setBatchTokenURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newPrice", "type": "uint256" } ], "name": "setPrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "string", "name": "newTokenURI", "type": "string" } ], "name": "setTokenURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bool", "name": "lock", "type": "bool" } ], "name": "setTransferUnlock", "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": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
61018060405260006101609081526008906200001c908262000513565b503480156200002a57600080fd5b50604051620037da380380620037da8339810160408190526200004d91620006b3565b6040518060400160405280601581526020017f5275627973636f72655f416368696576656d656e74000000000000000000000081525060405180604001604052806005815260200164302e302e3160d81b81525060405180604001604052806007815260200166697066733a2f2f60c81b815250620000d2816200032060201b60201c565b50620000e082600362000332565b61012052620000f181600462000332565b61014052815160208084019190912060e052815190820120610100524660a0526200017f60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526001600a556001600160a01b038616620001de5760405162461bcd60e51b81526020600482015260126024820152715a65726f206164647265737320636865636b60701b60448201526064015b60405180910390fd5b6001600160a01b0385166200022b5760405162461bcd60e51b81526020600482015260126024820152715a65726f206164647265737320636865636b60701b6044820152606401620001d5565b6001600160a01b038416620002785760405162461bcd60e51b81526020600482015260126024820152715a65726f206164647265737320636865636b60701b6044820152606401620001d5565b600c62000286838262000513565b50600d62000295828262000513565b50620002a36000876200036b565b50620002bf600080516020620037ba833981519152336200036b565b50620002db600080516020620037ba833981519152866200036b565b50620003087f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6856200036b565b5062000314836200041d565b505050505050620007d6565b60026200032e828262000513565b5050565b600060208351101562000352576200034a836200042b565b905062000365565b816200035f848262000513565b5060ff90505b92915050565b60008281526005602090815260408083206001600160a01b038516845290915281205460ff16620004145760008381526005602090815260408083206001600160a01b03861684529091529020805460ff19166001179055620003cb3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600162000365565b50600062000365565b60086200032e828262000513565b600080829050601f8151111562000459578260405163305a27a960e01b8152600401620001d591906200077c565b80516200046682620007b1565b179392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200049957607f821691505b602082108103620004ba57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200050e57600081815260208120601f850160051c81016020861015620004e95750805b601f850160051c820191505b818110156200050a57828155600101620004f5565b5050505b505050565b81516001600160401b038111156200052f576200052f6200046e565b620005478162000540845462000484565b84620004c0565b602080601f8311600181146200057f5760008415620005665750858301515b600019600386901b1c1916600185901b1785556200050a565b600085815260208120601f198616915b82811015620005b0578886015182559484019460019091019084016200058f565b5085821015620005cf5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80516001600160a01b0381168114620005f757600080fd5b919050565b60005b8381101562000619578181015183820152602001620005ff565b50506000910152565b600082601f8301126200063457600080fd5b81516001600160401b03808211156200065157620006516200046e565b604051601f8301601f19908116603f011681019082821181831017156200067c576200067c6200046e565b816040528381528660208588010111156200069657600080fd5b620006a9846020830160208901620005fc565b9695505050505050565b60008060008060008060c08789031215620006cd57600080fd5b620006d887620005df565b9550620006e860208801620005df565b9450620006f860408801620005df565b60608801519094506001600160401b03808211156200071657600080fd5b620007248a838b0162000622565b945060808901519150808211156200073b57600080fd5b620007498a838b0162000622565b935060a08901519150808211156200076057600080fd5b506200076f89828a0162000622565b9150509295509295509295565b60208152600082518060208401526200079d816040850160208701620005fc565b601f01601f19169190910160400192915050565b80516020808301519190811015620004ba5760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051612f896200083160003960006115c60152600061159401526000611921015260006118f9015260006118540152600061187e015260006118a80152612f896000f3fe6080604052600436106102035760003560e01c806391b7f5ed11610118578063ba772d8b116100a0578063d547741f1161006f578063d547741f14610635578063e985e9c514610655578063f242432a14610675578063f5b541a614610695578063ffa1ad74146106b757600080fd5b8063ba772d8b146105a6578063bd85b039146105c6578063c87b56dd146105f3578063d53913931461061357600080fd5b80639b3e5573116100e75780639b3e5573146104e0578063a217fddf14610500578063a22cb46514610515578063a3f4df7e14610535578063b93c37701461057657600080fd5b806391b7f5ed1461047657806391d148541461049657806395d89b41146104b657806398d5fdca146104cb57600080fd5b80632f2ff15d1161019b5780634f558e791161016a5780634f558e79146103b657806355f804b3146103e55780636834e3a8146104055780637c2ccc451461043b57806384b0196e1461044e57600080fd5b80632f2ff15d1461033457806336568abe146103545780633ccfd60b146103745780634e1273f41461038957600080fd5b8063162094c4116101d7578063162094c4146102ad57806318160ddd146102cf578063248a9ca3146102e45780632eb2c2d61461031457600080fd5b8062fdd58e1461020857806301ffc9a71461023b57806306fdde031461026b5780630e89341c1461028d575b600080fd5b34801561021457600080fd5b5061022861022336600461234f565b6106e8565b6040519081526020015b60405180910390f35b34801561024757600080fd5b5061025b61025636600461238f565b610710565b6040519015158152602001610232565b34801561027757600080fd5b5061028061071b565b60405161023291906123fc565b34801561029957600080fd5b506102806102a836600461240f565b6107a9565b3480156102b957600080fd5b506102cd6102c83660046124dd565b6107b4565b005b3480156102db57600080fd5b50600754610228565b3480156102f057600080fd5b506102286102ff36600461240f565b60009081526005602052604090206001015490565b34801561032057600080fd5b506102cd61032f3660046125b1565b61081b565b34801561034057600080fd5b506102cd61034f36600461265a565b610887565b34801561036057600080fd5b506102cd61036f36600461265a565b6108b2565b34801561038057600080fd5b506102cd6108ea565b34801561039557600080fd5b506103a96103a4366004612686565b610a0a565b6040516102329190612776565b3480156103c257600080fd5b5061025b6103d136600461240f565b600090815260066020526040902054151590565b3480156103f157600080fd5b506102cd610400366004612789565b610ade565b34801561041157600080fd5b506102286104203660046127c5565b6001600160a01b03166000908152600f602052604090205490565b6102cd610449366004612828565b610b41565b34801561045a57600080fd5b50610463610df0565b60405161023297969594939291906128ef565b34801561048257600080fd5b506102cd61049136600461240f565b610e36565b3480156104a257600080fd5b5061025b6104b136600461265a565b610e8a565b3480156104c257600080fd5b50610280610eb5565b3480156104d757600080fd5b50600b54610228565b3480156104ec57600080fd5b506102cd6104fb36600461296f565b610ec2565b34801561050c57600080fd5b50610228600081565b34801561052157600080fd5b506102cd610530366004612992565b610f27565b34801561054157600080fd5b5061028060405180604001604052806015815260200174149d589e5cd8dbdc9957d058da1a595d995b595b9d605a1b81525081565b34801561058257600080fd5b5061025b61059136600461240f565b6000908152600e602052604090205460ff1690565b3480156105b257600080fd5b506102cd6105c1366004612a00565b610f36565b3480156105d257600080fd5b506102286105e136600461240f565b60009081526006602052604090205490565b3480156105ff57600080fd5b5061028061060e36600461240f565b611025565b34801561061f57600080fd5b50610228600080516020612f3483398151915281565b34801561064157600080fd5b506102cd61065036600461265a565b611030565b34801561066157600080fd5b5061025b610670366004612a6b565b611055565b34801561068157600080fd5b506102cd610690366004612a95565b611083565b3480156106a157600080fd5b50610228600080516020612f1483398151915281565b3480156106c357600080fd5b5061028060405180604001604052806005815260200164302e302e3160d81b81525081565b6000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b600061070a826110e2565b600c805461072890612af9565b80601f016020809104026020016040519081016040528092919081815260200182805461075490612af9565b80156107a15780601f10610776576101008083540402835291602001916107a1565b820191906000526020600020905b81548152906001019060200180831161078457829003601f168201915b505050505081565b606061070a82611107565b600080516020612f348339815191526107cc816111e7565b6107d683836111f4565b816040516107e49190612b33565b6040519081900381209084907fda84ca2183491f179a603e877b2cb058e42195041c2b9c53d746427e519a34df90600090a3505050565b336001600160a01b038616811480159061083c575061083a8682611055565b155b156108725760405163711bec9160e11b81526001600160a01b038083166004830152871660248201526044015b60405180910390fd5b61087f8686868686611251565b505050505050565b6000828152600560205260409020600101546108a2816111e7565b6108ac83836112b8565b50505050565b6001600160a01b03811633146108db5760405163334bd91960e11b815260040160405180910390fd5b6108e5828261134c565b505050565b60006108f5816111e7565b47806109435760405162461bcd60e51b815260206004820152601760248201527f5a65726f20616d6f756e7420746f2077697468647261770000000000000000006044820152606401610869565b604051600090339083908381818185875af1925050503d8060008114610985576040519150601f19603f3d011682016040523d82523d6000602084013e61098a565b606091505b50509050806109d25760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b6044820152606401610869565b6040518281527f11e9d9f7a772129e26cb0560945658c96b41c42ac6712d233e20c894bfcd00fd9060200160405180910390a1505050565b60608151835114610a3b5781518351604051635b05999160e01b815260048101929092526024820152604401610869565b600083516001600160401b03811115610a5657610a56612428565b604051908082528060200260200182016040528015610a7f578160200160208202803683370190505b50905060005b8451811015610ad657602080820286010151610aa9906020808402870101516106e8565b828281518110610abb57610abb612b4f565b6020908102919091010152610acf81612b7b565b9050610a85565b509392505050565b600080516020612f14833981519152610af6816111e7565b610aff826113b9565b81604051610b0d9190612b33565b604051908190038120907ff9c7803e94e0d3c02900d8a90893a6d5e90dd04d32a4cfe825520f82bf9f32f690600090a25050565b610b496113c5565b60018360400151511015610b915760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204e46542069647360881b6044820152606401610869565b600b543414610bd95760405162461bcd60e51b815260206004820152601460248201527315dc9bdb99c81c185e5b595b9d08185b5bdd5b9d60621b6044820152606401610869565b6000610c9e7f66fe4d8b6c8e0542c70e2a244bf04681bb936b001f1be0f079a80e77158a847433600f6000336001600160a01b03166001600160a01b03168152602001908152602001600020548760400151604051602001610c3b9190612b94565b60405160208183030381529060405280519060200120604051602001610c8394939291909384526001600160a01b039290921660208401526040830152606082015260800190565b604051602081830303815290604052805190602001206113ef565b9050610cf7600080516020612f34833981519152610cf28386868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061141c92505050565b611446565b83516001600160a01b03166000908152600f60205260408120805460019290610d21908490612bca565b909155505060408401515160011015610d5b57610d56846000015185604001516040518060200160405280600081525061147f565b610d97565b610d9784600001518560400151600081518110610d7a57610d7a612b4f565b602002602001015160405180602001604052806000815250611559565b836020015184600001516001600160a01b03167fff0a1dc048ef1a5e9e2845c6bb6cafd8b8531f3cb15368f4a708dec7d7bc789f8660400151604051610ddd9190612776565b60405180910390a3506108e56001600a55565b600060608060008060006060610e0461158d565b610e0c6115bf565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b600080516020612f14833981519152610e4e816111e7565b600b8290556040518281527f66cbca4f3c64fecf1dcb9ce094abcf7f68c3450a1d4e3a8e917dd621edb4ebe09060200160405180910390a15050565b60009182526005602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600d805461072890612af9565b600080516020612f14833981519152610eda816111e7565b6000838152600e6020526040808220805460ff19168515159081179091559051909185917f784afb92b74f2c9ccd3cb1b9697580a90fadab59d6640bbb915d1637bfbbf0089190a3505050565b610f323383836115ec565b5050565b600080516020612f34833981519152610f4e816111e7565b838214610f8e5760405162461bcd60e51b815260206004820152600e60248201526d496e76616c696420706172616d7360901b6044820152606401610869565b60005b8481101561087f57611013868683818110610fae57610fae612b4f565b90506020020135858584818110610fc757610fc7612b4f565b9050602002810190610fd99190612bdd565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506107b492505050565b8061101d81612b7b565b915050610f91565b606061070a826107a9565b60008281526005602052604090206001015461104b816111e7565b6108ac838361134c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b336001600160a01b03861681148015906110a457506110a28682611055565b155b156110d55760405163711bec9160e11b81526001600160a01b03808316600483015287166024820152604401610869565b61087f8686868686611682565b60006001600160e01b03198216637965db0b60e01b148061070a575061070a82611710565b60008181526009602052604081208054606092919061112590612af9565b80601f016020809104026020016040519081016040528092919081815260200182805461115190612af9565b801561119e5780601f106111735761010080835404028352916020019161119e565b820191906000526020600020905b81548152906001019060200180831161118157829003601f168201915b5050505050905060008151116111bc576111b783611760565b6111e0565b6008816040516020016111d0929190612c23565b6040516020818303038152906040525b9392505050565b6111f18133611446565b50565b600082815260096020526040902061120c8282612cf0565b50817f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b611238846107a9565b60405161124591906123fc565b60405180910390a25050565b6001600160a01b03841661127b57604051632bfa23e760e11b815260006004820152602401610869565b6001600160a01b0385166112a457604051626a0d4560e21b815260006004820152602401610869565b6112b185858585856117f4565b5050505050565b60006112c48383610e8a565b6113445760008381526005602090815260408083206001600160a01b03861684529091529020805460ff191660011790556112fc3390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600161070a565b50600061070a565b60006113588383610e8a565b156113445760008381526005602090815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a450600161070a565b6008610f328282612cf0565b6002600a54036113e857604051633ee5aeb560e01b815260040160405180910390fd5b6002600a55565b600061070a6113fc611847565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060008061142c8686611972565b92509250925061143c82826119bf565b5090949350505050565b6114508282610e8a565b610f325760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610869565b600082516001600160401b0381111561149a5761149a612428565b6040519080825280602002602001820160405280156114c3578160200160208202803683370190505b50905060005b83518160ff16101561154c576114fb85858360ff16815181106114ee576114ee612b4f565b60200260200101516106e8565b156115185760405162461bcd60e51b815260040161086990612daf565b6001828260ff168151811061152f5761152f612b4f565b60209081029190910101528061154481612df0565b9150506114c9565b506108ac84848385611a78565b61156383836106e8565b156115805760405162461bcd60e51b815260040161086990612daf565b6108e58383600184611ab0565b60606115ba7f00000000000000000000000000000000000000000000000000000000000000006003611b0d565b905090565b60606115ba7f00000000000000000000000000000000000000000000000000000000000000006004611b0d565b6001600160a01b0382166116155760405162ced3e160e81b815260006004820152602401610869565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166116ac57604051632bfa23e760e11b815260006004820152602401610869565b6001600160a01b0385166116d557604051626a0d4560e21b815260006004820152602401610869565b6040805160018082526020820186905281830190815260608201859052608082019092529061170787878484876117f4565b50505050505050565b60006001600160e01b03198216636cdb3d1360e11b148061174157506001600160e01b031982166303a24d0760e21b145b8061070a57506301ffc9a760e01b6001600160e01b031983161461070a565b60606002805461176f90612af9565b80601f016020809104026020016040519081016040528092919081815260200182805461179b90612af9565b80156117e85780601f106117bd576101008083540402835291602001916117e8565b820191906000526020600020905b8154815290600101906020018083116117cb57829003601f168201915b50505050509050919050565b61180085858585611bb8565b6001600160a01b038416156112b157825133906001036118395760208481015190840151611832838989858589611c79565b505061087f565b61087f818787878787611d9d565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156118a057507f000000000000000000000000000000000000000000000000000000000000000046145b156118ca57507f000000000000000000000000000000000000000000000000000000000000000090565b6115ba604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600080600083516041036119ac5760208401516040850151606086015160001a61199e88828585611e86565b9550955095505050506119b8565b50508151600091506002905b9250925092565b60008260038111156119d3576119d3612e0f565b036119dc575050565b60018260038111156119f0576119f0612e0f565b03611a0e5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115611a2257611a22612e0f565b03611a435760405163fce698f760e01b815260048101829052602401610869565b6003826003811115611a5757611a57612e0f565b03610f32576040516335e2f38360e21b815260048101829052602401610869565b6001600160a01b038416611aa257604051632bfa23e760e11b815260006004820152602401610869565b6108ac6000858585856117f4565b6001600160a01b038416611ada57604051632bfa23e760e11b815260006004820152602401610869565b6040805160018082526020820186905281830190815260608201859052608082019092529061087f6000878484876117f4565b606060ff8314611b2757611b2083611f55565b905061070a565b818054611b3390612af9565b80601f0160208091040260200160405190810160405280929190818152602001828054611b5f90612af9565b8015611bac5780601f10611b8157610100808354040283529160200191611bac565b820191906000526020600020905b815481529060010190602001808311611b8f57829003601f168201915b5050505050905061070a565b60005b8251811015611c6c57600e6000848381518110611bda57611bda612b4f565b60209081029190910181015182528101919091526040016000205460ff16158015611c0d57506001600160a01b03851615155b15611c5a5760405162461bcd60e51b815260206004820152601760248201527f5468697320746f6b656e206f6e6c7920666f7220796f750000000000000000006044820152606401610869565b80611c6481612b7b565b915050611bbb565b506108ac84848484611f94565b6001600160a01b0384163b1561087f5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611cbd9089908990889088908890600401612e25565b6020604051808303816000875af1925050508015611cf8575060408051601f3d908101601f19168201909252611cf591810190612e6a565b60015b611d61573d808015611d26576040519150601f19603f3d011682016040523d82523d6000602084013e611d2b565b606091505b508051600003611d5957604051632bfa23e760e11b81526001600160a01b0386166004820152602401610869565b805181602001fd5b6001600160e01b0319811663f23a6e6160e01b1461170757604051632bfa23e760e11b81526001600160a01b0386166004820152602401610869565b6001600160a01b0384163b1561087f5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611de19089908990889088908890600401612e87565b6020604051808303816000875af1925050508015611e1c575060408051601f3d908101601f19168201909252611e1991810190612e6a565b60015b611e4a573d808015611d26576040519150601f19603f3d011682016040523d82523d6000602084013e611d2b565b6001600160e01b0319811663bc197c8160e01b1461170757604051632bfa23e760e11b81526001600160a01b0386166004820152602401610869565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115611ec15750600091506003905082611f4b565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611f15573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611f4157506000925060019150829050611f4b565b9250600091508190505b9450945094915050565b60606000611f62836120ee565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b611fa084848484612116565b6001600160a01b038416612053576000805b8351811015612039576000838281518110611fcf57611fcf612b4f565b602002602001015190508060066000878581518110611ff057611ff0612b4f565b6020026020010151815260200190815260200160002060008282546120159190612bca565b9091555061202590508184612bca565b9250508061203290612b7b565b9050611fb2565b50806007600082825461204c9190612bca565b9091555050505b6001600160a01b0383166108ac576000805b83518110156120dd57600083828151811061208257612082612b4f565b6020026020010151905080600660008785815181106120a3576120a3612b4f565b6020026020010151815260200190815260200160002060008282540392505081905550808301925050806120d690612b7b565b9050612065565b506007805491909103905550505050565b600060ff8216601f81111561070a57604051632cd44ac360e21b815260040160405180910390fd5b80518251146121455781518151604051635b05999160e01b815260048101929092526024820152604401610869565b3360005b8351811015612254576020818102858101820151908501909101516001600160a01b038816156121fc576000828152602081815260408083206001600160a01b038c168452909152902054818110156121d5576040516303dee4c560e01b81526001600160a01b038a166004820152602481018290526044810183905260648101849052608401610869565b6000838152602081815260408083206001600160a01b038d16845290915290209082900390555b6001600160a01b03871615612241576000828152602081815260408083206001600160a01b038b1684529091528120805483929061223b908490612bca565b90915550505b50508061224d90612b7b565b9050612149565b5082516001036122d55760208301516000906020840151909150856001600160a01b0316876001600160a01b0316846001600160a01b03167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6285856040516122c6929190918252602082015260400190565b60405180910390a450506112b1565b836001600160a01b0316856001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051612324929190612ee5565b60405180910390a45050505050565b80356001600160a01b038116811461234a57600080fd5b919050565b6000806040838503121561236257600080fd5b61236b83612333565b946020939093013593505050565b6001600160e01b0319811681146111f157600080fd5b6000602082840312156123a157600080fd5b81356111e081612379565b60005b838110156123c75781810151838201526020016123af565b50506000910152565b600081518084526123e88160208601602086016123ac565b601f01601f19169290920160200192915050565b6020815260006111e060208301846123d0565b60006020828403121561242157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561246657612466612428565b604052919050565b600082601f83011261247f57600080fd5b81356001600160401b0381111561249857612498612428565b6124ab601f8201601f191660200161243e565b8181528460208386010111156124c057600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156124f057600080fd5b8235915060208301356001600160401b0381111561250d57600080fd5b6125198582860161246e565b9150509250929050565b60006001600160401b0382111561253c5761253c612428565b5060051b60200190565b600082601f83011261255757600080fd5b8135602061256c61256783612523565b61243e565b82815260059290921b8401810191818101908684111561258b57600080fd5b8286015b848110156125a6578035835291830191830161258f565b509695505050505050565b600080600080600060a086880312156125c957600080fd5b6125d286612333565b94506125e060208701612333565b935060408601356001600160401b03808211156125fc57600080fd5b61260889838a01612546565b9450606088013591508082111561261e57600080fd5b61262a89838a01612546565b9350608088013591508082111561264057600080fd5b5061264d8882890161246e565b9150509295509295909350565b6000806040838503121561266d57600080fd5b8235915061267d60208401612333565b90509250929050565b6000806040838503121561269957600080fd5b82356001600160401b03808211156126b057600080fd5b818501915085601f8301126126c457600080fd5b813560206126d461256783612523565b82815260059290921b840181019181810190898411156126f357600080fd5b948201945b838610156127185761270986612333565b825294820194908201906126f8565b9650508601359250508082111561272e57600080fd5b5061251985828601612546565b600081518084526020808501945080840160005b8381101561276b5781518752958201959082019060010161274f565b509495945050505050565b6020815260006111e0602083018461273b565b60006020828403121561279b57600080fd5b81356001600160401b038111156127b157600080fd5b6127bd8482850161246e565b949350505050565b6000602082840312156127d757600080fd5b6111e082612333565b60008083601f8401126127f257600080fd5b5081356001600160401b0381111561280957600080fd5b60208301915083602082850101111561282157600080fd5b9250929050565b60008060006040848603121561283d57600080fd5b83356001600160401b038082111561285457600080fd5b908501906060828803121561286857600080fd5b60405160608101818110838211171561288357612883612428565b60405261288f83612333565b8152602083013560208201526040830135828111156128ad57600080fd5b6128b989828601612546565b604083015250945060208601359150808211156128d557600080fd5b506128e2868287016127e0565b9497909650939450505050565b60ff60f81b8816815260e06020820152600061290e60e08301896123d0565b828103604084015261292081896123d0565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050612951818561273b565b9a9950505050505050505050565b8035801515811461234a57600080fd5b6000806040838503121561298257600080fd5b8235915061267d6020840161295f565b600080604083850312156129a557600080fd5b6129ae83612333565b915061267d6020840161295f565b60008083601f8401126129ce57600080fd5b5081356001600160401b038111156129e557600080fd5b6020830191508360208260051b850101111561282157600080fd5b60008060008060408587031215612a1657600080fd5b84356001600160401b0380821115612a2d57600080fd5b612a39888389016129bc565b90965094506020870135915080821115612a5257600080fd5b50612a5f878288016129bc565b95989497509550505050565b60008060408385031215612a7e57600080fd5b612a8783612333565b915061267d60208401612333565b600080600080600060a08688031215612aad57600080fd5b612ab686612333565b9450612ac460208701612333565b9350604086013592506060860135915060808601356001600160401b03811115612aed57600080fd5b61264d8882890161246e565b600181811c90821680612b0d57607f821691505b602082108103612b2d57634e487b7160e01b600052602260045260246000fd5b50919050565b60008251612b458184602087016123ac565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612b8d57612b8d612b65565b5060010190565b815160009082906020808601845b83811015612bbe57815185529382019390820190600101612ba2565b50929695505050505050565b8082018082111561070a5761070a612b65565b6000808335601e19843603018112612bf457600080fd5b8301803591506001600160401b03821115612c0e57600080fd5b60200191503681900382131561282157600080fd5b6000808454612c3181612af9565b60018281168015612c495760018114612c5e57612c8d565b60ff1984168752821515830287019450612c8d565b8860005260208060002060005b85811015612c845781548a820152908401908201612c6b565b50505082870194505b505050508351612ca18183602088016123ac565b01949350505050565b601f8211156108e557600081815260208120601f850160051c81016020861015612cd15750805b601f850160051c820191505b8181101561087f57828155600101612cdd565b81516001600160401b03811115612d0957612d09612428565b612d1d81612d178454612af9565b84612caa565b602080601f831160018114612d525760008415612d3a5750858301515b600019600386901b1c1916600185901b17855561087f565b600085815260208120601f198616915b82811015612d8157888601518255948401946001909101908401612d62565b5085821015612d9f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208082526021908201527f596f7520616c72656164792068617665207468697320616368696576656d656e6040820152601d60fa1b606082015260800190565b600060ff821660ff8103612e0657612e06612b65565b60010192915050565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090612e5f908301846123d0565b979650505050505050565b600060208284031215612e7c57600080fd5b81516111e081612379565b6001600160a01b0386811682528516602082015260a060408201819052600090612eb39083018661273b565b8281036060840152612ec5818661273b565b90508281036080840152612ed981856123d0565b98975050505050505050565b604081526000612ef8604083018561273b565b8281036020840152612f0a818561273b565b9594505050505056fe97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9299f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a2646970667358221220b8c1347f2a73d010c495e26bcdef1b8e5d9ec501e6a5157279e170821ba5ddbf64736f6c6343000815003397667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b9290000000000000000000000000d0d5ff3cfef8b7b2b1cac6b6c27fd0846c09361000000000000000000000000381c031baa5995d0cc52386508050ac947780815000000000000000000000000381c031baa5995d0cc52386508050ac94778081500000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000007697066733a2f2f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f5275627973636f72655f5461696b6f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f5275627973636f72655f5461696b6f0000000000000000000000000000000000