3 txs
0 calls
constructor
constructor(address _token, string _name, string _symbol)
functions
admin
viewfunction admin() view returns (address)
balanceOf
viewfunction balanceOf(address addr, uint256 _t) view returns (uint256)
balanceOf
viewfunction balanceOf(address addr) view returns (uint256)
balanceOfAt
viewfunction balanceOfAt(address addr, uint256 _block) view returns (uint256)
create_lock_helper
viewfunction create_lock_helper() view returns (address)
decimals
viewfunction decimals() view returns (uint256)
epoch
viewfunction epoch() view returns (uint256)
get_last_user_bias
viewfunction get_last_user_bias(address addr) view returns (int128)
get_last_user_slope
viewfunction get_last_user_slope(address addr) view returns (int128)
get_last_user_vestingTime
viewfunction get_last_user_vestingTime(address addr) view returns (int128)
getListenerAt
viewfunction getListenerAt(uint256 listenerIdx) view returns (address)
getNumOfListeners
viewfunction getNumOfListeners() view returns (uint256)
helperSet
viewfunction helperSet() view returns (bool)
isSmartWalletCheckerOn
viewfunction isSmartWalletCheckerOn() view returns (bool)
locked__end
viewfunction locked__end(address _addr) view returns (uint256)
locked
viewfunction locked(address) view returns (int128 amount, uint256 end)
MAXTIME
viewfunction MAXTIME() view returns (uint256)
MINTIME
viewfunction MINTIME() view returns (uint256)
MULTIPLIER
viewfunction MULTIPLIER() view returns (uint256)
name
viewfunction name() view returns (string)
numOfListeners
viewfunction numOfListeners() view returns (uint256)
point_history
viewfunction point_history(uint256) view returns (int128 bias, int128 slope, uint256 ts, uint256 blk)
slope_changes
viewfunction slope_changes(uint256) view returns (int128)
smart_wallet_checker
viewfunction smart_wallet_checker() view returns (address)
supply
viewfunction supply() view returns (uint256)
symbol
viewfunction symbol() view returns (string)
token
viewfunction token() view returns (address)
totalSupply
viewfunction totalSupply() view returns (uint256)
totalSupply
viewfunction totalSupply(uint256 t) view returns (uint256)
totalSupplyAt
viewfunction totalSupplyAt(uint256 _block) view returns (uint256)
user_point_epoch
viewfunction user_point_epoch(address) view returns (uint256)
user_point_history__ts
viewfunction user_point_history__ts(address _addr, uint256 _idx) view returns (uint256)
user_point_history
viewfunction user_point_history(address, uint256) view returns (int128 bias, int128 slope, uint256 ts, uint256 blk)
WEEK
viewfunction WEEK() view returns (uint256)
ZERO_ADDRESS
viewfunction ZERO_ADDRESS() view returns (address)
addListener
nonpayablefunction addListener(address listener)
checkpoint
nonpayablefunction checkpoint()
create_lock
nonpayablefunction create_lock(uint256 _value, uint256 _unlock_time)
createLockFor
nonpayablefunction createLockFor(address _beneficiary, address _payer, uint256 _value, uint256 _unlock_time)
deposit_for
nonpayablefunction deposit_for(address _addr, uint256 _value)
increase_amount
nonpayablefunction increase_amount(uint256 _value)
increase_unlock_time
nonpayablefunction increase_unlock_time(uint256 _unlock_time)
increaseAmountAndUnlockTime
nonpayablefunction increaseAmountAndUnlockTime(uint256 _value, uint256 _unlock_time)
recoverERC20
nonpayablefunction recoverERC20(address tokenAddress, uint256 tokenAmount)
relock
nonpayablefunction relock(uint256 _unlock_time)
removeListenerAt
nonpayablefunction removeListenerAt(uint256 listenerIdx)
renounceAdminship
nonpayablefunction renounceAdminship()
set_create_lock_helper
nonpayablefunction set_create_lock_helper(address _addr)
set_smart_wallet_checker
nonpayablefunction set_smart_wallet_checker(address _addr)
toggleSmartWalletCheckerStatus
nonpayablefunction toggleSmartWalletCheckerStatus()
transferAdminship
nonpayablefunction transferAdminship(address newAdmin)
withdraw
nonpayablefunction withdraw()
events
AdminshipTransferred
event AdminshipTransferred(address indexed previousAdmin, address indexed newAdmin)
CreateLockHelperSet
event CreateLockHelperSet(address helper)
Deposit
event Deposit(address indexed provider, address indexed payer, uint256 value, uint256 indexed locktime, uint8 _type, uint256 ts)
ListenerAdded
event ListenerAdded(address listner)
ListenerRemoved
event ListenerRemoved(address listner)
Recovered
event Recovered(address token, uint256 amount)
SmartWalletCheckerSet
event SmartWalletCheckerSet(address checker)
SmartWalletCheckerStatusToggled
event SmartWalletCheckerStatusToggled(bool isSmartWalletCheckerOn)
Supply
event Supply(uint256 prevSupply, uint256 supply)
Withdraw
event Withdraw(address indexed provider, uint256 value, uint256 ts)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
FailedInnerCall
error FailedInnerCall()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60a06040523480156200001157600080fd5b50604051620039de380380620039de8339810160408190526200003491620002a6565b600160005562000044336200018c565b6001600160a01b0383166200009f5760405162461bcd60e51b815260206004820152601d60248201527f566f74696e67457363726f773a20696e76616c69642061646472657373000000604482015260640160405180910390fd5b6006620000ad8382620003c1565b506007620000bc8282620003c1565b506001600160a01b03831660808190526040805163313ce56760e01b8152905163313ce567916004808201926020929091908290030181865afa15801562000108573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200012e91906200048d565b60ff16600855505060008052506010602052437f6e0956cda88cad152e89927e53611735b61a5c762d1428573c6931b0a5efcb0355427f6e0956cda88cad152e89927e53611735b61a5c762d1428573c6931b0a5efcb0255620004b9565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f2931ebb3d190545dcf6801c37aa686b74f2e1000e753d0fac6e471a2aa5a621390600090a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020657600080fd5b81516001600160401b0380821115620002235762000223620001de565b604051601f8301601f19908116603f011681019082821181831017156200024e576200024e620001de565b81604052838152602092508660208588010111156200026c57600080fd5b600091505b8382101562000290578582018301518183018401529082019062000271565b6000602085830101528094505050505092915050565b600080600060608486031215620002bc57600080fd5b83516001600160a01b0381168114620002d457600080fd5b60208501519093506001600160401b0380821115620002f257600080fd5b6200030087838801620001f4565b935060408601519150808211156200031757600080fd5b506200032686828701620001f4565b9150509250925092565b600181811c908216806200034557607f821691505b6020821081036200036657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc576000816000526020600020601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001de565b620003f581620003ee845462000330565b846200036c565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620004a057600080fd5b815160ff81168114620004b257600080fd5b9392505050565b6080516134f4620004ea600039600081816107fa01528181610bb1015281816112820152611bd201526134f46000f3fe608060405234801561001057600080fd5b506004361061030b5760003560e01c80637c74a1741161019d578063cbf9fe5f116100e9578063ef1849d6116100a2578063f851a4401161007c578063f851a440146107d0578063f8c8dae8146107e1578063fc0c546a146107f5578063fe31d5dd1461081c57600080fd5b8063ef1849d6146107ab578063eff7a612146107b3578063f4359ce5146107c657600080fd5b8063cbf9fe5f146106bb578063d1febfb914610703578063d5b5025214610741578063da020a1814610754578063ee00ef3a1461078d578063ee04431d1461079857600080fd5b80639bed25d811610156578063adc6358911610130578063adc6358914610661578063bb65e8db1461068d578063bd85b039146106a0578063c2c4c5c1146106b357600080fd5b80639bed25d814610633578063a98d38f01461063b578063abd2515c1461064e57600080fd5b80637c74a174146105a35780638980f11f146105e9578063900cf0cf146105fc57806395d89b4114610605578063960994251461060d578063981b24d01461062057600080fd5b80633e43756c1161025c5780635b51c30811610215578063685333e4116101ef578063685333e41461054557806370a0823114610558578063711974841461056b5780637175d4f71461059057600080fd5b80635b51c308146105155780635be7cc161461051f57806365fc38731461053257600080fd5b80633e43756c146104a05780633f6ffa65146104a95780634957677c146104d45780634ee2cd7e146104e75780635162dfa5146104fa578063538ba4f91461050d57600080fd5b806317b86a0f116102c957806328d09d47116102a357806328d09d4714610409578063313ce5671461047a5780633a46273e146104835780633ccfd60b1461049857600080fd5b806317b86a0f146103a757806318160ddd146103af5780631e45529b146103b757600080fd5b8062fdd58e14610310578063010ae75714610336578063047fc9aa14610356578063059f8b161461035f57806306fdde031461036e5780630ca6954314610383575b600080fd5b61032361031e366004613022565b61082f565b6040519081526020015b60405180910390f35b61032361034436600461304c565b600e6020526000908152604090205481565b61032360045481565b610323670de0b6b3a764000081565b61037661090c565b60405161032d919061308b565b600b5461039790600160a81b900460ff1681565b604051901515815260200161032d565b61032361099a565b6103236109ab565b6103f66103c536600461304c565b6001600160a01b03166000908152600e6020908152604080832054600d8352818420908452909152902054600f0b90565b604051600f9190910b815260200161032d565b610452610417366004613022565b600d602090815260009283526040808420909152908252902080546001820154600290920154600f82810b93600160801b909304900b919084565b60408051600f95860b81529390940b602084015292820152606081019190915260800161032d565b61032360085481565b610496610491366004613022565b6109b6565b005b610496610ab0565b61032360095481565b6104bc6104b73660046130be565b610d01565b6040516001600160a01b03909116815260200161032d565b6104966104e23660046130be565b610d2c565b6103236104f5366004613022565b610d4a565b61049661050836600461304c565b611028565b6104bc600081565b61032362278d0081565b61049661052d36600461304c565b611144565b6104966105403660046130d7565b6111de565b6103f661055336600461304c565b6111fc565b61032361056636600461304c565b61124a565b6103f66105793660046130be565b600f60208190526000918252604090912054900b81565b600a546104bc906001600160a01b031681565b6103f66105b136600461304c565b6001600160a01b03166000908152600e6020908152604080832054600d8352818420908452909152902054600160801b9004600f0b90565b6104966105f7366004613022565b611256565b61032360055481565b61037661135d565b61049661061b3660046130be565b61136a565b61032361062e3660046130be565b6114c9565b6104966116ab565b6104966106493660046130be565b6116df565b61049661065c36600461304c565b6116f0565b61032361066f36600461304c565b6001600160a01b03166000908152600c602052604090206001015490565b61049661069b3660046130d7565b6117d7565b6103236106ae3660046130be565b6117f1565b610496611851565b6106e96106c936600461304c565b600c6020526000908152604090208054600190910154600f9190910b9082565b60408051600f9390930b835260208301919091520161032d565b6104526107113660046130be565b601060205260009081526040902080546001820154600290920154600f82810b93600160801b909304900b919084565b61049661074f36600461304c565b6118bd565b610323610762366004613022565b6001600160a01b03919091166000908152600d60209081526040808320938352929052206001015490565b610323630784ce0081565b600b546104bc906001600160a01b031681565b6104966119c5565b6104966107c13660046130be565b611a55565b61032362093a8081565b6001546001600160a01b03166104bc565b600b5461039790600160a01b900460ff1681565b6104bc7f000000000000000000000000000000000000000000000000000000000000000081565b61049661082a3660046130f9565b611a66565b6001600160a01b0382166000908152600e6020526040812054808203610859576000915050610906565b6001600160a01b0384166000908152600d6020908152604080832084845282529182902082516080810184528154600f81810b8352600160801b909104900b928101929092526001810154928201839052600201546060820152906108be9085613151565b81602001516108cd919061317e565b815182906108dc908390613151565b600f90810b90915282516000910b121590506108f757600081525b51600f0b91506109069050565b505b92915050565b600680546109199061319e565b80601f01602080910402602001604051908101604052809291908181526020018280546109459061319e565b80156109925780601f1061096757610100808354040283529160200191610992565b820191906000526020600020905b81548152906001019060200180831161097557829003601f168201915b505050505081565b60006109a66002611aed565b905090565b60006109a6426117f1565b6109be611af7565b6001600160a01b0382166000908152600c602090815260409182902082518084019093528054600f0b8352600101549082015281610a175760405162461bcd60e51b8152600401610a0e906131d8565b60405180910390fd5b60008160000151600f0b13610a6e5760405162461bcd60e51b815260206004820152601a60248201527f7665432f6e6f2d6578697374696e672d6c6f636b2d666f756e640000000000006044820152606401610a0e565b42816020015111610a915760405162461bcd60e51b8152600401610a0e9061320f565b610aa18384846000856000611b21565b50610aac6001600055565b5050565b610ab8611af7565b336000908152600c602090815260409182902082518084019093528054600f0b835260010154908201819052421015610b335760405162461bcd60e51b815260206004820152601b60248201527f7665432f7468652d6c6f636b2d6469642d6e6f742d65787069726500000000006044820152606401610a0e565b80516040805180820182528351600f90810b825260208086018051828501526000808252808852338152600c909252939020855181546001600160801b0319166001600160801b0390911617815592516001909301929092556004549290910b91610b9e8382613256565b600455610bac338386611d24565b610be07f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163385612288565b60005b600954811015610c72576000610bfa6002836122ec565b90506001600160a01b038116637355c57a336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015610c4d57600080fd5b505af1158015610c61573d6000803e3d6000fd5b505060019093019250610be3915050565b506040805184815242602082015233917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568910160405180910390a27f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c81610cd98582613256565b6040805192835260208301919091520160405180910390a150505050610cff6001600055565b565b600080610d0e6002611aed565b1115610d1f576109066002836122ec565b506000919050565b919050565b610d34611af7565b610d3d816122ff565b610d476001600055565b50565b600043821115610d5957600080fd5b6001600160a01b0383166000908152600e6020526040812054815b6080811015610df75781831015610df75760006002610d938486613269565b610d9e906001613269565b610da89190613292565b6001600160a01b0388166000908152600d602090815260408083208484529091529020600201549091508610610de057809350610dee565b610deb600182613256565b92505b50600101610d74565b506001600160a01b0385166000908152600d60209081526040808320858452825280832081516080810183528154600f81810b8352600160801b909104900b938101939093526001810154918301919091526002015460608201526005549091610e6187836123d9565b600081815260106020908152604080832081516080810183528154600f81810b8352600160801b909104900b938101939093526001810154918301919091526002015460608201529192508084841015610f40576000601081610ec5876001613269565b8152602080820192909252604090810160002081516080810183528154600f81810b8352600160801b909104900b93810193909352600181015491830191909152600201546060808301829052860151919250610f229190613256565b925083604001518160400151610f389190613256565b915050610f64565b6060830151610f4f9043613256565b9150826040015142610f619190613256565b90505b60408301518215610fa1578284606001518c610f809190613256565b610f8a90846132a6565b610f949190613292565b610f9e9082613269565b90505b8660400151811015610fbf5760009950505050505050505050610906565b6040870151610fce9082613256565b8760200151610fdd919061317e565b87518890610fec908390613151565b600f90810b90915288516000910b1290506110165750509351600f0b965061090695505050505050565b60009950505050505050505050610906565b6001546001600160a01b031633146110525760405162461bcd60e51b8152600401610a0e906132bd565b6001600160a01b03811661109e5760405162461bcd60e51b81526020600482015260136024820152727665432f696e76616c69642d6164647265737360681b6044820152606401610a0e565b600b54600160a01b900460ff16156110e95760405162461bcd60e51b815260206004820152600e60248201526d1d9950cbda195b1c195c8b5cd95d60921b6044820152606401610a0e565b600b80546001600160a81b0319166001600160a01b038316908117600160a01b179091556040519081527f8808826ab8fccd3d1ac932bc6b88bf39514dc26f3d4bf3d047d3b47fc98ea741906020015b60405180910390a150565b6001546001600160a01b0316331461116e5760405162461bcd60e51b8152600401610a0e906132bd565b6001600160a01b0381166111d55760405162461bcd60e51b815260206004820152602860248201527f41646d696e61626c653a206e65772061646d696e20697320746865207a65726f604482015267206164647265737360c01b6064820152608401610a0e565b610d4781612457565b6111e6611af7565b6111f2333384846124a9565b610aac6001600055565b6001600160a01b0381166000908152600e6020908152604080832054600d8352818420818552909252822054600f81810b91600160801b9004900b61124181836132ff565b95945050505050565b6000610906824261082f565b6001546001600160a01b031633146112805760405162461bcd60e51b8152600401610a0e906132bd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036113015760405162461bcd60e51b815260206004820181905260248201527f7665432f63616e6e6f742d77697468647261772d7665737465642d746f6b656e6044820152606401610a0e565b816113166001600160a01b0382163384612288565b604080516001600160a01b0385168152602081018490527f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28910160405180910390a1505050565b600780546109199061319e565b6001546001600160a01b031633146113945760405162461bcd60e51b8152600401610a0e906132bd565b60006113a06002611aed565b116113ed5760405162461bcd60e51b815260206004820152601960248201527f7665432f6e6f2d6c697374656e65722d746f2d72656d6f7665000000000000006044820152606401610a0e565b6113f76002611aed565b81106114455760405162461bcd60e51b815260206004820152601a60248201527f7665432f696e76616c69642d6c697374656e65722d696e6465780000000000006044820152606401610a0e565b60006114526002836122ec565b905061145f6002826125e1565b5060095461146d6002611aed565b101561148957600980549060006114838361333d565b91905055505b6040516001600160a01b03821681527ff8719b53666b7bc68a4c9d081dccc309d69026d56bdeaa8518620d6ff831d1899060200160405180910390a15050565b60004382111561151b5760405162461bcd60e51b815260206004820152601e60248201527f7665432f696e76616c69642d696e7075742d626c6f636b2d6e756d62657200006044820152606401610a0e565b600554600061152a84836123d9565b600081815260106020908152604080832081516080810183528154600f81810b8352600160801b909104900b938101939093526001810154918301919091526002015460608201529192508383101561163957600060108161158d866001613269565b8152602080820192909252604090810160002081516080810183528154600f81810b8352600160801b909104900b938101939093526001810154918301919091526002015460608083018290528501519192501461163357826060015181606001516115f99190613256565b8360400151826040015161160d9190613256565b606085015161161c908a613256565b61162691906132a6565b6116309190613292565b91505b50611688565b438260600151146116885760608201516116539043613256565b60408301516116629042613256565b60608401516116719089613256565b61167b91906132a6565b6116859190613292565b90505b6116a18282846040015161169c9190613269565b6125f6565b9695505050505050565b6001546001600160a01b031633146116d55760405162461bcd60e51b8152600401610a0e906132bd565b610cff6000612457565b6116e7611af7565b610d3d81612721565b6001546001600160a01b0316331461171a5760405162461bcd60e51b8152600401610a0e906132bd565b6001600160a01b0381161580159061174757506117476001600160a01b038216634d77000d60e01b61287d565b6117895760405162461bcd60e51b81526020600482015260136024820152727665432f696e76616c69642d6164647265737360681b6044820152606401610a0e565b600a80546001600160a01b0319166001600160a01b0383169081179091556040519081527fa41c8d55d7a0302e6cc6f5b2abe1f093daff832c4b8ccf82158a19b84069e5ce90602001611139565b6117df611af7565b6117e8826122ff565b6111f281612899565b600554600081815260106020908152604080832081516080810183528154600f81810b8352600160801b909104900b9381019390935260018101549183019190915260020154606082015290919061184981856125f6565b949350505050565b611859611af7565b6118b360006118896040805180820182526000808252602091820181905282518084019093528083529082015290565b60408051808201825260008082526020918201819052825180840190935280835290820152611d24565b610cff6001600055565b6001546001600160a01b031633146118e75760405162461bcd60e51b8152600401610a0e906132bd565b6001600160a01b0381161580159061191457506119146001600160a01b0382166339aae2bd60e11b61287d565b6119575760405162461bcd60e51b81526020600482015260146024820152733b32a197b4b73b30b634b216b634b9ba32b732b960611b6044820152606401610a0e565b611962600282612a46565b506009546119706002611aed565b111561198c576009805490600061198683613354565b91905055505b6040516001600160a01b03821681527ff4b5d7970f8d26d7e8c6b74e8ffad0e1b0f67bc7f92238bd7efd485731eceafa90602001611139565b6001546001600160a01b031633146119ef5760405162461bcd60e51b8152600401610a0e906132bd565b600b805460ff600160a81b808304821615810260ff60a81b1990931692909217928390556040517f46ff223d9a1712ca180b7cef4b7fed7c787e36a4bcf447290cb252fbdb8b4ee193611a4b9390049091161515815260200190565b60405180910390a1565b611a5d611af7565b610d3d81612899565b600b546001600160a01b0316336001600160a01b031614611ac95760405162461bcd60e51b815260206004820152601960248201527f566f74696e67457363726f773a206f6e6c792068656c706572000000000000006044820152606401610a0e565b611ad1611af7565b611add848484846124a9565b611ae76001600055565b50505050565b6000610906825490565b600260005403611b1a57604051633ee5aeb560e01b815260040160405180910390fd5b6002600055565b6004548290611b308682613269565b600455604080518082019091528251600f0b815260208084015190820152825187908490611b5f90839061336d565b600f0b9052508515611b7357602083018690525b6001600160a01b0389166000908152600c60209081526040909120845181546001600160801b0319166001600160801b0390911617815590840151600190910155611bbf898285611d24565b8615611bfa57611bfa6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001689308a612a5b565b60005b600954811015611c80576000611c146002836122ec565b6040516339aae2bd60e11b81526001600160a01b038d8116600483015291925090821690637355c57a90602401600060405180830381600087803b158015611c5b57600080fd5b505af1158015611c6f573d6000803e3d6000fd5b505060019093019250611bfd915050565b508260200151886001600160a01b03168a6001600160a01b03167f76c80f823d5f58c5f602690369b5768e24c194c052c5511d8d5d1163887a563f8a8842604051611ccd9392919061339a565b60405180910390a47f5e2aa66efd74cce82b21852e317e5490d9ecc9e6bb953ae24d90851258cc2f5c82611d018982613269565b6040805192835260208301919091520160405180910390a1505050505050505050565b6000611d2e612a94565b90506000611d3a612a94565b60055490915060009081906001600160a01b03881615611e6857428760200151118015611d6e575060008760000151600f0b135b15611db3578651611d8490630784ce00906132ff565b600f0b602080870191909152870151611d9e904290613151565b8560200151611dad919061317e565b600f0b85525b428660200151118015611dcd575060008660000151600f0b135b15611e12578551611de390630784ce00906132ff565b600f0b602080860191909152860151611dfd904290613151565b8460200151611e0c919061317e565b600f0b84525b6020808801516000908152600f8083526040909120549188015191900b935015611e68578660200151866020015103611e4d57829150611e68565b6020808701516000908152600f918290526040902054900b91505b604080516080810182526000808252602082015242918101919091524360608201528115611edd575060008181526010602090815260409182902082516080810184528154600f81810b8352600160801b909104900b9281019290925260018101549282019290925260029091015460608201525b604081015181600042831015611f2a576040840151611efc9042613256565b6060850151611f0b9043613256565b611f1d90670de0b6b3a76400006132a6565b611f279190613292565b90505b600062093a80611f3a8186613292565b611f4491906132a6565b905060005b60ff8110156120b857611f5f62093a8083613269565b9150600042831115611f7357429250611f89565b506000828152600f6020819052604090912054900b5b611f938684613151565b8760200151611fa2919061317e565b87518890611fb1908390613151565b600f0b905250602087018051829190611fcb90839061336d565b600f90810b90915288516000910b12159050611fe657600087525b60008760200151600f0b1215611ffe57600060208801525b60408088018490528501519295508592670de0b6b3a7640000906120229085613256565b61202c90866132a6565b6120369190613292565b85606001516120459190613269565b6060880152612055600189613269565b975042830361206a57504360608701526120b8565b6000888152601060209081526040918290208951918a01516001600160801b03908116600160801b029216919091178155908801516001820155606088015160029091015550600101611f49565b5060058690556001600160a01b038d161561214b57896020015189602001516120e19190613151565b856020018181516120f2919061336d565b600f0b905250895189516121069190613151565b8551869061211590839061336d565b600f90810b90915260208701516000910b1215905061213657600060208601525b60008560000151600f0b121561214b57600085525b6000868152601060209081526040918290208751918801516001600160801b03908116600160801b02921691909117815590860151600182015560608601516002909101556001600160a01b038d161561227957428c60200151111561220b5760208a01516121ba908961336d565b97508b602001518b60200151036121dd5760208901516121da9089613151565b97505b60208c8101516000908152600f9091526040902080546001600160801b0319166001600160801b038a161790555b428b602001511115612266578b602001518b6020015111156122665760208901516122369088613151565b60208c8101516000908152600f9091526040902080546001600160801b0319166001600160801b03831617905596505b6122798d8a600001518b60200151612ad9565b50505050505050505050505050565b6040516001600160a01b038381166024830152604482018390526122e791859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612b86565b505050565b60006122f88383612be9565b9392505050565b61230833612c13565b336000908152600c602090815260409182902082518084019093528054600f0b835260010154908201528161234f5760405162461bcd60e51b8152600401610a0e906131d8565b60008160000151600f0b136123a65760405162461bcd60e51b815260206004820152601a60248201527f7665432f6e6f2d6578697374696e672d6c6f636b2d666f756e640000000000006044820152606401610a0e565b428160200151116123c95760405162461bcd60e51b8152600401610a0e9061320f565b610aac3333846000856002611b21565b60008082815b608081101561244d578183101561244d57600060026123fe8486613269565b612409906001613269565b6124139190613292565b600081815260106020526040902060020154909150871061243657809350612444565b612441600182613256565b92505b506001016123df565b5090949350505050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f2931ebb3d190545dcf6801c37aa686b74f2e1000e753d0fac6e471a2aa5a621390600090a35050565b6124b284612c13565b6124bf62278d0042613269565b8110156124de5760405162461bcd60e51b8152600401610a0e906133d0565b600062093a806124ee8184613292565b6124f891906132a6565b6001600160a01b0386166000908152600c602090815260409182902082518084019093528054600f0b835260010154908201529091508361254b5760405162461bcd60e51b8152600401610a0e906131d8565b8051600f0b1561259d5760405162461bcd60e51b815260206004820152601d60248201527f7665432f77697468647261772d6f6c642d746f6b656e732d66697273740000006044820152606401610a0e565b6125ab630784ce0042613269565b8211156125ca5760405162461bcd60e51b8152600401610a0e90613412565b6125d986868685856001611b21565b505050505050565b60006122f8836001600160a01b038416612d14565b60008060405180608001604052808560000151600f0b81526020018560200151600f0b81526020018560400151815260200185606001518152509050600062093a808083604001516126489190613292565b61265291906132a6565b905060005b60ff8110156126ff5761266d62093a8083613269565b915060008583111561268157859250612697565b506000828152600f6020819052604090912054900b5b60408401516126a69084613151565b84602001516126b5919061317e565b845185906126c4908390613151565b600f0b9052508583036126d757506126ff565b80846020018181516126e9919061336d565b600f0b9052505060408301829052600101612657565b5060008260000151600f0b121561271557600082525b5051600f0b9392505050565b61272a33612c13565b61273762278d0042613269565b8110156127565760405162461bcd60e51b8152600401610a0e906133d0565b336000908152600c6020908152604080832081518083019092528054600f0b825260010154918101919091529062093a806127918185613292565b61279b91906132a6565b905081602001514210156127f15760405162461bcd60e51b815260206004820152601b60248201527f7665432f7468652d6c6f636b2d6469642d6e6f742d65787069726500000000006044820152606401610a0e565b60008260000151600f0b136128405760405162461bcd60e51b81526020600482015260156024820152741d9950cbdb9bdd1a1a5b99cb5a5ccb5b1bd8dad959605a1b6044820152606401610a0e565b61284e630784ce0042613269565b81111561286d5760405162461bcd60e51b8152600401610a0e90613412565b6122e73333600084866004611b21565b600061288883612e07565b80156122f857506122f88383612e3a565b6128a233612c13565b6128af62278d0042613269565b8110156128ce5760405162461bcd60e51b8152600401610a0e906133d0565b336000908152600c6020908152604080832081518083019092528054600f0b825260010154918101919091529062093a806129098185613292565b61291391906132a6565b90504282602001511161295b5760405162461bcd60e51b815260206004820152601060248201526f1d9950cbdb1bd8dacb595e1c1a5c995960821b6044820152606401610a0e565b60008260000151600f0b136129aa5760405162461bcd60e51b81526020600482015260156024820152741d9950cbdb9bdd1a1a5b99cb5a5ccb5b1bd8dad959605a1b6044820152606401610a0e565b81602001518111612a095760405162461bcd60e51b815260206004820152602360248201527f7665432f63616e2d6f6e6c792d696e6372656173652d6c6f636b2d647572617460448201526234b7b760e91b6064820152608401610a0e565b612a17630784ce0042613269565b811115612a365760405162461bcd60e51b8152600401610a0e90613412565b6122e73333600084866003611b21565b60006122f8836001600160a01b038416612ec4565b6040516001600160a01b038481166024830152838116604483015260648201839052611ae79186918216906323b872dd906084016122b5565b60408051608080820183526000808352602080840182905283850182905260609384018290528451928301855281835282018190529281018390529081019190915290565b6001600160a01b0383166000908152600e6020526040812054612afd906001613269565b6001600160a01b039094166000818152600e602090815260408083208890558051608081018252600f97880b81529590960b858201908152428688019081524360608801908152948452600d835287842098845297909152949020925193516001600160801b03908116600160801b029416939093178255509151600183015551600290910155565b6000612b9b6001600160a01b03841683612f13565b90508051600014158015612bc0575080806020019051810190612bbe9190613454565b155b156122e757604051635274afe760e01b81526001600160a01b0384166004820152602401610a0e565b6000826000018281548110612c0057612c00613476565b9060005260206000200154905092915050565b600b54600160a81b900460ff1615610d47576001600160a01b0381163214610d4757600a546001600160a01b03168015612cba57604051631846d2f560e31b81526001600160a01b03838116600483015282169063c23697a890602401602060405180830381865afa158015612c8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cb19190613454565b15612cba575050565b60405162461bcd60e51b815260206004820152602960248201527f7665432f736d6172742d636f6e74726163742d6465706f7369746f72732d6e6f6044820152681d0b585b1b1bddd95960ba1b6064820152608401610a0e565b60008181526001830160205260408120548015612dfd576000612d38600183613256565b8554909150600090612d4c90600190613256565b9050808214612db1576000866000018281548110612d6c57612d6c613476565b9060005260206000200154905080876000018481548110612d8f57612d8f613476565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612dc257612dc261348c565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610906565b6000915050610906565b6000612e1a826301ffc9a760e01b612e3a565b80156109065750612e33826001600160e01b0319612e3a565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180516001600160e01b03166301ffc9a760e01b178152825192935060009283928392909183918a617530fa92503d91506000519050828015612ead575060208210155b8015612eb95750600081115b979650505050505050565b6000818152600183016020526040812054612f0b57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610906565b506000610906565b60606122f88383600084600080856001600160a01b03168486604051612f3991906134a2565b60006040518083038185875af1925050503d8060008114612f76576040519150601f19603f3d011682016040523d82523d6000602084013e612f7b565b606091505b50915091506116a1868383606082612f9b57612f9682612fe2565b6122f8565b8151158015612fb257506001600160a01b0384163b155b15612fdb57604051639996b31560e01b81526001600160a01b0385166004820152602401610a0e565b50806122f8565b805115612ff25780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b0381168114610d2757600080fd5b6000806040838503121561303557600080fd5b61303e8361300b565b946020939093013593505050565b60006020828403121561305e57600080fd5b6122f88261300b565b60005b8381101561308257818101518382015260200161306a565b50506000910152565b60208152600082518060208401526130aa816040850160208701613067565b601f01601f19169190910160400192915050565b6000602082840312156130d057600080fd5b5035919050565b600080604083850312156130ea57600080fd5b50508035926020909101359150565b6000806000806080858703121561310f57600080fd5b6131188561300b565b93506131266020860161300b565b93969395505050506040820135916060013590565b634e487b7160e01b600052601160045260246000fd5b600f82810b9082900b0360016001607f1b0319811260016001607f1b03821317156109065761090661313b565b600082600f0b82600f0b0280600f0b91508082146109045761090461313b565b600181811c908216806131b257607f821691505b6020821081036131d257634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526017908201527f7665432f6e6565642d6e6f6e2d7a65726f2d76616c7565000000000000000000604082015260600190565b60208082526027908201527f7665432f63616e6e6f742d6164642d746f2d657870697265642d6c6f636b2d776040820152666974686472617760c81b606082015260800190565b818103818111156109065761090661313b565b808201808211156109065761090661313b565b634e487b7160e01b600052601260045260246000fd5b6000826132a1576132a161327c565b500490565b80820281158282048414176109065761090661313b565b60208082526022908201527f41646d696e61626c653a2063616c6c6572206973206e6f74207468652061646d60408201526134b760f11b606082015260800190565b600081600f0b83600f0b806133165761331661327c565b60016001607f1b03198214600019821416156133345761333461313b565b90059392505050565b60008161334c5761334c61313b565b506000190190565b6000600182016133665761336661313b565b5060010190565b600f81810b9083900b0160016001607f1b03811360016001607f1b0319821217156109065761090661313b565b83815260608101600584106133bf57634e487b7160e01b600052602160045260246000fd5b602082019390935260400152919050565b60208082526022908201527f7665432f766f74696e672d6c6f636b2d63616e2d62652d33302d646179732d6d60408201526134b760f11b606082015260800190565b60208082526022908201527f7665432f766f74696e672d6c6f636b2d63616e2d62652d342d79656172732d6d6040820152610c2f60f31b606082015260800190565b60006020828403121561346657600080fd5b815180151581146122f857600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600082516134b4818460208701613067565b919091019291505056fea2646970667358221220bddf724d962f46afd8f5bb2990274488e3a1604eda0bf0193a7cf1413a444d8264736f6c634300081800330000000000000000000000005f8a7c646511a790c53f171891e5d469ca884ede000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000b7665536c696e6773686f7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000077665534c494e4700000000000000000000000000000000000000000000000000