0 txs
0 calls
constructor
No constructor.
functions
agentFactoryAddress
viewfunction agentFactoryAddress() view returns (address)
agentTokenAddress
viewfunction agentTokenAddress() view returns (address)
agentTokenLpSupply
viewfunction agentTokenLpSupply() view returns (uint256)
agentTokenTotalSupply
viewfunction agentTokenTotalSupply() view returns (uint256)
claimableAgentTokens
viewfunction claimableAgentTokens(address) view returns (uint256)
daoThreshold
viewfunction daoThreshold() view returns (uint256)
daoVotingPeriod
viewfunction daoVotingPeriod() view returns (uint32)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
endTime
viewfunction endTime() view returns (uint256)
FACTORY_ROLE
viewfunction FACTORY_ROLE() view returns (bytes32)
factory
viewfunction factory() view returns (address)
genesisCores
viewfunction genesisCores(uint256) view returns (uint8)
genesisId
viewfunction genesisId() view returns (uint256)
genesisName
viewfunction genesisName() view returns (string)
genesisTicker
viewfunction genesisTicker() view returns (string)
getClaimableAgentToken
viewfunction getClaimableAgentToken(address userAddress) view returns (uint256)
getGenesisInfo
viewfunction getGenesisInfo() view returns (tuple)
getParticipantCount
viewfunction getParticipantCount() view returns (uint256)
getParticipantsInfo
viewfunction getParticipantsInfo(uint256[] participantIndexes) view returns (tuple[])
getParticipantsPaginated
viewfunction getParticipantsPaginated(uint256 startIndex, uint256 pageSize) view returns (address[])
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isCancelled
viewfunction isCancelled() view returns (bool)
isEnded
viewfunction isEnded() view returns (bool)
isFailed
viewfunction isFailed() view returns (bool)
isStarted
viewfunction isStarted() view returns (bool)
mapAddrToVirtuals
viewfunction mapAddrToVirtuals(address) view returns (uint256)
maxContributionVirtualAmount
viewfunction maxContributionVirtualAmount() view returns (uint256)
participants
viewfunction participants(uint256) view returns (address)
refundUserCountForFailed
viewfunction refundUserCountForFailed() view returns (uint256)
reserveAmount
viewfunction reserveAmount() view returns (uint256)
startTime
viewfunction startTime() view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
tbaImplementation
viewfunction tbaImplementation() view returns (address)
tbaSalt
viewfunction tbaSalt() view returns (bytes32)
virtualTokenAddress
viewfunction virtualTokenAddress() view returns (address)
cancelGenesis
nonpayablefunction cancelGenesis()
claimAgentToken
nonpayablefunction claimAgentToken(address userAddress)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(tuple params)
onGenesisFailed
nonpayablefunction onGenesisFailed(uint256[] participantIndexes)
onGenesisSuccess
nonpayablefunction onGenesisSuccess(address[] refundVirtualsTokenUserAddresses, uint256[] refundVirtualsTokenUserAmounts, address[] distributeAgentTokenUserAddresses, uint256[] distributeAgentTokenUserAmounts, address creator) returns (address)
participate
nonpayablefunction participate(uint256 pointAmt, uint256 virtualsAmt)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
resetTime
nonpayablefunction resetTime(uint256 newStartTime, uint256 newEndTime)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
withdrawLeftAssetsAfterFinalized
nonpayablefunction withdrawLeftAssetsAfterFinalized(address to, address token, uint256 amount)
events
AgentTokenClaimed
event AgentTokenClaimed(uint256 indexed genesisID, address indexed user, uint256 amount)
AssetsWithdrawn
event AssetsWithdrawn(uint256 indexed genesisID, address indexed to, address token, uint256 amount)
GenesisCancelled
event GenesisCancelled(uint256 indexed genesisID)
GenesisFailed
event GenesisFailed(uint256 indexed genesisID)
GenesisSucceeded
event GenesisSucceeded(uint256 indexed genesisID)
Initialized
event Initialized(uint64 version)
Participated
event Participated(uint256 indexed genesisID, address indexed user, uint256 point, uint256 virtuals)
RefundClaimed
event RefundClaimed(uint256 indexed genesisID, address indexed user, 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)
TimeReset
event TimeReset(uint256 oldStartTime, uint256 oldEndTime, uint256 newStartTime, uint256 newEndTime)
VirtualsWithdrawn
event VirtualsWithdrawn(uint256 indexed genesisID, address indexed to, address token, uint256 amount)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
FailedInnerCall
error FailedInnerCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x60808060405234601a5760016000556144c890816100208239f35b600080fdfe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a7146138755750806304a0fb171461383a5780630c1cc6cf1461381c578063129874aa14613425578063159a2f32146133eb5780631b549871146133cd578063248a9ca3146133a75780632f2ff15d146133765780633197cbb61461335857806335c1d3491461331657806336568abe146132d05780633a8670ea146132b25780634269036a146132945780634351af78146132765780634b09b72a146132585780634bc041091461322f5780634c35cebd14612387578063544736e614612366578063582073aa1461233d57806369b01c32146123215780636ac7c1a0146121e057806378e97925146121c25780637cefadd714611d725780637f21981614611f4057806385e11dfc14611f2257806386604cd514611e7c57806387c91f2a14611dac5780639071aba114611d7257806391d1485414611d185780639500340814611c4157806395ee122114611c1b5780639c04b83614611bf2578063a1949bcb14611ba5578063a217fddf14611b89578063a4fd6f5614611b68578063a6c5809714611b41578063ad60572914611b23578063af29dea214611afa578063b14f058b146118ed578063c45a0155146118c4578063c7959e4514611890578063d547741f14611858578063e99e855a1461183a578063f416334014611814578063f783489114610c86578063fd8735a5146103945763fdd8ecc91461022457600080fd5b3461038f57602036600319011261038f576004356001600160401b03811161038f5761025490369060040161393b565b9061025e82613d3d565b9161026c60405193846139dc565b808352601f1961027b82613d3d565b0160005b81811061036a5750506003549160005b8281106102f1578460405180916020820160208352815180915260206040840192019060005b8181106102c3575050500390f35b825180516001600160a01b0316855260209081015181860152869550604090940193909201916001016102b5565b8061030a856103036001948787613cf4565b3510613da3565b61031e610318828686613cf4565b3561390a565b838060a01b0391549060031b1c16806000528260205260406000205460405191610347836139c1565b825260208201526103588288613d54565b526103638187613d54565b500161028f565b602090604051610379816139c1565b600081526000838201528282880101520161027f565b600080fd5b3461038f57600036600319011261038f5760006102606040516103b6816139a5565b82815282602082015282604082015282606082015260606080820152606060a0820152606060c08201528260e08201528261010082015282610120820152826101408201528261016082015282610180820152826101a0820152826101c0820152826101e0820152826102008201528261022082015282610240820152015260055461048e60018060a01b0360065416916007549260085493600c5494600d54600e5460018060a01b03600f541660018060a01b036010541691601154936012549560135497601454996015549b6040519d8e6139a5565b8d5260208d015260408c015260608b01526104a76139fd565b60808b01526104b4613aa4565b60a08b01526040519a8b6020600b549d8e8152019c600b600052600080516020614433833981519152906000915b81601f840110610ae3579d9e8f9060ff9f9461060d91819560c09563ffffffff9a99985491818110610acf575b818110610ab7575b818110610a9f575b818110610a87575b818110610a71575b818110610a59575b818110610a41575b818110610a29575b818110610a11575b8181106109f9575b8181106109e1575b8181106109c9575b8181106109b1575b818110610999575b818110610981575b818110610969575b818110610951575b818110610939575b818110610921575b818110610909575b8181106108f1575b8181106108d9575b8181106108c1575b8181106108a9575b818110610893575b81811061087b575b818110610863575b81811061084b575b818110610833575b81811061081b575b818110610803575b106107f5575b5003846139dc565b015260e08d015260018060a01b0381166101008d015260a01c166101208b01526101408a01526101608901526101808801526101a08701526101c08601526101e085015261020084015260018060a01b038116610220840152818160a01c16151561024084015260a81c161515610260820152604051602081528151602082015260018060a01b03602083015116604082015260408201516060820152606082015160808201526106e86106d2608084015161028060a08501526102a0840190613b29565b60a0840151838203601f190160c0850152613b29565b60c083015190601f198382030160e08401526020808351928381520192019060005b8181106107dc575050506102608360e08495015161010085015260018060a01b036101008201511661012085015263ffffffff6101208201511661014085015261014081015161016085015260018060a01b036101608201511661018085015260018060a01b03610180820151166101a08501526101a08101516101c08501526101c08101516101e08501526101e081015161020085015261020081015161022085015260018060a01b0361022082015116610240850152610240810151151582850152015115156102808301520390f35b825160ff1684526020938401939092019160010161070a565b60f81c815260200138610605565b9260ff6001916020918560f01c1681520193016105ff565b9260ff6001916020918560e81c1681520193016105f7565b9260ff6001916020918560e01c1681520193016105ef565b9260ff6001916020918560d81c1681520193016105e7565b9260ff6001916020918560d01c1681520193016105df565b9260ff6001916020918560c81c1681520193016105d7565b82881c60ff1684526020909301926001016105cf565b9260ff6001916020918560b81c1681520193016105c7565b9260ff6001916020918560b01c1681520193016105bf565b9260ff6001916020918560a81c1681520193016105b7565b9260ff6001916020918560a01c1681520193016105af565b9260ff6001916020918560981c1681520193016105a7565b9260ff6001916020918560901c16815201930161059f565b9260ff6001916020918560881c168152019301610597565b9260ff6001916020918560801c16815201930161058f565b9260ff6001916020918560781c168152019301610587565b9260ff6001916020918560701c16815201930161057f565b9260ff6001916020918560681c168152019301610577565b9260ff6001916020918560601c16815201930161056f565b9260ff6001916020918560581c168152019301610567565b9260ff6001916020918560501c16815201930161055f565b9260ff6001916020918560481c168152019301610557565b9260ff6001916020918560401c16815201930161054f565b9260ff6001916020918560381c168152019301610547565b9260ff6001916020918560301c16815201930161053f565b9260ff6001916020918560281c168152019301610537565b602083811c60ff1685529093019260010161052f565b9260ff6001916020918560181c168152019301610527565b9260ff6001916020918560101c16815201930161051f565b9260ff6001916020918560081c168152019301610517565b60ff8316845260209093019260010161050f565b9e8f5460ff811682528060081c60ff1660208301528060101c60ff1660408301528060181c60ff1660608301528060201c60ff1660808301528060281c60ff1660a08301528060301c60ff1660c08301528060381c60ff1660e08301528060401c60ff166101008301528060481c60ff166101208301528060501c60ff166101408301528060581c60ff166101608301528060601c60ff166101808301528060681c60ff166101a08301528060701c60ff166101c08301528060781c60ff166101e08301528060801c60ff166102008301528060881c60ff166102208301528060901c60ff166102408301528060981c60ff166102608301528060a01c60ff166102808301528060a81c60ff166102a08301528060b01c60ff166102c08301528060b81c60ff166102e08301528060c01c60ff166103008301528060c81c60ff166103208301528060d01c60ff166103408301528060d81c60ff166103608301528060e01c60ff166103808301528060e81c60ff166103a08301528060f01c60ff166103c083015260f81c6103e0820152610400019e60010191602001916104e2565b3461038f57602036600319011261038f576004356001600160401b03811161038f578060040190610220600319823603011261038f57600080516020614473833981519152549160ff8360401c1615926001600160401b0381168015908161180c575b6001149081611802575b1590816117f9575b506117e85767ffffffffffffffff19811660011760008051602061447383398151915255836117bb575b5060ff6000805160206144738339815191525460401c16156117aa57803580156117705760248301906001600160a01b03610d5f83613d04565b161561172b57604484013590606485013590610d7b8284614254565b6084860190610d8a8287613de5565b9050156116ef5760a48701610d9f8188613de5565b9050156116b15760c48801610db48189613e17565b905015611674576101048901906001600160a01b03610dd283613d04565b1615611624576101648a01986001600160a01b03610def8b613d04565b16156115df576101848b01936001600160a01b03610e0c86613d04565b161561159a576101a48c0135958615611547576101c48d01359788156114f2576101e48e0135998a15611495576102048f01359b8c1561143b578c8c106113c457600593909355610e88926001600160a01b03610e688f613d04565b166001600160601b0360a01b600654161760065560075560085583613de5565b906001600160401b0382116111e957610ea260095461396b565b601f8111611362575b50600090601f83116001146112ed57610ee5939291600091836112e2575b50508160011b916000199060031b1c1916176009555b82613de5565b906001600160401b0382116111e957610eff600a5461396b565b601f8111611280575b50600090601f831160011461120a57610f4194939291600091836111ff575b50508160011b916000199060031b1c191617600a55613e17565b906001600160401b0382116111e957600160401b82116111e957600b5482600b55808310611167575b5090600b6000528060051c9060005b8281106111235750601f1981169003806110c5575b50505060e4890135600c556001600160a01b0390610fab90613d04565b1696600d54986101248101359063ffffffff8216820361038f576110659a6110609a6101449363ffffffff60a01b9060a01b16916001600160401b0360c01b161717600d550135600e5561100560018060a01b0391613d04565b166001600160601b0360a01b600f541617600f5561102960018060a01b0391613d04565b166001600160601b0360a01b601054161760105560115560125560135560145561105a61105582613d04565b613f4f565b50613d04565b614001565b5061106c57005b68ff0000000000000000196000805160206144738339815191525416600080516020614473833981519152557fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602060405160018152a1005b9160009260005b8181106110ef5750505060008051602061443383398151915201558a8080610f8e565b90919360206111196001928461110489613e63565b919060ff809160031b9316831b921b19161790565b95019291016110cc565b6000805b6020811061114a5750600080516020614433833981519152820155600101610f79565b9490602061115e6001928861110486613e63565b92019501611127565b6111a890601f80850160051c91818616806111ae575b500160051c600080516020614433833981519152019060008051602061443383398151915201613e4c565b8c610f6a565b7f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db88401908154906000199060200360031b1c1690553861117d565b634e487b7160e01b600052604160045260246000fd5b013590508f80610f27565b600a82526000805160206143f383398151915291601f198416815b8181106112685750916001939185610f41989796941061124e575b505050811b01600a55613e17565b0135600019600384901b60f8161c191690558f8080611240565b91936020600181928787013581550195019201611225565b6112c690600a600052601f840160051c6000805160206143f38339815191520190602085106112cc575b601f0160051c6000805160206143f38339815191520190613e4c565b8e610f08565b6000805160206143f383398151915291506112aa565b013590503880610ec9565b6009825260008051602061441383398151915291601f198416815b81811061134a5750916001939185610ee597969410611330575b505050811b01600955610edf565b0135600019600384901b60f8161c19169055388080611322565b91936020600181928787013581550195019201611308565b6113a8906009600052601f840160051c6000805160206144138339815191520190602085106113ae575b601f0160051c6000805160206144138339815191520190613e4c565b8f610eab565b600080516020614413833981519152915061138c565b60405162461bcd60e51b815260206004820152604360248201527f4167656e7420746f6b656e20746f74616c20737570706c79206d75737420626560448201527f2067726561746572207468616e206167656e7420746f6b656e206c7020737570606482015262706c7960e81b608482015260a490fd5b60405162461bcd60e51b815260206004820152602c60248201527f4167656e7420746f6b656e206c7020737570706c79206d75737420626520677260448201526b06561746572207468616e20360a41b6064820152608490fd5b60405162461bcd60e51b815260206004820152602f60248201527f4167656e7420746f6b656e20746f74616c20737570706c79206d75737420626560448201526e02067726561746572207468616e203608c1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602760248201527f4d617820636f6e747269627574696f6e206d75737420626520677265617465726044820152660207468616e20360cc1b6064820152608490fd5b60405162461bcd60e51b815260206004820152602560248201527f5265736572766520616d6f756e74206d75737420626520677265617465722074604482015264068616e20360dc1b6064820152608490fd5b60405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964207669727475616c20746f6b656e20616464726573730000006044820152606490fd5b60405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964206167656e7420666163746f727920616464726573730000006044820152606490fd5b60405162461bcd60e51b815260206004820152602260248201527f496e76616c69642054424120696d706c656d656e746174696f6e206164647265604482015261737360f01b6064820152608490fd5b60405162461bcd60e51b8152602060048201526015602482015274496e76616c69642067656e6573697320636f72657360581b6044820152606490fd5b60405162461bcd60e51b815260206004820152601660248201527524b73b30b634b21033b2b732b9b4b9903a34b1b5b2b960511b6044820152606490fd5b60405162461bcd60e51b8152602060048201526014602482015273496e76616c69642067656e65736973206e616d6560601b6044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527f496e76616c696420666163746f727920616464726573730000000000000000006044820152606490fd5b60405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a590819d95b995cda5cc8125160721b6044820152606490fd5b631afcd79f60e31b60005260046000fd5b68ffffffffffffffffff191668010000000000000001176000805160206144738339815191525583610d25565b63f92ee8a960e01b60005260046000fd5b90501585610cfb565b303b159150610cf3565b859150610ce9565b3461038f57600036600319011261038f57602060ff60155460a01c166040519015158152f35b3461038f57600036600319011261038f576020601354604051908152f35b3461038f57604036600319011261038f5761188e6004356118776138f4565b9061188961188482613ca0565b613f05565b614178565b005b3461038f57600036600319011261038f576118c06118ac613aa4565b604051918291602083526020830190613b29565b0390f35b3461038f57600036600319011261038f576006546040516001600160a01b039091168152602090f35b3461038f57602036600319011261038f576004356001600160401b03811161038f5761191d90369060040161393b565b611925613e93565b61192d613e71565b6015549161194961193c613c01565b60ff8560a81c1615613b6a565b611961611954613bcd565b60ff8560a01c1615613b6a565b6119ad60409384519061197486836139dc565b601c82527f4167656e7420746f6b656e20616c7265616479206c61756e636865640000000060208301526001600160a01b031615613b6a565b6119c46008544210156119be613cc1565b90613b6a565b60005b828110611a2157600454600354146119e1575b6001600055005b6015805460ff60a01b1916600160a01b1790556005547f27e87ae1639d912017e23d0f562036b9a6f7febb9c4f2c69edbd9a58b903fb7f600080a26119da565b611a39611a2f828585613cf4565b3560035411613da3565b611a47610318828585613cf4565b905460039190911b1c6001600160a01b03166000818152600160205285902054919082611a7a575b5060019150016119c7565b600454926000198414611ae45760018094016004558160005283602052600087812055611ab18183868060a01b0360105416614218565b7ff3f402280ef0a7905e124aa621b65eaeb2725c343e8b36d398ed78c29daf285c6020600554928951908152a385611a6f565b634e487b7160e01b600052601160045260246000fd5b3461038f57600036600319011261038f576015546040516001600160a01b039091168152602090f35b3461038f57600036600319011261038f576020600354604051908152f35b3461038f57600036600319011261038f57602063ffffffff600d5460a01c16604051908152f35b3461038f57600036600319011261038f576020600854421015604051908152f35b3461038f57600036600319011261038f57602060405160008152f35b3461038f57602036600319011261038f57600435600b5481101561038f57602090600b60005260ff8160051c600080516020614433833981519152015460f86040519360031b161c168152f35b3461038f57600036600319011261038f57600d546040516001600160a01b039091168152602090f35b3461038f57600036600319011261038f57602060ff60155460a81c166040519015158152f35b3461038f57602036600319011261038f57611c5a6138de565b611c62613e71565b6001600160a01b03811660008181526002602052604090205490918115611cde57600083815260026020526040812055601554611ca99183916001600160a01b0316614218565b7f5e38aeed1c1b58c3e2f08b92abfb82cb1d6cb83af72f3dd46a419e4ce856bf37602060055492604051908152a36001600055005b60405162461bcd60e51b81526020600482015260126024820152714e6f20746f6b656e7320746f20636c61696d60701b6044820152606490fd5b3461038f57604036600319011261038f57611d316138f4565b60043560005260008051602061445383398151915260205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b3461038f57602036600319011261038f576001600160a01b03611d936138de565b1660005260026020526020604060002054604051908152f35b3461038f577f29d6ce89701d2d2e06675ce74585fa05425950a176b2de69b63ef83af8490eb96080611ddd366138c8565b611de5613e93565b611ded613e71565b611e20601554611e0b611dfe613c01565b60ff8360a81c1615613b6a565b60ff611e15613bcd565b9160a01c1615613b6a565b60075491611e37611e2f613d68565b844210613b6a565b600854611e4d611e45613b9a565b824210613b6a565b611e578383614254565b8160075582600855604051938452602084015260408301526060820152a16001600055005b3461038f57600036600319011261038f57611e95613e93565b611e9d613e71565b601554611eab611dfe613c01565b611ec3611eb6613bcd565b60ff8360a01c1615613b6a565b611ed360075442106119be613d68565b611ee360085442106119be613b9a565b60ff60a81b1916600160a81b176015556005547fb68635d18159b99d3170ed410d81fc4347634708773fa694e12e534b96f1cefc600080a26001600055005b3461038f57600036600319011261038f576020600554604051908152f35b3461038f57606036600319011261038f57611f596138de565b611f616138f4565b3360009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260409020549091906044359060ff16156121a857611fa7613e71565b611fc9600854421015611fc1611fbb613cc1565b82613b6a565b6119be613cc1565b60155460ff8160a01c16908115612199575b8115612186575b5015612141576001600160a01b038316908115612104576040516370a0823160e01b8152306004820152602081602481865afa9081156120f8576000916120c6575b5081116120825761205781847f46136dc7988f307b7670342abc113edcd66636183537de2ca7776cedd89ba4e594614218565b600554604080516001600160a01b039687168152602081019390935293909416939290a36001600055005b606460405162461bcd60e51b815260206004820152602060248201527f496e73756666696369656e742062616c616e636520746f2077697468647261776044820152fd5b90506020813d6020116120f0575b816120e1602093836139dc565b8101031261038f575185612024565b3d91506120d4565b6040513d6000823e3d90fd5b60405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b6044820152606490fd5b60405162461bcd60e51b815260206004820152601960248201527f47656e65736973206e6f742066696e616c697a656420796574000000000000006044820152606490fd5b6001600160a01b03161515905084611fe2565b905060ff8160a81c1690611fdb565b63e2517d3f60e01b60005233600452600060245260446000fd5b3461038f57600036600319011261038f576020600754604051908152f35b3461038f576121ee366138c8565b90600354808210156122dc57806122058484613c93565b116122c8575b5061221582613d3d565b9161222360405193846139dc565b80835261222f81613d3d565b602084019290601f190136843760005b8281106122945783856040519182916020830190602084525180915260408301919060005b818110612272575050500390f35b82516001600160a01b0316845285945060209384019390920191600101612264565b806122a96122a460019385613c93565b61390a565b838060a01b0391549060031b1c166122c18288613d54565b520161223f565b819250906122d591613d30565b908261220b565b60405162461bcd60e51b815260206004820152601960248201527f537461727420696e646578206f7574206f6620626f756e6473000000000000006044820152606490fd5b3461038f57600036600319011261038f576118c06118ac6139fd565b3461038f57600036600319011261038f576010546040516001600160a01b039091168152602090f35b3461038f57600036600319011261038f576020600754421015604051908152f35b3461038f5760a036600319011261038f576004356001600160401b03811161038f576123b790369060040161393b565b6024356001600160401b03811161038f576123d690369060040161393b565b91906044356001600160401b03811161038f576123f790369060040161393b565b9290916064356001600160401b03811161038f5761241990369060040161393b565b9690956084356001600160a01b0381169081900361038f57612439613e93565b612441613e71565b60155461244f611dfe613c01565b61245a611eb6613bcd565b61246b6008544210156119be613cc1565b6004546131ea578286036131a5578988036131605760009060005b8481106130c057506001600160a01b0316159081156130ba576011546124ab91613c93565b905b6010546040516370a0823160e01b81523060048201526001600160a01b0390911692602082602481875afa80156120f857600090613086575b6124f292501015613c3c565b612736575b50506000805b89811061271657506015546040516370a0823160e01b815230600482015290602090829060249082906001600160a01b03165afa9081156120f8576000916126e4575b50106126a05760005b8481106125df57505050505060005b8281106125a2576020600554604051907f6d06bb775ac05411c90dc9e1c4bd9a325534cd1f73e434866aea631283294ab2600080a260155460016000556001600160a01b03168152f35b806125b06001928787613cf4565b35828060a01b036125ca6125c5848888613cf4565b613d04565b16600052600260205260406000205501612558565b806125ed6001928487613cf4565b35828060a01b036126026125c5848a89613cf4565b166000528260205261261a6040600020918254613d30565b9055612649828060a01b03601054166126376125c5848a89613cf4565b61264284878a613cf4565b3591614218565b60055461265a6125c5838988613cf4565b907ff3f402280ef0a7905e124aa621b65eaeb2725c343e8b36d398ed78c29daf285c602061268985888b613cf4565b3593604051948552868060a01b031693a301612549565b606460405162461bcd60e51b815260206004820152602060248201527f496e73756666696369656e74204167656e7420546f6b656e2062616c616e63656044820152fd5b90506020813d60201161270e575b816126ff602093836139dc565b8101031261038f57518a612540565b3d91506126f2565b9061272f600191612728848d8d613cf4565b3590613c93565b91016124fd565b600f5460115460405163095ea7b360e01b81526001600160a01b039092166004830152602482015290602090829060449082906000905af180156120f857613059575b5060018060a01b03600f5416604051918260006009546127988161396b565b90600181169081156130355750600114612fe6575b506127d691816b206279205669727475616c7360a01b600c9352036013198101865201846139dc565b600c5490600d54600e546011549161280860405197631fd16d3f60e11b895261012060048a0152610124890190613b29565b878103600319016024890152600a54600096916128248261396b565b8082529160018116908115612fc55750600114612f7e575b5050878603600319016044890152600b805480885260009182528997602001969594939291906000805160206144338339815191525b81601f840110612dcc57938997936000979389979360209d9b975491818110612dba575b818110612da4575b818110612d8e575b818110612d78575b818110612d64575b818110612d4e575b818110612d38575b818110612d22575b818110612d0c575b818110612cf6575b818110612ce0575b818110612cca575b818110612cb4575b818110612c9e575b818110612c88575b818110612c72575b818110612c5c575b818110612c46575b818110612c30575b818110612c1a575b818110612c04575b818110612bee575b818110612bd8575b818110612bc2575b818110612bac575b818110612b96575b818110612b80575b818110612b6a575b818110612b54575b818110612b3e575b818110612b28575b10612b15575b5060648701526001600160a01b038116608487015260a01c63ffffffff1660a486015260c485015260e484015261010483015203925af19081156120f857600091612ae3575b50600f546013546014546040516311e18acb60e11b8152600481019490945260248401919091526044830152306064830152602090829060849082906000906001600160a01b03165af19081156120f857600091612a9a575b506001600160a01b03168015612a55576001600160601b0360a01b601554161760155588806124f7565b60405162461bcd60e51b815260206004820152601b60248201527f4167656e7420746f6b656e206372656174696f6e206661696c656400000000006044820152606490fd5b6020813d602011612adb575b81612ab3602093836139dc565b81010312612ad75751906001600160a01b0382168203612ad4575089612a2b565b80fd5b5080fd5b3d9150612aa6565b90506020813d602011612b0d575b81612afe602093836139dc565b8101031261038f5751896129d2565b3d9150612af1565b60f81c8652948b019463ffffffff61298c565b978e60019160ff8560f01c168152019801612986565b978e60019160ff8560e81c16815201980161297e565b978e60019160ff8560e01c168152019801612976565b978e60019160ff8560d81c16815201980161296e565b978e60019160ff8560d01c168152019801612966565b978e60019160ff8560c81c16815201980161295e565b978e60019160ff8560c01c168152019801612956565b978e60019160ff8560b81c16815201980161294e565b978e60019160ff8560b01c168152019801612946565b978e60019160ff8560a81c16815201980161293e565b978e60019160ff8560a01c168152019801612936565b978e60019160ff8560981c16815201980161292e565b978e60019160ff8560901c168152019801612926565b978e60019160ff8560881c16815201980161291e565b978e60019160ff8560801c168152019801612916565b978e60019160ff8560781c16815201980161290e565b978e60019160ff8560701c168152019801612906565b978e60019160ff8560681c1681520198016128fe565b978e60019160ff8560601c1681520198016128f6565b978e60019160ff8560581c1681520198016128ee565b978e60019160ff8560501c1681520198016128e6565b978e60019160ff8560481c1681520198016128de565b978e60019160ff8560401c1681520198016128d6565b978e60019160ff8560381c1681520198016128ce565b978e60019160ff8560301c1681520198016128c6565b978e60019160ff8560281c1681520198016128be565b828f1c60ff168952978e01976001016128b6565b978e60019160ff8560181c1681520198016128ae565b978e60019160ff8560101c1681520198016128a6565b978e60019160ff8560081c16815201980161289e565b60ff83168952978e0197600101612896565b98509091929394959660016104006020928b5460ff8116825260ff8160081c168583015260ff8160101c16604083015260ff8160181c16606083015260ff81861c16608083015260ff8160281c1660a083015260ff8160301c1660c083015260ff8160381c1660e083015260ff8160401c1661010083015260ff8160481c1661012083015260ff8160501c1661014083015260ff8160581c1661016083015260ff8160601c1661018083015260ff8160681c166101a083015260ff8160701c166101c083015260ff8160781c166101e083015260ff8160801c1661020083015260ff8160881c1661022083015260ff8160901c1661024083015260ff8160981c1661026083015260ff8160a01c1661028083015260ff8160a81c166102a083015260ff8160b01c166102c083015260ff8160b81c166102e083015260ff8160c01c1661030083015260ff8160c81c1661032083015260ff8160d01c1661034083015260ff8160d81c1661036083015260ff8160e01c1661038083015260ff8160e81c166103a083015260ff8160f01c166103c083015260f81c6103e08201520199019201908a98979695949392612872565b919650906000906000805160206143f38339815191525b838310612fab575060209250010194388061283c565b600181602092949394548385870101520191019190612f95565b9050602093985060ff929192191683830152151560051b010194388061283c565b9150506009600052836000805160206144138339815191526000905b83821061301b57509091820160200190506127d66127ad565b6020919250806001915483858a0101520191018591613002565b60ff1916602085810191909152821515909202840190910191506127d690506127ad565b61307a9060203d60201161307f575b61307281836139dc565b810190613d18565b612779565b503d613068565b506020823d6020116130b2575b816130a0602093836139dc565b8101031261038f576124f291516124e6565b3d9150613093565b906124ad565b916001600160a01b036130d76125c5858b8a613cf4565b1660005260016020526040600020546130f184878a613cf4565b351161310f5761310860019161272885888b613cf4565b9201612486565b60405162461bcd60e51b8152602060048201526024808201527f496e73756666696369656e74205669727475616c20546f6b656e20636f6d6d696044820152631d1d195960e21b6064820152608490fd5b60405162461bcd60e51b815260206004820152601e60248201527f4d69736d61746368656420646973747269627574696f6e2061727261797300006044820152606490fd5b60405162461bcd60e51b815260206004820152601860248201527f4d69736d61746368656420726566756e642061727261797300000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601e60248201527f4f6e47656e657369734661696c656420616c72656164792063616c6c656400006044820152606490fd5b3461038f57600036600319011261038f57600f546040516001600160a01b039091168152602090f35b3461038f57600036600319011261038f576020601154604051908152f35b3461038f57600036600319011261038f576020600e54604051908152f35b3461038f57600036600319011261038f576020601454604051908152f35b3461038f57600036600319011261038f576020600454604051908152f35b3461038f57604036600319011261038f576132e96138f4565b336001600160a01b038216036133055761188e90600435614178565b63334bd91960e11b60005260046000fd5b3461038f57602036600319011261038f5760043560035481101561038f5761333f60209161390a565b905460405160039290921b1c6001600160a01b03168152f35b3461038f57600036600319011261038f576020600854604051908152f35b3461038f57604036600319011261038f5761188e6004356133956138f4565b906133a261188482613ca0565b6140cf565b3461038f57602036600319011261038f5760206133c5600435613ca0565b604051908152f35b3461038f57600036600319011261038f576020600c54604051908152f35b3461038f57602036600319011261038f576001600160a01b0361340c6138de565b1660005260016020526020604060002054604051908152f35b3461038f57613433366138c8565b61343b613e71565b60075442101561348360409182519061345484836139dc565b601782527f47656e65736973206e6f742073746172746564207965740000000000000000006020830152613b6a565b61349360085442106119be613b9a565b6134b96015546134a4611eb6613bcd565b60ff6134ae613c01565b9160a81c1615613b6a565b82156137cd57811561378a5760125482116137355760105481516370a0823160e01b81523360048201526001600160a01b0390911690602081602481855afa90811561372a579084916000916136f3575b509161351c6020926044941015613c3c565b8351636eb1769f60e11b815233600482015230602482015292839182905afa9081156136e8579083916000916136b3575b501061366457336000526001602052806000205415613600575b7f20fe128b25ee6824800a2ffce0bbace6ba602f124f276eeaaacd7a3967ab223f90336000526001602052806000206135a1848254613c93565b905560105481516323b872dd60e01b6020820152336024820152306044820152606480820186905281526135e8916001600160a01b03166135e36084836139dc565b6142e3565b60055492815194855260208501523393a36001600055005b60035490600160401b8210156111e9576136418260017f20fe128b25ee6824800a2ffce0bbace6ba602f124f276eeaaacd7a3967ab223f940160035561390a565b81546001600160a01b0360039290921b91821b19163390911b1790559050613567565b5162461bcd60e51b8152602060048201526024808201527f496e73756666696369656e74205669727475616c20546f6b656e20616c6c6f77604482015263616e636560e01b6064820152608490fd5b9150506020813d6020116136e0575b816136cf602093836139dc565b8101031261038f578290518561354d565b3d91506136c2565b82513d6000823e3d90fd5b9150506020813d602011613722575b8161370f602093836139dc565b8101031261038f5751839061351c61350a565b3d9150613702565b83513d6000823e3d90fd5b5162461bcd60e51b815260206004820152602960248201527f45786365656473206d6178696d756d207669727475616c732070657220636f6e6044820152683a3934b13aba34b7b760b91b6064820152608490fd5b5162461bcd60e51b815260206004820152601f60248201527f5669727475616c73206d7573742062652067726561746572207468616e2030006044820152606490fd5b5162461bcd60e51b815260206004820152602360248201527f506f696e7420616d6f756e74206d75737420626520677265617465722074686160448201526206e20360ec1b6064820152608490fd5b3461038f57600036600319011261038f576020601254604051908152f35b3461038f57600036600319011261038f5760206040517fdfbefbf47cfe66b701d8cfdbce1de81c821590819cb07e71cb01b6602fb0ee278152f35b3461038f57602036600319011261038f576004359063ffffffff60e01b821680920361038f57602091637965db0b60e01b81149081156138b7575b5015158152f35b6301ffc9a760e01b149050836138b0565b604090600319011261038f576004359060243590565b600435906001600160a01b038216820361038f57565b602435906001600160a01b038216820361038f57565b60035481101561392557600360005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b9181601f8401121561038f578235916001600160401b03831161038f576020808501948460051b01011161038f57565b90600182811c9216801561399b575b602083101461398557565b634e487b7160e01b600052602260045260246000fd5b91607f169161397a565b61028081019081106001600160401b038211176111e957604052565b604081019081106001600160401b038211176111e957604052565b90601f801991011681019081106001600160401b038211176111e957604052565b6040519060008260095491613a118361396b565b8083529260018116908115613a855750600114613a37575b613a35925003836139dc565b565b506009600090815290916000805160206144138339815191525b818310613a69575050906020613a3592820101613a29565b6020919350806001915483858901015201910190918492613a51565b60209250613a3594915060ff191682840152151560051b820101613a29565b60405190600082600a5491613ab88361396b565b8083529260018116908115613a855750600114613adb57613a35925003836139dc565b50600a600090815290916000805160206143f38339815191525b818310613b0d575050906020613a3592820101613a29565b6020919350806001915483858901015201910190918492613af5565b919082519283825260005b848110613b55575050826000602080949584010152601f8019910116010190565b80602080928401015182828601015201613b34565b15613b725750565b60405162461bcd60e51b815260206004820152908190613b96906024830190613b29565b0390fd5b60405190613ba96040836139dc565b601582527411d95b995cda5cc8185b1c9958591e48195b991959605a1b6020830152565b60405190613bdc6040836139dc565b601682527511d95b995cda5cc8185b1c9958591e4819985a5b195960521b6020830152565b60405190613c106040836139dc565b601982527f47656e6573697320616c72656164792063616e63656c6c6564000000000000006020830152565b15613c4357565b60405162461bcd60e51b815260206004820152602260248201527f496e73756666696369656e74205669727475616c20546f6b656e2062616c616e604482015261636560f01b6064820152608490fd5b91908201809211611ae457565b60005260008051602061445383398151915260205260016040600020015490565b60405190613cd06040836139dc565b601582527411d95b995cda5cc81b9bdd08195b991959081e595d605a1b6020830152565b91908110156139255760051b0190565b356001600160a01b038116810361038f5790565b9081602091031261038f5751801515810361038f5790565b91908203918211611ae457565b6001600160401b0381116111e95760051b60200190565b80518210156139255760209160051b010190565b60405190613d776040836139dc565b601782527f47656e6573697320616c726561647920737461727465640000000000000000006020830152565b15613daa57565b60405162461bcd60e51b8152602060048201526013602482015272496e646578206f7574206f6620626f756e647360681b6044820152606490fd5b903590601e198136030182121561038f57018035906001600160401b03821161038f5760200191813603831361038f57565b903590601e198136030182121561038f57018035906001600160401b03821161038f57602001918160051b3603831361038f57565b818110613e57575050565b60008155600101613e4c565b3560ff8116810361038f5790565b600260005414613e82576002600055565b633ee5aeb560e01b60005260046000fd5b3360009081527fae397ad4942fd55c39428db5ea3ac85cc8592b20d92437b6ec53a8b6ff39d42d602052604090205460ff1615613ecc57565b63e2517d3f60e01b600052336004527fdfbefbf47cfe66b701d8cfdbce1de81c821590819cb07e71cb01b6602fb0ee2760245260446000fd5b60008181526000805160206144538339815191526020908152604080832033845290915290205460ff1615613f375750565b63e2517d3f60e01b6000523360045260245260446000fd5b6001600160a01b03811660009081527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d602052604090205460ff16613ffb576001600160a01b031660008181527fb7db2dd08fcb62d0c9e08c51941cae53c267786a0b75803fb7960902fc8ef97d60205260408120805460ff191660011790553391907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b50600090565b6001600160a01b03811660009081527fae397ad4942fd55c39428db5ea3ac85cc8592b20d92437b6ec53a8b6ff39d42d602052604090205460ff16613ffb576001600160a01b031660008181527fae397ad4942fd55c39428db5ea3ac85cc8592b20d92437b6ec53a8b6ff39d42d60205260408120805460ff191660011790553391907fdfbefbf47cfe66b701d8cfdbce1de81c821590819cb07e71cb01b6602fb0ee27907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b6000818152600080516020614453833981519152602090815260408083206001600160a01b038616845290915290205460ff16614171576000818152600080516020614453833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b5050600090565b6000818152600080516020614453833981519152602090815260408083206001600160a01b038616845290915290205460ff1615614171576000818152600080516020614453833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b60405163a9059cbb60e01b60208201526001600160a01b03929092166024830152604480830193909352918152613a35916135e36064836139dc565b90613a359160409161429d835161426b85826139dc565b602081527f53746172742074696d65206d75737420626520696e20746865206675747572656020820152428411613b6a565b606560f81b8351936142b06060866139dc565b602185527f456e642074696d65206d7573742062652061667465722073746172742074696d602086015284015211613b6a565b81516001600160a01b0390911691600091829160200182855af13d15614385573d6001600160401b0381116111e95760405161434092909161432f601f8201601f1916602001846139dc565b82523d6000602084013e5b83614391565b805190811515918261436a575b50506143565750565b635274afe760e01b60005260045260246000fd5b61437d9250602080918301019101613d18565b15388061434d565b6143409060609061433a565b906143b757508051156143a657805190602001fd5b630a12f52160e11b60005260046000fd5b815115806143e9575b6143c8575090565b639996b31560e01b60009081526001600160a01b0391909116600452602490fd5b50803b156143c056fec65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a86e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a2646970667358221220f5baefd3f3cb9625432df61a1cd4be414e4f9a344142233ceb0e12b0639073bf64736f6c634300081a0033