0 txs
116 calls
constructor
constructor()
functions
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
deposits
viewfunction deposits(uint256) view returns (address owner, uint128 liquidity, address token0, address token1)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
incentives
viewfunction incentives(bytes32) view returns (address pool, address rewardToken, uint256 reward, uint256 startTime, uint256 endTime)
marketTokenIds
viewfunction marketTokenIds(address, uint256) view returns (uint256)
nonfungiblePositionManager
viewfunction nonfungiblePositionManager() view returns (address)
onERC721Received
viewfunction onERC721Received(address, address, uint256, bytes) view returns (bytes4)
poolIncentives
viewfunction poolIncentives(address, uint256) view returns (bytes32)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
tokenIdMarket
viewfunction tokenIdMarket(uint256) view returns (address)
uniswapV3Staker
viewfunction uniswapV3Staker() view returns (address)
createIncentive
nonpayablefunction createIncentive(address pool, address rewardToken, uint256 reward, uint256 startTime, uint256 endTime)
endIncentive
nonpayablefunction endIncentive(address pool, address rewardToken, uint256 startTime, uint256 endTime)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address _nonfungiblePositionManager, address _uniswapV3Staker)
mintAndProvideLiquidity
nonpayablefunction mintAndProvideLiquidity(address truthMarket, uint256 paymentTokenAmount)
removeLiquidity
nonpayablefunction removeLiquidity(uint256 tokenId) returns (uint256 amount0, uint256 amount1)
removeMarketLiquidity
nonpayablefunction removeMarketLiquidity(address market)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdrawAllToken
nonpayablefunction withdrawAllToken(address token, address to)
withdrawToken
nonpayablefunction withdrawToken(address token, uint256 amount, address to)
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
IncentiveCreated
event IncentiveCreated(bytes32 indexed incentiveId, address indexed pool, address indexed rewardToken, uint256 reward, uint256 startTime, uint256 endTime)
IncentiveEnded
event IncentiveEnded(bytes32 indexed incentiveId, address indexed pool, address indexed rewardToken, uint256 startTime, uint256 endTime)
Initialized
event Initialized(uint8 version)
LiquidityRemoved
event LiquidityRemoved(address indexed market, uint256 indexed tokenId, uint256 amount0, uint256 amount1)
MarketLiquidityProvided
event MarketLiquidityProvided(address market)
MarketLiquidityRemoved
event MarketLiquidityRemoved(address indexed market, uint256 totalAmount0, uint256 totalAmount1)
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)
Upgraded
event Upgraded(address indexed implementation)
errors
No errors.
creation bytecode
0x60a0806040523460d657306080525f549060ff8260081c166084575060ff80821603604b575b604051613e4f90816100db8239608051818181611dc701528181611f2701526127640152f35b60ff90811916175f557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160ff8152a15f6025565b62461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b6064820152608490fd5b5f80fdfe6080806040526004361015610012575f80fd5b5f905f3560e01c90816301ffc9a714612bb65750806303baa0ea14612b8e578063150b7a0214612abe578063248a9ca314612a915780632f2ff15d146129e957806336568abe146129575780633659cfe6146127405780633aeebedb1461268e5780633ccdbb281461263c5780634255d5e8146123f0578063485cc955146121775780634f1ef28614611eab57806351f8705a14611e7757806352d1902d14611db45780636077779514611d5357806391d1485414611d095780639c8f9f23146119dd578063a217fddf146119c1578063b02c43d01461195f578063b44a272214611936578063b73178bf14610ced578063c5d62bd714610ca5578063d28bb1b214610c4e578063d547741f14610c0d578063f74767a514610ae85763fbe4bc371461013c575f80fd5b34610ae5576040366003190112610ae557610155612c09565b61015d6130bf565b604051633013ce2960e01b8152906020826004816001600160a01b0385165afa918215610ada578392610a9e575b5060405163095ea7b360e01b81526001600160a01b0382166004820152602480359082015260208180604481010381876001600160a01b0388165af18015610a3757610a65575b506001600160a01b0381163b15610a565760405163140e25ad60e31b81526024803560048301528491908290829081836001600160a01b0388165af18015610a5a57610a42575b50506040805163392db6d360e21b815290816004816001600160a01b0386165afa928315610a3757849185946109ea575b5060405163313ce56760e01b8152916020836004816001600160a01b0386165afa9283156106bb5786936109ae575b50604051630786cdd960e51b8152926020846004816001600160a01b0389165afa93841561067057879461096f575b5060405163313ce56760e01b815293602090859060049082906001600160a01b03165afa938415610670578794610933575b506040516308d4f88560e11b8152936020856004816001600160a01b038a165afa9485156107585788956108f4575b5060405163313ce56760e01b815294602090869060049082906001600160a01b03165afa948515610758578895610894575b509061037060ff61037d61035d8261037661036561035d836103849a16612ee2565b602435612ec1565b610370838916612ee2565b90612ef0565b9916612ee2565b9216612ee2565b604051630786cdd960e51b81529093906020816004816001600160a01b038a165afa80156107585782918991610851575b5060fb5460405163095ea7b360e01b81526001600160a01b03909116600482015260248101929092526020908290818b81604481015b03926001600160a01b03165af1801561075857610818575b506040516308d4f88560e11b81526020816004816001600160a01b038a165afa801561075857859189916107d5575b5060fb5460405163095ea7b360e01b81526001600160a01b03909116600482015260248101929092526020908290818b81604481015b03926001600160a01b03165af180156107585761079c575b5060fb5460405163095ea7b360e01b81526001600160a01b0390911660048201526024803590820152602081806044810103818b6001600160a01b0389165af1801561075857610763575b50604051630786cdd960e51b8152916020836004816001600160a01b038a165afa928315610758578893610718575b506040516334324e9f60e21b8152916020836004816001600160a01b0386165afa90811561070d5787938a926106c6575b506105489460243560011c91906001600160a01b0388169061357c565b6040516308d4f88560e11b8152916020836004816001600160a01b0388165afa9283156106bb57869361067b575b506040516334324e9f60e21b8152926020846004816001600160a01b038a165afa9384156106705787946105fc575b509484936105e893602096937f2f9eb3607e1ab9527e84637029cbf03ef11854f6342d9be56434e8f8ea66a9139860243560011c9260018060a01b03169061357c565b6040516001600160a01b039091168152a180f35b9192949350946020823d602011610668575b8161061b60209383612cb9565b81010312610664577f2f9eb3607e1ab9527e84637029cbf03ef11854f6342d9be56434e8f8ea66a913956020956105e8946106568795612f0e565b9650939650935090956105a5565b8680fd5b3d915061060e565b6040513d89823e3d90fd5b9092506020813d6020116106b3575b8161069760209383612cb9565b810103126106af576106a890612ea0565b915f610576565b8580fd5b3d915061068a565b6040513d88823e3d90fd5b935090506020833d602011610705575b816106e360209383612cb9565b8101031261070157610548936106f98894612f0e565b91909461052b565b8880fd5b3d91506106d6565b6040513d8b823e3d90fd5b9092506020813d602011610750575b8161073460209383612cb9565b8101031261074c5761074590612ea0565b915f6104fa565b8780fd5b3d9150610727565b6040513d8a823e3d90fd5b6020813d602011610794575b8161077c60209383612cb9565b8101031261074c5761078d90612e22565b505f6104cb565b3d915061076f565b6020813d6020116107cd575b816107b560209383612cb9565b8101031261074c576107c690612e22565b505f610480565b3d91506107a8565b9150506020813d602011610810575b816107f160209383612cb9565b8101031261074c5760208561080861046893612ea0565b915091610432565b3d91506107e4565b6020813d602011610849575b8161083160209383612cb9565b8101031261074c5761084290612e22565b505f610403565b3d9150610824565b9150506020813d60201161088c575b8161086d60209383612cb9565b8101031261074c576020826108846103eb93612ea0565b9150916103b5565b3d9150610860565b919094506020823d6020116108ec575b816108b160209383612cb9565b8101031261074c5761037060ff61037d61035d8261037661036561035d836108db6103849b612ed4565b9d999a50505050505050505061033b565b3d91506108a4565b94506020853d60201161092b575b8161090f60209383612cb9565b8101031261074c576020610924600496612ea0565b9550610309565b3d9150610902565b9093506020813d602011610967575b8161094f60209383612cb9565b810103126106645761096090612ed4565b925f6102da565b3d9150610942565b93506020843d6020116109a6575b8161098a60209383612cb9565b8101031261066457602061099f600495612ea0565b94506102a8565b3d915061097d565b9092506020813d6020116109e2575b816109ca60209383612cb9565b810103126106af576109db90612ed4565b915f610279565b3d91506109bd565b915092506040813d604011610a2f575b81610a0760409383612cb9565b81010312610a2b57610a246020610a1d83612ea0565b9201612ea0565b925f61024a565b8380fd5b3d91506109fa565b6040513d86823e3d90fd5b610a4b90612c51565b610a5657825f610219565b8280fd5b6040513d84823e3d90fd5b6020813d602011610a96575b81610a7e60209383612cb9565b81010312610a2b57610a8f90612e22565b505f6101d2565b3d9150610a71565b9091506020813d602011610ad2575b81610aba60209383612cb9565b81010312610a5657610acb90612ea0565b905f61018b565b3d9150610aad565b6040513d85823e3d90fd5b80fd5b5034610ae5576080366003190112610ae557610b02612c09565b610b0a612c1f565b60443590606435610b196130bf565b6040516001600160a01b039283169483169390610b3581612c35565b8581528660208095878285015284604085015285606085015230608085015260fc541660a460405180948193632d6b69b960e21b8352610b786004840189612e2f565b5af1908115610758578591610bdc575b5050907f5c7cb2fcfb798b4434a2e9365701ae8ce313266e9fc99e792e48739b04d52ba2926040928351610bbf8782018093612e2f565b60a08152610bcc81612c9d565b519020948351928352820152a480f35b819392933d8311610c06575b610bf28183612cb9565b81010312610c025790835f610b88565b5f80fd5b503d610be8565b5034610ae5576040366003190112610ae557610c4b600435610c2d612c1f565b9080845260c9602052610c46600160408620015461321f565b613341565b80f35b5034610ae5576040366003190112610ae557610c68612c09565b6001600160a01b031681526101006020526040812080546024359290831015610ae5576020610c978484612cf7565b90546040519160031b1c8152f35b5034610ae5576040366003190112610ae557610cbf612c09565b6001600160a01b0316815260ff6020526040812080546024359290831015610ae5576020610c978484612cf7565b5034610ae5576020366003190112610ae557610d07612c09565b610d0f6130bf565b6001600160a01b03811682526101006020526040822080548392918391805b6113955750506001600160a01b03821684526101006020526040842080548582559081611377575b505060405163a3dd261960e01b81526020816004816001600160a01b0387165afa908115610f1857859161133c575b50600881101561132857600714610dc0575b5f80516020613dfa833981519152916040918251948552602085015260018060a01b031692a280f35b604051632486d67160e01b81526020816004816001600160a01b0387165afa908115610f185785916112f6575b5060018103610f5d5750604051630786cdd960e51b81526020816004816001600160a01b0387165afa908115610f18578591610f23575b5060405163095ea7b360e01b81526001600160a01b038481166004830152602482018690529091602091839160449183918a91165af18015610f1857610edb575b506001600160a01b0382163b15610a2b5760405163db006a7560e01b81526004810184905284908181602481836001600160a01b0389165af18015610a5a57610ec7575b50505f80516020613dfa833981519152916040915b91509150610d97565b610ed090612c51565b610a2b57835f610ea9565b6020813d602011610f10575b81610ef460209383612cb9565b81010312610f0c57610f0590612e22565b505f610e65565b8480fd5b3d9150610ee7565b6040513d87823e3d90fd5b90506020813d602011610f55575b81610f3e60209383612cb9565b81010312610f0c57610f4f90612ea0565b5f610e24565b3d9150610f31565b600281036110b857506040516308d4f88560e11b81526020816004816001600160a01b0387165afa908115610f1857859161107e575b5060405163095ea7b360e01b81526001600160a01b038481166004830152602482018490529091602091839160449183918a91165af18015610f1857611045575b506001600160a01b0382163b15610a2b5760405163db006a7560e01b81526004810182905284908181602481836001600160a01b0389165af18015610a5a57611031575b50505f80516020613dfa83398151915291604091610ebe565b61103a90612c51565b610a2b57835f611018565b6020813d602011611076575b8161105e60209383612cb9565b81010312610f0c5761106f90612e22565b505f610fd4565b3d9150611051565b90506020813d6020116110b0575b8161109960209383612cb9565b81010312610f0c576110aa90612ea0565b5f610f93565b3d915061108c565b6003146110d7575b5f80516020613dfa83398151915291604091610ebe565b604051630786cdd960e51b81526020816004816001600160a01b0387165afa908115610f185785916112bc575b5060405163095ea7b360e01b8082526001600160a01b0385811660048401525f19602484018190529193919291602091839160449183918c91165af1801561067057611283575b506040516308d4f88560e11b8152906020826004816001600160a01b0389165afa918215610670578792611244575b506040519283526001600160a01b0385811660048501526024840191909152602091839160449183918a91165af18015610f185761120b575b506001600160a01b0382163b15610a2b57604051633415a4cf60e01b815284908181600481836001600160a01b0389165af18015610a5a576111f7575b50506110c0565b61120090612c51565b610a2b57835f6111f0565b6020813d60201161123c575b8161122460209383612cb9565b81010312610f0c5761123590612e22565b505f6111b3565b3d9150611217565b91506020823d60201161127b575b8161125f60209383612cb9565b81010312610664576044611274602093612ea0565b925061117a565b3d9150611252565b6020813d6020116112b4575b8161129c60209383612cb9565b81010312610664576112ad90612e22565b505f61114b565b3d915061128f565b90506020813d6020116112ee575b816112d760209383612cb9565b81010312610f0c576112e890612ea0565b5f611104565b3d91506112ca565b90506020813d602011611320575b8161131160209383612cb9565b81010312610c0257515f610ded565b3d9150611304565b634e487b7160e01b85526021600452602485fd5b90506020813d60201161136f575b8161135760209383612cb9565b81010312610f0c57516008811015610f0c575f610d85565b3d915061134a565b855260208520908101905b81811015610d56575f8155600101611382565b5f198101818111611922576113aa9083612cf7565b905490818160031b1c885260fd6020526001600160801b03600160408a200154166113e1575b50506113db90612e80565b80610d2e565b9091956001600160801b03906113f56130bf565b838360031b1c895260fd6020526040826001828c2001541660a4825161141a81612c35565b878760031b1c8152602081019283528c84820181815260608301828152608084019042825260018060a01b0360fb54169288519a8b988997630624e65f60e11b8952516004890152511660248701525160448601525160648501525160848401525af191821561070d576001600160801b0392611904575b5060406060608460018060a01b0360fb54168c8451916114b183612c65565b600389901b8a901c83523060208401908152868401898152958401898152875163fc6f786560e01b81529451600486015290516001600160a01b03166024850152945188166044840152935190961660648201529485928391905af193841561070d5789928a956118cd575b50600384811b82901c8b5260fd60205260408b208054600282015491909201546115659288926001600160a01b03918216928216916115609189918591166133b4565b6133b4565b600384901b81901c8a5261010160205260408a208054906001600160a01b03821661177b575b5050808460031b1c8a5260fd60205289600360408220828155826001820155826002820155015560405192630786cdd960e51b845260208460048160018060a01b038d165afa938415611770578b94611730575b506040516308d4f88560e11b8152926020846004816001600160a01b038e165afa938415611725578c946116e5575b50600386901b83901c8c5260fd60205260408c20600201546001600160a01b0390811690861681036116ba57509061164591612eb4565b935b600390811b9190911c8a5260fd60205260408a2001546001600160a01b03908116921682036116885750506113db9161167f91612eb4565b945b905f6113d0565b919692916001600160a01b0316146116a5575b506113db90611681565b6116b3906113db9294612eb4565b929061169b565b909591906001600160a01b038516146116d4575b50611647565b6116de9198612eb4565b965f6116ce565b9093506020813d60201161171d575b8161170160209383612cb9565b810103126117195761171290612ea0565b925f61160e565b8b80fd5b3d91506116f4565b6040513d8e823e3d90fd5b9093506020813d602011611768575b8161174c60209383612cb9565b810103126117645761175d90612ea0565b925f6115df565b8a80fd5b3d915061173f565b6040513d8d823e3d90fd5b6001600160a01b0319821690556001600160a01b0381168b5261010060205260408b20989a989998959694959394929392835b8b54808210156118bd576117c2828e612cf7565b868b60031b1c91549060031b1c146117dd57506001016117ae565b949c9a9b9198979695945f1981019081116118a9576118106118026118269285612cf7565b90549060031b1c9284612cf7565b819391549060031b91821b915f19901b19161790565b905580548015611895575f19019061183e8282612cf7565b8154905f199060031b1b19169055555b6040518481528660208201527f1dc8bb69df2b8e91fbdcbfcf93d951b3f0000f085a95fe3f7946d6161439245d6040848860031b1c9360018060a01b031692a35f8061158b565b634e487b7160e01b8d52603160045260248dfd5b634e487b7160e01b8e52601160045260248efd5b505096959493929a98995061184e565b9094506118f391925060403d6040116118fd575b6118eb8183612cb9565b810190612e6a565b919091935f61151d565b503d6118e1565b61191c9060403d6040116118fd576118eb8183612cb9565b50611492565b634e487b7160e01b87526011600452602487fd5b5034610ae55780600319360112610ae55760fb546040516001600160a01b039091168152602090f35b5034610ae5576020366003190112610ae5576040608091600435815260fd6020522060018060a01b0380825416916001600160801b03600182015416916003816002840154169201541691604051938452602084015260408301526060820152f35b5034610ae55780600319360112610ae557602090604051908152f35b5034610ae5576020366003190112610ae5576119f76130bf565b600435815260fd6020526001600160801b03604081600182852001541660a48251611a2181612c35565b6004358152602081019283528584820181815260608301828152608084019042825260018060a01b0360fb5416928851998a988997630624e65f60e11b8952516004890152511660248701525160448601525160648501525160848401525af18015610a5a57611ceb575b5060fb54604080516001600160801b039260609160849186906001600160a01b0316611ab783612c65565b6004358352306020840152868684015286858401528551968795869463fc6f786560e01b86528051600487015260018060a01b036020820151166024870152828982015116604487015201511660648401525af18015610a5a5782918391611cca575b50600435835260fd6020526040832080546002820154600392830154929592611b5c9285926001600160a01b03918216928216916115609189918591166133b4565b60043581526101016020526040812080546001600160a01b03811695919086611bb1575b6040868686600435815260fd6020526003848220828155826001820155826002820155015582519182526020820152f35b6001600160a01b031916905584825261010060205260408220949093929190815b865480821015611cba57611be68289612cf7565b600435915490891b1c14611bfd5750600101611bd2565b96905f9692939495961997888101908111611ca657611810611c22611c2f9285612cf7565b905490861b1c9284612cf7565b90558054968715611c9257806040980192611c4a8484612cf7565b81939154921b1b19169055555b8451908482528360208301527f1dc8bb69df2b8e91fbdcbfcf93d951b3f0000f085a95fe3f7946d6161439245d8660043593a35f8080611b80565b634e487b7160e01b85526031600452602485fd5b634e487b7160e01b86526011600452602486fd5b5050909192935060409450611c57565b9050611ce5915060403d6040116118fd576118eb8183612cb9565b5f611b1a565b611d039060403d6040116118fd576118eb8183612cb9565b50611a8c565b5034610ae5576040366003190112610ae5576040611d25612c1f565b91600435815260c9602052209060018060a01b03165f52602052602060ff60405f2054166040519015158152f35b5034610ae5576020366003190112610ae557604060a091600435815260fe60205220600180831b0390818154169160018201541690600281015460046003830154920154926040519485526020850152604084015260608301526080820152f35b5034610ae55780600319360112610ae5577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003611e0c5760206040515f80516020613dda8339815191528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608490fd5b5034610ae5576020366003190112610ae55760209060043581526101018252604060018060a01b0391205416604051908152f35b506040366003190112610ae557611ec0612c09565b6024359067ffffffffffffffff8211610a565736602383011215610a56578160040135611eec81612cdb565b90611efa6040519283612cb9565b80825284602094858401923660248284010111610a56578060248893018537840101526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811690611f5530831415612d20565b611f715f80516020613dda833981519152928284541614612d81565b611f79612f1c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611fb15750505050610c4b9150613bae565b84939416906040516352d1902d60e01b81528681600481865afa5f9181612148575b506120345760405162461bcd60e51b815260048101889052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b959495036120f15761204583613bae565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28351158015906120e9575b612080575b5050505080f35b5f80916120df957f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c604051966120b588612c81565b60278852870152660819985a5b195960ca1b60408701525190845af46120d9613d19565b91613d48565b505f808080612079565b506001612074565b60405162461bcd60e51b815260048101859052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b9091508781813d8311612170575b6121608183612cb9565b81010312610c025751905f611fd3565b503d612156565b5034610ae5576040366003190112610ae557612191612c09565b612199612c1f565b82549160ff90818460081c1615928380946123e4575b80156123ce575b156123725760ff1985811660011787559484612361575b506121e683875460081c166121e1816134e5565b6134e5565b60fb80546001600160a01b039384166001600160a01b03199182161790915560fc8054929093169116179055335f9081527f81fe90a866a48a634a12852c1be675b683a22307409932a7443b8029347be7566020908152604090912054909390821615612318575b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92991825f5260c9855260405f20335f52855260405f205416156122cc575b5050612296575080f35b7f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989061ff0019835416835560405160018152a180f35b815f5260c9845260405f20335f528452600160405f2091825416179055339033907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a45f8061228c565b5f805260c9845260405f20335f52845260405f2060018282541617905533335f7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a461224e565b61ffff19166101011786555f6121cd565b60405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156121b657506001838616146121b6565b506001838616106121af565b5034610c025760a0366003190112610c025761240a612c09565b612412612c1f565b60443590816084356064356124256130bf565b60fc5460405163095ea7b360e01b81526001600160a01b0391821660048201526024810196909652938416956020959086826044815f8c5af19182156125fa578692612605575b50169460405161247b81612c35565b87815286828201528260408201528360608201523060808201528560fc5416803b15610c02575f809160c460405180948193635cc5e3d960e01b83526124c46004840189612e2f565b8b60a48401525af180156125fa576125e7575b506040516124e88382018093612e2f565b60a081526124f581612c9d565b519020946004868a6040519361250a85612c35565b8a85528585018c815260408601918a835280604060608901958b875260808a01978d8952815260fe8b5220975116906001600160601b0360a01b918289541617885560018801925116908254161790555160028501555160038401555191015585885260ff815260408820805490600160401b8210156125d35791866125bf611810846060989660017f238a6118211b5bf2823b96f58a829b681f545db0dbe2a6483eea7033d55099d39b9997018155612cf7565b90556040519384528301526040820152a480f35b634e487b7160e01b8a52604160045260248afd5b6125f2919950612c51565b5f975f6124d7565b6040513d5f823e3d90fd5b91508682813d8311612635575b61261c8183612cb9565b81010312610c025761262e8692612e22565b505f61246c565b503d612612565b34610c02576060366003190112610c0257612655612c09565b6001600160a01b036044358181169291838203610c025761268261268c9461267b612f1c565b1515612de2565b60243592166133b4565b005b34610c02576040366003190112610c02576126a7612c09565b6126af612c1f565b906126b8612f1c565b6001600160a01b03906126ce8383161515612de2565b6040516370a0823160e01b8152306004820152911691602082602481865afa9182156125fa575f9261270c575b508161270357005b61268c926133b4565b9091506020813d602011612738575b8161272860209383612cb9565b81010312610c02575190836126fb565b3d915061271b565b34610c0257602080600319360112610c025761275a612c09565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116929061279330851415612d20565b6127af5f80516020613dda833981519152948286541614612d81565b6127b7612f1c565b604051938285019185831067ffffffffffffffff84111761294357826040525f865260ff7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914354165f14612812575050505061268c9150613bae565b84939416906040516352d1902d60e01b81528581600481865afa5f9181612914575b506128955760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b036120f1576128a383613bae565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a283511580159061290d575b6128d857005b5f809161268c957f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c604051966120b588612c81565b505f6128d2565b9091508681813d831161293c575b61292c8183612cb9565b81010312610c0257519088612834565b503d612922565b634e487b7160e01b5f52604160045260245ffd5b34610c02576040366003190112610c0257612970612c1f565b336001600160a01b0382160361298c5761268c90600435613341565b60405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608490fd5b34610c02576040366003190112610c0257600435612a05612c1f565b815f5260c9602052612a1d600160405f20015461321f565b815f5260c960205260405f209060018060a01b031690815f5260205260ff60405f20541615612a4857005b815f5260c960205260405f20815f5260205260405f20600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4005b34610c02576020366003190112610c02576004355f5260c96020526020600160405f200154604051908152f35b34610c02576080366003190112610c0257612ad7612c09565b50612ae0612c1f565b5060643567ffffffffffffffff808211610c025736602383011215610c02578160040135908111610c025736910160240111610c025760fb546001600160a01b03163303612b3a57604051630a85bd0160e11b8152602090f35b60405162461bcd60e51b815260206004820152602660248201527f4f6e6c7920616363657074204e4654732066726f6d20706f736974696f6e206d60448201526530b730b3b2b960d11b6064820152608490fd5b34610c02575f366003190112610c025760fc546040516001600160a01b039091168152602090f35b34610c02576020366003190112610c02576004359063ffffffff60e01b8216809203610c0257602091637965db0b60e01b8114908115612bf8575b5015158152f35b6301ffc9a760e01b14905083612bf1565b600435906001600160a01b0382168203610c0257565b602435906001600160a01b0382168203610c0257565b60a0810190811067ffffffffffffffff82111761294357604052565b67ffffffffffffffff811161294357604052565b6080810190811067ffffffffffffffff82111761294357604052565b6060810190811067ffffffffffffffff82111761294357604052565b60c0810190811067ffffffffffffffff82111761294357604052565b90601f8019910116810190811067ffffffffffffffff82111761294357604052565b67ffffffffffffffff811161294357601f01601f191660200190565b8054821015612d0c575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b15612d2757565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b15612d8857565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b15612de957565b60405162461bcd60e51b8152602060048201526011602482015270125b9d985b1a59081c9958da5c1a595b9d607a1b6044820152606490fd5b51908115158203610c0257565b80516001600160a01b039081168352602080830151821690840152604080830151908401526060808301519084015260809182015116910152565b9190826040910312610c02576020825192015190565b8015612e8c575f190190565b634e487b7160e01b5f52601160045260245ffd5b51906001600160a01b0382168203610c0257565b91908201809211612e8c57565b81810292918115918404141715612e8c57565b519060ff82168203610c0257565b604d8111612e8c57600a0a90565b8115612efa570490565b634e487b7160e01b5f52601260045260245ffd5b51908160020b8203610c0257565b335f9081527f81fe90a866a48a634a12852c1be675b683a22307409932a7443b8029347be75660209081526040918290205460ff1615612f5a575050565b612f6333613c4e565b915f8151612f7081612c65565b60428152838101916060368437815115612d0c5760308353815160019060011015612d0c57607860218401536041905b80821161307b575050613039576130359461301f92604892855196879376020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b82860152805191829101603786015e8301907001034b99036b4b9b9b4b733903937b6329607d1b60378301525180928583015e015f83820152036028810185520183612cb9565b5162461bcd60e51b815291829160048301613b84565b0390fd5b60648484519062461bcd60e51b825280600483015260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f8116906010821015612d0c576130b9916f181899199a1a9b1b9c1cb0b131b232b360811b901a6130af8587613c3d565b5360041c92612e80565b90612fa0565b335f9081527fc99cfc74cbb51adc7ca8731c432a51a31a086a1789003f0b773be6e802362bf46020908152604091829020547f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b929929060ff161561312157505050565b61312a33613c4e565b92815161313681612c65565b60428152838101916060368437815115612d0c5760308353815160019060011015612d0c57607860218401536041905b8082116131e5575050613039576130359461301f92604892855196879376020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b82860152805191829101603786015e8301907001034b99036b4b9b9b4b733903937b6329607d1b60378301525180928583015e015f83820152036028810185520183612cb9565b9091600f8116906010821015612d0c57613219916f181899199a1a9b1b9c1cb0b131b232b360811b901a6130af8587613c3d565b90613166565b805f52602060c981526040805f20335f52825260ff815f2054161561324357505050565b61324c33613c4e565b92815161325881612c65565b60428152838101916060368437815115612d0c5760308353815160019060011015612d0c57607860218401536041905b808211613307575050613039576130359461301f92604892855196879376020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b82860152805191829101603786015e8301907001034b99036b4b9b9b4b733903937b6329607d1b60378301525180928583015e015f83820152036028810185520183612cb9565b9091600f8116906010821015612d0c5761333b916f181899199a1a9b1b9c1cb0b131b232b360811b901a6130af8587613c3d565b90613288565b90815f5260c960205260405f209060018060a01b031690815f5260205260ff60405f20541661336e575050565b815f5260c960205260405f20815f5260205260405f2060ff19815416905533917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a4565b60405163a9059cbb60e01b60208083019182526001600160a01b03949094166024830152604480830195909552938152919291906133f3606483612cb9565b60018060a01b0316604051916040830183811067ffffffffffffffff821117612943576040528483527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648386015251613456935f91829182855af16120d9613d19565b80518281159182156134c6575b505090501561346f5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b8380929350010312610c0257816134dd9101612e22565b80825f613463565b156134ec57565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b519061ffff82168203610c0257565b60ff16604d8111612e8c57600a0a90565b9060020b9060020b02908160020b918203612e8c57565b93955f95909492916001600160a01b038082169085161015613b7a57929391905f905b604051633850c7bd60e01b81526001600160a01b0391909116919060e081600481865afa9081156125fa575f91613ae8575b506001600160a01b0316156138cb575b50508660020b968715612efa578061360261360d928a620d89e71905613565565b98620d89e805613565565b60405197610160890189811067ffffffffffffffff8211176129435760405260018060a01b038616895260018060a01b03851660208a0152610bb860408a015260020b606089015260020b608088015260a087015260c08601528360e0860152836101008601523061012086015242610140860152608061014061016460018060a01b0360fb54169787604051998a948593634418b22b60e11b855260018060a01b03815116600486015260018060a01b03602082015116602486015262ffffff6040820151166044860152606081015160020b60648601528781015160020b608486015260a081015160a486015260c081015160c486015260e081015160e486015261010081015161010486015260018060a01b036101208201511661012486015201516101448401525af1918215610a37578495859361387e575b506001600160801b036040519361376085612c65565b30855216602084015260018060a01b0316604083015260018060a01b0316606082015283835260fd60205260036040842060018060a01b038351166001600160601b0360a01b825416178155600181016001600160801b036020850151166001600160801b03198254161790556002810160018060a01b036040850151166001600160601b0360a01b8254161790550190606060018060a01b03910151166001600160601b0360a01b82541617905560018060a01b03169182825261010060205260408220805490600160401b82101561386a579161384c611810836040969560018596018155612cf7565b905581526101016020522080546001600160a01b0319169091179055565b634e487b7160e01b84526041600452602484fd5b955091506080853d6080116138c3575b8161389b60809383612cb9565b81010312610a2b5760208551950151946001600160801b0386168603610f0c5794915f61374a565b3d915061388e565b60405163313ce56760e01b808252916020919082826004816001600160a01b038d165afa9182156125fa575f92613ab1575b5060405193845282846004816001600160a01b038c165afa9384156125fa575f94613a7a575b5015613a455761393290613554565b80600502906005820403612e8c5761394a9092613554565b80600a0290600a820403612e8c57905b81151580613a3c575b15613a085750906139769160c01b612ef0565b6001808201808311612e8c5760011c90825b8383106139e857505050813b15610c025760405163f637731d60e01b81526001600160a01b039091166004820152905f908290602490829084905af180156125fa576139d5575b806135e1565b6139e0919650612c51565b5f945f6139cf565b909192506139ff836139fa8184612ef0565b612eb4565b821c9190613988565b6064906040519062461bcd60e51b82526004820152600d60248201526c496e76616c696420707269636560981b6044820152fd5b50821515613963565b613a4e90613554565b80600a0290600a820403612e8c57613a669092613554565b80600502906005820403612e8c579061395a565b9093508281813d8311613aaa575b613a928183612cb9565b81010312610c0257613aa390612ed4565b925f613923565b503d613a88565b9091508281813d8311613ae1575b613ac98183612cb9565b81010312610c0257613ada90612ed4565b905f6138fd565b503d613abf565b905060e0813d60e011613b72575b81613b0360e09383612cb9565b81010312610c02578051906001600160a01b0382168203610c025760c081613b306020613b6b9401612f0e565b50613b3d60408201613545565b50613b4a60608201613545565b50613b5760808201613545565b50613b6460a08201612ed4565b5001612e22565b505f6135d1565b3d9150613af6565b939060019061359f565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b803b15613be2575f80516020613dda83398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b908151811015612d0c570160200190565b60405190613c5b82612c81565b602a8252602082016040368237825115612d0c5760309053815160019060011015612d0c57607860218401536029905b808211613cdf575050613c9b5790565b606460405162461bcd60e51b815260206004820152602060248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152fd5b9091600f8116906010821015612d0c57613d13916f181899199a1a9b1b9c1cb0b131b232b360811b901a6130af8587613c3d565b90613c8b565b3d15613d43573d90613d2a82612cdb565b91613d386040519384612cb9565b82523d5f602084013e565b606090565b91929015613daa5750815115613d5c575090565b3b15613d655790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015613dbd5750805190602001fd5b60405162461bcd60e51b81529081906130359060048301613b8456fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc7fd2bd6999ffd36e35ed6ce6daf531c90a1d703b2c4cf9daac7f71ae6d209b0da2646970667358221220c67c1778fbc2bfb845d22eab8e4c06995c76d82dbc37dd3aa31816742187103164736f6c63430008190033