0 txs
81 calls
constructor
constructor((address factory, address events, address configs, address usdAsset, address automate, address taskCreator, address gainsTrading, address pyth) _params)
functions
automate
viewfunction automate() view returns (address)
availableFund
viewfunction availableFund() view returns (uint256)
availableFundD18
viewfunction availableFundD18() view returns (uint256)
dedicatedMsgSender
viewfunction dedicatedMsgSender() view returns (address)
delegates
viewfunction delegates(address delegate) view returns (bool)
ethToUsd
viewfunction ethToUsd(uint256 _amount) view returns (uint256)
executor
viewfunction executor() view returns (address)
getKeyIndex
viewfunction getKeyIndex(address _source, uint32 _sourceIndex) view returns (uint32 index)
getTraderPosition
viewfunction getTraderPosition(uint32 _index) view returns (tuple traderPosition)
isAuth
viewfunction isAuth(address msgSender) view returns (bool)
isOwner
viewfunction isOwner(address msgSender) view returns (bool)
lockedFund
viewfunction lockedFund() view returns (uint256)
lockedFundD18
viewfunction lockedFundD18() view returns (uint256)
owner
viewfunction owner() view returns (address)
positions
viewfunction positions(uint256 _key) view returns (tuple)
taskId
viewfunction taskId() view returns (uint256)
VERSION
viewfunction VERSION() view returns (bytes32)
addDelegate
nonpayablefunction addDelegate(address _delegate)
closePosition
nonpayablefunction closePosition(uint32 _index)
execute
payablefunction execute(uint8[] _commands, bytes[] _inputs) payable
init
nonpayablefunction init(address _owner, address _executor)
removeDelegate
nonpayablefunction removeDelegate(address _delegate)
setExecutor
nonpayablefunction setExecutor(address _executor)
transferOwnership
nonpayablefunction transferOwnership(address _newOwner)
events
DelegatedCopyWalletAdded
event DelegatedCopyWalletAdded(address indexed caller, address indexed delegate)
DelegatedCopyWalletRemoved
event DelegatedCopyWalletRemoved(address indexed caller, address indexed delegate)
OwnershipTransferred
event OwnershipTransferred(address indexed caller, address indexed newOwner)
errors
CannotExecuteTask
error CannotExecuteTask(uint256 taskId, address executor)
EthWithdrawalFailed
error EthWithdrawalFailed()
ExecutionFeeNotEnough
error ExecutionFeeNotEnough()
InsufficientAvailableFund
error InsufficientAvailableFund(uint256 available, uint256 required)
InvalidCollateralDelta
error InvalidCollateralDelta()
InvalidCommandType
error InvalidCommandType(uint256 commandType)
InvalidDelegateAddress
error InvalidDelegateAddress(address delegateAddress)
InvalidLeverage
error InvalidLeverage()
LengthMismatch
error LengthMismatch()
NoOpenPosition
error NoOpenPosition()
NoOrderFound
error NoOrderFound()
NoTaskFound
error NoTaskFound()
PositionExist
error PositionExist()
SourceMismatch
error SourceMismatch()
TradeMismatch
error TradeMismatch()
Unauthorized
error Unauthorized()
ZeroSizeDelta
error ZeroSizeDelta()
creation bytecode
0x6101c0604081815234620005e357819062003c368038038091620000248286620005e8565b843961010093849181010312620005e35780516001600160401b039284820184811183821017620005cd5783526200005c816200060c565b9384835260206200006f8184016200060c565b8082860152620000818685016200060c565b90818787015262000095606086016200060c565b97886060880152620000aa608087016200060c565b93846080890152620000bf60a088016200060c565b8060a08a015260e0620000e981620000da60c08c016200060c565b9a60c08d019b8c52016200060c565b990198895260018060a01b03808097169116968a519360c085019185831090831117620005cd5787918c521683528582840194168452858a84019516855285606084019b168b5280608084015260a083019680885260009160018060a01b031983541683558b5183807f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a3608082905263573ea57560e01b81528481600481855afa9081156200057f5789918e8792879262000589575b50516331056e5760e21b81529283916004918391165afa9081156200057f57908591859162000539575b5060c0528c5163cd3d4fb960e01b81526002600482015291829060249082905afa908115620004e9578892918d86928692620004f3575b5051632e8743fd60e21b81529384916004918391165afa918215620004e957918c9184938a95926200049d575b50602490835195869384926337b6269f60e21b84526004840152165afa928315620004915790879594939291819362000434575b50505060a052600160155551821660e05251811689529051811661012090815296518116610140908152925181166101609081529351166101809081529351166101a0908152935161361496909590876200062288396080518781816106ff0152612996015260a051876128f3015260c05187505060e0518781816101e2015261028b0152518681816107d501528181610af601528181610c3801528181610d5d01528181611f6d01526130c70152518581816106460152818161150601528181611ec20152818161303201526134640152518481816107a1015281816108c301528181610abe01528181610c0001528181610f88015281816114c301528181611b2c01528181611f35015281816130950152818161334b0152613552015251836106c3015251828181610e8b01528181610f2f0152818161100501528181611058015281816112720152818161146d0152818161154a015281816116930152818161193a01528181611a5901528181611ad401528181611b7001528181611bf401528181612094015281816120f001528181612167015281816121c301528181612268015281816122ce015281816124580152818161252b015281816125b60152612e0201525181612b0c0152f35b9180949596508c809294503d831162000489575b620004548183620005e8565b81010312620004855762000468836200060c565b920151801515036200048257508492919083838162000264565b80fd5b5080fd5b503d62000448565b508a51903d90823e3d90fd5b9250929350508381813d8311620004e1575b620004bb8183620005e8565b81010312620004dd578792916024620004d58e936200060c565b919062000230565b8280fd5b503d620004af565b8c513d85823e3d90fd5b939450505081813d831162000531575b6200050f8183620005e8565b81010312620004dd5790838c6004620005298b956200060c565b919062000203565b503d62000503565b82819392503d831162000577575b620005538183620005e8565b8101031262000573576024916200056b86926200060c565b9092620001cc565b8380fd5b503d62000547565b8d513d86823e3d90fd5b9350505081813d8311620005c5575b620005a48183620005e8565b8101031262000573575188811681036200057357889085908e6004620001a2565b503d62000598565b634e487b7160e01b600052604160045260246000fd5b600080fd5b601f909101601f19168101906001600160401b03821190821017620005cd57604052565b51906001600160a01b0382168203620005e35756fe608080604052600436101561001d575b50361561001b57600080fd5b005b60003560e01c908163049aacfe14612978575080631c3c0ea8146129445780632520e7ff1461291757806328f150eb146128d35780632f54bf6e146128a05780633322b23d1461288257806337325725146127e557806351f954bf1461272c5780635595de82146126b0578063587cde1e14612671578063608d60eb146105bc57806367e7646f1461052a5780638da5cb5b14610503578063946d1480146104e557806399fbab8814610448578063c34c08e514610421578063cea1fa0414610403578063d0cb3cd1146103e8578063d270444f146103c5578063e71bdf4114610319578063f05ed16a146102f3578063f09a40161461025b578063f2fde38b146101725763ffa1ad7414610132573861000f565b3461016d57600036600319011261016d5760206040517f302e312e300000000000000000000000000000000000000000000000000000008152f35b600080fd5b3461016d57602036600319011261016d5761018b6129ba565b600054906001600160a01b0391828116330361024a57826001600160a01b0319921691829116176000556040519181337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a37f000000000000000000000000000000000000000000000000000000000000000016803b1561016d57604483600081938195637eecd31b60e11b845260048401523360248401525af1801561023e5761023557005b61001b90612a30565b6040513d6000823e3d90fd5b6040516282b42960e81b8152600490fd5b3461016d57604036600319011261016d576102746129ba565b6024356001600160a01b03808216820361016d57807f000000000000000000000000000000000000000000000000000000000000000016330361024a5761001b9216806001600160a01b0319600054161760005560007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a36133c4565b3461016d57600036600319011261016d576020610311601754613522565b604051908152f35b3461016d57602036600319011261016d576103326129ba565b6001600160a01b03908160005416330361024a5716801580156103ad575b610395578060005260016020526040600020600160ff19825416179055337fb2fa306ae7d3dd8b0bf1082c7d2a4d7d4c11cd422de0134bafcb4cc95ce8131c600080a3005b6024906040519063a3653d9f60e01b82526004820152fd5b5080600052600160205260ff60406000205416610350565b3461016d57600036600319011261016d5760206103116103e3613330565b613522565b3461016d57600036600319011261016d576020610311613330565b3461016d57600036600319011261016d576020601754604051908152f35b3461016d57600036600319011261016d5760206001600160a01b0360165416604051908152f35b3461016d57602036600319011261016d576000606060405161046981612a61565b8281528260208201528260408201520152600435600052601a6020526080604060002060405161049881612a61565b6001600160a01b0382541691828252600181015460208301908152606060036002840154936040860194855201549301928352604051938452516020840152516040830152516060820152f35b3461016d57602036600319011261016d576020610311600435612ad1565b3461016d57600036600319011261016d5760206001600160a01b0360005416604051908152f35b3461016d57602036600319011261016d576105436129ba565b6001600160a01b03908160005416330361024a5716801580156105a3575b61039557806000526001602052604060002060ff198154169055337f2e164a064eb9f0b2ca2868638164f74f683f65ddac9edfe30b907e032301fb1d600080a3005b5080600052600160205260ff6040600020541615610561565b604036600319011261016d5760043567ffffffffffffffff811161016d576105e89036906004016129e3565b9060243567ffffffffffffffff811161016d576106099036906004016129e3565b929091610614612bee565b5a938281036126465760005b8381106109f557856001600160a01b0380601654163314610643575b6001601555005b807f00000000000000000000000000000000000000000000000000000000000000001690604051630160eef160e61b81526020938482600481875afa91821561023e576000926109c4575b5061069f6106a6916106ad93613420565b5a90613323565b3a90612ab4565b600c810290808204600c14901517156109ae57337f00000000000000000000000000000000000000000000000000000000000000008316036109a2575060408051635c08631b60e11b815290816004817f000000000000000000000000000000000000000000000000000000000000000086165afa801561023e57600090610962575b60049150935b8061074086612ad1565b9460405193848092632cfc019d60e21b82525afa91821561023e5760009261092b575b508361076d613330565b8111610882575060405163a9059cbb60e01b81526001600160a01b03831660048201526024810185905290808260448160007f000000000000000000000000000000000000000000000000000000000000000089165af1801561023e5761084e575b50505b817f00000000000000000000000000000000000000000000000000000000000000001690813b1561016d57600060849281956040519788968795639f4db69560e01b8752336004880152166024860152604485015260648401525af1801561023e5761083f575b8061063c565b61084890612a30565b80610839565b81813d831161087b575b6108628183612a7d565b8101031261016d5761087390612c69565b5084806107cf565b503d610858565b6000546040516323b872dd60e01b81526001600160a01b039186168216600482015290841660248201526044810191909152908082806064810103816000887f0000000000000000000000000000000000000000000000000000000000000000165af1801561023e576108f7575b50506107d2565b81813d8311610924575b61090b8183612a7d565b8101031261016d5761091c90612c69565b5084806108f0565b503d610901565b9080925081813d831161095b575b6109438183612a7d565b8101031261016d5761095490612c44565b9085610763565b503d610939565b506040813d60401161099a575b8161097c60409383612a7d565b8101031261016d578061099485600493519201612c44565b50610730565b3d915061096f565b600a6004910493610736565b634e487b7160e01b600052601160045260246000fd5b91508482813d83116109ee575b6109db8183612a7d565b8101031261016d5790519061069f61068e565b503d6109d1565b8060051b90600d82850135101561016d5782811015612630578186013591601e198736030183121561016d578287013567ffffffffffffffff811161016d5736036020848901011361016d576003858201351015610e04576001600160a01b0360005416330361024a5784810135610ce65750908501602001356000811315610ba5576040516323b872dd60e01b815233600482015230602482015260ff82901c6000039182019091186044820181905291906020818060648101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561023e57610b6c575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561016d5760405163145d426560e11b815233600482015260248101939093526000908390604490829084905af191821561023e57600192610b5d575b505b01610620565b610b6690612a30565b87610b55565b6020813d602011610b9d575b81610b8560209383612a7d565b8101031261016d57610b9690612c69565b5087610aeb565b3d9150610b78565b60008112610bb7575b50600190610b57565b610bc0816134e0565b60405163a9059cbb60e01b815233600482015260ff82901c6000039182019091186024820181905291906020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561023e57610cad575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561016d5760405163b014da2160e01b815233600482015260248101939093526000908390604490829084905af191821561023e57600192610c9e575b5090610bae565b610ca790612a30565b87610c97565b6020813d602011610cde575b81610cc660209383612a7d565b8101031261016d57610cd790612c69565b5087610c2d565b3d9150610cb9565b840135600114610cfa575b60019150610b57565b6020828701013515610cf15760008080806020868b010135335af13d15610dff573d67ffffffffffffffff8111610de95760405190610d43601f8201601f191660200183612a7d565b8152600060203d92013e5b15610dd7576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561016d576040516379a4952760e01b815233600482015292870160200135602484015260009083908183816044810103925af191821561023e57600192610dc8575b50610cf1565b610dd190612a30565b87610dc2565b604051630ca79afd60e01b8152600490fd5b634e487b7160e01b600052604160045260246000fd5b610d4e565b9091610e0f336135d4565b1561024a5760038286013503610e50575b50600c8185013511610e355750600190610b57565b604051636bb50f4f60e11b8152908401356004820152602490fd5b848201356004036111c0576040516315878e0760e01b81523060048201526020828901013563ffffffff1660248201526101a09081816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561023e57600092611193575b505060a081015115611181576001600160781b03610100820151166001600160781b036040848b010135168091016001600160781b0381116109ae5790898401606001351561112357606902806001600160781b038116036109ae5760405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316600482015260646001600160781b039283160490911660248201526020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561023e576110d8575b506001600160781b0380610fdf6060945b82610100820151169062ffffff96879101511690612daa565b1691169081156110c25704166107d0811080156110b6575b6110a4576001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561016d576040516305e74d5560e11b81529188016020013563ffffffff1660048301526024820152600081604481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1801561023e57611095575b505b87610e20565b61109e90612a30565b8761108d565b604051633fe89cb960e11b8152600490fd5b50620249f08111610ff7565b634e487b7160e01b600052601260045260246000fd5b6020813d60201161111b575b816110f160209383612a7d565b8101031261016d576001600160781b03610fdf6060946111118394612c69565b5094505050610fb5565b3d91506110e4565b90506001600160781b036101008301511681101561116f576001600160781b036101008301511603906001600160781b0382116109ae576001600160781b0380610fdf60609493610fc6565b604051636488ef4160e11b8152600490fd5b60405163556729af60e01b8152600490fd5b6111b29250803d106111b9575b6111aa8183612a7d565b810190612c9b565b8980610ec4565b503d6111a0565b8482013560050361235b576111db610140828901013561342d565b86810161014001356119b3576040805182890160208181013560601b6bffffffffffffffffffffffff191690830190815292013563ffffffff16603482015261123181605481015b03601f198101835282612a7d565b51902080600052601b60205263ffffffff604060002054168061190e575b50604051630109786b60e11b8152306004820152600060248201526060816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561023e576000916118a5575b5063ffffffff604051916112be83612a44565b60006020840152600060e08401526000610180840152308352600160a08401526080858c01013515156080840152600360c084015261ffff6060868d0101351660408401526001600160781b0360a0868d0101351661010084015262ffffff60c0868d01013516606084015267ffffffffffffffff60e0868d0101351661012084015267ffffffffffffffff610100868d0101351661014084015267ffffffffffffffff610120868d010135166101608401525116602082015260405161138481612a14565b6001600160a01b036020858c0101351681526020810163ffffffff6040868d010135168152604082016000815263ffffffff60208501511685600052601b60205260406000209063ffffffff1982541617905563ffffffff602085015116600052601c6020527fffffffffffffffff00000000000000000000000000000000000000000000000077ffffffff00000000000000000000000000000000000000006001600160a01b036040600020955116935160a01b16915160c01b16911717905560a06020848b6114b5604051948593849363095ea7b360e01b85520101356001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600484019092916001600160781b036020916001600160a01b03604085019616845216910152565b038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561023e5761186c575b50604051632cfc019d60e21b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561023e57600091611832575b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561016d576001600160a01b039077ffffffffffffffffffffffffffffffffffffffffffffffff6101806040519463111970f960e21b865284815116600487015263ffffffff602082015116602487015261ffff604082015116604487015262ffffff606082015116606487015260808101511515608487015260a0810151151560a487015260ff60c08201511660c487015260e081015161160c8161342d565b60e48701526001600160781b036101008201511661010487015267ffffffffffffffff6101208201511661012487015267ffffffffffffffff6101408201511661014487015267ffffffffffffffff6101608201511661016487015201511661018484015261012c6101a4840152166101c48201526000816101e481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561023e57611823575b506103e86001600160781b036116e68a850160c081013562ffffff169060a00135612daa565b16049080600052601a6020526040600020606060036040519261170884612a61565b6001600160a01b038154168452600181015460208501526002810154604085015201549101526001600160781b0382166f01fffffffffffffffffffffffffffffe8360011b16046002146001600160781b0383161517156109ae57816117846f01fffffffffffffffffffffffffffffe60039460011b1661344d565b9161178e836134e0565b8260ff1c6000036117a6601791858101188254613420565b90556001600160a01b036020604051966117bf88612a61565b8d0101351685526020850190600082526001600160781b03604087019316835260608601938452600052601a6020526001600160a01b0360406000209551166001600160a01b0319865416178555516001850155516002840155519101555b61108f565b61182c90612a30565b896116c0565b90506020813d602011611864575b8161184d60209383612a7d565b8101031261016d5761185e90612c44565b8b61153f565b3d9150611840565b6020813d60201161189d575b8161188560209383612a7d565b8101031261016d5761189690612c69565b508a6114f0565b3d9150611878565b90506060813d606011611906575b816118c060609383612a7d565b8101031261016d576118fb60408051926118d984612a14565b6118e281612c58565b84526118f060208201612c58565b602085015201612c76565b60408201528a6112ab565b3d91506118b3565b6040516315878e0760e01b815230600482015263ffffffff9190911660248201526101a09081816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561023e5760a092600092611996575b50500151611984578961124f565b604051632d852ff160e21b8152600490fd5b6119ac9250803d106111b9576111aa8183612a7d565b8b80611976565b6119c3610140828901013561342d565b6040805182890160208181013560601b6bffffffffffffffffffffffff191690830190815292013563ffffffff166034820152611a479190611a088160548101611223565b5190206000818152601b6020526040908190205490516315878e0760e01b815230600482015263ffffffff909116602482015291829081906044820190565b036101a0938491816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa92831561023e5760009361233c575b505060a0820151156111815761ffff80604084015116906060858c0101351614801590612324575b6123135788830161014001356001036122525760405163095ea7b360e01b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660048201526001600160781b038a850160a001351660248201526020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561023e57612219575b5063ffffffff602083015116916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561016d576040516324058ad360e01b8152600481019390935289840160a08101356001600160781b0316602485015260c081013562ffffff16604485015260e0013567ffffffffffffffff16606484015261012c608484015260008360a481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af192831561023e578a9361220a575b505b610100848401013567ffffffffffffffff8116612150575b50610120848401013567ffffffffffffffff811661207d575b506001600160781b03611c878262ffffff6060846101006103e8970151169201511690612daa565b16046103e86001600160781b03611cae85870160c081013562ffffff169060a00135612daa565b160490600083600052601a6020526040600020604051611ccd81612a61565b6001600160a01b038254168152600182015480602083015260036002840154936040840194855201546060830152806001600160781b0386161160001461207557611d21906001600160781b038616613323565b809281611e64575b5050505080936001610140888801013514611db9575b6001600160a01b03916040918360206003999a85519b611d5e8d612a61565b0101351689526001600160781b0360208a01951685526001600160781b03838a0196168652606089019687528152601a602052209551166001600160a01b03198654161785555160018501555160028401555191015561108f565b9193509193506001600160781b038416806f01fffffffffffffffffffffffffffffe8660011b160460021490151715611e5057916001600160a01b03604085938d9795836020611e1f6f01fffffffffffffffffffffffffffffe60039b60011b1661344d565b98611e298a6134e0565b8960ff1c8503611e406017918c8101188254613420565b90559a9950505091509150611d3f565b634e487b7160e01b82526011600452602482fd5b90919297505180911161206d575b50858060011b04600214861517156109ae576060611e928760011b61344d565b910151808211612065575b611eaa6017918254613323565b9055604051632cfc019d60e21b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561023e57600092612029575b5060405163a9059cbb60e01b81526001600160a01b0383166004820152602481018290526020818060448101038160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561023e57611ff0575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561016d57600092836064926001600160a01b03946040519b8c968795633317f54960e21b8752166004860152602485015260448401525af194851561023e578c95611fde575b808080611d29565b611fe89150612a30565b60008d611fd6565b6020813d602011612021575b8161200960209383612a7d565b8101031261016d5761201a90612c69565b508f611f62565b3d9150611ffc565b9091506020813d60201161205d575b8161204560209383612a7d565b8101031261016d5761205690612c44565b908f611efb565b3d9150612038565b905080611e9d565b95508e611e72565b506000611d21565b925063ffffffff6020820151166001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561016d57604051630b5d9e9d60e41b815263ffffffff91909116600482015267ffffffffffffffff939093166024840152600083604481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af192831561023e57611c876103e8926001600160781b03928d96612141575b50925050611c5f565b61214a90612a30565b8e612138565b925063ffffffff6020820151166001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561016d5760405163f401f2bb60e01b815263ffffffff91909116600482015267ffffffffffffffff939093166024840152600083604481837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af192831561023e578a9315611c465761220490612a30565b8b611c46565b61221390612a30565b8b611c2c565b6020813d60201161224a575b8161223260209383612a7d565b8101031261016d5761224390612c69565b508a611b59565b3d9150612225565b63ffffffff602083015116916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163b1561016d57604051926369f6bde160e01b845260048401526001600160781b0360a0858c01013516602484015260006044840152600083606481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af192831561023e578a93612304575b50611c2e565b61230d90612a30565b8b6122fe565b60405162e45f0360e21b8152600490fd5b50608080830151151590848b01013515151415611ab2565b612353929350803d106111b9576111aa8183612a7d565b908a80611a8a565b84820135600603612443576040602082890101359163ffffffff9182918a010135169060405160208101906123b38161122386888690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b5190209081600052601b60205280604060002054169283600052601c602052604060002091604051926123e584612a14565b54926001600160a01b03906040828616938483528660a01c169586602084015260c01c91015286161491821592612438575b50506124265761181e92612dc8565b60405163c4d1e76d60e01b8152600490fd5b141590508b80612417565b848201356007036124cc576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561016d57604051638588633360e01b81529188016020013563ffffffff1660048301526000908290602490829084905af1801561023e576124bd575b5061108f565b6124c690612a30565b876124b7565b600882860135036124dd575061108f565b600c82860135036124b75786016040810135906020810135906060013567ffffffffffffffff81166125ac575b5067ffffffffffffffff8216612521575b506124b7565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691823b1561016d5760405163f401f2bb60e01b815263ffffffff92909216600483015267ffffffffffffffff166024820152906000908290604490829084905af1801561023e5761259d575b8061251b565b6125a690612a30565b87612597565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561016d57604051630b5d9e9d60e41b815263ffffffff8416600482015267ffffffffffffffff9290921660248301526000908290604490829084905af1801561023e571561250a5761262a90612a30565b8961250a565b634e487b7160e01b600052603260045260246000fd5b6040517fff633a38000000000000000000000000000000000000000000000000000000008152600490fd5b3461016d57602036600319011261016d576001600160a01b036126926129ba565b166000526001602052602060ff604060002054166040519015158152f35b3461016d57604036600319011261016d576126c96129ba565b6024359063ffffffff9081831680930361016d5760405160609190911b6bffffffffffffffffffffffff191660208281019182526034830194909452906127138160548101611223565b519020600052601b825260406000205416604051908152f35b3461016d57602036600319011261016d576127456129d0565b61274d612bee565b6001600160a01b03908160005416330361024a5761063c9163ffffffff90818316600052601c6020526040600020916112236127da6040519461278f86612a14565b54848116938487528160a01c169081602088015260c01c604087015260405192839160208301958690916034926bffffffffffffffffffffffff199060601b16825260148201520190565b519020915116612dc8565b3461016d57602036600319011261016d5760606128006129d0565b60006040805161280f81612a14565b828152826020820152015263ffffffff809116600052601c60205267ffffffffffffffff6040600020916040519261284684612a14565b54906001600160a01b0382169384815260406020820191838560a01c168352019260c01c83526040519485525116602084015251166040820152f35b3461016d57600036600319011261016d576020601854604051908152f35b3461016d57602036600319011261016d5760206128bb6129ba565b6001600160a01b038060005416911614604051908152f35b3461016d57600036600319011261016d5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461016d57602036600319011261016d57602061293a6129356129ba565b6135d4565b6040519015158152f35b3461016d57602036600319011261016d5761295d6129ba565b6001600160a01b0360005416330361024a5761001b906133c4565b3461016d57600036600319011261016d576020906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b600435906001600160a01b038216820361016d57565b6004359063ffffffff8216820361016d57565b9181601f8401121561016d5782359167ffffffffffffffff831161016d576020808501948460051b01011161016d57565b6060810190811067ffffffffffffffff821117610de957604052565b67ffffffffffffffff8111610de957604052565b6101a0810190811067ffffffffffffffff821117610de957604052565b6080810190811067ffffffffffffffff821117610de957604052565b90601f8019910116810190811067ffffffffffffffff821117610de957604052565b519067ffffffffffffffff8216820361016d57565b818102929181159184041417156109ae57565b81156110c2570490565b6040516396834ad360e01b81527fff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace60048201526080816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa90811561023e57600091612b65575b50670de0b6b3a764000091612b5c612b6192613258565b612ab4565b0490565b6080813d8211612be6575b81612b7d60809383612a7d565b81010312612be25760405191612b9283612a61565b81518060070b8103612be2578352612bac60208301612a9f565b60208401526040820151908160030b8203612bdf5750604083015260609081015190820152670de0b6b3a7640000612b45565b80fd5b5080fd5b3d9150612b70565b600260155414612bff576002601555565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b51906001600160a01b038216820361016d57565b519063ffffffff8216820361016d57565b5190811515820361016d57565b519077ffffffffffffffffffffffffffffffffffffffffffffffff8216820361016d57565b90816101a091031261016d5760405190612cb482612a44565b612cbd81612c44565b8252612ccb60208201612c58565b6020830152604081015161ffff8116810361016d576040830152606081015162ffffff8116810361016d576060830152612d0760808201612c69565b6080830152612d1860a08201612c69565b60a083015260c081015160ff8116810361016d5760c083015260e0810151600381101561016d5760e083015261010080820151906001600160781b038216820361016d57830152610120612d6d818301612a9f565b90830152610140612d7f818301612a9f565b90830152610160612d91818301612a9f565b90830152612da3610180809201612c76565b9082015290565b9190916001600160781b03808094169116029182169182036109ae57565b604080516315878e0760e01b81523060048083019190915263ffffffff861660248301526101a096959394909390916001600160a01b03917f00000000000000000000000000000000000000000000000000000000000000008316918981604481865afa998a156132395760009a61321a575b5050813b1561016d5763ffffffff6024600092838851958694859363bdb340cd60e01b8552168b8401525af1801561320f57976103e891612e9f99613200575b506001600160781b03988162ffffff60608c61010081960151169201511690612daa565b16049687169260008095848252602099601a8b528383208451612ec181612a61565b8682541681528c600183015480918301526060600360028501549489850195865201549201918252808a116000146131f957612efd908a613323565b809281612fda575b505050508297612f65575b5050601a60039798998484519a612f268c612a61565b168a52808a0195878752848b0197885260608b01988952835252209551166001600160a01b031986541617855551600185015551600284015551910155565b6f01fffffffffffffffffffffffffffffe919a975060011b1685810460021486151715612fc757600397989950612f9d601a9161344d565b96612fa7886134e0565b612fbc8860ff1c840389810118601754613420565b601755999897612f10565b634e487b7160e01b825260118a52602482fd5b90919293949550518091116131f1575b508160011b828104600214831517156131de576130069061344d565b90518082116131d6575b61301c90601754613323565b6017558451632cfc019d60e21b8152908c8286817f00000000000000000000000000000000000000000000000000000000000000008b165afa9182156131cc578a92613191575b50855163a9059cbb60e01b81526001600160a01b038316868201908152602081018390528e908290819003604001818e7f00000000000000000000000000000000000000000000000000000000000000008d165af1801561318757613153575b50867f00000000000000000000000000000000000000000000000000000000000000001690813b1561314f578a928389936064938a519788968795633317f54960e21b8752168b860152602485015260448401525af1801561314557613130575b908180808a9594612f05565b61313d9097919297612a30565b959038613124565b84513d8a823e3d90fd5b8a80fd5b8d81813d8311613180575b6131688183612a7d565b8101031261314f5761317990612c69565b50386130c3565b503d61315e565b87513d8d823e3d90fd5b9091508c81813d83116131c5575b6131a98183612a7d565b810103126131c1576131ba90612c44565b9038613063565b8980fd5b503d61319f565b86513d8c823e3d90fd5b905080613010565b634e487b7160e01b8a526011855260248afd5b915038612fea565b5084612efd565b61320990612a30565b38612e7b565b84513d6000823e3d90fd5b613231929a50803d106111b9576111aa8183612a7d565b973880612e3b565b86513d6000823e3d90fd5b63ffffffff16604d81116109ae57600a0a90565b600080825160070b128015613313575b8015613301575b612bdf57604082015160030b8103808060030b03611e505760ff169167ffffffffffffffff90600684116132da575116916006039060ff82116132c65750906132bd60ff6132c39316613244565b90612ab4565b90565b634e487b7160e01b81526011600452602490fd5b511691600519019060ff82116132c65750906132fb60ff6132c39316613244565b90612ac7565b5060fe19604083015160030b1261326f565b5080604083015160030b13613268565b919082039182116109ae57565b6040516370a0823160e01b81523060048201526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa801561023e57600090613391575b6132c3915060175490613323565b6020823d82116133bc575b816133a960209383612a7d565b81010312612bdf57506132c39051613383565b3d915061339c565b6001600160a01b03168060005260016020526040600020600160ff19825416179055806001600160a01b03196016541617601655337fb2fa306ae7d3dd8b0bf1082c7d2a4d7d4c11cd422de0134bafcb4cc95ce8131c600080a3565b919082018092116109ae57565b6003111561343757565b634e487b7160e01b600052602160045260246000fd5b6040516358710f4560e11b815291906020836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa92831561023e576000936134a9575b50916132c39192612ac7565b6020813d82116134d8575b816134c160209383612a7d565b810103126134d4575192506132c361349d565b8380fd5b3d91506134b4565b8060ff1c600003908101186134f3613330565b81116134fc5750565b604490613507613330565b906040519163038f2bdb60e41b835260048301526024820152fd5b670de0b6b3a7640000908181029181830414901517156109ae5760405163313ce56760e01b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa91821561023e576000926135a1575b50604d82116109ae576132c391600a0a90612ac7565b90916020823d82116135cc575b816135bb60209383612a7d565b81010312612bdf575051903861358b565b3d91506135ae565b6001600160a01b03806000541691169081149081156135f1575090565b9050600052600160205260ff604060002054169056fea164736f6c6343000812000a000000000000000000000000afaae4be2c07948eb83e003ffdb859b5e6cabc630000000000000000000000006c212e97390c124b37888bf4b491a1f9f63451ed000000000000000000000000b1f1c69a8385fc7f120d8bc03d8b1b143c663c20000000000000000000000000af88d065e77c8cc2239327c5edb3a432268e58310000000000000000000000002a6c106ae13b558bb9e2ec64bd2f1f7beff3a5e0000000000000000000000000397a9bb1273fed4a4af9777df9c256f1609709f0000000000000000000000000ff162c694eaa571f685030649814282ea457f169000000000000000000000000ff1a0f4744e8582df1ae09d5611b887b6a12925c