0 txs
14 calls
constructor
constructor(address usdc, address dsu, address reserve, address marketFactory, address verifier)
functions
checkOrder
viewfunction checkOrder(address market, address account, uint256 orderId) view returns (tuple order, bool canExecute)
claimable
viewfunction claimable(address) view returns (uint256)
DSU
viewfunction DSU() view returns (address)
ethTokenOracleFeed
viewfunction ethTokenOracleFeed() view returns (address)
keepConfig
viewfunction keepConfig() view returns (uint256 multiplierBase, uint256 bufferBase, uint256 multiplierCalldata, uint256 bufferCalldata)
keepConfigBuffered
viewfunction keepConfigBuffered() view returns (uint256 multiplierBase, uint256 bufferBase, uint256 multiplierCalldata, uint256 bufferCalldata)
keeperToken
viewfunction keeperToken() view returns (address)
marketFactory
viewfunction marketFactory() view returns (address)
OPT_BASE_FEE_MULTIPLIER
viewfunction OPT_BASE_FEE_MULTIPLIER() view returns (uint256)
orders
viewfunction orders(address market, address account, uint256 orderId) view returns (tuple)
reserve
viewfunction reserve() view returns (address)
USDC
viewfunction USDC() view returns (address)
verifier
viewfunction verifier() view returns (address)
cancelOrder
nonpayablefunction cancelOrder(address market, uint256 orderId)
cancelOrderWithSignature
nonpayablefunction cancelOrderWithSignature(tuple request, bytes signature)
claim
nonpayablefunction claim(address account, bool unwrap)
executeOrder
nonpayablefunction executeOrder(address market, address account, uint256 orderId)
initialize
nonpayablefunction initialize(address ethOracle_, tuple keepConfig_, tuple keepConfigBuffered_)
placeOrder
nonpayablefunction placeOrder(address market, uint256 orderId, tuple order)
placeOrderWithSignature
nonpayablefunction placeOrderWithSignature(tuple request, bytes signature)
events
Initialized
event Initialized(uint256 version)
KeeperCall
event KeeperCall(address indexed sender, uint256 applicableGas, uint256 applicableValue, uint256 baseFee, uint256 calldataFee, uint256 keeperFee)
TriggerOrderCancelled
event TriggerOrderCancelled(address indexed market, address indexed account, uint256 orderId)
TriggerOrderExecuted
event TriggerOrderExecuted(address indexed market, address indexed account, (uint8 side, int8 comparison, int256 price, int256 delta, uint256 maxFee, bool isSpent, address referrer, (uint256 amount, address receiver, bool fixedFee, bool unwrap) interfaceFee) order, uint256 orderId)
TriggerOrderInterfaceFeeCharged
event TriggerOrderInterfaceFeeCharged(address indexed account, address indexed market, (uint256 amount, address receiver, bool fixedFee, bool unwrap) fee)
TriggerOrderPlaced
event TriggerOrderPlaced(address indexed market, address indexed account, (uint8 side, int8 comparison, int256 price, int256 delta, uint256 maxFee, bool isSpent, address referrer, (uint256 amount, address receiver, bool fixedFee, bool unwrap) interfaceFee) order, uint256 orderId)
errors
DivisionByZero
error DivisionByZero()
Fixed6OverflowError
error Fixed6OverflowError(uint256 value)
InitializableAlreadyInitializedError
error InitializableAlreadyInitializedError(uint256 version)
InitializableNotInitializingError
error InitializableNotInitializingError()
InitializableZeroVersionError
error InitializableZeroVersionError()
ManagerCannotCancelError
error ManagerCannotCancelError()
ManagerCannotExecuteError
error ManagerCannotExecuteError()
ManagerCannotReduceMaxFee
error ManagerCannotReduceMaxFee()
ManagerInvalidOperatorError
error ManagerInvalidOperatorError()
ManagerInvalidOrderNonceError
error ManagerInvalidOrderNonceError()
ManagerInvalidSignerError
error ManagerInvalidSignerError()
TriggerOrderInvalidError
error TriggerOrderInvalidError()
TriggerOrderStorageInvalidError
error TriggerOrderStorageInvalidError()
UFixed18UnderflowError
error UFixed18UnderflowError(int256 value)
UFixed6UnderflowError
error UFixed6UnderflowError(int256 value)
creation bytecode
0x610120346200012257601f62003d2838819003918201601f19168301916001600160401b03831184841017620001265780849260a09460405283398101031262000122576200004e816200013a565b906200005d602082016200013a565b60408201516001600160a01b03939091908483168303620001225760608401519385851685036200012257608001519485168503620001225760805260a05260c05260e052610100908152604051613bd89182620001508339608051828181610cad0152610edb015260a051828181610bfc01528181610d8a015281816113be01526114d8015260c0518281816106dd01528181610cda015261146f015260e051828181610e1401526119500152518181816108720152818161171101526118450152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b0382168203620001225756fe6080806040526004361015610012575f80fd5b5f905f3560e01c90816306ae7095146119085750806323a985fc146117355780632b7ac3f3146116c657806332878cc914611655578063402914f5146115f25780636573bb43146112245780636a206137146111de5780636a5a6be414610f55578063872053a614610eff57806389a3027114610e9057806392fd2daf14610c20578063a2060bcf14610bb1578063b20caf4514610b40578063b662d3ab14610759578063b7e8ef4014610701578063cd3293de14610692578063db90490214610658578063dd02df16146105ef578063f0773700146105bd5763fe0e55de146100fa575f80fd5b346104a75761010836611a9d565b5a90610115818486611fc9565b9190911561059357610128828587612db4565b9073ffffffffffffffffffffffffffffffffffffffff9182871694853b1561058f57604051917f6a256b2900000000000000000000000000000000000000000000000000000000835289858916938460048201528181602481838d5af180156104aa57610577575b50506040517f6e1936800000000000000000000000000000000000000000000000000000000081528360048201528a6101809182816024818d5afa80156104aa57602491839161054a575b5060808b604051938480927f55f575100000000000000000000000000000000000000000000000000000000082528b60048301525afa91821561053f57839261050a575b5061022a9082613687565b600460ff8a5116146104ef575b600560ff8a5116146104d4575b600660ff8a5116146104b9575b60209788820151606060408401519301519160c08c0151168c3b156104b55788858e60e493829660405198899788967f977b1f5f00000000000000000000000000000000000000000000000000000000885260048801526024870152604486015260648501528260848501528260a485015260c48401525af180156104aa5761048b575b506103616103c6948a878b6104139f9782847f5111ddcdf8e6b98f5a0d74f1ea4b8f9268d6d0e9c5a54e144459ed0541bc67908f9a8f61033d87604061039a9f9e60809f600160a0850152888252600881528282208a5f528152825f20908683525220612f39565b6040519061034b8289611afd565b610160820152a3610416575b5050505a90611d11565b9701516040805173ffffffffffffffffffffffffffffffffffffffff94851689820190815294909b166020850152830152889160600190565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101885287611a5c565b604051948386015260408501526060840152606083526103e583611a06565b604051906103f282611a06565b6004548252600554908201526006546040820152600754606082015261215f565b80f35b8560e07f53287d6489871e2ad186467efe70bdd15afbbd29f769f1e1c639b4d5a5d654ed9201516104826040518092606080918051845273ffffffffffffffffffffffffffffffffffffffff602082015116602085015260408101511515604085015201511515910152565ba38a878b610357565b61049982919c94939c6119c5565b6104a7575f9a91929a6102d5565b80fd5b6040513d84823e3d90fd5b8480fd5b606081016104cd815160608c0151906137b2565b9052610251565b604081016104e8815160608c0151906137b2565b9052610244565b60208101610503815160608c0151906137b2565b9052610237565b61022a9192506105319060803d608011610538575b6105298183611a5c565b810190612efd565b919061021f565b503d61051f565b6040513d85823e3d90fd5b61056a9150843d8611610570575b6105628183611a5c565b810190612e5a565b5f6101db565b503d610558565b610580906119c5565b61058b57895f610190565b8980fd5b8880fd5b60046040517f8013a216000000000000000000000000000000000000000000000000000000008152fd5b50346104a7576101806105d86105d236611a9d565b91611fc9565b6105e56040518093611afd565b1515610160820152f35b50346104a75761064960406101609261060736611a9d565b91610610611ef5565b5073ffffffffffffffffffffffffffffffffffffffff8091168452600860205284842091165f52602052825f2090825260205220612b68565b6106566040518092611afd565bf35b50346104a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104a757602060405160108152f35b50346104a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104a757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346104a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104a757600454600554600654600754604080519485526020850193909352918301526060820152608090f35b50346104a7577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36016102a08112610b3c576102808112610b3c576102843567ffffffffffffffff8111610b38576107b5903690600401611974565b919060405190602093826107cc8284888401611e3d565b03936107fe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe095868101865285611a5c565b610856610809611ca6565b95610812611ced565b6040805173ffffffffffffffffffffffffffffffffffffffff998a168b82019081529290991660208301526101a43590820152879060600103908101875286611a5c565b865a9273ffffffffffffffffffffffffffffffffffffffff94857f00000000000000000000000000000000000000000000000000000000000000001691823b15610b34576108d6928492836040518096819582947f1f55630a00000000000000000000000000000000000000000000000000000000845260048401611e3d565b03925af180156104aa57610b1c575b50506108ef611ca6565b956108f8611ced565b918461018435981691825f52600881528560405f20941693845f52815260405f20895f52815261092a60405f20612b68565b60a0810151610af25761093c81612cdc565b159081610ad6575b50610aac57825f526008815260405f20845f52815260405f20895f52815260405f2091610160809112610aa8576040519661097e88611a22565b60043560ff81168103610aa8578852602435805f0b8103610aa8578389015260443560408901526064356060890152608435608089015260a4358015158103610aa85760a089015260c4358181168103610aa85760c089015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c360112610aa85760405192610a0e84611a06565b60e4358452610104359182168203610aa857830152610124358015158103610aa857604083015261014435998a15158b03610aa857610a83610a9b987f5754f935e3165da0bd9fec6569d718ced687f59a5d19938799d1be43f3db679695856104139e606061018098015260e0830152612f39565b60405191610a9083611d83565b820152a35a90611d11565b610aa3611d4b565b61215f565b5f80fd5b60046040517f170dda16000000000000000000000000000000000000000000000000000000008152fd5b600291506080610aeb91015160843590613872565b145f610944565b60046040517fd0cfc108000000000000000000000000000000000000000000000000000000008152fd5b610b25906119c5565b610b3057865f6108e5565b8680fd5b8380fd5b8280fd5b5080fd5b50346104a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104a757602073ffffffffffffffffffffffffffffffffffffffff7f2b50211693ec91bcfe327771928b74a8f475c508d53e86fca4153bcf0f0e87765416604051908152f35b50346104a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104a757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346104a75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104a757610c586119a2565b6024358015158103610aa85773ffffffffffffffffffffffffffffffffffffffff8092163381141580610dd8575b610dae5783526009602052604083209083825492555f14610d7957610caa9061298a565b827f000000000000000000000000000000000000000000000000000000000000000091610cd7308461340c565b937f00000000000000000000000000000000000000000000000000000000000000001690813b15610b385782916024839260405194859384927fdb006a7500000000000000000000000000000000000000000000000000000000845260048401525af180156104aa57610d65575b5050610d5d61041392610d58308461340c565b611d11565b9033906129a4565b610d6e906119c5565b610b3857825f610d45565b6104139150610d879061298a565b337f00000000000000000000000000000000000000000000000000000000000000006129a4565b60046040517f63c7e7fd000000000000000000000000000000000000000000000000000000008152fd5b506040517f2637588e000000000000000000000000000000000000000000000000000000008152816004820152336024820152602081604481877f0000000000000000000000000000000000000000000000000000000000000000165afa908115610e85578591610e4b575b5015610c86565b90506020813d602011610e7d575b81610e6660209383611a5c565b810103126104b557610e7790611d76565b5f610e44565b3d9150610e59565b6040513d87823e3d90fd5b50346104a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104a757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b50346104a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104a75754600154600254600354604080519485526020850193909352918301526060820152608090f35b50346104a7576101a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104a757610f8e6119a2565b610160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbc360112610b385773ffffffffffffffffffffffffffffffffffffffff8083165f52600860205260405f20335f5260205260405f206024355f52602052610ffb60405f20612b68565b60a0810151610af25761100d81612cdc565b1590816111c2575b50610aac578083165f52600860205260405f20335f5260205260405f206024355f5260205260405f206040519161104b83611a22565b6044359360ff85168503610aa85784845260643593845f0b8503610aa857846020820152608435604082015260a435606082015260c435608082015260e435908115158203610aa8578160a082015261010435908482168203610aa8578160c082015260807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedc360112610aa857604051956110e587611a06565b61012435875261014435908682168203610aa85781602089015261016435938415158503610aa8578460408a015261018435958615158703610aa8577f5754f935e3165da0bd9fec6569d718ced687f59a5d19938799d1be43f3db67969a61115e8a9687958d8b6101809f6060015260e0830152612f39565b60ff6040519d168d525f0b60208d015260843560408d015260a43560608d015260c43560808d0152151560a08c01521660c08a01526101243560e08a015216610100880152151561012087015215156101408601526024359085015233941692a380f35b6002915060806111d791015160c43590613872565b145f611015565b50346104a75760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104a7576104136112196119a2565b602435903390612874565b50346104a7576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104a75760043573ffffffffffffffffffffffffffffffffffffffff81168103610b3c5760807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc360112610aa857604051906112ac82611a06565b602435825260443560208301526064356040830152608435606083015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112610aa8576040519061130082611a06565b60a435825260c435602083015260e43560408301526101043560608301527f6fee9688c285c5c5c97d6a1a29adced674e6b2ad0888b8ad2116b58a8b3ea2486001815410156115c1576001905560017f2801b00eb06461cf9fcb9758b5fafd884ff06a86177386f73b6c49f0bf5a5af055303b1515806115ba575b6115905760609273ffffffffffffffffffffffffffffffffffffffff8492167f2b50211693ec91bcfe327771928b74a8f475c508d53e86fca4153bcf0f0e8776557f00000000000000000000000000000000000000000000000000000000000000007f5b5cbfa852c5bd03e540eba853f8faf28a604a4d82bee1091096bfaea14d08c3558051855560208101516001556040810151600255015160035580516004556020810151600555604081015160065501516007556040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001660048201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248201526020816044818573ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af180156104aa57611557575b50807f2801b00eb06461cf9fcb9758b5fafd884ff06a86177386f73b6c49f0bf5a5af0557fbe9b076dc5b65990cca9dd9d7366682482e7817a6f6bc7f4faf4dc32af497f32602060405160018152a180f35b6020813d602011611588575b8161157060209383611a5c565b81010312610b3c5761158190611d76565b505f611505565b3d9150611563565b60046040517fb9a621e1000000000000000000000000000000000000000000000000000000008152fd5b508361137b565b60246040517f3db738da00000000000000000000000000000000000000000000000000000000815260016004820152fd5b50346104a75760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104a757604060209173ffffffffffffffffffffffffffffffffffffffff6116446119a2565b168152600983522054604051908152f35b50346104a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104a75760207f5b5cbfa852c5bd03e540eba853f8faf28a604a4d82bee1091096bfaea14d08c35473ffffffffffffffffffffffffffffffffffffffff60405191168152f35b50346104a757807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104a757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5034610aa8577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36016101408112610aa85761012013610aa8576101243567ffffffffffffffff8111610aa857611790903690600401611974565b604092919251806117a5838660208401611be4565b03916117d77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093848101845283611a5c565b61182c6117e2611c83565b936117eb611cca565b6040805173ffffffffffffffffffffffffffffffffffffffff9788166020820152919096169581019590955260443560608601526080908101855284611a5c565b5a9473ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b15610aa8576118a9925f92836040518096819582947f4ddd9dfc00000000000000000000000000000000000000000000000000000000845260048401611be4565b03925af180156118fd576118e4575b50610a9b61041393946118dd6118cc611c83565b6118d4611cca565b60243591612874565b5a90611d11565b61041393506118f2906119c5565b610a9b5f93506118b8565b6040513d5f823e3d90fd5b34610aa8575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610aa85760209073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9181601f84011215610aa85782359167ffffffffffffffff8311610aa85760208381860195010111610aa857565b6004359073ffffffffffffffffffffffffffffffffffffffff82168203610aa857565b67ffffffffffffffff81116119d957604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6080810190811067ffffffffffffffff8211176119d957604052565b610100810190811067ffffffffffffffff8211176119d957604052565b6101a0810190811067ffffffffffffffff8211176119d957604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176119d957604052565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc6060910112610aa85773ffffffffffffffffffffffffffffffffffffffff906004358281168103610aa857916024359081168103610aa8579060443590565b9060e080611ba49360ff815116845260208101515f0b602085015260408101516040850152606081015160608501526080810151608085015260a0810151151560a085015273ffffffffffffffffffffffffffffffffffffffff60c08201511660c08501520151910190606080918051845273ffffffffffffffffffffffffffffffffffffffff602082015116602085015260408101511515604085015201511515910152565b565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b916101406004359373ffffffffffffffffffffffffffffffffffffffff94858116809103610aa857815260243560208201526044356040820152606435858116809103610aa8576060820152608435858116809103610aa857608082015260a435948516809503610aa857611c809460a082015260c43560c082015260e43560e082015261010435610100820152816101208201520191611ba6565b90565b60043573ffffffffffffffffffffffffffffffffffffffff81168103610aa85790565b6101643573ffffffffffffffffffffffffffffffffffffffff81168103610aa85790565b60643573ffffffffffffffffffffffffffffffffffffffff81168103610aa85790565b6101c43573ffffffffffffffffffffffffffffffffffffffff81168103610aa85790565b91908203918211611d1e57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60405190611d5882611a06565b5f548252600154602083015260025460408301526003546060830152565b51908115158203610aa857565b60043560ff8116809103610aa8578152602435805f0b809103610aa857602082015260443560408201526064356060820152608435608082015260a435801515809103610aa85760a082015260c43573ffffffffffffffffffffffffffffffffffffffff90818116809103610aa85760c083015260e43560e083015261010435908116809103610aa85761010082015261012435801515809103610aa8576101208201526101443590811515809203610aa8576101400152565b916102a0611e4a84611d83565b610164359373ffffffffffffffffffffffffffffffffffffffff94858116809103610aa857610160820152610184356101808201526101a4356101a08201526101c435858116809103610aa8576101c08201526101e435858116809103610aa8576101e082015261020435948516809503610aa857611c8094610200820152610224356102208201526102443561024082015261026435610260820152816102808201520191611ba6565b60405190611f0282611a22565b815f81525f60208201525f60408201525f60608201525f60808201525f60a08201525f60c082015260e060405191611f3983611a06565b5f83525f60208401525f60408401525f60608401520152565b90816020910312610aa8575173ffffffffffffffffffffffffffffffffffffffff81168103610aa85790565b90816060910312610aa857604051906060820182811067ffffffffffffffff8211176119d957611fc1916040918252805184526020810151602085015201611d76565b604082015290565b929192611fd4611ef5565b5073ffffffffffffffffffffffffffffffffffffffff80911693845f526020906008825260409383855f2091165f528252835f20905f528152612018835f20612b68565b9460a086015115801590612150575b61212757816004918551928380927f7dc0d1d00000000000000000000000000000000000000000000000000000000082525afa91821561211d5790606092915f926120f0575b505060048451809481937f52bfe789000000000000000000000000000000000000000000000000000000008352165afa9182156120e7575090611c80915f916120b8575b5083612d1e565b6120da915060603d6060116120e0575b6120d28183611a5c565b810190611f7e565b5f6120b1565b503d6120c8565b513d5f823e3d90fd5b61210f9250803d10612116575b6121078183611a5c565b810190611f52565b5f8061206d565b503d6120fd565b84513d5f823e3d90fd5b600484517fd0cfc108000000000000000000000000000000000000000000000000000000008152fd5b5061215a86612cdc565b612027565b909281519261218f6020946121a08686015161218a670de0b6b3a76400008095819561218a8d61295a565b612977565b0461219a489361295a565b906133e8565b04926040926060848701519601518451967fde26c4a1000000000000000000000000000000000000000000000000000000008852600497806121ec6024958c8c840152868301906137f0565b03918a8273420000000000000000000000000000000000000f9481865afa918215612699575f92612845575b508751917fc59859180000000000000000000000000000000000000000000000000000000083528b838c81875afa92831561283b575f9361280c575b507f0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9283811681036126f95789517f519b4bd3000000000000000000000000000000000000000000000000000000008152908d828e81895afa9081156127d1575f916127db575b6122c792508d1b612977565b89517f68d5dca60000000000000000000000000000000000000000000000000000000081528d818e81895afa9081156127d157908e8e925f926127a0575b508c5180937ff8206140000000000000000000000000000000000000000000000000000000008252818a5afa91821561279657918f92918f94925f9261275b575b50612355929161219a91612977565b958b51928380927f313ce5670000000000000000000000000000000000000000000000000000000082525afa908115612751575f91612724575b50604d81116126f957600a0a808c1b938116036126ce5782156126a3579261219a889593866123c761218a9561218a6123d09961295a565b0492049361295a565b04956123dc87876133e8565b9373ffffffffffffffffffffffffffffffffffffffff948260a0877f2b50211693ec91bcfe327771928b74a8f475c508d53e86fca4153bcf0f0e877654168951928380927ffeaf968c0000000000000000000000000000000000000000000000000000000082525afa908115612699575f9161264d575b5082810290808205841490151715612622576305f5e1009005905f82126125f5579061247e91612977565b0491606084805181010312610aa85788840151938585168503610aa85786810151958616809603610aa85760600151928061254f57505050916124d56124da925f9485905b808210871461254557509283916135d0565b61298a565b94612508867f5b5cbfa852c5bd03e540eba853f8faf28a604a4d82bee1091096bfaea14d08c35433906129a4565b8251968752860152840152606083015260808201527ffa0333956d06e335c550bd5fc4ac9c003c6545e371331b1071fa4d5d8519d6c160a03392a2565b90509283916135d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81019081116125ca5764e8d4a51000900491600183018093116125a05750506124da925f94926124d592906124c3565b6011907f4e487b71000000000000000000000000000000000000000000000000000000005f52525ffd5b506011827f4e487b71000000000000000000000000000000000000000000000000000000005f52525ffd5b5086517f501f289e0000000000000000000000000000000000000000000000000000000081529283015250fd5b846011857f4e487b71000000000000000000000000000000000000000000000000000000005f52525ffd5b905060a0813d60a011612691575b8161266860a09383611a5c565b81010312610aa857612679816133f5565b5061268a60808c83015192016133f5565b505f612453565b3d915061265b565b88513d5f823e3d90fd5b8560128c7f4e487b71000000000000000000000000000000000000000000000000000000005f52525ffd5b8560118c7f4e487b71000000000000000000000000000000000000000000000000000000005f52525ffd5b8660118d7f4e487b71000000000000000000000000000000000000000000000000000000005f52525ffd5b90508c81813d831161274a575b61273b8183611a5c565b81010312610aa857515f61238f565b503d612731565b8a513d5f823e3d90fd5b9384919395508092503d831161278f575b6127768183611a5c565b81010312610aa85790518d928f9290919061219a612346565b503d61276c565b8c513d5f823e3d90fd5b9250905081813d83116127ca575b6127b88183611a5c565b81010312610aa857518c908e5f612305565b503d6127ae565b8b513d5f823e3d90fd5b90508d82813d8311612805575b6127f28183611a5c565b81010312610aa8576122c79151906122bb565b503d6127e8565b9092508b81813d8311612834575b6128248183611a5c565b81010312610aa85751915f612254565b503d61281a565b89513d5f823e3d90fd5b9091508a81813d831161286d575b61285d8183611a5c565b81010312610aa85751905f612218565b503d612853565b91909173ffffffffffffffffffffffffffffffffffffffff80911691825f5260209160088352604090815f20951694855f528352805f20825f5283526128bb815f20612b68565b6128c481612cdc565b801561294d575b612924579061291d82600160a07fa7e8b7ad64b09d9d45f4ad65f9fd654f99b90f9ce66bb414f72a9f69ba03db329796950152865f5260088552825f20885f528552825f20845f528552825f20612f39565b51908152a3565b600482517f955cc4b9000000000000000000000000000000000000000000000000000000008152fd5b5060a081015115156128cb565b90670de0b6b3a764000091828102928184041490151715611d1e57565b81810292918115918404141715611d1e57565b64e8d4a5100090818102918183041490151715611d1e5790565b9173ffffffffffffffffffffffffffffffffffffffff80931690604092835191602095868401927fa9059cbb000000000000000000000000000000000000000000000000000000008452166024840152604483015260448252612a0682611a06565b83519184830167ffffffffffffffff92848210848311176119d9575f92839288528886527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656489870152519082875af13d15612b5b573d9182116119d957612aa893855192612a9b887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160185611a5c565b83523d5f8885013e613ad2565b805180612ab6575b50505050565b81849181010312610aa85782612acc9101611d76565b15612ad8578080612ab0565b6084925051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b612aa89360609250613ad2565b612b70611ef5565b50604090600260a06080845193612b8685611a3f565b80549060ff8216968787528260081c5f0b8060208901526101808460101c60070b9384848b01528560501c60070b958660608c01527fffffffffff00000000000000000000000000000000000000000000000000000067ffffffffffffffff918c838260901c169a8b9101528c60ff8260d01c1615159b8c9101521660c08c01526001820154998a928c6101007fffffffffffffffffffffffff000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8097169e8f60e085015216910152015491821690816101208d01528260a01c169a8b61014082015260ff808460e01c161515938461016084015260e81c161515938491015284519a612c9a8c611a06565b8b5260208b0152838a01526060890152815198612cb68a611a22565b895260208901528701526060860152608085015260a084015260c083015260e082015290565b60ff815116159081612d0f575b81612d02575b81612cf8575090565b6060915001511590565b6040810151159150612cef565b60208101515f0b159150612ce9565b604082015115612dae5760208101515f0b60018114612d8b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14612d635750505f90565b60406020612d7693015191015190613ac1565b8015908115612d83575090565b600191501490565b5060406020612d9f93015191015190613ac1565b60028114908115612d83575090565b50505f90565b9160e0810192835191825115612e51578184916040612de595015115155f14612e2d575050508351519283916135d0565b6020612e1773ffffffffffffffffffffffffffffffffffffffff92838386510151165f526009835260405f20546133e8565b92510151165f52600960205260405f2055600190565b620f424092612e4892612e3f9261349d565b86515190612977565b049283916135d0565b50505050505f90565b80916101809283910312610aa85760405191820182811067ffffffffffffffff8211176119d957604052805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e0830152610100808201519083015261012080820151908301526101408082015190830152610160809101519082015290565b90816080910312610aa857606060405191612f1783611a06565b8051835260208101516020840152604081015160408401520151606082015290565b91909160ff8351166003811190816133dd575b5080613399575b1561336f57604090818401936002612f6b8651613a73565b1461334657612f7a8551613a8e565b156133465760608101916002612f908451613a73565b1461331d57612f9f8351613a8e565b1561331d5760808201956002612fb5885161384c565b146132f45760e08301906002612fcc83515161384c565b146132cb57859697845160ff16916020860151905196519151968367ffffffffffffffff9860a089015115159373ffffffffffffffffffffffffffffffffffffffff60c0819b01511697519a8b9a60208c0151169d8e918c519e8f9d015115159d6060015115159c8d9383519361304285611a3f565b888552865f0b60208601528960070b908501528a60070b606085015282871660808501528960a085015260c084015f90528c60e085015261010084015f9052610120840152166101408201528c6101608201526101800152885490837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008316178a5560081b9161ff00928084169586867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000861617178c5560101b9369ffffffffffffffff000098858a168098887fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000088161717178d5560501b91169371ffffffffffffffff00000000000000000000928284168098887fffffffffffffffffffffffffffff000000000000000000000000000000000000881617881717178d5560901b79ffffffffffffffff000000000000000000000000000000000000169889911696867fffffffffffff00000000000000000000000000000000000000000000000000008616178617881717178b55169460d01b7aff000000000000000000000000000000000000000000000000000016967fffffffffff0000000000000000000000000000000000000000000000000000008892161782178417851786171788551717171717825560018201556002019384549160e81b7dff0000000000000000000000000000000000000000000000000000000000169360a01b7bffffffffffffffff000000000000000000000000000000000000000016917fffff0000000000000000000000000000000000000000000000000000000000001617179060e01b7cff000000000000000000000000000000000000000000000000000000001617179055565b600486517ff3469aa7000000000000000000000000000000000000000000000000000000008152fd5b600485517ff3469aa7000000000000000000000000000000000000000000000000000000008152fd5b600484517ff3469aa7000000000000000000000000000000000000000000000000000000008152fd5b600483517ff3469aa7000000000000000000000000000000000000000000000000000000008152fd5b60046040517f5b8c7e99000000000000000000000000000000000000000000000000000000008152fd5b5060208301515f0b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81149081156133d2575b50612f53565b60019150145f6133cc565b60079150105f612f4c565b91908201809211611d1e57565b519069ffffffffffffffffffff82168203610aa857565b90602090602473ffffffffffffffffffffffffffffffffffffffff918260405195869485937f70a08231000000000000000000000000000000000000000000000000000000008552166004840152165afa9081156118fd575f9161346e575090565b90506020813d602011613495575b8161348960209383611a5c565b81010312610aa8575190565b3d915061347c565b73ffffffffffffffffffffffffffffffffffffffff926040517f7dc0d1d00000000000000000000000000000000000000000000000000000000081526020816004818888165afa80156118fd576060915f916135b1575b506004604051809781937f52bfe789000000000000000000000000000000000000000000000000000000008352165afa9384156118fd57620f4240946020915f91613592575b5001515f811261358a57915b6060810151600161355682613a8e565b0361357357509261218a9160ff61356f95511691613883565b0490565b61356f94509150505f811215612977575f03612977565b5f0391613546565b6135ab915060603d6060116120e0576120d28183611a5c565b5f61353a565b6135ca915060203d602011612116576121078183611a5c565b5f6134f4565b6135f173ffffffffffffffffffffffffffffffffffffffff809216936139dd565b92803b15610aa8575f928360c49260405196879586947f91eece280000000000000000000000000000000000000000000000000000000086521660048501527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8060248601528060448601526064850152820360848401528160a48401525af180156118fd5761367e5750565b611ba4906119c5565b81518152602081019061369a82516139dd565b6136a760608501516139dd565b906136b560808601516139dd565b915f8382039312818412811691841390151617611d1e575f8282019283129112908015821691151617611d1e576136eb90613a38565b9260408201906136fb82516139dd565b61370860a08301516139dd565b9061371660c08401516139dd565b915f8382039312818412811691841390151617611d1e575f8282019283129112908015821691151617611d1e5761374e606091613a38565b93019061375b82516139dd565b61377661010061376e60e08501516139dd565b9301516139dd565b915f8382039312818412811691841390151617611d1e575f8282019283129112908015821691151617611d1e576137ac90613a38565b90525252565b60016137bd83613a8e565b036137c85750505f90565b6137d1906139dd565b5f8282019283129112908015821691151617611d1e57611c8090613a38565b91908251928382525f5b8481106138385750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f845f6020809697860101520116010190565b6020818301810151848301820152016137fa565b67ffffffffffffffff9081811161386b571061386757600190565b5f90565b5050600290565b81811161386b571061386757600190565b9173ffffffffffffffffffffffffffffffffffffffff8093166040938451937f55f5751000000000000000000000000000000000000000000000000000000000855216806004850152608084602481855afa9384156139b2575f946139bc575b5084519182917f6e19368000000000000000000000000000000000000000000000000000000000835260048301528160246101809485935afa9182156139b2579161393b9160ff94935f92613995575b505084613687565b166004810361394e575060209150015190565b6005810361395c5750015190565b60061461398c57600482517f5b8c7e99000000000000000000000000000000000000000000000000000000008152fd5b60609150015190565b6139ab9250803d10610570576105628183611a5c565b5f80613933565b85513d5f823e3d90fd5b6139d691945060803d608011610538576105298183611a5c565b925f6138e3565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111613a075790565b602490604051907feecaa25d0000000000000000000000000000000000000000000000000000000082526004820152fd5b5f8112613a425790565b602490604051907fb02ef0870000000000000000000000000000000000000000000000000000000082526004820152fd5b677fffffffffffffff9081811361386b571261386757600190565b7fffffffffffffffffffffffffffffffffffffffffffffffff80000000000000009081811361386b571261386757600190565b81811361386b571261386757600190565b91929015613b4d5750815115613ae6575090565b3b15613aef5790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015613b605750805190602001fd5b613b9e906040519182917f08c379a00000000000000000000000000000000000000000000000000000000083526020600484015260248301906137f0565b0390fdfea2646970667358221220606faf055d768c82c091458ffbdaf5f5eb9f23ce588e9fe65389a33ddb2949f864736f6c63430008180033000000000000000000000000833589fcd6edb6e08f4c7c32d4f71b54bda029130000000000000000000000007b4adf64b0d60ff97d672e473420203d52562a840000000000000000000000005fa881826ad000d010977645450292701bc2f56d000000000000000000000000d92c026c7eb0f1d7d7bbc23441d852e1c712d2ff000000000000000000000000ad96692e04294e479707f2a49941bee253215ff9