0 txs
3.4k calls
constructor
No constructor.
functions
CALLBACK_GAS_LIMIT
viewfunction CALLBACK_GAS_LIMIT() view returns (uint256)
getAssetHandler
viewfunction getAssetHandler(address poolManagerLogic) view returns (address)
MAX_LEVERAGE
viewfunction MAX_LEVERAGE() view returns (uint256)
MAX_SLIPPAGE
viewfunction MAX_SLIPPAGE() view returns (uint256)
maxLeverageCheck
viewfunction maxLeverageCheck(tuple latestOrder, tuple priceDependencies, address exchangeRouterContractGuard) view
events
No events.
errors
No errors.
creation bytecode
0x615a6d62000027600b82828239805160001a60731461001a57fe5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061006c5760003560e01c80631862aab31461007157806333d608f11461009a5780637c289ff1146100af5780639b45ec97146100c4578063f9759518146100cc578063fa217e32146100d4575b600080fd5b61008461007f366004614554565b6100f4565b604051610091919061501f565b60405180910390f35b6100a26101df565b60405161009191906150f4565b6100c26100bd366004614cc6565b6101e6565b005b6100a26104a4565b6100a26104b0565b8180156100e057600080fd5b506100c26100ef36600461458c565b6104b5565b6000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561012f57600080fd5b505afa158015610143573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101679190614570565b6001600160a01b03166309ed48936040518163ffffffff1660e01b815260040160206040518083038186803b15801561019f57600080fd5b505afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190614570565b90505b919050565b620b71b081565b6000806102d48585856001600160a01b0316626cc35e6040518163ffffffff1660e01b815260040160206040518083038186803b15801561022657600080fd5b505afa15801561023a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061025e9190614570565b866001600160a01b031663b3f006746040518163ffffffff1660e01b815260040160206040518083038186803b15801561029757600080fd5b505afa1580156102ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102cf9190614570565b61119c565b9150915060006102ec85876000015160c001516113ed565b51905060008083156103265761032361030585856114c7565b60208701515161031d90670de0b6b3a76400006114c7565b90611527565b91505b6004602089015151600881111561033957fe5b14156103e2576020808601515190890151604001511061035d57505050505061049f565b838860200151606001511061038d5760405162461bcd60e51b8152600401610384906155b7565b60405180910390fd5b6103db6103b5846103af8b60200151606001518861158b90919063ffffffff16565b906114c7565b6020808b015160400151908801515161031d91670de0b6b3a7640000916103af9161158b565b9050610469565b600260208901515160088111156103f557fe5b1415610469576000610418896020015160600151866115e890919063ffffffff16565b111561046957610466610440846103af8b6020015160600151886115e890919063ffffffff16565b6020808b015160400151908801515161031d91670de0b6b3a7640000916103af916115e8565b90505b8181111561049957676124fee993bc00008111156104995760405162461bcd60e51b815260040161038490615450565b50505050505b505050565b676124fee993bc000081565b609681565b6000807354f78af287617c3eb42c136cfa9a413aa953ac6b63f5e086af8787866040518463ffffffff1660e01b81526004016104f393929190615033565b60006040518083038186803b15801561050b57600080fd5b505af415801561051f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261054791908101906147bc565b5050915091506105556133e6565b61055d613414565b6040518060a00160405280896001600160a01b031663660d0d676040518163ffffffff1660e01b815260040160206040518083038186803b1580156105a157600080fd5b505afa1580156105b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d99190614570565b6001600160a01b03168152602001896001600160a01b031663d4fc42c66040518163ffffffff1660e01b815260040160206040518083038186803b15801561062057600080fd5b505afa158015610634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106589190614570565b6001600160a01b03168152602001896001600160a01b03166333a518b86040518163ffffffff1660e01b815260040160206040518083038186803b15801561069f57600080fd5b505afa1580156106b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d79190614570565b6001600160a01b03168152602001896001600160a01b03166352dac6566040518163ffffffff1660e01b815260040160206040518083038186803b15801561071e57600080fd5b505afa158015610732573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107569190614570565b6001600160a01b0316815260200161076d896100f4565b6001600160a01b039081169091526040805160808082018352602080860151851683528551851690830152840151831691810191909152908a16606082015290925090506001600160e01b03198416631592ca1b60e31b1415611037576000838060200190518101906107e091906146cc565b90506000816001835103815181106107f457fe5b602002602001015190507354f78af287617c3eb42c136cfa9a413aa953ac6b63c3c6279f826040518263ffffffff1660e01b81526004016108359190615198565b60206040518083038186803b15801561084d57600080fd5b505af4158015610861573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088591906147a2565b95506001600160e01b0319861663c82aa41b60e01b1415610b315760006108b885600001516001600160a01b0316611640565b60208601518651604051631485d29760e01b81529293506000926001600160a01b0390921691631485d297916108f29186906004016151c5565b60006040518083038186803b15801561090a57600080fd5b505afa15801561091e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109469190810190614ae0565b8051518751919250600091610966916001600160a01b0390911690611662565b9050806001146109885760405162461bcd60e51b81526004016103849061537f565b620b71b0826020015160a0015110156109b35760405162461bcd60e51b8152600401610384906152e1565b6000807354f78af287617c3eb42c136cfa9a413aa953ac6b631e206dd86040518060e001604052808760000151600001516001600160a01b031681526020018760000151608001516001600160a01b03168152602001876000015160a001516001600160a01b03168152602001876000015160c001516001600160a01b03168152602001876020015160000151815260200187602001516020015181526020018760200151604001518152508a600160006040518563ffffffff1660e01b8152600401610a8394939291906156df565b604080518083038186803b158015610a9a57600080fd5b505af4158015610aae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad29190614f0b565b91509150610b2789604001518f60405180608001604052808860000151608001516001600160a01b031681526020018860000151608001516001600160a01b03168152602001868152602001858152506116e3565b5050505050611030565b6001600160e01b0319861663e78dc23560e01b1415610ceb576000610b6285600001516001600160a01b0316611640565b6020860151865160405163ceeea3bf60e01b81529293506000926001600160a01b039092169163ceeea3bf91610b9c9186906004016151c5565b60006040518083038186803b158015610bb457600080fd5b505afa158015610bc8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610bf09190810190614dc8565b8051518751919250600091610c10916001600160a01b03909116906118c4565b905080600114610c325760405162461bcd60e51b815260040161038490615679565b620b71b0826020015160a001511015610c5d5760405162461bcd60e51b8152600401610384906152e1565b6040805160a0810182528351516001600160a01b0390811682528451608090810151909116602080840191909152808601805151848601528051909101516060840152518301519082015290516353cf222760e11b815260009182917354f78af287617c3eb42c136cfa9a413aa953ac6b9163a79e444e91610a8391908c9060019087908190600401615822565b6001600160e01b0319861663f59c48eb60e01b1415611030576040516321d248cf60e11b81527354f78af287617c3eb42c136cfa9a413aa953ac6b906343a4919e90610d3b908590600401615089565b60006040518083038186803b158015610d5357600080fd5b505af4158015610d67573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d8f9190810190614873565b5050506000610daa85600001516001600160a01b0316611640565b602086015186516040516324b28db560e11b81529293506000926001600160a01b03909216916349651b6a91610de49186906004016151c5565b60006040518083038186803b158015610dfc57600080fd5b505afa158015610e10573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610e389190810190614c1f565b8051518751919250600091610e58916001600160a01b03909116906118de565b905080600114610e7a5760405162461bcd60e51b81526004016103849061525d565b620b71b0826020015160e001511015610ea55760405162461bcd60e51b8152600401610384906152e1565b60006020830151516008811115610eb857fe5b1415611021576040805160a0810182528351516001600160a01b039081168252845160e00151602080840191909152855160c00151909116828401528401805160609081015190830152516101000151608082015290516333567b6760e21b815260009182917354f78af287617c3eb42c136cfa9a413aa953ac6b9163cd59ed9c91610f4e91908c906001908790600401615763565b604080518083038186803b158015610f6557600080fd5b505af4158015610f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9d9190614f0b565b9150915061101a89604001518f6040518060800160405280886000015160e00151600081518110610fca57fe5b60200260200101516001600160a01b03168152602001886000015160e00151600081518110610ff557fe5b60200260200101516001600160a01b03168152602001868152602001858152506116e3565b505061102c565b61102c82878f6101e6565b5050505b5050610499565b6001600160e01b0319841663e9249b5760e01b1415610499576000806000808680602001905181019061106a9190614636565b93509350935093506110f086606001516001600160a01b0316634219dc406040518163ffffffff1660e01b815260040160206040518083038186803b1580156110b257600080fd5b505afa1580156110c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ea9190614570565b8c6118f8565b5060005b845181101561118d57611185876060015188600001518d60405180608001604052808a878151811061112257fe5b60200260200101516001600160a01b0316815260200189878151811061114457fe5b60200260200101516001600160a01b0316815260200188878151811061116657fe5b60200260200101518152602001876001600160a01b0316815250611a18565b6001016110f4565b50505050505050505050505050565b6111a461343b565b8451805160a082015160c09092015160408801515160009384936111c9939092611a3d565b865160208801516040516307d47a8b60e11b81529293506001600160a01b0390911691630fa8f516916112009185906004016151c5565b6101c06040518083038186803b15801561121957600080fd5b505afa15801561122d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112519190614dac565b8051519093506001600160a01b031661126e5750600090506113e4565b85516020870151885160a0015160405163714af34b60e01b81526000936001600160a01b03169263714af34b926112a7926004016151ab565b60806040518083038186803b1580156112bf57600080fd5b505afa1580156112d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f79190614ba2565b9050600060405180606001604052806113148a85602001516113ed565b81526020016113278a85604001516113ed565b815260200161133a8a85606001516113ed565b9052885160208a0151604051630815bce160e01b81529293506000926001600160a01b0390921691630815bce191611381918c908990889088908f906001906004016151de565b6108406040518083038186803b15801561139a57600080fd5b505afa1580156113ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d291906149ab565b90506113dd81611a8a565b9450505050505b94509492505050565b6113f561346d565b6060830151604051638d0cec5760e01b81526000916001600160a01b031690638d0cec579061142890869060040161501f565b6101206040518083038186803b15801561144157600080fd5b505afa158015611455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114799190614e35565b90506000611488858386611c3c565b905060405180604001604052806114a58785856000015189611fce565b81526020016114ba8785856020015189611fce565b9052925050505b92915050565b6000826114d6575060006114c1565b828202828482816114e357fe5b04146115205760405162461bcd60e51b81526004018080602001828103825260218152602001806159c86021913960400191505060405180910390fd5b9392505050565b600080821161157a576040805162461bcd60e51b815260206004820152601a602482015279536166654d6174683a206469766973696f6e206279207a65726f60301b604482015290519081900360640190fd5b81838161158357fe5b049392505050565b6000828211156115e2576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015611520576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b60008061164c83612013565b9050600061165a84836120ca565b949350505050565b6000826001600160a01b031663f3903b9f61167c84612102565b6040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b1580156116b057600080fd5b505afa1580156116c4573d6000803e3d6000fd5b505050506040513d60208110156116da57600080fd5b50519392505050565b80604001518160600151101561049f57604081015161170c906127109061031d9061267a6114c7565b8160600151101561172f5760405162461bcd60e51b8152600401610384906154e1565b600061176c611767836040015161031d620f42406001600160801b03166103af8760600151886040015161158b90919063ffffffff16565b61217f565b90506000846001600160a01b0316630a7654f46040518163ffffffff1660e01b815260040160206040518083038186803b1580156117a957600080fd5b505afa1580156117bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e19190614ecc565b90506000856001600160a01b0316634a7c34cc866040518263ffffffff1660e01b8152600401611811919061501f565b60206040518083038186803b15801561182957600080fd5b505afa15801561183d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118619190614ecc565b9050816001600160801b0316611895611767836001600160801b0316866001600160801b03166115e890919063ffffffff16565b6001600160801b031611156118bc5760405162461bcd60e51b8152600401610384906154e1565b505050505050565b6000826001600160a01b031663f3903b9f61167c846121c7565b6000826001600160a01b031663f3903b9f61167c84612247565b6000816001600160a01b03166339b81fd96040518163ffffffff1660e01b815260040160206040518083038186803b15801561193357600080fd5b505afa158015611947573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196b9190614570565b9050336001600160a01b0382161480156119fc5750604051635b16ebb760e01b81526001600160a01b03841690635b16ebb7906119ac90849060040161501f565b60206040518083038186803b1580156119c457600080fd5b505afa1580156119d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fc9190614786565b6114c15760405162461bcd60e51b815260040161038490615624565b6000611a2484836122c2565b905080611a3657611a36858484612457565b5050505050565b604080516001600160a01b039586166020808301919091529486168183015292909416606083015215156080808301919091528351808303909101815260a0909101909252815191012090565b6020808201510151604001516080820151600090811215611acf57611ac8611abd846040015160c0015160200151612507565b60808501519061254b565b9050611b1e565b600083608001511215611b1e57611b1b600019611b15611b10611b01600019886080015161260390919063ffffffff16565b604088015160c00151516126ac565b612507565b90612603565b90505b6000808460600151608001511315611b5e57611b57611b48856040015160c0015160200151612507565b6060860151608001519061254b565b9050611baa565b60008460600151608001511215611baa57611ba7600019611b15611b10611b9860001989606001516080015161260390919063ffffffff16565b604089015160c00151516126ac565b90505b6000611bb682846126db565b90506000811315611bd257611bcb84826115e8565b9350611c02565b6000611be082600019612603565b905084811015611bfb57611bf4858261158b565b9450611c00565b600094505b505b8385604001516101e001511015611c2f5760408501516101e00151611c2890859061158b565b9350611c34565b600093505b505050919050565b611c4461346d565b600183604001516002811115611c5657fe5b1415611d275760008360600151600001516001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015611c9f57600080fd5b505afa158015611cb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd79190614f7d565b9050611d1f600085608001516040518060400160405280886060015181526020018860a00151815250611d178560ff16601261158b90919063ffffffff16565b600a0a612740565b915050611520565b600283604001516002811115611d3957fe5b1415611d5a57611d53600084608001518560a001516127fd565b9050611520565b600084604001516001600160a01b031663b4fb1279846040518263ffffffff1660e01b8152600401611d8c919061501f565b60206040518083038186803b158015611da457600080fd5b505afa158015611db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddc9190614570565b604051631536292360e21b81529091506001600160a01b038216906354d8a48c90611e0c906000906004016150e9565b604080518083038186803b158015611e2357600080fd5b505afa925050508015611e53575060408051601f3d908101601f19168201909252611e5091810190614a40565b60015b611f0e576000816001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b158015611e9257600080fd5b505afa158015611ea6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eca9190614f2e565b50505091505060008113611ef05760405162461bcd60e51b815260040161038490615311565b60405180604001604052808281526020018281525092505050611520565b816001600160a01b03166338d52e0f6040518163ffffffff1660e01b815260040160206040518083038186803b158015611f4757600080fd5b505afa925050508015611f77575060408051601f3d908101601f19168201909252611f7491810190614570565b60015b611f935760405162461bcd60e51b81526004016103849061528d565b806001600160a01b0316856001600160a01b031614611fc45760405162461bcd60e51b8152600401610384906152ba565b5091506115209050565b602083015180611ff3576020850151611ff0906001600160a01b03168361288c565b90505b61200a838268327cb2734119d3b7a9601e1b6129c3565b95945050505050565b6000816001600160a01b031663bd02d0f5604051602001808060200182810382526005815260200180644e4f4e434560d81b815250602001915050604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b15801561209857600080fd5b505afa1580156120ac573d6000803e3d6000fd5b505050506040513d60208110156120c257600080fd5b505192915050565b604080516001600160a01b03939093166020808501919091528382019290925280518084038201815260609093019052815191012090565b604080516020808201819052601482840152731050d0d3d5539517d1115413d4d25517d31254d560621b6060808401919091528351808403909101815260808301845280519082012060a08301526001600160a01b03841660c0808401919091528351808403909101815260e09092019092528051910120919050565b6000600160801b82106121c35760405162461bcd60e51b815260040180806020018281038252602781526020018061595f6027913960400191505060405180910390fd5b5090565b604080516020808201819052601782840152761050d0d3d5539517d5d2551211149055d05317d31254d5604a1b6060808401919091528351808403909101815260808301845280519082012060a08301526001600160a01b03841660c0808401919091528351808403909101815260e09092019092528051910120919050565b604080516020808201819052601282840152711050d0d3d5539517d3d491115497d31254d560721b6060808401919091528351808403909101815260808301845280519082012060a08301526001600160a01b03841660c0808401919091528351808403909101815260e09092019092528051910120919050565b600080836001600160a01b031663bd02d0f56122dd85612a72565b6040518263ffffffff1660e01b81526004016122f991906150f4565b60206040518083038186803b15801561231157600080fd5b505afa158015612325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123499190614ef3565b90506000846001600160a01b031663bd02d0f561236586612ade565b6040518263ffffffff1660e01b815260040161238191906150f4565b60206040518083038186803b15801561239957600080fd5b505afa1580156123ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d19190614ef3565b905060006123f2868660000151876020015188604001518960600151612aef565b905068327cb2734119d3b7a9601e1b8111156124205760405162461bcd60e51b8152600401610384906156ae565b600061242c8483612cef565b905082811061244a5761243f818461158b565b9450505050506114c1565b5060009695505050505050565b600061246b82600001518360200151612d08565b9050600061248c858460600151856000015186602001518760400151612d61565b90508015611a365760608301516040808501519051638ac31ac360e01b81526001600160a01b03881692638ac31ac3926124ce9289928892909160040161505f565b600060405180830381600087803b1580156124e857600080fd5b505af11580156124fc573d6000803e3d6000fd5b505050505050505050565b6000600160ff1b82106121c35760405162461bcd60e51b8152600401808060200182810382526028815260200180615a106028913960400191505060405180910390fd5b60008161259f576040805162461bcd60e51b815260206004820181905260248201527f5369676e6564536166654d6174683a206469766973696f6e206279207a65726f604482015290519081900360640190fd5b816000191480156125b35750600160ff1b83145b156125ef5760405162461bcd60e51b81526004018080602001828103825260218152602001806159a76021913960400191505060405180910390fd5b60008284816125fa57fe5b05949350505050565b600082612612575060006114c1565b826000191480156126265750600160ff1b82145b156126625760405162461bcd60e51b81526004018080602001828103825260278152602001806159e96027913960400191505060405180910390fd5b8282028284828161266f57fe5b05146115205760405162461bcd60e51b81526004018080602001828103825260278152602001806159e96027913960400191505060405180910390fd5b600082156126d2576126cd60016126c78461031d878461158b565b906115e8565b611520565b60009392505050565b60008282018183128015906126f05750838112155b80612705575060008312801561270557508381125b6115205760405162461bcd60e51b81526004018080602001828103825260218152602001806159866021913960400191505060405180910390fd5b61274861346d565b600080612756858786612e40565b92505091506000821161277b5760405162461bcd60e51b81526004016103849061564c565b86156127c057604080518082019091528061279f6402540be40061031d868661158b565b81526020016127b76402540be40061031d86866115e8565b905292506127f3565b60408051808201909152806127da846402540be400611527565b81526020016127ee846402540be400611527565b905292505b5050949350505050565b61280561346d565b6000806128128585612eb2565b925050915080600014156128385760405162461bcd60e51b8152600401610384906154b1565b851561286b576040805180820190915280612853848461158b565b815260200161286284846115e8565b90529250612883565b60405180604001604052808381526020018381525092505b50509392505050565b60408051602080820181905260158284015274282924a1a2afa322a2a22fa6aaa62a24a82624a2a960591b6060808401919091528351808403909101815260808301845280519082012060a08301526001600160a01b0384811660c0808501919091528451808503909101815260e0840180865281519184019190912063bd02d0f560e01b90915260e4840152925160009384939087169263bd02d0f59261010480840193829003018186803b15801561294557600080fd5b505afa158015612959573d6000803e3d6000fd5b505050506040513d602081101561296f57600080fd5b5051905080611520576040805162461bcd60e51b815260206004820152601b60248201527a32b6b83a3c90383934b1b2903332b2b21036bab63a34b83634b2b960291b604482015290519081900360640190fd5b60008080600019858709868602925082811090839003039050806129f957600084116129ee57600080fd5b508290049050611520565b808411612a0557600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6000604051602001612a839061541b565b604051602081830303815290604052805190602001208260000151836020015184604001518560600151604051602001612ac1959493929190615158565b604051602081830303815290604052805190602001209050919050565b6000604051602001612a8390615508565b600080866001600160a01b031663bd02d0f5612b0c88888861302f565b6040518263ffffffff1660e01b8152600401612b2891906150f4565b60206040518083038186803b158015612b4057600080fd5b505afa158015612b54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b789190614ef3565b90506000876001600160a01b031663bd02d0f5612b978989898961308b565b6040518263ffffffff1660e01b8152600401612bb391906150f4565b60206040518083038186803b158015612bcb57600080fd5b505afa158015612bdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c039190614ef3565b90506000818311612c145781612c16565b825b90506000896001600160a01b031663bd02d0f5612c358b8b8b8b6130ea565b6040518263ffffffff1660e01b8152600401612c5191906150f4565b60206040518083038186803b158015612c6957600080fd5b505afa158015612c7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ca19190614ef3565b905081158015612caf575080155b15612cc45768327cb2734119d3b7a9601e1b91505b80821115612cdd57612cd6828261158b565b9150612ce2565b600091505b5098975050505050505050565b6000611520838368327cb2734119d3b7a9601e1b6129c3565b6000604051602001612d199061541b565b604051602081830303815290604052805190602001208383604051602001612d4393929190615114565b60405160208183030381529060405280519060200120905092915050565b600080612d6e8585612d08565b90506000876001600160a01b031663d6b6aa4983896040518363ffffffff1660e01b8152600401612da09291906150fd565b60006040518083038186803b158015612db857600080fd5b505afa158015612dcc573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612df49190810190614754565b905060005b8151811015612e3157818181518110612e0e57fe5b6020026020010151851415612e29576001935050505061200a565b600101612df9565b50600098975050505050505050565b6000806000806000612e5288876130fb565b91509150600080600080612e668c8c61321d565b995091955093509150869050600082612e9b57858410612e8f5784995083985060019050612e96565b8699508598505b612ea2565b8699508598505b5050505050505093509350939050565b600080806001600160a01b038516612edc5760405162461bcd60e51b8152600401610384906155ee565b8351602085015160405163052571af60e51b81526000926001600160a01b0389169263a4ae35e092612f12929190600401615184565b60806040518083038186803b158015612f2a57600080fd5b505afa158015612f3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f629190614a5b565b90506000816000015160070b138015612f885750600081602001516001600160401b0316115b8015612fa357506008612fa1826040015160030b6133d3565b145b612fbf5760405162461bcd60e51b81526004016103849061547f565b846040015160030b612fe8826020015160070b836000015160070b61254b90919063ffffffff16565b12156130065760405162461bcd60e51b81526004016103849061553b565b80606001519250806000015160070b935080602001516001600160401b03169150509250925092565b6000604051602001613040906153e6565b6040516020818303038152906040528051906020012084848460405160200161306c9493929190615133565b6040516020818303038152906040528051906020012090509392505050565b600060405160200161309c906153e6565b60405160208183030381529060405280519060200120858585856040516020016130ca959493929190615158565b604051602081830303815290604052805190602001209050949350505050565b600060405160200161309c90615572565b81515160009081906001600160a01b0381166131295760405162461bcd60e51b8152600401610384906153b1565b600080826001600160a01b031663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b15801561316557600080fd5b505afa158015613179573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061319d9190614f2e565b509350509250508093506131c887600001516020015163ffffffff16856115e890919063ffffffff16565b4211156131e75760405162461bcd60e51b815260040161038490615348565b600082136132075760405162461bcd60e51b815260040161038490615311565b61321182876114c7565b94505050509250929050565b60008080806001600160a01b0385166132485760405162461bcd60e51b8152600401610384906155ee565b602080870151805191015160405163052571af60e51b81526001600160a01b0388169263a4ae35e09261327d92600401615184565b60806040518083038186803b15801561329557600080fd5b505afa9250505080156132c5575060408051601f3d908101601f191682019092526132c291810190614a5b565b60015b6132d257600191506133ca565b806060015193506000816000015160070b1380156132fd5750600081602001516001600160401b0316115b801561331057506000816040015160030b125b80156133245750601219816040015160030b135b156133c357613350816040015160120160030b600a0a826000015160070b6114c790919063ffffffff16565b945086602001516040015160030b61337f826020015160070b836000015160070b61254b90919063ffffffff16565b121561338e57600192506133be565b6133bb816040015160120160030b600a0a82602001516001600160401b03166114c790919063ffffffff16565b91505b6133c8565b600192505b505b92959194509250565b6000808212156121c357816000036101d7565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b604051806060016040528061344e613487565b815260200161345b6134a7565b81526020016134686134fa565b905290565b604051806040016040528060008152602001600081525090565b604080516060810182526000808252602082018190529181019190915290565b604051806101400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60408051602081019091526000815290565b80356101da8161591e565b80516101da8161591e565b600082601f830112613532578081fd5b81356020613547613542836158b0565b61588d565b8281528181019085830183850287018401881015613563578586fd5b855b8581101561358a5781356135788161591e565b84529284019290840190600101613565565b5090979650505050505050565b600082601f8301126135a7578081fd5b815160206135b7613542836158b0565b82815281810190858301838502870184018810156135d3578586fd5b855b8581101561358a5781516135e88161591e565b845292840192908401906001016135d5565b600082601f83011261360a578081fd5b8135602061361a613542836158b0565b8281528181019085830183850287018401881015613636578586fd5b855b8581101561358a57813584529284019290840190600101613638565b600082601f830112613664578081fd5b81516020613674613542836158b0565b8281528181019085830183850287018401881015613690578586fd5b855b8581101561358a57815184529284019290840190600101613692565b80516101da81615936565b80516001600160e01b0319811681146101da57600080fd5b600082601f8301126136e1578081fd5b81516136ef613542826158cd565b818152846020838601011115613703578283fd5b61165a8260208301602087016158ee565b80356101da81615944565b80516101da81615944565b80356101da81615951565b80516101da81615951565b8051600381900b81146101da57600080fd5b6000610120808385031215613765578182fd5b61376e8161588d565b91505061377a82613517565b815261378860208301613517565b602082015261379960408301613517565b60408201526137aa60608301613517565b60608201526137bb60808301613517565b60808201526137cc60a08301613517565b60a08201526137dd60c08301613517565b60c082015260e08201516001600160401b03808211156137fc57600080fd5b61380885838601613597565b60e08401526101009150818401518181111561382357600080fd5b61382f86828701613597565b8385015250505092915050565b600061010080838503121561384f578182fd5b6138588161588d565b9150506138648261350c565b81526138726020830161350c565b60208201526138836040830161350c565b60408201526138946060830161350c565b60608201526138a56080830161350c565b60808201526138b660a0830161350c565b60a08201526138c760c0830161350c565b60c082015260e08201356001600160401b038111156138e557600080fd5b6138f184828501613522565b60e08301525092915050565b6000610100808385031215613910578182fd5b6139198161588d565b91505061392582613517565b815261393360208301613517565b602082015261394460408301613517565b604082015261395560608301613517565b606082015261396660808301613517565b608082015261397760a08301613517565b60a082015261398860c08301613517565b60c082015260e08201516001600160401b038111156139a657600080fd5b6138f184828501613597565b600060e082840312156139c3578081fd5b6139cd60e061588d565b90506139d882613517565b81526139e660208301613517565b60208201526139f760408301613517565b6040820152613a0860608301613517565b6060820152613a1960808301613517565b608082015260a08201516001600160401b0380821115613a3857600080fd5b613a4485838601613597565b60a084015260c0840151915080821115613a5d57600080fd5b50613a6a84828501613597565b60c08301525092915050565b600060e08284031215613a87578081fd5b613a9160e061588d565b9050613a9c82613517565b8152613aaa60208301613517565b6020820152613abb60408301613517565b6040820152613acc60608301613517565b6060820152613add60808301613517565b6080820152613aee60a08301613517565b60a082015260c08201516001600160401b03811115613b0c57600080fd5b613a6a84828501613597565b6000610100808385031215613b2b578182fd5b604051908101906001600160401b0382118183101715613b4757fe5b81604052809250835181526020840151602082015260408401516040820152606084015160608201526080840151608082015260a084015160a082015260c084015160c082015260e084015160e0820152505092915050565b600060c08284031215613bb1578081fd5b60405160c081018181106001600160401b0382111715613bcd57fe5b806040525080915082518152602083015160208201526040830151613bf181615936565b80604083015250606083015160608201526080830151608082015260a083015160a08201525092915050565b600060208284031215613c2e578081fd5b604051602081018181106001600160401b0382111715613c4a57fe5b80604052508091508251613c5d81615936565b905292915050565b600060808284031215613c76578081fd5b604051608081018181106001600160401b0382111715613c9257fe5b6040529050808235613ca381615936565b81526020830135613cb381615936565b60208201526040830135613cc681615936565b60408201526060830135613cd981615936565b6060919091015292915050565b600060808284031215613cf7578081fd5b604051608081018181106001600160401b0382111715613d1357fe5b80604052508091508251613d2681615936565b81526020830151613d3681615936565b60208201526040830151613d4981615936565b60408201526060830151613cd981615936565b600060808284031215613d6d578081fd5b604051608081018181106001600160401b0382111715613d8957fe5b6040529050808235613d9a8161591e565b81526020830135613daa8161591e565b60208201526040830135613dbd8161591e565b60408201526060830135613cd98161591e565b600060e08284031215613de1578081fd5b60405160e081018181106001600160401b0382111715613dfd57fe5b8060405250809150825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c08201525092915050565b6000610180808385031215613e5f578182fd5b613e688161588d565b915050613e748261372a565b8152613e8260208301613714565b602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e082015261010080830135818301525061012080830135818301525061014080830135818301525061016080830135818301525092915050565b6000610180808385031215613f0c578182fd5b613f158161588d565b915050613f2182613735565b8152613f2f6020830161371f565b602082015260408201516040820152606082015160608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e082015261010080830151818301525061012080830151818301525061014080830151818301525061016080830151818301525092915050565b6000610140808385031215613fb9578182fd5b613fc28161588d565b915050815181526020820151602082015260408201516040820152606082015160608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e082015261010080830151818301525061012080830151818301525092915050565b60006060828403121561403e578081fd5b604051606081018181106001600160401b038211171561405a57fe5b6040528251815290508061407060208401614529565b602082015261408160408401614529565b60408201525092915050565b60006040828403121561409e578081fd5b604051604081018181106001600160401b03821117156140ba57fe5b806040525080915082516140cd8161591e565b81526140db60208401614529565b60208201525092915050565b6000608082840312156140f8578081fd5b604051608081018181106001600160401b038211171561411457fe5b8060405250809150825181526020830151602082015260408301516040820152606083015160608201525092915050565b60006105408284031215614157578081fd5b61416261022061588d565b905061416e8383614325565b815261014061417f848285016142d1565b60208301526101a06141938582860161425f565b60408401526141a68561026086016140e7565b60608401526141b9856102e086016143ba565b60808401526141cc8561034086016140e7565b60a08401526141df856103c08601614419565b60c084015261040084015160e0840152610420840151610100840152610440840151610120840152610460840151828401526104808401516101608401526104a08401516101808401526104c08401518184015250506104e08201516101c08201526105008201516101e082015261052082015161020082015292915050565b600060c08284031215614270578081fd5b60405160c081018181106001600160401b038211171561428c57fe5b8060405250809150825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201525092915050565b6000606082840312156142e2578081fd5b604051606081018181106001600160401b03821117156142fe57fe5b80604052508091508251815260208301516020820152604083015160408201525092915050565b6000610140808385031215614338578182fd5b6143418161588d565b9150508151815261435460208301613517565b602082015261436560408301613517565b6040820152606082015160608201526080820151608082015260a082015160a082015260c082015160c082015260e082015160e082015261010080830151818301525061012080830151818301525092915050565b6000606082840312156143cb578081fd5b604051606081018181106001600160401b03821117156143e757fe5b806040525080915082516143fa8161591e565b8082525060208301516020820152604083015160408201525092915050565b60006040828403121561442a578081fd5b604051604081018181106001600160401b038211171561444657fe5b604052825181526020928301519281019290925250919050565b60008183036101c0811215614473578182fd5b604051606081016001600160401b03828210818311171561449057fe5b8160405282945060608412156144a557600080fd5b60c08301935081841081851117156144b957fe5b5082604052845192506144cb8361591e565b9182526020840151916144dd8361591e565b826080830152604085015192506144f38361591e565b60a0820183905281526145098560608601613fa6565b602082015261451c856101a08601613c1d565b6040820152505092915050565b805163ffffffff811681146101da57600080fd5b80516001600160501b03811681146101da57600080fd5b600060208284031215614565578081fd5b81356115208161591e565b600060208284031215614581578081fd5b81516115208161591e565b600080600080608085870312156145a1578283fd5b84356145ac8161591e565b935060208501356145bc8161591e565b925060408501356145cc8161591e565b915060608501356001600160401b038111156145e6578182fd5b8501601f810187136145f6578182fd5b8035614604613542826158cd565b818152886020838501011115614618578384fd5b81602084016020830137908101602001929092525092959194509250565b6000806000806080858703121561464b578182fd5b84516001600160401b0380821115614661578384fd5b61466d88838901613597565b95506020870151915080821115614682578384fd5b61468e88838901613597565b945060408701519150808211156146a3578384fd5b506146b087828801613654565b92505060608501516146c18161591e565b939692955090935050565b600060208083850312156146de578182fd5b82516001600160401b038111156146f3578283fd5b8301601f81018513614703578283fd5b8051614711613542826158b0565b81815283810190838501865b84811015614746576147348a8884518901016136d1565b8452928601929086019060010161471d565b509098975050505050505050565b600060208284031215614765578081fd5b81516001600160401b0381111561477a578182fd5b61165a84828501613654565b600060208284031215614797578081fd5b815161152081615936565b6000602082840312156147b3578081fd5b611520826136b9565b60008060008084860360a08112156147d2578283fd5b6147db866136b9565b945060208601516001600160401b03808211156147f6578485fd5b61480289838a016136d1565b9550604088015191506148148261591e565b8194506040605f1984011215614828578384fd5b6040519250604083019150828210818311171561484157fe5b5060405260608601516148538161591e565b815260808601516148638161591e565b6020820152939692955090935050565b600080600060608486031215614887578081fd5b83516001600160401b038082111561489d578283fd5b6148a9878388016136d1565b94506020860151935060408601519150808211156148c5578283fd5b9085019061020082880312156148d9578283fd5b6101206148e58161588d565b8351838111156148f3578586fd5b6148ff8a828701613a76565b82525061490f8960208601613b18565b602082015261491f828501613735565b6040820152614931610140850161371f565b606082015261494361016085016136ae565b608082015261495561018085016136ae565b60a08201526149676101a085016136ae565b60c08201526101c084015160e08201526101e084015191508282111561498b578485fd5b61499789838601613654565b610100820152809450505050509250925092565b600061084082840312156149bd578081fd5b60405160e081018181106001600160401b03821117156149d957fe5b604052825181526149ed8460208501614460565b6020820152614a00846101e08501614145565b6040820152614a13846107208501613ba0565b60608201526107e0830151608082015261080083015160a08201526108209092015160c083015250919050565b600060408284031215614a51578081fd5b6115208383614419565b600060808284031215614a6c578081fd5b604051608081016001600160401b038282108183111715614a8957fe5b81604052845191508160070b8214614a9f578384fd5b9082526020840151908082168214614ab5578384fd5b506020820152614ac760408401613740565b6040820152606083015160608201528091505092915050565b600060208284031215614af1578081fd5b81516001600160401b0380821115614b07578283fd5b908301906101408286031215614b1b578283fd5b604051608081018181108382111715614b3057fe5b604052825182811115614b41578485fd5b614b4d87828601613752565b825250614b5d8660208501613dd0565b6020820152614b70866101008501613c1d565b604082015261012083015182811115614b87578485fd5b614b9387828601613654565b60608301525095945050505050565b600060808284031215614bb3578081fd5b604051608081018181106001600160401b0382111715614bcf57fe5b6040528251614bdd8161591e565b81526020830151614bed8161591e565b60208201526040830151614c008161591e565b60408201526060830151614c138161591e565b60608201529392505050565b600060208284031215614c30578081fd5b81516001600160401b0380821115614c46578283fd5b908301906102408286031215614c5a578283fd5b604051608081018181108382111715614c6f57fe5b604052825182811115614c80578485fd5b614c8c878286016138fd565b825250614c9c8660208501613ef9565b6020820152614caf866101a08501613ce6565b604082015261022083015182811115614b87578485fd5b600080600060c08486031215614cda578081fd5b83356001600160401b0380821115614cf0578283fd5b908501906102408288031215614d04578283fd5b604051608081018181108382111715614d1957fe5b604052823582811115614d2a578485fd5b614d368982860161383c565b825250614d468860208501613e4c565b6020820152614d59886101a08501613c65565b604082015261022083013582811115614d70578485fd5b614d7c898286016135fa565b606083015250809550505050614d958560208601613d5c565b9150614da360a0850161350c565b90509250925092565b60006101c08284031215614dbe578081fd5b6115208383614460565b600060208284031215614dd9578081fd5b81516001600160401b0380821115614def578283fd5b908301906101408286031215614e03578283fd5b604051608081018181108382111715614e1857fe5b604052825182811115614e29578485fd5b614b4d878286016139b2565b60006101208284031215614e47578081fd5b60405160c081018181106001600160401b0382111715614e6357fe5b6040528251614e718161591e565b8152602083810151908201526040830151614e8b81615944565b6040820152614e9d846060850161408d565b6060820152614eae60a08401613517565b6080820152614ec08460c0850161402d565b60a08201529392505050565b600060208284031215614edd578081fd5b81516001600160801b0381168114611520578182fd5b600060208284031215614f04578081fd5b5051919050565b60008060408385031215614f1d578182fd5b505080516020909101519092909150565b600080600080600060a08688031215614f45578283fd5b614f4e8661453d565b9450602086015193506040860151925060608601519150614f716080870161453d565b90509295509295909350565b600060208284031215614f8e578081fd5b815160ff81168114611520578182fd5b6001600160a01b03169052565b15159052565b60008151808452614fc98160208601602086016158ee565b601f01601f19169290920160200192915050565b80516001600160a01b03908116835260208083015182169084015260408083015182169084015260609182015116910152565b80518252602090810151910152565b6001600160a01b0391909116815260200190565b6001600160a01b0384811682528316602082015260606040820181905260009061200a90830184614fb1565b6001600160a01b039485168152602081019390935292166040820152606081019190915260800190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156150dc57603f198886030184526150ca858351614fb1565b945092850192908501906001016150ae565b5092979650505050505050565b901515815260200190565b90815260200190565b9182526001600160a01b0316602082015260400190565b9283526001600160a01b03918216602084015216604082015260600190565b9384526001600160a01b03928316602085015291166040830152606082015260800190565b9485526001600160a01b0393841660208601529183166040850152606084015216608082015260a00190565b91825263ffffffff16602082015260400190565b6000602082526115206020830184614fb1565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b038881168252878116602083015260408201879052855161018083019190615211906060850190615010565b602087015161522360a0850182615010565b50604087015161523660e0850182615010565b50856101208401528085166101408401525082151561016083015298975050505050505050565b6020808252601690820152751bdb9b1e481bdb99481bdc99195c88185b1b1bddd95960521b604082015260600190565b60208082526013908201527219985a5b1959081d1bc819d95d08185cdcd95d606a1b604082015260600190565b6020808252600d908201526c1a5b9d985b1a5908185cdcd95d609a1b604082015260600190565b6020808252601690820152751b1bddc818d85b1b189858dac819d85cc81b1a5b5a5d60521b604082015260600190565b6020808252601f908201527f4f6e636861696e206f7261636c6520707269636520697320696e76616c696400604082015260600190565b6020808252601d908201527f4f6e636861696e206f7261636c65207072696365206973207374616c65000000604082015260600190565b6020808252601890820152771bdb9b1e481bdb994819195c1bdcda5d08185b1b1bddd95960421b604082015260600190565b6020808252601b908201527a4f6e636861696e206f7261636c65207a65726f206164647265737360281b604082015260600190565b6020808252601b908201527a21a620a4a6a0a12622afa1a7a62620aa22a920a62fa320a1aa27a960291b604082015260600190565b6020808252601b908201527a10d31052535050931157d0d3d31310551154905317d05353d55395602a1b604082015260600190565b6020808252601590820152741b585e081b195d995c9859d948195e18d959591959605a1b604082015260600190565b602080825260189082015277496e76616c69642050797468206f7261636c65206461746160401b604082015260600190565b60208082526016908201527513d99998da185a5b881c1c9a58d9481a5b9d985b1a5960521b604082015260600190565b6020808252600d908201526c6869676820736c69707061676560981b604082015260600190565b60208082526019908201527810d3105253515117d0d3d31310551154905317d05353d55395603a1b604082015260600190565b6020808252601d908201527f5079746820707269636520636f6e666964656e636520746f6f206c6f77000000604082015260600190565b60208082526025908201527f434c41494d41424c455f434f4c4c41544552414c5f524544554354494f4e5f4660408201526420a1aa27a960d91b606082015260800190565b6020808252601d908201527f696e76616c696420636f6c6c61746572616c44656c7461416d6f756e74000000604082015260600190565b6020808252601c908201527b4f6666636861696e206f7261636c65207a65726f206164647265737360201b604082015260600190565b6020808252600e908201526d6e6f7420706f6f6c206c6f67696360901b604082015260600190565b6020808252601390820152720d2dcecc2d8d2c840e0e4d2c6ca9ad2dc9ac2f606b1b604082015260600190565b6020808252601b908201527a1bdb9b1e481bdb99481dda5d1a191c985dd85b08185b1b1bddd959602a1b604082015260600190565b60208082526017908201527634b73b30b634b21031b630b4b6b0b13632a330b1ba37b960491b604082015260600190565b60006101a08201905060018060a01b03808751168352806020880151166020840152806040880151166040840152806060880151166060840152506080860151608083015260a086015160a083015260c086015160c083015261574560e0830186614fdd565b615753610160830185614fab565b8261018083015295945050505050565b60e080825285516001600160a01b039081169183019190915260208087015160a061010085015280516101808501819052600093918301929084906101a08701905b808310156157c7578551851682529483019460019290920191908301906157a5565b5060408b015194506157dd610120880186614f9e565b60608b015161014088015260808b01516101608801529450615803905081860189614fdd565b50505061581360a0830185614fab565b8260c083015295945050505050565b85516001600160a01b03908116825260208088015190911690820152604080870151908201526060808701519082015260808087015190820152610180810161586e60a0830187614fdd565b9315156101208201526101408101929092526101609091015292915050565b6040518181016001600160401b03811182821017156158a857fe5b604052919050565b60006001600160401b038211156158c357fe5b5060209081020190565b60006001600160401b038211156158e057fe5b50601f01601f191660200190565b60005b838110156159095781810151838201526020016158f1565b83811115615918576000848401525b50505050565b6001600160a01b038116811461593357600080fd5b50565b801515811461593357600080fd5b6003811061593357600080fd5b6009811061593357600080fdfe53616665436173743a2076616c756520646f65736e27742066697420696e2031323820626974735369676e6564536166654d6174683a206164646974696f6e206f766572666c6f775369676e6564536166654d6174683a206469766973696f6e206f766572666c6f77536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775369676e6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7753616665436173743a2076616c756520646f65736e27742066697420696e20616e20696e74323536a26469706673582212204340972ea6a2c44b843bbd02aba6b12645f71d5953991cb7cc05df4e2bbece9364736f6c63430007060033