0 txs
12 calls
constructor
constructor()
functions
checkPoolAllowance
viewfunction checkPoolAllowance(uint8 poolId) view returns (uint256 allowance)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getAllUsersClaimedAmount
viewfunction getAllUsersClaimedAmount(uint8 poolId) view returns (address[] users, uint256[] claimedAmounts)
getFundRequiredForNewPool
viewfunction getFundRequiredForNewPool(uint256 allocation, uint256 tgeReleasePercent) view returns (uint256)
getLockEligibility
viewfunction getLockEligibility(uint8 poolId) view returns (bool)
getPoolDetails
viewfunction getPoolDetails(uint8 poolId) view returns (string name, address wallet, uint256 allocation, uint256 tgeReleasePercent, uint256 cliffDuration, uint256 vestingDuration, uint256 startTime, uint256 poolTgeClaimedAmount, uint256 poolVestedClaimedAmount, bool disabled, bool revocable)
getPoolUsers
viewfunction getPoolUsers(uint8 poolId) view returns (tuple[])
getReleasableAmount
viewfunction getReleasableAmount(uint8 poolId) view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getShortAmountToFundContract
viewfunction getShortAmountToFundContract() view returns (uint256)
getTotalReleasableAmount
viewfunction getTotalReleasableAmount() view returns (uint256)
getUserInfo
viewfunction getUserInfo(uint8 poolId, address wallet) view returns (tuple)
getUserReleasableAmount
viewfunction getUserReleasableAmount(uint8 poolId, address wallet) view returns (uint256)
getUserWhitelistedStatus
viewfunction getUserWhitelistedStatus(uint8 poolId, address wallet) view returns (bool)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
MANAGER_ROLE
viewfunction MANAGER_ROLE() view returns (bytes32)
paused
viewfunction paused() view returns (bool)
poolAllocationReserve
viewfunction poolAllocationReserve() view returns (uint256)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
tgeExecuted
viewfunction tgeExecuted() view returns (bool)
token
viewfunction token() view returns (address)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
addUser
nonpayablefunction addUser(uint8 poolId, address wallet, uint256 vestedAmount)
addUsersInBatch
nonpayablefunction addUsersInBatch(uint8 poolId, address[] wallets, uint256[] amounts)
claim
nonpayablefunction claim(uint8 poolId)
configurePool
nonpayablefunction configurePool(uint8 poolId, string name, address wallet, uint256 allocation, uint256 tgeReleasePercent, uint256 cliffDuration, uint256 vestingDuration, uint256 vestingFrequency)
configurePoolAfterTGE
nonpayablefunction configurePoolAfterTGE(uint8 poolId, string name, address wallet, uint256 allocation, uint256 tgeReleasePercent, uint256 cliffDuration, uint256 vestingDuration, uint256 vestingFrequency)
disablePool
nonpayablefunction disablePool(uint8 poolId)
distributeVestedTokens
nonpayablefunction distributeVestedTokens()
editPool
nonpayablefunction editPool(uint8 poolId, string name, address wallet, uint256 allocation, uint256 tgeReleasePercent, uint256 cliffDuration, uint256 vestingDuration, uint256 vestingFrequency)
editUserAllocation
nonpayablefunction editUserAllocation(uint8 poolId, address wallet, uint256 amount)
emergencyWithdraw
nonpayablefunction emergencyWithdraw(address to)
enablePool
nonpayablefunction enablePool(uint8 poolId)
executeTGE
nonpayablefunction executeTGE()
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address _token, address _initialOwner, address _manager)
lockPool
nonpayablefunction lockPool(uint8 poolId)
pause
nonpayablefunction pause()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
revokeUser
nonpayablefunction revokeUser(uint8 poolId, address wallet)
revokeUsersInBatch
nonpayablefunction revokeUsersInBatch(uint8 poolId, address[] wallets)
setManagerRole
nonpayablefunction setManagerRole(address _user, bool _status)
unpause
nonpayablefunction unpause()
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
EmergencyWithdraw
event EmergencyWithdraw(address indexed to, uint256 indexed amount)
Initialized
event Initialized(uint64 version)
ManagerRoleSet
event ManagerRoleSet(address indexed user, bool indexed status)
Paused
event Paused(address account)
PoolConfigured
event PoolConfigured(uint8 indexed poolId, string indexed name, address indexed wallet)
PoolConfiguredAfterTGE
event PoolConfiguredAfterTGE(uint8 indexed poolId, string indexed name, address indexed wallet)
PoolDisabled
event PoolDisabled(uint8 indexed poolId)
PoolEdited
event PoolEdited(uint8 indexed poolId)
PoolEnabled
event PoolEnabled(uint8 indexed poolId)
PoolLocked
event PoolLocked(uint8 indexed poolId)
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)
TGEExecuted
event TGEExecuted(uint256 executedAt)
TokensClaimed
event TokensClaimed(uint8 indexed poolId, address indexed wallet, uint256 amount)
TokensDistributed
event TokensDistributed(uint8 indexed poolId, address indexed wallet, uint256 amount)
Unpaused
event Unpaused(address account)
Upgraded
event Upgraded(address indexed implementation)
UserRevoked
event UserRevoked(uint8 indexed poolId, address indexed wallet)
UserWhitelisted
event UserWhitelisted(uint8 indexed poolId, address indexed wallet, uint256 indexed vestedAmount)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
AlreadyRevoked
error AlreadyRevoked()
AlreadyWhitelisted
error AlreadyWhitelisted()
DisabledPool
error DisabledPool()
EnforcedPause
error EnforcedPause()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
ExpectedPause
error ExpectedPause()
FailedCall
error FailedCall()
InputsLengthMismatch
error InputsLengthMismatch()
InvalidInitialization
error InvalidInitialization()
InvalidTGERelease
error InvalidTGERelease()
LockedPool
error LockedPool()
NoClaimableAmount
error NoClaimableAmount()
NonExistentPool
error NonExistentPool()
NotDisabled
error NotDisabled()
NotEnoughFundsInContract
error NotEnoughFundsInContract()
NotInitializing
error NotInitializing()
NotWhitelisted
error NotWhitelisted()
NullAddress
error NullAddress()
PoolAlreadyExists
error PoolAlreadyExists()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
RevokingDisabled
error RevokingDisabled()
TGEAlreadyExecuted
error TGEAlreadyExecuted()
TransferFailed
error TransferFailed()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
VestingAlreadyStarted
error VestingAlreadyStarted()
ZeroAmount
error ZeroAmount()
creation bytecode
0x60a08060405234620000d157306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c16620000c257506001600160401b036002600160401b0319828216016200007c575b604051614c359081620000d78239608051818181612b0601526130310152f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880806200005c565b63f92ee8a960e01b8152600490fd5b600080fdfe608080604052600436101561001357600080fd5b600090813560e01c90816301ffc9a71461362e57508063248a9ca3146135f457806329d79588146135115780632f2ff15d146134c657806336568abe146134355780633f4ba83a146133ab5780633fa77f691461335b5780634e7bafaf146132125780634f1ef28614612fe057806350dc2e0114612fc55780635283262c14612b6857806352d1902d14612aeb5780635c0c4de014612ac95780635c975abb14612a8757806360135d90146129cb5780636a15633b146127fb5780636ff1c9bc1461269a57806378ae23e8146122f15780637aed2b001461220c5780638456cb591461219257806384bfa0461461216d5780638694571b14611f215780638c7d6fab14611e715780638ccbc45e14611e535780638d484edb14611cd457806391d1485414611c7a57806395d4063f1461197d57806395f48617146116e15780639ab97bbc146113845780639cee1f0a146113605780639e8ce551146111a3578063a217fddf14611187578063ad3cb1cc146110fc578063bcc929f6146110cf578063c0c53b8b14610e28578063cc04e82214610c1d578063cf47bbab14610c02578063d547741f14610b97578063da9ff6aa1461099a578063df5159311461096e578063e78870ba1461079b578063e7d415b0146104cc578063ec87621c14610491578063f14beb8f146103d6578063f1d3fadb146102435763fc0c546a1461021b57600080fd5b346102405780600319360112610240576001600160a01b036020915416604051908152f35b80fd5b50346102405761025236613844565b919061025c614710565b60ff809216918285526020906004825280600b60408820015460101c16156103c4578386526004825280600b604088200154166103b2578386526004825280600b60408820015460081c16156103a057838652600682526001600160a01b03604087209316928360005282526040600020818154161561038e5760036102f38392878a5260078652600160408b209101549061389d565b5001541661037c57855460a01c1661036a57600591838652600682526040862090600052815260016103368160406000200154858852600784526040882061389d565b50019283548187528383526103506040882091825461390f565b9055855252604083206103648382546139dc565b90555580f35b6040516372de7acd60e01b8152600490fd5b60405163905e710760e01b8152600490fd5b604051630b094f2760e31b8152600490fd5b60405163786e732760e11b8152600490fd5b604051636b109e5960e01b8152600490fd5b60405163904e0f5960e01b8152600490fd5b50346102405760203660031901126102405760ff6103f2613683565b6103fa614710565b16808252600460205260ff600b60408420015460101c16156103c457808252600460205260ff600b60408420015460081c16156103a05761043961497e565b808252600460205260ff600b604084200154166103b257808252600460205260408220600b01805460ff191660011790557ff11fec229ec693a279c0f7a7e6283dbd9a751f392cae89d0b67dd051fdf3f7678280a280f35b503461024057806003193601126102405760206040517f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b088152f35b50346102405780600319360112610240576104e56146b8565b6104ed6149bb565b6104f561497e565b60036105046003541515613eba565b61050c6139e9565b908115610789576001600160a01b0392838154166040519384916370a0823160e01b835230600484015282602460209788935afa91821561077e57839261074a575b501161073857805b600190815460ff908183161015610710578061057183613932565b905490871b1c168085526004875286604086209461058e83614437565b93600b87015490808216918215610703575b82156106e2575b82156106d4575b505080156106cc575b6106be57908361062192600988016105d08382546139dc565b9055600a88016105e18382546139dc565b90558b8954169701968b8854168960405180968195829463a9059cbb60e01b845260048401602090939291936001600160a01b0360408201951681520152565b03925af19081156106b3578691610686575b5015610674577f8c2d36d9a6ec91a08ad1c7346cb4a7057854f5699e46dd7e110a87c71f215354878961066f96541693604051908152a3613f06565b610556565b6040516312171d8360e31b8152600490fd5b6106a69150883d8a116106ac575b61069e81836136f8565b810190613d29565b38610633565b503d610694565b6040513d88823e3d90fd5b5050505061066f9150613f06565b5083156105b7565b60081c1615905038806105ae565b91506106f7600889015460098a0154906139dc565b600289015414916105a7565b60078901541592506105a0565b8360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005580f35b60405163247e65ad60e01b8152600490fd5b9091508481813d8311610777575b61076281836136f8565b810103126107725751903861054e565b600080fd5b503d610758565b6040513d85823e3d90fd5b60405163493c1ab760e01b8152600490fd5b50346102405760208060031936011261096a5760ff6107b8613683565b168252600781526040822080546107ce816137e4565b916107dc60405193846136f8565b81835284528284208490848085015b84841061094b5787828782805b825181101561083257606061080d8285613ea6565b5101511561081e575b6001016107f8565b9361082a600191613d7d565b949050610816565b509190610857610841856137e4565b9461084f60405196876136f8565b8086526137e4565b601f190182845b828110610935575050508291835b82518110156108c35780606061088460019386613ea6565b51015115610893575b0161086c565b6108bd6108a08286613ea6565b51956108ab81613d7d565b966108b6828b613ea6565b5288613ea6565b5061088d565b6040805183815287518185018190528885019282019085895b8281106108e95784840385f35b909192826080826109266001948a51606080916001600160a01b038151168452602081015160208501526040810151604085015201511515910152565b019601910194929190946108dc565b61093d613878565b82828901015201839061085e565b60019160049161095a856138cf565b81520192019201919085906107eb565b5080fd5b503461024057602036600319011261024057602061099261098d613683565b614437565b604051908152f35b50346102405760203660031901126102405760ff6109b6613683565b16808252600460205260ff600b60408420015460101c16156103c4578152600460205260408120604051906109ea826136bf565b604051918382546109fa8161396f565b80865291600191808316908115610b6d5750600114610b30575b50505060ff90610a2984610aeb9603856136f8565b8381526001600160a01b03600184015416928360208301526002810154806040840152600382015480606085015260048301548060808601526005840154908160a0870152600685015460c08701526007850154928360e088015260088601549485610100890152600b600988015497886101208b0152600a8101546101408b01520154978989161515610160820152898960081c1615156101808201526101a08a8a60101c1615159101526040519b8c9b6101608d526101608d019061381f565b9960208c015260408b015260608a0152608089015260a088015260c087015260e0860152610100850152818116151561012085015260081c1615156101408301520390f35b9550838652602086205b828710610b55575050509282016020019280610a2984610a14565b80546020888801810191909152909601958101610b3a565b60ff191660208089019190915293151560051b87019093019650839250610a299150859050610a14565b503461024057604036600319011261024057600435610bb4613693565b610bbc61497e565b610bc46146b8565b811580610bf0575b15610be357604051637ca5942560e01b8152600490fd5b610bec91614ab7565b5080f35b50336001600160a01b03821614610bcc565b503461024057806003193601126102405760206109926141b8565b50346102405760ff610c2e36613844565b929091610c39614710565b1680845260206004815260ff600b60408720015460101c16156103c4578185526004815260ff600b604087200154166103b2578185526004815260ff600b60408720015460081c16156103a057610c8e61497e565b8185526006815260408520926001600160a01b03809116938460005282526040600020805460ff8116610e165760019085895260048552610cd8600260408b20015489111561415b565b85895260058552610d06610cf060408b20548a6139dc565b878b5260048752600260408c200154101561415b565b60ff191617815583875260078352600160408820918254918291015560405192610d2f846136dc565b8684528484019088825260408501928a845260608601948b865268010000000000000000821015610e025790610d6a9160018201815561389d565b959095610dee5792600392610db29592600598979551166001600160a01b031986541617855551600185015551600284015551151591019060ff801983541691151516179055565b8286525260408420610dc58482546139dc565b90557f4ef69af7eda36f6bb1a1f9ebf64be7f39633468c49362cf542ad65d7fe8e28c38480a480f35b634e487b7160e01b8b5260048b905260248bfd5b634e487b7160e01b8c52604160045260248cfd5b60405163b73e95e160e01b8152600490fd5b503461024057606036600319011261024057610e426136a9565b610e4a613693565b604435916001600160a01b0380841692838503610772577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0094855460ff8160401c16159467ffffffffffffffff8216801590816110c7575b60011490816110bd575b1590816110b4575b506110a25767ffffffffffffffff1982166001178855849186611083575b501692831590811561107a575b811561106f575b50610fd15760405163313ce56760e01b8152602095908681600481885afa908115611064578991611028575b5060ff6012911603610fe35715610fd157610f73610f7992610f32614b3b565b610f3a614b3b565b610f42614b3b565b60017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055610f6e614b3b565b61485b565b5061479f565b506001600160a01b0319855416178455610f91578280f35b7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29168ff000000000000000019815416905560405160018152a138808280f35b60405163e99d5ac560e01b8152600490fd5b60405162461bcd60e51b815260048101879052601b60248201527f546f6b656e206d757374206861766520313820646563696d616c7300000000006044820152606490fd5b90508681813d831161105d575b61103f81836136f8565b81010312611059575160ff811681036110595760ff610f12565b8880fd5b503d611035565b6040513d8b823e3d90fd5b905082161538610ee6565b86159150610edf565b68ffffffffffffffffff19166801000000000000000117885538610ed2565b60405163f92ee8a960e01b8152600490fd5b90501538610eb4565b303b159150610eac565b879150610ea2565b50346102405760403660031901126102405760206109926110ee613683565b6110f6613693565b90613fdb565b5034610240578060031936011261024057604051604081019080821067ffffffffffffffff8311176111715761116d91604052600581527f352e302e30000000000000000000000000000000000000000000000000000000602082015260405191829160208352602083019061381f565b0390f35b634e487b7160e01b600052604160045260246000fd5b5034610240578060031936011261024057602090604051908152f35b5034610240576040366003190112610240576111bd613683565b602480359067ffffffffffffffff9081831161135c573660238401121561135c57826004013591821161135c576005903660248460051b8601011161135857611207939293614710565b61120f61497e565b60ff94851692865b858110611222578780f35b8281851b83010135906001600160a01b03821680920361105957611244614710565b85895260209160048352600b898160408d20015460101c16156103c457878b526004845260408b20015460081c8916156103a057868a52600680845260408b208260005284526040600020908a8254161561038e578b948986526112b66040600797888452206001809501549061389d565b50918c6003809401541661037c5761132060408f8c6112ff8f959b60019c6112dc61497e565b87855288528484208b60005288528985600020015490878552885284842061389d565b50956113138988015460028901549061390f565b958352522091825461390f565b9055019060ff19825416179055867fac11047e193c318e5debd57c940ee6e42dc6f0161faa9fbfc13e4d9d16869e6d8b80a301611217565b8580fd5b8480fd5b503461024057602036600319011261024057602061099261137f613683565b613f17565b5034610240576060906060600319360112610240576113a1613683565b9160249182359367ffffffffffffffff918286116102405736602387011215610240578560040135956113d3876137e4565b956113e160405197886136f8565b8787526020918288018260059a60051b83010191368311611358578301905b8282106116c2575050506044359485116116be57366023860112156116be5784600401359461142e866137e4565b9561143c60405197886136f8565b808752828488019160051b830101913683116113585783859101915b8383106116ae575050505061146b614710565b61147361497e565b865185510361169c5760ff80941693848452600483526003906127106003604087200154146103a057845b8951811015611698576001600160a01b03806114ba838d613ea6565b51166114c6838b613ea6565b51916114d0614710565b89895260048852600b858160408c20015460101c16156103c4578a8a5260048952858160408c200154166103b2578a8a526004895260408a20015460081c8516156103a05761151d61497e565b898952600688526040892082600052885260406000208054868116610e16578f908e908c938c958f808752600488526002956115618760408a2001548c111561415b565b818852885261158c61157760408920548c6139dc565b82895260048a528760408a200154101561415b565b6001809460ff191617835586526007875282604087209283549182910155604051976115b7896136dc565b8989528801928a8452604089019588875289019788526801000000000000000082101561168357906115ed91858201815561389d565b97909761166f5751875491166001600160a01b03199091161786555190850155519083015551908601805460ff191691151560ff1691909117905560019291908989528d8852604089206116428382546139dc565b9055897f4ef69af7eda36f6bb1a1f9ebf64be7f39633468c49362cf542ad65d7fe8e28c38a80a40161149e565b50634e487b7160e01b8f5260048f90528c8ffd5b5050634e487b7160e01b8f5260416004528c8ffd5b8580f35b6040516371e9143160e01b8152600490fd5b8235815291810191859101611458565b8280fd5b81356001600160a01b0381168103610772578152908401908401611400565b50346102405780600319360112610240576116fa6146b8565b6117026149bb565b61170a61497e565b805460ff9160ff8260a01c1661196b5760039061172a6003541515613eba565b6117326139e9565b6001600160a01b03938491604051916370a0823160e01b8352306004840152826024816020968794165afa918215611960578492611931575b501161073857815b600190815487821610156118a3578661178b82613932565b905490871b1c168452600483526040842091600b83015488808216159182611896575b50508061188a575b6117cb575b506117c69150613f06565b611773565b42600784015561182a846127106117ea60028701548a880154906139a9565b0480938a808a541691880154168960405180968195829463a9059cbb60e01b845260048401602090939291936001600160a01b0360408201951681520152565b03925af19081156106b357869161186d575b501561067457611865600a8460086117c6960161185a8582546139dc565b9055019182546139dc565b9055386117bb565b6118849150853d87116106ac5761069e81836136f8565b3861183c565b506007830154156117b6565b60081c16905088386117ae565b837f1f3720b847ee6caeda27d3425f095412f50fe082a343c47b2f9a8126b53f3d4884740100000000000000000000000000000000000000007fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff845416178355604051428152a160017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005580f35b9091508281813d8311611959575b61194981836136f8565b810103126107725751903861176b565b503d61193f565b6040513d86823e3d90fd5b60405163eaa6a49d60e01b8152600490fd5b50346102405760208060031936011261096a57611998613683565b6119a06149bb565b6119a861497e565b60ff808216918285526004845281600b60408720015460101c16156103c4578285526004845281600b604087200154166103b25782855260068452604085203360005284526040600020828154161561038e576003611a18849286895260078852600160408a209101549061389d565b5001541661037c57611a2b903390613fdb565b928315610789578285526006815260408520336000528152611a5f600160406000200154848752600783526040872061389d565b5091838652600482526002604087209301611a7b8682546139dc565b90558386526005825260016040872001611a968682546139dc565b9055600b83015460081c1615611c5a575b84546001830154604051636eb1769f60e11b81526001600160a01b039182166004820181905230602483015291909216918381604481865afa8015611c4f5787918991611c1e575b5010611bb35786916064849260405194859384926323b872dd60e01b845260048401523360248401528a60448401525af19081156106b3578691611b96575b501561067457600a7f11255cf40bf6a3d0bf0c13b6ed6e552266e1a3f4e038482dd2dcf6d5a0dbb93f9201611b6485825461390f565b90556040519384523393a360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005580f35b611bad9150823d84116106ac5761069e81836136f8565b38611b2e565b60405162461bcd60e51b815260048101849052603660248201527f4e616f72697356657374696e673a20696e73756666696369656e7420616c6c6f60448201527f77616e63652066726f6d20706f6f6c2077616c6c6574000000000000000000006064820152608490fd5b809250858092503d8311611c48575b611c3781836136f8565b810103126107725786905138611aef565b503d611c2d565b6040513d8a823e3d90fd5b8285526005815260026040862001611c7385825461390f565b9055611aa7565b5034610240576040366003190112610240576001600160a01b036040611c9e613693565b926004358152600080516020614be0833981519152602052209116600052602052602060ff604060002054166040519015158152f35b503461024057602090816003193601126102405760ff611cf2613683565b16918282526004815260ff600b60408420015460101c16156103c4579082815260079060078352604081205491611d28836137e4565b93611d3660405195866136f8565b838552611d42846137e4565b9381860192601f19809601368537611d59826137e4565b97611d67604051998a6136f8565b828952611d73836137e4565b8985019701368837855b838110611e04575050505060405195869560408701906040885251809152606087019390855b818110611de457505050858303868301525180835291810193925b828110611dcd57505050500390f35b835185528695509381019392810192600101611dbe565b82516001600160a01b031686528998509484019491840191600101611da3565b600190828897999a9b9698528388526002611e228260408a2061389d565b5080546001600160a01b0316611e38848f613ea6565b520154611e458288613ea6565b520198979694959398611d7d565b50346102405780600319360112610240576020600254604051908152f35b50346102405760203660031901126102405760ff611e8d613683565b611e95614710565b16808252600460205260ff600b60408420015460101c16156103c457611eb961497e565b808252600460205260ff600b6040842001541615611f0f57808252600460205260408220600b01805460ff191690557f0d990ef74cecda0acf8fdd130b5d0e11d9df88a481004ff1ab9af706f5d0cc158280a280f35b604051635b3d539f60e01b8152600490fd5b50346102405760ff90611f333661376d565b9598909396929192169586885260206004815260ff600b60408b20015460101c16156103c4578789526004815260ff600b60408b20015460081c16156103a057611f7b614710565b611f8361497e565b878952600481526040892095600787015461036a576001600160a01b0316908115610fd157612710840361214d57841580612145575b8061213d575b611fc890613c80565b8a519067ffffffffffffffff821161212957611fe4885461396f565b601f81116120e6575b5080601f831160011461207b575081908b9c60069a9b9c92612070575b50508160011b916000199060031b1c19161786555b60018601906001600160a01b0319825416179055600285015560038401556004830155600582015501557fa74185942900b335fdb82f76100d6f0947c22e1d5d16a5bdb9af0bfd1cbfec7b8280a280f35b01519050388061200a565b919b601f198d16898d52838d20938d905b8282106120ce57505091600193918e60069c9d9e9f94106120b5575b505050811b01865561201f565b015160001960f88460031b161c191690553880806120a8565b8060018697829497870151815501960194019061208c565b888c52818c20601f840160051c81019183851061211f575b601f0160051c01905b8181106121145750611fed565b8c8155600101612107565b90915081906120fe565b634e487b7160e01b8b52604160045260248bfd5b508715611fbf565b508515611fb9565b85151580612164575b61215f90613c0e565b611fc8565b50871515612156565b503461024057806003193601126102405760ff6020915460a01c166040519015158152f35b50346102405780600319360112610240576121ab6146b8565b6121b361497e565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300600160ff198254161790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a180f35b5034610240576040366003190112610240576122266136a9565b60243590811515918281036122ed5761223d6146b8565b156122c3576001600160a01b03907f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b088452600080516020614be0833981519152602052612290600160408620015461476c565b6122998161479f565b505b167f4e0821e9e83e6ed2861d90c07a96114379e9c5b5e6ea2afec5ac6e49d745314c8380a380f35b916001600160a01b03906122d561497e565b6122dd6146b8565b926122e7816149fd565b5061229b565b8380fd5b5034610240576123003661376d565b9261230f979697929192614710565b61231761497e565b60ff895460a01c1661196b576001600160a01b03861615610fd15761271080821161268857810361266857811580612660575b80612658575b61235990613c80565b60ff87168952600460205260ff600b60408b20015460101c166126465760405194612383866136bf565b8886526001600160a01b038716602087015260408601526060850152608084015260a083015260c08201528460e082015284610100820152846101208201528461014082015284610160820152600161018082015260016101a082015260ff83168552600460205260408520815180519067ffffffffffffffff82116126325761240d835461396f565b601f81116125f1575b5060209088601f8411600114612575576001600160a01b03948460ff989561254198956101a095600b959261256a575b50508160011b916000199060031b1c19161781555b60018101866020860151166001600160a01b031982541617905560408401516002820155606084015160038201556080840151600482015560a0840151600582015560c0840151600682015560e0840151600782015561010084015160088201556101208401516009820155610140840151600a82015501916124f16101608201511515849060ff801983541691151516179055565b610180810151835461ff00191690151560081b61ff00161783550151815462ff0000191690151560101b62ff00001617905561252c85613d41565b612537600354613d7d565b6003551693613d8c565b91167f92506598bdd88f441b297d84bef27f29f980b4d44a50ec9e839cb69d413e6de98480a480f35b015190503880612446565b849052602089209190895b601f19851681106125d957506001600160a01b039460018561254198956101a095600b9560ff9c99601f198116106125c0575b505050811b01815561245b565b015160001960f88460031b161c191690553880806125b3565b91926020600181928685015181550194019201612580565b83895260208920601f840160051c81016020851061262b575b601f830160051c82018110612620575050612416565b8a815560010161260a565b508061260a565b634e487b7160e01b88526041600452602488fd5b604051630188c99160e11b8152600490fd5b508315612350565b50821561234a565b8215158061267f575b61267a90613c0e565b612359565b50831515612671565b604051632ecdede360e11b8152600490fd5b50346102405760208060031936011261096a576126b56136a9565b906126be6146b8565b6126c66149bb565b6126ce61497e565b6001600160a01b0390818316918215610fd157845416604051936370a0823160e01b85523060048601528285602481855afa9485156106b35786956127ca575b5060405163a9059cbb60e01b81526001600160a01b03919091166004820152602481018590529082908290604490829089905af19182156127bf5785926127a2575b505015610674577f5fafa99d0643513820be26656b45130b01e1c03062e1266bf36f88cbd3bd96958380a360017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005580f35b6127b89250803d106106ac5761069e81836136f8565b3880612750565b6040513d87823e3d90fd5b909194508281813d83116127f4575b6127e381836136f8565b81010312611358575193908261270e565b503d6127d9565b50346102405760208060031936011261096a5760ff612818613683565b612820614710565b16908183526004815260ff600b60408520015460101c16156103c4578183526004815260ff600b604085200154166103b2578183526004815260ff600b60408520015460081c16156103a05761287461497e565b8183526004815260408320600b81019160ff835460081c16156103a05761271060038301541461298657838552600581526128b960408620600181549101549061390f565b9081600a84015410612942579161290791600561290f94878952526128e6600260408920019182546139dc565b905561290160028201549160096008820154910154906139dc565b9061390f565b6002546139dc565b600255805461ff00191690557fc5877f6f3e6374abff4fdca3b969ce0a747a7bf2238a8c4db4950ff6757be8188280a280f35b6064906040519062461bcd60e51b82526004820152601960248201527f4e6f7420656e6f75676820746f6b656e7320746f206c6f636b000000000000006044820152fd5b60405162461bcd60e51b815260206004820152600c60248201527f43616e206e6f74206c6f636b00000000000000000000000000000000000000006044820152606490fd5b503461024057602090816003193601126102405760ff6129e9613683565b168082526004835260ff600b60408420015460101c16156103c4578082526004835260ff600b604084200154166103b2578082526004835260ff600b60408420015460081c16156103a05780825260048352604082209160ff600b84015460081c16156103a05761271060038401541461298657604081600a93612a7a93526005865220600181549101549061390f565b9101541015604051908152f35b5034610240578060031936011261024057602060ff7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330054166040519015158152f35b5034610240576040366003190112610240576020610992602435600435613dac565b50346102405780600319360112610240576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003612b565760206040517f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8152f35b60405163703e46dd60e11b8152600490fd5b503461024057612b773661376d565b91612b83979697614710565b612b8b61497e565b6001600160a01b03861615610fd1576127108411612688576127108403612fa557801580612f9d575b80612f95575b612bc390613c80565b60ff87168952600460205260ff600b60408b20015460101c166126465788549360ff8560a01c1615612f5057612c0786600254612c0282821015613ccc565b61390f565b600255612710612c1782886139a9565b04946040516370a0823160e01b81523060048201526020816024816001600160a01b0386165afa908115612f45578c91612f0f575b5086116107385760405163a9059cbb60e01b81526001600160a01b03808a16600483015260248201889052909160209183919082908f9082604481010393165af1908115612f04578b91612ee5575b50156106745760405195612cae876136bf565b8987526001600160a01b038816602088015260408701526060860152608085015260a084015260c08301524260e0830152806101008301528561012083015261014082015284610160820152600161018082015260016101a082015260ff83168552600460205260408520815180519067ffffffffffffffff821161263257612d37835461396f565b601f8111612ea4575b5060209088601f8411600114612e42576001600160a01b03948460ff9895612e1998956101a095600b959261256a5750508160011b916000199060031b1c191617815560018101866020860151166001600160a01b031982541617905560408401516002820155606084015160038201556080840151600482015560a0840151600582015560c0840151600682015560e0840151600782015561010084015160088201556101208401516009820155610140840151600a82015501916124f16101608201511515849060ff801983541691151516179055565b91167f93f35f15a7968bd19c74ee3fcdde46330e5c6b9d563f6650cc7343cbb07530d38480a480f35b849052602089209190895b601f1985168110612e8c57506001600160a01b0394600185612e1998956101a095600b9560ff9c99601f198116106125c057505050811b01815561245b565b91926020600181928685015181550194019201612e4d565b83895260208920601f840160051c810160208510612ede575b601f830160051c82018110612ed3575050612d40565b8a8155600101612ebd565b5080612ebd565b612efe915060203d6020116106ac5761069e81836136f8565b38612c9b565b6040513d8d823e3d90fd5b90506020813d602011612f3d575b81612f2a602093836136f8565b81010312612f39575138612c4c565b8b80fd5b3d9150612f1d565b6040513d8e823e3d90fd5b60405162461bcd60e51b815260206004820152601460248201527f544745206e6f74206578656375746564207965740000000000000000000000006044820152606490fd5b508215612bba565b508115612bb4565b81151580612fbc575b612fb790613c0e565b612bc3565b50821515612fae565b503461024057806003193601126102405760206109926139e9565b50604036600319011261024057612ff56136a9565b60243567ffffffffffffffff81116116be57366023820112156116be57613026903690602481600401359101613736565b6001600160a01b03807f0000000000000000000000000000000000000000000000000000000000000000168030149081156131e4575b50612b56576130696146b8565b6040516352d1902d60e01b8152908316926020918281600481885afa8691816131b1575b506130ab57604051634c9c8ce360e01b815260048101869052602490fd5b9385947f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc908181036131995750823b156131805780546001600160a01b0319168217905560405185917fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a28451156131635750808484610bec96519101845af4903d1561315a573d61313e8161371a565b9061314c60405192836136f8565b81528581943d92013e614b7c565b60609250614b7c565b935050505034613171575080f35b63b398979f60e01b8152600490fd5b604051634c9c8ce360e01b815260048101839052602490fd5b60249060405190632a87526960e21b82526004820152fd5b9091508381813d83116131dd575b6131c981836136f8565b810103126131d95751903861308d565b8680fd5b503d6131bf565b9050817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc541614153861305c565b50346102405760403660031901126102405761322c613683565b60ff613236613693565b9161323f614710565b1680835260206004815260ff600b60408620015460101c16156103c4578184526004815260ff600b60408620015460081c16156103a057818452600681526001600160a01b036040852093169283855281526040842060ff8154161561038e5760036132bd60ff92858852600785526001604089209101549061389d565b5001541661037c576003906132d061497e565b828552600681526040852084865281526132fb6001604087200154848752600783526040872061389d565b50906005613312600184015460028501549061390f565b91858852526133266040872091825461390f565b905501805460ff191660011790557fac11047e193c318e5debd57c940ee6e42dc6f0161faa9fbfc13e4d9d16869e6d8380a380f35b50346102405760403660031901126102405760ff604060209261337c613683565b83613385613693565b91168252600685526001600160a01b038383209116825284522054166040519015158152f35b50346102405780600319360112610240576133c46146b8565b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300805460ff8116156134235760ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a180f35b604051638dfc202b60e01b8152600490fd5b503461024057604036600319011261024057600435613452613693565b61345a61497e565b336001600160a01b038216036134815781610be357604051637ca5942560e01b8152600490fd5b60405162461bcd60e51b815260206004820152601b60248201527f43616e206f6e6c792072656e6f756e6365206f776e20726f6c657300000000006044820152606490fd5b503461024057604036600319011261024057610bec6004356134e6613693565b90808452600080516020614be083398151915260205261350c600160408620015461476c565b6148f6565b50346102405760403660031901126102405761352b613683565b9060ff613536613693565b9261353f613878565b5016918282526020926004845260ff600b60408520015460101c16156103c457808352600684526001600160a01b0360408420921691828452845260ff6040842054161561038e5760408360076080966135b695856135bc985260068252848420908452815260018484200154948352522061389d565b506138cf565b6135f26040518092606080916001600160a01b038151168452602081015160208501526040810151604085015201511515910152565bf35b503461024057602036600319011261024057600160406020926004358152600080516020614be08339815191528452200154604051908152f35b90503461096a57602036600319011261096a5760043563ffffffff60e01b81168091036116be5760209250637965db0b60e01b8114908115613672575b5015158152f35b6301ffc9a760e01b1490503861366b565b6004359060ff8216820361077257565b602435906001600160a01b038216820361077257565b600435906001600160a01b038216820361077257565b6101c0810190811067ffffffffffffffff82111761117157604052565b6080810190811067ffffffffffffffff82111761117157604052565b90601f8019910116810190811067ffffffffffffffff82111761117157604052565b67ffffffffffffffff811161117157601f01601f191660200190565b9291926137428261371a565b9161375060405193846136f8565b829481845281830111610772578281602093846000960137010152565b906101006003198301126107725760043560ff8116810361077257916024359067ffffffffffffffff82116107725780602383011215610772578160246137b993600401359101613736565b906044356001600160a01b03811681036107725790606435906084359060a4359060c4359060e43590565b67ffffffffffffffff81116111715760051b60200190565b60005b83811061380f5750506000910152565b81810151838201526020016137ff565b90602091613838815180928185528580860191016137fc565b601f01601f1916010190565b60609060031901126107725760043560ff8116810361077257906024356001600160a01b0381168103610772579060443590565b60405190613885826136dc565b60006060838281528260208201528260408201520152565b80548210156138b95760005260206000209060021b0190600090565b634e487b7160e01b600052603260045260246000fd5b906040516138dc816136dc565b606060ff600383956001600160a01b03815416855260018101546020860152600281015460408601520154161515910152565b9190820391821161391c57565b634e487b7160e01b600052601160045260246000fd5b906001548210156138b9576001600052601f8260051c7fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf601921690565b90600182811c9216801561399f575b602083101461398957565b634e487b7160e01b600052602260045260246000fd5b91607f169161397e565b8181029291811591840414171561391c57565b81156139c6570490565b634e487b7160e01b600052601260045260246000fd5b9190820180921161391c57565b60018054906000918260ff84549160ff60a09360a01c1615905b848110613a135750505050505090565b82613a1d82613932565b919054600392831b1c169081600052600460209080825260408060002093815193613a47856136bf565b82518d60009088548385613a5a8361396f565b808352938316928315613bf257505050600114613bad575b5081613a7f9103826136f8565b85526001600160a01b038d870154169085015260028501548092850152840154918260608501528401546080840152600584015489840152600684015460c08401528660078501549360e081019485528c600b600897888101546101008501526009810154610120850152600a8101546101408501520154918b8316151590816101608201526101a08d808661018085019c1c16151595868c5260101c161515910152613b9f575081613b97575b50613b76575b50505115159081613b6b575b50613b4f575b5085905b01613a03565b869197613b5e613b6492614437565b906139dc565b9690613b45565b905051151538613b3f565b613b88613b8f939c92612710926139a9565b04906139dc565b983880613b33565b905038613b2d565b979650505050505050613b49565b90509c9f9e9d9c8760005282600020906000915b818310613bdf5750509e9f9c9d9e8183613a7f928201019150613a72565b8054848401860152918401918f01613bc1565b60ff19168282015292151560051b81019092019250613a729050565b15613c1557565b60405162461bcd60e51b815260206004820152603860248201527f4d75737420686176652076657374696e6720706572696f6420616e642066726560448201527f7175656e6379207768656e206e6f7420313030252054474500000000000000006064820152608490fd5b15613c8757565b60405162461bcd60e51b815260206004820152600e60248201527f496e76616c696420696e707574730000000000000000000000000000000000006044820152606490fd5b15613cd357565b60405162461bcd60e51b815260206004820152602860248201527f496e73756666696369656e74207265736572766520666f72207468697320616c6044820152673637b1b0ba34b7b760c11b6064820152608490fd5b90816020910312610772575180151581036107725790565b6001546801000000000000000081101561117157806001613d659201600155613932565b60ff80839493549260031b9316831b921b1916179055565b600019811461391c5760010190565b613da4906020604051928284809451938492016137fc565b810103902090565b9061271080821161268857600254918215613e6157613dcf846024941015613ccc565b60009360206001600160a01b03865416604051958680926370a0823160e01b82523060048301525afa9384156127bf578594613e2b575b5090613e11916139a9565b04808210613e1e57505090565b613e28925061390f565b90565b9093506020813d602011613e59575b81613e47602093836136f8565b8101031261135c575192613e11613e06565b3d9150613e3a565b60405162461bcd60e51b815260206004820152601460248201527f4e6f207265736572766520617661696c61626c650000000000000000000000006044820152606490fd5b80518210156138b95760209160051b010190565b15613ec157565b60405162461bcd60e51b815260206004820152601660248201527f4e6f20706f6f6c20636f6e6669677572656420796574000000000000000000006044820152606490fd5b60ff1660ff811461391c5760010190565b60ff1660009080825260209060058252613f8b82613f3f60408620600181549101549061390f565b855493865260048083526040808820600101549051636eb1769f60e11b81526001600160a01b039182169281019290925230602483015291949093849290911690829081906044820190565b03915afa928315611960578493613fab575b5050808210613e1e57505090565b9080929350813d8311613fd4575b613fc381836136f8565b810103126116be5751903880613f9d565b503d613fb9565b60ff16906000918083526020600481526040918285209260078401549485158015614138575b61412f5761403693600791848952600682526001600160a01b03848a209116895281526001838920015493885252852061389d565b509060ff60038301541661412957600182015461271061405a6003840154836139a9565b0491859480421015614120575b60048201549061407782826139dc565b4210156140a0575b505050505060020154908181111561409b57613e28925061390f565b505090565b6140b3600296979493926140b9926139dc565b4261390f565b6005820154908181106140e2575050506140d692613b5e9161390f565b915b903880808061407f565b9061410f6141159261410960066140ff61411a9a613b5e9961390f565b96015480926139bc565b926139bc565b926139a9565b6139bc565b916140d8565b94508294614067565b50505090565b50505050505090565b50600684528187206001600160a01b0382168852845260ff828820541615614001565b1561416257565b60405162461bcd60e51b815260206004820152602860248201527f43616e277420616c6c6f63617465206d6f7265207468616e20706f6f6c20616c6044820152673637b1b0ba34b7b760c11b6064820152608490fd5b60018054600091829083549260ff808560a01c1615905b82851061426757505050505060206001600160a01b03916024604051809481936370a0823160e01b8352306004840152165afa90811561425b57600091614229575b50818110614220575050600090565b613e289161390f565b90506020813d602011614253575b81614244602093836136f8565b81010312610772575138614211565b3d9150614237565b6040513d6000823e3d90fd5b90919293958161427688613932565b919054600392831b1c169081600052600491602083815260409283600020908451926142a1846136bf565b85518c8160008654856142b38261396f565b80855294821691821561441a5750506001146143d8575b6142d6925003826136f8565b84526001600160a01b038c8401541690840152600282015494830194855281015494606083019586528101546080830152600581015460a0830152600681015460c08301526007810154918260e08201526101a088600b600894858101546101008601526009810154610120860152600a81015461014086015201548181818116151596876101608801521c16151561018085015260101c1615159101526143cc5786156143a257505091612710613b88614396938995519051906139a9565b965b01939291906141cf565b915091509791976143b6575b508490614398565b859197613b5e6143c592614437565b96906143ae565b50505050958490614398565b50838f928760005281600020936000945b8286106143ff575050506142d6928201016142ca565b809192945054838688010152019201918f91849286926143e9565b60ff1916848201526142d694151560051b84010191506142ca9050565b60ff8116600052600460205260ff600b6040600020015460101c16156103c457613e289060ff60009116815260206004815260408220906040519061447b826136bf565b6040518354818661448b8361396f565b928383526001908660018216918260001461469857505060011461465c575b506144b7925003826136f8565b82526001600160a01b0360018401541690820152600282015490604081019182526003830154906060810191825260048401549160808201838152600586015460a084019481865260068801549460c0810195865260078901549060e081019282845260088b0154946101008301958652600b60098d01549c61012085019d8e52600a81015461014086015201549260ff841615156101608201526101a060ff610180830195818160081c161515875260101c16151591015215928315614653575b831561463e575b50508115614634575b506146295761459c6145b491514261390f565b936127106145ad89519251836139a9565b049061390f565b956145c283518751906139dc565b84101561460d575050614115926145ee6145e66145f897969461410f94519061390f565b8251906139bc565b92519051906139bc565b9051908181111561409b57613e28925061390f565b93509593505050613e28945061290192505192519051906139dc565b505050505050505090565b9050511538614589565b6146499293506139dc565b4210903880614580565b80159350614579565b8591508789528189209089915b8583106146805750506144b79350820101386144aa565b80548388018501528694508793909201918101614669565b60ff1916858201526144b795151560051b85010192503891506144aa9050565b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604081205460ff16156146f25750565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b3360009081527f06484cc59dc38e4f67c31122333a17ca81b3ca18cdf02bfc298072fa52b0316a60205260409020547f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b089060ff16156146f25750565b80600052600080516020614be083398151915260205260406000203360005260205260ff60406000205416156146f25750565b6001600160a01b031660008181527f06484cc59dc38e4f67c31122333a17ca81b3ca18cdf02bfc298072fa52b0316a60205260408120549091907f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0890600080516020614be08339815191529060ff16614129578184526020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b6001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d6020526040812054909190600080516020614be08339815191529060ff1661409b578280526020526040822081835260205260408220600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b90600091808352600080516020614be0833981519152806020526001600160a01b036040852093169283855260205260ff60408520541615600014614129578184526020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b60ff7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330054166149a957565b60405163d93c066560e01b8152600490fd5b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0060028154146149eb5760029055565b604051633ee5aeb560e01b8152600490fd5b6001600160a01b031660008181527f06484cc59dc38e4f67c31122333a17ca81b3ca18cdf02bfc298072fa52b0316a60205260408120549091907f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0890600080516020614be08339815191529060ff161561412957818452602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b90600091808352600080516020614be0833981519152806020526001600160a01b036040852093169283855260205260ff60408520541660001461412957818452602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c1615614b6a57565b604051631afcd79f60e31b8152600490fd5b90614ba35750805115614b9157602081519101fd5b60405163d6bda27560e01b8152600490fd5b81511580614bd6575b614bb4575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b15614bac56fe02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a26469706673582212200d346eddfb6aac112faa8d048262e37ecf9ab27ecdc40855bee70d0902f2e81764736f6c63430008160033