[ { "inputs": [ { "internalType": "address", "name": "coreMathAddress", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "DelegateCallFailed", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint64", "name": "userId", "type": "uint64" }, { "indexed": false, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Burn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "BurnTotalSupply", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint64", "name": "userId", "type": "uint64" }, { "indexed": false, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Claim", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint64", "name": "userId", "type": "uint64" }, { "indexed": false, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "ClaimReferral", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint64", "name": "userId", "type": "uint64" }, { "indexed": false, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "address", "name": "controller", "type": "address" } ], "name": "GrantAccess", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint64", "name": "userId", "type": "uint64" }, { "indexed": false, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "level", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "LevelUpReferral", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint64", "name": "userId", "type": "uint64" }, { "indexed": false, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "level", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "LevelUpSize", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint64", "name": "userId", "type": "uint64" }, { "indexed": false, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "level", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "price", "type": "uint256" } ], "name": "LevelUpSpeed", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint64", "name": "claimerId", "type": "uint64" }, { "indexed": true, "internalType": "uint64", "name": "id", "type": "uint64" }, { "indexed": true, "internalType": "uint64", "name": "child", "type": "uint64" }, { "indexed": false, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "ReferReward", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint64", "name": "userId", "type": "uint64" }, { "indexed": false, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Reinvest", "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": "uint64", "name": "userId", "type": "uint64" }, { "indexed": true, "internalType": "uint64", "name": "parent", "type": "uint64" } ], "name": "SetParent", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "BURNER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "CLAIMER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "GRANTER_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": "MULTIPLIER_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PROXY_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "userId", "type": "uint64" } ], "name": "burnStorage", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burnTotalSupply", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "userId", "type": "uint64" } ], "name": "buyReferralLevel", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "userId", "type": "uint64" } ], "name": "buySizeLevel", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "userId", "type": "uint64" } ], "name": "buySpeedLevel", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "userId", "type": "uint64" }, { "internalType": "uint64", "name": "parent", "type": "uint64" } ], "name": "changeParent", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "userId", "type": "uint64" } ], "name": "claimFor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "userId", "type": "uint64" } ], "name": "claimForRef", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "userId", "type": "uint64" } ], "name": "claimReferral", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "userId", "type": "uint64" } ], "name": "claimReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "method", "type": "string" }, { "internalType": "bytes", "name": "callData", "type": "bytes" } ], "name": "delegate", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" }, { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getAddressId", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "userId", "type": "uint64" } ], "name": "getIdAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "userId", "type": "uint64" } ], "name": "getStorage", "outputs": [ { "components": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint64", "name": "parent", "type": "uint64" }, { "internalType": "bool", "name": "disabled", "type": "bool" }, { "internalType": "uint256", "name": "claimTimestamp", "type": "uint256" }, { "internalType": "uint256", "name": "claimed", "type": "uint256" }, { "internalType": "uint256", "name": "refStorage", "type": "uint256" }, { "internalType": "uint8", "name": "sizeLevel", "type": "uint8" }, { "internalType": "uint8", "name": "speedLevel", "type": "uint8" }, { "internalType": "uint8", "name": "referralLevel", "type": "uint8" }, { "internalType": "uint24", "name": "speedMultiplicator", "type": "uint24" }, { "internalType": "uint24", "name": "sizeMultiplicator", "type": "uint24" }, { "internalType": "uint24", "name": "referralMultiplicator", "type": "uint24" }, { "internalType": "uint256", "name": "speedAdder", "type": "uint256" }, { "internalType": "uint256", "name": "sizeAdder", "type": "uint256" }, { "internalType": "uint256", "name": "referralAdder", "type": "uint256" }, { "internalType": "uint24", "name": "speedPrice", "type": "uint24" }, { "internalType": "uint24", "name": "sizePrice", "type": "uint24" }, { "internalType": "uint24", "name": "referralPrice", "type": "uint24" }, { "internalType": "uint256", "name": "activity", "type": "uint256" }, { "internalType": "uint24", "name": "miningMultiplicator", "type": "uint24" } ], "internalType": "struct Storage", "name": "user", "type": "tuple" }, { "components": [ { "internalType": "uint256", "name": "speed", "type": "uint256" }, { "internalType": "uint256", "name": "size", "type": "uint256" }, { "internalType": "uint24", "name": "difficulty", "type": "uint24" }, { "internalType": "uint24", "name": "halvingRatio", "type": "uint24" }, { "internalType": "uint24", "name": "burnRate", "type": "uint24" } ], "internalType": "struct BaseParams", "name": "base", "type": "tuple" }, { "internalType": "uint256[3]", "name": "prices", "type": "uint256[3]" }, { "internalType": "uint256", "name": "mined", "type": "uint256" }, { "internalType": "uint256", "name": "sizeLimit", "type": "uint256" }, { "internalType": "uint256", "name": "rewardPerSecond", "type": "uint256" }, { "internalType": "uint256", "name": "refLimit", "type": "uint256" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "coins", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "userId", "type": "uint64" }, { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint64", "name": "parent", "type": "uint64" } ], "name": "grantAccess", "outputs": [], "stateMutability": "nonpayable", "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": "uint64", "name": "userId", "type": "uint64" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mintForOne", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "userId", "type": "uint64" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mintWithClaim", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "userId", "type": "uint64" } ], "name": "promoteReferralLevel", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "userId", "type": "uint64" } ], "name": "promoteSizeLevel", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "userId", "type": "uint64" } ], "name": "promoteSpeedLevel", "outputs": [], "stateMutability": "nonpayable", "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": "uint64", "name": "userId", "type": "uint64" }, { "internalType": "uint24[3]", "name": "mult", "type": "uint24[3]" }, { "internalType": "uint256[3]", "name": "add", "type": "uint256[3]" }, { "internalType": "uint24[3]", "name": "price", "type": "uint24[3]" } ], "name": "setMultipliers", "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": [], "name": "totalBurned", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalClaimed", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint64", "name": "userId", "type": "uint64" }, { "internalType": "uint8", "name": "", "type": "uint8" }, { "internalType": "uint24", "name": "multiplier", "type": "uint24" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "updateParameter", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405262000013610e1060186200029d565b620000209060076200029d565b6009553480156200003057600080fd5b506040516200386a3803806200386a8339810160408190526200005391620002b7565b6200006e6000805160206200384a83398151915230620001d8565b50620000906000805160206200384a83398151915233620001d8565b620001d8565b506008805462010000600160b01b031916620100006001600160a01b03841602179055620000c160006200008a3390565b50620000ee7f2dee5dd865e09c7ce6788d674a03682994f0b44339403ca07ac129a9de4bed6a33620001d8565b506200011b7f11a8cb5a02bd6c42679835e867ef2118ba78f088f8300511420c6603c21d9c7833620001d8565b50620001487f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620001d8565b50620001757f3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a84833620001d8565b50620001a27fa63ee2570545e3bcf99d9ebc213e9215643a9c883f9f0de54b3c9f81bfc088fb33620001d8565b50620001b160026012620002e9565b620001be90600a62000402565b620001ce9063a509e4386200029d565b6005555062000413565b6000828152602081815260408083206001600160a01b038516845290915281205460ff166200027d576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620002343390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a450600162000281565b5060005b92915050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000281576200028162000287565b600060208284031215620002ca57600080fd5b81516001600160a01b0381168114620002e257600080fd5b9392505050565b60ff828116828216039081111562000281576200028162000287565b600181815b80851115620003465781600019048211156200032a576200032a62000287565b808516156200033857918102915b93841c93908002906200030a565b509250929050565b6000826200035f5750600162000281565b816200036e5750600062000281565b81600181146200038757600281146200039257620003b2565b600191505062000281565b60ff841115620003a657620003a662000287565b50506001821b62000281565b5060208310610133831016604e8410600b8410161715620003d7575081810a62000281565b620003e3838362000305565b8060001904821115620003fa57620003fa62000287565b029392505050565b6000620002e260ff8416836200034e565b61342780620004236000396000f3fe608060405234801561001057600080fd5b50600436106101f85760003560e01c80629abff1146101fd57806301ffc9a71461021257806306fdde031461023a57806312dd9d0b1461026a57806316e242ca1461027d57806318160ddd1461029057806322ac4261146102a2578063248a9ca3146102b5578063282c51f3146102c85780632f2ff15d146102dd578063313ce567146102f057806336568abe146102ff5780633f7db065146103125780634ad518dc1461032557806362b12319146103385780636759647a1461034b57806370a082311461035e57806376d221e21461037157806380105873146103bb57806382a23359146103ce57806386a33995146103e15780638785535e146103f4578063883a015b146104075780638a7478391461042857806391d148541461043b578063948f4a2f1461044e57806395d89b41146104795780639a9fb27f146104995780639dc29fac146104c15780639fb29206146104d4578063a217fddf146104e7578063abcb884f146104ef578063ac80cd0014610502578063c002015b14610515578063d12125481461052a578063d2177bc91461053d578063d539139314610550578063d547741f14610565578063d54ad2a114610578578063d89135cd14610580578063e48bf15b14610588578063f94c0a111461059d578063fc5f18d3146105b2575b600080fd5b61021061020b3660046127a9565b6105c7565b005b6102256102203660046127c4565b6106c4565b60405190151581526020015b60405180910390f35b60408051808201909152600b81526a141a5e195b0814da185c9960aa1b60208201525b604051610231919061283e565b6102106102783660046127a9565b6106fb565b61021061028b366004612851565b61071e565b6005545b604051908152602001610231565b6102106102b0366004612881565b61078b565b6102946102c3366004612851565b610ad6565b6102946000805160206132d283398151915281565b6102106102eb3660046128c4565b610aeb565b60405160128152602001610231565b61021061030d3660046128c4565b610b0d565b610210610320366004612901565b610b45565b6102106103333660046127a9565b610cce565b6102106103463660046127a9565b610cf1565b6102106103593660046127a9565b610d14565b61029461036c366004612959565b610d79565b6103a361037f3660046127a9565b6001600160401b03166000908152600260205260409020546001600160a01b031690565b6040516001600160a01b039091168152602001610231565b6102106103c9366004612981565b610ddb565b6102106103dc3660046127a9565b610e4b565b6102106103ef3660046127a9565b610f95565b6102106104023660046127a9565b610fb8565b61041a610415366004612a39565b6110ca565b604051610231929190612af5565b610210610436366004612b29565b6111a9565b6102256104493660046128c4565b611204565b61046161045c366004612959565b61122d565b6040516001600160401b039091168152602001610231565b60408051808201909152600481526350584c7360e01b602082015261025d565b6104ac6104a73660046127a9565b611251565b60405161023199989796959493929190612ba1565b6102106104cf366004612d48565b611853565b6102106104e2366004612981565b611954565b610294600081565b6102106104fd3660046127a9565b611976565b6102106105103660046127a9565b611a93565b6102946000805160206133d283398151915281565b6102106105383660046127a9565b611bb0565b61021061054b366004612d64565b611c39565b61029460008051602061335283398151915281565b6102106105733660046128c4565b611ca0565b600654610294565b600754610294565b61029460008051602061333283398151915281565b6102946000805160206132f283398151915281565b61029460008051602061331283398151915281565b6000805160206133128339815191526105df81611cbc565b6001600160401b03821660009081526002602052604090208054600160e01b900460ff16156106295760405162461bcd60e51b815260040161062090612d8e565b60405180910390fd5b6003810154600081900361063d5750505050565b6106478482611cc9565b6000600383015581546040516001600160401b038616916000805160206133b283398151915291610683916001600160a01b0316908590612db8565b60405180910390a281546040518281526001600160a01b03909116903090600080516020613372833981519152906020015b60405180910390a350505b5050565b60006001600160e01b03198216637965db0b60e01b14806106f557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6000805160206132f283398151915261071381611cbc565b6106c0826000611d98565b6000805160206132d283398151915261073681611cbc565b81600560008282546107489190612de7565b909155507f63d41e3f367766ac792e534acc45458cb80c99ef5c350be57d7cd1c36ea0ea049050338360405161077f929190612db8565b60405180910390a15050565b6000805160206132f28339815191526107a381611cbc565b6001600160a01b038316600081815260036020908152604080832080546001600160401b0319166001600160401b038a1690811790915583526002909152812080546001600160a01b0319169092178255600191909101549003610a09576001600160401b03841660009081526002602052604090204260019091015561082c6004600a612ede565b6001600160401b03851660009081526002602052604090206004908101805462ffffff9390931663010000000265ffffff000000199093169290921790915561087690600a612ede565b6001600160401b03851660009081526002602052604090206004908101805462ffffff93909316600160301b0262ffffff60301b19909316929092179091556108c090600a612ede565b6001600160401b03851660009081526002602052604090206004908101805462ffffff93909316600160481b0262ffffff60481b199093169290921790915561090a90600a612ede565b6001600160401b0385166000908152600260205260409020600801805462ffffff191662ffffff929092169190911790556109476004600a612ede565b6001600160401b0385166000908152600260205260409020600801805462ffffff9290921663010000000265ffffff0000001990921691909117905561098f6004600a612ede565b6001600160401b0385166000908152600260205260409020600801805462ffffff92909216600160301b0262ffffff60301b199092169190911790556109d76004600a612ede565b6001600160401b0385166000908152600260205260409020600a01805462ffffff191662ffffff929092169190911790555b6001600160401b03821615801590610a335750836001600160401b0316826001600160401b031614155b15610a83576001600160401b038481166000818152600260205260408082208054600160a01b600160e01b031916600160a01b958816958602179055516000805160206133928339815191529190a35b604080516001600160a01b03851681523360208201526001600160401b038616917ff83e4365a0f5938d1fa5326eff2df470bb0bbcf066a2d38871bcf330e1b6158391015b60405180910390a250505050565b60009081526020819052604090206001015490565b610af482610ad6565b610afd81611cbc565b610b078383611e54565b50505050565b6001600160a01b0381163314610b365760405163334bd91960e11b815260040160405180910390fd5b610b408282611ee6565b505050565b6000805160206133d2833981519152610b5d81611cbc565b610b68856000611f51565b6001600160401b038516600090815260026020908152604090912090610b9090860186612f00565b60048201805462ffffff9290921663010000000265ffffff00000019909216919091179055610bc56040860160208701612f00565b60048201805462ffffff92909216600160301b0262ffffff60301b19909216919091179055610bfa6060860160408701612f00565b60048201805462ffffff92909216600160481b0262ffffff60481b1990921691909117905583356005820155602080850135600683015560408501356007830155610c4790840184612f00565b60088201805462ffffff191662ffffff92909216919091179055610c716040840160208501612f00565b60088201805462ffffff9290921663010000000265ffffff00000019909216919091179055610ca66060840160408501612f00565b8160080160066101000a81548162ffffff021916908362ffffff160217905550505050505050565b600080516020613312833981519152610ce681611cbc565b6106c0826000611f51565b6000805160206132f2833981519152610d0981611cbc565b6106c0826000612282565b6001600160401b03811660009081526002602052604090205481906001600160a01b03163314610d565760405162461bcd60e51b815260040161062090612f1d565b60085460ff1615610ce65760405162461bcd60e51b815260040161062090612f54565b600080610d858361122d565b6001600160401b0381166000908152600260205260409020549091506001600160a01b03848116911614610dba576000610dd4565b6001600160401b0381166000908152600460205260409020545b9392505050565b600080516020613352833981519152610df381611cbc565b610dfd8383611cc9565b6001600160401b0383166000908152600260209081526040918290205491518481526001600160a01b03909216913091600080516020613372833981519152910160405180910390a3505050565b6001600160401b03811660009081526002602052604090205481906001600160a01b03163314610e8d5760405162461bcd60e51b815260040161062090612f1d565b6001600160401b0382166000908152600260205260408082206008549151632a2e141b60e11b81529092916201000090046001600160a01b03169063545c283690610edc908590600401612f7d565b602060405180830381865afa158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d9190613095565b82549091508190610f36906001600160a01b0316610d79565b1015610f545760405162461bcd60e51b8152600401610620906130ae565b610f5e8482612324565b610f688482612547565b81546040518281526000916001600160a01b031690600080516020613372833981519152906020016106b5565b6000805160206132f2833981519152610fad81611cbc565b6106c0826000612547565b6001600160401b03811660009081526002602052604090205481906001600160a01b03163314610ffa5760405162461bcd60e51b815260040161062090612f1d565b60085460ff161561101d5760405162461bcd60e51b815260040161062090612f54565b6001600160401b03821660009081526002602052604090208054600160e01b900460ff161561105e5760405162461bcd60e51b815260040161062090612d8e565b600381015460008190036110725750505050565b61107c8482611cc9565b6000600383015581546040516001600160401b038616917fe122300244027000ec6f5dc23b386c1d993e8e63d8b9d20e0d66d1b4f0e6a4a691610683916001600160a01b0316908590612db8565b600060606000805160206133328339815191526110e681611cbc565b600080336001600160a01b03168888886040516024016111079291906130d8565b60408051601f19818403018152908290529161112291613107565b60408051918290039091206020830180516001600160e01b03166001600160e01b0319909216919091179052516111599190613107565b600060405180830381855af49150503d8060008114611194576040519150601f19603f3d011682016040523d82523d6000602084013e611199565b606091505b5090999098509650505050505050565b6000805160206133d28339815191526111c181611cbc565b6111cc856000611f51565b50506001600160401b03929092166000908152600260205260409020600a01805462ffffff191662ffffff9093169290921790915550565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6001600160a01b03166000908152600360205260409020546001600160401b031690565b6040805161028081018252600080825260208083018290528284018290526060808401839052608080850184905260a080860185905260c0860185905260e08601859052610100860185905261012086018590526101408601859052610160860185905261018086018590526101a086018590526101c086018590526101e086018590526102008601859052610220860185905261024086018590526102608601859052865190810187528481529283018490529482018390528101829052928301529061131d61276f565b6001600160401b03808516600090815260026020818152604080842081516102808101835281546001600160a01b038082168352600160a01b82049098169482019490945260ff600160e01b909404841615158184015260018201546060820152938101546080850152600381015460a08086019190915260048083015480861660c0880152610100808204871660e0890152620100008083049097169088015262ffffff630100000080830482166101208a0152600160301b80840483166101408b0152600160481b90930482166101608a015260058601546101808a015260068601546101a08a015260078601546101c08a01526008808701548084166101e08c015291820483166102008b015292900481166102208901526009850154610240890152600a85015416610260880152548451635e615a6b60e01b81529451969b50969788978897889788978897969190930490931693635e615a6b9383820193909291908290030181865afa15801561149d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c19190613123565b60085460405163069dbd5160e51b8152919a506201000090046001600160a01b03169063d3b7aa20906114f8908490600401612f7d565b602060405180830381865afa158015611515573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115399190613095565b88526008546040516362a2512760e01b8152620100009091046001600160a01b0316906362a2512790611570908490600401612f7d565b602060405180830381865afa15801561158d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b19190613095565b8860016020020152600854604051632a2e141b60e11b8152620100009091046001600160a01b03169063545c2836906115ee908490600401612f7d565b602060405180830381865afa15801561160b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162f9190613095565b886002602002015260085460405163383b75bd60e01b8152620100009091046001600160a01b03169063383b75bd9061166c908490600401612f7d565b602060405180830381865afa158015611689573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ad9190613095565b600854604051637ae4a94760e01b81529198506201000090046001600160a01b031690637ae4a947906116e4908490600401612f7d565b602060405180830381865afa158015611701573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117259190613095565b600854604051632ef1fdcb60e01b81529197506201000090046001600160a01b031690632ef1fdcb9061175c908490600401612f7d565b602060405180830381865afa158015611779573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061179d9190613095565b6008546040516328899bfd60e21b81529196506201000090046001600160a01b03169063a2266ff4906117d4908490600401612f7d565b602060405180830381865afa1580156117f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118159190613095565b6001600160401b03909b166000908152600460205260409020548a519a9c999b989a979996989597959690956001600160a01b031631945092505050565b6000805160206132d283398151915261186b81611cbc565b60006118768461122d565b6001600160401b0381166000908152600460205260409020549091508311156118b15760405162461bcd60e51b8152600401610620906130ae565b6001600160401b0381166000908152600260205260409020546001600160a01b0385811691161461191e5760405162461bcd60e51b8152602060048201526017602482015276416464726573732068617665206e6f2073746f7261676560481b6044820152606401610620565b6119288184612324565b6040518381526000906001600160a01b03861690600080516020613372833981519152906020016106b5565b60008051602061335283398151915261196c81611cbc565b610b408383611f51565b6001600160401b03811660009081526002602052604090205481906001600160a01b031633146119b85760405162461bcd60e51b815260040161062090612f1d565b6001600160401b038216600090815260026020526040808220600854915163069dbd5160e51b81529092916201000090046001600160a01b03169063d3b7aa2090611a07908590600401612f7d565b602060405180830381865afa158015611a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a489190613095565b82549091508190611a61906001600160a01b0316610d79565b1015611a7f5760405162461bcd60e51b8152600401610620906130ae565b611a898482612324565b610f688482611d98565b6001600160401b03811660009081526002602052604090205481906001600160a01b03163314611ad55760405162461bcd60e51b815260040161062090612f1d565b6001600160401b03821660009081526002602052604080822060085491516362a2512760e01b81529092916201000090046001600160a01b0316906362a2512790611b24908590600401612f7d565b602060405180830381865afa158015611b41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b659190613095565b82549091508190611b7e906001600160a01b0316610d79565b1015611b9c5760405162461bcd60e51b8152600401610620906130ae565b611ba68482612324565b610f688482612282565b6000805160206132d2833981519152611bc881611cbc565b6001600160401b0382166000908152600260209081526040808320600490925290912054611bf68482612324565b60048201805462ffffff1916905560006003830181905582546040518381526001600160a01b0390911690600080516020613372833981519152906020016106b5565b6000805160206132f2833981519152611c5181611cbc565b6001600160401b038381166000818152600260205260408082208054600160a01b600160e01b031916600160a01b958816958602179055516000805160206133928339815191529190a3505050565b611ca982610ad6565b611cb281611cbc565b610b078383611ee6565b611cc681336125ed565b50565b60055481600654611cda91906131aa565b1115611d205760405162461bcd60e51b815260206004820152601560248201527414dd5c1c1b1e481b1a5b5a5d08195e18d959591959605a1b6044820152606401610620565b8060066000828254611d3291906131aa565b90915550506001600160401b03821660009081526002602081905260408220018054839290611d629084906131aa565b90915550506001600160401b03821660009081526004602052604081208054839290611d8f9084906131aa565b90915550505050565b6001600160401b038216600090815260026020526040812090611dbc908490611f51565b600481018054610100900460ff16906001611dd6836131bd565b825460ff91821661010093840a9081029083021990911617909255835460048501546040516001600160401b03891695507fb1ca344c2c0fa5bf006f215bfaa72e4cd8ce640d2aa409fb3dc0f4cb9e8f1e7594611e47946001600160a01b03909416939092049091169087906131dc565b60405180910390a2505050565b6000611e608383611204565b611ede576000838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055611e963390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45060016106f5565b5060006106f5565b6000611ef28383611204565b15611ede576000838152602081815260408083206001600160a01b0386168085529252808320805460ff1916905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45060016106f5565b6001600160401b038216600090815260026020526040808220600854915163383b75bd60e01b81529092918491620100009091046001600160a01b03169063383b75bd90611fa3908690600401612f7d565b602060405180830381865afa158015611fc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe49190613095565b611fee91906131aa565b905080600003611ffe5750505050565b8154600160e01b900460ff16156120275760405162461bcd60e51b815260040161062090612d8e565b6120318482611cc9565b61203a82612618565b42600183015581546040516001600160401b038616916000805160206133b283398151915291612075916001600160a01b0316908590612db8565b60405180910390a281546040518281526001600160a01b039091169030906000805160206133728339815191529060200160405180910390a36000808590506000600860029054906101000a90046001600160a01b03166001600160a01b031663dedbc2b76040518163ffffffff1660e01b81526004016040805180830381865afa158015612108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212c9190613200565b90505b60028310801561214f57508454600160a01b90046001600160401b031615155b80156121635750600854610100900460ff16155b15612279579354600160a01b90046001600160401b031660008181526002602052604081209591906121976004600a612ede565b8386600281106121a9576121a9612eea565b60200201516121b8908861327f565b6121c29190613296565b9050600554816006546121d591906131aa565b111580156121ec575086546001600160a01b031615155b156122625760006121fd8383612674565b905080156122605787546040516001600160401b038088169286821692918e16917fb4522f4524ea41e5e6f0b6e2dced12783077ec14bd03e6dc9cd1c4955262086391612257916001600160a01b03909116908790612db8565b60405180910390a45b505b8461226c816132b8565b955050819350505061212f565b50505050505050565b6001600160401b0382166000908152600260205260408120906122a6908490611f51565b60048101805460ff169060006122bb836131bd565b82546101009290920a60ff818102199093169183160217909155825460048401546040516001600160401b03881694507f15e297468c4771416c10409a25828418242aa3290755a9b3c05521bc766008f393611e47936001600160a01b031692169087906131dc565b6001600160401b03821660009081526004602052604090205481111561237e5760405162461bcd60e51b815260206004820152600f60248201526e43616e2774206275726e206d6f726560881b6044820152606401610620565b600061238c6004600a612ede565b600860029054906101000a90046001600160a01b03166001600160a01b0316635e615a6b6040518163ffffffff1660e01b815260040160a060405180830381865afa1580156123df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124039190613123565b608001516124169062ffffff168461327f565b6124209190613296565b9050600061242e8284612de7565b905081600560008282546124429190612de7565b90915550506001600160401b0384166000908152600460205260408120805485929061246f908490612de7565b92505081905550816007600082825461248891906131aa565b90915550506001600160401b038416600081815260026020526040908190205490517f10f17b43d36d81538d7e0a4acbc71470ce489f4922f565bb98dfd39a96ed27ff916124e3916001600160a01b03909116908690612db8565b60405180910390a28015610b07576001600160401b038416600081815260026020526040908190205490517fe48a3b8bde68c5fd92148f3dd4720c25586511113149f9b1d677bde3851c142691610ac8916001600160a01b03909116908590612db8565b6001600160401b038216600090815260026020819052604090912060048101805491926201000090920460ff169161257e836131bd565b82546101009290920a60ff818102199093169183160217909155825460048401546040516001600160401b03881694507f27a26a88cc01a8747b8d996b187b2f7db4c9191e16a527fc90132e9d815396b393611e47936001600160a01b031692620100009004169087906131dc565b6125f78282611204565b6106c057808260405163e2517d3f60e01b8152600401610620929190612db8565b600081600101544261262a9190612de7565b9050612639610e10601861327f565b81101561265f578082600901600082825461265491906131aa565b909155506106c09050565b6009548110156106c057600060098301555050565b6001600160401b03821660009081526002602052604080822060085491516328899bfd60e21b815290918391620100009091046001600160a01b03169063a2266ff4906126c5908590600401612f7d565b602060405180830381865afa1580156126e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127069190613095565b90508160030154811161271e576000925050506106f5565b60008260030154826127309190612de7565b905060008582106127415785612743565b815b90508015612765578084600301600082825461275f91906131aa565b90915550505b9695505050505050565b60405180606001604052806003906020820280368337509192915050565b80356001600160401b03811681146127a457600080fd5b919050565b6000602082840312156127bb57600080fd5b610dd48261278d565b6000602082840312156127d657600080fd5b81356001600160e01b031981168114610dd457600080fd5b60005b838110156128095781810151838201526020016127f1565b50506000910152565b6000815180845261282a8160208601602086016127ee565b601f01601f19169290920160200192915050565b602081526000610dd46020830184612812565b60006020828403121561286357600080fd5b5035919050565b80356001600160a01b03811681146127a457600080fd5b60008060006060848603121561289657600080fd5b61289f8461278d565b92506128ad6020850161286a565b91506128bb6040850161278d565b90509250925092565b600080604083850312156128d757600080fd5b823591506128e76020840161286a565b90509250929050565b80606081018310156106f557600080fd5b600080600080610140858703121561291857600080fd5b6129218561278d565b935061293086602087016128f0565b925061293f86608087016128f0565b915061294e8660e087016128f0565b905092959194509250565b60006020828403121561296b57600080fd5b610dd48261286a565b6001600160a01b03169052565b6000806040838503121561299457600080fd5b61299d8361278d565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156129e9576129e96129ab565b604052919050565b60008083601f840112612a0357600080fd5b5081356001600160401b03811115612a1a57600080fd5b602083019150836020828501011115612a3257600080fd5b9250929050565b600080600060408486031215612a4e57600080fd5b83356001600160401b0380821115612a6557600080fd5b818601915086601f830112612a7957600080fd5b8135602082821115612a8d57612a8d6129ab565b612a9f601f8301601f191682016129c1565b8281528982848701011115612ab357600080fd5b82828601838301376000928101820192909252909550860135915080821115612adb57600080fd5b50612ae8868287016129f1565b9497909650939450505050565b8215158152604060208201526000612b106040830184612812565b949350505050565b62ffffff81168114611cc657600080fd5b60008060008060808587031215612b3f57600080fd5b612b488561278d565b9350602085013560ff81168114612b5e57600080fd5b92506040850135612b6e81612b18565b9396929550929360600135925050565b8060005b6003811015610b07578151845260209384019390910190600101612b82565b600061044082019050612bb5828c51612974565b60208b0151612bcf60208401826001600160401b03169052565b5060408b0151612be3604084018215159052565b5060608b0151606083015260808b0151608083015260a08b015160a083015260c08b0151612c1660c084018260ff169052565b5060e08b0151612c2b60e084018260ff169052565b506101008b81015160ff1690830152610120808c015162ffffff90811691840191909152610140808d0151821690840152610160808d0151821690840152610180808d0151908401526101a0808d0151908401526101c0808d0151908401526101e0808d0151821690840152610200808d0151821690840152610220808d0151821690840152610240808d015190840152610260808d01518216908401528a5161028084015260208b01516102a084015260408b015181166102c084015260608b015181166102e084015260808b015116610300830152612d1061032083018a612b7e565b87610380830152866103a0830152856103c0830152846103e083015283610400830152826104208301529a9950505050505050505050565b60008060408385031215612d5b57600080fd5b61299d8361286a565b60008060408385031215612d7757600080fd5b612d808361278d565b91506128e76020840161278d565b60208082526010908201526f14dd1bdc9859d948191a5cd8589b195960821b604082015260600190565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052601160045260246000fd5b818103818111156106f5576106f5612dd1565b600181815b80851115612e35578160001904821115612e1b57612e1b612dd1565b80851615612e2857918102915b93841c9390800290612dff565b509250929050565b600082612e4c575060016106f5565b81612e59575060006106f5565b8160018114612e6f5760028114612e7957612e95565b60019150506106f5565b60ff841115612e8a57612e8a612dd1565b50506001821b6106f5565b5060208310610133831016604e8410600b8410161715612eb8575081810a6106f5565b612ec28383612dfa565b8060001904821115612ed657612ed6612dd1565b029392505050565b6000610dd48383612e3d565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612f1257600080fd5b8135610dd481612b18565b6020808252601d908201527f53656e646572206973206e6f7420612053746f72616765204f776e6572000000604082015260600190565b6020808252600f908201526e10db185a5b5cc8191a5cd8589b1959608a1b604082015260600190565b8154610280820190612f98836001600160a01b038316612974565b6001600160401b0360a082901c166020840152612fbf6040840160ff8360e01c1615159052565b506001830154606083015260028301546080830152600383015460a0830152600483015460ff80821660c0850152600882811c821660e0860152601083901c90911661010085015262ffffff601883811c8216610120870152603084811c831661014088015260489490941c8216610160870152600587015461018087015260068701546101a087015260078701546101c0870152918601548082166101e08701529182901c8116610200860152911c81166102208401526009840154610240840152600a909301549092166102609091015290565b6000602082840312156130a757600080fd5b5051919050565b60208082526010908201526f4e6f7420656e6f7567682066756e647360801b604082015260600190565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600082516131198184602087016127ee565b9190910192915050565b600060a0828403121561313557600080fd5b60405160a081016001600160401b0381118282101715613157576131576129ab565b80604052508251815260208301516020820152604083015161317881612b18565b6040820152606083015161318b81612b18565b6060820152608083015161319e81612b18565b60808201529392505050565b808201808211156106f5576106f5612dd1565b600060ff821660ff81036131d3576131d3612dd1565b60010192915050565b6001600160a01b0393909316835260ff919091166020830152604082015260600190565b60006040828403121561321257600080fd5b82601f83011261322157600080fd5b604080519081016001600160401b0381118282101715613243576132436129ab565b806040525080604084018581111561325a57600080fd5b845b8181101561327457805183526020928301920161325c565b509195945050505050565b80820281158282048414176106f5576106f5612dd1565b6000826132b357634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016132ca576132ca612dd1565b506001019056fe3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a8482dee5dd865e09c7ce6788d674a03682994f0b44339403ca07ac129a9de4bed6a11a8cb5a02bd6c42679835e867ef2118ba78f088f8300511420c6603c21d9c7877d72916e966418e6dc58a19999ae9934bef3f749f1547cde0a86e809f19c89b9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef7bfe041e3ea3e2e2c4f5cd46501a8a22c846f9f9fc2233a86af07e98ab30a8b9fe8aa29cf039ed63090c19c8df7227928debdffaaabc3980055f519185105ef1a63ee2570545e3bcf99d9ebc213e9215643a9c883f9f0de54b3c9f81bfc088fba264697066735822122031b335a63439497413e0b3ed3814e95f3227347af20d068ed6b14836bd77f52064736f6c6343000818003377d72916e966418e6dc58a19999ae9934bef3f749f1547cde0a86e809f19c89b0000000000000000000000009d71141ae1e8432302e03c562ea45ec140a86b5d