[ { "inputs": [ { "internalType": "string", "name": "pptUri", "type": "string" }, { "internalType": "address[]", "name": "pptBase", "type": "address[]" }, { "internalType": "uint256", "name": "deadlineIn", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "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" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "EXA", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "GIGA", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "KILO", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MEGA", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "NFT_SEAL_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "NFT_SEAL_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PETA", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "TERA", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UNIT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "URI_DATA_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "URI_DATA_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "YOTTA", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ZETTA", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "nftId", "type": "uint256" } ], "name": "ageOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "uint256", "name": "nftId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "uint256[]", "name": "nftIds", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "burnBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "contractURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "level", "type": "uint256" } ], "name": "denominationOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "id", "type": "uint256" } ], "name": "exists", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getRoleMember", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleMemberCount", "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": "uint256", "name": "anno", "type": "uint256" }, { "internalType": "uint256", "name": "level", "type": "uint256" }, { "internalType": "uint256", "name": "prefix", "type": "uint256" } ], "name": "idBy", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "anno", "type": "uint256" }, { "internalType": "uint256[]", "name": "levels", "type": "uint256[]" }, { "internalType": "uint256", "name": "prefix", "type": "uint256" } ], "name": "idsBy", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "pure", "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": [ { "internalType": "uint256", "name": "nftId", "type": "uint256" } ], "name": "levelOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "nftId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256[]", "name": "index", "type": "uint256[]" } ], "name": "migrate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256[]", "name": "nftIds", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "index", "type": "uint256[]" } ], "name": "migrateBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "nftId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256[]", "name": "index", "type": "uint256[]" } ], "name": "migrateFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256[]", "name": "nftIds", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "index", "type": "uint256[]" } ], "name": "migrateFromBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "nftId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "nftIds", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" } ], "name": "mintBatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "base", "type": "address" } ], "name": "oldIndexOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "nftId", "type": "uint256" } ], "name": "prefixOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "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": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256[]", "name": "nftIds", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "amounts", "type": "uint256[]" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeBatchTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "nftId", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "seal", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sealAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "seals", "outputs": [ { "internalType": "bool[]", "name": "", "type": "bool[]" } ], "stateMutability": "view", "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": "uri", "type": "string" } ], "name": "setContractURI", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "uri", "type": "string" } ], "name": "setURI", "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": "nftId", "type": "uint256" } ], "name": "totalAgeOf", "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": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "uri", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "year", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "nftId", "type": "uint256" } ], "name": "yearOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" } ]
60806040523480156200001157600080fd5b50604051620048b3380380620048b383398101604081905262000034916200073e565b6040518060400160405280600b81526020016a58506f776572205050547360a81b81525060405180604001604052806007815260200166161413d5d4141560ca1b8152508484848181846200008f816200032760201b60201c565b506200009d60003362000339565b620000d87f4a89d315e602b0589d706720a2c812227309c5069c55dff3ebf78f5e797aac69600080516020620048738339815191526200037c565b620000f3600080516020620048738339815191523362000339565b6200012e7fbc524e8ef0f829ac5a52282466b7de9273cee2f628ae71bbcd8e2d8cd73f4a59600080516020620048938339815191526200037c565b62000149600080516020620048938339815191523362000339565b62000155814262000839565b60095581516001600160401b0381111562000174576200017462000656565b6040519080825280602002602001820160405280156200019e578160200160208202803683370190505b508051620001b59160079160209091019062000533565b5081516001600160401b03811115620001d257620001d262000656565b604051908082528060200260200182016040528015620001fc578160200160208202803683370190505b5080516200021391600a916020909101906200059d565b5060005b8251811015620002de578281815181106200023657620002366200084f565b6020026020010151600782815481106200025457620002546200084f565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555080600860008584815181106200029c576200029c6200084f565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055508080620002d59062000865565b91505062000217565b505050620002fb620002f5620003c760201b60201c565b620003cb565b600c6200030986826200090f565b50600d6200031885826200090f565b505050505050505050620009db565b60026200033582826200090f565b5050565b6200035082826200041d60201b620014e01760201c565b60008281526005602090815260409091206200037791839062001566620004c1821b17901c565b505050565b600082815260046020526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b3390565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008281526004602090815260408083206001600160a01b038516845290915290205460ff16620003355760008281526004602090815260408083206001600160a01b03851684529091529020805460ff191660011790556200047d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620004d8836001600160a01b038416620004e1565b90505b92915050565b60008181526001830160205260408120546200052a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620004db565b506000620004db565b8280548282559060005260206000209081019282156200058b579160200282015b828111156200058b57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000554565b50620005999291506200063f565b5090565b82805482825590600052602060002090601f016020900481019282156200058b5791602002820160005b838211156200060657835183826101000a81548160ff0219169083151502179055509260200192600101602081600001049283019260010302620005c7565b8015620006355782816101000a81549060ff021916905560010160208160000104928301926001030262000606565b5050620005999291505b5b8082111562000599576000815560010162000640565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000697576200069762000656565b604052919050565b600082601f830112620006b157600080fd5b815160206001600160401b03821115620006cf57620006cf62000656565b8160051b620006e08282016200066c565b9283528481018201928281019087851115620006fb57600080fd5b83870192505b84831015620007335782516001600160a01b0381168114620007235760008081fd5b8252918301919083019062000701565b979650505050505050565b6000806000606084860312156200075457600080fd5b83516001600160401b03808211156200076c57600080fd5b818601915086601f8301126200078157600080fd5b81518181111562000796576200079662000656565b6020620007ac601f8301601f191682016200066c565b8281528982848701011115620007c157600080fd5b60005b83811015620007e1578581018301518282018401528201620007c4565b5060009281018201929092528701519095509150808211156200080357600080fd5b5062000812868287016200069f565b925050604084015190509250925092565b634e487b7160e01b600052601160045260246000fd5b80820180821115620004db57620004db62000823565b634e487b7160e01b600052603260045260246000fd5b6000600182016200087a576200087a62000823565b5060010190565b600181811c908216806200089657607f821691505b602082108103620008b757634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200037757600081815260208120601f850160051c81016020861015620008e65750805b601f850160051c820191505b818110156200090757828155600101620008f2565b505050505050565b81516001600160401b038111156200092b576200092b62000656565b62000943816200093c845462000881565b84620008bd565b602080601f8311600181146200097b5760008415620009625750858301515b600019600386901b1c1916600185901b17855562000907565b600085815260208120601f198616915b82811015620009ac578886015182559484019460019091019084016200098b565b5085821015620009cb5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b613e8880620009eb6000396000f3fe608060405234801561001057600080fd5b50600436106103a35760003560e01c80638e5136fc116101e9578063cb431e761161010f578063e8a3d485116100ad578063f2fde38b1161007c578063f2fde38b1461081b578063f32697161461082e578063f5298aca14610836578063f544c35e1461084957600080fd5b8063e8a3d4851461079d578063e985e9c5146107a5578063eb497214146107e1578063f242432a1461080857600080fd5b8063d547741f116100e9578063d547741f14610767578063d5e5e0621461077a578063d81d0a1514610782578063df435be81461079557600080fd5b8063cb431e7614610711578063cd9b869a14610719578063cde828951461074057600080fd5b8063a217fddf11610187578063b9636f3b11610156578063b9636f3b146106c3578063bd85b039146106d6578063c446d550146106f6578063ca15c873146106fe57600080fd5b8063a217fddf14610682578063a22cb4651461068a578063a62c77991461069d578063ad888520146106b057600080fd5b8063938e3d7b116101c3578063938e3d7b1461064057806394c209a51461065357806395d89b411461067a5780639d8e21771461068257600080fd5b80638e5136fc146106075780639010d07c1461061a57806391d148541461062d57600080fd5b8063361ce97e116102ce57806361c0c9761161026c578063715018a61161023b578063715018a6146105bf57806386fe212d146105c757806389c3cbae146105da5780638da5cb5b146105e257600080fd5b806361c0c9761461057e5780636b20c454146105915780636c749c26146105a45780636d5e3032146105ac57600080fd5b80634e1273f4116102a85780634e1273f4146105215780634f558e791461054157806355095bd2146105635780635925e2111461057657600080fd5b8063361ce97e146104f357806336568abe146104fb57806340da7ce71461050e57600080fd5b8063127860f811610346578063248a9ca311610315578063248a9ca31461049757806329cd827d146104ba5780632eb2c2d6146104cd5780632f2ff15d146104e057600080fd5b8063127860f81461044b578063156e29f61461045e57806319fe0665146104715780631c6172301461048457600080fd5b806306fdde031161038257806306fdde031461040657806308560eca1461041b5780630c7fa13e146104305780630e89341c1461043857600080fd5b8062fdd58e146103a857806301ffc9a7146103ce57806302fe5305146103f1575b600080fd5b6103bb6103b6366004612dd7565b610872565b6040519081526020015b60405180910390f35b6103e16103dc366004612e17565b61090b565b60405190151581526020016103c5565b6104046103ff366004612ed3565b610916565b005b61040e61094d565b6040516103c59190612f6b565b6104236109db565b6040516103c59190612f7e565b610404610a53565b61040e610446366004612fc4565b610aa5565b6103bb610459366004612fdd565b610b39565b61040461046c366004613009565b610be0565b61040461047f3660046130d0565b610c13565b6103bb610492366004612fc4565b610c1f565b6103bb6104a5366004612fc4565b60009081526004602052604090206001015490565b6103bb6104c8366004612fc4565b610c86565b6104046104db366004613177565b610cdb565b6104046104ee366004613220565b610d05565b6103bb600381565b610404610509366004613220565b610d2a565b61040461051c36600461324c565b610da4565b61053461052f3660046132ac565b610e11565b6040516103c591906133b1565b6103e161054f366004612fc4565b600090815260036020526040902054151590565b6103bb610571366004612fc4565b610f3a565b6103bb601581565b61040461058c3660046133c4565b610f45565b61040461059f366004613409565b610f51565b6103bb601281565b6103bb6105ba366004612fc4565b610f6f565b610404610fc7565b6104046105d5366004612fc4565b610fdb565b6103bb600c81565b600b546001600160a01b03165b6040516001600160a01b0390911681526020016103c5565b610534610615366004613443565b611047565b6105ef610628366004613492565b6110f8565b6103e161063b366004613220565b611117565b61040461064e366004612ed3565b611142565b6103bb7fbc524e8ef0f829ac5a52282466b7de9273cee2f628ae71bbcd8e2d8cd73f4a5981565b61040e611178565b6103bb600081565b6104046106983660046134b4565b611185565b6103bb6106ab366004612dd7565b611190565b6104046106be3660046134f0565b611219565b6103bb6106d1366004612fc4565b6112d7565b6103bb6106e4366004612fc4565b60009081526003602052604090205490565b6103bb600981565b6103bb61070c366004612fc4565b6112e2565b6103bb600681565b6103bb7f4a89d315e602b0589d706720a2c812227309c5069c55dff3ebf78f5e797aac6981565b6103bb7f18279111969b053eb32d637cdc8d9e7e53d648d3969f60ee55ddd0f63a7c328081565b610404610775366004613220565b6112f9565b6103bb601881565b610404610790366004613409565b61131e565b6103bb600f81565b61040e61134c565b6103e16107b336600461357c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6103bb7f21b4f2a846971d5096997e4122542f612858bcbb112ef24ef9b354083523151981565b6104046108163660046135a6565b6113d5565b61040461082936600461360a565b6113f8565b6103bb611471565b610404610844366004613009565b6114c2565b6103bb61085736600461360a565b6001600160a01b031660009081526008602052604090205490565b60006001600160a01b0383166108e25760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006109058261157b565b7f4a89d315e602b0589d706720a2c812227309c5069c55dff3ebf78f5e797aac6961094081611586565b61094982611590565b5050565b600c805461095a90613625565b80601f016020809104026020016040519081016040528092919081815260200182805461098690613625565b80156109d35780601f106109a8576101008083540402835291602001916109d3565b820191906000526020600020905b8154815290600101906020018083116109b657829003601f168201915b505050505081565b6060600a805480602002602001604051908101604052809291908181526020018280548015610a4957602002820191906000526020600020906000905b825461010083900a900460ff161515815260206001928301818104948501949093039092029101808411610a185790505b5050505050905090565b7fbc524e8ef0f829ac5a52282466b7de9273cee2f628ae71bbcd8e2d8cd73f4a59610a7d81611586565b60005b600a5481101561094957610a9381610fdb565b80610a9d81613675565b915050610a80565b606060028054610ab490613625565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae090613625565b8015610b2d5780601f10610b0257610100808354040283529160200191610b2d565b820191906000526020600020905b815481529060010190602001808311610b1057829003601f168201915b50505050509050919050565b6000610b466003846136a4565b15610b635760405162461bcd60e51b81526004016108d9906136b8565b60648310610b835760405162461bcd60e51b81526004016108d9906136e3565b6107e48411610ba45760405162461bcd60e51b81526004016108d99061370a565b82610bb0856064613730565b83610bba8761159c565b610bc49190613730565b610bce9190613747565b610bd89190613747565b949350505050565b610be86115d1565b610bf383838361162b565b610c0e838383604051806020016040528060008152506116c0565b505050565b610c0e33848484611219565b600081815260106020908152604080832054601190925282205480821115610c7c5760008481526003602052604081205490610c5b838561375a565b905080610c684284613730565b610c72919061375a565b9695505050505050565b5060009392505050565b6000610c936003836136a4565b15610cb05760405162461bcd60e51b81526004016108d9906136b8565b60648210610cd05760405162461bcd60e51b81526004016108d9906136e3565b61090582600a613851565b610ce68584846117a9565b610cf184848461181b565b610cfe8585858585611887565b5050505050565b600082815260046020526040902060010154610d2081611586565b610c0e83836118cc565b6001600160a01b0381163314610d9a5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016108d9565b61094982826118ee565b6009544290811115610dea5760405162461bcd60e51b815260206004820152600f60248201526e191958591b1a5b99481c185cdcd959608a1b60448201526064016108d9565b610df685858585611910565b610cfe858585604051806020016040528060008152506116c0565b60608151835114610e765760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016108d9565b600083516001600160401b03811115610e9157610e91612e34565b604051908082528060200260200182016040528015610eba578160200160208202803683370190505b50905060005b8451811015610f3257610f05858281518110610ede57610ede61385d565b6020026020010151858381518110610ef857610ef861385d565b6020026020010151610872565b828281518110610f1757610f1761385d565b6020908102919091010152610f2b81613675565b9050610ec0565b509392505050565b600061090582611ba2565b610c0e33848484610da4565b610f596115d1565b610f648383836117a9565b610c0e838383611be0565b600080610f7d6064846136a4565b9050610f8a6003826136a4565b15610fa75760405162461bcd60e51b81526004016108d9906136b8565b606481106109055760405162461bcd60e51b81526004016108d9906136e3565b610fcf6115d1565b610fd96000611d7c565b565b7fbc524e8ef0f829ac5a52282466b7de9273cee2f628ae71bbcd8e2d8cd73f4a5961100581611586565b6001600a838154811061101a5761101a61385d565b90600052602060002090602091828204019190066101000a81548160ff0219169083151502179055505050565b6060600083516001600160401b0381111561106457611064612e34565b60405190808252806020026020018201604052801561108d578160200160208202803683370190505b50905060005b84518110156110ef576110c0868683815181106110b2576110b261385d565b602002602001015186610b39565b8282815181106110d2576110d261385d565b6020908102919091010152806110e781613675565b915050611093565b50949350505050565b60008281526005602052604081206111109083611dce565b9392505050565b60009182526004602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f4a89d315e602b0589d706720a2c812227309c5069c55dff3ebf78f5e797aac6961116c81611586565b6006610c0e83826138b9565b600d805461095a90613625565b610949338383611dda565b6001600160a01b0382166000818152600e60209081526040808320858452825280832054938352600f82528083208584529091528120549091908082111561120e5760006111de8686610872565b905060006111ec838561375a565b9050806111f94284613730565b611203919061375a565b945050505050610905565b506000949350505050565b600954429081111561125f5760405162461bcd60e51b815260206004820152600f60248201526e191958591b1a5b99481c185cdcd959608a1b60448201526064016108d9565b60005b84518110156112bb576112a9868683815181106112815761128161385d565b602002602001015186848151811061129b5761129b61385d565b602002602001015186611910565b806112b381613675565b915050611262565b50610cfe85858560405180602001604052806000815250611eba565b600061090582612014565b600081815260056020526040812061090590612070565b60008281526004602052604090206001015461131481611586565b610c0e83836118ee565b6113266115d1565b61133183838361181b565b610c0e83838360405180602001604052806000815250611eba565b60606006805461135b90613625565b80601f016020809104026020016040519081016040528092919081815260200182805461138790613625565b8015610a495780601f106113a957610100808354040283529160200191610a49565b820191906000526020600020905b8154815290600101906020018083116113b757509395945050505050565b6113e085848461207a565b6113eb84848461162b565b610cfe8585858585612105565b6114006115d1565b6001600160a01b0381166114655760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108d9565b61146e81611d7c565b50565b60008063bc191380611484426064613730565b61148e9190613978565b61149a906107b2613747565b90506107e481116114bd5760405162461bcd60e51b81526004016108d99061370a565b919050565b6114ca6115d1565b6114d583838361207a565b610c0e83838361214a565b6114ea8282611117565b6109495760008281526004602090815260408083206001600160a01b03851684529091529020805460ff191660011790556115223390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000611110836001600160a01b038416612262565b6000610905826122b1565b61146e81336122bc565b600261094982826138b9565b60006127105b60006115ae8285613978565b11156115c6576115bf600a82613730565b90506115a2565b611110816064613730565b600b546001600160a01b03163314610fd95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108d9565b6000811161164b5760405162461bcd60e51b81526004016108d99061398c565b6116554282613730565b6001600160a01b0384166000908152600e6020908152604080832086845290915281208054909190611688908490613747565b9091555061169890504282613730565b600083815260106020526040812080549091906116b6908490613747565b9091555050505050565b6001600160a01b0384166116e65760405162461bcd60e51b81526004016108d9906139b9565b3360006116f285612315565b905060006116ff85612315565b905061171083600089858589612360565b6000868152602081815260408083206001600160a01b038b16845290915281208054879290611740908490613747565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46117a083600089898989612376565b50505050505050565b80518251146117ba576117ba6139fa565b60005b825181101561181557611803848483815181106117dc576117dc61385d565b60200260200101518484815181106117f6576117f661385d565b602002602001015161207a565b8061180d81613675565b9150506117bd565b50505050565b805182511461182c5761182c6139fa565b60005b8251811015611815576118758484838151811061184e5761184e61385d565b60200260200101518484815181106118685761186861385d565b602002602001015161162b565b8061187f81613675565b91505061182f565b6001600160a01b0385163314806118a357506118a385336107b3565b6118bf5760405162461bcd60e51b81526004016108d990613a10565b610cfe85858585856124d1565b6118d682826114e0565b6000828152600560205260409020610c0e9082611566565b6118f88282612673565b6000828152600560205260409020610c0e90826126da565b600082116119305760405162461bcd60e51b81526004016108d99061398c565b600061194361193e85611ba2565b61159c565b61194d90856136a4565b90506000811161195f5761195f6139fa565b600061196a85612014565b90506000811161197c5761197c6139fa565b6000835182111561199a5760018451611995919061375a565b6119a5565b6119a560018361375a565b9050600a8482815181106119bb576119bb61385d565b6020026020010151815481106119d3576119d361385d565b90600052602060002090602091828204019190069054906101000a900460ff1615611a335760405162461bcd60e51b815260206004820152601060248201526f1b5a59dc985d1a5bdb881cd9585b195960821b60448201526064016108d9565b60006007858381518110611a4957611a4961385d565b602002602001015181548110611a6157611a6161385d565b600091825260209091200154604051627eeac760e11b81526001600160a01b038a81166004830152602482018790529091169062fdd58e90604401602060405180830381865afa158015611ab9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611add9190613a5e565b90506007858381518110611af357611af361385d565b602002602001015181548110611b0b57611b0b61385d565b6000918252602090912001546001600160a01b031663f5298aca8983611b315789611b33565b865b6040516001600160e01b031960e085901b1681526001600160a01b039092166004830152602482015260448101899052606401600060405180830381600087803b158015611b8057600080fd5b505af1158015611b94573d6000803e3d6000fd5b505050505050505050505050565b600080612710611bb3606485613978565b611bbd91906136a4565b90506107e481116109055760405162461bcd60e51b81526004016108d99061370a565b6001600160a01b038316611c065760405162461bcd60e51b81526004016108d990613a77565b8051825114611c275760405162461bcd60e51b81526004016108d990613aba565b6000339050611c4a81856000868660405180602001604052806000815250612360565b60005b8351811015611d0f576000848281518110611c6a57611c6a61385d565b602002602001015190506000848381518110611c8857611c8861385d565b602090810291909101810151600084815280835260408082206001600160a01b038c168352909352919091205490915081811015611cd85760405162461bcd60e51b81526004016108d990613b02565b6000928352602083815260408085206001600160a01b038b1686529091529092209103905580611d0781613675565b915050611c4d565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611d60929190613b46565b60405180910390a4604080516020810190915260009052611815565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600061111083836126ef565b816001600160a01b0316836001600160a01b031603611e4d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016108d9565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b038416611ee05760405162461bcd60e51b81526004016108d9906139b9565b8151835114611f015760405162461bcd60e51b81526004016108d990613aba565b33611f1181600087878787612360565b60005b8451811015611fac57838181518110611f2f57611f2f61385d565b6020026020010151600080878481518110611f4c57611f4c61385d565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254611f949190613747565b90915550819050611fa481613675565b915050611f14565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611ffd929190613b46565b60405180910390a4610cfe81600087878787612719565b60008061202361193e84611ba2565b61202d9084613978565b9050600081116109055760405162461bcd60e51b815260206004820152600e60248201526d0d2dcecc2d8d2c840e0e4caccd2f60931b60448201526064016108d9565b6000610905825490565b6000811161209a5760405162461bcd60e51b81526004016108d99061398c565b6120a44282613730565b6001600160a01b0384166000908152600f60209081526040808320868452909152812080549091906120d7908490613747565b909155506120e790504282613730565b600083815260116020526040812080549091906116b6908490613747565b6001600160a01b038516331480612121575061212185336107b3565b61213d5760405162461bcd60e51b81526004016108d990613a10565b610cfe85858585856127d4565b6001600160a01b0383166121705760405162461bcd60e51b81526004016108d990613a77565b33600061217c84612315565b9050600061218984612315565b90506121a983876000858560405180602001604052806000815250612360565b6000858152602081815260408083206001600160a01b038a168452909152902054848110156121ea5760405162461bcd60e51b81526004016108d990613b02565b6000868152602081815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46040805160208101909152600090526117a0565b60008181526001830160205260408120546122a957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610905565b506000610905565b60006109058261290c565b6122c68282611117565b610949576122d381612917565b6122de836020612929565b6040516020016122ef929190613b74565b60408051601f198184030181529082905262461bcd60e51b82526108d991600401612f6b565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061234f5761234f61385d565b602090810291909101015292915050565b61236e868686868686612ac4565b505050505050565b6001600160a01b0384163b1561236e5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906123ba9089908990889088908890600401613be9565b6020604051808303816000875af19250505080156123f5575060408051601f3d908101601f191682019092526123f291810190613c2e565b60015b6124a157612401613c4b565b806308c379a00361243a5750612415613c67565b80612420575061243c565b8060405162461bcd60e51b81526004016108d99190612f6b565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60648201526084016108d9565b6001600160e01b0319811663f23a6e6160e01b146117a05760405162461bcd60e51b81526004016108d990613cf0565b81518351146124f25760405162461bcd60e51b81526004016108d990613aba565b6001600160a01b0384166125185760405162461bcd60e51b81526004016108d990613d38565b33612527818787878787612360565b60005b845181101561260d5760008582815181106125475761254761385d565b6020026020010151905060008583815181106125655761256561385d565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156125b55760405162461bcd60e51b81526004016108d990613d7d565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b168252812080548492906125f2908490613747565b925050819055505050508061260690613675565b905061252a565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161265d929190613b46565b60405180910390a461236e818787878787612719565b61267d8282611117565b156109495760008281526004602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611110836001600160a01b038416612c3d565b60008260000182815481106127065761270661385d565b9060005260206000200154905092915050565b6001600160a01b0384163b1561236e5760405163bc197c8160e01b81526001600160a01b0385169063bc197c819061275d9089908990889088908890600401613dc7565b6020604051808303816000875af1925050508015612798575060408051601f3d908101601f1916820190925261279591810190613c2e565b60015b6127a457612401613c4b565b6001600160e01b0319811663bc197c8160e01b146117a05760405162461bcd60e51b81526004016108d990613cf0565b6001600160a01b0384166127fa5760405162461bcd60e51b81526004016108d990613d38565b33600061280685612315565b9050600061281385612315565b9050612823838989858589612360565b6000868152602081815260408083206001600160a01b038c168452909152902054858110156128645760405162461bcd60e51b81526004016108d990613d7d565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a168252812080548892906128a1908490613747565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4612901848a8a8a8a8a612376565b505050505050505050565b600061090582612d30565b60606109056001600160a01b03831660145b60606000612938836002613730565b612943906002613747565b6001600160401b0381111561295a5761295a612e34565b6040519080825280601f01601f191660200182016040528015612984576020820181803683370190505b509050600360fc1b8160008151811061299f5761299f61385d565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106129ce576129ce61385d565b60200101906001600160f81b031916908160001a90535060006129f2846002613730565b6129fd906001613747565b90505b6001811115612a75576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612a3157612a3161385d565b1a60f81b828281518110612a4757612a4761385d565b60200101906001600160f81b031916908160001a90535060049490941c93612a6e81613e25565b9050612a00565b5083156111105760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016108d9565b6001600160a01b038516612b4b5760005b8351811015612b4957828181518110612af057612af061385d565b602002602001015160036000868481518110612b0e57612b0e61385d565b602002602001015181526020019081526020016000206000828254612b339190613747565b90915550612b42905081613675565b9050612ad5565b505b6001600160a01b03841661236e5760005b83518110156117a0576000848281518110612b7957612b7961385d565b602002602001015190506000848381518110612b9757612b9761385d565b6020026020010151905060006003600084815260200190815260200160002054905081811015612c1a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a206275726e20616d6f756e74206578636565647320746f74604482015267616c537570706c7960c01b60648201526084016108d9565b60009283526003602052604090922091039055612c3681613675565b9050612b5c565b60008181526001830160205260408120548015612d26576000612c6160018361375a565b8554909150600090612c759060019061375a565b9050818114612cda576000866000018281548110612c9557612c9561385d565b9060005260206000200154905080876000018481548110612cb857612cb861385d565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612ceb57612ceb613e3c565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610905565b6000915050610905565b60006001600160e01b03198216635a05180f60e01b148061090557506109058260006001600160e01b03198216637965db0b60e01b148061090557506109058260006001600160e01b03198216636cdb3d1360e11b1480612da157506001600160e01b031982166303a24d0760e21b145b8061090557506301ffc9a760e01b6001600160e01b0319831614610905565b80356001600160a01b03811681146114bd57600080fd5b60008060408385031215612dea57600080fd5b612df383612dc0565b946020939093013593505050565b6001600160e01b03198116811461146e57600080fd5b600060208284031215612e2957600080fd5b813561111081612e01565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b0381118282101715612e6f57612e6f612e34565b6040525050565b60006001600160401b03831115612e8f57612e8f612e34565b604051612ea6601f8501601f191660200182612e4a565b809150838152848484011115612ebb57600080fd5b83836020830137600060208583010152509392505050565b600060208284031215612ee557600080fd5b81356001600160401b03811115612efb57600080fd5b8201601f81018413612f0c57600080fd5b610bd884823560208401612e76565b60005b83811015612f36578181015183820152602001612f1e565b50506000910152565b60008151808452612f57816020860160208601612f1b565b601f01601f19169290920160200192915050565b6020815260006111106020830184612f3f565b6020808252825182820181905260009190848201906040850190845b81811015612fb8578351151583529284019291840191600101612f9a565b50909695505050505050565b600060208284031215612fd657600080fd5b5035919050565b600080600060608486031215612ff257600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561301e57600080fd5b61302784612dc0565b95602085013595506040909401359392505050565b60006001600160401b0382111561305557613055612e34565b5060051b60200190565b600082601f83011261307057600080fd5b8135602061307d8261303c565b60405161308a8282612e4a565b83815260059390931b85018201928281019150868411156130aa57600080fd5b8286015b848110156130c557803583529183019183016130ae565b509695505050505050565b6000806000606084860312156130e557600080fd5b83356001600160401b03808211156130fc57600080fd5b6131088783880161305f565b9450602086013591508082111561311e57600080fd5b61312a8783880161305f565b9350604086013591508082111561314057600080fd5b5061314d8682870161305f565b9150509250925092565b600082601f83011261316857600080fd5b61111083833560208501612e76565b600080600080600060a0868803121561318f57600080fd5b61319886612dc0565b94506131a660208701612dc0565b935060408601356001600160401b03808211156131c257600080fd5b6131ce89838a0161305f565b945060608801359150808211156131e457600080fd5b6131f089838a0161305f565b9350608088013591508082111561320657600080fd5b5061321388828901613157565b9150509295509295909350565b6000806040838503121561323357600080fd5b8235915061324360208401612dc0565b90509250929050565b6000806000806080858703121561326257600080fd5b61326b85612dc0565b9350602085013592506040850135915060608501356001600160401b0381111561329457600080fd5b6132a08782880161305f565b91505092959194509250565b600080604083850312156132bf57600080fd5b82356001600160401b03808211156132d657600080fd5b818501915085601f8301126132ea57600080fd5b813560206132f78261303c565b6040516133048282612e4a565b83815260059390931b850182019282810191508984111561332457600080fd5b948201945b838610156133495761333a86612dc0565b82529482019490820190613329565b9650508601359250508082111561335f57600080fd5b5061336c8582860161305f565b9150509250929050565b600081518084526020808501945080840160005b838110156133a65781518752958201959082019060010161338a565b509495945050505050565b6020815260006111106020830184613376565b6000806000606084860312156133d957600080fd5b833592506020840135915060408401356001600160401b038111156133fd57600080fd5b61314d8682870161305f565b60008060006060848603121561341e57600080fd5b61342784612dc0565b925060208401356001600160401b038082111561311e57600080fd5b60008060006060848603121561345857600080fd5b8335925060208401356001600160401b0381111561347557600080fd5b6134818682870161305f565b925050604084013590509250925092565b600080604083850312156134a557600080fd5b50508035926020909101359150565b600080604083850312156134c757600080fd5b6134d083612dc0565b9150602083013580151581146134e557600080fd5b809150509250929050565b6000806000806080858703121561350657600080fd5b61350f85612dc0565b935060208501356001600160401b038082111561352b57600080fd5b6135378883890161305f565b9450604087013591508082111561354d57600080fd5b6135598883890161305f565b9350606087013591508082111561356f57600080fd5b506132a08782880161305f565b6000806040838503121561358f57600080fd5b61359883612dc0565b915061324360208401612dc0565b600080600080600060a086880312156135be57600080fd5b6135c786612dc0565b94506135d560208701612dc0565b9350604086013592506060860135915060808601356001600160401b038111156135fe57600080fd5b61321388828901613157565b60006020828403121561361c57600080fd5b61111082612dc0565b600181811c9082168061363957607f821691505b60208210810361365957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000600182016136875761368761365f565b5060010190565b634e487b7160e01b600052601260045260246000fd5b6000826136b3576136b361368e565b500690565b6020808252601190820152701b9bdb8b5d195c9b985c9e481b195d995b607a1b604082015260600190565b6020808252600d908201526c1a5b9d985b1a59081b195d995b609a1b604082015260600190565b6020808252600c908201526b34b73b30b634b2103cb2b0b960a11b604082015260600190565b80820281158282048414176109055761090561365f565b808201808211156109055761090561365f565b818103818111156109055761090561365f565b600181815b808511156137a857816000190482111561378e5761378e61365f565b8085161561379b57918102915b93841c9390800290613772565b509250929050565b6000826137bf57506001610905565b816137cc57506000610905565b81600181146137e257600281146137ec57613808565b6001915050610905565b60ff8411156137fd576137fd61365f565b50506001821b610905565b5060208310610133831016604e8410600b841016171561382b575081810a610905565b613835838361376d565b80600019048211156138495761384961365f565b029392505050565b600061111083836137b0565b634e487b7160e01b600052603260045260246000fd5b601f821115610c0e57600081815260208120601f850160051c8101602086101561389a5750805b601f850160051c820191505b8181101561236e578281556001016138a6565b81516001600160401b038111156138d2576138d2612e34565b6138e6816138e08454613625565b84613873565b602080601f83116001811461391b57600084156139035750858301515b600019600386901b1c1916600185901b17855561236e565b600085815260208120601f198616915b8281101561394a5788860151825594840194600190910190840161392b565b50858210156139685787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000826139875761398761368e565b500490565b6020808252601390820152721b9bdb8b5c1bdcda5d1a5d9948185b5bdd5b9d606a1b604082015260600190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b634e487b7160e01b600052600160045260246000fd5b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b600060208284031215613a7057600080fd5b5051919050565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b604081526000613b596040830185613376565b8281036020840152613b6b8185613376565b95945050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613bac816017850160208801612f1b565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613bdd816028840160208801612f1b565b01602801949350505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090613c2390830184612f3f565b979650505050505050565b600060208284031215613c4057600080fd5b815161111081612e01565b600060033d1115613c645760046000803e5060005160e01c5b90565b600060443d1015613c755790565b6040516003193d81016004833e81513d6001600160401b038160248401118184111715613ca457505050505090565b8285019150815181811115613cbc5750505050505090565b843d8701016020828501011115613cd65750505050505090565b613ce560208286010187612e4a565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6001600160a01b0386811682528516602082015260a060408201819052600090613df390830186613376565b8281036060840152613e058186613376565b90508281036080840152613e198185612f3f565b98975050505050505050565b600081613e3457613e3461365f565b506000190190565b634e487b7160e01b600052603160045260246000fdfea26469706673582212209d698907f92ad0f4c308bf6cfb90b0cf25426d52498c7896afa74e8ea1bb364664736f6c6343000811003321b4f2a846971d5096997e4122542f612858bcbb112ef24ef9b354083523151918279111969b053eb32d637cdc8d9e7e53d648d3969f60ee55ddd0f63a7c3280000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000007861f80000000000000000000000000000000000000000000000000000000000000006168747470733a2f2f697066732e78706f7765726d696e652e636f6d2f697066732f516d5966484b6b6b6d3236793858643741757238757661586d6361383273334e7276653734525938427268636b532f333230783432372f7b69647d2e6a736f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f000000000000000000000000881a061a35e8a0031171bf1b41f9dc76a614c34c000000000000000000000000d4385fbe9a8334162742254947858381edcefdce000000000000000000000000bdd1a503d211b8bea904dce9d27cd03ab9d1626f00000000000000000000000037063eb3a923f31dc7093c9537941c3a6674ff1f0000000000000000000000008fde6d6bab0d6557e6ff923091a07670166313780000000000000000000000003467b334b8fb00b5a26314e207cb713a5d378061000000000000000000000000f32152f21c7a0a998a82431ba250344fcb00fc34000000000000000000000000807ce552003c2b2358c6be2656cc5234ec538d460000000000000000000000000fc32b39013fc63e5db4c84c389da8d7c01f4c560000000000000000000000004d27f60e5c23c9b56d1be135548503db5f89f0e5000000000000000000000000098e7bec9aea1938ee769b111ab8bb56d22cff0200000000000000000000000047f24e97a38a75e9593033f8b39a0b154dc48be800000000000000000000000072290cbd47988be1546362c7d57eacdcdd01f05200000000000000000000000072290cbd47988be1546362c7d57eacdcdd01f05200000000000000000000000072290cbd47988be1546362c7d57eacdcdd01f052
0xa26469706673582212209d698907f92ad0f4c308bf6cfb90b0cf25426d52498c7896afa74e8ea1bb364664736f6c6343000811003321b4f2a846971d5096997e4122542f612858bcbb112ef24ef9b354083523151918279111969b053eb32d637cdc8d9e7e53d648d3969f60ee55ddd0f63a7c3280000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000007861f80000000000000000000000000000000000000000000000000000000000000006168747470733a2f2f697066732e78706f7765726d696e652e636f6d2f697066732f516d5966484b6b6b6d3236793858643741757238757661586d6361383273334e7276653734525938427268636b532f333230783432372f7b69647d2e6a736f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f000000000000000000000000881a061a35e8a0031171bf1b41f9dc76a614c34c000000000000000000000000d4385fbe9a8334162742254947858381edcefdce000000000000000000000000bdd1a503d211b8bea904dce9d27cd03ab9d1626f00000000000000000000000037063eb3a923f31dc7093c9537941c3a6674ff1f0000000000000000000000008fde6d6bab0d6557e6ff923091a07670166313780000000000000000000000003467b334b8fb00b5a26314e207cb713a5d378061000000000000000000000000f32152f21c7a0a998a82431ba250344fcb00fc34000000000000000000000000807ce552003c2b2358c6be2656cc5234ec538d460000000000000000000000000fc32b39013fc63e5db4c84c389da8d7c01f4c560000000000000000000000004d27f60e5c23c9b56d1be135548503db5f89f0e5000000000000000000000000098e7bec9aea1938ee769b111ab8bb56d22cff0200000000000000000000000047f24e97a38a75e9593033f8b39a0b154dc48be800000000000000000000000072290cbd47988be1546362c7d57eacdcdd01f05200000000000000000000000072290cbd47988be1546362c7d57eacdcdd01f05200000000000000000000000072290cbd47988be1546362c7d57eacdcdd01f052