5 txs
7 calls
constructor
constructor(address _kiltToken, address _owner)
functions
absoluteMaxClaim
viewfunction absoluteMaxClaim() view returns (uint256)
authorizedCalculators
viewfunction authorizedCalculators(address) view returns (bool)
CALCULATOR_ACTIVATION_DELAY
viewfunction CALCULATOR_ACTIVATION_DELAY() view returns (uint256)
canUserClaim
viewfunction canUserClaim(address user, uint256 rewardBalance) view returns (bool)
claimedAmount
viewfunction claimedAmount(address) view returns (uint256)
getAbsoluteMaxClaim
viewfunction getAbsoluteMaxClaim() view returns (uint256)
getClaimedAmount
viewfunction getClaimedAmount(address user) view returns (uint256)
getContractBalance
viewfunction getContractBalance() view returns (uint256)
getContractStats
viewfunction getContractStats() view returns (uint256 balance, uint256 totalClaims, uint256 totalAmount)
getPendingCalculatorInfo
viewfunction getPendingCalculatorInfo(address calculator) view returns (bool isPending, uint256 activationTime, uint256 remainingDelay)
getUserNonce
viewfunction getUserNonce(address user) view returns (uint256)
getUserStats
viewfunction getUserStats(address user) view returns (uint256 claimed, uint256 lastClaim, uint256 canClaimAt, uint256 currentNonce)
hasInteracted
viewfunction hasInteracted(address) view returns (bool)
kiltToken
viewfunction kiltToken() view returns (address)
lastClaimTime
viewfunction lastClaimTime(address) view returns (uint256)
nonces
viewfunction nonces(address) view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
pendingCalculatorActivation
viewfunction pendingCalculatorActivation(address) view returns (uint256)
totalAmountClaimed
viewfunction totalAmountClaimed() view returns (uint256)
totalClaimsProcessed
viewfunction totalClaimsProcessed() view returns (uint256)
userAddresses
viewfunction userAddresses(uint256) view returns (address)
activatePendingCalculator
nonpayablefunction activatePendingCalculator(address calculator)
claimRewards
nonpayablefunction claimRewards(uint256 totalRewardBalance, bytes signature)
depositTreasury
nonpayablefunction depositTreasury(uint256 amount)
emergencyClaim
nonpayablefunction emergencyClaim(address user, uint256 totalRewardBalance)
emergencyWithdraw
nonpayablefunction emergencyWithdraw(uint256 amount)
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
resetAllStates
nonpayablefunction resetAllStates()
revokeCalculatorAuthorization
nonpayablefunction revokeCalculatorAuthorization(address calculator)
setPendingCalculatorAuthorization
nonpayablefunction setPendingCalculatorAuthorization(address calculator)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
updateAbsoluteMaxClaim
nonpayablefunction updateAbsoluteMaxClaim(uint256 _absoluteMaxClaim)
events
CalculatorAuthorized
event CalculatorAuthorized(address indexed calculator, bool authorized)
CalculatorPending
event CalculatorPending(address indexed calculator, uint256 activationTime)
ClaimLimitsUpdated
event ClaimLimitsUpdated(uint256 absoluteMax)
ContractPaused
event ContractPaused()
ContractUnpaused
event ContractUnpaused()
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
RewardClaimed
event RewardClaimed(address indexed user, uint256 amount, uint256 claimedAmount, uint256 nonce, uint256 timestamp)
StatesReset
event StatesReset()
TreasuryDeposit
event TreasuryDeposit(uint256 amount)
TreasuryWithdraw
event TreasuryWithdraw(uint256 amount)
Unpaused
event Unpaused(address account)
errors
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60a060405269152d02c7e14af6800000600a5534801561001d575f5ffd5b506040516142bc3803806142bc833981810160405281019061003f91906102fd565b805f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100b0575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100a7919061034a565b60405180910390fd5b6100bf816101de60201b60201c565b50600180819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012c906103bd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161019a90610425565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505050610443565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102cc826102a3565b9050919050565b6102dc816102c2565b81146102e6575f5ffd5b50565b5f815190506102f7816102d3565b92915050565b5f5f604083850312156103135761031261029f565b5b5f610320858286016102e9565b9250506020610331858286016102e9565b9150509250929050565b610344816102c2565b82525050565b5f60208201905061035d5f83018461033b565b92915050565b5f82825260208201905092915050565b7f496e76616c696420746f6b656e206164647265737300000000000000000000005f82015250565b5f6103a7601583610363565b91506103b282610373565b602082019050919050565b5f6020820190508181035f8301526103d48161039b565b9050919050565b7f496e76616c6964206f776e6572206164647265737300000000000000000000005f82015250565b5f61040f601583610363565b915061041a826103db565b602082019050919050565b5f6020820190508181035f83015261043c81610403565b9050919050565b608051613e2261049a5f395f81816107c001528181610d1f0152818161135a015281816114970152818161169301528181611bf201528181611f0901528181612138015281816123f301526126e10152613e225ff3fe608060405234801561000f575f5ffd5b506004361061020f575f3560e01c80637006c7f511610123578063ab24ce83116100ab578063bfa5e13c1161007a578063bfa5e13c14610616578063d107619e14610634578063d2fd8b8414610650578063dfe6b5d61461066e578063f2fde38b1461068e5761020f565b8063ab24ce8314610592578063b77bef0e146105ae578063b77cf9c6146105ca578063bd12240a146105fa5761020f565b80638187f846116100f25780638187f846146104ec5780638456cb591461051c5780638da5cb5b146105265780638df40be814610544578063943d3997146105745761020f565b80637006c7f514610452578063715018a614610482578063746f698a1461048c5780637ecebe00146104bc5761020f565b80634e43603a116101a65780635c975abb116101755780635c975abb146103ac578063649850f0146103ca5780636834e3a8146103e85780636e8d2a73146104185780636f9fb98a146104345761020f565b80634e43603a14610311578063502c9bd5146103445780635312ea8e14610374578063549dd8c3146103905761020f565b80633eb2791e116101e25780633eb2791e146102995780633f4ba83a146102b7578063418db712146102c15780634a71bd55146102f35761020f565b806304e86903146102135780630f0275471461024357806312eae0dc1461025f57806335637bde14610269575b5f5ffd5b61022d60048036038101906102289190612f62565b6106aa565b60405161023a9190612fa5565b60405180910390f35b61025d60048036038101906102589190612fe8565b6106bf565b005b610267610dfb565b005b610283600480360381019061027e9190612fe8565b61101b565b6040516102909190613040565b60405180910390f35b6102a16110a5565b6040516102ae9190612fa5565b60405180910390f35b6102bf6110ab565b005b6102db60048036038101906102d69190612f62565b6110e9565b6040516102ea93929190613059565b60405180910390f35b6102fb6111cd565b6040516103089190612fa5565b60405180910390f35b61032b60048036038101906103269190612f62565b6111d6565b60405161033b949392919061308e565b60405180910390f35b61035e600480360381019061035991906130d1565b611314565b60405161036b919061310b565b60405180910390f35b61038e600480360381019061038991906130d1565b61134f565b005b6103aa60048036038101906103a59190613185565b611517565b005b6103b4611cd8565b6040516103c19190613040565b60405180910390f35b6103d2611ced565b6040516103df9190612fa5565b60405180910390f35b61040260048036038101906103fd9190612f62565b611cf3565b60405161040f9190612fa5565b60405180910390f35b610432600480360381019061042d9190612f62565b611da9565b005b61043c611f06565b6040516104499190612fa5565b60405180910390f35b61046c60048036038101906104679190612f62565b611fa4565b6040516104799190612fa5565b60405180910390f35b61048a611fb9565b005b6104a660048036038101906104a19190612f62565b611fcc565b6040516104b39190613040565b60405180910390f35b6104d660048036038101906104d19190612f62565b611fe9565b6040516104e39190612fa5565b60405180910390f35b61050660048036038101906105019190612f62565b611ffe565b6040516105139190613040565b60405180910390f35b61052461201b565b005b61052e612059565b60405161053b919061310b565b60405180910390f35b61055e60048036038101906105599190612f62565b612080565b60405161056b9190612fa5565b60405180910390f35b61057c612136565b604051610589919061323d565b60405180910390f35b6105ac60048036038101906105a79190612f62565b61215a565b005b6105c860048036038101906105c391906130d1565b612301565b005b6105e460048036038101906105df9190612f62565b61238c565b6040516105f19190612fa5565b60405180910390f35b610614600480360381019061060f91906130d1565b6123a1565b005b61061e612472565b60405161062b9190612fa5565b60405180910390f35b61064e60048036038101906106499190612f62565b612478565b005b6106586126d6565b6040516106659190612fa5565b60405180910390f35b6106766126dc565b60405161068593929190613256565b60405180910390f35b6106a860048036038101906106a39190612f62565b612788565b005b6006602052805f5260405f205f915090505481565b6106c761280c565b815f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072d906132e5565b60405180910390fd5b5f8211610778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076f9061334d565b60405180910390fd5b600a548211156107bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b4906133db565b60405180910390fd5b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610817919061310b565b602060405180830381865afa158015610832573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610856919061340d565b90508281101561089b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089290613482565b60405180910390fd5b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108c791906134cd565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541115610946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093d9061354a565b60405180910390fd5b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61097291906134cd565b600c5411156109b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ad906135b2565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410610a55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4c9061361a565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b5410610ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab090613682565b60405180910390fd5b8260065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610b0591906136a0565b925050819055506001600b5f828254610b1e91906136a0565b9250508190555082600c5f828254610b3691906136a0565b925050819055505f60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050600160055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610bcb91906136a0565b925050819055504260075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610d1857600160095f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600885908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b610d6385857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166128939092919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167f9e80c048bc588b388047ffc6e8153e7c11aa34312de7ed62e1858ff3a44ddce88560065f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548442604051610dec949392919061308e565b60405180910390a25050505050565b610e0361280c565b5f600b819055505f600c819055505f60088054905090505f5f90505b81811015610fde575f60088281548110610e3c57610e3b6136d3565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060095f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610fd0575f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505b508080600101915050610e1f565b5060085f610fec9190612ec7565b7fb9a64fb023942f459913b26baae7070b9a720b760acfd2e02890f7aec65c34c660405160405180910390a150565b5f825f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361108b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611082906132e5565b60405180910390fd5b600a54831115801561109c57505f83115b91505092915050565b600a5481565b6110b361280c565b6110bb612912565b7f0e5e3b3fb504c22cf5c42fa07d521225937514c654007e1f12646f89768d6f9460405160405180910390a1565b5f5f5f835f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361115b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611152906132e5565b60405180910390fd5b60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205492505f831180156111a957508242105b9350836111b6575f6111c3565b42836111c291906134cd565b5b9150509193909250565b5f600a54905090565b5f5f5f5f845f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611249576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611240906132e5565b60405180910390fd5b60065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054945060075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205493505f925060055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549150509193509193565b60088181548110611323575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61135761280c565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016113b1919061310b565b602060405180830381865afa1580156113cc573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f0919061340d565b90505f8111611434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142b9061374a565b60405180910390fd5b5f5f83146114425782611444565b815b905081811115611489576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611480906137b2565b60405180910390fd5b6114db611494612059565b827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166128939092919063ffffffff16565b7ff1b96db22d7f3eb7ef19d9ddbc4d63be139f5d014216d4e42107e10cfd4ff16c8160405161150a9190612fa5565b60405180910390a1505050565b61151f612973565b6115276129b9565b5f8311611569576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115609061334d565b60405180910390fd5b600a548311156115ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a5906133db565b60405180910390fd5b5f6115f7338560055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129fa565b90505f611605828585612a55565b905060035f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611690576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116879061381a565b60405180910390fd5b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116ea919061310b565b602060405180830381865afa158015611705573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611729919061340d565b90508581101561176e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176590613482565b60405180910390fd5b857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61179a91906134cd565b60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541115611819576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118109061354a565b60405180910390fd5b857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61184591906134cd565b600c541115611889576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611880906135b2565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191f9061361a565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b541061198c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198390613682565b60405180910390fd5b8560065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546119d891906136a0565b925050819055506001600b5f8282546119f191906136a0565b9250508190555085600c5f828254611a0991906136a0565b925050819055505f60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050600160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611a9e91906136a0565b925050819055504260075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611beb57600160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600833908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b611c3633887f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166128939092919063ffffffff16565b3373ffffffffffffffffffffffffffffffffffffffff167f9e80c048bc588b388047ffc6e8153e7c11aa34312de7ed62e1858ff3a44ddce88860065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548442604051611cbf949392919061308e565b60405180910390a250505050611cd3612c37565b505050565b5f60025f9054906101000a900460ff16905090565b610e1081565b5f815f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5a906132e5565b60405180910390fd5b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054915050919050565b611db161280c565b805f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e17906132e5565b60405180910390fd5b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90558173ffffffffffffffffffffffffffffffffffffffff167f54fce7b38295d46d13b65779570e13b919343079ed5bcefc2722e5234e6fd1275f604051611efa9190613040565b60405180910390a25050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611f60919061310b565b602060405180830381865afa158015611f7b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f9f919061340d565b905090565b6004602052805f5260405f205f915090505481565b611fc161280c565b611fca5f612c40565b565b6003602052805f5260405f205f915054906101000a900460ff1681565b6005602052805f5260405f205f915090505481565b6009602052805f5260405f205f915054906101000a900460ff1681565b61202361280c565b61202b612d01565b7fab35696f06e428ebc5ceba8cd17f8fed287baf43440206d1943af1ee53e6d26760405160405180910390a1565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f815f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e7906132e5565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054915050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b61216261280c565b805f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c8906132e5565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561225b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225290613882565b60405180910390fd5b5f610e104261226a91906136a0565b90508060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff167f4c7016828c1ea78a32b7885aa614bfb3ff03e7c0415f70b506bc58d90b638a46826040516122f49190612fa5565b60405180910390a2505050565b61230961280c565b5f811161234b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612342906138ea565b60405180910390fd5b80600a819055507fe02ca72d230293fd2eab0b045863983f53c086693d5ad52ef7e4de37ceae1007816040516123819190612fa5565b60405180910390a150565b6007602052805f5260405f205f915090505481565b6123a961280c565b5f81116123eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e290613952565b60405180910390fd5b6124383330837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16612d63909392919063ffffffff16565b7f90388e3e271a8f007dd351d51ccac1674db355c1ce23fe0005d0721fc8e9b2c6816040516124679190612fa5565b60405180910390a150565b600c5481565b61248061280c565b805f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036124ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e6906132e5565b60405180910390fd5b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20540361256e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612565906139ba565b60405180910390fd5b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20544210156125ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e590613a22565b60405180910390fd5b600160035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90558173ffffffffffffffffffffffffffffffffffffffff167f54fce7b38295d46d13b65779570e13b919343079ed5bcefc2722e5234e6fd12760016040516126ca9190613040565b60405180910390a25050565b600b5481565b5f5f5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401612738919061310b565b602060405180830381865afa158015612753573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612777919061340d565b9250600b549150600c549050909192565b61279061280c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612800575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016127f7919061310b565b60405180910390fd5b61280981612c40565b50565b612814612de5565b73ffffffffffffffffffffffffffffffffffffffff16612832612059565b73ffffffffffffffffffffffffffffffffffffffff161461289157612855612de5565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612888919061310b565b60405180910390fd5b565b61290d838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85856040516024016128c6929190613a40565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612dec565b505050565b61291a612e87565b5f60025f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61295c612de5565b604051612969919061310b565b60405180910390a1565b6002600154036129af576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b6129c1611cd8565b156129f8576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f838383604051602001612a1093929190613acc565b60405160208183030381529060405280519060200120604051602001612a369190613b85565b6040516020818303038152906040528051906020012090509392505050565b5f60418383905014612a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9390613bf4565b60405180910390fd5b5f5f5f853592506020860135915060408601355f1a90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0825f1c1115612b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0f90613c5c565b60405180910390fd5b601b8160ff161480612b2d5750601c8160ff16145b612b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6390613cc4565b60405180910390fd5b5f6001888386866040515f8152602001604052604051612b8f9493929190613d0c565b6020604051602081039080840390855afa158015612baf573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2090613d99565b60405180910390fd5b809450505050509392505050565b60018081905550565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612d096129b9565b600160025f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612d4c612de5565b604051612d59919061310b565b60405180910390a1565b612ddf848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401612d9893929190613db7565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612dec565b50505050565b5f33905090565b5f5f60205f8451602086015f885af180612e0b576040513d5f823e3d81fd5b3d92505f519150505f8214612e24576001811415612e3f565b5f8473ffffffffffffffffffffffffffffffffffffffff163b145b15612e8157836040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401612e78919061310b565b60405180910390fd5b50505050565b612e8f611cd8565b612ec5576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5080545f8255905f5260205f2090810190612ee29190612ee5565b50565b5b80821115612efc575f815f905550600101612ee6565b5090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f3182612f08565b9050919050565b612f4181612f27565b8114612f4b575f5ffd5b50565b5f81359050612f5c81612f38565b92915050565b5f60208284031215612f7757612f76612f00565b5b5f612f8484828501612f4e565b91505092915050565b5f819050919050565b612f9f81612f8d565b82525050565b5f602082019050612fb85f830184612f96565b92915050565b612fc781612f8d565b8114612fd1575f5ffd5b50565b5f81359050612fe281612fbe565b92915050565b5f5f60408385031215612ffe57612ffd612f00565b5b5f61300b85828601612f4e565b925050602061301c85828601612fd4565b9150509250929050565b5f8115159050919050565b61303a81613026565b82525050565b5f6020820190506130535f830184613031565b92915050565b5f60608201905061306c5f830186613031565b6130796020830185612f96565b6130866040830184612f96565b949350505050565b5f6080820190506130a15f830187612f96565b6130ae6020830186612f96565b6130bb6040830185612f96565b6130c86060830184612f96565b95945050505050565b5f602082840312156130e6576130e5612f00565b5b5f6130f384828501612fd4565b91505092915050565b61310581612f27565b82525050565b5f60208201905061311e5f8301846130fc565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261314557613144613124565b5b8235905067ffffffffffffffff81111561316257613161613128565b5b60208301915083600182028301111561317e5761317d61312c565b5b9250929050565b5f5f5f6040848603121561319c5761319b612f00565b5b5f6131a986828701612fd4565b935050602084013567ffffffffffffffff8111156131ca576131c9612f04565b5b6131d686828701613130565b92509250509250925092565b5f819050919050565b5f6132056132006131fb84612f08565b6131e2565b612f08565b9050919050565b5f613216826131eb565b9050919050565b5f6132278261320c565b9050919050565b6132378161321d565b82525050565b5f6020820190506132505f83018461322e565b92915050565b5f6060820190506132695f830186612f96565b6132766020830185612f96565b6132836040830184612f96565b949350505050565b5f82825260208201905092915050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f6132cf600f8361328b565b91506132da8261329b565b602082019050919050565b5f6020820190508181035f8301526132fc816132c3565b9050919050565b7f4e6f207265776172647320746f20636c61696d000000000000000000000000005f82015250565b5f61333760138361328b565b915061334282613303565b602082019050919050565b5f6020820190508181035f8301526133648161332b565b9050919050565b7f5265776172642062616c616e63652065786365656473206d6178696d756d20635f8201527f6c61696d206c696d697400000000000000000000000000000000000000000000602082015250565b5f6133c5602a8361328b565b91506133d08261336b565b604082019050919050565b5f6020820190508181035f8301526133f2816133b9565b9050919050565b5f8151905061340781612fbe565b92915050565b5f6020828403121561342257613421612f00565b5b5f61342f848285016133f9565b91505092915050565b7f496e73756666696369656e7420636f6e74726163742062616c616e63650000005f82015250565b5f61346c601d8361328b565b915061347782613438565b602082019050919050565b5f6020820190508181035f83015261349981613460565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6134d782612f8d565b91506134e283612f8d565b92508282039050818111156134fa576134f96134a0565b5b92915050565b7f436c61696d656420616d6f756e74206f766572666c6f770000000000000000005f82015250565b5f61353460178361328b565b915061353f82613500565b602082019050919050565b5f6020820190508181035f83015261356181613528565b9050919050565b7f546f74616c20616d6f756e74206f766572666c6f7700000000000000000000005f82015250565b5f61359c60158361328b565b91506135a782613568565b602082019050919050565b5f6020820190508181035f8301526135c981613590565b9050919050565b7f4e6f6e6365206f766572666c6f770000000000000000000000000000000000005f82015250565b5f613604600e8361328b565b915061360f826135d0565b602082019050919050565b5f6020820190508181035f830152613631816135f8565b9050919050565b7f436c61696d732070726f636573736564206f766572666c6f77000000000000005f82015250565b5f61366c60198361328b565b915061367782613638565b602082019050919050565b5f6020820190508181035f83015261369981613660565b9050919050565b5f6136aa82612f8d565b91506136b583612f8d565b92508282019050808211156136cd576136cc6134a0565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e6f20746f6b656e7320746f20776974686472617700000000000000000000005f82015250565b5f61373460158361328b565b915061373f82613700565b602082019050919050565b5f6020820190508181035f83015261376181613728565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f61379c60148361328b565b91506137a782613768565b602082019050919050565b5f6020820190508181035f8301526137c981613790565b9050919050565b7f496e76616c69642063616c63756c61746f72207369676e6174757265000000005f82015250565b5f613804601c8361328b565b915061380f826137d0565b602082019050919050565b5f6020820190508181035f830152613831816137f8565b9050919050565b7f43616c63756c61746f7220616c726561647920617574686f72697a65640000005f82015250565b5f61386c601d8361328b565b915061387782613838565b602082019050919050565b5f6020820190508181035f83015261389981613860565b9050919050565b7f4d617820636c61696d206d7573742062652067726561746572207468616e20305f82015250565b5f6138d460208361328b565b91506138df826138a0565b602082019050919050565b5f6020820190508181035f830152613901816138c8565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f61393c601d8361328b565b915061394782613908565b602082019050919050565b5f6020820190508181035f83015261396981613930565b9050919050565b7f4e6f2070656e64696e6720617574686f72697a6174696f6e00000000000000005f82015250565b5f6139a460188361328b565b91506139af82613970565b602082019050919050565b5f6020820190508181035f8301526139d181613998565b9050919050565b7f41637469766174696f6e2064656c6179206e6f74206d657400000000000000005f82015250565b5f613a0c60188361328b565b9150613a17826139d8565b602082019050919050565b5f6020820190508181035f830152613a3981613a00565b9050919050565b5f604082019050613a535f8301856130fc565b613a606020830184612f96565b9392505050565b5f8160601b9050919050565b5f613a7d82613a67565b9050919050565b5f613a8e82613a73565b9050919050565b613aa6613aa182612f27565b613a84565b82525050565b5f819050919050565b613ac6613ac182612f8d565b613aac565b82525050565b5f613ad78286613a95565b601482019150613ae78285613ab5565b602082019150613af78284613ab5565b602082019150819050949350505050565b5f81905092915050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f82015250565b5f613b46601c83613b08565b9150613b5182613b12565b601c82019050919050565b5f819050919050565b5f819050919050565b613b7f613b7a82613b5c565b613b65565b82525050565b5f613b8f82613b3a565b9150613b9b8284613b6e565b60208201915081905092915050565b7f496e76616c6964207369676e6174757265206c656e67746800000000000000005f82015250565b5f613bde60188361328b565b9150613be982613baa565b602082019050919050565b5f6020820190508181035f830152613c0b81613bd2565b9050919050565b7f496e76616c6964207369676e6174757265202773272076616c756500000000005f82015250565b5f613c46601b8361328b565b9150613c5182613c12565b602082019050919050565b5f6020820190508181035f830152613c7381613c3a565b9050919050565b7f496e76616c6964207369676e6174757265202776272076616c756500000000005f82015250565b5f613cae601b8361328b565b9150613cb982613c7a565b602082019050919050565b5f6020820190508181035f830152613cdb81613ca2565b9050919050565b613ceb81613b5c565b82525050565b5f60ff82169050919050565b613d0681613cf1565b82525050565b5f608082019050613d1f5f830187613ce2565b613d2c6020830186613cfd565b613d396040830185613ce2565b613d466060830184613ce2565b95945050505050565b7f496e76616c6964207369676e61747572650000000000000000000000000000005f82015250565b5f613d8360118361328b565b9150613d8e82613d4f565b602082019050919050565b5f6020820190508181035f830152613db081613d77565b9050919050565b5f606082019050613dca5f8301866130fc565b613dd760208301856130fc565b613de46040830184612f96565b94935050505056fea26469706673582212209b29531b71ef675d7bc2583bd56d9d91a9f2347efb1bfc880107e3f71a77bf4464736f6c634300081e00330000000000000000000000005d0dd05bb095fdd6af4865a1adf97c39c85ad2d8000000000000000000000000c98a0137fda9f85f52d66bf57c62cd2e0ef6c4d5