0 txs
11.5k calls
constructor
constructor()
functions
aethirStrategy
viewfunction aethirStrategy() view returns (address)
ATH
viewfunction ATH() view returns (address)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
delegationManager
viewfunction delegationManager() view returns (address)
depositCap
viewfunction depositCap() view returns (uint256)
eATH
viewfunction eATH() view returns (address)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getStakedAmountForUser
viewfunction getStakedAmountForUser(address user) view returns (uint256)
getTotalStakedInRewardData
viewfunction getTotalStakedInRewardData() view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isStakingEnabled
viewfunction isStakingEnabled() view returns (bool)
MAX_ACTIVATION_BATCH
viewfunction MAX_ACTIVATION_BATCH() view returns (uint256)
nextPreDepositActivationIndex
viewfunction nextPreDepositActivationIndex() view returns (uint256)
OPERATOR_ROLE
viewfunction OPERATOR_ROLE() view returns (bytes32)
paused
viewfunction paused() view returns (bool)
PAUSER_ROLE
viewfunction PAUSER_ROLE() view returns (bytes32)
pendingRewards
viewfunction pendingRewards(address user) view returns (uint256)
preDepositAmounts
viewfunction preDepositAmounts(address) view returns (uint256)
preDepositUsers
viewfunction preDepositUsers(uint256) view returns (address)
stakeBaseContract
viewfunction stakeBaseContract() view returns (address)
strategyManager
viewfunction strategyManager() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
totalATH
viewfunction totalATH() view returns (uint256)
totalDeposited
viewfunction totalDeposited() view returns (uint256)
totalEscrowed
viewfunction totalEscrowed() view returns (uint256)
userStrategyShares
viewfunction userStrategyShares(address) view returns (uint256)
vATH
viewfunction vATH() view returns (address)
vestingPeriod
viewfunction vestingPeriod() view returns (uint256)
withdrawalInfo
viewfunction withdrawalInfo(bytes32) view returns (address owner, uint256 principal, uint256 vestingEnd)
withdrawLock
viewfunction withdrawLock() view returns (bool)
activatePreDepositsBatch
payablefunction activatePreDepositsBatch(uint256 batchSize) payable
claimRewards
nonpayablefunction claimRewards()
claimRewardsFromStakeBase
payablefunction claimRewardsFromStakeBase() payable
completeUnstake
nonpayablefunction completeUnstake(bytes32 root, tuple withdrawal, address[] rewardTokens)
configureEigen
nonpayablefunction configureEigen(address strategyManagerAddress, address strategyAddress, address delegationManagerAddress)
deposit
payablefunction deposit(uint256 amount) payable
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
handleEATHBridgedIn
nonpayablefunction handleEATHBridgedIn(address user, uint256 amount, uint32 srcEid) returns (bool)
handleEATHBridgedOut
nonpayablefunction handleEATHBridgedOut(address user, uint256 amount, uint32 dstEid) returns (bool)
handleStakeBaseRewards
nonpayablefunction handleStakeBaseRewards(uint256 rewardAmount)
initialize
nonpayablefunction initialize(address ath_, address lzEndpointAddress_, uint32 chainAEid_, address factory_)
initiateUnstake
payablefunction initiateUnstake(uint256 amount) payable
onLocalEATHTransfer
nonpayablefunction onLocalEATHTransfer(address from, address to, uint256 amount)
pause
nonpayablefunction pause()
preDeposit
nonpayablefunction preDeposit(uint256 amount)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setDepositCap
nonpayablefunction setDepositCap(uint256 newCap)
setPeerOnEATH
nonpayablefunction setPeerOnEATH(uint32 _eid, bytes32 _peer)
setStakeBase
nonpayablefunction setStakeBase(address stakeBaseAddress)
setStakingEnabled
nonpayablefunction setStakingEnabled(bool enabled)
setVestingPeriod
nonpayablefunction setVestingPeriod(uint256 newPeriod)
setWithdrawLock
nonpayablefunction setWithdrawLock(bool _lockStatus)
unpause
nonpayablefunction unpause()
events
ActivatePreDeposit
event ActivatePreDeposit(address indexed user, uint256 amount)
Deposit
event Deposit(address indexed user, uint256 amount)
DepositCapChanged
event DepositCapChanged(uint256 newCap)
DepositToStrategy
event DepositToStrategy(address indexed user, uint256 amount, uint256 newShares)
EATHBridgedIn
event EATHBridgedIn(address indexed userArriving, uint256 amountBridged, uint32 sourceChainEid)
EATHBridgedOut
event EATHBridgedOut(address indexed userDeparting, uint256 amountBridged, uint32 destinationEid)
EATHPeerSet
event EATHPeerSet(uint32 indexed eid, bytes32 indexed peer)
EigenConfigured
event EigenConfigured(address indexed strategyManager, address indexed aethirStrategy, address indexed delegationManager)
EscrowUpdated
event EscrowUpdated(address indexed user, uint256 newAmount)
Initialized
event Initialized(uint64 version)
Paused
event Paused(address account)
PreDeposit
event PreDeposit(address indexed user, uint256 amount)
RewardClaimed
event RewardClaimed(address indexed user, uint256 amount)
RewardDistributed
event RewardDistributed(uint256 amount)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
StakeBaseDeposit
event StakeBaseDeposit(uint256 amountDeposited, uint256 feePaid)
StakeBaseSet
event StakeBaseSet(address indexed stakeBaseAddress)
StakingEnabledChanged
event StakingEnabledChanged(bool enabled)
Unpaused
event Unpaused(address account)
UnstakeInitiated
event UnstakeInitiated(address indexed user, uint256 amount, uint256 sharesToWithdrawFromEL)
VestingPeriodChanged
event VestingPeriodChanged(uint256 newPeriod)
Withdraw
event Withdraw(address indexed user, uint256 amountATHReceived, uint256 vATHBurned)
WithdrawalFromStrategyQueued
event WithdrawalFromStrategyQueued(address indexed user, uint256 requestedPrincipal, bytes32 indexed withdrawalRoot)
WithdrawLockChanged
event WithdrawLockChanged(bool newStatus)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
FailedCall
error FailedCall()
InsufficientBalance
error InsufficientBalance(uint256 balance, uint256 needed)
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x6080806040523460d2577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c1660c1576002600160401b03196001600160401b03821601605c575b6040516154a890816100d88239f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880604d565b63f92ee8a960e01b60005260046000fd5b600080fdfe6080604052600436101561001b575b361561001957600080fd5b005b6000803560e01c806301ef388714612c8b57806301ffc9a714612c34578063040a19cd14612bfb5780630d860a2014612aa15780630d97beca14612a0d57806315773931146129f157806316fcdd39146126e55780631f720d30146126bb578063248a9ca31461269c578063279869cb146126735780632f2ff15d146126415780633011113a146125d35780633142cdaa146125b557806331d7a2621461253857806336568abe146124f3578063372500ab1461243457806339b70e381461240b5780633f4ba83a1461238957806340bee0ed146122ea5780634c4848481461210d578063507acb33146120d4578063575dfd40146120ab578063588da243146120615780635c388ca61461203b5780635c975abb1461200b57806361de4a9d14611c0c57806366b191ce14611bc657806366c92cac14611ba857806369b3312614611b815780636effa5bd14611b4857806372d1acb414611a4d5780637313ee5a14611a2f5780638456cb59146119ba578063866512031461191d5780638d214897146118f457806391d148541461189b5780639a37270014611872578063a21311b81461182e578063a217fddf14611812578063ae5ac92114611156578063b52d64a714610b9e578063b5969bc614610b70578063b6b55f2514610a3c578063bce8567e14610a0a578063d547741f146109cf578063dbd5edc7146109b1578063e29a93701461098b578063e63ab1e914610950578063ea4d3c9b14610927578063ed1f266814610548578063f5b541a61461051f578063f743300c146102b7578063f9168231146102995763ff50abdc14610279575061000e565b346102965780600319360112610296576020600954604051908152f35b80fd5b50346102965780600319360112610296576020600a54604051908152f35b5034610296576020366003190112610296576004356102d46138a0565b60ff60065460a01c166104e7576102e9613876565b6102f4811515612f97565b6004546001600160a01b03161515806104d3575b1561048e5761032661031c82600954612ef2565b600854101561357e565b8154610340908290309033906001600160a01b0316614159565b60015482906001600160a01b0316803b1561047f576040516340c10f1960e01b8152336004820152602481018490529082908290604490829084905af180156104835761046a575b5050610394813361419d565b50338252600b602052604082205415610411575b338252600b602052604082206103bf828254612ef2565b90556103cd81600954612ef2565b6009556040519081527f7542e270a6dea2826d8ce7852e0198bd51345033a724c18a3e3334e22c08e67460203392a260016000805160206154338339815191525580f35b600c5468010000000000000000811015610456578060016104359201600c55612de7565b81546001600160a01b0360039290921b91821b19163390911b1790556103a8565b634e487b7160e01b83526041600452602483fd5b8161047491612ed0565b61047f578138610388565b5080fd5b6040513d84823e3d90fd5b60405162461bcd60e51b815260206004820152601e60248201527f4154485661756c743a20456967656e206e6f7420636f6e6669677572656400006044820152606490fd5b506005546001600160a01b03161515610308565b60405162461bcd60e51b815260206004820152601060248201526f10551215985d5b1d0e8818db1bdcd95960821b6044820152606490fd5b503461029657806003193601126102965760206040516000805160206153d38339815191528152f35b503461029657608036600319011261029657610562612d70565b61056a612d86565b6044359063ffffffff8216809203610923576064356001600160a01b038116929083900361091f57600080516020615453833981519152549360ff8560401c16159467ffffffffffffffff811680159081610917575b600114908161090d575b159081610904575b506108f55767ffffffffffffffff19811660011760008051602061545383398151915255856108c8575b506001600160a01b0316918215610883576001600160a01b031691821561083e576020926101249161062c61452f565b61063461452f565b61063c61452f565b60016000805160206154338339815191525561065733613ba3565b5061066133613c43565b5061066b33613ced565b5061067461452f565b6001600160601b0360a01b885416178755866040519586948593630436be0360e21b855260a06004860152600860a48601526708ad2cecadc82a8960c31b60c486015260e06024860152600460e4860152630ca82a8960e31b610104860152604485015230606485015260848401525af19081156108335783916107ed575b5060018060a01b03166001600160601b0360a01b6001541617600155604051610e558082019082821067ffffffffffffffff8311176107d95790829161455e8339039083f0801561048357600280546001600160a01b0319166001600160a01b03929092169190911790556000196008556006805460ff60a81b1916905562278d0060075561077f5780f35b68ff0000000000000000196000805160206154538339815191525416600080516020615453833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a180f35b634e487b7160e01b85526041600452602485fd5b90506020813d60201161082b575b8161080860209383612ed0565b8101031261082757516001600160a01b038116810361082757386106f3565b8280fd5b3d91506107fb565b6040513d85823e3d90fd5b60405162461bcd60e51b815260206004820152601a60248201527f4154485661756c743a207a65726f204c5a20656e64706f696e740000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f4154485661756c743a207a65726f2041544820746f6b656e00000000000000006044820152606490fd5b68ffffffffffffffffff1916680100000000000000011760008051602061545383398151915255386105fc565b63f92ee8a960e01b8752600487fd5b905015386105d2565b303b1591506105ca565b8791506105c0565b8480fd5b8380fd5b50346102965780600319360112610296576006546040516001600160a01b039091168152602090f35b503461029657806003193601126102965760206040517f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8152f35b5034610296578060031936011261029657602060ff60065460a01c166040519015158152f35b50346102965780600319360112610296576020600854604051908152f35b503461029657604036600319011261029657610a066004356109ef612d86565b90610a016109fc826131c6565b61382c565b613e40565b5080f35b503461029657602036600319011261029657600435801515810361047f57610a3990610a34613767565b6135c2565b80f35b50602036600319011261029657600435610a546138a0565b610a6560ff60065460a01c16612e18565b610a70341515612e59565b610a78613876565b610a83811515612f97565b610a9261031c82600954612ef2565b8154610aac908290309033906001600160a01b0316614159565b610ab6813361419d565b5060015482906001600160a01b0316803b1561047f576040516340c10f1960e01b8152336004820152602481018490529082908290604490829084905af1801561048357610b5b575b5050610b0b34826138dc565b610b1781600954612ef2565b6009556040519081527fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c60203392a260016000805160206154338339815191525580f35b81610b6591612ed0565b61047f578138610aff565b503461029657606036600319011261029657610a39610b8d612d70565b610b95612d86565b604435916134cb565b50346102965760603660031901126102965760243560043567ffffffffffffffff8211610827578160040160e06003198436030112610923576044359267ffffffffffffffff841161091f573660238501121561091f5783600401359367ffffffffffffffff8511611152573660248660051b8301011161115257610c216138a0565b610c4960ff600654610c37828260a01c16612e18565b610c3f613876565b60a81c161561344a565b838652600e602052604086209460405195610c6387612e9e565b80546001600160a01b03168088526001820154602089019081526002909201546040909801978852330361110357519586156110a15751421061104e576024948752600e602052866002604082208281558260018201550155602060018060a01b03885416604051968780926370a0823160e01b82523060048301525afa94851561104357879561100f575b506006546001600160a01b031692833b1561100b57604051630e4cc3f960e41b815260606004820152946101448601916001600160a01b03610d3083612d9c565b1660648801526001600160a01b03610d4a60248301612d9c565b1660848801526001600160a01b03610d6460448301612d9c565b1660a4880152606481013560c4880152608481013563ffffffff81168103610f7e5763ffffffff1660e4880152610d9e60a4820183613496565b60e06101048a0152938490526101648801938b905b808210610fdd575050509060c4610dcb920190613496565b86830360631901610124880152808352906001600160fb1b038211610fd9576040908a979695949360249360051b8092602083013701836020820160031960208a85030101858a01525201920190855b818110610fab57505050839183838180946001604483015203925af1801561048357610f96575b505082546040516370a0823160e01b81523060048201529190602090839060249082906001600160a01b03165afa8015610f8b578490610f52575b610e879250612f48565b60025490919083906001600160a01b0316803b1561047f5760405163079cc67960e41b8152306004820152602481018490529082908290604490829084905af1801561048357610f3d575b505081610f20575b60405191825260208201527ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56860403392a260016000805160206154338339815191525580f35b8254610f3890839033906001600160a01b0316613f2e565b610eda565b81610f4791612ed0565b610827578238610ed2565b506020823d602011610f83575b81610f6c60209383612ed0565b81010312610f7e57610e879151610e7d565b600080fd5b3d9150610f5f565b6040513d86823e3d90fd5b81610fa091612ed0565b610827578238610e42565b919394955091602080600192838060a01b03610fc688612d9c565b1681520194019101918895949392610e1b565b8980fd5b90919485359060018060a01b03821680920361100757602081600193829352019601920190610db3565b8d80fd5b8780fd5b9094506020813d60201161103b575b8161102b60209383612ed0565b81010312610f7e57519338610cef565b3d915061101e565b6040513d89823e3d90fd5b60405162461bcd60e51b815260206004820152602560248201527f4154485661756c743a2056657374696e6720706572696f64206e6f7420636f6d604482015264706c65746560d81b6064820152608490fd5b60405162461bcd60e51b815260206004820152603460248201527f4154485661756c743a204e6f207072696e636970616c20666f7220726f6f74206044820152731bdc88185b1c9958591e481c1c9bd8d95cdcd95960621b6064820152608490fd5b60405162461bcd60e51b815260206004820152602160248201527f4154485661756c743a206e6f7420454c207769746864726177616c206f776e656044820152603960f91b6064820152608490fd5b8580fd5b5060203660031901126102965760246004356111706138a0565b61119160ff600654611186828260a01c16612e18565b610c37341515612e59565b61119c811515612f97565b6001546040516370a0823160e01b81523360048201529260209184919082906001600160a01b03165afa9182156108335783926117de575b508082106117a1578291338352600f6020526040832054839181151580611798575b61176d575b50811590828215611750575b50506001546001600160a01b0316803b1561091f57604051632770a7eb60e21b8152336004820152602481018590529085908290604490829084905af190811561173057859161173b575b505061126083600954612f48565b6009556040518381528260208201527f9cee5eacd317086e5050733a5dad16ef5aaec185de792371a9625bfee2a3213b60403392a26003546001600160a01b0316803b1561091f578460249160405192838092634c437ccd60e11b825288600483015234905af1908115611730578591611716575b5050156113b857506002546001600160a01b0316803b156113b45760405163079cc67960e41b8152306004820152602481018390529083908290604490829084905af190811561083357839161139c575b50506040518281528160208201527ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56860403392a26040519081527f06bbd14117b91f94392157fdcc9b82952171b5c9514c7398e1686b8398aa717f60203392a35b60016000805160206154338339815191525580f35b816113a691612ed0565b6113b1578138611326565b50fd5b5050fd5b91506040918251906113ca8483612ed0565b60018252601f198401855b8181106116ed57508451916113ea8684612ed0565b60018352813660208501378551916114028784612ed0565b600183523660208401376005546001600160a01b031661142184613489565b5261142b82613489565b5284519161143883612e9e565b82526020820152848482015261144d82613489565b5261145781613489565b508360018060a01b03600654169184519283916306ec6e8160e11b8352602483016020600485015281518091526044840190602060448260051b87010193019186905b82821061161d57505050508383809203925af1801561161057849061155a575b61152991506114cb60075442612ef2565b60028551916114d983612e9e565b338352602083018681528784019182526114f285613489565b518952600e602052878920935184546001600160a01b0319166001600160a01b039190911617845551600184015551910155613489565b5191519081527f06bbd14117b91f94392157fdcc9b82952171b5c9514c7398e1686b8398aa717f60203392a3611387565b503d8085833e61156a8183612ed0565b81019060208183031261091f5780519067ffffffffffffffff821161115257019080601f8301121561091f5781519167ffffffffffffffff83116115fc578260051b9060208201936115be87519586612ed0565b84526020808501928201019283116115f857602001905b8282106115e857505050611529906114ba565b81518152602091820191016115d5565b8680fd5b634e487b7160e01b86526041600452602486fd5b50505051903d90823e3d90fd5b92955092909395506043198782030182528451908960608201928c815194606085528551809152602060808601960191905b8082106116c7575050508c602082015194848103602086015260208087519283815201960191905b8082106116aa575050508101516001600160a01b031691015289958795909491936020918201936001909101910161149a565b825187526020968701968f95509092019160019190910190611677565b82516001600160a01b031687526020968701968f9550909201916001919091019061164f565b60209086516116fb81612e9e565b606081526060838201528888820152828287010152016113d5565b8161172091612ed0565b61172b5783386112d5565b505050fd5b6040513d87823e3d90fd5b8161174591612ed0565b61172b578338611252565b61175991612f48565b338552600f60205260408520553882611207565b91506117828261177d8386612f35565b612f15565b918314611790575b386111fb565b90508061178a565b508015156111f6565b60405162461bcd60e51b8152602060048201526015602482015274082a890acc2ead8e87440d2dce6eacccc40ca82a89605b1b6044820152606490fd5b9091506020813d60201161180a575b816117fa60209383612ed0565b81010312610f7e575190386111d4565b3d91506117ed565b5034610296578060031936011261029657602090604051908152f35b50346102965760203660031901126102965760043590600c5482101561029657602061185983612de7565b905460405160039290921b1c6001600160a01b03168152f35b50346102965780600319360112610296576001546040516001600160a01b039091168152602090f35b50346102965760403660031901126102965760406118b7612d86565b9160043581526000805160206153f3833981519152602052209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b50346102965780600319360112610296576005546040516001600160a01b039091168152602090f35b50346102965760203660031901126102965760043561193a613767565b6009548110611975576020817f2bc390be6d76c38a7a1e46eb6629b370c4cd792e13afd099527cbce28c5ecf7792600855604051908152a180f35b60405162461bcd60e51b815260206004820152601760248201527f4154485661756c743a20636170203c2063757272656e740000000000000000006044820152606490fd5b50346102965780600319360112610296576119d36137ba565b6119db613876565b600160ff19600080516020615413833981519152541617600080516020615413833981519152557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a180f35b50346102965780600319360112610296576020600754604051908152f35b50346102965760403660031901126102965760043563ffffffff811680910361047f5760243590611a7c613767565b6001546001600160a01b03168015611b03578084913b1561047f57818091604460405180948193633400288b60e01b83528860048401528960248401525af1801561048357611aee575b50807f695c704885341620c0bf555ad643c68ad15af92d4ae364731b4268c73320bbc891a380f35b81611af891612ed0565b610827578238611ac6565b60405162461bcd60e51b815260206004820152601f60248201527f4154485661756c743a2065415448206e6f74206465706c6f7965642f736574006044820152606490fd5b5034610296576020366003190112610296576020906040906001600160a01b03611b70612d70565b168152600f83522054604051908152f35b5034610296578060031936011261029657546040516001600160a01b039091168152602090f35b50346102965780600319360112610296576020601154604051908152f35b5034610296576020611bf0611bda36612db0565b91611be36138a0565b611beb613876565b61321e565b6001600080516020615433833981519152556040519015158152f35b503461029657606036600319011261029657611c26612d70565b611c2e612d86565b6044356001600160a01b038116929083900361092357611c4c613767565b6001600160a01b0316908115611fc6576001600160a01b0316908115611f81578215611f3c5760045484906001600160a01b031680151580611f28575b80611ec3575b611e08575b5050806001600160601b0360a01b6004541617600455816001600160601b0360a01b6005541617600555826001600160601b0360a01b6006541617600655604051632495a59960e01b8152602081600481865afa908115611730578591611dd9575b5084546001600160a01b039081169116819003611d94576020859160446040518094819363095ea7b360e01b835287600484015260001960248401525af1801561173057611d67575b507f4c685f0841b95f145c9186ce7e23364bc443354be555f488e7831d8db745b50d8480a480f35b611d889060203d602011611d8d575b611d808183612ed0565b8101906131e7565b611d3f565b503d611d76565b60405162461bcd60e51b815260206004820152601a60248201527f4154485661756c743a2077726f6e6720756e6465726c79696e670000000000006044820152606490fd5b611dfb915060203d602011611e01575b611df38183612ed0565b8101906131ff565b38611cf6565b503d611de9565b600554604051632495a59960e01b81529190602090839060049082906001600160a01b03165afa908115610833576020928492611ea1575b5060405163095ea7b360e01b815260048101919091526024810184905292839160449183916001600160a01b03165af1801561173057611e82575b8490611c94565b611e9a9060203d602011611d8d57611d808183612ed0565b5038611e7b565b6044919250611ebc90843d8611611e0157611df38183612ed0565b9190611e40565b50600554604051632495a59960e01b815290602090829060049082906001600160a01b03165afa908115610833578391611f09575b506001600160a01b03161515611c8f565b611f22915060203d602011611e0157611df38183612ed0565b38611ef8565b506005546001600160a01b03161515611c89565b60405162461bcd60e51b815260206004820152601c60248201527f4154485661756c743a207a65726f2064656c65676174696f6e4d6772000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527f4154485661756c743a207a65726f2073747261746567790000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601a60248201527f4154485661756c743a207a65726f2073747261746567794d67720000000000006044820152606490fd5b5034610296578060031936011261029657602060ff60008051602061541383398151915254166040519015158152f35b5034610296578060031936011261029657602060ff60065460a81c166040519015158152f35b50346102965760203660031901126102965760406060916004358152600e6020522060018060a01b0381541690600260018201549101549060405192835260208301526040820152f35b50346102965780600319360112610296576003546040516001600160a01b039091168152602090f35b5034610296576020366003190112610296576020906040906001600160a01b036120fc612d70565b168152601383522054604051908152f35b503461029657602036600319011261029657612127612d70565b61212f613767565b6001600160a01b031680156122ac5760035482906001600160a01b03168061224b575b5050600380546001600160a01b0319168217905560025482906001600160a01b0316823b1561047f5760405190630193d23d60e61b8252306004830152602482015260016044820152818160648183875af1801561048357612236575b5060025460405163095ea7b360e01b81526004810184905260001960248201529160209183916044918391906001600160a01b03165af1801561083357612219575b507fdf62757684311519aef4deac82ea3f44debfb2760b19d19b17aa414ec22c29b68280a280f35b6122319060203d602011611d8d57611d808183612ed0565b6121f1565b8161224091612ed0565b61047f5781386121af565b602090604460018060a01b036002541691604051948593849263095ea7b360e01b845260048401528160248401525af180156108335761228d575b8290612152565b6122a59060203d602011611d8d57611d808183612ed0565b5038612286565b60405162461bcd60e51b81526020600482015260166024820152754154485661756c743a207a65726f206164647265737360501b6044820152606490fd5b503461029657602036600319011261029657600435612307613767565b62093a80811115612344576020817f2f847163bc3888f61ddc9b405dc655d9cc509f5518194a06263f0ad3c090df9692600755604051908152a180f35b60405162461bcd60e51b815260206004820152601a60248201527f4154485661756c743a20706572696f6420746f6f2073686f72740000000000006044820152606490fd5b50346102965780600319360112610296576123a26137ba565b6000805160206154138339815191525460ff8116156123fc5760ff1916600080516020615413833981519152557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a180f35b638dfc202b60e01b8252600482fd5b50346102965780600319360112610296576004546040516001600160a01b039091168152602090f35b503461029657806003193601126102965761244d6138a0565b612455613876565b61245e33613ee0565b80156124bd57815461247c90829033906001600160a01b0316613f2e565b6040519081527f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724160203392a260016000805160206154338339815191525580f35b60405162461bcd60e51b815260206004820152600e60248201526d4154485661756c743a206e6f6e6560901b6044820152606490fd5b50346102965760403660031901126102965761250d612d86565b336001600160a01b0382160361252957610a0690600435613e40565b63334bd91960e11b8252600482fd5b5034610296576020366003190112610296576125a5602091612558612d70565b60018060a01b03168152601383526002604082209164e8d4a51000612581845460125490612f35565b046001840154908181116000146125ad5761259c9250612f48565b915b0154612ef2565b604051908152f35b50509161259e565b50346102965780600319360112610296576020600d54604051908152f35b50346102965760203660031901126102965760043580151580910361047f5760207f860b17b019d71bb1743581b8b3bdfa32b53be35c6a4e8609d0a8222ccef85af59161261e613767565b6006805460ff60a81b191660a883901b60ff60a81b16179055604051908152a180f35b503461029657604036600319011261029657610a06600435612661612d86565b9061266e6109fc826131c6565b613da9565b50346102965780600319360112610296576002546040516001600160a01b039091168152602090f35b50346102965760203660031901126102965760206125a56004356131c6565b5034610296576020611bf06126cf36612db0565b916126d86138a0565b6126e0613876565b612fdb565b506020366003190112610296576004356126fd6138a0565b61270e60ff60065460a01c16612e18565b612716613767565b612721341515612e59565b612729613876565b801515806129e6575b156129a157600c5490600d549082821015612966576127519082612ef2565b9180831161295e575b5082905b828110612903575080156128be5761278961278361277c8334612f15565b9283612f35565b34612f48565b80612833575b50600d545b8281106127b5575050600d5560016000805160206154338339815191525580f35b806127c1600192612de7565b838060a01b0391549060031b1c16808652600b6020526040862054806127ea575b505001612794565b60207f3c1389149dbb7053ca894ae53dae6b033a2597f9cc52eec7b335feb4b78d78c991838952600b825288604081205561282587826138dc565b604051908152a238806127e2565b8047106128a8578380808093335af13d156128a0573d9067ffffffffffffffff82116107d95760405191612871601f8201601f191660200184612ed0565b82523d85602084013e5b61278f5780518490156128915750805190602001fd5b63d6bda27560e01b8152600490fd5b60609061287b565b63cf47918160e01b845247600452602452604483fd5b60405162461bcd60e51b815260206004820152601a60248201527f4154485661756c743a206e6f6e6520746f2061637469766174650000000000006044820152606490fd5b61290c81612de7565b905460039190911b1c6001600160a01b03168452600b6020526040842054612937575b60010161275e565b90600019811461294a576001019061292f565b634e487b7160e01b84526011600452602484fd5b91503861275a565b60405162461bcd60e51b815260206004820152601360248201527210551215985d5b1d0e881b9bdb99481b19599d606a1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527f4154485661756c743a20626174636853697a65206f75740000000000000000006044820152606490fd5b506032811115612732565b5034610296578060031936011261029657602060405160328152f35b503461029657806003193601126102965780546040516370a0823160e01b81523060048201529190602090839060249082906001600160a01b03165afa908115612a955790612a62575b602090604051908152f35b506020813d602011612a8d575b81612a7c60209383612ed0565b81010312610f7e5760209051612a57565b3d9150612a6f565b604051903d90823e3d90fd5b503461029657602036600319011261029657600354600435906001600160a01b03163303612bb6578015612b79576011548015612b345764e8d4a51000820282810464e8d4a510000361294a5791612b27612b1f6020937f04944120d2e185fc95ba63f3ca24c385ec4c5215a801c8766c96486d7fc4ed8e95612f15565b601254612ef2565b601255604051908152a180f35b60405162461bcd60e51b815260206004820152601d60248201527f4154485661756c743a206e6f207374616b65727320696e207661756c740000006044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527410551215985d5b1d0e881e995c9bc81c995dd85c99605a1b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f4154485661756c743a206f6e6c79205374616b654261736500000000000000006044820152606490fd5b5034610296576020366003190112610296576020906040906001600160a01b03612c23612d70565b168152600b83522054604051908152f35b50346102965760203660031901126102965760043563ffffffff60e01b811680910361047f57602090637965db0b60e01b8114908115612c7a575b506040519015158152f35b6301ffc9a760e01b14905082612c6f565b508060031936011261029657612ca860ff60065460a01c16612e18565b612cb3341515612e59565b6000805160206153d383398151915281526000805160206153f38339815191526020908152604080832033845290915281205460ff1615612d4b57612cf6613876565b6003546001600160a01b031681813b1561029657806004926040519384809263372500ab60e01b825234905af18015612d3e57612d305780f35b612d3991612ed0565b388180f35b50604051903d90823e3d90fd5b63e2517d3f60e01b8152336004526000805160206153d3833981519152602452604490fd5b600435906001600160a01b0382168203610f7e57565b602435906001600160a01b0382168203610f7e57565b35906001600160a01b0382168203610f7e57565b6060906003190112610f7e576004356001600160a01b0381168103610f7e57906024359060443563ffffffff81168103610f7e5790565b600c54811015612e0257600c60005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b15612e1f57565b60405162461bcd60e51b81526020600482015260126024820152714154485661756c743a206e6f74206c69766560701b6044820152606490fd5b15612e6057565b60405162461bcd60e51b815260206004820152601660248201527510551215985d5b1d0e88199959481c995c5d5a5c995960521b6044820152606490fd5b6060810190811067ffffffffffffffff821117612eba57604052565b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff821117612eba57604052565b91908201809211612eff57565b634e487b7160e01b600052601160045260246000fd5b8115612f1f570490565b634e487b7160e01b600052601260045260246000fd5b81810292918115918404141715612eff57565b91908203918211612eff57565b15612f5c57565b60405162461bcd60e51b8152602060048201526013602482015272082a890acc2ead8e874409edcd8f240ca82a89606b1b6044820152606490fd5b15612f9e57565b60405162461bcd60e51b815260206004820152601560248201527410551215985d5b1d0e881e995c9bc8185b5bdd5b9d605a1b6044820152606490fd5b612ff060018060a01b03600154163314612f55565b612ffb821515612f97565b613006828083613a11565b60015461301f90839081906001600160a01b0316613b09565b6001600160a01b03166000818152600f602052604090205490929091826130a7575b7f23ab4c49c7c6e5ca3934e1684583b11cca17ec400febd38b581038f9e94761e292508360005260106020526040600020600160ff1982541617905561308981600a54612ef2565b600a556040805191825263ffffffff929092166020820152a2600190565b6001546040516370a0823160e01b8152600481018690529390602090859060249082906001600160a01b03165afa9384156131ba57600094613186575b50831561317c577f23ab4c49c7c6e5ca3934e1684583b11cca17ec400febd38b581038f9e94761e2938281811061316a5750505b80613124575b50613041565b84600052600f602052604060002061313d828254612f48565b905560018060a01b0360015416600052600f6020526131626040600020918254612ef2565b90553861311e565b61177d9061317793612f35565b613118565b5050505050600090565b90936020823d6020116131b2575b816131a160209383612ed0565b8101031261029657505192386130e4565b3d9150613194565b6040513d6000823e3d90fd5b6000526000805160206153f383398151915260205260016040600020015490565b90816020910312610f7e57518015158103610f7e5790565b90816020910312610f7e57516001600160a01b0381168103610f7e5790565b60015461324d90839081906001600160a01b031661323d338214612f55565b613248821515612f97565b613a11565b600a54600154613265906001600160a01b0316613ee0565b80151580613441575b6133c0575b50506001546001600160a01b03166000818152600f602052604090205480613343575b50506132a3828083613b09565b6001600160a01b03166000818152601060205260409020805460ff19166001179055600a54909290918083106132fe57613089817f24e39a81fc3f6c8a966d589d4fee8b19b6b87622d847eaf0b488288979887fcd94612f48565b60405162461bcd60e51b815260206004820152601960248201527f4154485661756c743a20657363726f77206d69736d61746368000000000000006044820152606490fd5b600a5480156133b557848181106133a2575050905b811561329657600052600f6020526040600020613376828254612f48565b905560018060a01b038216600052600f6020526133996040600020918254612ef2565b90553880613296565b61177d906133af93612f35565b90613358565b505050505050600090565b6133d16133dc9261177d8684612f35565b908161341657612f48565b806133e8575b80613273565b60018060a01b0360015416600052601360205261340e6002604060002001918254612ef2565b9055386133e2565b60018060a01b0384166000526013602052600260406000200161343a838254612ef2565b9055612f48565b5081151561326e565b1561345157565b60405162461bcd60e51b815260206004820152601060248201526f10551215985d5b1d0e881b1bd8dad95960821b6044820152606490fd5b805115612e025760200190565b9035601e1982360301811215610f7e57016020813591019167ffffffffffffffff8211610f7e578160051b36038313610f7e57565b600154909291906001600160a01b03163303613543578115801561352e575b613529576001600160a01b03831661350857613506925061412b565b565b6001600160a01b0381166135205750613506916140e3565b61350692613f6f565b505050565b506001600160a01b03838116908216146134ea565b60405162461bcd60e51b8152602060048201526013602482015272082a890acc2ead8e87440dedcd8f240ca82a89606b1b6044820152606490fd5b1561358557565b60405162461bcd60e51b815260206004820152601560248201527410551215985d5b1d0e8818d85c081c995858da1959605a1b6044820152606490fd5b600654811515918260ff8360a01c1615151461352957613621575b60ff60a01b191660a082901b60ff60a01b16176006556040519081527fc961917c734d26ca86fac73106d79eaceefd32d04babeb79e735b8e2bdbf8b7690602090a1565b6003546001600160a01b031615613729576004546001600160a01b0316156136e4576005546001600160a01b0316156136a7576001600160a01b0381166135dd5760405162461bcd60e51b815260206004820152601a60248201527f4154485661756c743a206e6f2064656c65676174696f6e4d67720000000000006044820152606490fd5b60405162461bcd60e51b81526020600482015260156024820152744154485661756c743a206e6f20737472617465677960581b6044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f4154485661756c743a206e6f2073747261746567794d677200000000000000006044820152606490fd5b60405162461bcd60e51b81526020600482015260166024820152754154485661756c743a206e6f205374616b654261736560501b6044820152606490fd5b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff16156137a057565b63e2517d3f60e01b60005233600452600060245260446000fd5b3360009081527f75442b0a96088b5456bc4ed01394c96a4feec0f883c9494257d76b96ab1c9b6b602052604090205460ff16156137f357565b63e2517d3f60e01b600052336004527f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a60245260446000fd5b60008181526000805160206153f38339815191526020908152604080832033845290915290205460ff161561385e5750565b63e2517d3f60e01b6000523360045260245260446000fd5b60ff600080516020615413833981519152541661388f57565b63d93c066560e01b60005260046000fd5b600260008051602061543383398151915254146138cb57600260008051602061543383398151915255565b633ee5aeb560e01b60005260046000fd5b9060006138ea821515612e59565b6002546001600160a01b0316803b1561047f576040516340c10f1960e01b8152306004820152602481018590529082908290604490829084905af180156104835782906139c0575b50506003546001600160a01b0316803b1561047f578183916044604051809481936310087fb160e01b8352896004840152600160248401525af18015610483576139ab575b50507f5943e82de98e8701c455814901d855dde5d091c46264337050e2800bfbb520229160409182519182526020820152a1565b6139b6828092612ed0565b6102965780613977565b6139c991612ed0565b3881613932565b156139d757565b60405162461bcd60e51b815260206004820152601260248201527150523a207a65726f2065666665637469766560701b6044820152606490fd5b9015613ad057613a228215156139d0565b6040600060018060a01b03831681526013602052209180835410613a9257613a4e613a6392601161445d565b613a59818454612f48565b8355601154612f48565b601155805480613a77575060016000910155565b64e8d4a51000613a8c60019260125490612f35565b04910155565b60405162461bcd60e51b815260206004820152601660248201527550523a20696e73756666696369656e74207374616b6560501b6044820152606490fd5b60405162461bcd60e51b815260206004820152601160248201527050523a207a65726f20776974686472617760781b6044820152606490fd5b9015613b6d576040613b5491613b208415156139d0565b613b2b81601161445d565b60009060018060a01b0316815260136020522091613b4a818454612ef2565b8355601154612ef2565b601155600164e8d4a51000613a8c835460125490612f35565b60405162461bcd60e51b815260206004820152600e60248201526d50523a207a65726f207374616b6560901b6044820152606490fd5b6001600160a01b03811660009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff16613c3d576001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff191660011790553391906000805160206153b38339815191528180a4600190565b50600090565b6001600160a01b03811660009081527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb456602052604090205460ff16613c3d576001600160a01b031660008181527f448256db8f8fb95ee3eaaf89c1051414494e85cebb6057fcf996cc3d0ccfb45660205260408120805460ff191660011790553391906000805160206153d3833981519152906000805160206153b38339815191529080a4600190565b6001600160a01b03811660009081527f75442b0a96088b5456bc4ed01394c96a4feec0f883c9494257d76b96ab1c9b6b602052604090205460ff16613c3d576001600160a01b031660008181527f75442b0a96088b5456bc4ed01394c96a4feec0f883c9494257d76b96ab1c9b6b60205260408120805460ff191660011790553391907f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a906000805160206153b38339815191529080a4600190565b60008181526000805160206153f3833981519152602090815260408083206001600160a01b038616845290915290205460ff16613e395760008181526000805160206153f3833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291906000805160206153b38339815191529080a4600190565b5050600090565b60008181526000805160206153f3833981519152602090815260408083206001600160a01b038616845290915290205460ff1615613e395760008181526000805160206153f3833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b604090613eee81601161445d565b6001600160a01b0316600090815260136020522060028101805492919083613f14575050565b60009055600164e8d4a51000613a8c835460125490612f35565b60405163a9059cbb60e01b60208201526001600160a01b0392909216602483015260448083019390935291815261350691613f6a606483612ed0565b6144d4565b6001600160a01b038116600081815260136020526040902054909190806140b1575b505080600052600f6020526040600020549283613faf575b50505050565b6001546040516370a0823160e01b81526004810184905290602090829060249082906001600160a01b03165afa80156131ba57829060009061407b575b613ff69250612ef2565b801561407457808210614061575050825b8315613fa957808411614059575b8361401f91612f48565b90600052600f60205260406000205560018060a01b0316600052600f60205261404e6040600020918254612ef2565b905538808080613fa9565b925082614015565b61177d61406e9286612f35565b92614007565b5050505050565b50506020813d6020116140a9575b8161409660209383612ed0565b81010312610f7e5781613ff69151613fec565b3d9150614089565b808511156140dc575b8015613f91576140ce81806140d594613a11565b8084613b09565b3880613f91565b50836140ba565b6001600160a01b03811660008181526010602052604090205491929160ff1661411157508061350692613a11565b9150506000526010602052604060002060ff198154169055565b6001600160a01b03811660008181526010602052604090205491929160ff1661411157508061350692613b09565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815261350691613f6a608483612ed0565b6004546001600160a01b031691908215801561444a575b6144075760055460405163fe243a1760e01b81523060048201526001600160a01b0390911660248201819052602082604481885afa9182156131ba576000926143d2575b50600080546040516373d0285560e11b815260048101939093526001600160a01b03166024830152604482018590529094602091869160649183915af19384156131ba5760009461439e575b506004805460055460405163fe243a1760e01b815230938101939093526001600160a01b03908116602484015260209183916044918391165afa9182156131ba578591600093614367575b50808310159283614353575b5050501561430e5760407f257bc97f23123db2b4d6c564c095bc72ccda7a9f1a3406f0255a06361134132a91846142e7575b8151938452602084018590526001600160a01b031692a290565b60018060a01b038116600052600f60205281600020614307868254612ef2565b90556142cd565b60405162461bcd60e51b815260206004820152601b60248201527f4154485661756c743a20454c207368617265206d69736d6174636800000000006044820152606490fd5b61435e929350612f48565b1483388061429b565b9150916020823d602011614396575b8161438360209383612ed0565b810103126102965750849051913861428f565b3d9150614376565b90936020823d6020116143ca575b816143b960209383612ed0565b810103126102965750519238614244565b3d91506143ac565b90916020823d6020116143ff575b816143ed60209383612ed0565b810103126102965750519060206141f8565b3d91506143e0565b60408051928352600060208401526001600160a01b0390911692507f257bc97f23123db2b4d6c564c095bc72ccda7a9f1a3406f0255a06361134132a91a2600090565b506005546001600160a01b0316156141b4565b6001600160a01b03909116600090815260028201602052604090208054909181156135295764e8d4a5100091600161449792015490612f35565b0460018201548082116000146144c5576144b66002916144c193612f48565b925b01918254612ef2565b9055565b50506144c160026000926144b8565b906000602091828151910182855af1156131ba576000513d61452657506001600160a01b0381163b155b6145055750565b635274afe760e01b60009081526001600160a01b0391909116600452602490fd5b600114156144fe565b60ff6000805160206154538339815191525460401c161561454c57565b631afcd79f60e31b60005260046000fdfe60a0604052346103a157604080519081016001600160401b038111828210176102ac57604090815260088252670acc2ead8e882a8960c31b602083015280519081016001600160401b038111828210176102ac5760405260048152630ec82a8960e31b602082015281516001600160401b0381116102ac57600354600181811c91168015610397575b602082101461028c57601f8111610332575b50602092601f82116001146102cd57928192936000926102c2575b50508160011b916000199060031b1c1916176003555b80516001600160401b0381116102ac57600454600181811c911680156102a2575b602082101461028c57601f8111610227575b50602091601f82116001146101c3579181926000926101b8575b50508160011b916000199060031b1c1916176004555b33156101a25760058054336001600160a01b03198216811790925560405191906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a333608052610aae90816103a7823960805181818160e5015281816103a301526105d10152f35b631e4fbdf760e01b600052600060045260246000fd5b015190503880610118565b601f198216926004600052806000209160005b85811061020f575083600195106101f6575b505050811b0160045561012e565b015160001960f88460031b161c191690553880806101e8565b919260206001819286850151815501940192016101d6565b60046000527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c81019160208410610282575b601f0160051c01905b81811061027657506100fe565b60008155600101610269565b9091508190610260565b634e487b7160e01b600052602260045260246000fd5b90607f16906100ec565b634e487b7160e01b600052604160045260246000fd5b0151905038806100b5565b601f198216936003600052806000209160005b86811061031a5750836001959610610301575b505050811b016003556100cb565b015160001960f88460031b161c191690553880806102f3565b919260206001819286850151815501940192016102e0565b60036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c8101916020841061038d575b601f0160051c01905b818110610381575061009a565b60008155600101610374565b909150819061036b565b90607f1690610088565b600080fdfe608080604052600436101561001357600080fd5b60003560e01c90816306fdde031461086e57508063095ea7b3146107e857806318160ddd146107ca57806323b872dd146106dd578063313ce567146106c157806340c10f191461059e57806342966c681461054057806370a0823114610506578063715018a6146104a957806379cc67901461036f5780638da5cb5b1461034657806395d89b4114610225578063a9059cbb146101f4578063dd62ed3e146101a3578063f2fde38b146101195763fbfa77cf146100cf57600080fd5b34610114576000366003190112610114576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b600080fd5b346101145760203660031901126101145761013261098a565b61013a610a4f565b6001600160a01b0316801561018d57600580546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3005b631e4fbdf760e01b600052600060045260246000fd5b34610114576040366003190112610114576101bc61098a565b6101c46109a0565b6001600160a01b039182166000908152600160209081526040808320949093168252928352819020549051908152f35b346101145760403660031901126101145761021a61021061098a565b60243590336109b6565b602060405160018152f35b346101145760003660031901126101145760405160006004548060011c9060018116801561033c575b6020831081146103285782855290811561030c57506001146102b5575b50819003601f01601f191681019067ffffffffffffffff82118183101761029f5761029b82918260405282610941565b0390f35b634e487b7160e01b600052604160045260246000fd5b905060046000527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b6000905b8282106102f65750602091508201018261026b565b60018160209254838588010152019101906102e1565b90506020925060ff191682840152151560051b8201018261026b565b634e487b7160e01b84526022600452602484fd5b91607f169161024e565b34610114576000366003190112610114576005546040516001600160a01b039091168152602090f35b346101145760403660031901126101145761038861098a565b60243590610394610a4f565b6001600160a01b0390811691907f00000000000000000000000000000000000000000000000000000000000000001682036104595781156104435760009082825281602052604082205481811061042b5760208285937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93869787528684520360408620558060025403600255604051908152a380f35b60649363391434e360e21b8452600452602452604452fd5b634b637e8f60e11b600052600060045260246000fd5b60405162461bcd60e51b815260206004820152602260248201527f5661756c744154483a2063616e206f6e6c79206275726e2066726f6d207661756044820152611b1d60f21b6064820152608490fd5b34610114576000366003190112610114576104c2610a4f565b600580546001600160a01b031981169091556000906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b34610114576020366003190112610114576001600160a01b0361052761098a565b1660005260006020526020604060002054604051908152f35b3461011457602036600319011261011457610559610a4f565b60405162461bcd60e51b815260206004820152601e60248201527f5661756c744154483a20646972656374206275726e2064697361626c656400006044820152606490fd5b34610114576040366003190112610114576105b761098a565b602435906105c3610a4f565b6001600160a01b03908116907f000000000000000000000000000000000000000000000000000000000000000016810361067d5780156106675760025491808301809311610651576020926002557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600093849284845283825260408420818154019055604051908152a380f35b634e487b7160e01b600052601160045260246000fd5b63ec442f0560e01b600052600060045260246000fd5b606460405162461bcd60e51b815260206004820152602060248201527f5661756c744154483a2063616e206f6e6c79206d696e7420746f207661756c746044820152fd5b3461011457600036600319011261011457602060405160128152f35b34610114576060366003190112610114576106f661098a565b6106fe6109a0565b6001600160a01b038216600081815260016020908152604080832033845290915290205490926044359291600019811061073e575b5061021a93506109b6565b8381106107ad5784156107975733156107815761021a946000526001602052604060002060018060a01b0333166000526020528360406000209103905584610733565b634a1406b160e11b600052600060045260246000fd5b63e602df0560e01b600052600060045260246000fd5b8390637dc7a0d960e11b6000523360045260245260445260646000fd5b34610114576000366003190112610114576020600254604051908152f35b346101145760403660031901126101145761080161098a565b602435903315610797576001600160a01b031690811561078157336000526001602052604060002082600052602052806040600020556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b346101145760003660031901126101145760006003548060011c90600181168015610937575b6020831081146103285782855290811561030c57506001146108e05750819003601f01601f191681019067ffffffffffffffff82118183101761029f5761029b82918260405282610941565b905060036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b6000905b8282106109215750602091508201018261026b565b600181602092548385880101520191019061090c565b91607f1691610894565b91909160208152825180602083015260005b818110610974575060409293506000838284010152601f8019910116010190565b8060208092870101516040828601015201610953565b600435906001600160a01b038216820361011457565b602435906001600160a01b038216820361011457565b6001600160a01b0316908115610443576001600160a01b0316918215610667576000828152806020526040812054828110610a355791604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815280845220818154019055604051908152a3565b916064928463391434e360e21b8452600452602452604452fd5b6005546001600160a01b03163303610a6357565b63118cdaa760e01b6000523360045260246000fdfea2646970667358221220889deac9731fd2a2c935f60ce31e39c2dca4400bdaf21d09b343712a6cd81ac864736f6c634300081b00332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a26469706673582212204d7d97e8eaa090c89e75d64a009e7de410ffdd8457447153f681456fc4cc062264736f6c634300081b0033