0 txs
0 calls
constructor
constructor((address factory, address events, address marginAsset, address perpsV2ExchangeRate, address futuresMarketManager, address systemStatus, address gelato, address ops, address settings, address universalRouter, address permit2) _params)
functions
checker
viewfunction checker(uint256 _conditionalOrderId) view returns (bool canExec, bytes execPayload)
committedMargin
viewfunction committedMargin() view returns (uint256)
conditionalOrderId
viewfunction conditionalOrderId() view returns (uint256)
delegates
viewfunction delegates(address delegate) view returns (bool)
ETH
viewfunction ETH() view returns (address)
freeMargin
viewfunction freeMargin() view returns (uint256)
GELATO
viewfunction GELATO() view returns (address)
getConditionalOrder
viewfunction getConditionalOrder(uint256 _conditionalOrderId) view returns (tuple)
getDelayedOrder
viewfunction getDelayedOrder(bytes32 _marketKey) view returns (tuple order)
getPosition
viewfunction getPosition(bytes32 _marketKey) view returns (tuple position)
isAuth
viewfunction isAuth() view returns (bool)
isOwner
viewfunction isOwner() view returns (bool)
OPS
viewfunction OPS() view returns (address)
owner
viewfunction owner() view returns (address)
PERMIT2
viewfunction PERMIT2() view returns (address)
VERSION
viewfunction VERSION() view returns (bytes32)
addDelegate
nonpayablefunction addDelegate(address _delegate)
execute
payablefunction execute(uint8[] _commands, bytes[] _inputs) payable
executeConditionalOrder
nonpayablefunction executeConditionalOrder(uint256 _conditionalOrderId)
removeDelegate
nonpayablefunction removeDelegate(address _delegate)
setInitialOwnership
nonpayablefunction setInitialOwnership(address _owner)
transferOwnership
nonpayablefunction transferOwnership(address _newOwner)
events
DelegatedAccountAdded
event DelegatedAccountAdded(address indexed caller, address indexed delegate)
DelegatedAccountRemoved
event DelegatedAccountRemoved(address indexed caller, address indexed delegate)
OwnershipTransferred
event OwnershipTransferred(address indexed caller, address indexed newOwner)
errors
AccountExecutionDisabled
error AccountExecutionDisabled()
CannotExecuteConditionalOrder
error CannotExecuteConditionalOrder(uint256 conditionalOrderId, address executor)
CannotPayExecutorFee
error CannotPayExecutorFee(uint256 executorFee, address executor)
EthWithdrawalFailed
error EthWithdrawalFailed()
InsufficientFreeMargin
error InsufficientFreeMargin(uint256 available, uint256 required)
InvalidCommandType
error InvalidCommandType(uint256 commandType)
InvalidDelegateAddress
error InvalidDelegateAddress(address delegateAddress)
InvalidPrice
error InvalidPrice()
LengthMismatch
error LengthMismatch()
Reentrancy
error Reentrancy()
SliceOutOfBounds
error SliceOutOfBounds()
TokenSwapNotAllowed
error TokenSwapNotAllowed(address tokenIn, address tokenOut)
Unauthorized
error Unauthorized()
UnsafeCast
error UnsafeCast()
ZeroSizeDelta
error ZeroSizeDelta()
creation bytecode
0x6101e06040523480156200001257600080fd5b50604051620049653803806200496583398101604081905262000035916200014c565b60c081015160e0820151600080546001600160a01b0319168155604051819081907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b03918216608090815290821660a09081528351831660c0526020840151831660e0526040840151831661010090815260608501518416610120908152928501518416610140908152918501518416610160528401518316610180529083015182166101a05290910151166101c0526200023f565b60405161016081016001600160401b03811182821017156200012957634e487b7160e01b600052604160045260246000fd5b60405290565b80516001600160a01b03811681146200014757600080fd5b919050565b600061016082840312156200016057600080fd5b6200016a620000f7565b62000175836200012f565b815262000185602084016200012f565b602082015262000198604084016200012f565b6040820152620001ab606084016200012f565b6060820152620001be608084016200012f565b6080820152620001d160a084016200012f565b60a0820152620001e460c084016200012f565b60c0820152620001f760e084016200012f565b60e08201526101006200020c8185016200012f565b90820152610120620002208482016200012f565b90820152610140620002348482016200012f565b908201529392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516145e96200037c600039600081816103320152818161171c01526128680152600081816126d6015281816128a5015261357a01526000818161068101528181610b7a01528181611bfb0152818161261f01526127f601526000611a2e0152600061152801526000611d9501526000818161083b015281816121570152818161230501528181612586015261275d015260008181610ed3015281816110140152818161223f0152818161240b0152818161250f01528181612a2c01528181612fd40152613214015260008181611218015261149601526000818161022b01528181610d3401528181611b3601528181611b5e015281816130f301526136670152600081816104fb01526132a201526145e96000f3fe6080604052600436106101795760003560e01c806385652fec116100cb578063cdf8972e1161007f578063eff557a711610059578063eff557a7146104e9578063f2fde38b1461051d578063ffa1ad741461053d57600080fd5b8063cdf8972e1461047c578063d6c7ef8b146104a9578063e71bdf41146104c957600080fd5b80638f32d59b116100b05780638f32d59b1461040b57806394e05b2c14610438578063a48903371461046657600080fd5b806385652fec146103be5780638da5cb5b146103de57600080fd5b8063613838051161012d57806372a69c0d1161010757806372a69c0d1461035457806378e91014146103695780638322fff21461039657600080fd5b806361383805146102eb57806367e7646f146103005780636afdd8501461032057600080fd5b80634c2eefb41161015e5780634c2eefb414610272578063587cde1e14610296578063608d60eb146102d657600080fd5b80631928b3cb14610185578063472d04471461021957600080fd5b3661018057005b600080fd5b34801561019157600080fd5b506101a56101a0366004613a52565b610571565b6040516102109190600060a08201905067ffffffffffffffff8084511683528060208501511660208401525060408301516fffffffffffffffffffffffffffffffff808216604085015280606086015116606085015250506080830151600f0b608083015292915050565b60405180910390f35b34801561022557600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610210565b34801561027e57600080fd5b5061028860165481565b604051908152602001610210565b3480156102a257600080fd5b506102c66102b1366004613a8d565b60016020526000908152604090205460ff1681565b6040519015158152602001610210565b6102e96102e4366004613aef565b61063b565b005b3480156102f757600080fd5b506102886107f1565b34801561030c57600080fd5b506102e961031b366004613a8d565b6108b5565b34801561032c57600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561036057600080fd5b506102c6610a18565b34801561037557600080fd5b50610389610384366004613a52565b610a51565b6040516102109190613b5b565b3480156103a257600080fd5b5061024d73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b3480156103ca57600080fd5b506102e96103d9366004613a52565b610b34565b3480156103ea57600080fd5b5060005461024d9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561041757600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff1633146102c6565b34801561044457600080fd5b50610458610453366004613a52565b61108f565b604051610210929190613c91565b34801561047257600080fd5b5061028860155481565b34801561048857600080fd5b5061049c610497366004613a52565b611116565b6040516102109190613ceb565b3480156104b557600080fd5b506102e96104c4366004613a8d565b611200565b3480156104d557600080fd5b506102e96104e4366004613a8d565b6112df565b3480156104f557600080fd5b5061024d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561052957600080fd5b506102e9610538366004613a8d565b611442565b34801561054957600080fd5b506102887f322e312e3000000000000000000000000000000000000000000000000000000081565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526105a5826114f6565b6040517f55f5751000000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906355f575109060240160a060405180830381865afa158015610611573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106359190613df1565b92915050565b601854600203610677576040517fab143c0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026018819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663125127b36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070e9190613eb6565b610744576040517f274ccc0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8281811461077e576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b818110156107e4576107dc86868381811061079e5761079e613ed1565b90506020020160208101906107b39190613f00565b8585848181106107c5576107c5613ed1565b90506020028101906107d79190613f21565b6115a8565b600101610781565b5050600160185550505050565b6015546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000919073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a69190613f86565b6108b09190613fce565b905090565b60005473ffffffffffffffffffffffffffffffffffffffff163314610906576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116158061094f575073ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff16155b156109a3576040517fa3653d9f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821660048201526024015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555133917faab1e52e5e9244a59f6d721ebad6da39111d47dba7c5b9cd735a06f839e8eb0291a350565b6000805473ffffffffffffffffffffffffffffffffffffffff163314806108b05750503360009081526001602052604090205460ff1690565b6040805161012081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810191909152610aa3826114f6565b6040517fc8b809aa00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff919091169063c8b809aa9060240161012060405180830381865afa158015610b10573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106359190613fe1565b601854600203610b70576040517fab143c0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026018819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663125127b36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610be3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c079190613eb6565b610c3d576040517f274ccc0300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c46816119de565b610c85576040517f4316b3d50000000000000000000000000000000000000000000000000000000081526004810182905233602482015260440161099a565b6000610c9082611116565b60008381526017602052604080822082815560018101839055600281018390556003810183905560048082018490556005820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00908116909155600683019490945560079091018054909316909255608083015190517fee8ca3b5000000000000000000000000000000000000000000000000000000008152918201529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063ee8ca3b590602401600060405180830381600087803b158015610d8d57600080fd5b505af1158015610da1573d6000803e3d6000fd5b505050506000610daf611b1d565b90506000610dc083600001516114f6565b9050600080610dce83611d1a565b915091508460e0015115610f7c576040517f55f5751000000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff8516906355f575109060240160a060405180830381865afa158015610e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6d9190613df1565b60800151600f0b9050801580610e8c5750610e8c818760400151611f06565b15610f485760808601516040517fd63f1ca600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163d63f1ca691610f0b918b91600190600401614086565b600060405180830381600087803b158015610f2557600080fd5b505af1158015610f39573d6000803e3d6000fd5b50505050505050505050611087565b60ff81901c60000380820118604087015160ff81901c600003908101181115610f7a57610f74816140ab565b60408701525b505b600085602001511315610fb157602085015160ff81901c6000039081011860156000828254610fab9190613fce565b90915550505b610fbf838660200151611f2c565b610fd28386604001518760c00151611fc3565b60808501516040517f568824dc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163568824dc9161104f918a9187908a9088906004016140e3565b600060405180830381600087803b15801561106957600080fd5b505af115801561107d573d6000803e3d6000fd5b5050505050505050505b506001601855565b6000606061109c836119de565b91503073ffffffffffffffffffffffffffffffffffffffff166385652fec846040516024016110cd91815260200190565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050915091565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152601760008381526020019081526020016000206040518061010001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820160009054906101000a900460ff1660018111156111cc576111cc613cac565b60018111156111dd576111dd613cac565b81526006820154602082015260079091015460ff16151560409091015292915050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461126f576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831690811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350565b60005473ffffffffffffffffffffffffffffffffffffffff163314611330576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81161580611378575073ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff165b156113c7576040517fa3653d9f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260240161099a565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091555133917f52d2da59f56f31503d90a3f1f08001c5705116f9e44f9ee08a7ebe1354b2cf4891a350565b61144b81612076565b6040517f2e9ca20400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301523360248301527f00000000000000000000000000000000000000000000000000000000000000001690632e9ca204906044015b600060405180830381600087803b1580156114db57600080fd5b505af11580156114ef573d6000803e3d6000fd5b5050505050565b6040517fe63bfadb000000000000000000000000000000000000000000000000000000008152600481018290526000907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063e63bfadb90602401602060405180830381865afa158015611584573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106359190614119565b600083600f8111156115bc576115bc613cac565b905060028110806115cd575080600e145b806115d8575080600f145b156117915760005473ffffffffffffffffffffffffffffffffffffffff16331461162e576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600084600f81111561164257611642613cac565b0361165857823561165281612137565b506119d8565b600184600f81111561166c5761166c613cac565b0361167c57823561165281612452565b600e84600f81111561169057611690613cac565b036116ca5760008036816116a687876002612553565b9150915086359350602087013592506116c184848484612571565b505050506119d8565b823660006116da83866006612553565b6040517f2b67b570000000000000000000000000000000000000000000000000000000008152919350915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632b67b57090611757903390879087908790600401614195565b600060405180830381600087803b15801561177157600080fd5b505af1158015611785573d6000803e3d6000fd5b505050505050506119d8565b611799610a18565b6117cf576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600481101561181457600284600f8111156117ec576117ec613cac565b0361180957823560208401356118028282611f2c565b50506119d8565b823561165281612a91565b600681101561187257600484600f81111561183157611831613cac565b036118555782356020840135604085013561184d838383612ad9565b5050506119d8565b82356020840135604085013560608601356116c184848484612b59565b60088110156118bc57600684600f81111561188f5761188f613cac565b036118ab5782356020840135604085013561184d838383611fc3565b823560208401356118028282612c13565b600a81101561190657600884600f8111156118d9576118d9613cac565b036118f55782356020840135604085013561184d838383612c8c565b823560208401356118028282612d0c565b600c81101561193e57600a84600f81111561192357611923613cac565b0361193357823561165281612d85565b823561165281612dd7565b600e81101561199a57600c84600f81111561195b5761195b613cac565b0361198f578235602084013560408501356060860135608087013560a088013560c089013561178587878787878787612e29565b82356116528161307c565b600f8111156119d8576040517fd76a1e9e0000000000000000000000000000000000000000000000000000000081526004810182905260240161099a565b50505050565b6000806119ea83611116565b80519091506119fc5750600092915050565b80516040517f856aae6c00000000000000000000000000000000000000000000000000000000815260048101919091527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063856aae6c9060240160006040518083038186803b158015611a8557600080fd5b505afa925050508015611a96575060015b611aa35750600092915050565b6000611aba611ab583600001516114f6565b611d1a565b50905060008260a001516001811115611ad557611ad5613cac565b03611aec57611ae4828261324a565b949350505050565b60018260a001516001811115611b0457611b04613cac565b03611b1357611ae48282613274565b5060009392505050565b600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303611bf9577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b810c6366040518163ffffffff1660e01b81526004016040805180830381865afa158015611bc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bea919061424f565b509050611bf68161329e565b90565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663062af0b06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c889190613f86565b604051909150600090339083908381818185875af1925050503d8060008114611ccd576040519150601f19603f3d011682016040523d82523d6000602084013e611cd2565b606091505b5050905080611d16576040517fcfbb474c0000000000000000000000000000000000000000000000000000000081526004810183905233602482015260440161099a565b5090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1663cdf456e16040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8e9190613f86565b90506000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633b798e8a846040518263ffffffff1660e01b8152600401611dee91815260200190565b6040805180830381865afa158015611e0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2e919061427f565b90925090506000611e40607842613fce565b821015611ef9576001905060008773ffffffffffffffffffffffffffffffffffffffff1663d24378eb6040518163ffffffff1660e01b81526004016040805180830381865afa158015611e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebb91906142a3565b90945090508015611ef7576040517ebfc92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b9196919550909350505050565b60008215801590611f1657508115155b611f2257611f226142cf565b5060009118121590565b6000811315611f3e57611f3e8161338c565b6040517f88a3c8480000000000000000000000000000000000000000000000000000000081526004810182905273ffffffffffffffffffffffffffffffffffffffff8316906388a3c848906024015b600060405180830381600087803b158015611fa757600080fd5b505af1158015611fbb573d6000803e3d6000fd5b505050505050565b6040517f85f05ab500000000000000000000000000000000000000000000000000000000815260048101839052602481018290527f4b57454e54410000000000000000000000000000000000000000000000000000604482015273ffffffffffffffffffffffffffffffffffffffff8416906385f05ab5906064015b600060405180830381600087803b15801561205957600080fd5b505af115801561206d573d6000803e3d6000fd5b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146120c7576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60008113156122dc5773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166323b872dd333060ff85901c600003808601186040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff938416600482015292909116602483015260448201526064016020604051808303816000875af1158015612203573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122279190613eb6565b5073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166328ba84ca3360ff84901c600003808501186040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401600060405180830381600087803b1580156114db57600080fd5b600081121561244f576122ee8161338c565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663a9059cbb3360ff84901c600003808501186040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af11580156123a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123cb9190613eb6565b506040517fb014da2100000000000000000000000000000000000000000000000000000000815233600482015260ff82901c6000038083011860248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063b014da21906044016114c1565b50565b801561244f57604051600090339083908381818185875af1925050503d806000811461249a576040519150601f19603f3d011682016040523d82523d6000602084013e61249f565b606091505b50509050806124da576040517f0ca79afd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f79a49527000000000000000000000000000000000000000000000000000000008152336004820152602481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906379a4952790604401611f8d565b3660008060006125648787876133f5565b9890975095505050505050565b60008061257e8484613458565b9150915060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561268a57506040517fb5af090f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063b5af090f90602401602060405180830381865afa158015612666573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061268a9190613eb6565b1561275b576126988761338c565b506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000811660048301526024820188905233919084169063a9059cbb906044016020604051808303816000875af1158015612731573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127559190613eb6565b506129bc565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614801561286157506040517fb5af090f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063b5af090f90602401602060405180830381865afa15801561283d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128619190613eb6565b1561296a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166336c78516337f00000000000000000000000000000000000000000000000000000000000000006128cd8b6134b1565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529183166024830152821660448201529086166064820152608401600060405180830381600087803b15801561294a57600080fd5b505af115801561295e573d6000803e3d6000fd5b505050503090506129bc565b6040517fae943ea900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80851660048301528316602482015260440161099a565b6129c98188888888613501565b6040517f3b9d50e700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528381166024830152828116604483015260648201899052608482018890527f00000000000000000000000000000000000000000000000000000000000000001690633b9d50e79060a401600060405180830381600087803b158015612a7057600080fd5b505af1158015612a84573d6000803e3d6000fd5b5050505050505050505050565b8073ffffffffffffffffffffffffffffffffffffffff16635a1cbd2b6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156114db57600080fd5b6040517f32f0510300000000000000000000000000000000000000000000000000000000815260048101839052602481018290527f4b57454e54410000000000000000000000000000000000000000000000000000604482015273ffffffffffffffffffffffffffffffffffffffff8416906332f051039060640161203f565b6040517f787d6c300000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604481018290527f4b57454e54410000000000000000000000000000000000000000000000000000606482015273ffffffffffffffffffffffffffffffffffffffff85169063787d6c3090608401600060405180830381600087803b158015612bf557600080fd5b505af1158015612c09573d6000803e3d6000fd5b5050505050505050565b6040517f5c8011c3000000000000000000000000000000000000000000000000000000008152600481018290527f4b57454e54410000000000000000000000000000000000000000000000000000602482015273ffffffffffffffffffffffffffffffffffffffff831690635c8011c390604401611f8d565b6040517fc5a4b07a00000000000000000000000000000000000000000000000000000000815260048101839052602481018290527f4b57454e54410000000000000000000000000000000000000000000000000000604482015273ffffffffffffffffffffffffffffffffffffffff84169063c5a4b07a9060640161203f565b6040517fed44a2db000000000000000000000000000000000000000000000000000000008152600481018290527f4b57454e54410000000000000000000000000000000000000000000000000000602482015273ffffffffffffffffffffffffffffffffffffffff83169063ed44a2db90604401611f8d565b6040517fc70b41e900000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff82169063c70b41e9906024016114c1565b6040517fdcce580600000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff82169063dcce5806906024016114c1565b84600003612e63576040517f0287a76700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000861315612e9857612e758661338c565b60ff86901c6000038087011860156000828254612e9291906142fe565b90915550505b6000612ea2613658565b9050604051806101000160405280898152602001888152602001878152602001868152602001828152602001856001811115612ee057612ee0613cac565b8152602001848152602001831515815250601760006016548152602001908152602001600020600082015181600001556020820151816001015560408201518160020155606082015181600301556080820151816004015560a08201518160050160006101000a81548160ff02191690836001811115612f6257612f62613cac565b021790555060c0820151600682015560e090910151600790910180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556016546040517f146c64fc0000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169163146c64fc9161302d919085908d908d908d908d908d908d908d90600401614311565b600060405180830381600087803b15801561304757600080fd5b505af115801561305b573d6000803e3d6000fd5b5050505060166000815461306e90614367565b909155505050505050505050565b600061308782611116565b90506000816020015113156130be57602081015160ff81901c60000390810118601560008282546130b89190613fce565b90915550505b60808101516040517fee8ca3b500000000000000000000000000000000000000000000000000000000815260048101919091527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063ee8ca3b590602401600060405180830381600087803b15801561314c57600080fd5b505af1158015613160573d6000803e3d6000fd5b50505060008381526017602052604080822082815560018101839055600281018390556003810183905560048082018490556005820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009081169091556006830185905560079092018054909216909155608085015191517fd63f1ca600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016945063d63f1ca693611f8d938893909201614086565b6000808360400151131561326657506060820151811115610635565b506060820151811015610635565b6000808360400151131561329057506060820151811015610635565b506060820151811115610635565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114613318576040519150601f19603f3d011682016040523d82523d6000602084013e61331d565b606091505b5050905080613388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4f707352656164793a20455448207472616e73666572206661696c6564000000604482015260640161099a565b5050565b6133946107f1565b60ff82901c60000380830118111561244f576133ae6107f1565b60ff82901c600003808301186040517f3cb0273a0000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161099a565b600581901b83013583018035906020808201918690030161341681846142fe565b85101561344f576040517f3b99b53d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50935093915050565b60008061346584846137c8565b91505b600061347485856137db565b9050801561348f576134868585613814565b945094506134a4565b613499858561383b565b93506134aa92505050565b50613468565b9250929050565b600073ffffffffffffffffffffffffffffffffffffffff821115611d16576040517fc4bd89a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516001808252818301909252600091816020015b60608152602001906001900390816135185790505090508585858585600060405160200161354b9695949392919061439f565b6040516020818303038152906040528160008151811061356d5761356d613ed1565b60200260200101819052507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166324856bc3600060f81b6040516020016135f191907fff0000000000000000000000000000000000000000000000000000000000000091909116815260010190565b604051602081830303815290604052836040518363ffffffff1660e01b815260040161361e929190614466565b600060405180830381600087803b15801561363857600080fd5b505af115801561364c573d6000803e3d6000fd5b50505050505050505050565b6000806136636138b0565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16633323b467303073ffffffffffffffffffffffffffffffffffffffff166385652fec6016546040516024016136d391815260200190565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291815260208201805160e094851b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff909116179052519185901b7fffffffff0000000000000000000000000000000000000000000000000000000016825261377f93925090869073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90600401614494565b6020604051808303816000875af115801561379e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137c29190613f86565b91505090565b60006137d48383613a0c565b9392505050565b60006137e9600360146142fe565b60146137f66003826142fe565b61380091906142fe565b61380a91906142fe565b9091101592915050565b3660008383613825600360146142fe565b61383092829061455a565b915091509250929050565b60008080601461384c6003826142fe565b61385691906142fe565b84101561388f576040517f3b99b53d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050508135606081811c9460489290921c62ffffff169360170135901c9150565b6040805180820182526060808252602082015281516001818401818152608083019094529192909182919081602001602082028036833701905050815260408051600180825281830190925260209092019190816020015b6060815260200190600190039081613908575050905280518051919250600091829061393657613936613ed1565b6020026020010190600381111561394f5761394f613cac565b9081600381111561396257613962613cac565b905250601654604051309182916394e05b2c916139859160240190815260200190565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516020016139d8929190614584565b60405160208183030381529060405281602001516000815181106139fe576139fe613ed1565b602002602001018190525090565b60006014821015613a49576040517f3b99b53d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50503560601c90565b600060208284031215613a6457600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461244f57600080fd5b600060208284031215613a9f57600080fd5b81356137d481613a6b565b60008083601f840112613abc57600080fd5b50813567ffffffffffffffff811115613ad457600080fd5b6020830191508360208260051b85010111156134aa57600080fd5b60008060008060408587031215613b0557600080fd5b843567ffffffffffffffff80821115613b1d57600080fd5b613b2988838901613aaa565b90965094506020870135915080821115613b4257600080fd5b50613b4f87828801613aaa565b95989497509550505050565b6000610120820190508251151582526020830151600f0b60208301526040830151613b9a60408401826fffffffffffffffffffffffffffffffff169052565b506060830151613bbe60608401826fffffffffffffffffffffffffffffffff169052565b506080830151613be260808401826fffffffffffffffffffffffffffffffff169052565b5060a0830151613c0660a08401826fffffffffffffffffffffffffffffffff169052565b5060c083015160c083015260e083015160e083015261010080840151818401525092915050565b6000815180845260005b81811015613c5357602081850181015186830182015201613c37565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b8215158152604060208201526000611ae46040830184613c2d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6002811061244f5761244f613cac565b600061010082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a0830151613d2e81613cdb565b8060a08401525060c083015160c083015260e0830151151560e083015292915050565b604051610120810167ffffffffffffffff81118282101715613d9c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b805167ffffffffffffffff81168114613dba57600080fd5b919050565b80516fffffffffffffffffffffffffffffffff81168114613dba57600080fd5b8051600f81900b8114613dba57600080fd5b600060a08284031215613e0357600080fd5b60405160a0810181811067ffffffffffffffff82111715613e4d577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604052613e5983613da2565b8152613e6760208401613da2565b6020820152613e7860408401613dbf565b6040820152613e8960608401613dbf565b6060820152613e9a60808401613ddf565b60808201529392505050565b80518015158114613dba57600080fd5b600060208284031215613ec857600080fd5b6137d482613ea6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215613f1257600080fd5b8135601081106137d457600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613f5657600080fd5b83018035915067ffffffffffffffff821115613f7157600080fd5b6020019150368190038213156134aa57600080fd5b600060208284031215613f9857600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561063557610635613f9f565b60006101208284031215613ff457600080fd5b613ffc613d51565b61400583613ea6565b815261401360208401613ddf565b602082015261402460408401613dbf565b604082015261403560608401613dbf565b606082015261404660808401613dbf565b608082015261405760a08401613dbf565b60a082015260c083015160c082015260e083015160e08201526101008084015181830152508091505092915050565b838152602081018390526060810161409d83613cdb565b826040830152949350505050565b60007f800000000000000000000000000000000000000000000000000000000000000082036140dc576140dc613f9f565b5060000390565b600060a08201905086825285602083015284604083015283606083015261410983613cdb565b8260808301529695505050505050565b60006020828403121561412b57600080fd5b81516137d481613a6b565b803565ffffffffffff81168114613dba57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600061010073ffffffffffffffffffffffffffffffffffffffff808816845286356141bf81613a6b565b81811660208601525060208701356141d681613a6b565b8181166040860152506141eb60408801614136565b65ffffffffffff80821660608701528061420760608b01614136565b1660808701525050608087013561421d81613a6b565b81811660a0860152505060a086013560c08401528060e0840152614244818401858761414c565b979650505050505050565b6000806040838503121561426257600080fd5b82519150602083015161427481613a6b565b809150509250929050565b6000806040838503121561429257600080fd5b505080516020909101519092909150565b600080604083850312156142b657600080fd5b825191506142c660208401613ea6565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b8082018082111561063557610635613f9f565b6000610120820190508a82528960208301528860408301528760608301528660808301528560a083015261434485613cdb565b8460c08301528360e08301528215156101008301529a9950505050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361439857614398613f9f565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8716815285602082015284604082015260a0606082015260006143db60a08301858761414c565b90508215156080830152979650505050505050565b600082825180855260208086019550808260051b84010181860160005b84811015614459577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868403018952614447838351613c2d565b9884019892509083019060010161440d565b5090979650505050505050565b6040815260006144796040830185613c2d565b828103602084015261448b81856143f0565b95945050505050565b73ffffffffffffffffffffffffffffffffffffffff85168152600060206080818401526144c46080840187613c2d565b8381036040808601919091528651818352805191830182905283019060009060608401905b808310156145195783516004811061450357614503613cac565b82529285019260019290920191908501906144e9565b508489015192508381038585015261453181846143f0565b9550505050505061448b606083018473ffffffffffffffffffffffffffffffffffffffff169052565b6000808585111561456a57600080fd5b8386111561457757600080fd5b5050820193919092039150565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611ae46040830184613c2d56fea2646970667358221220aed15fd6f209669494f4dbc80a3de57654163eadd8b372896912903fddbfa65264736f6c63430008120033000000000000000000000000bc98cf958ea2625384a05f473f1a65e5e5ad21ef000000000000000000000000878b75007c76312a263a3dbe8b07a60aa8ebff540000000000000000000000008c6f28f2f1a3c87f0f938b96d27520d9751ec8d90000000000000000000000002c15259d4886e2c0946f9ab7a5e389c86b3c3b04000000000000000000000000d30bdfd7e7a65fe109d5de1d4e95f3b800fb7463000000000000000000000000e8c41be1a167314abaf2423b72bf8da826943ffd00000000000000000000000001051113d81d7d6da508462f2ad6d7fd96cf42ef000000000000000000000000340759c8346a1e6ed92035fb8b6ec57ce1d82c2c000000000000000000000000d6ab436f8e2188b27e60248e3178f34a40b4a63a0000000000000000000000003fc91a3afd70395cd496c647d5a6cc9d4b2b7fad000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3