[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "staker", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "claimedAmount", "type": "uint256" } ], "name": "LOG_CLAIM_UNLOCKED", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "blockGap", "type": "uint256" } ], "name": "LOG_SET_UNLOCK_BLOCK_GAP", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "factor", "type": "uint256" } ], "name": "LOG_SET_UNLOCK_FACTOR", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "staker", "type": "address" }, { "indexed": true, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "stakeAmount", "type": "uint256" } ], "name": "LOG_STAKE", "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": "amount", "type": "uint256" } ], "name": "LOG_UNLOCK_TRANSFER", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "staker", "type": "address" }, { "indexed": true, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "unstakeAmount", "type": "uint256" } ], "name": "LOG_UNSTAKE", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "FACTOR_DENOMINATOR", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "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": "token", "type": "address" } ], "name": "claimUnlocked", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "claimableUnlocked", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "getStaked", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "getUnlockBlockGap", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "getUnlockFactor", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" }, { "internalType": "address", "name": "token", "type": "address" } ], "name": "getUnlockSpeed", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "lockedOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mintLockedToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mintUnlockedToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" } ], "name": "removeAuthorizedMintCaller", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "caller", "type": "address" } ], "name": "setAuthorizedMintCaller", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "_blockGap", "type": "uint256" } ], "name": "setUnlockBlockGap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "_factor", "type": "uint256" } ], "name": "setUnlockFactor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "stake", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalUnlocked", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "unlockedOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "unstake", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b50604080518082018252600d81526c27999029bbb0b8102a37b5b2b760991b6020808301918252835180850190945260028452614f3360f01b9084015281519192916200006191600391620000f8565b50805162000077906004906020840190620000f8565b50506005805460ff1916601217905550600062000093620000f4565b60058054610100600160a81b0319166101006001600160a01b03841690810291909117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600160065562000194565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200013b57805160ff19168380011785556200016b565b828001600101855582156200016b579182015b828111156200016b5782518255916020019190600101906200014e565b50620001799291506200017d565b5090565b5b808211156200017957600081556001016200017e565b61238f80620001a46000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c8063715018a61161010f578063a9059cbb116100a2578063c752192211610071578063c752192214610650578063caad546e14610676578063dd62ed3e1461069c578063f2fde38b146106ca576101f0565b8063a9059cbb146105a6578063aa2d0100146105d2578063adc9772e146105f8578063c2a672e014610624576101f0565b806395d89b41116100de57806395d89b4114610544578063a457c2d71461054c578063a5f1e28214610578578063a779d0801461059e576101f0565b8063715018a6146104cc578063718489c5146104d45780637b16e15f146104fa5780638da5cb5b14610520576101f0565b80633950935111610187578063400bea9411610156578063400bea941461044c5780635ef73d5814610472578063617b8ced1461047a57806370a08231146104a6576101f0565b806339509351146103a6578063399080ec146103d25780633a3dbc9a146103f85780633fe9c25314610426576101f0565b80631cc6b7d4116101c35780631cc6b7d4146102fa5780632268e19e1461032657806323b872dd14610352578063313ce56714610388576101f0565b806306fdde03146101f5578063095ea7b3146102725780630dc47c3c146102b257806318160ddd146102e0575b600080fd5b6101fd6106f0565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023757818101518382015260200161021f565b50505050905090810190601f1680156102645780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61029e6004803603604081101561028857600080fd5b506001600160a01b038135169060200135610786565b604080519115158252519081900360200190f35b6102de600480360360408110156102c857600080fd5b506001600160a01b0381351690602001356107a4565b005b6102e86108c7565b60408051918252519081900360200190f35b6102de6004803603604081101561031057600080fd5b506001600160a01b0381351690602001356108cd565b6102de6004803603604081101561033c57600080fd5b506001600160a01b03813516906020013561097b565b61029e6004803603606081101561036857600080fd5b506001600160a01b03813581169160208101359091169060400135610a31565b610390610abd565b6040805160ff9092168252519081900360200190f35b61029e600480360360408110156103bc57600080fd5b506001600160a01b038135169060200135610ac6565b6102e8600480360360208110156103e857600080fd5b50356001600160a01b0316610b14565b6102e86004803603604081101561040e57600080fd5b506001600160a01b0381358116916020013516610b53565b6102e86004803603602081101561043c57600080fd5b50356001600160a01b0316610b91565b6102e86004803603602081101561046257600080fd5b50356001600160a01b0316610bac565b6102e8610bc7565b6102de6004803603604081101561049057600080fd5b506001600160a01b038135169060200135610bcf565b6102e8600480360360208110156104bc57600080fd5b50356001600160a01b0316610c85565b6102de610ca0565b61029e600480360360208110156104ea57600080fd5b50356001600160a01b0316610d52565b6102e86004803603602081101561051057600080fd5b50356001600160a01b0316610e83565b610528610ed8565b604080516001600160a01b039092168252519081900360200190f35b6101fd610eec565b61029e6004803603604081101561056257600080fd5b506001600160a01b038135169060200135610f4d565b6102e86004803603602081101561058e57600080fd5b50356001600160a01b0316610fb5565b6102e8610fe1565b61029e600480360360408110156105bc57600080fd5b506001600160a01b038135169060200135610fe7565b6102de600480360360208110156105e857600080fd5b50356001600160a01b031661100d565b61029e6004803603604081101561060e57600080fd5b506001600160a01b038135169060200135611090565b61029e6004803603604081101561063a57600080fd5b506001600160a01b0381351690602001356112a4565b6102de6004803603602081101561066657600080fd5b50356001600160a01b031661148d565b6102e86004803603602081101561068c57600080fd5b50356001600160a01b0316611513565b6102e8600480360360408110156106b257600080fd5b506001600160a01b038135811691602001351661152e565b6102de600480360360208110156106e057600080fd5b50356001600160a01b0316611559565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561077c5780601f106107515761010080835404028352916020019161077c565b820191906000526020600020905b81548152906001019060200180831161075f57829003601f168201915b5050505050905090565b600061079a610793611667565b848461166b565b5060015b92915050565b6107ac610ed8565b6001600160a01b03166107bd611667565b6001600160a01b031614806107f75750600b60006107d9611667565b6001600160a01b0316815260208101919091526040016000205460ff165b610848576040805162461bcd60e51b815260206004820152601e60248201527f4f333a204d494e545f43414c4c45525f4e4f545f415554484f52495a45440000604482015290519081900360640190fd5b6108528282611757565b61085c8282611847565b6a52b7d2dcc80cd2e40000006108706108c7565b11156108c3576040805162461bcd60e51b815260206004820152601960248201527f4f333a20544f54414c5f535550504c595f455843454544454400000000000000604482015290519081900360640190fd5b5050565b60025490565b6108d5610ed8565b6001600160a01b03166108e6611667565b6001600160a01b031614806109205750600b6000610902611667565b6001600160a01b0316815260208101919091526040016000205460ff165b610971576040805162461bcd60e51b815260206004820152601e60248201527f4f333a204d494e545f43414c4c45525f4e4f545f415554484f52495a45440000604482015290519081900360640190fd5b61085c8282611757565b610983611667565b6001600160a01b0316610994610ed8565b6001600160a01b0316146109dd576040805162461bcd60e51b815260206004820181905260248201526000805160206122a2833981519152604482015290519081900360640190fd5b6001600160a01b0382166000818152600a6020908152604091829020849055815184815291517f4fa1c8bae1f2ee3d51f5bea75dc354c17cf230fdf1fa6bfa458cd03e2ede08bc9281900390910190a25050565b6000610a3e8484846118d8565b610a49848484611a33565b6000610a5c85610a57611667565b61152e565b9050610ab085610a6a611667565b60408051808201909152601c81527f4f333a205452414e534645525f414d4f554e545f4558434545444544000000006020820152610aab9085908890611b85565b61166b565b60019150505b9392505050565b60055460ff1690565b600061079a610ad3611667565b84610aab8560016000610ae4611667565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611c1c565b600060086000610b22611667565b6001600160a01b03908116825260208083019390935260409182016000908120918616815292529020549050919050565b6001600160a01b03808316600090815260086020908152604080832093851683529290529081208054610b899084908690611c76565b949350505050565b6001600160a01b031660009081526009602052604090205490565b6001600160a01b03166000908152600a602052604090205490565b6305f5e10081565b610bd7611667565b6001600160a01b0316610be8610ed8565b6001600160a01b031614610c31576040805162461bcd60e51b815260206004820181905260248201526000805160206122a2833981519152604482015290519081900360640190fd5b6001600160a01b038216600081815260096020908152604091829020849055815184815291517ffbd482c9dea78c178879b07a2daa165a1348ac031421bb9917d8734de948fca39281900390910190a25050565b6001600160a01b031660009081526020819052604090205490565b610ca8611667565b6001600160a01b0316610cb9610ed8565b6001600160a01b031614610d02576040805162461bcd60e51b815260206004820181905260248201526000805160206122a2833981519152604482015290519081900360640190fd5b60055460405160009161010090046001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a360058054610100600160a81b0319169055565b600060026006541415610dac576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026006556000600881610dbe611667565b6001600160a01b039081168252602080830193909352604091820160009081209187168152925281209150610e04610df4611667565b8584600001548560010154611cf6565b9050610e1a610e11611667565b83548690611d4f565b610e2b610e25611667565b82611847565b610e33611667565b6001600160a01b03167f9b0d7ec397f0d7459574b710fa67fcdfc3d3c80ca2d0c1a84a67dd566464b298826040518082815260200191505060405180910390a26001925050506001600655919050565b60008060086000610e92611667565b6001600160a01b039081168252602080830193909352604091820160009081209187168152925290209050610ab6610ec8611667565b8483600001548460010154611cf6565b60055461010090046001600160a01b031690565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561077c5780601f106107515761010080835404028352916020019161077c565b600061079a610f5a611667565b84610aab856040518060600160405280602581526020016123356025913960016000610f84611667565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611b85565b6001600160a01b03811660009081526007602052604081205461079e90610fdb84610c85565b90611d84565b600c5490565b6000610ffb610ff4611667565b84846118d8565b61079a611006611667565b8484611a33565b611015611667565b6001600160a01b0316611026610ed8565b6001600160a01b03161461106f576040805162461bcd60e51b815260206004820181905260248201526000805160206122a2833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600b60205260409020805460ff19169055565b6000600260065414156110ea576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026006556001600160a01b03831660009081526009602052604090205461114e576040805162461bcd60e51b815260206004820152601260248201527113ccce88119050d513d497d393d517d4d15560721b604482015290519081900360640190fd5b6001600160a01b0383166000908152600a60205260409020546111b0576040805162461bcd60e51b815260206004820152601560248201527413ccce88109313d0d2d7d1d05417d393d517d4d155605a1b604482015290519081900360640190fd5b6111c2836111bc611667565b84611de1565b6000600860006111d0611667565b6001600160a01b039081168252602080830193909352604091820160009081209188168152925281209150611216611206611667565b8684600001548560010154611cf6565b9050611236611223611667565b835487906112319088611c1c565b611d4f565b611241610e25611667565b846001600160a01b0316611253611667565b6001600160a01b03167fc21b429107df2ac940fc444798554039f5c34696739d39ef7d39fa0abb4a9fc7866040518082815260200191505060405180910390a3600192505050600160065592915050565b6000600260065414156112fe576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260065581611355576040805162461bcd60e51b815260206004820152601760248201527f4f333a205a45524f5f554e5354414b455f414d4f554e54000000000000000000604482015290519081900360640190fd5b600060086000611363611667565b6001600160a01b0390811682526020808301939093526040918201600090812091881681529252902080549091508311156113e5576040805162461bcd60e51b815260206004820152601b60248201527f4f333a20554e5354414b455f414d4f554e545f45584345454445440000000000604482015290519081900360640190fd5b60006113f2611206611667565b905061140d6113ff611667565b835487906112319088611d84565b611418610e25611667565b61142a85611424611667565b86611dfb565b846001600160a01b031661143c611667565b6001600160a01b03167f1ddc13fab879f36a0016ded03412386f11de571437df12605dc0607742bd82c2866040518082815260200191505060405180910390a3600192505050600160065592915050565b611495611667565b6001600160a01b03166114a6610ed8565b6001600160a01b0316146114ef576040805162461bcd60e51b815260206004820181905260248201526000805160206122a2833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600b60205260409020805460ff19166001179055565b6001600160a01b031660009081526007602052604090205490565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b611561611667565b6001600160a01b0316611572610ed8565b6001600160a01b0316146115bb576040805162461bcd60e51b815260206004820181905260248201526000805160206122a2833981519152604482015290519081900360640190fd5b6001600160a01b0381166116005760405162461bcd60e51b81526004018080602001828103825260268152602001806121e46026913960400191505060405180910390fd5b6005546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b3390565b6001600160a01b0383166116b05760405162461bcd60e51b81526004018080602001828103825260248152602001806122e76024913960400191505060405180910390fd5b6001600160a01b0382166116f55760405162461bcd60e51b815260040180806020018281038252602281526020018061220a6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0382166117b2576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6117be60008383611df6565b6002546117cb9082611c1c565b6002556001600160a01b0382166000908152602081905260409020546117f19082611c1c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6001600160a01b03821660009081526007602052604090205461186a9082611c1c565b6001600160a01b038316600090815260076020526040902055600c546118909082611c1c565b600c556040805182815290516001600160a01b038416916000917fb5a2a645ea10b3aaf0b61965c340be4cf9ef443e7e784f656b3119e9f4dd130d9181900360200190a35050565b6001600160a01b03831661191d5760405162461bcd60e51b81526004018080602001828103825260258152602001806122c26025913960400191505060405180910390fd5b6001600160a01b0382166119625760405162461bcd60e51b81526004018080602001828103825260238152602001806121c16023913960400191505060405180910390fd5b61196d838383611df6565b6119aa8160405180606001604052806026815260200161222c602691396001600160a01b0386166000908152602081905260409020549190611b85565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546119d99082611c1c565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6001600160a01b038316611a785760405162461bcd60e51b81526004018080602001828103825260258152602001806122c26025913960400191505060405180910390fd5b6001600160a01b038216611abd5760405162461bcd60e51b81526004018080602001828103825260238152602001806121c16023913960400191505060405180910390fd5b611afa816040518060600160405280602f8152602001612252602f91396001600160a01b0386166000908152600760205260409020549190611b85565b6001600160a01b038085166000908152600760205260408082209390935590841681522054611b299082611c1c565b6001600160a01b0380841660008181526007602090815260409182902094909455805185815290519193928716927fb5a2a645ea10b3aaf0b61965c340be4cf9ef443e7e784f656b3119e9f4dd130d92918290030190a3505050565b60008184841115611c145760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611bd9578181015183820152602001611bc1565b50505050905090810190601f168015611c065780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610ab6576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080611c8284610fb5565b6001600160a01b03861660009081526009602052604081205491925090611ca99085611e0f565b6001600160a01b0387166000908152600a602052604081205491925090611cde90611cd8856305f5e100611e0f565b90611e68565b905080821115611cec578091505b5095945050505050565b600080611d04858786611c76565b90506000611d124385611d84565b90506000611d286305f5e100611cd88585611e0f565b90506000611d3589610fb5565b905080821115611d43578091505b50979650505050505050565b6001600160a01b0392831660009081526008602090815260408083209490951682529290925291902090815543600190910155565b600082821115611ddb576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b611df66001600160a01b038416833084611ecf565b505050565b611df66001600160a01b0384168383611f2f565b600082611e1e5750600061079e565b82820282848281611e2b57fe5b0414610ab65760405162461bcd60e51b81526004018080602001828103825260218152602001806122816021913960400191505060405180910390fd5b6000808211611ebe576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611ec757fe5b049392505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052611f29908590611f7d565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611df69084905b6060611fd2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661202e9092919063ffffffff16565b805190915015611df657808060200190516020811015611ff157600080fd5b5051611df65760405162461bcd60e51b815260040180806020018281038252602a81526020018061230b602a913960400191505060405180910390fd5b6060610b8984846000858561204285612154565b612093576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106120d25780518252601f1990920191602091820191016120b3565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612134576040519150601f19603f3d011682016040523d82523d6000602084013e612139565b606091505b509150915061214982828661215a565b979650505050505050565b3b151590565b60608315612169575081610ab6565b8251156121795782518084602001fd5b60405162461bcd60e51b8152602060048201818152845160248401528451859391928392604401919085019080838360008315611bd9578181015183820152602001611bc156fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320756e6c6f636b65642062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657245524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204bbb1b6e7fe0c626ad4fdeff186aaec4f99eae47b30e0f04b2c6af11458a134864736f6c634300060c0033