0 txs
0 calls
constructor
constructor(address addressProvider, address _orderManager, address _positionManager, address _pool)
functions
ADDRESS_PROVIDER
viewfunction ADDRESS_PROVIDER() view returns (address)
getOperationStatus
viewfunction getOperationStatus(uint256 pairIndex) view returns (tuple)
operationStatus
viewfunction operationStatus(uint256) view returns (bool increasePositionDisabled, bool decreasePositionDisabled, bool orderDisabled, bool addLiquidityDisabled, bool removeLiquidityDisabled)
orderManager
viewfunction orderManager() view returns (address)
paused
viewfunction paused() view returns (bool)
pool
viewfunction pool() view returns (address)
positionManager
viewfunction positionManager() view returns (address)
_createTpSl
payablefunction _createTpSl(address account, uint256 pairIndex, bool isLong, uint256 tpPrice, uint128 tp, uint256 slPrice, uint128 sl, uint8 paymentType, uint256 tpNetworkFeeAmount, uint256 slNetworkFeeAmount) payable returns (uint256 tpOrderId, uint256 slOrderId)
addLiquidity
payablefunction addLiquidity(address indexToken, address stableToken, uint256 indexAmount, uint256 stableAmount, address[] tokens, bytes[] updateData, uint64[] publishTimes) payable returns (uint256 mintAmount, address slipToken, uint256 slipAmount)
addLiquidityCallback
nonpayablefunction addLiquidityCallback(address indexToken, address stableToken, uint256 amountIndex, uint256 amountStable, bytes data)
addLiquidityETH
payablefunction addLiquidityETH(address indexToken, address stableToken, uint256 indexAmount, uint256 stableAmount, address[] tokens, bytes[] updateData, uint64[] publishTimes, uint256 updateFee) payable returns (uint256 mintAmount, address slipToken, uint256 slipAmount)
addLiquidityForAccount
payablefunction addLiquidityForAccount(address indexToken, address stableToken, address receiver, uint256 indexAmount, uint256 stableAmount, address[] tokens, bytes[] updateData, uint64[] publishTimes) payable returns (uint256 mintAmount, address slipToken, uint256 slipAmount)
addOrderTpSl
payablefunction addOrderTpSl(tuple request) payable returns (uint256 tpOrderId, uint256 slOrderId)
cancelOrder
nonpayablefunction cancelOrder(tuple request)
cancelOrders
nonpayablefunction cancelOrders(tuple[] requests)
cancelPositionOrders
nonpayablefunction cancelPositionOrders(uint256 pairIndex, bool isLong, bool isIncrease)
createDecreaseOrder
payablefunction createDecreaseOrder(tuple request) payable returns (uint256)
createDecreaseOrders
payablefunction createDecreaseOrders(tuple[] requests) payable returns (uint256[] orderIds)
createIncreaseOrder
payablefunction createIncreaseOrder(tuple request) payable returns (uint256 orderId)
createIncreaseOrderWithTpSl
payablefunction createIncreaseOrderWithTpSl(tuple request) payable returns (uint256 orderId)
createOrderCallback
nonpayablefunction createOrderCallback(address collateral, uint256 amount, address to, bytes data)
createTpSl
payablefunction createTpSl(tuple request) payable returns (uint256 tpOrderId, uint256 slOrderId)
multicall
payablefunction multicall(bytes[] data) payable returns (bytes[] results)
removeLiquidity
payablefunction removeLiquidity(address indexToken, address stableToken, uint256 amount, bool useETH, address[] tokens, bytes[] updateData, uint64[] publishTimes) payable returns (uint256 receivedIndexAmount, uint256 receivedStableAmount, uint256 feeAmount)
removeLiquidityCallback
nonpayablefunction removeLiquidityCallback(address pairToken, uint256 amount, bytes data)
removeLiquidityForAccount
payablefunction removeLiquidityForAccount(address indexToken, address stableToken, address receiver, uint256 amount, bool useETH, address[] tokens, bytes[] updateData, uint64[] publishTimes) payable returns (uint256 receivedIndexAmount, uint256 receivedStableAmount, uint256 feeAmount)
salvageToken
nonpayablefunction salvageToken(address token, uint256 amount)
setPaused
nonpayablefunction setPaused()
setPriceAndAdjustCollateral
payablefunction setPriceAndAdjustCollateral(uint256 pairIndex, bool isLong, int256 collateral, address[] tokens, bytes[] updateData, uint64[] publishTimes) payable
setPriceAndUpdateFundingRate
payablefunction setPriceAndUpdateFundingRate(uint256 pairIndex, address[] tokens, bytes[] updateData, uint64[] publishTimes) payable
setUnPaused
nonpayablefunction setUnPaused()
updateAddLiquidityStatus
nonpayablefunction updateAddLiquidityStatus(uint256 pairIndex, bool enabled)
updateDecreasePositionStatus
nonpayablefunction updateDecreasePositionStatus(uint256 pairIndex, bool enabled)
updateIncreasePositionStatus
nonpayablefunction updateIncreasePositionStatus(uint256 pairIndex, bool enabled)
updateOrderStatus
nonpayablefunction updateOrderStatus(uint256 pairIndex, bool enabled)
updateRemoveLiquidityStatus
nonpayablefunction updateRemoveLiquidityStatus(uint256 pairIndex, bool enabled)
wrapWETH
payablefunction wrapWETH(address recipient) payable
events
Paused
event Paused(address account)
Unpaused
event Unpaused(address account)
UpdateAddLiquidityStatus
event UpdateAddLiquidityStatus(address sender, uint256 pairIndex, bool enabled)
UpdateDecreasePositionStatus
event UpdateDecreasePositionStatus(address sender, uint256 pairIndex, bool enabled)
UpdateIncreasePositionStatus
event UpdateIncreasePositionStatus(address sender, uint256 pairIndex, bool enabled)
UpdateOrderStatus
event UpdateOrderStatus(address sender, uint256 pairIndex, bool enabled)
UpdateRemoveLiquidityStatus
event UpdateRemoveLiquidityStatus(address sender, uint256 pairIndex, bool enabled)
UpdateTradingRouter
event UpdateTradingRouter(address oldAddress, address newAddress)
errors
No errors.
creation bytecode
0x610100346200020357601f620057d338819003918201601f19168301916001600160401b038311848410176200020857808492608094604052833981010312620002035780516001600160a01b0391908281168103620002035760208201519083821682036200020357604083015192848416840362000203576060015193841684036200020357600160005560ff196001541660015560805260a05260c05260e0526040516155b490816200021f82396080518181816104d801528181610b4c01528181610ff5015281816110d80152818161125e015281816114100152818161170b01528181611d7501528181611f840152818161205701528181612288015281816124290152818161266301528181614541015281816146cd0152818161476801528181614a0d01528181614d3001528181614f9501526151f0015260a051818181610ab001528181610c5b01528181610dd80152818161190501528181611a3701528181611ec901528181612878015281816131f1015281816136f10152818161384f01528181613ca301528181613d5a01528181613ddf015281816140cc01526142a2015260c05181818161161a015281816122fd015261249e015260e051818181610660015281816111fe015281816114f8015281816144ab0152818161464f0152818161499f01528181614ca901528181614f2201526151840152f35b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b60003560e01c80625e69be146102665780630c12595f146102615780630ee78da51461025c57806316f0115b146102575780631770830a146102525780631848effa1461024d57806319afeb20146102485780631d7b7194146102435780632cc460611461023e578063349fdb091461023957806337a66d85146102345780634264d4e61461022f57806354b6f7211461022a5780635566696d146102255780635a80e080146102205780635c975abb1461021b57806367f4d9c614610216578063791b98bc146102115780637aa6ed411461020c57806387d34c421461020757806392401c4f1461020257806393bce92c146101fd578063a07610ea146101f8578063ac9650d8146101f3578063ae4b19ae146101ee578063b05a718d146101e9578063b74af6d8146101e4578063bdc4fe3d146101df578063c9b6092d146101da578063ccc5311e146101d5578063ce05a8a4146101d0578063d1e1a0fe146101cb578063d6205b92146101c6578063e09a22d7146101c1578063e0e2ae8b146101bc578063f1a0510e146101b75763f9b6117f146101b257600080fd5b612862565b6127c7565b6126fb565b612628565b612547565b612397565b6121bc565b6120ef565b61201c565b611f49565b611e72565b611e0d565b611d3a565b611c57565b611b29565b611a96565b6117a4565b6116d0565b611649565b611604565b611573565b611539565b6114a8565b6113d5565b61133c565b611196565b6110a7565b610fc4565b610d81565b610cf5565b610bfe565b610b36565b610945565b61064a565b6104a5565b6103f4565b61033b565b6001600160a01b0381160361027c57565b600080fd5b6004359061028e8261026b565b565b6024359061028e8261026b565b6044359061028e8261026b565b359061028e8261026b565b8015150361027c57565b6084359061028e826102b5565b6044359061028e826102b5565b60a4359061028e826102b5565b6064359061028e826102b5565b60c4359061028e826102b5565b359061028e826102b5565b9181601f8401121561027c578235916001600160401b03831161027c576020808501948460051b01011161027c57565b61010036600319011261027c57610350610281565b610358610290565b61036061029d565b6103686102bf565b6001600160401b03929060a43584811161027c5761038a90369060040161030b565b60c49291923586811161027c576103a590369060040161030b565b93909260e43597881161027c576103f0986103c76103d399369060040161030b565b98909760643592615141565b604080519384526020840192909252908201529081906060820190565b0390f35b60e036600319011261027c5760043561040c8161026b565b610414610290565b6001600160401b039060843582811161027c5761043590369060040161030b565b60a49491943584811161027c5761045090369060040161030b565b9160c43595861161027c576103f09661047061048097369060040161030b565b9690956064359160443591614958565b604080519384526001600160a01b039092166020840152908201529081906060820190565b60208060031936011261027c576004356104be8161026b565b6040516315ab88c960e31b8082526001600160a01b0392917f0000000000000000000000000000000000000000000000000000000000000000841691908581600481865afa80156105d5578591600091610622575b501690813b1561027c57600060049260405193848092630d0e30db60e41b825234905af19182156105d5578692610609575b5060046040518094819382525afa80156105d557849261059c926000926105da575b5060405163a9059cbb60e01b81526001600160a01b039091166004820152346024820152938492839160009183906044820190565b0393165af180156105d5576105ad57005b816105cc92903d106105ce575b6105c48183610729565b8101906128e1565b005b503d6105ba565b6128ca565b6105fb919250843d8611610602575b6105f38183610729565b8101906128b2565b9038610567565b503d6105e9565b8061061661061c926106a5565b8061063f565b38610545565b6106399150873d8911610602576105f38183610729565b38610513565b600091031261027c57565b3461027c57600036600319011261027c576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116106b857604052565b61068f565b606081019081106001600160401b038211176106b857604052565b60a081019081106001600160401b038211176106b857604052565b60e081019081106001600160401b038211176106b857604052565b604081019081106001600160401b038211176106b857604052565b90601f801991011681019081106001600160401b038211176106b857604052565b6040519061014082018281106001600160401b038211176106b857604052565b6040519061016082018281106001600160401b038211176106b857604052565b6040519061020082018281106001600160401b038211176106b857604052565b604051906101a082018281106001600160401b038211176106b857604052565b6004111561027c57565b6024359061028e826107ca565b6044359061028e826107ca565b359061028e826107ca565b60e43590600282101561027c57565b6101043590600282101561027c57565b6101843590600282101561027c57565b3590600282101561027c57565b61014090600319011261027c5761084a61074a565b90610853610281565b825260243560208301526108656107e1565b60408301526064356060830152608435608083015260a43560a083015261088a6102f3565b60c083015260e43560e083015261089f610808565b61010083015261012435610120830152565b91908261014091031261027c576108c661074a565b916108d0816102aa565b8352602081013560208401526108e8604082016107ee565b6040840152606081013560608401526080810135608084015260a081013560a084015261091760c08201610300565b60c084015260e081013560e0840152610100610934818301610828565b908401526101208091013590830152565b6101408060031936011261027c5761095c36610835565b610964612b9a565b61096c613016565b6020809281830192835161098a906000526002602052604060002090565b5460081c60ff161561099b90612e80565b610120808201805134146109ae90613776565b33808452955160408401516109c281613374565b6060850151608086015160c087015115159060a08801516109e29061534f565b6109eb9061356e565b9260e08901519461010096878b0151610a03816133b8565b610a0c90615518565b98519a516040516001600160a01b039091168e8201908152819003808252909d90610a3a906020018f610729565b610a4261076a565b6001600160a01b03909f168f528e0152610a5f9060408e016133c2565b60608c015260808b0152151560a08a015260c089015260e0880152860190610a86916133ce565b840152820152816040518080936301d8cec960e51b82526004820190610aab91613403565b0381347f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156105d5576103f092600092610b09575b5050610af96001600055565b6040519081529081906020820190565b610b289250803d10610b2f575b610b208183610729565b8101906133da565b3880610aed565b503d610b16565b3461027c57600036600319011261027c576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b606090600319011261027c5760405190610b94826106bd565b816004358152602435610ba6816107ca565b6020820152604060443591610bba836102b5565b0152565b919082606091031261027c57604051610bd6816106bd565b6040808294803584526020810135610bed816107ca565b6020850152013591610bba836102b5565b3461027c57606036600319011261027c57610c1836610b7b565b610c20612b9a565b610c28613016565b80519060208101908151926004841015610cf057610c55906040830194610c4f8651151590565b91613c69565b519051917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690610c9790610c9185613374565b51151590565b90803b1561027c57610cc493600080946040519687958694859363ecd1bbcb60e01b855260048501613a0e565b03925af180156105d557610cdd575b6105cc6001600055565b80610616610cea926106a5565b38610cd3565b61335e565b61010036600319011261027c57610d0a610281565b610d12610290565b906001600160401b039060843582811161027c57610d3490369060040161030b565b9360a43584811161027c57610d4d90369060040161030b565b9060c43595861161027c576103f096610d6d61048097369060040161030b565b95909460e435976064359160443591614456565b3461027c5760608060031936011261027c5760243590610da0826102b5565b610e1d60443591610db0836102b5565b610db8612b9a565b610dc0613016565b610dce6004948535336154a6565b9260018060a01b037f00000000000000000000000000000000000000000000000000000000000000001690604092835195634cc42b5160e01b8752868060009788938b83019190602083019252565b0381865afa9586156105d5578596610fa0575b50845b8651811015610f9257610e468188613819565b5190610e7133610e6b610e5f855160018060a01b031690565b6001600160a01b031690565b14613b83565b8380610f86575b15610eee57608060a083015192015191610e9183613374565b853b15610eea5787908a610eb68951958693849363ecd1bbcb60e01b85528401613eee565b038183895af19182156105d557610ed292610ed7575b506137f4565b610e33565b80610616610ee4926106a5565b38610ecc565b8780fd5b831580610f6d575b610f05575b610ed291506137f4565b608060a083015192015191610f1983613374565b853b15610eea5787908a610f3e8951958693849363ecd1bbcb60e01b85528401613eac565b038183895af19182156105d557610ed292610f5a575b50610efb565b80610616610f67926106a5565b38610f54565b50610f81610f7d84840151151590565b1590565b610ef6565b50818301511515610e78565b85610f9d6001600055565b80f35b610fbd9196503d8087833e610fb58183610729565b810190613f73565b9438610e30565b3461027c576000806003193601126110a45760405162435da560e01b81526020906001600160a01b039082816004817f000000000000000000000000000000000000000000000000000000000000000086165afa9182156105d55783918593611085575b50604051637be53ca160e01b81523360048201529283916024918391165afa9081156105d557611060928492611068575b50506128f6565b610f9d612bde565b61107e9250803d106105ce576105c48183610729565b3880611059565b61109d919350823d8411610602576105f38183610729565b9138611028565b80fd5b3461027c576000806003193601126110a45760405162435da560e01b81526020906001600160a01b039082816004817f000000000000000000000000000000000000000000000000000000000000000086165afa9182156105d5578391859361114a575b50604051637be53ca160e01b81523360048201529283916024918391165afa9081156105d5576111429284926110685750506128f6565b610f9d612b5a565b611162919350823d8411610602576105f38183610729565b913861110b565b9181601f8401121561027c578235916001600160401b03831161027c576020838186019501011161027c57565b3461027c5760a036600319011261027c576004356111b38161026b565b6024356111bf8161026b565b6044359060643591608435936001600160401b03851161027c5761122d6111ed610e5f963690600401611169565b6001600160a01b03979190611225337f00000000000000000000000000000000000000000000000000000000000000008b1614615303565b81019061533a565b9180611249575b50508261123d57005b6105cc93339216614c22565b6040516315ab88c960e31b81526020816004817f00000000000000000000000000000000000000000000000000000000000000008b165afa9283156105d55787916000946112c0575b508116921682036112af576112a8913390612943565b3880611234565b6112bb91833391614c22565b6112a8565b829194506112db9060203d8111610602576105f38183610729565b9390611292565b608435906001600160801b038216820361027c57565b60c435906001600160801b038216820361027c57565b61010435906001600160801b038216820361027c57565b61014435906001600160801b038216820361027c57565b61014036600319011261027c576113c361135461074a565b60043581526113616107d4565b602082015261136e6102cc565b604082015260643560608201526113836112e2565b608082015260a43560a08201526113986112f8565b60c08201526113a56107f9565b60e08201526101043561010082015261012435610120820152614062565b60408051928352602083019190915290f35b3461027c57604036600319011261027c576024356113f2816102b5565b60405162435da560e01b81529060206001600160a01b0381846004817f000000000000000000000000000000000000000000000000000000000000000085165afa9384156105d557600094611487575b50604051637be53ca160e01b815233600482015293829185916024918391165afa80156105d5576105cc9361147f926000926110685750506128f6565b600435612da2565b829194506114a190823d8411610602576105f38183610729565b9390611442565b3461027c57606036600319011261027c576004356114c58161026b565b604435906001600160401b03821161027c576114e86105cc923690600401611169565b90916001600160a01b0361151f337f0000000000000000000000000000000000000000000000000000000000000000831614615303565b8061153160243595339581019061533a565b169116614c22565b3461027c57600036600319011261027c57602060ff600154166040519015158152f35b6001600160401b0381116106b85760051b60200190565b3461027c5760208060031936011261027c57600435906001600160401b03821161027c573660238301121561027c578160040135916115b18361155c565b916115bf6040519384610729565b838352808301602460608096028401019236841161027c57602401905b8382106115ec576105cc85613dcc565b8286916115f93685610bbe565b8152019101906115dc565b3461027c57600036600319011261027c576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b61014036600319011261027c576113c361166161074a565b611669610281565b8152602435602082015261167b6102cc565b604082015260643560608201526116906112e2565b608082015260a43560a08201526116a56112f8565b60c08201526116b26107f9565b60e08201526101043561010082015261012435610120820152614361565b3461027c57604036600319011261027c576004356116ed8161026b565b60405162435da560e01b81529060206001600160a01b0381846004817f000000000000000000000000000000000000000000000000000000000000000085165afa9384156105d557600094611783575b50604051637be53ca160e01b815233600482015293829185916024918391165afa80156105d5576105cc9361177a926000926110685750506128f6565b60243590612932565b8291945061179d90823d8411610602576105f38183610729565b939061173d565b6101408060031936011261027c576004356117be8161026b565b604435906024356117ce836102b5565b6117d66112e2565b906117df6112f8565b946117e86107f9565b9461010435956101243594600098600098611804303314613521565b6001600160801b0380931680611967575b5050168061182e575b604080518a8152602081018a9052f35b61190196949260209694926118c761185961185361184e6118dc9661534f565b61356e565b92615518565b6040516001600160a01b038a168b820190815290979194919061188a9089906020015b03601f1981018a5289610729565b6118a461189561076a565b6001600160a01b03909b168b52565b898b0152600360408a0152606089018c905260a43560808a0152151560a0890152565b60c08701528860e087015261010086016133ce565b8261012085015283015260405180809581946301d8cec960e51b835260048301613403565b03917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19182156105d55791611949575b503880808080808061181e565b611961915060203d8111610b2f57610b208183610729565b3861193c565b611a33929b5060209161197d61184e8c9361534f565b611a0d8d61198a89615518565b6040516001600160a01b0387168882019081528190038082529094919291906119b69060200186610729565b6119d06119c161076a565b6001600160a01b039098168852565b8d888801526119e26040880160029052565b6060870182905260643560808801528b151560a088015260c087015260e086015261010085016133ce565b816101208401528883015260405180809581946301d8cec960e51b835260048301613403565b03917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19081156105d5578991611a78575b50983880611815565b611a90915060203d8111610b2f57610b208183610729565b38611a6f565b61010036600319011261027c57611aab610281565b611ab3610290565b90611abc61029d565b6001600160401b03919060a43583811161027c57611ade90369060040161030b565b9060c43585811161027c57611af790369060040161030b565b92909160e43596871161027c576103f097611b1961048098369060040161030b565b9790966084359260643592614c64565b61014036600319011261027c576103f0610af9611b4461074a565b611b4c610281565b81526024356020820152611b5e6107e1565b604082015260643560608201526084356080820152611b7b6102d9565b60a082015260c43560c082015260e43560e0820152611b98610808565b61010082015261012435610120820152613584565b60005b838110611bc05750506000910152565b8181015183820152602001611bb0565b90602091611be981518092818552858086019101611bad565b601f01601f1916010190565b602080820190808352835180925260408301928160408460051b8301019501936000915b848310611c295750505050505090565b9091929394958480611c47600193603f198682030187528a51611bd0565b9801930193019194939290611c19565b602036600319011261027c57600480356001600160401b03811161027c57611c82903690830161030b565b90611c8c826153af565b9160005b818110611ca557604051806103f08682611bf5565b600080611cb38385876153f9565b60409391611cc585518093819361543a565b0390305af490611cd3612a8c565b91829015611cfc57505090611cf791611cec8287613819565b52610ecc8186613819565b611c90565b826044899394511061027c57611d369183611d21920160248091518301019101615448565b925162461bcd60e51b81529283928301612b49565b0390fd5b3461027c57604036600319011261027c57602435611d57816102b5565b60405162435da560e01b81529060206001600160a01b0381846004817f000000000000000000000000000000000000000000000000000000000000000085165afa9384156105d557600094611dec575b50604051637be53ca160e01b815233600482015293829185916024918391165afa80156105d5576105cc93611de4926000926110685750506128f6565b600435612cca565b82919450611e0690823d8411610602576105f38183610729565b9390611da7565b3461027c57602036600319011261027c57600435600052600260205260a060406000205460ff6040519181811615158352818160081c1615156020840152818160101c1615156040840152818160181c161515606084015260201c1615156080820152f35b3461027c57608036600319011261027c57600435611e8f8161026b565b602435604435611e9e8161026b565b6064356001600160401b03811161027c57611ebd903690600401611169565b6001600160a01b0391907f000000000000000000000000000000000000000000000000000000000000000083163303611f115781611efe918493019061533a565b169083611f0757005b6105cc9416614c22565b60405162461bcd60e51b815260206004820152601060248201526f37b7363ca7b93232b926b0b730b3b2b960811b6044820152606490fd5b3461027c57604036600319011261027c57602435611f66816102b5565b60405162435da560e01b81529060206001600160a01b0381846004817f000000000000000000000000000000000000000000000000000000000000000085165afa9384156105d557600094611ffb575b50604051637be53ca160e01b815233600482015293829185916024918391165afa80156105d5576105cc93611ff3926000926110685750506128f6565b600435612c59565b8291945061201590823d8411610602576105f38183610729565b9390611fb6565b3461027c57604036600319011261027c57602435612039816102b5565b60405162435da560e01b81529060206001600160a01b0381846004817f000000000000000000000000000000000000000000000000000000000000000085165afa9384156105d5576000946120ce575b50604051637be53ca160e01b815233600482015293829185916024918391165afa80156105d5576105cc936120c6926000926110685750506128f6565b600435612e11565b829194506120e890823d8411610602576105f38183610729565b9390612089565b61020036600319011261027c576103f0610af961210a61078a565b612112610281565b815260243560208201526121246107e1565b6040820152606435606082015260843560808201526121416102d9565b60a082015261214e6112f8565b60c082015260e43560e082015261216361130e565b6101008201526101243561012082015261217b611325565b61014082015261016435610160820152612193610818565b6101808201526101a4356101a08201526101c4356101c08201526101e4356101e082015261306c565b60c036600319011261027c57602435600480356121d8836102b5565b6001600160401b0360643581811161027c576121f7903690850161030b565b60849291923582811161027c57612211903690870161030b565b91909260a43590811161027c5761222b903690880161030b565b929094612236612b9a565b61223e613016565b61226a612265610f7d61225b8a6000526002602052604060002090565b5460101c60ff1690565b612e80565b604051632630c12f60e01b81526001600160a01b0396906020818b817f00000000000000000000000000000000000000000000000000000000000000008c165afa80156105d5578891600091612379575b501692833b1561027c576000958a926122e992604051998a98899788976318c68c5b60e21b89528801612f26565b039134905af180156105d557612366575b507f000000000000000000000000000000000000000000000000000000000000000016803b1561027c5760408051632ca92e3360e21b81529384019283523360208401529315159382019390935260443560608201529091600091839190829084908290608001610cc4565b80610616612373926106a5565b386122fa565b612391915060203d8111610602576105f38183610729565b386122bb565b608036600319011261027c576024356001600160401b0380821161027c576123c46004923690840161030b565b60449291923582811161027c576123de903690860161030b565b91909260643590811161027c576123f8903690870161030b565b929094612403612b9a565b61240b613016565b604051632630c12f60e01b81526001600160a01b0396906020818a817f00000000000000000000000000000000000000000000000000000000000000008c165afa80156105d5578891600091612529575b501692833b1561027c57600095899261248a92604051998a98899788976318c68c5b60e21b89528801612f26565b039134905af180156105d557612516575b507f000000000000000000000000000000000000000000000000000000000000000016803b1561027c5760405163894feb9d60e01b81528235818401908152909160009183919082908490829060200103925af180156105d557612503576105cc6001600055565b80610616612510926106a5565b80610cd3565b80610616612523926106a5565b3861249b565b612541915060203d8111610602576105f38183610729565b3861245c565b3461027c57602036600319011261027c576103f06040806080815161256b816106d8565b6000918183809352826020820152828582015282606082015201526004358152600260205220906125e560ff8251936125a3856106d8565b5481811615158552818160081c1615156020860152818160101c161515848601526125d8828260181c16606087019015159052565b60201c1615156080840152565b519182918291909160808060a083019480511515845260208101511515602085015260408101511515604085015260608101511515606085015201511515910152565b3461027c57604036600319011261027c57602435612645816102b5565b60405162435da560e01b81529060206001600160a01b0381846004817f000000000000000000000000000000000000000000000000000000000000000085165afa9384156105d5576000946126da575b50604051637be53ca160e01b815233600482015293829185916024918391165afa80156105d5576105cc936126d2926000926110685750506128f6565b600435612d35565b829194506126f490823d8411610602576105f38183610729565b9390612695565b60e036600319011261027c576004356127138161026b565b61271b610290565b6127236102e6565b916001600160401b039160843583811161027c5761274590369060040161030b565b9060a43585811161027c5761275e90369060040161030b565b92909160c43596871161027c576103f0976127806103d398369060040161030b565b97909660443591614edb565b6020908160408183019282815285518094520193019160005b8281106127b3575050505090565b8351855293810193928101926001016127a5565b60208060031936011261027c576004356001600160401b03811161027c573660238201121561027c578060040135906127ff8261155c565b9261280d6040519485610729565b82845280840160246101408095028401019236841161027c57602401905b83821061284a576103f061283e87613832565b6040519182918261278c565b82859161285736856108b1565b81520191019061282b565b3461027c57600036600319011261027c576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b519061028e8261026b565b9081602091031261027c57516128c78161026b565b90565b6040513d6000823e3d90fd5b519061028e826102b5565b9081602091031261027c57516128c7816102b5565b156128fd57565b60405162461bcd60e51b815260206004820152600d60248201526c37b7363ca837b7b620b236b4b760991b6044820152606490fd5b61028e919033906001600160a01b03165b60405163a9059cbb60e01b60208201526001600160a01b039092166024830152604482019290925261028e9161298682606481015b03601f198101845283610729565b6129a6565b6001600160401b0381116106b857601f01601f191660200190565b604051612a04916001600160a01b03166129bf8261070e565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af16129fe612a8c565b91612abc565b805190828215928315612a74575b50505015612a1d5750565b6084906040519062461bcd60e51b82526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152fd5b612a8493508201810191016128e1565b388281612a12565b3d15612ab7573d90612a9d8261298b565b91612aab6040519384610729565b82523d6000602084013e565b606090565b91929015612b1e5750815115612ad0575090565b3b15612ad95790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b825190915015612b315750805190602001fd5b60405162461bcd60e51b8152908190611d3690600483015b9060206128c7928181520190611bd0565b612b62612b9a565b600160ff19815416176001557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a1565b60ff60015416612ba657565b60405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606490fd5b60015460ff811615612c1d5760ff19166001557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a1565b60405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606490fd5b907ffc5b53a10a690d609db15172bc801db46cd4325162b1d451ecf9c2506793de3591806000526002602052604060002060ff1981541660ff841516179055612cc5604051928392338491926040919493606084019560018060a01b0316845260208401521515910152565b0390a1565b600081815260026020908152604091829020805461ff0019169415600881901b61ff00169590951790558151338152908101929092529115918101919091527fc19970c31e6a5e852abc18399a2d6111dedb931ea613d86f2e6be00dc433b2fc908060608101612cc5565b600081815260026020908152604091829020805462ff000019169415601081901b62ff0000169590951790558151338152908101929092529115918101919091527f6539cab5b8437438117f6321b1de3c48abc0e1edcbb0f35fcaa5dcb80364774c908060608101612cc5565b600081815260026020908152604091829020805463ff00000019169415601881901b63ff000000169590951790558151338152908101929092529115918101919091527fc500659b3cffd5679961b0ae179a7e58a43967e3fc5ddd7a467cdd624d61d819908060608101612cc5565b600081815260026020908152604091829020805464ff000000001916941580831b64ff00000000169590951790558151338152908101929092529115918101919091527fb1baea30c77fbf28a108876bf97e168dca9b94d86632c9f4cca34a886f0db672908060608101612cc5565b15612e8757565b60405162461bcd60e51b8152602060048201526008602482015267191a5cd8589b195960c21b6044820152606490fd5b908060209392818452848401376000828201840152601f01601f1916010190565b9190808252602080920192916000805b838210612ef757505050505090565b909192939485356001600160401b038116809103612f22578152830194830193929160010190612ee8565b8280fd5b96959390949291806060890160608a525260808801959060005b818110612fe75750505060208786038189015281865280860195818360051b82010196846000925b858410612f8857505050505050508460406128c795968503910152612ed8565b90919293949598601f198282030184528935601e198436030181121561027c5783018681019190356001600160401b03811161027c57803603831361027c57612fd688928392600195612eb7565b9b0194019401929594939190612f68565b90919293966001908435612ffa8161026b565b60a083901b839003168152602090810198959401929101612f40565b600260005414613027576002600055565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b613074612b9a565b61307c613016565b6130a4612265610f7d61309d60208501516000526002602052604060002090565b5460ff1690565b6040810190600282516130b681613374565b6130bf81613374565b14158061333b575b6130d09061337e565b338082526101a0820180516020840151945191949293906130f083613374565b6060820151608083015160a0840151151560c08501516001600160801b03166001600160801b03166131219061534f565b9161016086015193610180870151613138816133b8565b61314190615518565b9a518751604080516001600160a01b039092166020808401919091528252909a9199919061316f908c610729565b61317761076a565b6001600160a01b03909c168c5260208c01526131969060408c016133c2565b60608a01526080890152151560a088015260c087015260e0860152610100956131c1908787016133ce565b610120928386015261014093848601526040518080966301d8cec960e51b825260048201906131ef91613403565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316939190039082905a94602095f19384156105d557600094613313575b508051939492936040936132c8916001600160a01b03169260208101519461326060a0830151151590565b9761329061327c60e0850151958501516001600160801b031690565b92840151918401516001600160801b031690565b90610180840151926132a1846133b8565b6101e06101c0860151950151958a519b8c9a8b9a6392401c4f60e01b8c5260048c016134bf565b03816000305af180156105d5576132e5575b506128c76001600055565b6133069060403d60401161330c575b6132fe8183610729565b8101906134a9565b506132da565b503d6132f4565b60409394506133336132c89160203d602011610b2f57610b208183610729565b949350613235565b506130d06003835161334c81613374565b61335581613374565b141590506130c7565b634e487b7160e01b600052602160045260246000fd5b60041115610cf057565b1561338557565b60405162461bcd60e51b815260206004820152600b60248201526a1b9bdd081cdd5c1c1bdc9d60aa1b6044820152606490fd5b60021115610cf057565b6004821015610cf05752565b6003821015610cf05752565b9081602091031261027c575190565b906004821015610cf05752565b906003821015610cf05752565b602080825282516001600160a01b0316908201526128c791610180906020810151604084015261343b604082015160608501906133e9565b60608101516080840152608081015160a084015261346260a082015160c085019015159052565b60c081015160e084015260e0810151610100908185015281015161348c61012091828601906133f6565b810151906101409182850152015191610160808201520190611bd0565b919082604091031261027c576020825192015190565b9693919a99989592909a61014088019b60018060a01b0316885260208801521515604087015260608601526001600160801b03809316608086015260a08501521660c08301526002831015610cf0576101209260e08301526101008201520152565b1561352857565b60405162461bcd60e51b81526020600482015260086024820152671a5b9d195c9b985b60c21b6044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b600160ff1b811461357f5760000390565b613558565b61358c612b9a565b613594613016565b602090818101906135b9612265610f7d61309d85516000526002602052604060002090565b6040810190600282516135cb81613374565b6135d481613374565b141580613753575b6135e59061337e565b610120808201805134146135f890613776565b338084529451935161360981613374565b6060840151608085015160a0860151151560c08701516136289061534f565b9160e08801519361010095868a0151613640816133b8565b61364990615518565b975199516040516001600160a01b039091168e8201908152819003808252909b90613677906020018d610729565b61367f61076a565b6001600160a01b03909d168d528c8e015261369d9060408d016133c2565b60608b015260808a0152151560a089015260c088015260e08701528501906136c4916133ce565b830152610140820152816040518080936301d8cec960e51b825260048201906136ec91613403565b0381347f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19182156105d557600092613736575b50506128c76001600055565b61374c9250803d10610b2f57610b208183610729565b388061372a565b506135e56003835161376481613374565b61376d81613374565b141590506135dc565b1561377d57565b60405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e74206e6574776f726b2066656500000000000000006044820152606490fd5b906137cc8261155c565b6137d96040519182610729565b82815280926137ea601f199161155c565b0190602036910137565b600019811461357f5760010190565b634e487b7160e01b600052603260045260246000fd5b805182101561382d5760209160051b010190565b613803565b9061383b612b9a565b613843613016565b61384d82516137c2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692600090815b81518110156139fe578060206138966139b39385613819565b518181016138c2612265610f7d6138b884516000526002602052604060002090565b5460081c60ff1690565b6101208201805191519261398c6040820151926138de84613374565b60608301519260808101516139786138f960c0840151151590565b61390961184e60a086015161534f565b9261392661010060e0870151960151613921816133b8565b615518565b9551604080513360208083019190915281529a9199916139659161394a908d610729565b604061395461076a565b3381529e8f906020820152016133c2565b60608c015260808b0152151560a08a0152565b60c088015260e087015261010086016133ce565b61012084015261014083015260405180809681946301d8cec960e51b835260048301613403565b03918b5af180156105d5576139da9285916139df575b506139d48287613819565b526137f4565b61387d565b6139f8915060203d602011610b2f57610b208183610729565b386139c9565b5050509091506128c76001600055565b91613a239060c09492845260208401906133e9565b1515604082015260806060820152600b60808201526a31b0b731b2b627b93232b960a91b60a08201520190565b519061028e826107ca565b919082604091031261027c57604051604081018181106001600160401b038211176106b85760405280928051600381101561027c578252602090810151910152565b9190828103906101e0821261027c576101a080921261027c576128c791613ac26107aa565b85518152613ad2602087016128a7565b602082015260408601516040820152613aed60608701613a50565b60608201526080860151608082015260a086015160a082015260c086015160c082015260e086015160e08201526101008087015190820152610120613b338188016128d6565b90820152610140613b458188016128d6565b908201526101608087015190820152610180613b628188016128d6565b908201529401613a5b565b90815260408101929161028e91602001906133e9565b15613b8a57565b60405162461bcd60e51b815260206004820152600b60248201526a1bdb9b1e5058d8dbdd5b9d60aa1b6044820152606490fd5b9190828103906101a0821261027c5761016080921261027c576128c791613be261076a565b85518152613bf2602087016128a7565b602082015260408601516040820152613c0d60608701613a50565b60608201526080860151608082015260a086015160a0820152613c3260c087016128d6565b60c082015260e086015160e08201526101008087015190820152610120808701519082015261014080870151908201529401613a5b565b9115613d2657613c909060405191829163f9d244fd60e01b83526101a09460048401613b6d565b6001600160a01b039291849183919003817f000000000000000000000000000000000000000000000000000000000000000086165afa9283156105d55761028e93613cf092602092600092613cf8575b505001516001600160a01b031690565b163314613b83565b613d179250803d10613d1f575b613d0f8183610729565b810190613bbd565b503880613ce0565b503d613d05565b613d47906040519182916340b4605b60e11b83526101e09460048401613b6d565b6001600160a01b039291849183919003817f000000000000000000000000000000000000000000000000000000000000000086165afa9283156105d55761028e93613cf092602092600092613da657505001516001600160a01b031690565b613d179250803d10613dc5575b613dbd8183610729565b810190613a9d565b503d613db3565b90613dd5612b9a565b613ddd613016565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169160005b8151811015613e9e57613e1e8183613819565b519081516020830192613e57845191613e3683613374565b613e4a60409485830194610c4f8651151590565b51945191610c9183613374565b93873b1561027c57613e7e60009351958693849363ecd1bbcb60e01b855260048501613f30565b038183895af19182156105d557613e9992610ed757506137f4565b613e0b565b5050905061028e6001600055565b9060c092613ec091835260208301906133e9565b6000604082015260806060820152600c60808201526b63616e63656c4f726465727360a01b60a08201520190565b9060c092613f0291835260208301906133e9565b6001604082015260806060820152600c60808201526b63616e63656c4f726465727360a01b60a08201520190565b91613f459060c09492845260208401906133e9565b1515604082015260806060820152600c60808201526b63616e63656c4f726465727360a01b60a08201520190565b602090818184031261027c578051906001600160401b03821161027c570182601f8201121561027c57805191613fa88361155c565b936040613fb781519687610729565b848652828601918360e08097028601019481861161027c578401925b858410613fe4575050505050505090565b868483031261027c578487918451613ffb816106f3565b86516140068161026b565b815282870151838201528587015161401d816102b5565b86820152606061402e8189016128d6565b90820152608061403f818901613a50565b9082015260a0808801519082015260c08088015190820152815201930192613fd3565b61406a612b9a565b614072613016565b60009060409161408483830151151590565b15614260575080516140b9602083015161409d81613374565b845191829163f9d244fd60e01b83526101a09460048401613b6d565b6001600160a01b039291849183919003817f000000000000000000000000000000000000000000000000000000000000000086165afa9283156105d55760009361423a575b5050602082015161411c91906001600160a01b03165b163314614329565b61412d60c084830151920151151590565b61414a612265610f7d61225b856000526002602052604060002090565b60808301516001600160801b031691821580159061420f575b61417f575b50505050506141776001600055565b600090600090565b6141da859360608601519560a08101516141a360c08301516001600160801b031690565b60e0830151916141b2836133b8565b6101206101008501519401519489519a8b998a996392401c4f60e01b8b523360048c016134bf565b03816000305af180156105d5576141f4575b808080614168565b8161420a92903d1061330c576132fe8183610729565b6141ec565b5061423361422760c08601516001600160801b031690565b6001600160801b031690565b1515614163565b61411c929350908161425792903d10613d1f57613d0f8183610729565b509190386140fe565b815161428f602084015161427381613374565b85519182916340b4605b60e11b83526101e09460048401613b6d565b6001600160a01b039391829184919003817f000000000000000000000000000000000000000000000000000000000000000087165afa9384156105d55793614303575b505060208201516142ec91906001600160a01b0316614114565b6142fe61012084830151920151151590565b61412d565b6142ec929350908161432092903d10613dc557613dbd8183610729565b509190386142d2565b1561433057565b60405162461bcd60e51b81526020600482015260096024820152686e6f2061636365737360b81b6044820152606490fd5b9061436a612b9a565b614372613016565b604060208301614396612265610f7d61225b84516000526002602052604060002090565b518382015115159061440c6060860151956143bb60808201516001600160801b031690565b9060a08101516143d560c08301516001600160801b031690565b60e0830151916143e4836133b8565b6101206101008501519401519489519b8c998a996392401c4f60e01b8b523360048c016134bf565b03816000305af19182156105d5576000908193614433575b5061442f6001600055565b9190565b905061444e91925060403d811161330c576132fe8183610729565b919038614424565b9793919695929a9860206144a79b969261446e612b9a565b614476613016565b60405163684ae9e560e01b81526001600160a01b03808d16600483015290911660248201529b8c9081906044820190565b03817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9a8b156105d55760009b614854575b50614517612265610f7d61450d8e6144fd811515614883565b6000526002602052604060002090565b5460181c60ff1690565b61452c614524878a6148b9565b3410156148c6565b604051632630c12f60e01b81526020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105d557600091614835575b506001600160a01b031692833b1561027c576145b187926000976040519a8b98899788966318c68c5b60e21b885260048801612f26565b03925af19182156105d5576145cc92614822575b50346148f7565b93303b1561027c57604051630ee78da560e01b8152306004820152906000828060248101038189305af19081156105d557606092849261480f575b50604080513360208201526146499161462d90829081015b03601f198101835282610729565b604051633cece6db60e21b8152998a9485943360048701614928565b038160007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af19384156105d557600092839684966147d5575b5061469783836148f7565b15159081614750575b506146b7575b50506146b26001600055565b929190565b6040516315ab88c960e31b8152916020836004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105d5576147269360009261472d575b5061471591926148f7565b9033906001600160a01b0316612943565b38806146a6565b614715925061474a9060203d602011610602576105f38183610729565b9161470a565b6040516315ab88c960e31b81529091506020816004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa9081156105d5576000916147b6575b506001600160a01b03918216911614386146a0565b6147cf915060203d602011610602576105f38183610729565b386147a1565b91935094506147fc91955060603d8111614808575b6147f48183610729565b810190614904565b9591929095943861468c565b503d6147ea565b8061061661481c926106a5565b38614607565b8061061661482f926106a5565b386145c5565b61484e915060203d602011610602576105f38183610729565b3861457a565b61450d9b50612265610f7d61487a6145179360203d602011610b2f57610b208183610729565b9d5050506144e4565b1561488a57565b60405162461bcd60e51b81526020600482015260076024820152662165786973747360c81b6044820152606490fd5b9190820180921161357f57565b156148cd57565b60405162461bcd60e51b81526020600482015260026024820152616e6560f01b6044820152606490fd5b9190820391821161357f57565b9081606091031261027c57805191604060208301516149228161026b565b92015190565b919260a0936128c7969592600180871b031684526020840152604083015260608201528160808201520190611bd0565b999895939196909794929961496b612b9a565b614973613016565b6040805163684ae9e560e01b81526001600160a01b038381166004808401919091529b811660248301527f000000000000000000000000000000000000000000000000000000000000000081169992976020979196929590939288876044818f5afa9a8b156105d5578e9760009c614bf5575b506149ff612265610f7d61450d8f6144fd811515614883565b8a51632630c12f60e01b81527f00000000000000000000000000000000000000000000000000000000000000008a16988b908290818c5afa80156105d5578a91600091614bd8575b501692833b1561027c578f9195600096614a75928e51998a98899788976318c68c5b60e21b89528801612f26565b039134905af180156105d557614bc5575b5084516315ab88c960e31b808252919085818c81875afa9081156105d55785918291600091614ba8575b5016911614614b42575b50508251339281019283526060976000949093614afb9350614ae0908390602001612978565b51633cece6db60e21b8152998a978896879533908701614928565b03925af19081156105d557600080938193614b1c575b506146b26001600055565b91935050614b38915060603d8111614808576147f48183610729565b9290929138614b11565b9288938593998296518094819382525afa9182156105d557614ae0600095614b818a60609c614afb97612978978b91614b8b575b503091339116614c22565b9499505093614aba565b614ba29150853d8711610602576105f38183610729565b38614b76565b614bbf9150883d8a11610602576105f38183610729565b38614ab0565b80610616614bd2926106a5565b38614a86565b614bef91508c8d3d10610602576105f38183610729565b38614a47565b61450d9c50612265610f7d614c196149ff938e803d10610b2f57610b208183610729565b9e5050506149e6565b6040516323b872dd60e01b60208201526001600160a01b03928316602482015292909116604483015260648083019390935291815261028e91612986826106d8565b9198939a99614ce5959398919697614c7a612b9a565b614c82613016565b60405163684ae9e560e01b81526001600160a01b03858116600483015298891660248201527f000000000000000000000000000000000000000000000000000000000000000089169990986020989097919089908b908d90829081906044820190565b03915afa998a156105d55760009a614ebc575b50614d048a1515614883565b614d21612265610f7d61450d8d6000526002602052604060002090565b604051632630c12f60e01b81527f0000000000000000000000000000000000000000000000000000000000000000891697908a816004818c5afa80156105d5578a91600091614e9f575b501692833b1561027c57600095614d9991604051988997889687966318c68c5b60e21b885260048801612f26565b039134905af180156105d557614e8c575b506040516315ab88c960e31b80825291908581600481875afa9081156105d55785918291600091614e6f575b5016911614614e25575b505060405133928101928352606096600093909250614afb9190614e0890829060200161461f565b604051633cece6db60e21b8152998a978896879560048701614928565b839060046040999499518094819382525afa9081156105d557614e08600094614e648960609b614afb9661461f968a91614b8b57503091339116614c22565b945050829750614de0565b614e869150883d8a11610602576105f38183610729565b38614dd6565b80610616614e99926106a5565b38614daa565b614eb691508c8d3d10610602576105f38183610729565b38614d6b565b614ed4919a50893d8b11610b2f57610b208183610729565b9838614cf8565b9998929693959194979097614eee612b9a565b614ef6613016565b60405163684ae9e560e01b81526001600160a01b039b8c166004820152988b1660248a015297996020987f000000000000000000000000000000000000000000000000000000000000000082169790918a8d6044818c5afa9c8d156105d55760009d6150c5575b50614f81612265610f7d8f806144fd614f77921515614883565b5460201c60ff1690565b604051632630c12f60e01b81528b816004817f000000000000000000000000000000000000000000000000000000000000000086165afa9081156105d5576000916150a8575b501692833b1561027c57600095614ff591604051988997889687966318c68c5b60e21b885260048801612f26565b039134905af19687156105d55761502860609660009361187c9a615095575b5060405133918101918252998a9160200190565b6150496040519889968795869463bb04869d60e01b8652336004870161510f565b03925af19081156105d55760008093819361506957506146b26001600055565b91935050614b38915060603d811161508e575b6150868183610729565b8101906150f4565b503d61507c565b806106166150a2926106a5565b38615014565b6150bf91508c8d3d10610602576105f38183610729565b38614fc7565b909c508a3d8c116150ed575b6150db8183610729565b81016150e6916133da565b9b38614f5d565b503d6150d1565b9081606091031261027c578051916040602083015192015190565b919260a0936128c7969592600180871b0316845260208401526040830152151560608201528160808201520190611bd0565b97949690929a99919398615153612b9a565b61515b613016565b60405163684ae9e560e01b81526001600160a01b03998a166004820152938916602485015292977f0000000000000000000000000000000000000000000000000000000000000000811697909660209491858b6044818d5afa9a8b156105d55760009b6152d6575b506151dc612265610f7d614f778e6144fd811515614883565b604051632630c12f60e01b815286816004817f00000000000000000000000000000000000000000000000000000000000000008e165afa80156105d5578a916000916152b9575b501692833b1561027c57600095615251916040519a8b97889687966318c68c5b60e21b885260048801612f26565b039134905af19283156105d55760609761528861504993612978936000976152a6575b506040513391810191825293849160200190565b60405163bb04869d60e01b81529a8b9889978896166004870161510f565b806106166152b3926106a5565b38615274565b6152d09150883d8a11610602576105f38183610729565b38615223565b614f779b50612265610f7d6152fa6151dc938a3d8c11610b2f57610b208183610729565b9d5050506151c3565b1561530a57565b60405162461bcd60e51b81526020600482015260086024820152671bdb9b1e541bdbdb60c21b6044820152606490fd5b9081602091031261027c57356128c78161026b565b6001600160ff1b0381116153605790565b60405162461bcd60e51b815260206004820152602160248201527f56616c756520746f6f206c6172676520746f2066697420696e20696e743235366044820152601760f91b6064820152608490fd5b906153b98261155c565b6153c66040519182610729565b82815280926153d7601f199161155c565b019060005b8281106153e857505050565b8060606020809385010152016153dc565b919081101561382d5760051b81013590601e198136030182121561027c5701908135916001600160401b03831161027c57602001823603811361027c579190565b908092918237016000815290565b60208183031261027c578051906001600160401b03821161027c570181601f8201121561027c57805161547a8161298b565b926154886040519485610729565b8184526020828401011161027c576128c79160208085019101611bad565b9091680100000000000000008310156154ed57600090156154e5575060ff60015b169160201b906bffffffffffffffffffffffff199060601b16171790565b60ff906154c7565b60405162461bcd60e51b81526020600482015260036024820152621c1d1b60ea1b6044820152606490fd5b6002811015610cf0578061552c5750600190565b806155386001926133b8565b0361554257600290565b60405162461bcd60e51b8152602060048201526014602482015273496e76616c6964207061796d656e74207479706560601b6044820152606490fdfea26469706673582212208fdd6e9a0cdc95825075666eaf75c7d58a2e3e7d2fe6a0eae4ca8c97492b397864736f6c63430008130033000000000000000000000000446dd43816a00d56849f549c032b4814008e183d0000000000000000000000004df429a8ff6cf308f1c9aa8e4b6bef5e4e90043700000000000000000000000020f00c8af604bfb0f7f2518e2f37f03f25f176e50000000000000000000000008932aa60a7b5efefa8ec3ee899fd238d029d10c6