Loading
[ { "inputs": [ { "internalType": "contract IERC20Metadata", "name": "token_", "type": "address" }, { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "DecimalsError", "type": "error" }, { "inputs": [], "name": "DurationShorterThanCliff", "type": "error" }, { "inputs": [], "name": "InsufficientReleasableTokens", "type": "error" }, { "inputs": [], "name": "InsufficientTokensInContract", "type": "error" }, { "inputs": [], "name": "InvalidAmount", "type": "error" }, { "inputs": [], "name": "InvalidDuration", "type": "error" }, { "inputs": [], "name": "InvalidSchedule", "type": "error" }, { "inputs": [], "name": "InvalidSlicePeriod", "type": "error" }, { "inputs": [], "name": "InvalidStart", "type": "error" }, { "inputs": [], "name": "NotRevokable", "type": "error" }, { "inputs": [], "name": "NotSupported", "type": "error" }, { "inputs": [], "name": "ScheduleWasRevoked", "type": "error" }, { "inputs": [], "name": "TooManySchedulesForBeneficiary", "type": "error" }, { "inputs": [], "name": "Unauthorized", "type": "error" }, { "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": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "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": "bytes32", "name": "scheduleId", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "beneficiary", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "start", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "cliff", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "duration", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "slicePeriodSeconds", "type": "uint256" }, { "indexed": false, "internalType": "bool", "name": "revokable", "type": "bool" } ], "name": "ScheduleCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "scheduleId", "type": "bytes32" } ], "name": "ScheduleRevoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "scheduleId", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "beneficiary", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "TokensReleased", "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" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ROLE_CREATE_SCHEDULE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "vestingScheduleId", "type": "bytes32" } ], "name": "computeReleasableAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "holder", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "computeVestingScheduleIdForAddressAndIndex", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_beneficiary", "type": "address" }, { "internalType": "uint256", "name": "_start", "type": "uint256" }, { "internalType": "uint256", "name": "_cliff", "type": "uint256" }, { "internalType": "uint256", "name": "_duration", "type": "uint256" }, { "internalType": "uint256", "name": "_slicePeriodSeconds", "type": "uint256" }, { "internalType": "bool", "name": "_revokable", "type": "bool" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "createVestingSchedule", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "vestingScheduleId", "type": "bytes32" } ], "name": "getVestingSchedule", "outputs": [ { "components": [ { "internalType": "uint256", "name": "cliff", "type": "uint256" }, { "internalType": "uint256", "name": "start", "type": "uint256" }, { "internalType": "uint256", "name": "duration", "type": "uint256" }, { "internalType": "uint256", "name": "slicePeriodSeconds", "type": "uint256" }, { "internalType": "uint256", "name": "amountTotal", "type": "uint256" }, { "internalType": "uint256", "name": "released", "type": "uint256" }, { "internalType": "enum TokenVesting.Status", "name": "status", "type": "uint8" }, { "internalType": "address", "name": "beneficiary", "type": "address" }, { "internalType": "bool", "name": "revokable", "type": "bool" } ], "internalType": "struct TokenVesting.VestingSchedule", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "holder", "type": "address" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "getVestingScheduleByAddressAndIndex", "outputs": [ { "components": [ { "internalType": "uint256", "name": "cliff", "type": "uint256" }, { "internalType": "uint256", "name": "start", "type": "uint256" }, { "internalType": "uint256", "name": "duration", "type": "uint256" }, { "internalType": "uint256", "name": "slicePeriodSeconds", "type": "uint256" }, { "internalType": "uint256", "name": "amountTotal", "type": "uint256" }, { "internalType": "uint256", "name": "released", "type": "uint256" }, { "internalType": "enum TokenVesting.Status", "name": "status", "type": "uint8" }, { "internalType": "address", "name": "beneficiary", "type": "address" }, { "internalType": "bool", "name": "revokable", "type": "bool" } ], "internalType": "struct TokenVesting.VestingSchedule", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getVestingSchedulesIds", "outputs": [ { "internalType": "bytes32[]", "name": "", "type": "bytes32[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getWithdrawableAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "holdersVestingScheduleCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nativeToken", "outputs": [ { "internalType": "contract IERC20Metadata", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "vestingScheduleId", "type": "bytes32" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "release", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "holder", "type": "address" } ], "name": "releaseAvailableTokensForHolder", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "vestingScheduleId", "type": "bytes32" } ], "name": "revoke", "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": "bool", "name": "paused", "type": "bool" } ], "name": "setPaused", "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": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "vestingSchedulesIds", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "vestingSchedulesTotalAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60a06040523480156200001157600080fd5b5060405162002712380380620027128339810160408190526200003491620002fc565b6200003f3362000142565b600180556002805460ff191690556001600160a01b03831660808190526040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa15801562000098573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000be919062000386565b60ff16601214620000e257604051631273be1d60e31b815260040160405180910390fd5b6004620000f0838262000441565b506005620000ff828262000441565b506200010d60003362000192565b620001397f01d6ebbe244ac14dd8a7a12f932c0ce6e9bb9236c9b55d3756a6b13de75cdc333362000192565b5050506200050d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008281526003602090815260408083206001600160a01b038516845290915290205460ff16620002335760008281526003602090815260408083206001600160a01b03851684529091529020805460ff19166001179055620001f23390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200025f57600080fd5b81516001600160401b03808211156200027c576200027c62000237565b604051601f8301601f19908116603f01168101908282118183101715620002a757620002a762000237565b81604052838152602092508683858801011115620002c457600080fd5b600091505b83821015620002e85785820183015181830184015290820190620002c9565b600093810190920192909252949350505050565b6000806000606084860312156200031257600080fd5b83516001600160a01b03811681146200032a57600080fd5b60208501519093506001600160401b03808211156200034857600080fd5b62000356878388016200024d565b935060408601519150808211156200036d57600080fd5b506200037c868287016200024d565b9150509250925092565b6000602082840312156200039957600080fd5b815160ff81168114620003ab57600080fd5b9392505050565b600181811c90821680620003c757607f821691505b602082108103620003e857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200043c57600081815260208120601f850160051c81016020861015620004175750805b601f850160051c820191505b81811015620004385782815560010162000423565b5050505b505050565b81516001600160401b038111156200045d576200045d62000237565b62000475816200046e8454620003b2565b84620003ee565b602080601f831160018114620004ad5760008415620004945750858301515b600019600386901b1c1916600185901b17855562000438565b600085815260208120601f198616915b82811015620004de57888601518255948401946001909101908401620004bd565b5085821015620004fd5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6080516121d46200053e600039600081816104c301528181610785015281816109960152610ffc01526121d46000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c8063715018a611610130578063a217fddf116100b8578063e1758bd81161007c578063e1758bd8146104be578063ea1bb3d5146104e5578063f2fde38b146104f8578063f51321d71461050b578063fd8aa0851461051e57600080fd5b8063a217fddf1461047a578063a9059cbb1461027e578063b75c7dc614610482578063d547741f14610495578063dd62ed3e146104a857600080fd5b806390be10cc116100ff57806390be10cc1461042e57806391d148541461043657806395d89b41146104495780639d8535ad146104515780639ef346b41461045a57600080fd5b8063715018a6146103db5780638815e862146103e35780638af104da146103f65780638da5cb5b1461040957600080fd5b80632e1a7d4d116101b35780633c8241a1116101825780633c8241a11461034d5780634b866a2d146103745780635c975abb1461039457806366afd8ef1461039f57806370a08231146103b257600080fd5b80632e1a7d4d146102fa5780632f2ff15d1461030d578063313ce5671461032057806336568abe1461033a57600080fd5b806316c38b3c116101fa57806316c38b3c1461029157806317e289e9146102a457806318160ddd146102b757806323b872dd146102c9578063248a9ca3146102d757600080fd5b806301ffc9a71461022c57806305d6cc591461025457806306fdde0314610269578063095ea7b31461027e575b600080fd5b61023f61023a366004611ca2565b610533565b60405190151581526020015b60405180910390f35b610267610262366004611ce8565b61056a565b005b610271610624565b60405161024b9190611d27565b61023f61028c366004611d5a565b6106b2565b61026761029f366004611d92565b6106cd565b6102676102b2366004611daf565b6106eb565b6008545b60405190815260200161024b565b61023f61028c366004611e16565b6102bb6102e5366004611e52565b60009081526003602052604090206001015490565b610267610308366004611e52565b61072e565b61026761031b366004611e6b565b6107b5565b610328601281565b60405160ff909116815260200161024b565b610267610348366004611e6b565b6107df565b6102bb7f01d6ebbe244ac14dd8a7a12f932c0ce6e9bb9236c9b55d3756a6b13de75cdc3381565b6102bb610382366004611ce8565b60096020526000908152604090205481565b60025460ff1661023f565b6102676103ad366004611e97565b610862565b6102bb6103c0366004611ce8565b6001600160a01b03166000908152600a602052604090205490565b6102676108f6565b6102bb6103f1366004611e52565b61090a565b6102bb610404366004611d5a565b61092b565b6000546001600160a01b03165b6040516001600160a01b03909116815260200161024b565b6102bb610972565b61023f610444366004611e6b565b610a10565b610271610a3b565b6102bb60085481565b61046d610468366004611e52565b610a48565b60405161024b9190611ecf565b6102bb600081565b610267610490366004611e52565b610b14565b6102676104a3366004611e6b565b610ca8565b6102bb6104b6366004611f64565b600092915050565b6104167f000000000000000000000000000000000000000000000000000000000000000081565b6102bb6104f3366004611e52565b610ccd565b610267610506366004611ce8565b610d66565b61046d610519366004611d5a565b610ddc565b610526610df8565b60405161024b9190611f8e565b60006001600160e01b03198216637965db0b60e01b148061056457506301ffc9a760e01b6001600160e01b03198316145b92915050565b610572610e50565b336001600160a01b0382161480159061059657506000546001600160a01b03163314155b156105b3576040516282b42960e81b815260040160405180910390fd5b6001600160a01b038116600090815260096020526040812054905b818110156106165760006105e2848361092b565b905060006105ef82610ccd565b90508015610601576106018282610ea9565b5050808061060e90611fe8565b9150506105ce565b505061062160018055565b50565b6004805461063190612001565b80601f016020809104026020016040519081016040528092919081815260200182805461065d90612001565b80156106aa5780601f1061067f576101008083540402835291602001916106aa565b820191906000526020600020905b81548152906001019060200180831161068d57829003601f168201915b505050505081565b6000604051630280e1e560e61b815260040160405180910390fd5b6106d5611031565b80156106e35761062161108b565b6106216110e5565b7f01d6ebbe244ac14dd8a7a12f932c0ce6e9bb9236c9b55d3756a6b13de75cdc336107158161111e565b61072488888888888888611128565b5050505050505050565b610736610e50565b61073e611031565b610746610972565b811115610766576040516314a83c1960e01b815260040160405180910390fd5b6107ac61077b6000546001600160a01b031690565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690836114e1565b61062160018055565b6000828152600360205260409020600101546107d08161111e565b6107da8383611533565b505050565b6001600160a01b03811633146108545760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61085e82826115b9565b5050565b61086a610e50565b60008281526007602052604081206002015483910361089c57604051631b742d9d60e31b815260040160405180910390fd5b600160008281526007602052604090206006015460ff1660018111156108c4576108c4611eb9565b036108e257604051632957a17760e01b815260040160405180910390fd5b6108ec8383610ea9565b5061085e60018055565b6108fe611031565b6109086000611620565b565b6006818154811061091a57600080fd5b600091825260209091200154905081565b6040516bffffffffffffffffffffffff19606084901b1660208201526034810182905260009060540160405160208183030381529060405280519060200120905092915050565b6008546040516370a0823160e01b8152306004820152600091906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156109dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a019190612035565b610a0b919061204e565b905090565b60009182526003602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6005805461063190612001565b610a50611c45565b60076000838152602001908152602001600020604051806101200160405290816000820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820160009054906101000a900460ff166001811115610acf57610acf611eb9565b6001811115610ae057610ae0611eb9565b81526006919091015461010081046001600160a01b03166020830152600160a81b900460ff16151560409091015292915050565b610b1c611031565b600081815260076020526040812060020154829103610b4e57604051631b742d9d60e31b815260040160405180910390fd5b600160008281526007602052604090206006015460ff166001811115610b7657610b76611eb9565b03610b9457604051632957a17760e01b815260040160405180910390fd5b60008281526007602052604090206006810154600160a81b900460ff16610bce57604051633c34e69d60e01b815260040160405180910390fd5b6000610bd982611670565b1115610bf157610bf183610bec83611670565b610ea9565b600081600501548260040154610c07919061204e565b905080600854610c17919061204e565b600855600682015461010090046001600160a01b03166000908152600a6020526040902054610c4790829061204e565b6006830180546001600160a01b03610100909104166000908152600a602052604080822093909355815460ff1916600117909155905185917f3672cfd57034e1b586da46ec42eea7bc449af89ac0ff5a795c3c00a0d1ae64c991a250505050565b600082815260036020526040902060010154610cc38161111e565b6107da83836115b9565b60008181526007602052604081206002015482908203610d0057604051631b742d9d60e31b815260040160405180910390fd5b600160008281526007602052604090206006015460ff166001811115610d2857610d28611eb9565b03610d4657604051632957a17760e01b815260040160405180910390fd5b6000838152600760205260409020610d5d90611670565b91505b50919050565b610d6e611031565b6001600160a01b038116610dd35760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161084b565b61062181611620565b610de4611c45565b610df1610468848461092b565b9392505050565b60606006805480602002602001604051908101604052809291908181526020018280548015610e4657602002820191906000526020600020905b815481526020019060010190808311610e32575b5050505050905090565b600260015403610ea25760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161084b565b6002600155565b6000828152600760205260408120600681015491549091336001600160a01b0361010090920482168114929190911614811582610ee4575080155b15610f01576040516282b42960e81b815260040160405180910390fd5b610f0a83611670565b841115610f2a5760405163110c741b60e31b815260040160405180910390fd5b838360050154610f3a9190612061565b6005840155600854610f4d90859061204e565b600855600683015461010090046001600160a01b03166000908152600a6020526040902054610f7d90859061204e565b6006840180546001600160a01b036101009182900481166000908152600a60205260409081902094909455915492519204169086907f62eb4bd96d9a7a66875a9f46f9f9d8bf6cfed3fe0578671b752301427d2a4f6690610fe19088815260200190565b60405180910390a3600683015461102a906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811691610100900416866114e1565b5050505050565b6000546001600160a01b031633146109085760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161084b565b61109361174d565b6002805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110c83390565b6040516001600160a01b03909116815260200160405180910390a1565b6110ed611793565b6002805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336110c8565b61062181336117dc565b80611131610972565b1015611150576040516314a83c1960e01b815260040160405180910390fd5b61115e42630114db00612061565b86111561117e57604051630e0d5b9360e21b815260040160405180910390fd5b62093a808410806111925750635dfc0f0084115b156111b057604051637616640160e01b815260040160405180910390fd5b806000036111d15760405163162908e360e11b815260040160405180910390fd5b8215806111de5750603c83115b156111fc5760405163c36476e960e01b815260040160405180910390fd5b8484101561121d5760405163625a1c5760e11b815260040160405180910390fd5b600160c81b8111156112425760405163162908e360e11b815260040160405180910390fd5b6001600160a01b03871660009081526009602052604090205460641161127b576040516338cf51e560e01b815260040160405180910390fd5b6001600160a01b03871660009081526009602052604081205461129f90899061092b565b905060405180610120016040528087896112b99190612061565b815260200188815260200186815260200185815260200183815260200160008152602001600060018111156112f0576112f0611eb9565b8152602001896001600160a01b0316815260200184151581525060076000838152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c08201518160060160006101000a81548160ff0219169083600181111561138357611383611eb9565b021790555060e082015160069091018054610100938401511515600160a81b0260ff60a81b196001600160a01b0390941690940292909216610100600160b01b0319909216919091179190911790556008546113e0908390612061565b60085560068054600181019091557ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f018190556001600160a01b0388166000908152600960205260408120805490919061143990611fe8565b909155506001600160a01b0388166000908152600a6020526040902054611461908390612061565b6001600160a01b0389166000818152600a60209081526040918290209390935580518581529283018a90528201889052606082018790526080820186905284151560a08301529082907f6a4b2f118c5372782b73db45bdf54f9241247604d5414fef92818ca34ad7d4629060c00160405180910390a35050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526107da908490611835565b61153d8282610a10565b61085e5760008281526003602090815260408083206001600160a01b03851684529091529020805460ff191660011790556115753390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6115c38282610a10565b1561085e5760008281526003602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8054600090429081108061169c57506001600684015460ff16600181111561169a5761169a611eb9565b145b156116aa5750600092915050565b826002015483600101546116be9190612061565b81106116d85782600501548360040154610d5d919061204e565b60008360010154826116ea919061204e565b600385015490915060006116fe8284612074565b9050600061170c8383612096565b9050600087600201548289600401546117259190612096565b61172f9190612074565b9050876005015481611741919061204e565b98975050505050505050565b60025460ff16156109085760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161084b565b60025460ff166109085760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161084b565b6117e68282610a10565b61085e576117f381611907565b6117fe836020611919565b60405160200161180f9291906120ad565b60408051601f198184030181529082905262461bcd60e51b825261084b91600401611d27565b600061188a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611ab59092919063ffffffff16565b8051909150156107da57808060200190518101906118a89190612122565b6107da5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161084b565b60606105646001600160a01b03831660145b60606000611928836002612096565b611933906002612061565b67ffffffffffffffff81111561194b5761194b61213f565b6040519080825280601f01601f191660200182016040528015611975576020820181803683370190505b509050600360fc1b8160008151811061199057611990612155565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106119bf576119bf612155565b60200101906001600160f81b031916908160001a90535060006119e3846002612096565b6119ee906001612061565b90505b6001811115611a66576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611a2257611a22612155565b1a60f81b828281518110611a3857611a38612155565b60200101906001600160f81b031916908160001a90535060049490941c93611a5f8161216b565b90506119f1565b508315610df15760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161084b565b6060611ac48484600085611acc565b949350505050565b606082471015611b2d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161084b565b600080866001600160a01b03168587604051611b499190612182565b60006040518083038185875af1925050503d8060008114611b86576040519150601f19603f3d011682016040523d82523d6000602084013e611b8b565b606091505b5091509150611b9c87838387611ba7565b979650505050505050565b60608315611c16578251600003611c0f576001600160a01b0385163b611c0f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161084b565b5081611ac4565b611ac48383815115611c2b5781518083602001fd5b8060405162461bcd60e51b815260040161084b9190611d27565b60405180610120016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001811115611c8e57611c8e611eb9565b815260006020820181905260409091015290565b600060208284031215611cb457600080fd5b81356001600160e01b031981168114610df157600080fd5b80356001600160a01b0381168114611ce357600080fd5b919050565b600060208284031215611cfa57600080fd5b610df182611ccc565b60005b83811015611d1e578181015183820152602001611d06565b50506000910152565b6020815260008251806020840152611d46816040850160208701611d03565b601f01601f19169190910160400192915050565b60008060408385031215611d6d57600080fd5b611d7683611ccc565b946020939093013593505050565b801515811461062157600080fd5b600060208284031215611da457600080fd5b8135610df181611d84565b600080600080600080600060e0888a031215611dca57600080fd5b611dd388611ccc565b96506020880135955060408801359450606088013593506080880135925060a0880135611dff81611d84565b8092505060c0880135905092959891949750929550565b600080600060608486031215611e2b57600080fd5b611e3484611ccc565b9250611e4260208501611ccc565b9150604084013590509250925092565b600060208284031215611e6457600080fd5b5035919050565b60008060408385031215611e7e57600080fd5b82359150611e8e60208401611ccc565b90509250929050565b60008060408385031215611eaa57600080fd5b50508035926020909101359150565b634e487b7160e01b600052602160045260246000fd5b600061012082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160028110611f3157634e487b7160e01b600052602160045260246000fd5b8060c08401525060e0830151611f5260e08401826001600160a01b03169052565b50610100928301511515919092015290565b60008060408385031215611f7757600080fd5b611f8083611ccc565b9150611e8e60208401611ccc565b6020808252825182820181905260009190848201906040850190845b81811015611fc657835183529284019291840191600101611faa565b50909695505050505050565b634e487b7160e01b600052601160045260246000fd5b600060018201611ffa57611ffa611fd2565b5060010190565b600181811c9082168061201557607f821691505b602082108103610d6057634e487b7160e01b600052602260045260246000fd5b60006020828403121561204757600080fd5b5051919050565b8181038181111561056457610564611fd2565b8082018082111561056457610564611fd2565b60008261209157634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141761056457610564611fd2565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516120e5816017850160208801611d03565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612116816028840160208801611d03565b01602801949350505050565b60006020828403121561213457600080fd5b8151610df181611d84565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60008161217a5761217a611fd2565b506000190190565b60008251612194818460208701611d03565b919091019291505056fea2646970667358221220f5c282841b579634b3b0cacec98be5be6b7402753101a4382e99e3cfbf90988464736f6c63430008120033000000000000000000000000a4ffdf3208f46898ce063e25c1c43056fa754739000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000017417468656e6144414f205669727475616c20546f6b656e00000000000000000000000000000000000000000000000000000000000000000000000000000000047641544800000000000000000000000000000000000000000000000000000000