0 txs
7 calls
constructor
No constructor.
functions
admin
viewfunction admin() view returns (address)
factory
viewfunction factory() view returns (address)
futureAdmin
viewfunction futureAdmin() view returns (address)
getTokens
viewfunction getTokens() view returns (address[])
isKilled
viewfunction isKilled() view returns (uint256)
lastCheckpointTotalSupplyTime
viewfunction lastCheckpointTotalSupplyTime() view returns (uint256)
lastTokenTime
viewfunction lastTokenTime(address) view returns (uint256)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
startTime
viewfunction startTime(address) view returns (uint256)
timeCursor
viewfunction timeCursor() view returns (uint256)
timeCursorOf
viewfunction timeCursorOf(address, address) view returns (uint256)
tokenFlags
viewfunction tokenFlags(address) view returns (uint256)
tokenLastBalance
viewfunction tokenLastBalance(address) view returns (uint256)
tokens
viewfunction tokens(uint256) view returns (address)
tokensPerWeek
viewfunction tokensPerWeek(address, uint256) view returns (uint256)
userEpochOf
viewfunction userEpochOf(address, address) view returns (uint256)
veForAt
viewfunction veForAt(address user_, uint256 timestamp_) view returns (uint256)
veSupply
viewfunction veSupply(uint256) view returns (uint256)
votingEscrow
viewfunction votingEscrow() view returns (address)
WEEK
viewfunction WEEK() view returns (uint256)
addRewardToken
nonpayablefunction addRewardToken(address coin_) returns (bool)
applyTransferOwnership
nonpayablefunction applyTransferOwnership()
checkpointToken
nonpayablefunction checkpointToken(address token_)
checkpointTotalSupply
nonpayablefunction checkpointTotalSupply()
claim
nonpayablefunction claim(address addr_, address token_) returns (uint256)
claim
nonpayablefunction claim(address token_) returns (uint256)
claimMany
nonpayablefunction claimMany(address[20] receivers_, address token_) returns (bool)
claimMultipleTokens
nonpayablefunction claimMultipleTokens(address addr_, address[20] tokens_) returns (bool)
commitTransferOwnership
nonpayablefunction commitTransferOwnership(address addr_)
initialize
nonpayablefunction initialize(address votingEscrow_, address factory_, uint256 startTime_)
killMe
nonpayablefunction killMe()
recoverBalance
nonpayablefunction recoverBalance(address coin_) returns (bool)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
AddedToken
event AddedToken(address indexed token)
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
ApplyOwnership
event ApplyOwnership(address admin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
CheckpointToken
event CheckpointToken(address indexed token, uint256 time, uint256 tokens)
Claimed
event Claimed(address indexed recipient, uint256 amount, uint256 claimEpoch, uint256 maxEpoch)
CommitOwnership
event CommitOwnership(address admin)
Initialized
event Initialized(uint8 version)
Upgraded
event Upgraded(address indexed implementation)
errors
No errors.
creation bytecode
0x60a06040523060805234801561001457600080fd5b506080516140d861004c60003960008181611041015281816110d701528181611345015281816113db015261150001526140d86000f3fe60806040526004361061021c5760003560e01c806368662ea01161011d578063c45a0155116100b0578063e1d2bf691161007f578063f364824111610064578063f364824114610679578063f4359ce514610699578063f851a440146106b057600080fd5b8063e1d2bf6914610636578063e855dd071461066357600080fd5b8063c45a0155146105b4578063c50d400d146105d4578063df0ab9d314610601578063e1cebf0b1461061657600080fd5b80638fe8a101116100ec5780638fe8a10114610547578063a186dc081461055d578063aa6ca8081461057d578063b603cd801461059f57600080fd5b806368662ea0146104b75780636e1dc66e146104d75780637d933227146105045780638736659b1461053157600080fd5b80633659cfe6116101b05780634f1ef2861161017f5780634f64b2be116101645780634f64b2be1461046257806352d1902d146104825780636089627f1461049757600080fd5b80634f1ef2861461042f5780634f2bfe5b1461044257600080fd5b80633659cfe61461037f57806338b74b471461039f5780633902b9bc146103d75780634cb654af146103f757600080fd5b80631c03e6cc116101ec5780631c03e6cc146102fa5780631e83409a1461032a57806321c0b3421461034a578063326a94071461036a57600080fd5b8062d440c114610228578063071cb5ad146102735780630f6592ef146102ab5780631794bb3c146102d857600080fd5b3661022357005b600080fd5b34801561023457600080fd5b50610260610243366004613a1e565b60a060209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561027f57600080fd5b5061026061028e366004613a48565b609d60209081526000928352604080842090915290825290205481565b3480156102b757600080fd5b506102606102c6366004613a7b565b60a56020526000908152604090205481565b3480156102e457600080fd5b506102f86102f3366004613a94565b6106d0565b005b34801561030657600080fd5b5061031a610315366004613ad0565b610968565b604051901515815260200161026a565b34801561033657600080fd5b50610260610345366004613ad0565b610bf4565b34801561035657600080fd5b50610260610365366004613a48565b610e0f565b34801561037657600080fd5b506102f861102d565b34801561038b57600080fd5b506102f861039a366004613ad0565b611037565b3480156103ab57600080fd5b506102606103ba366004613a48565b609c60209081526000928352604080842090915290825290205481565b3480156103e357600080fd5b506102f86103f2366004613ad0565b6111d4565b34801561040357600080fd5b50606654610417906001600160a01b031681565b6040516001600160a01b03909116815260200161026a565b6102f861043d366004613b69565b61133b565b34801561044e57600080fd5b5060a154610417906001600160a01b031681565b34801561046e57600080fd5b5061041761047d366004613a7b565b6114c9565b34801561048e57600080fd5b506102606114f3565b3480156104a357600080fd5b5061031a6104b2366004613ca2565b6115b8565b3480156104c357600080fd5b5061031a6104d2366004613ad0565b6118a2565b3480156104e357600080fd5b506102606104f2366004613ad0565b609f6020526000908152604090205481565b34801561051057600080fd5b5061026061051f366004613ad0565b609e6020526000908152604090205481565b34801561053d57600080fd5b50610260609a5481565b34801561055357600080fd5b5061026060a65481565b34801561056957600080fd5b5061031a610578366004613cce565b611ac4565b34801561058957600080fd5b50610592611d41565b60405161026a9190613cfb565b3480156105ab57600080fd5b506102f8611da3565b3480156105c057600080fd5b50609954610417906001600160a01b031681565b3480156105e057600080fd5b506102606105ef366004613ad0565b60a36020526000908152604090205481565b34801561060d57600080fd5b506102f8611ea5565b34801561062257600080fd5b506102f8610631366004613ad0565b611fc5565b34801561064257600080fd5b50610260610651366004613ad0565b60a46020526000908152604090205481565b34801561066f57600080fd5b50610260609b5481565b34801561068557600080fd5b50610260610694366004613a1e565b612085565b3480156106a557600080fd5b5061026062093a8081565b3480156106bc57600080fd5b50606554610417906001600160a01b031681565b600054610100900460ff16158080156106f05750600054600160ff909116105b8061070a5750303b15801561070a575060005460ff166001145b6107815760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156107df57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6107e761221a565b6107ef61229f565b600062093a806107ff8185613d6b565b6108099190613da6565b7fa705961f203609058950cfd817eb7a7627c9e270651c936aad3abdfa253727ec8190557fedae58bba15aea52a58242ef195db2cc4de2b75de265dbb0d58482df22a95978819055609a555060a2805460018082019092557faaf4f58de99300cfadc4585755f376d5fa747d5bc561d5bd9d710de1f91bf42d0180547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169091556000805260a36020527f69b4e8f94ad9e612080e13aad01219472d8c2c7ae7aa6cdf175400ddc8c4ed3d9190915560a1805482166001600160a01b038781169190911790915560998054909216908516179055801561096257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6065546000906001600160a01b0316331480610a0457506099546040517f1d59410a0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690631d59410a90602401602060405180830381865afa1580156109e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a049190613dbd565b610a505760405162461bcd60e51b815260206004820152600c60248201527f556e617574686f72697a656400000000000000000000000000000000000000006044820152606401610778565b6001600160a01b038216610aa65760405162461bcd60e51b815260206004820152601960248201527f45544820697320616c72656164792072656769737465726564000000000000006044820152606401610778565b6001600160a01b038216600090815260a3602052604090205415610b0c5760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e20697320616c7265616479207265676973746572656400000000006044820152606401610778565b6001600160a01b0382166000908152609e60205260409020429081905562093a8090610b39908290613d6b565b610b439190613da6565b6001600160a01b0383166000818152609f602090815260408083209490945560a3905282812060019081905560a28054918201815582527faaf4f58de99300cfadc4585755f376d5fa747d5bc561d5bd9d710de1f91bf42d0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001683179055915190917f4bbe03be846191383bf3fc4e9dcdc8312ef44d20eec28c2370c51603ba6f80a691a25060015b919050565b6000610bfe612324565b60a65415610c4e5760405162461bcd60e51b815260206004820152601260248201527f436f6e7472616374206973206b696c6c656400000000000000000000000000006044820152606401610778565b6001600160a01b038216600090815260a36020526040902054600114610cb65760405162461bcd60e51b815260206004820152601460248201527f546f6b656e206e6f7420726567697374657265640000000000000000000000006044820152606401610778565b609a5433904210610cc957610cc961237d565b6001600160a01b038381166000908152609e602052604081205460a15462093a809182900490910292610d01918591889116856124bd565b90508015610e01576001600160a01b038516600090815260a4602052604081208054839290610d31908490613ddf565b90915550506001600160a01b038516610ded576000836001600160a01b03168260405160006040518083038185875af1925050503d8060008114610d91576040519150601f19603f3d011682016040523d82523d6000602084013e610d96565b606091505b5050905080610de75760405162461bcd60e51b815260206004820152600f60248201527f5472616e73666572206661696c656400000000000000000000000000000000006044820152606401610778565b50610e01565b610e016001600160a01b0386168483612ad2565b92505050610bef6001606755565b6000610e19612324565b60a65415610e695760405162461bcd60e51b815260206004820152601260248201527f436f6e7472616374206973206b696c6c656400000000000000000000000000006044820152606401610778565b6001600160a01b038216600090815260a36020526040902054600114610ed15760405162461bcd60e51b815260206004820152601460248201527f546f6b656e206e6f7420726567697374657265640000000000000000000000006044820152606401610778565b609a544210610ee257610ee261237d565b6001600160a01b038281166000908152609e602052604081205460a15462093a809182900490910292610f1a918791879116856124bd565b9050801561101a576001600160a01b038416600090815260a4602052604081208054839290610f4a908490613ddf565b90915550506001600160a01b038416611006576000856001600160a01b03168260405160006040518083038185875af1925050503d8060008114610faa576040519150601f19603f3d011682016040523d82523d6000602084013e610faf565b606091505b50509050806110005760405162461bcd60e51b815260206004820152600f60248201527f5472616e73666572206661696c656400000000000000000000000000000000006044820152606401610778565b5061101a565b61101a6001600160a01b0385168683612ad2565b9150506110276001606755565b92915050565b61103561237d565b565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036110d55760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610778565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166111307f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146111ac5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152608401610778565b6111b581612b5e565b604080516000808252602082019092526111d191839190612bb8565b50565b6065546001600160a01b031633148061126d57506099546040517f1d59410a0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690631d59410a90602401602060405180830381865afa158015611249573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126d9190613dbd565b6112b95760405162461bcd60e51b815260206004820152600c60248201527f556e617574686f72697a656400000000000000000000000000000000000000006044820152606401610778565b6001600160a01b038116600090815260a360205260409020546001146113215760405162461bcd60e51b815260206004820152601460248201527f546f6b656e206e6f7420726567697374657265640000000000000000000000006044820152606401610778565b609a5442106113325761133261237d565b6111d181612d76565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036113d95760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610778565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166114347f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146114b05760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152608401610778565b6114b982612b5e565b6114c582826001612bb8565b5050565b60a281815481106114d957600080fd5b6000918252602090912001546001600160a01b0316905081565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115935760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610778565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b60006115c2612324565b60a654156116125760405162461bcd60e51b815260206004820152601260248201527f436f6e7472616374206973206b696c6c656400000000000000000000000000006044820152606401610778565b6001600160a01b0383166116685760405162461bcd60e51b815260206004820152601760248201527f416464726573732073686f756c64206e6f74207a65726f0000000000000000006044820152606401610778565b609a5442106116795761167961237d565b601460005b818110156118925760a3600085836014811061169c5761169c613df2565b60200201516001600160a01b03166001600160a01b03168152602001908152602001600020546001146117115760405162461bcd60e51b815260206004820152601460248201527f546f6b656e206e6f7420726567697374657265640000000000000000000000006044820152606401610778565b600084826014811061172557611725613df2565b602090810291909101516001600160a01b0381166000908152609e90925260409091205490915062093a8061175a8183613d6b565b6117649190613da6565b60a15490915060009061178490899085906001600160a01b0316856124bd565b90508015611884576001600160a01b038316600090815260a46020526040812080548392906117b4908490613ddf565b90915550506001600160a01b038316611870576000886001600160a01b03168260405160006040518083038185875af1925050503d8060008114611814576040519150601f19603f3d011682016040523d82523d6000602084013e611819565b606091505b505090508061186a5760405162461bcd60e51b815260206004820152600f60248201527f5472616e73666572206661696c656400000000000000000000000000000000006044820152606401610778565b50611884565b6118846001600160a01b0384168983612ad2565b83600101935050505061167e565b5060019150506110276001606755565b6065546000906001600160a01b031633146118ff5760405162461bcd60e51b815260206004820152600a60248201527f61646d696e206f6e6c79000000000000000000000000000000000000000000006044820152606401610778565b6001600160a01b038216600090815260a360205260409020546001146119675760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f74207265636f766572207468697320746f6b656e000000000000006044820152606401610778565b6001600160a01b038216611a1e576065546040516000916001600160a01b03169047908381818185875af1925050503d80600081146119c2576040519150601f19603f3d011682016040523d82523d6000602084013e6119c7565b606091505b5050905080611a185760405162461bcd60e51b815260206004820152600f60248201527f5472616e73666572206661696c656400000000000000000000000000000000006044820152606401610778565b50611abc565b6065546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152611abc916001600160a01b0390811691908516906370a0823190602401602060405180830381865afa158015611a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aab9190613e21565b6001600160a01b0385169190612ad2565b506001919050565b6000611ace612324565b60a65415611b1e5760405162461bcd60e51b815260206004820152601260248201527f436f6e7472616374206973206b696c6c656400000000000000000000000000006044820152606401610778565b6001600160a01b038216600090815260a36020526040902054600114611b865760405162461bcd60e51b815260206004820152601460248201527f546f6b656e206e6f7420726567697374657265640000000000000000000000006044820152606401610778565b609a544210611b9757611b9761237d565b6001600160a01b0382166000908152609e602052604081205462093a809081900402906014815b81811015611cfb576000878260148110611bda57611bda613df2565b602002015190506001600160a01b038116611bf55750611cfb565b60a154600090611c129083908a906001600160a01b0316896124bd565b90508015611cf157611c248186613e3a565b94506001600160a01b038816611cdd576000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611c81576040519150601f19603f3d011682016040523d82523d6000602084013e611c86565b606091505b5050905080611cd75760405162461bcd60e51b815260206004820152600f60248201527f5472616e73666572206661696c656400000000000000000000000000000000006044820152606401610778565b50611cf1565b611cf16001600160a01b0389168383612ad2565b5050600101611bbe565b508115611d30576001600160a01b038516600090815260a4602052604081208054849290611d2a908490613ddf565b90915550505b600193505050506110276001606755565b606060a2805480602002602001604051908101604052809291908181526020018280548015611d9957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611d7b575b5050505050905090565b6065546001600160a01b03163314611dfd5760405162461bcd60e51b815260206004820152600a60248201527f61646d696e206f6e6c79000000000000000000000000000000000000000000006044820152606401610778565b600160a6556065546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611e4f576040519150601f19603f3d011682016040523d82523d6000602084013e611e54565b606091505b50509050806111d15760405162461bcd60e51b815260206004820152600f60248201527f5472616e73666572206661696c656400000000000000000000000000000000006044820152606401610778565b6065546001600160a01b03163314611eff5760405162461bcd60e51b815260206004820152600a60248201527f61646d696e206f6e6c79000000000000000000000000000000000000000000006044820152606401610778565b6066546001600160a01b031680611f585760405162461bcd60e51b815260206004820152600d60248201527f61646d696e206e6f7420736574000000000000000000000000000000000000006044820152606401610778565b606580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a1189105906020015b60405180910390a150565b6065546001600160a01b0316331461201f5760405162461bcd60e51b815260206004820152600a60248201527f61646d696e206f6e6c79000000000000000000000000000000000000000000006044820152606401610778565b606680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e990602001611fba565b60a1546040517f81fc83bb0000000000000000000000000000000000000000000000000000000081526001600160a01b0384811660048301526000921690829082906381fc83bb90602401602060405180830381865afa1580156120ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121119190613e21565b905060006121218387878561312e565b6040517f34d901a40000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152602482018390529192506000918516906334d901a490604401608060405180830381865afa15801561218d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b19190613e5f565b905060008160400151876121c59190613ddf565b82602001516121d49190613ed1565b82516121e09190613ef8565b9050600081600f0b12156121fc57600095505050505050611027565b6fffffffffffffffffffffffffffffffff1694506110279350505050565b600054610100900460ff166122975760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610778565b61103561320d565b600054610100900460ff1661231c5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610778565b6110356132b6565b6002606754036123765760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610778565b6002606755565b60a154609a546001600160a01b0390911690600062093a8061239f8142613d6b565b6123a99190613da6565b9050826001600160a01b031663c2c4c5c16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156123e657600080fd5b505af11580156123fa573d6000803e3d6000fd5b505050506000808311801561240e57508282115b1561241d575062093a80828203045b601481106124405761243362093a806013613da6565b61243d9083613ddf565b92505b600062093a80609a5411612455576000612466565b62093a80609a546124669190613ddf565b905080609b540361247b5761247b8582613333565b60005b60148110156124af578385116124af576124988686613333565b6124a562093a8086613e3a565b945060010161247e565b505042609b555050609a5550565b6000806040518060e001604052806000815260200160008152602001856001600160a01b03166381fc83bb896040518263ffffffff1660e01b815260040161251491906001600160a01b0391909116815260200190565b602060405180830381865afa158015612531573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125559190613e21565b81526001600160a01b0387166000908152609f602090815260409182902054908301520162093a806125878142613d6b565b6125919190613da6565b81526020810185905260400162093a80806125ac8188613e3a565b6125b69190613d6b565b6125c09190613da6565b81525090508060c001518160800151106125df5760c081015160a08201525b80604001516000036125f5576000915050612aca565b6001600160a01b038087166000908152609c60209081526040808320938916835292905290812054908190036126405761263985888460600151856040015161312e565b8252612669565b6001600160a01b038088166000908152609d60209081526040808320938a168352929052205482525b815160000361267757600182525b81516040517f34d901a40000000000000000000000000000000000000000000000000000000081526001600160a01b03898116600483015260248201929092526000918716906334d901a490604401608060405180830381865afa1580156126e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127079190613e5f565b90508160000361274c5762093a8080600162093a80846040015161272b9190613e3a565b6127359190613ddf565b61273f9190613d6b565b6127499190613da6565b91505b8260a0015182106127635760009350505050612aca565b826060015182101561277757826060015191505b6040805160808101825260008082526020820181905291810182905260608101829052905b6032811015612a16578460a00151841015612a1657826040015184101580156127ca57506040850151855111155b156128e657845185906127dc90613f46565b9052604080516080810182528451600f90810b825260208087015190910b9082015284820151818301526060808601519082015290860151865191935010156128515760405180608001604052806000600f0b81526020016000600f0b81526020016000815260200160008152509250612a0e565b84516040517f34d901a40000000000000000000000000000000000000000000000000000000081526001600160a01b038c811660048301526024820192909252908916906334d901a490604401608060405180830381865afa1580156128bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128df9190613e5f565b9250612a0e565b600060405180606001604052808460400151876129039190613f7e565b815260200160008152602001600081525090508260200151600f0b816000015161292d9190613f9e565b835161293c9190600f0b613f7e565b602082018190526000131561295357600060208201525b6020810151158015612969575060408601518651115b156129745750612a16565b600081602001511380156129955750600085815260a5602052604090205415155b156129fd576001600160a01b038a16600090815260a06020908152604080832088845282528083205484820190815288845260a583529220549151908301516129de9190613da6565b6129e89190613d6b565b866020018181516129f99190613e3a565b9052505b612a0a62093a8086613e3a565b9450505b60010161279c565b50612a35846040015160018660000151612a309190613ddf565b613455565b8085526001600160a01b038a81166000818152609d60209081526040808320948e1680845294825280832095909555828252609c8152848220938252928352839020869055818701518751848901518551928352938201528084019290925291517f9cdcf2f7714cca3508c7f0110b04a90a80a3a8dd0e35de99689db74d28c5383e9181900360600190a25050506020015190505b949350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052612b5290849061346d565b505050565b6001606755565b6065546001600160a01b031633146111d15760405162461bcd60e51b815260206004820152600a60248201527f61646d696e206f6e6c79000000000000000000000000000000000000000000006044820152606401610778565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612beb57612b5283613555565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612c63575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612c6091810190613e21565b60015b612cd55760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610778565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8114612d6a5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610778565b50612b5283838361362b565b60006001600160a01b038216612d8d575047612e11565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015612dea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0e9190613e21565b90505b6001600160a01b038216600090815260a46020526040812054612e349083613ddf565b6001600160a01b038416600090815260a460209081526040808320869055609e909152812054919250612e678242613ddf565b90506000612e7862093a8042613d6b565b90506000612e8962093a8085613d6b565b612e939083613ddf565b90508015612ee65762093a8080612eaa8187613e3a565b612eb49190613d6b565b612ebe9190613da6565b9350612eca8442613ddf565b9250612ed962093a8085613d6b565b612ee39083613ddf565b90505b60148110612f2b5762093a8080612efe816013613da6565b612f089042613ddf565b612f129190613d6b565b612f1c9190613da6565b9350612f288442613ddf565b92505b6001600160a01b0387166000908152609e6020526040812042905562093a80612f548187613d6b565b612f5e9190613da6565b90506000805b60148110156130de57612f7a62093a8084613e3a565b9150814210156130265785158015612f9157508642145b15612fd4576001600160a01b038a16600090815260a060209081526040808320868452909152812080548a9290612fc9908490613e3a565b909155506130de9050565b85612fdf8842613ddf565b612fe9908a613da6565b612ff39190613d6b565b6001600160a01b038b16600090815260a06020908152604080832087845290915281208054909190612fc9908490613e3a565b8515801561303357508682145b15613076576001600160a01b038a16600090815260a060209081526040808320868452909152812080548a929061306b908490613e3a565b909155506130ce9050565b856130818884613ddf565b61308b908a613da6565b6130959190613d6b565b6001600160a01b038b16600090815260a060209081526040808320878452909152812080549091906130c8908490613e3a565b90915550505b9095508591508190600101612f64565b5060408051428152602081018990526001600160a01b038b16917f6df0a5bed078180e2881e76873c40450711146fa6156da26b23f6eb7d2de8735910160405180910390a2505050505050505050565b60008082815b60808110156132015781831015613201576040517f34d901a40000000000000000000000000000000000000000000000000000000081526001600160a01b038881166004830152600284860181010460248301819052916000918b16906334d901a490604401608060405180830381865afa1580156131b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131db9190613e5f565b9050878160400151116131f0578194506131f7565b6001820393505b5050600101613134565b50909695505050505050565b600054610100900460ff1661328a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610778565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055565b600054610100900460ff16612b575760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610778565b600061333f8383613650565b6040517f8ad4c447000000000000000000000000000000000000000000000000000000008152600481018290529091506000906001600160a01b03851690638ad4c44790602401608060405180830381865afa1580156133a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133c79190613e5f565b9050600081604001518411156133e95760408201516133e69085613f7e565b90505b60008183602001516133fb9190613ed1565b83516134079190613ef8565b9050600081600f0b121561342957600085815260a5602052604081205561344d565b600085815260a5602052604090206fffffffffffffffffffffffffffffffff821690555b505050505050565b60008183106134645781613466565b825b9392505050565b60006134c2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661378b9092919063ffffffff16565b90508051600014806134e35750808060200190518101906134e39190613dbd565b612b525760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610778565b6001600160a01b0381163b6135d25760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610778565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6136348361379a565b6000825111806136415750805b15612b525761096283836137da565b6000806000846001600160a01b031663900cf0cf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613693573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136b79190613e21565b905060005b60808110156137815781831015613781576040517f8ad4c447000000000000000000000000000000000000000000000000000000008152600283850181010460048201819052906000906001600160a01b03891690638ad4c44790602401608060405180830381865afa158015613737573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061375b9190613e5f565b90508681604001511161377057819450613777565b6001820393505b50506001016136bc565b5090949350505050565b6060612aca84846000856137ff565b6137a381613555565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060613466838360405180606001604052806027815260200161407c602791396138f1565b6060824710156138775760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610778565b600080866001600160a01b03168587604051613893919061400e565b60006040518083038185875af1925050503d80600081146138d0576040519150601f19603f3d011682016040523d82523d6000602084013e6138d5565b606091505b50915091506138e687838387613969565b979650505050505050565b6060600080856001600160a01b03168560405161390e919061400e565b600060405180830381855af49150503d8060008114613949576040519150601f19603f3d011682016040523d82523d6000602084013e61394e565b606091505b509150915061395f86838387613969565b9695505050505050565b606083156139d85782516000036139d1576001600160a01b0385163b6139d15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610778565b5081612aca565b612aca83838151156139ed5781518083602001fd5b8060405162461bcd60e51b8152600401610778919061402a565b80356001600160a01b0381168114610bef57600080fd5b60008060408385031215613a3157600080fd5b613a3a83613a07565b946020939093013593505050565b60008060408385031215613a5b57600080fd5b613a6483613a07565b9150613a7260208401613a07565b90509250929050565b600060208284031215613a8d57600080fd5b5035919050565b600080600060608486031215613aa957600080fd5b613ab284613a07565b9250613ac060208501613a07565b9150604084013590509250925092565b600060208284031215613ae257600080fd5b61346682613a07565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613b6157613b61613aeb565b604052919050565b60008060408385031215613b7c57600080fd5b613b8583613a07565b915060208084013567ffffffffffffffff80821115613ba357600080fd5b818601915086601f830112613bb757600080fd5b813581811115613bc957613bc9613aeb565b613bf9847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613b1a565b91508082528784828501011115613c0f57600080fd5b80848401858401376000848284010152508093505050509250929050565b600082601f830112613c3e57600080fd5b60405161028080820182811067ffffffffffffffff82111715613c6357613c63613aeb565b60405283018185821115613c7657600080fd5b845b82811015613c9757613c8981613a07565b825260209182019101613c78565b509195945050505050565b6000806102a08385031215613cb657600080fd5b613cbf83613a07565b9150613a728460208501613c2d565b6000806102a08385031215613ce257600080fd5b613cec8484613c2d565b9150613a726102808401613a07565b6020808252825182820181905260009190848201906040850190845b818110156132015783516001600160a01b031683529284019291840191600101613d17565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082613da1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b808202811582820484141761102757611027613d3c565b600060208284031215613dcf57600080fd5b8151801515811461346657600080fd5b8181038181111561102757611027613d3c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215613e3357600080fd5b5051919050565b8082018082111561102757611027613d3c565b8051600f81900b8114610bef57600080fd5b600060808284031215613e7157600080fd5b6040516080810181811067ffffffffffffffff82111715613e9457613e94613aeb565b604052613ea083613e4d565b8152613eae60208401613e4d565b602082015260408301516040820152606083015160608201528091505092915050565b600082600f0b82600f0b0280600f0b9150808214613ef157613ef1613d3c565b5092915050565b600f82810b9082900b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081126f7fffffffffffffffffffffffffffffff8213171561102757611027613d3c565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613f7757613f77613d3c565b5060010190565b8181036000831280158383131683831282161715613ef157613ef1613d3c565b808202600082127f800000000000000000000000000000000000000000000000000000000000000084141615613fd657613fd6613d3c565b818105831482151761102757611027613d3c565b60005b83811015614005578181015183820152602001613fed565b50506000910152565b60008251614020818460208701613fea565b9190910192915050565b6020815260008251806020840152614049816040850160208701613fea565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122068bda24ec4f83c2ca97b1182dc4ef855604c58da9bb898ab7eb556d1cf6c158464736f6c63430008130033