avantis-trader-sdk 0.7.0__py3-none-any.whl → 0.8.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeTradeMarketCallback","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"spreadP","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"correctSl","inputs":[{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"correctTp","inputs":[{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"executeLimitCloseOrderCallback","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"spreadP","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeLimitOpenOrderCallback","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"spreadP","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[{"name":"_storageT","type":"address","internalType":"address"},{"name":"_pairInfos","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"liqFeeP","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"liqTotalFeeP","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"openTradeMarketCallback","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"spreadP","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pairInfos","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPairInfos"}],"stateMutability":"view"},{"type":"function","name":"setFeeP","inputs":[{"name":"_liqFeeP","type":"uint256","internalType":"uint256"},{"name":"_liqTotalFeeP","type":"uint256","internalType":"uint256"},{"name":"_vaultFeeP","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"storageT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ITradingStorage"}],"stateMutability":"view"},{"type":"function","name":"transferFromVault","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateMarginCallback","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"spreadP","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateSlCallback","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"spreadP","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vaultFeeP","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withinExposureLimits","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_leveragedPos","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"AddressUpdated","inputs":[{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"a","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Done","inputs":[{"name":"done","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"FeeUpdated","inputs":[{"name":"_vaultFeeP","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_liqFeeP","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_liqTotalFeeP","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"LimitExecuted","inputs":[{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"limitIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"t","type":"tuple","indexed":false,"internalType":"struct ITradingStorage.Trade","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"initialPosToken","type":"uint256","internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]},{"name":"orderType","type":"uint8","indexed":false,"internalType":"enum ITradingStorage.LimitOrder"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"percentProfit","type":"int256","indexed":false,"internalType":"int256"},{"name":"usdcSentToTrader","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MarginUpdated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newSl","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MarketExecuted","inputs":[{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"t","type":"tuple","indexed":false,"internalType":"struct ITradingStorage.Trade","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"initialPosToken","type":"uint256","internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]},{"name":"open","type":"bool","indexed":false,"internalType":"bool"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"percentProfit","type":"int256","indexed":false,"internalType":"int256"},{"name":"usdcSentToTrader","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MarketOpenCanceled","inputs":[{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Pause","inputs":[{"name":"paused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SlUpdated","inputs":[{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newSl","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615f0c80620000f36000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063857c3f1e116100a2578063c4493e3711610071578063c4493e3714610223578063da0870e71461022c578063da8ddc741461023f578063edd67fbe14610252578063fa7227e91461026557600080fd5b8063857c3f1e146101d7578063aee2e443146101ea578063b2250471146101fd578063b5edf9541461021057600080fd5b8063485cc955116100de578063485cc955146101815780636819edf31461019457806369d017d5146101b757806374cbe6ee146101ce57600080fd5b80631346b0ff1461011057806316fff07414610140578063203efa581461015957806345ac0f9a1461016e575b600080fd5b600154610123906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b600054610123906201000090046001600160a01b031681565b61016c610167366004615985565b610278565b005b61016c61017c366004615985565b610ca4565b61016c61018f3660046154ab565b610d7e565b6101a76101a2366004615510565b610ed9565b6040519015158152602001610137565b6101c060035481565b604051908152602001610137565b6101c060025481565b61016c6101e5366004615985565b611419565b6101c06101f83660046159b1565b611f91565b61016c61020b366004615985565b612025565b6101c061021e3660046159b1565b612dc4565b6101c060045481565b61016c61023a366004615985565b612e37565b61016c61024d3660046154e4565b6131fb565b61016c610260366004615985565b613431565b61016c610273366004615985565b613b04565b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b1580156102c657600080fd5b505afa1580156102da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102fe9190615487565b6001600160a01b0316336001600160a01b0316146103375760405162461bcd60e51b815260040161032e90615ae6565b60405180910390fd5b60008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561038657600080fd5b505afa15801561039a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103be9190615487565b6040516368fb329760e11b8152600481018690529091506000906001600160a01b0383169063d1f6652e906024016101006040518083038186803b15801561040557600080fd5b505afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d91906156b2565b600080548251602084015160408086015190516351d407ff60e11b81529596509394620100009093046001600160a01b03169363a3a80ffe9361048593929190600401615ac5565b6101606040518083038186803b15801561049e57600080fd5b505afa1580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d691906158fd565b90508415610934576000826060015160018111156104f6576104f6615e9a565b141561066d57600054815160808401516040516345c19a8d60e11b81526001600160a01b0392831660048201526201000090930490911660248301819052604483019190915290638b83351a90606401600060405180830381600087803b15801561056057600080fd5b505af1158015610574573d6000803e3d6000fd5b50505050600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b1580156105c657600080fd5b505afa1580156105da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fe9190615487565b81516080840151604051635a65ca9160e01b81526001600160a01b0392831660048201526024810191909152911690635a65ca9190604401600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b50505050610934565b60006106878260a00151878460c001518560e00151614116565b9050600060646402540be4008385606001516106a39190615d57565b6106ad9190615d15565b6106b79190615d15565b905060008112156107d6576064856001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156106fd57600080fd5b505afa158015610711573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107359190615487565b602085015160a0870151604051632b1cbe9d60e01b8152600481019290925260248201526001600160a01b039190911690632b1cbe9d9060440160206040518083038186803b15801561078757600080fd5b505afa15801561079b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bf919061591a565b6107c99083615d57565b6107d39190615d15565b90505b60646107e3605082615e3a565b84606001516107f29190615d57565b6107fc9190615d15565b81846060015161080c9190615cbc565b136108415760405162461bcd60e51b81526020600482015260056024820152642bafaa2fa160d91b604482015260640161032e565b5050600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b15801561089157600080fd5b505afa1580156108a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c99190615487565b8151608084015160405163352b159160e11b81526001600160a01b0392831660048201526024810191909152911690636a562b2290604401600060405180830381600087803b15801561091b57600080fd5b505af115801561092f573d6000803e3d6000fd5b505050505b60c082015115610bbe57600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b15801561098c57600080fd5b505afa1580156109a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c49190615487565b60c0830151604051635b898b7560e01b81526004810191909152600060248201526001600160a01b039190911690635b898b7590604401600060405180830381600087803b158015610a1557600080fd5b505af1158015610a29573d6000803e3d6000fd5b50505050600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015610a7b57600080fd5b505afa158015610a8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab39190615487565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015610aeb57600080fd5b505afa158015610aff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b239190615487565b6001600160a01b0316634ffe8aec8260200151610b518560e001518660c001516141bc90919063ffffffff16565b60c08501516040516001600160e01b031960e086901b168152600481019390935260248301919091521515604482015260006064820152608401600060405180830381600087803b158015610ba557600080fd5b505af1158015610bb9573d6000803e3d6000fd5b505050505b6001548151602083015160408085015160c08601519151630735e1cd60e11b81526001600160a01b0394851660048201526024810193909352604483015215156064820152911690630e6bc39a90608401600060405180830381600087803b158015610c2957600080fd5b505af1158015610c3d573d6000803e3d6000fd5b505060405163c61904a160e01b8152600481018990526001600160a01b038616925063c61904a191506024015b600060405180830381600087803b158015610c8457600080fd5b505af1158015610c98573d6000803e3d6000fd5b50505050505050505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015610cf257600080fd5b505afa158015610d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2a9190615487565b6001600160a01b0316336001600160a01b031614610d705760405162461bcd60e51b8152602060048201526003602482015262475f4f60e81b604482015260640161032e565b600292909255600355600455565b600054610100900460ff1615808015610d9e5750600054600160ff909116105b80610db85750303b158015610db8575060005460ff166001145b610e1b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161032e565b6000805460ff191660011790558015610e3e576000805461ff0019166101001790555b6000805462010000600160b01b031916620100006001600160a01b038681169190910291909117909155600180546001600160a01b03191691841691909117905560146004556005600255600a6003558015610ed4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b600080600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2a57600080fd5b505afa158015610f3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f629190615487565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015610f9a57600080fd5b505afa158015610fae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd29190615487565b9050600060029054906101000a90046001600160a01b03166001600160a01b031663dc6638f46040518163ffffffff1660e01b815260040160206040518083038186803b15801561102257600080fd5b505afa158015611036573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105a919061591a565b83600060029054906101000a90046001600160a01b03166001600160a01b031663443295dc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110a957600080fd5b505afa1580156110bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e1919061591a565b6110eb9190615cfd565b111580156111f3575060405163232683a960e21b8152600481018590526001600160a01b03821690638c9a0ea49060240160206040518083038186803b15801561113457600080fd5b505afa158015611148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116c919061591a565b604051635e4f8f5960e01b81526004810186905284906001600160a01b03841690635e4f8f599060240160206040518083038186803b1580156111ae57600080fd5b505afa1580156111c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e6919061591a565b6111f09190615cfd565b11155b80156113015750604051635970d96b60e11b8152600481018590526001600160a01b0382169063b2e1b2d69060240160206040518083038186803b15801561123a57600080fd5b505afa15801561124e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611272919061591a565b6000546040516378b4a14960e11b81526004810187905285916201000090046001600160a01b03169063f16942929060240160206040518083038186803b1580156112bc57600080fd5b505afa1580156112d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f4919061591a565b6112fe9190615cfd565b11155b801561141057506040516315b954db60e21b8152600481018590526001600160a01b038216906356e5536c9060240160206040518083038186803b15801561134857600080fd5b505afa15801561135c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611380919061591a565b600054604051635c3e58ed60e11b81526001600160a01b0388811660048301528692620100009004169063b87cb1da9060240160206040518083038186803b1580156113cb57600080fd5b505afa1580156113df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611403919061591a565b61140d9190615cfd565b11155b95945050505050565b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561146757600080fd5b505afa15801561147b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149f9190615487565b6001600160a01b0316336001600160a01b0316146114cf5760405162461bcd60e51b815260040161032e90615ae6565b6000805460405163363df41d60e11b815260048101869052620100009091046001600160a01b031690636c7be83a9060240160806040518083038186803b15801561151957600080fd5b505afa15801561152d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611551919061562b565b905060008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b1580156115a257600080fd5b505afa1580156115b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115da9190615487565b6001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b15801561161257600080fd5b505afa158015611626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164a9190615487565b905083158015906116e95750600054825160208401516040808601519051636e6f99cd60e11b8152620100009094046001600160a01b03169363dcdf339a936116999390929091600401615ac5565b60206040518083038186803b1580156116b157600080fd5b505afa1580156116c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e99190615545565b15611e7e5760008054835160208501516040808701519051632e21e28b60e21b8152620100009094046001600160a01b03169363b8878a2c936117329390929091600401615ac5565b6101806040518083038186803b15801561174b57600080fd5b505afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190615583565b90506000826001600160a01b031663d4de65ea8560000151866020015187604001516040518463ffffffff1660e01b81526004016117c393929190615ac5565b60206040518083038186803b1580156117db57600080fd5b505afa1580156117ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118139190615562565b905060008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561186457600080fd5b505afa158015611878573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189c9190615487565b905060018260028111156118b2576118b2615e9a565b146118dc5782608001516118ce578261010001518710156118fd565b8261010001518711156118fd565b82608001516118f3578261010001518711156118fd565b8261010001518710155b801561192c575061192c836000015184602001516101a28660a0015187606001516141bc90919063ffffffff16565b15611e7a5760008790506002826001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561197157600080fd5b505afa158015611985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a99190615487565b6001600160a01b0316633c44d0a386602001516040518263ffffffff1660e01b81526004016119da91815260200190565b60206040518083038186803b1580156119f257600080fd5b505afa158015611a06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2a919061591a565b1015611af6576001546020850151608086015160a087015160608801516000946001600160a01b031693637ea95f32938e9391929091611a6a91906141bc565b6040516001600160e01b031960e087901b1681526004810194909452602484019290925215156044830152606482015260840160206040518083038186803b158015611ab557600080fd5b505afa158015611ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aed919061591a565b9850611b089050565b611b05888886608001516141e1565b97505b60006402540be4006064866101200151876101000151611b289190615ddc565b611b329190615d43565b611b3c9190615d43565b90508460800151611b5f5780856101000151611b589190615e3a565b8910611b73565b80856101000151611b709190615cfd565b89115b611e77576000611bf760405180610160016040528088600001516001600160a01b03168152602001886020015181526020016000815260200160008152602001886060015181526020018c81526020018860800151151581526020018860a0015181526020018860c0015181526020018860e001518152602001600081525061422a565b61016087015190915015611da95760005460408051632292b7c960e21b81529051620100009092046001600160a01b031691638b83351a9183918291638a4adf24916004808301926020929190829003018186803b158015611c5857600080fd5b505afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c909190615487565b6101608a01516040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015611ce557600080fd5b505af1158015611cf9573d6000803e3d6000fd5b50505050866001600160a01b031663afc329ac604051806080016040528089600001516001600160a01b031681526020018960200151815260200189604001518152602001600380811115611d5057611d50615e9a565b8152508861016001516040518363ffffffff1660e01b8152600401611d76929190615ba1565b600060405180830381600087803b158015611d9057600080fd5b505af1158015611da4573d6000803e3d6000fd5b505050505b600054865160208801516040808a0151905163b4b0f56760e01b8152620100009094046001600160a01b03169363b4b0f56793611dec9390929091600401615ac5565b600060405180830381600087803b158015611e0657600080fd5b505af1158015611e1a573d6000803e3d6000fd5b505050507fa8f1c330dfd645b9efba2033f04003aa1793208fa11fa288d7cedacb5102d3128b89604001518360038560a0015186606001518c61010001518a604051611e6d989796959493929190615bff565b60405180910390a1505b50505b5050505b806001600160a01b031663bf654d2b604051806080016040528085600001516001600160a01b03168152602001856020015181526020018560400151815260200185606001516003811115611ed557611ed5615e9a565b8152506040518263ffffffff1660e01b8152600401611ef49190615b93565b600060405180830381600087803b158015611f0e57600080fd5b505af1158015611f22573d6000803e3d6000fd5b5050600054604051637ada848360e01b815260048101899052620100009091046001600160a01b03169250637ada848391506024015b600060405180830381600087803b158015611f7257600080fd5b505af1158015611f86573d6000803e3d6000fd5b505050505050505050565b6000821580611fba5750611fac6402540be4006101f4615d57565b611fb886858588614116565b145b1561201a5760006064611fd986611fd36101f48a615ddc565b906149c9565b611fe39190615d43565b9050826120085785811115611ff9576000612012565b6120038187615e3a565b612012565b6120128187615cfd565b91505061201d565b50815b949350505050565b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561207357600080fd5b505afa158015612087573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ab9190615487565b6001600160a01b0316336001600160a01b0316146120db5760405162461bcd60e51b815260040161032e90615ae6565b6000805460405163363df41d60e11b815260048101869052620100009091046001600160a01b031690636c7be83a9060240160806040518083038186803b15801561212557600080fd5b505afa158015612139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215d919061562b565b600080548251602084015160408086015190516351d407ff60e11b81529596509394620100009093046001600160a01b03169363a3a80ffe936121a593929190600401615ac5565b6101606040518083038186803b1580156121be57600080fd5b505afa1580156121d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f691906158fd565b905060008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561224757600080fd5b505afa15801561225b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227f9190615487565b90506000816001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b1580156122bc57600080fd5b505afa1580156122d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f49190615487565b90508515801590612309575060008360e00151115b15612cb05760008054845160208601516040808801519051638c8ff1d560e01b8152620100009094046001600160a01b031693638c8ff1d5936123529390929091600401615ac5565b60a06040518083038186803b15801561236a57600080fd5b505afa15801561237e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a29190615877565b90506000836001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156123df57600080fd5b505afa1580156123f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124179190615487565b6001600160a01b03166324abd3fb86602001516040518263ffffffff1660e01b815260040161244891815260200190565b60206040518083038186803b15801561246057600080fd5b505afa158015612474573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124989190615545565b6124a25787612537565b6000866060015160038111156124ba576124ba615e9a565b14612530576001866060015160038111156124d7576124d7615e9a565b146124e25787612537565b8460c0015180156124fb57508460a00151856101200151115b8061251b57508460c0015115801561251b57508460a00151856101200151105b61252a57846101200151612537565b87612537565b8461010001515b905060006125538660a00151838860c001518960e00151614116565b9050600060028860600151600381111561256f5761256f615e9a565b141561268957600154875160208901516040808b015160a08c015160c08d015160608e015160e08f01519451636bc84d5960e01b81526001600160a01b0397881660048201526024810196909652604486019390935260648501919091521515608484015260a483015260c48201526000929190911690636bc84d599060e40160206040518083038186803b15801561260757600080fd5b505afa15801561261b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263f919061591a565b90508760c0015161265357808b1015612658565b808b11155b612663576000612681565b606460025489606001516126779190615ddc565b6126819190615d43565b91505061285e565b6000886060015160038111156126a1576126a1615e9a565b1480156126b357506000876101000151115b80156126db57508660c001516126d1578661010001518a11156126db565b8661010001518a10155b8061273357506001886060015160038111156126f9576126f9615e9a565b14801561270b57506000876101200151115b801561273357508660c00151612729578661012001518a1015612733565b8661012001518a11155b61273e57600061285b565b6402540be4006064876001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561277f57600080fd5b505afa158015612793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b79190615487565b6001600160a01b031663649a64888a602001516040518263ffffffff1660e01b81526004016127e891815260200190565b60206040518083038186803b15801561280057600080fd5b505afa158015612814573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612838919061591a565b89606001516128479190615ddc565b6128519190615d43565b61285b9190615d43565b90505b60028860600151600381111561287657612876615e9a565b1480156128835750600081115b156129c15760006128c688848a60600151856002546002546003546128a89190615e3a565b6128b29089615ddc565b6128bc9190615d43565b8a608001516149db565b9050856001600160a01b031663afc329ac60405180608001604052808c600001516001600160a01b031681526020018c6020015181526020018c6040015181526020018c60600151600381111561291f5761291f615e9a565b815250846040518363ffffffff1660e01b8152600401612940929190615ba1565b600060405180830381600087803b15801561295a57600080fd5b505af115801561296e573d6000803e3d6000fd5b505050507fa8f1c330dfd645b9efba2033f04003aa1793208fa11fa288d7cedacb5102d3128c8c8a8c60600151888d6060015189886040516129b7989796959493929190615bff565b60405180910390a1505b6002886060015160038111156129d9576129d9615e9a565b141580156129e75750600081115b15612cab576298968081116129fc5780612a01565b629896805b9050600060646402540be400848a60600151612a1d9190615d57565b612a279190615d15565b612a319190615d15565b905060008082128015612a5257506060890151612a5083600019615d57565b135b612b7557876001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015612a8f57600080fd5b505afa158015612aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac79190615487565b6001600160a01b031663836a341a8a602001516040518263ffffffff1660e01b8152600401612af891815260200190565b60206040518083038186803b158015612b1057600080fd5b505afa158015612b24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b48919061591a565b612b668a60e00151848c60600151612b609190615cbc565b906141bc565b612b709190615ddc565b612b78565b60005b90506000612bae8a868c60600151876402540be400606488612b9a9190615d43565b612ba49190615d43565b8c608001516149db565b9050876001600160a01b031663afc329ac60405180608001604052808e600001516001600160a01b031681526020018e6020015181526020018e6040015181526020018e606001516003811115612c0757612c07615e9a565b815250866040518363ffffffff1660e01b8152600401612c28929190615ba1565b600060405180830381600087803b158015612c4257600080fd5b505af1158015612c56573d6000803e3d6000fd5b505050507fa8f1c330dfd645b9efba2033f04003aa1793208fa11fa288d7cedacb5102d3128e8e8c8e606001518a8f606001518b88604051612c9f989796959493929190615bff565b60405180910390a15050505b505050505b806001600160a01b031663bf654d2b604051806080016040528087600001516001600160a01b03168152602001876020015181526020018760400151815260200187606001516003811115612d0757612d07615e9a565b8152506040518263ffffffff1660e01b8152600401612d269190615b93565b600060405180830381600087803b158015612d4057600080fd5b505af1158015612d54573d6000803e3d6000fd5b5050600054604051637ada848360e01b8152600481018b9052620100009091046001600160a01b03169250637ada84839150602401600060405180830381600087803b158015612da357600080fd5b505af1158015612db7573d6000803e3d6000fd5b5050505050505050505050565b60008083118015612dfa5750612de06402540be4006050615d57565b612dec90600019615d57565b612df886858588614116565b125b1561201a5760006064612e1286611fd360508a615ddc565b612e1c9190615d43565b905082612e2d576120038187615cfd565b6120128187615e3a565b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015612e8557600080fd5b505afa158015612e99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebd9190615487565b6001600160a01b0316336001600160a01b031614612eed5760405162461bcd60e51b815260040161032e90615ae6565b60008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015612f3c57600080fd5b505afa158015612f50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f749190615487565b6040516337a3dba360e01b8152600481018690529091506000906001600160a01b038316906337a3dba39060240160c06040518083038186803b158015612fba57600080fd5b505afa158015612fce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff291906157de565b600080548251602084015160408086015190516351d407ff60e11b81529596509394620100009093046001600160a01b03169363a3a80ffe9361303a93929190600401615ac5565b6101606040518083038186803b15801561305357600080fd5b505afa158015613067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308b91906158fd565b905084158015906130a75750816080015115158160c001511515145b80156130ba575081606001518160a00151145b80156130e057508060c001516130d757848260a0015110156130e0565b848260a0015111155b156131ce576000548251602084015160408086015160a0870151915163a354418160e01b81526001600160a01b03948516600482015260248101939093526044830152606482015262010000909204169063a354418190608401600060405180830381600087803b15801561315457600080fd5b505af1158015613168573d6000803e3d6000fd5b5050835160208086015160408088015160a089015182518e8152948501939093529083015260608201526001600160a01b0390911692507fe57d6aa2ba102529f6f4f17498f4a95f866a5513e746e676e6cd037c991b6fe9915060800160405180910390a25b6040516361417a4360e01b8152600481018790526001600160a01b038416906361417a4390602401610c6a565b6000811180156133115750600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561325457600080fd5b505afa158015613268573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061328c9190615487565b6001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b1580156132c457600080fd5b505afa1580156132d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132fc9190615487565b6001600160a01b0316336001600160a01b0316145b6133435760405162461bcd60e51b8152602060048201526003602482015262455f4f60e81b604482015260640161032e565b600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b15801561339157600080fd5b505afa1580156133a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133c99190615487565b60405163352b159160e11b81526001600160a01b038481166004830152602482018490529190911690636a562b2290604401600060405180830381600087803b15801561341557600080fd5b505af1158015613429573d6000803e3d6000fd5b505050505050565b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561347f57600080fd5b505afa158015613493573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134b79190615487565b6001600160a01b0316336001600160a01b0316146134e75760405162461bcd60e51b815260040161032e90615ae6565b6000805460405163d5dabd7560e01b815260048101869052620100009091046001600160a01b03169063d5dabd75906024016101c06040518083038186803b15801561353257600080fd5b505afa158015613546573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061356a9190615763565b905080602001516000141561357f5750505050565b8051516001600160a01b03166135cb5760405162461bcd60e51b815260206004820152601160248201527024a72b2fa822a72224a723afa7a92222a960791b604482015260640161032e565b60008160000151905060008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561362357600080fd5b505afa158015613637573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061365b9190615487565b90506000816001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561369857600080fd5b505afa1580156136ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136d09190615487565b90506002816001600160a01b0316633c44d0a385602001516040518263ffffffff1660e01b815260040161370691815260200190565b60206040518083038186803b15801561371e57600080fd5b505afa158015613732573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613756919061591a565b101561382457600154602084015160c085015160e086015160808701516000946001600160a01b031693637ea95f32938c939192909161379691906141bc565b6040516001600160e01b031960e087901b1681526004810194909452602484019290925215156044830152606482015260840160206040518083038186803b1580156137e157600080fd5b505afa1580156137f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613819919061591a565b60a085015250613839565b61383386868560c001516141e1565b60a08401525b60006402540be4006064866060015187604001516138579190615ddc565b6138619190615d43565b61386b9190615d43565b90508615806138b057508360c001516138995780856040015161388e9190615e3a565b8460a00151106138b0565b8085604001516138a99190615cfd565b8460a00151115b806138ef575060008461010001511180156138ef57508360c001516138e1578361010001518460a0015111156138ef565b8361010001518460a0015110155b8061392e5750600084610120015111801561392e57508360c00151613920578361012001518460a00151101561392e565b8361012001518460a0015111155b8061395e575061395c846000015185602001516101a28760e0015188608001516141bc90919063ffffffff16565b155b15613a3457600054845160808601516040516345c19a8d60e11b8152620100009093046001600160a01b039081166004850181905292166024840152604483015290638b83351a90606401600060405180830381600087803b1580156139c357600080fd5b505af11580156139d7573d6000803e3d6000fd5b5050505083600001516001600160a01b03167f4b2ef4d80a0964a9a8f43256d8111558389b384d2029743c1eeb6950b14d9c65898660200151604051613a27929190918252602082015260400190565b60405180910390a2613a90565b6000613a3f8561422a565b90507fdbe34a0ae1c9c65460a7efc44af9aadd9b07a8b3e112ee70a71eeeba287b2d62898260018460a001518560600151600080604051613a869796959493929190615bbc565b60405180910390a1505b600054604051630195728b60e71b8152600481018a905260016024820152620100009091046001600160a01b03169063cab9458090604401600060405180830381600087803b158015613ae257600080fd5b505af1158015613af6573d6000803e3d6000fd5b505050505050505050505050565b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015613b5257600080fd5b505afa158015613b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b8a9190615487565b6001600160a01b0316336001600160a01b031614613bba5760405162461bcd60e51b815260040161032e90615ae6565b6000805460405163d5dabd7560e01b815260048101869052620100009091046001600160a01b03169063d5dabd75906024016101c06040518083038186803b158015613c0557600080fd5b505afa158015613c19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c3d9190615763565b6000805482518051602082015160409283015192516351d407ff60e11b81529596509394620100009093046001600160a01b03169363a3a80ffe93613c859390600401615ac5565b6101606040518083038186803b158015613c9e57600080fd5b505afa158015613cb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cd691906158fd565b8251519091506001600160a01b0316613d255760405162461bcd60e51b815260206004820152601160248201527024a72b2fa822a72224a723afa7a92222a960791b604482015260640161032e565b8315801590613d38575060008160e00151115b156140835760008054825160208401516040808601519051638c8ff1d560e01b8152620100009094046001600160a01b031693638c8ff1d593613d819390929091600401615ac5565b60a06040518083038186803b158015613d9957600080fd5b505afa158015613dad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dd19190615877565b905060008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015613e2257600080fd5b505afa158015613e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e5a9190615487565b90506000613e768460a00151888660c001518760e00151614116565b9050600060646402540be40083886000015160600151613e969190615d57565b613ea09190615d15565b613eaa9190615d15565b905060008082128015613ecc5750865160600151613eca83600019615d57565b135b613ef157613eec8660e0015183896000015160600151612b609190615cbc565b613ef4565b60005b9050600061402a87858a600001516060015160006402540be40060648b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015613f4957600080fd5b505afa158015613f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f819190615487565b6001600160a01b031663836a341a8f602001516040518263ffffffff1660e01b8152600401613fb291815260200190565b60206040518083038186803b158015613fca57600080fd5b505afa158015613fde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614002919061591a565b61400c908a615ddc565b6140169190615d43565b6140209190615d43565b8b608001516149db565b90507fdbe34a0ae1c9c65460a7efc44af9aadd9b07a8b3e112ee70a71eeeba287b2d628b8860008d8c600001516060015189876040516140709796959493929190615bbc565b60405180910390a15050505050506140d8565b80600001516001600160a01b03167f4b2ef4d80a0964a9a8f43256d8111558389b384d2029743c1eeb6950b14d9c658683602001516040516140cf929190918252602082015260400190565b60405180910390a25b60008054604051630195728b60e71b81526004810188905260248101929092526201000090046001600160a01b03169063cab9458090604401611f58565b6000808361412d576141288587615dfb565b614137565b6141378686615dfb565b9050600061414c6402540be400606319615d57565b905060006141616402540be4006101f4615d57565b9050876141736402540be400876141bc565b61417e856064615d57565b6141889190615d57565b6141929190615d15565b93508184126141ae578084136141a857836141b0565b806141b0565b815b98975050505050505050565b60006402540be4006141ce8385615ddc565b6141d89190615d43565b90505b92915050565b6000806402540be40060646141f68688615ddc565b6142009190615d43565b61420a9190615d43565b9050826142205761421b8186615e3a565b611410565b6114108186615cfd565b61429260405180610160016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081525090565b60008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b1580156142e157600080fd5b505afa1580156142f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143199190615487565b90506000816001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561435657600080fd5b505afa15801561436a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061438e9190615487565b426101408601526000548551602087015160e08801516080890151949550620100009093046001600160a01b031693632a9a9667936143cd91906141bc565b60c08901516040516001600160e01b031960e087901b1681526001600160a01b039094166004850152602484019290925260448301526001606483018190526084830152151560a482015260c401602060405180830381600087803b15801561443557600080fd5b505af1158015614449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061446d919061591a565b8460800181815161447e9190615e3a565b91508181525050600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b1580156144d357600080fd5b505afa1580156144e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061450b9190615487565b6001600160a01b031663142696876145348660e0015187608001516141bc90919063ffffffff16565b6040518263ffffffff1660e01b815260040161455291815260200190565b600060405180830381600087803b15801561456c57600080fd5b505af1158015614580573d6000803e3d6000fd5b50505050600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b1580156145d257600080fd5b505afa1580156145e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061460a9190615487565b84516080860151604051635a65ca9160e01b81526001600160a01b0392831660048201526024810191909152911690635a65ca9190604401600060405180830381600087803b15801561465c57600080fd5b505af1158015614670573d6000803e3d6000fd5b505050506080840180516060860152600090819052548451602086015160405163292c161760e01b81526001600160a01b039283166004820152602481019190915262010000909204169063292c16179060440160206040518083038186803b1580156146dc57600080fd5b505afa1580156146f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614714919061591a565b84604001818152505061473a8460a001518560e001518661010001518760c00151611f91565b846101000181815250506147618460a001518560e001518661012001518760c00151612dc4565b6101208501526001548451602086015160408088015160c08901519151630735e1cd60e11b81526001600160a01b0394851660048201526024810193909352604483015215156064820152911690630e6bc39a90608401600060405180830381600087803b1580156147d257600080fd5b505af11580156147e6573d6000803e3d6000fd5b50505050806001600160a01b0316634ffe8aec85602001516148198760e0015188606001516141bc90919063ffffffff16565b60c08801516040516001600160e01b031960e086901b168152600481019390935260248301919091521515604482015260016064820152608401600060405180830381600087803b15801561486d57600080fd5b505af1158015614881573d6000803e3d6000fd5b50505050600060029054906101000a90046001600160a01b03166001600160a01b031663b833966f856040518060a001604052806148d08960e001518a606001516141bc90919063ffffffff16565b815243602082018190526040808301919091526000606083015260015490516341698bd960e11b81526080909201916001600160a01b03909116906382d317b29061491f908c90600401615b03565b60206040518083038186803b15801561493757600080fd5b505afa15801561494b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061496f919061591a565b8152506040518363ffffffff1660e01b815260040161498f929190615b12565b600060405180830381600087803b1580156149a957600080fd5b505af11580156149bd573d6000803e3d6000fd5b50959695505050505050565b6000816141ce6402540be40085615ddc565b600080600080600060029054906101000a90046001600160a01b03166001600160a01b031663700ff3598b6000015188614a228e60e001518d6141bc90919063ffffffff16565b6040518463ffffffff1660e01b8152600401614a4093929190615ac5565b6040805180830381600087803b158015614a5957600080fd5b505af1158015614a6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a919190615961565b60015491935091506000906001600160a01b0316630b224e878c8b8d614ab78d89615cfd565b8b6040518663ffffffff1660e01b8152600401614ad8959493929190615b5e565b606060405180830381600087803b158015614af257600080fd5b505af1158015614b06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b2a9190615933565b91965090945090508415614c2357600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015614b8657600080fd5b505afa158015614b9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614bbe9190615487565b8b5160405163352b159160e11b81526001600160a01b03918216600482015260248101889052911690636a562b2290604401600060405180830381600087803b158015614c0a57600080fd5b505af1158015614c1e573d6000803e3d6000fd5b505050505b6000811215614e1c57600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015614c7a57600080fd5b505afa158015614c8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614cb29190615487565b6001600160a01b0316635b898b75614cc983615e51565b6040516001600160e01b031960e084901b168152600481019190915260016024820152604401600060405180830381600087803b158015614d0957600080fd5b505af1158015614d1d573d6000803e3d6000fd5b50505050600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015614d6f57600080fd5b505afa158015614d83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614da79190615487565b6001600160a01b0316635b898b75614dbf8a87615e3a565b6040516001600160e01b031960e084901b168152600481019190915260006024820152604401600060405180830381600087803b158015614dff57600080fd5b505af1158015614e13573d6000803e3d6000fd5b50505050614f19565b8315614f1957600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015614e7057600080fd5b505afa158015614e84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ea89190615487565b6001600160a01b0316635b898b75614ec08a87615e3a565b6040516001600160e01b031960e084901b168152600481019190915260006024820152604401600060405180830381600087803b158015614f0057600080fd5b505af1158015614f14573d6000803e3d6000fd5b505050505b811561500557600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015614f6d57600080fd5b505afa158015614f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614fa59190615487565b6001600160a01b031663a056d2bb836040518263ffffffff1660e01b8152600401614fd291815260200190565b600060405180830381600087803b158015614fec57600080fd5b505af1158015615000573d6000803e3d6000fd5b505050505b505050600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b15801561505657600080fd5b505afa15801561506a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061508e9190615487565b6001600160a01b03166376079be36150b38a60e00151896141bc90919063ffffffff16565b6040518263ffffffff1660e01b81526004016150d191815260200190565b600060405180830381600087803b1580156150eb57600080fd5b505af11580156150ff573d6000803e3d6000fd5b50505050858860600151141561518957600054885160208a01516040808c015190516390d112b960e01b8152620100009094046001600160a01b0316936390d112b9936151529390929091600401615ac5565b600060405180830381600087803b15801561516c57600080fd5b505af1158015615180573d6000803e3d6000fd5b50505050615227565b600054885160208a015160408b0151620100009093046001600160a01b031692633f64d0369291906151bb868c615cfd565b6040516001600160e01b031960e087901b1681526001600160a01b039094166004850152602484019290925260448301526064820152608401600060405180830381600087803b15801561520e57600080fd5b505af1158015615222573d6000803e3d6000fd5b505050505b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561527557600080fd5b505afa158015615289573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906152ad9190615487565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156152e557600080fd5b505afa1580156152f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061531d9190615487565b6001600160a01b0316634ffe8aec89602001516153478b60e001518a6141bc90919063ffffffff16565b60c08c01516040516001600160e01b031960e086901b168152600481019390935260248301919091521515604482015260006064820152608401600060405180830381600087803b15801561539b57600080fd5b505af11580156153af573d6000803e3d6000fd5b50505050509695505050505050565b80516153c981615eb0565b919050565b80516153c981615ec8565b8051600281106153c957600080fd5b600061016082840312156153fb57600080fd5b615403615c52565b905061540e826153be565b81526020820151602082015260408201516040820152606082015160608201526080820151608082015260a082015160a082015261544e60c083016153ce565b60c082015260e082015160e082015261010080830151818301525061012080830151818301525061014080830151818301525092915050565b60006020828403121561549957600080fd5b81516154a481615eb0565b9392505050565b600080604083850312156154be57600080fd5b82356154c981615eb0565b915060208301356154d981615eb0565b809150509250929050565b600080604083850312156154f757600080fd5b823561550281615eb0565b946020939093013593505050565b60008060006060848603121561552557600080fd5b833561553081615eb0565b95602085013595506040909401359392505050565b60006020828403121561555757600080fd5b81516154a481615ec8565b60006020828403121561557457600080fd5b8151600381106154a457600080fd5b6000610180828403121561559657600080fd5b61559e615c8a565b6155a7836153be565b81526020830151602082015260408301516040820152606083015160608201526155d3608084016153ce565b608082015260a0838101519082015260c0808401519082015260e08084015190820152610100808401519082015261012080840151908201526101408084015190820152610160928301519281019290925250919050565b60006080828403121561563d57600080fd5b6040516080810181811067ffffffffffffffff8211171561566e57634e487b7160e01b600052604160045260246000fd5b604052825161567c81615eb0565b8082525060208301516020820152604083015160408201526060830151600481106156a657600080fd5b60608201529392505050565b60006101008083850312156156c657600080fd5b6040519081019067ffffffffffffffff821181831017156156f757634e487b7160e01b600052604160045260246000fd5b816040528351915061570882615eb0565b818152602084015160208201526040840151604082015261572b606085016153d9565b60608201526080840151608082015260a084015160a082015260c084015160c082015260e084015160e0820152809250505092915050565b60006101c0828403121561577657600080fd5b6040516080810181811067ffffffffffffffff821117156157a757634e487b7160e01b600052604160045260246000fd5b6040526157b484846153e8565b8152610160830151602082015261018083015160408201526101a090920151606083015250919050565b600060c082840312156157f057600080fd5b60405160c0810181811067ffffffffffffffff8211171561582157634e487b7160e01b600052604160045260246000fd5b604052825161582f81615eb0565b80825250602083015160208201526040830151604082015260608301516060820152608083015161585f81615ec8565b608082015260a0928301519281019290925250919050565b600060a0828403121561588957600080fd5b60405160a0810181811067ffffffffffffffff821117156158ba57634e487b7160e01b600052604160045260246000fd5b806040525082518152602083015160208201526040830151604082015260608301516158e581615ec8565b60608201526080928301519281019290925250919050565b6000610160828403121561591057600080fd5b6141d883836153e8565b60006020828403121561592c57600080fd5b5051919050565b60008060006060848603121561594857600080fd5b8351925060208401519150604084015190509250925092565b6000806040838503121561597457600080fd5b505080516020909101519092909150565b60008060006060848603121561599a57600080fd5b505081359360208301359350604090920135919050565b600080600080608085870312156159c757600080fd5b84359350602085013592506040850135915060608501356159e781615ec8565b939692955090935050565b60048110615a1057634e487b7160e01b600052602160045260246000fd5b9052565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c0810151615a6660c084018215159052565b5060e081810151908301526101008082015190830152610120808201519083015261014090810151910152565b60018060a01b03815116825260208101516020830152604081015160408301526060810151610ed460608401826159f2565b6001600160a01b039390931683526020830191909152604082015260600190565b602080825260039082015262415f4f60e81b604082015260600190565b61016081016141db8284615a14565b6102008101615b218285615a14565b8251610160830152602083015161018083015260408301516101a0830152606083015115156101c083015260808301516101e08301529392505050565b6101e08101615b6d8288615a14565b8561016083015284610180830152836101a0830152826101c08301529695505050505050565b608081016141db8284615a93565b60a08101615baf8285615a93565b8260808301529392505050565b8781526102208101615bd16020830189615a14565b9515156101808201526101a08101949094526101c08401929092526101e08301526102009091015292915050565b888152602081018890526102408101615c1b6040830189615a14565b615c296101a08301886159f2565b856101c0830152846101e083015283610200830152826102208301529998505050505050505050565b604051610160810167ffffffffffffffff81118282101715615c8457634e487b7160e01b600052604160045260246000fd5b60405290565b604051610180810167ffffffffffffffff81118282101715615c8457634e487b7160e01b600052604160045260246000fd5b600080821280156001600160ff1b0384900385131615615cde57615cde615e6e565b600160ff1b8390038412811615615cf757615cf7615e6e565b50500190565b60008219821115615d1057615d10615e6e565b500190565b600082615d2457615d24615e84565b600160ff1b821460001984141615615d3e57615d3e615e6e565b500590565b600082615d5257615d52615e84565b500490565b60006001600160ff1b0381841382841380821686840486111615615d7d57615d7d615e6e565b600160ff1b6000871282811687830589121615615d9c57615d9c615e6e565b60008712925087820587128484161615615db857615db8615e6e565b87850587128184161615615dce57615dce615e6e565b505050929093029392505050565b6000816000190483118215151615615df657615df6615e6e565b500290565b60008083128015600160ff1b850184121615615e1957615e19615e6e565b6001600160ff1b0384018313811615615e3457615e34615e6e565b50500390565b600082821015615e4c57615e4c615e6e565b500390565b6000600160ff1b821415615e6757615e67615e6e565b5060000390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6001600160a01b0381168114615ec557600080fd5b50565b8015158114615ec557600080fdfea26469706673582212209ac4bedd71ae9f0e2c11da1a1d24df8658c6286c14748579ae9a3eaa45f323b764736f6c63430008070033","sourceMap":"318:25248:109:-:0;;;965:55;;;;;;;;;-1:-1:-1;990:22:109;:20;:22::i;:::-;318:25248;;5939:280:24;6007:13;;;;;;;6006:14;5998:66;;;;;-1:-1:-1;;;5998:66:24;;216:2:150;5998:66:24;;;198:21:150;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:150;;;338:37;5998:66:24;;;;;;392:19:150;5998:66:24;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:24;-1:-1:-1;6125:30:24;;;;;;6174:28;;;564:36:150;;;6174:28:24;;;;;;552:2:150;6174:28:24;;;6074:139;5939:280::o;422:184:150:-;318:25248:109;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b506004361061010b5760003560e01c8063857c3f1e116100a2578063c4493e3711610071578063c4493e3714610223578063da0870e71461022c578063da8ddc741461023f578063edd67fbe14610252578063fa7227e91461026557600080fd5b8063857c3f1e146101d7578063aee2e443146101ea578063b2250471146101fd578063b5edf9541461021057600080fd5b8063485cc955116100de578063485cc955146101815780636819edf31461019457806369d017d5146101b757806374cbe6ee146101ce57600080fd5b80631346b0ff1461011057806316fff07414610140578063203efa581461015957806345ac0f9a1461016e575b600080fd5b600154610123906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b600054610123906201000090046001600160a01b031681565b61016c610167366004615985565b610278565b005b61016c61017c366004615985565b610ca4565b61016c61018f3660046154ab565b610d7e565b6101a76101a2366004615510565b610ed9565b6040519015158152602001610137565b6101c060035481565b604051908152602001610137565b6101c060025481565b61016c6101e5366004615985565b611419565b6101c06101f83660046159b1565b611f91565b61016c61020b366004615985565b612025565b6101c061021e3660046159b1565b612dc4565b6101c060045481565b61016c61023a366004615985565b612e37565b61016c61024d3660046154e4565b6131fb565b61016c610260366004615985565b613431565b61016c610273366004615985565b613b04565b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b1580156102c657600080fd5b505afa1580156102da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102fe9190615487565b6001600160a01b0316336001600160a01b0316146103375760405162461bcd60e51b815260040161032e90615ae6565b60405180910390fd5b60008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561038657600080fd5b505afa15801561039a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103be9190615487565b6040516368fb329760e11b8152600481018690529091506000906001600160a01b0383169063d1f6652e906024016101006040518083038186803b15801561040557600080fd5b505afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d91906156b2565b600080548251602084015160408086015190516351d407ff60e11b81529596509394620100009093046001600160a01b03169363a3a80ffe9361048593929190600401615ac5565b6101606040518083038186803b15801561049e57600080fd5b505afa1580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d691906158fd565b90508415610934576000826060015160018111156104f6576104f6615e9a565b141561066d57600054815160808401516040516345c19a8d60e11b81526001600160a01b0392831660048201526201000090930490911660248301819052604483019190915290638b83351a90606401600060405180830381600087803b15801561056057600080fd5b505af1158015610574573d6000803e3d6000fd5b50505050600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b1580156105c657600080fd5b505afa1580156105da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fe9190615487565b81516080840151604051635a65ca9160e01b81526001600160a01b0392831660048201526024810191909152911690635a65ca9190604401600060405180830381600087803b15801561065057600080fd5b505af1158015610664573d6000803e3d6000fd5b50505050610934565b60006106878260a00151878460c001518560e00151614116565b9050600060646402540be4008385606001516106a39190615d57565b6106ad9190615d15565b6106b79190615d15565b905060008112156107d6576064856001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156106fd57600080fd5b505afa158015610711573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107359190615487565b602085015160a0870151604051632b1cbe9d60e01b8152600481019290925260248201526001600160a01b039190911690632b1cbe9d9060440160206040518083038186803b15801561078757600080fd5b505afa15801561079b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bf919061591a565b6107c99083615d57565b6107d39190615d15565b90505b60646107e3605082615e3a565b84606001516107f29190615d57565b6107fc9190615d15565b81846060015161080c9190615cbc565b136108415760405162461bcd60e51b81526020600482015260056024820152642bafaa2fa160d91b604482015260640161032e565b5050600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b15801561089157600080fd5b505afa1580156108a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108c99190615487565b8151608084015160405163352b159160e11b81526001600160a01b0392831660048201526024810191909152911690636a562b2290604401600060405180830381600087803b15801561091b57600080fd5b505af115801561092f573d6000803e3d6000fd5b505050505b60c082015115610bbe57600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b15801561098c57600080fd5b505afa1580156109a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c49190615487565b60c0830151604051635b898b7560e01b81526004810191909152600060248201526001600160a01b039190911690635b898b7590604401600060405180830381600087803b158015610a1557600080fd5b505af1158015610a29573d6000803e3d6000fd5b50505050600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015610a7b57600080fd5b505afa158015610a8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab39190615487565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015610aeb57600080fd5b505afa158015610aff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b239190615487565b6001600160a01b0316634ffe8aec8260200151610b518560e001518660c001516141bc90919063ffffffff16565b60c08501516040516001600160e01b031960e086901b168152600481019390935260248301919091521515604482015260006064820152608401600060405180830381600087803b158015610ba557600080fd5b505af1158015610bb9573d6000803e3d6000fd5b505050505b6001548151602083015160408085015160c08601519151630735e1cd60e11b81526001600160a01b0394851660048201526024810193909352604483015215156064820152911690630e6bc39a90608401600060405180830381600087803b158015610c2957600080fd5b505af1158015610c3d573d6000803e3d6000fd5b505060405163c61904a160e01b8152600481018990526001600160a01b038616925063c61904a191506024015b600060405180830381600087803b158015610c8457600080fd5b505af1158015610c98573d6000803e3d6000fd5b50505050505050505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015610cf257600080fd5b505afa158015610d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2a9190615487565b6001600160a01b0316336001600160a01b031614610d705760405162461bcd60e51b8152602060048201526003602482015262475f4f60e81b604482015260640161032e565b600292909255600355600455565b600054610100900460ff1615808015610d9e5750600054600160ff909116105b80610db85750303b158015610db8575060005460ff166001145b610e1b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161032e565b6000805460ff191660011790558015610e3e576000805461ff0019166101001790555b6000805462010000600160b01b031916620100006001600160a01b038681169190910291909117909155600180546001600160a01b03191691841691909117905560146004556005600255600a6003558015610ed4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b600080600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2a57600080fd5b505afa158015610f3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f629190615487565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015610f9a57600080fd5b505afa158015610fae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd29190615487565b9050600060029054906101000a90046001600160a01b03166001600160a01b031663dc6638f46040518163ffffffff1660e01b815260040160206040518083038186803b15801561102257600080fd5b505afa158015611036573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105a919061591a565b83600060029054906101000a90046001600160a01b03166001600160a01b031663443295dc6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110a957600080fd5b505afa1580156110bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e1919061591a565b6110eb9190615cfd565b111580156111f3575060405163232683a960e21b8152600481018590526001600160a01b03821690638c9a0ea49060240160206040518083038186803b15801561113457600080fd5b505afa158015611148573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116c919061591a565b604051635e4f8f5960e01b81526004810186905284906001600160a01b03841690635e4f8f599060240160206040518083038186803b1580156111ae57600080fd5b505afa1580156111c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e6919061591a565b6111f09190615cfd565b11155b80156113015750604051635970d96b60e11b8152600481018590526001600160a01b0382169063b2e1b2d69060240160206040518083038186803b15801561123a57600080fd5b505afa15801561124e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611272919061591a565b6000546040516378b4a14960e11b81526004810187905285916201000090046001600160a01b03169063f16942929060240160206040518083038186803b1580156112bc57600080fd5b505afa1580156112d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f4919061591a565b6112fe9190615cfd565b11155b801561141057506040516315b954db60e21b8152600481018590526001600160a01b038216906356e5536c9060240160206040518083038186803b15801561134857600080fd5b505afa15801561135c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611380919061591a565b600054604051635c3e58ed60e11b81526001600160a01b0388811660048301528692620100009004169063b87cb1da9060240160206040518083038186803b1580156113cb57600080fd5b505afa1580156113df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611403919061591a565b61140d9190615cfd565b11155b95945050505050565b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561146757600080fd5b505afa15801561147b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061149f9190615487565b6001600160a01b0316336001600160a01b0316146114cf5760405162461bcd60e51b815260040161032e90615ae6565b6000805460405163363df41d60e11b815260048101869052620100009091046001600160a01b031690636c7be83a9060240160806040518083038186803b15801561151957600080fd5b505afa15801561152d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611551919061562b565b905060008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b1580156115a257600080fd5b505afa1580156115b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115da9190615487565b6001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b15801561161257600080fd5b505afa158015611626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164a9190615487565b905083158015906116e95750600054825160208401516040808601519051636e6f99cd60e11b8152620100009094046001600160a01b03169363dcdf339a936116999390929091600401615ac5565b60206040518083038186803b1580156116b157600080fd5b505afa1580156116c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e99190615545565b15611e7e5760008054835160208501516040808701519051632e21e28b60e21b8152620100009094046001600160a01b03169363b8878a2c936117329390929091600401615ac5565b6101806040518083038186803b15801561174b57600080fd5b505afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190615583565b90506000826001600160a01b031663d4de65ea8560000151866020015187604001516040518463ffffffff1660e01b81526004016117c393929190615ac5565b60206040518083038186803b1580156117db57600080fd5b505afa1580156117ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118139190615562565b905060008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561186457600080fd5b505afa158015611878573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189c9190615487565b905060018260028111156118b2576118b2615e9a565b146118dc5782608001516118ce578261010001518710156118fd565b8261010001518711156118fd565b82608001516118f3578261010001518711156118fd565b8261010001518710155b801561192c575061192c836000015184602001516101a28660a0015187606001516141bc90919063ffffffff16565b15611e7a5760008790506002826001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561197157600080fd5b505afa158015611985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a99190615487565b6001600160a01b0316633c44d0a386602001516040518263ffffffff1660e01b81526004016119da91815260200190565b60206040518083038186803b1580156119f257600080fd5b505afa158015611a06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a2a919061591a565b1015611af6576001546020850151608086015160a087015160608801516000946001600160a01b031693637ea95f32938e9391929091611a6a91906141bc565b6040516001600160e01b031960e087901b1681526004810194909452602484019290925215156044830152606482015260840160206040518083038186803b158015611ab557600080fd5b505afa158015611ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aed919061591a565b9850611b089050565b611b05888886608001516141e1565b97505b60006402540be4006064866101200151876101000151611b289190615ddc565b611b329190615d43565b611b3c9190615d43565b90508460800151611b5f5780856101000151611b589190615e3a565b8910611b73565b80856101000151611b709190615cfd565b89115b611e77576000611bf760405180610160016040528088600001516001600160a01b03168152602001886020015181526020016000815260200160008152602001886060015181526020018c81526020018860800151151581526020018860a0015181526020018860c0015181526020018860e001518152602001600081525061422a565b61016087015190915015611da95760005460408051632292b7c960e21b81529051620100009092046001600160a01b031691638b83351a9183918291638a4adf24916004808301926020929190829003018186803b158015611c5857600080fd5b505afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c909190615487565b6101608a01516040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526044820152606401600060405180830381600087803b158015611ce557600080fd5b505af1158015611cf9573d6000803e3d6000fd5b50505050866001600160a01b031663afc329ac604051806080016040528089600001516001600160a01b031681526020018960200151815260200189604001518152602001600380811115611d5057611d50615e9a565b8152508861016001516040518363ffffffff1660e01b8152600401611d76929190615ba1565b600060405180830381600087803b158015611d9057600080fd5b505af1158015611da4573d6000803e3d6000fd5b505050505b600054865160208801516040808a0151905163b4b0f56760e01b8152620100009094046001600160a01b03169363b4b0f56793611dec9390929091600401615ac5565b600060405180830381600087803b158015611e0657600080fd5b505af1158015611e1a573d6000803e3d6000fd5b505050507fa8f1c330dfd645b9efba2033f04003aa1793208fa11fa288d7cedacb5102d3128b89604001518360038560a0015186606001518c61010001518a604051611e6d989796959493929190615bff565b60405180910390a1505b50505b5050505b806001600160a01b031663bf654d2b604051806080016040528085600001516001600160a01b03168152602001856020015181526020018560400151815260200185606001516003811115611ed557611ed5615e9a565b8152506040518263ffffffff1660e01b8152600401611ef49190615b93565b600060405180830381600087803b158015611f0e57600080fd5b505af1158015611f22573d6000803e3d6000fd5b5050600054604051637ada848360e01b815260048101899052620100009091046001600160a01b03169250637ada848391506024015b600060405180830381600087803b158015611f7257600080fd5b505af1158015611f86573d6000803e3d6000fd5b505050505050505050565b6000821580611fba5750611fac6402540be4006101f4615d57565b611fb886858588614116565b145b1561201a5760006064611fd986611fd36101f48a615ddc565b906149c9565b611fe39190615d43565b9050826120085785811115611ff9576000612012565b6120038187615e3a565b612012565b6120128187615cfd565b91505061201d565b50815b949350505050565b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561207357600080fd5b505afa158015612087573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ab9190615487565b6001600160a01b0316336001600160a01b0316146120db5760405162461bcd60e51b815260040161032e90615ae6565b6000805460405163363df41d60e11b815260048101869052620100009091046001600160a01b031690636c7be83a9060240160806040518083038186803b15801561212557600080fd5b505afa158015612139573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215d919061562b565b600080548251602084015160408086015190516351d407ff60e11b81529596509394620100009093046001600160a01b03169363a3a80ffe936121a593929190600401615ac5565b6101606040518083038186803b1580156121be57600080fd5b505afa1580156121d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f691906158fd565b905060008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561224757600080fd5b505afa15801561225b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227f9190615487565b90506000816001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b1580156122bc57600080fd5b505afa1580156122d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f49190615487565b90508515801590612309575060008360e00151115b15612cb05760008054845160208601516040808801519051638c8ff1d560e01b8152620100009094046001600160a01b031693638c8ff1d5936123529390929091600401615ac5565b60a06040518083038186803b15801561236a57600080fd5b505afa15801561237e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a29190615877565b90506000836001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156123df57600080fd5b505afa1580156123f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124179190615487565b6001600160a01b03166324abd3fb86602001516040518263ffffffff1660e01b815260040161244891815260200190565b60206040518083038186803b15801561246057600080fd5b505afa158015612474573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124989190615545565b6124a25787612537565b6000866060015160038111156124ba576124ba615e9a565b14612530576001866060015160038111156124d7576124d7615e9a565b146124e25787612537565b8460c0015180156124fb57508460a00151856101200151115b8061251b57508460c0015115801561251b57508460a00151856101200151105b61252a57846101200151612537565b87612537565b8461010001515b905060006125538660a00151838860c001518960e00151614116565b9050600060028860600151600381111561256f5761256f615e9a565b141561268957600154875160208901516040808b015160a08c015160c08d015160608e015160e08f01519451636bc84d5960e01b81526001600160a01b0397881660048201526024810196909652604486019390935260648501919091521515608484015260a483015260c48201526000929190911690636bc84d599060e40160206040518083038186803b15801561260757600080fd5b505afa15801561261b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263f919061591a565b90508760c0015161265357808b1015612658565b808b11155b612663576000612681565b606460025489606001516126779190615ddc565b6126819190615d43565b91505061285e565b6000886060015160038111156126a1576126a1615e9a565b1480156126b357506000876101000151115b80156126db57508660c001516126d1578661010001518a11156126db565b8661010001518a10155b8061273357506001886060015160038111156126f9576126f9615e9a565b14801561270b57506000876101200151115b801561273357508660c00151612729578661012001518a1015612733565b8661012001518a11155b61273e57600061285b565b6402540be4006064876001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561277f57600080fd5b505afa158015612793573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127b79190615487565b6001600160a01b031663649a64888a602001516040518263ffffffff1660e01b81526004016127e891815260200190565b60206040518083038186803b15801561280057600080fd5b505afa158015612814573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612838919061591a565b89606001516128479190615ddc565b6128519190615d43565b61285b9190615d43565b90505b60028860600151600381111561287657612876615e9a565b1480156128835750600081115b156129c15760006128c688848a60600151856002546002546003546128a89190615e3a565b6128b29089615ddc565b6128bc9190615d43565b8a608001516149db565b9050856001600160a01b031663afc329ac60405180608001604052808c600001516001600160a01b031681526020018c6020015181526020018c6040015181526020018c60600151600381111561291f5761291f615e9a565b815250846040518363ffffffff1660e01b8152600401612940929190615ba1565b600060405180830381600087803b15801561295a57600080fd5b505af115801561296e573d6000803e3d6000fd5b505050507fa8f1c330dfd645b9efba2033f04003aa1793208fa11fa288d7cedacb5102d3128c8c8a8c60600151888d6060015189886040516129b7989796959493929190615bff565b60405180910390a1505b6002886060015160038111156129d9576129d9615e9a565b141580156129e75750600081115b15612cab576298968081116129fc5780612a01565b629896805b9050600060646402540be400848a60600151612a1d9190615d57565b612a279190615d15565b612a319190615d15565b905060008082128015612a5257506060890151612a5083600019615d57565b135b612b7557876001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015612a8f57600080fd5b505afa158015612aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac79190615487565b6001600160a01b031663836a341a8a602001516040518263ffffffff1660e01b8152600401612af891815260200190565b60206040518083038186803b158015612b1057600080fd5b505afa158015612b24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b48919061591a565b612b668a60e00151848c60600151612b609190615cbc565b906141bc565b612b709190615ddc565b612b78565b60005b90506000612bae8a868c60600151876402540be400606488612b9a9190615d43565b612ba49190615d43565b8c608001516149db565b9050876001600160a01b031663afc329ac60405180608001604052808e600001516001600160a01b031681526020018e6020015181526020018e6040015181526020018e606001516003811115612c0757612c07615e9a565b815250866040518363ffffffff1660e01b8152600401612c28929190615ba1565b600060405180830381600087803b158015612c4257600080fd5b505af1158015612c56573d6000803e3d6000fd5b505050507fa8f1c330dfd645b9efba2033f04003aa1793208fa11fa288d7cedacb5102d3128e8e8c8e606001518a8f606001518b88604051612c9f989796959493929190615bff565b60405180910390a15050505b505050505b806001600160a01b031663bf654d2b604051806080016040528087600001516001600160a01b03168152602001876020015181526020018760400151815260200187606001516003811115612d0757612d07615e9a565b8152506040518263ffffffff1660e01b8152600401612d269190615b93565b600060405180830381600087803b158015612d4057600080fd5b505af1158015612d54573d6000803e3d6000fd5b5050600054604051637ada848360e01b8152600481018b9052620100009091046001600160a01b03169250637ada84839150602401600060405180830381600087803b158015612da357600080fd5b505af1158015612db7573d6000803e3d6000fd5b5050505050505050505050565b60008083118015612dfa5750612de06402540be4006050615d57565b612dec90600019615d57565b612df886858588614116565b125b1561201a5760006064612e1286611fd360508a615ddc565b612e1c9190615d43565b905082612e2d576120038187615cfd565b6120128187615e3a565b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015612e8557600080fd5b505afa158015612e99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ebd9190615487565b6001600160a01b0316336001600160a01b031614612eed5760405162461bcd60e51b815260040161032e90615ae6565b60008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015612f3c57600080fd5b505afa158015612f50573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f749190615487565b6040516337a3dba360e01b8152600481018690529091506000906001600160a01b038316906337a3dba39060240160c06040518083038186803b158015612fba57600080fd5b505afa158015612fce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ff291906157de565b600080548251602084015160408086015190516351d407ff60e11b81529596509394620100009093046001600160a01b03169363a3a80ffe9361303a93929190600401615ac5565b6101606040518083038186803b15801561305357600080fd5b505afa158015613067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308b91906158fd565b905084158015906130a75750816080015115158160c001511515145b80156130ba575081606001518160a00151145b80156130e057508060c001516130d757848260a0015110156130e0565b848260a0015111155b156131ce576000548251602084015160408086015160a0870151915163a354418160e01b81526001600160a01b03948516600482015260248101939093526044830152606482015262010000909204169063a354418190608401600060405180830381600087803b15801561315457600080fd5b505af1158015613168573d6000803e3d6000fd5b5050835160208086015160408088015160a089015182518e8152948501939093529083015260608201526001600160a01b0390911692507fe57d6aa2ba102529f6f4f17498f4a95f866a5513e746e676e6cd037c991b6fe9915060800160405180910390a25b6040516361417a4360e01b8152600481018790526001600160a01b038416906361417a4390602401610c6a565b6000811180156133115750600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561325457600080fd5b505afa158015613268573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061328c9190615487565b6001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b1580156132c457600080fd5b505afa1580156132d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132fc9190615487565b6001600160a01b0316336001600160a01b0316145b6133435760405162461bcd60e51b8152602060048201526003602482015262455f4f60e81b604482015260640161032e565b600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b15801561339157600080fd5b505afa1580156133a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133c99190615487565b60405163352b159160e11b81526001600160a01b038481166004830152602482018490529190911690636a562b2290604401600060405180830381600087803b15801561341557600080fd5b505af1158015613429573d6000803e3d6000fd5b505050505050565b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561347f57600080fd5b505afa158015613493573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134b79190615487565b6001600160a01b0316336001600160a01b0316146134e75760405162461bcd60e51b815260040161032e90615ae6565b6000805460405163d5dabd7560e01b815260048101869052620100009091046001600160a01b03169063d5dabd75906024016101c06040518083038186803b15801561353257600080fd5b505afa158015613546573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061356a9190615763565b905080602001516000141561357f5750505050565b8051516001600160a01b03166135cb5760405162461bcd60e51b815260206004820152601160248201527024a72b2fa822a72224a723afa7a92222a960791b604482015260640161032e565b60008160000151905060008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561362357600080fd5b505afa158015613637573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061365b9190615487565b90506000816001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561369857600080fd5b505afa1580156136ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136d09190615487565b90506002816001600160a01b0316633c44d0a385602001516040518263ffffffff1660e01b815260040161370691815260200190565b60206040518083038186803b15801561371e57600080fd5b505afa158015613732573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613756919061591a565b101561382457600154602084015160c085015160e086015160808701516000946001600160a01b031693637ea95f32938c939192909161379691906141bc565b6040516001600160e01b031960e087901b1681526004810194909452602484019290925215156044830152606482015260840160206040518083038186803b1580156137e157600080fd5b505afa1580156137f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613819919061591a565b60a085015250613839565b61383386868560c001516141e1565b60a08401525b60006402540be4006064866060015187604001516138579190615ddc565b6138619190615d43565b61386b9190615d43565b90508615806138b057508360c001516138995780856040015161388e9190615e3a565b8460a00151106138b0565b8085604001516138a99190615cfd565b8460a00151115b806138ef575060008461010001511180156138ef57508360c001516138e1578361010001518460a0015111156138ef565b8361010001518460a0015110155b8061392e5750600084610120015111801561392e57508360c00151613920578361012001518460a00151101561392e565b8361012001518460a0015111155b8061395e575061395c846000015185602001516101a28760e0015188608001516141bc90919063ffffffff16565b155b15613a3457600054845160808601516040516345c19a8d60e11b8152620100009093046001600160a01b039081166004850181905292166024840152604483015290638b83351a90606401600060405180830381600087803b1580156139c357600080fd5b505af11580156139d7573d6000803e3d6000fd5b5050505083600001516001600160a01b03167f4b2ef4d80a0964a9a8f43256d8111558389b384d2029743c1eeb6950b14d9c65898660200151604051613a27929190918252602082015260400190565b60405180910390a2613a90565b6000613a3f8561422a565b90507fdbe34a0ae1c9c65460a7efc44af9aadd9b07a8b3e112ee70a71eeeba287b2d62898260018460a001518560600151600080604051613a869796959493929190615bbc565b60405180910390a1505b600054604051630195728b60e71b8152600481018a905260016024820152620100009091046001600160a01b03169063cab9458090604401600060405180830381600087803b158015613ae257600080fd5b505af1158015613af6573d6000803e3d6000fd5b505050505050505050505050565b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015613b5257600080fd5b505afa158015613b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b8a9190615487565b6001600160a01b0316336001600160a01b031614613bba5760405162461bcd60e51b815260040161032e90615ae6565b6000805460405163d5dabd7560e01b815260048101869052620100009091046001600160a01b03169063d5dabd75906024016101c06040518083038186803b158015613c0557600080fd5b505afa158015613c19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c3d9190615763565b6000805482518051602082015160409283015192516351d407ff60e11b81529596509394620100009093046001600160a01b03169363a3a80ffe93613c859390600401615ac5565b6101606040518083038186803b158015613c9e57600080fd5b505afa158015613cb2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cd691906158fd565b8251519091506001600160a01b0316613d255760405162461bcd60e51b815260206004820152601160248201527024a72b2fa822a72224a723afa7a92222a960791b604482015260640161032e565b8315801590613d38575060008160e00151115b156140835760008054825160208401516040808601519051638c8ff1d560e01b8152620100009094046001600160a01b031693638c8ff1d593613d819390929091600401615ac5565b60a06040518083038186803b158015613d9957600080fd5b505afa158015613dad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dd19190615877565b905060008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015613e2257600080fd5b505afa158015613e36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e5a9190615487565b90506000613e768460a00151888660c001518760e00151614116565b9050600060646402540be40083886000015160600151613e969190615d57565b613ea09190615d15565b613eaa9190615d15565b905060008082128015613ecc5750865160600151613eca83600019615d57565b135b613ef157613eec8660e0015183896000015160600151612b609190615cbc565b613ef4565b60005b9050600061402a87858a600001516060015160006402540be40060648b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015613f4957600080fd5b505afa158015613f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f819190615487565b6001600160a01b031663836a341a8f602001516040518263ffffffff1660e01b8152600401613fb291815260200190565b60206040518083038186803b158015613fca57600080fd5b505afa158015613fde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614002919061591a565b61400c908a615ddc565b6140169190615d43565b6140209190615d43565b8b608001516149db565b90507fdbe34a0ae1c9c65460a7efc44af9aadd9b07a8b3e112ee70a71eeeba287b2d628b8860008d8c600001516060015189876040516140709796959493929190615bbc565b60405180910390a15050505050506140d8565b80600001516001600160a01b03167f4b2ef4d80a0964a9a8f43256d8111558389b384d2029743c1eeb6950b14d9c658683602001516040516140cf929190918252602082015260400190565b60405180910390a25b60008054604051630195728b60e71b81526004810188905260248101929092526201000090046001600160a01b03169063cab9458090604401611f58565b6000808361412d576141288587615dfb565b614137565b6141378686615dfb565b9050600061414c6402540be400606319615d57565b905060006141616402540be4006101f4615d57565b9050876141736402540be400876141bc565b61417e856064615d57565b6141889190615d57565b6141929190615d15565b93508184126141ae578084136141a857836141b0565b806141b0565b815b98975050505050505050565b60006402540be4006141ce8385615ddc565b6141d89190615d43565b90505b92915050565b6000806402540be40060646141f68688615ddc565b6142009190615d43565b61420a9190615d43565b9050826142205761421b8186615e3a565b611410565b6114108186615cfd565b61429260405180610160016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081525090565b60008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b1580156142e157600080fd5b505afa1580156142f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143199190615487565b90506000816001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561435657600080fd5b505afa15801561436a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061438e9190615487565b426101408601526000548551602087015160e08801516080890151949550620100009093046001600160a01b031693632a9a9667936143cd91906141bc565b60c08901516040516001600160e01b031960e087901b1681526001600160a01b039094166004850152602484019290925260448301526001606483018190526084830152151560a482015260c401602060405180830381600087803b15801561443557600080fd5b505af1158015614449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061446d919061591a565b8460800181815161447e9190615e3a565b91508181525050600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b1580156144d357600080fd5b505afa1580156144e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061450b9190615487565b6001600160a01b031663142696876145348660e0015187608001516141bc90919063ffffffff16565b6040518263ffffffff1660e01b815260040161455291815260200190565b600060405180830381600087803b15801561456c57600080fd5b505af1158015614580573d6000803e3d6000fd5b50505050600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b1580156145d257600080fd5b505afa1580156145e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061460a9190615487565b84516080860151604051635a65ca9160e01b81526001600160a01b0392831660048201526024810191909152911690635a65ca9190604401600060405180830381600087803b15801561465c57600080fd5b505af1158015614670573d6000803e3d6000fd5b505050506080840180516060860152600090819052548451602086015160405163292c161760e01b81526001600160a01b039283166004820152602481019190915262010000909204169063292c16179060440160206040518083038186803b1580156146dc57600080fd5b505afa1580156146f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614714919061591a565b84604001818152505061473a8460a001518560e001518661010001518760c00151611f91565b846101000181815250506147618460a001518560e001518661012001518760c00151612dc4565b6101208501526001548451602086015160408088015160c08901519151630735e1cd60e11b81526001600160a01b0394851660048201526024810193909352604483015215156064820152911690630e6bc39a90608401600060405180830381600087803b1580156147d257600080fd5b505af11580156147e6573d6000803e3d6000fd5b50505050806001600160a01b0316634ffe8aec85602001516148198760e0015188606001516141bc90919063ffffffff16565b60c08801516040516001600160e01b031960e086901b168152600481019390935260248301919091521515604482015260016064820152608401600060405180830381600087803b15801561486d57600080fd5b505af1158015614881573d6000803e3d6000fd5b50505050600060029054906101000a90046001600160a01b03166001600160a01b031663b833966f856040518060a001604052806148d08960e001518a606001516141bc90919063ffffffff16565b815243602082018190526040808301919091526000606083015260015490516341698bd960e11b81526080909201916001600160a01b03909116906382d317b29061491f908c90600401615b03565b60206040518083038186803b15801561493757600080fd5b505afa15801561494b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061496f919061591a565b8152506040518363ffffffff1660e01b815260040161498f929190615b12565b600060405180830381600087803b1580156149a957600080fd5b505af11580156149bd573d6000803e3d6000fd5b50959695505050505050565b6000816141ce6402540be40085615ddc565b600080600080600060029054906101000a90046001600160a01b03166001600160a01b031663700ff3598b6000015188614a228e60e001518d6141bc90919063ffffffff16565b6040518463ffffffff1660e01b8152600401614a4093929190615ac5565b6040805180830381600087803b158015614a5957600080fd5b505af1158015614a6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a919190615961565b60015491935091506000906001600160a01b0316630b224e878c8b8d614ab78d89615cfd565b8b6040518663ffffffff1660e01b8152600401614ad8959493929190615b5e565b606060405180830381600087803b158015614af257600080fd5b505af1158015614b06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b2a9190615933565b91965090945090508415614c2357600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015614b8657600080fd5b505afa158015614b9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614bbe9190615487565b8b5160405163352b159160e11b81526001600160a01b03918216600482015260248101889052911690636a562b2290604401600060405180830381600087803b158015614c0a57600080fd5b505af1158015614c1e573d6000803e3d6000fd5b505050505b6000811215614e1c57600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015614c7a57600080fd5b505afa158015614c8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614cb29190615487565b6001600160a01b0316635b898b75614cc983615e51565b6040516001600160e01b031960e084901b168152600481019190915260016024820152604401600060405180830381600087803b158015614d0957600080fd5b505af1158015614d1d573d6000803e3d6000fd5b50505050600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015614d6f57600080fd5b505afa158015614d83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614da79190615487565b6001600160a01b0316635b898b75614dbf8a87615e3a565b6040516001600160e01b031960e084901b168152600481019190915260006024820152604401600060405180830381600087803b158015614dff57600080fd5b505af1158015614e13573d6000803e3d6000fd5b50505050614f19565b8315614f1957600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015614e7057600080fd5b505afa158015614e84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ea89190615487565b6001600160a01b0316635b898b75614ec08a87615e3a565b6040516001600160e01b031960e084901b168152600481019190915260006024820152604401600060405180830381600087803b158015614f0057600080fd5b505af1158015614f14573d6000803e3d6000fd5b505050505b811561500557600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015614f6d57600080fd5b505afa158015614f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614fa59190615487565b6001600160a01b031663a056d2bb836040518263ffffffff1660e01b8152600401614fd291815260200190565b600060405180830381600087803b158015614fec57600080fd5b505af1158015615000573d6000803e3d6000fd5b505050505b505050600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b15801561505657600080fd5b505afa15801561506a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061508e9190615487565b6001600160a01b03166376079be36150b38a60e00151896141bc90919063ffffffff16565b6040518263ffffffff1660e01b81526004016150d191815260200190565b600060405180830381600087803b1580156150eb57600080fd5b505af11580156150ff573d6000803e3d6000fd5b50505050858860600151141561518957600054885160208a01516040808c015190516390d112b960e01b8152620100009094046001600160a01b0316936390d112b9936151529390929091600401615ac5565b600060405180830381600087803b15801561516c57600080fd5b505af1158015615180573d6000803e3d6000fd5b50505050615227565b600054885160208a015160408b0151620100009093046001600160a01b031692633f64d0369291906151bb868c615cfd565b6040516001600160e01b031960e087901b1681526001600160a01b039094166004850152602484019290925260448301526064820152608401600060405180830381600087803b15801561520e57600080fd5b505af1158015615222573d6000803e3d6000fd5b505050505b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561527557600080fd5b505afa158015615289573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906152ad9190615487565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156152e557600080fd5b505afa1580156152f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061531d9190615487565b6001600160a01b0316634ffe8aec89602001516153478b60e001518a6141bc90919063ffffffff16565b60c08c01516040516001600160e01b031960e086901b168152600481019390935260248301919091521515604482015260006064820152608401600060405180830381600087803b15801561539b57600080fd5b505af11580156153af573d6000803e3d6000fd5b50505050509695505050505050565b80516153c981615eb0565b919050565b80516153c981615ec8565b8051600281106153c957600080fd5b600061016082840312156153fb57600080fd5b615403615c52565b905061540e826153be565b81526020820151602082015260408201516040820152606082015160608201526080820151608082015260a082015160a082015261544e60c083016153ce565b60c082015260e082015160e082015261010080830151818301525061012080830151818301525061014080830151818301525092915050565b60006020828403121561549957600080fd5b81516154a481615eb0565b9392505050565b600080604083850312156154be57600080fd5b82356154c981615eb0565b915060208301356154d981615eb0565b809150509250929050565b600080604083850312156154f757600080fd5b823561550281615eb0565b946020939093013593505050565b60008060006060848603121561552557600080fd5b833561553081615eb0565b95602085013595506040909401359392505050565b60006020828403121561555757600080fd5b81516154a481615ec8565b60006020828403121561557457600080fd5b8151600381106154a457600080fd5b6000610180828403121561559657600080fd5b61559e615c8a565b6155a7836153be565b81526020830151602082015260408301516040820152606083015160608201526155d3608084016153ce565b608082015260a0838101519082015260c0808401519082015260e08084015190820152610100808401519082015261012080840151908201526101408084015190820152610160928301519281019290925250919050565b60006080828403121561563d57600080fd5b6040516080810181811067ffffffffffffffff8211171561566e57634e487b7160e01b600052604160045260246000fd5b604052825161567c81615eb0565b8082525060208301516020820152604083015160408201526060830151600481106156a657600080fd5b60608201529392505050565b60006101008083850312156156c657600080fd5b6040519081019067ffffffffffffffff821181831017156156f757634e487b7160e01b600052604160045260246000fd5b816040528351915061570882615eb0565b818152602084015160208201526040840151604082015261572b606085016153d9565b60608201526080840151608082015260a084015160a082015260c084015160c082015260e084015160e0820152809250505092915050565b60006101c0828403121561577657600080fd5b6040516080810181811067ffffffffffffffff821117156157a757634e487b7160e01b600052604160045260246000fd5b6040526157b484846153e8565b8152610160830151602082015261018083015160408201526101a090920151606083015250919050565b600060c082840312156157f057600080fd5b60405160c0810181811067ffffffffffffffff8211171561582157634e487b7160e01b600052604160045260246000fd5b604052825161582f81615eb0565b80825250602083015160208201526040830151604082015260608301516060820152608083015161585f81615ec8565b608082015260a0928301519281019290925250919050565b600060a0828403121561588957600080fd5b60405160a0810181811067ffffffffffffffff821117156158ba57634e487b7160e01b600052604160045260246000fd5b806040525082518152602083015160208201526040830151604082015260608301516158e581615ec8565b60608201526080928301519281019290925250919050565b6000610160828403121561591057600080fd5b6141d883836153e8565b60006020828403121561592c57600080fd5b5051919050565b60008060006060848603121561594857600080fd5b8351925060208401519150604084015190509250925092565b6000806040838503121561597457600080fd5b505080516020909101519092909150565b60008060006060848603121561599a57600080fd5b505081359360208301359350604090920135919050565b600080600080608085870312156159c757600080fd5b84359350602085013592506040850135915060608501356159e781615ec8565b939692955090935050565b60048110615a1057634e487b7160e01b600052602160045260246000fd5b9052565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c0810151615a6660c084018215159052565b5060e081810151908301526101008082015190830152610120808201519083015261014090810151910152565b60018060a01b03815116825260208101516020830152604081015160408301526060810151610ed460608401826159f2565b6001600160a01b039390931683526020830191909152604082015260600190565b602080825260039082015262415f4f60e81b604082015260600190565b61016081016141db8284615a14565b6102008101615b218285615a14565b8251610160830152602083015161018083015260408301516101a0830152606083015115156101c083015260808301516101e08301529392505050565b6101e08101615b6d8288615a14565b8561016083015284610180830152836101a0830152826101c08301529695505050505050565b608081016141db8284615a93565b60a08101615baf8285615a93565b8260808301529392505050565b8781526102208101615bd16020830189615a14565b9515156101808201526101a08101949094526101c08401929092526101e08301526102009091015292915050565b888152602081018890526102408101615c1b6040830189615a14565b615c296101a08301886159f2565b856101c0830152846101e083015283610200830152826102208301529998505050505050505050565b604051610160810167ffffffffffffffff81118282101715615c8457634e487b7160e01b600052604160045260246000fd5b60405290565b604051610180810167ffffffffffffffff81118282101715615c8457634e487b7160e01b600052604160045260246000fd5b600080821280156001600160ff1b0384900385131615615cde57615cde615e6e565b600160ff1b8390038412811615615cf757615cf7615e6e565b50500190565b60008219821115615d1057615d10615e6e565b500190565b600082615d2457615d24615e84565b600160ff1b821460001984141615615d3e57615d3e615e6e565b500590565b600082615d5257615d52615e84565b500490565b60006001600160ff1b0381841382841380821686840486111615615d7d57615d7d615e6e565b600160ff1b6000871282811687830589121615615d9c57615d9c615e6e565b60008712925087820587128484161615615db857615db8615e6e565b87850587128184161615615dce57615dce615e6e565b505050929093029392505050565b6000816000190483118215151615615df657615df6615e6e565b500290565b60008083128015600160ff1b850184121615615e1957615e19615e6e565b6001600160ff1b0384018313811615615e3457615e34615e6e565b50500390565b600082821015615e4c57615e4c615e6e565b500390565b6000600160ff1b821415615e6757615e67615e6e565b5060000390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6001600160a01b0381168114615ec557600080fd5b50565b8015158114615ec557600080fdfea26469706673582212209ac4bedd71ae9f0e2c11da1a1d24df8658c6286c14748579ae9a3eaa45f323b764736f6c63430008070033","sourceMap":"318:25248:109:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;698:27;;;;;-1:-1:-1;;;;;698:27:109;;;;;;-1:-1:-1;;;;;13583:32:150;;;;13565:51;;13553:2;13538:18;698:27:109;;;;;;;;660:31;;;;;;;;-1:-1:-1;;;;;660:31:109;;;2267:2085;;;;;;:::i;:::-;;:::i;:::-;;1827:241;;;;;;:::i;:::-;;:::i;1203:256::-;;;;;;:::i;:::-;;:::i;19570:743::-;;;;;;:::i;:::-;;:::i;:::-;;;16899:14:150;;16892:22;16874:41;;16862:2;16847:18;19570:743:109;16734:187:150;760:24:109;;;;;;;;;21882:25:150;;;21870:2;21855:18;760:24:109;21736:177:150;734:19:109;;;;;;8843:3620;;;;;;:::i;:::-;;:::i;18719:430::-;;;;;;:::i;:::-;;:::i;12656:4660::-;;;;;;:::i;:::-;;:::i;19157:405::-;;;;;;:::i;:::-;;:::i;791:30::-;;;;;;17506:767;;;;;;:::i;:::-;;:::i;18454:257::-;;;;;;:::i;:::-;;:::i;4536:2192::-;;;;;;:::i;:::-;;:::i;6912:1749::-;;;;;;:::i;:::-;;:::i;2267:2085::-;902:8;;:26;;;-1:-1:-1;;;902:26:109;;;;:8;;;;-1:-1:-1;;;;;902:8:109;;-1:-1:-1;;902:26:109;;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;880:49:109;:10;:49;872:65;;;;-1:-1:-1;;;872:65:109;;19544:2:150;872:65:109;;;19526:21:150;19583:1;19563:18;;;19556:29;-1:-1:-1;;;19601:18:150;;;19594:33;19644:18;;872:65:109;;;;;;;;;2402:27:::1;2432:8:::0;;:26:::1;::::0;;-1:-1:-1;;;2432:26:109;;;;:8;;;::::1;-1:-1:-1::0;;;;;2432:8:109::1;::::0;-1:-1:-1;;2432:26:109::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2517:45;::::0;-1:-1:-1;;;2517:45:109;;::::1;::::0;::::1;21882:25:150::0;;;2402:56:109;;-1:-1:-1;2469:45:109::1;::::0;-1:-1:-1;;;;;2517:36:109;::::1;::::0;::::1;::::0;21855:18:150;;2517:45:109::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2573:35;2611:8:::0;;2631;;2641:11:::1;::::0;::::1;::::0;2654:7:::1;::::0;;::::1;::::0;2611:51;;-1:-1:-1;;;2611:51:109;;-1:-1:-1;;;;;14506:32:150;;;2611:51:109::1;::::0;::::1;14488::150::0;14555:18;;;14548:34;;;;14598:18;;;14591:34;2611:51:109;2631:8;;-1:-1:-1;2573:35:109;;2611:8;;;::::1;;::::0;:19:::1;::::0;14461:18:150;;;;;2611:51:109::1;::::0;;;;;;;;:8;:51;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2573:89:::0;-1:-1:-1;2686:10:109;;2683:1050:::1;;2727:34;2716:1;:7;;;:45;;;;;;;;:::i;:::-;;2712:1010;;;2830:8;::::0;2852:13;;2886:8:::1;::::0;::::1;::::0;2830:65:::1;::::0;-1:-1:-1;;;2830:65:109;;-1:-1:-1;;;;;13885:15:150;;;2830:65:109::1;::::0;::::1;13867:34:150::0;2830:8:109;;;::::1;::::0;;::::1;13917:18:150::0;;;13910:43;;;13969:18;;;13962:34;;;;2830:8:109;:21:::1;::::0;13802:18:150;;2830:65:109::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2914:8:109::1;::::0;:23:::1;::::0;;-1:-1:-1;;;2914:23:109;;;;:8;;;::::1;-1:-1:-1::0;;;;;2914:8:109::1;::::0;-1:-1:-1;2914:21:109::1;::::0;-1:-1:-1;2914:23:109::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:23;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2960:13:::0;;2975:8:::1;::::0;::::1;::::0;2914:70:::1;::::0;-1:-1:-1;;;2914:70:109;;-1:-1:-1;;;;;14199:32:150;;;2914:70:109::1;::::0;::::1;14181:51:150::0;14248:18;;;14241:34;;;;2914:45:109;::::1;::::0;::::1;::::0;14154:18:150;;2914:70:109::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2712:1010;;;3048:11;3062:75;3084:6;:16;;;3102:5;3109:6;:10;;;3121:6;:15;;;3062:21;:75::i;:::-;3048:89;;3160:7;3230:3;451:4;3201:7;3175:6;:22;;;3171:37;;;;:::i;:::-;3170:57;;;;:::i;:::-;:63;;;;:::i;:::-;3160:73;;3266:1;3260:3;:7;3256:165;;;3394:3;3313:10;-1:-1:-1::0;;;;;3313:23:109::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3364:16;::::0;::::1;::::0;3382:6:::1;::::0;::::1;::::0;3313:76:::1;::::0;-1:-1:-1;;;3313:76:109;;::::1;::::0;::::1;23746:25:150::0;;;;23787:18;;;23780:34;-1:-1:-1;;;;;3313:50:109;;;::::1;::::0;::::1;::::0;23719:18:150;;3313:76:109::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3303:87;::::0;:3;:87:::1;:::i;:::-;3302:95;;;;:::i;:::-;3296:101;;3256:165;3556:3;3524:27;597:2;3556:3:::0;3524:27:::1;:::i;:::-;3494:6;:22;;;3490:62;;;;:::i;:::-;3489:70;;;;:::i;:::-;3482:3;3456:6;:22;;;3452:33;;;;:::i;:::-;3451:108;3443:160;;;::::0;-1:-1:-1;;;3443:160:109;;17788:2:150;3443:160:109::1;::::0;::::1;17770:21:150::0;17827:1;17807:18;;;17800:29;-1:-1:-1;;;17845:18:150;;;17838:35;17890:18;;3443:160:109::1;17586:328:150::0;3443:160:109::1;-1:-1:-1::0;;3641:8:109::1;::::0;:23:::1;::::0;;-1:-1:-1;;;3641:23:109;;;;:8;;;::::1;-1:-1:-1::0;;;;;3641:8:109::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:23;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3682:13:::0;;3697:8:::1;::::0;::::1;::::0;3641:65:::1;::::0;-1:-1:-1;;;3641:65:109;;-1:-1:-1;;;;;14199:32:150;;;3641:65:109::1;::::0;::::1;14181:51:150::0;14248:18;;;14241:34;;;;3641:40:109;::::1;::::0;::::1;::::0;14154:18:150;;3641:65:109::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2712:1010;3846:12;::::0;::::1;::::0;:17;3842:332:::1;;3879:8;::::0;:23:::1;::::0;;-1:-1:-1;;;3879:23:109;;;;:8;;;::::1;-1:-1:-1::0;;;;;3879:8:109::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:23;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3919:12;::::0;::::1;::::0;3879:60:::1;::::0;-1:-1:-1;;;3879:60:109;;::::1;::::0;::::1;22086:25:150::0;;;;3933:5:109::1;22127:18:150::0;;;22120:50;-1:-1:-1;;;;;3879:39:109;;;::::1;::::0;::::1;::::0;22059:18:150;;3879:60:109::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;3954:8:109::1;::::0;:26:::1;::::0;;-1:-1:-1;;;3954:26:109;;;;:8;;;::::1;-1:-1:-1::0;;;;;3954:8:109::1;::::0;-1:-1:-1;;;;3954:26:109::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;3954:39:109::1;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;3954:55:109::1;;4028:6;:16;;;4063:31;4080:1;:13;;;4063:1;:12;;;:16;;:31;;;;:::i;:::-;4113:10;::::0;::::1;::::0;3954:208:::1;::::0;-1:-1:-1;;;;;;3954:208:109::1;::::0;;;;;;::::1;::::0;::::1;24044:25:150::0;;;;24085:18;;;24078:34;;;;24155:14;24148:22;24128:18;;;24121:50;4142:5:109::1;24187:18:150::0;;;24180:50;24016:19;;3954:208:109::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3842:332;4184:9;::::0;4219:13;;4234:16:::1;::::0;::::1;::::0;4252:12:::1;::::0;;::::1;::::0;4266:10:::1;::::0;::::1;::::0;4184:93;;-1:-1:-1;;;4184:93:109;;-1:-1:-1;;;;;14879:32:150;;;4184:93:109::1;::::0;::::1;14861:51:150::0;14928:18;;;14921:34;;;;14971:18;;;14964:34;15041:14;15034:22;15014:18;;;15007:50;4184:9:109;::::1;::::0;:34:::1;::::0;14833:19:150;;4184:93:109::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;4290:54:109::1;::::0;-1:-1:-1;;;4290:54:109;;::::1;::::0;::::1;21882:25:150::0;;;-1:-1:-1;;;;;4290:45:109;::::1;::::0;-1:-1:-1;;;;21855:18:150;;4290:54:109::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2391:1961;;;2267:2085:::0;;;:::o;1827:241::-;1937:8;;:14;;;-1:-1:-1;;;1937:14:109;;;;:8;;;;-1:-1:-1;;;;;1937:8:109;;-1:-1:-1;;1937:14:109;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1923:28:109;:10;:28;1915:44;;;;-1:-1:-1;;;1915:44:109;;18867:2:150;1915:44:109;;;18849:21:150;18906:1;18886:18;;;18879:29;-1:-1:-1;;;18924:18:150;;;18917:33;18967:18;;1915:44:109;18665:326:150;1915:44:109;1970:7;:18;;;;1999:12;:28;2038:9;:22;1827:241::o;1203:256::-;3279:19:24;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:24;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:24;1713:19:37;:23;;;3387:66:24;;-1:-1:-1;3436:12:24;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:24;;18452:2:150;3325:201:24;;;18434:21:150;18491:2;18471:18;;;18464:30;18530:34;18510:18;;;18503:62;-1:-1:-1;;;18581:18:150;;;18574:44;18635:19;;3325:201:24;18250:410:150;3325:201:24;3536:12;:16;;-1:-1:-1;;3536:16:24;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:24;;;;;3562:65;1294:8:109::1;:37:::0;;-1:-1:-1;;;;;;1294:37:109::1;-1:-1:-1::0;;;;;;1294:37:109;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;1342:34:109;;-1:-1:-1;;;;;;1342:34:109::1;::::0;;::::1;::::0;;;::::1;::::0;;1399:2:::1;1387:9;:14:::0;1422:1:::1;1294:8;1412:11:::0;1449:2:::1;1434:12;:17:::0;3647:99:24;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:24;;;3721:14;;-1:-1:-1;17539:36:150;;3721:14:24;;17527:2:150;17512:18;3721:14:24;;;;;;;3647:99;3269:483;1203:256:109;;:::o;19570:743::-;19675:4;19719:8;;:26;;;-1:-1:-1;;;19719:26:109;;;;19675:4;;19719:8;;;-1:-1:-1;;;;;19719:8:109;;-1:-1:-1;;19719:26:109;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19719:39:109;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19855:8;;:26;;;-1:-1:-1;;;19855:26:109;;;;19692:68;;-1:-1:-1;19855:8:109;;;;-1:-1:-1;;;;;19855:8:109;;:24;;:26;;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19817:8;;:18;;;-1:-1:-1;;;19817:18:109;;;;19838:13;;19817:8;;;-1:-1:-1;;;;;19817:8:109;;:16;;:18;;;;;;;;;;;;;;:8;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:34;;;;:::i;:::-;:64;;:204;;;;-1:-1:-1;19987:34:109;;-1:-1:-1;;;19987:34:109;;;;;21882:25:150;;;-1:-1:-1;;;;;19987:22:109;;;;;21855:18:150;;19987:34:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19936:31;;-1:-1:-1;;;19936:31:109;;;;;21882:25:150;;;19970:13:109;;-1:-1:-1;;;;;19936:19:109;;;;;21855:18:150;;19936:31:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:47;;;;:::i;:::-;:85;;19817:204;:338;;;;-1:-1:-1;20122:33:109;;-1:-1:-1;;;20122:33:109;;;;;21882:25:150;;;-1:-1:-1;;;;;20122:21:109;;;;;21855:18:150;;20122:33:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20075:8;;:27;;-1:-1:-1;;;20075:27:109;;;;;21882:25:150;;;20105:13:109;;20075:8;;;-1:-1:-1;;;;;20075:8:109;;:15;;21855:18:150;;20075:27:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;;;;:::i;:::-;:80;;19817:338;:474;;;;-1:-1:-1;20256:35:109;;-1:-1:-1;;;20256:35:109;;;;;21882:25:150;;;-1:-1:-1;;;;;20256:23:109;;;;;21855:18:150;;20256:35:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20210:8;;:26;;-1:-1:-1;;;20210:26:109;;-1:-1:-1;;;;;13583:32:150;;;20210:26:109;;;13565:51:150;20239:13:109;;20210:8;;;;;:17;;13538:18:150;;20210:26:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;;;;:::i;:::-;:81;;19817:474;19771:520;19570:743;-1:-1:-1;;;;;19570:743:109:o;8843:3620::-;902:8;;:26;;;-1:-1:-1;;;902:26:109;;;;:8;;;;-1:-1:-1;;;;;902:8:109;;-1:-1:-1;;902:26:109;;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;880:49:109;:10;:49;872:65;;;;-1:-1:-1;;;872:65:109;;19544:2:150;872:65:109;;;19526:21:150;19583:1;19563:18;;;19556:29;-1:-1:-1;;;19601:18:150;;;19594:33;19644:18;;872:65:109;19342:326:150;872:65:109;8971:42:::1;9016:8:::0;;:40:::1;::::0;-1:-1:-1;;;9016:40:109;;::::1;::::0;::::1;21882:25:150::0;;;9016:8:109;;;::::1;-1:-1:-1::0;;;;;9016:8:109::1;::::0;:31:::1;::::0;21855:18:150;;9016:40:109::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9067:17;9087:8:::0;;:26:::1;::::0;;-1:-1:-1;;;9087:26:109;;;;8971:85;;-1:-1:-1;9067:17:109;;9087:8;;;::::1;-1:-1:-1::0;;;;;9087:8:109::1;::::0;-1:-1:-1;;9087:26:109::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;9087:37:109::1;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9067:59:::0;-1:-1:-1;9143:10:109;;;::::1;::::0;:72:::1;;-1:-1:-1::0;9157:8:109::1;::::0;9184;;9194:11:::1;::::0;::::1;::::0;9207:7:::1;::::0;;::::1;::::0;9157:58;;-1:-1:-1;;;9157:58:109;;-1:-1:-1;;;;;14506:32:150;;;9157:58:109::1;::::0;::::1;14488:51:150::0;14555:18;;;14548:34;;;;14598:18;;;14591:34;9157:8:109;;;::::1;;::::0;:26:::1;::::0;14461:18:150;;9157:58:109::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9139:3150;;;9232:39;9274:8:::0;;9301;;9311:11:::1;::::0;::::1;::::0;9324:7:::1;::::0;;::::1;::::0;9274:58;;-1:-1:-1;;;9274:58:109;;-1:-1:-1;;;;;14506:32:150;;;9274:58:109::1;::::0;::::1;14488:51:150::0;14555:18;;;14548:34;;;;14598:18;;;14591:34;9274:8:109;;;::::1;;::::0;:26:::1;::::0;14461:18:150;;9274:58:109::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9408:8:::0;;9418:11:::1;::::0;::::1;::::0;9431:7:::1;::::0;;::::1;::::0;9379:60;;-1:-1:-1;;;9379:60:109;;-1:-1:-1;;;;;14506:32:150;;;9379:60:109::1;::::0;::::1;14488:51:150::0;14555:18;;;14548:34;;;;14598:18;;;14591:34;9232:100:109;;-1:-1:-1;9347:29:109::1;::::0;9379:28;;::::1;::::0;::::1;::::0;14461:18:150;;9379:60:109::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9456:27;9486:8:::0;;:26:::1;::::0;;-1:-1:-1;;;9486:26:109;;;;9347:92;;-1:-1:-1;9456:27:109;;9486:8;;;::::1;-1:-1:-1::0;;;;;9486:8:109::1;::::0;-1:-1:-1;;9486:26:109::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9456:56:::0;-1:-1:-1;9608:36:109::1;9603:1;:41;;;;;;;;:::i;:::-;;:179;;9738:1;:5;;;:43;;9774:1;:7;;;9765:5;:16;;9603:179;;9738:43;9755:1;:7;;;9746:5;:16;;9603:179;;;9669:1;:5;;;:43;;9705:1;:7;;;9696:5;:16;;9669:43;;;9686:1;:7;;;9677:5;:16;;9669:43;9602:277;;;;;9804:75;9825:1;:8;;;9835:1;:11;;;9848:30;9867:1;:10;;;9848:1;:14;;;:18;;:30;;;;:::i;9804:75::-;9598:2680;;;9915:22;9940:5;9915:30;;10040:1;9983:10;-1:-1:-1::0;;;;;9983:23:109::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10025:11;::::0;::::1;::::0;9970:67:::1;::::0;-1:-1:-1;;;9970:67:109;;::::1;::::0;::::1;21882:25:150::0;;;;-1:-1:-1;;;;;9970:54:109;;;::::1;::::0;::::1;::::0;21855:18:150;;9970:67:109::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:71;9966:561;;;10146:9;::::0;10234:11:::1;::::0;::::1;::::0;10272:5:::1;::::0;::::1;::::0;10323:10:::1;::::0;::::1;::::0;10304:14:::1;::::0;::::1;::::0;10121:21:::1;::::0;-1:-1:-1;;;;;10146:9:109::1;::::0;:29:::1;::::0;10202:5;;10234:11;;10272:5;;10304:30:::1;::::0;:14;:18:::1;:30::i;:::-;10146:211;::::0;-1:-1:-1;;;;;;10146:211:109::1;::::0;;;;;;::::1;::::0;::::1;24466:25:150::0;;;;24507:18;;;24500:34;;;;24577:14;24570:22;24550:18;;;24543:50;24609:18;;;24602:34;24438:19;;10146:211:109::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10120:237:::0;-1:-1:-1;9966:561:109::1;::::0;-1:-1:-1;9966:561:109::1;;10463:44;10485:5;10492:7;10501:1;:5;;;10463:21;:44::i;:::-;10455:52;;9966:561;10547:16;451:4;10592:3;10577:1;:11;;;10567:1;:7;;;:21;;;;:::i;:::-;10566:29;;;;:::i;:::-;:42;;;;:::i;:::-;10547:61;;10634:1;:5;;;:70;;10693:11;10683:1;:7;;;:21;;;;:::i;:::-;10675:5;:29;10634:70;;;10661:11;10651:1;:7;;;:21;;;;:::i;:::-;10642:5;:30;10634:70;10629:1634;;10730:39;10772:469;10809:409;;;;;;;;10857:1;:8;;;-1:-1:-1::0;;;;;10809:409:109::1;;;;;10892:1;:11;;;10809:409;;;;10930:1;10809:409;;;;10958:1;10809:409;;;;10986:1;:14;;;10809:409;;;;11027:5;10809:409;;;;11059:1;:5;;;10809:409;;;;;;11091:1;:10;;;10809:409;;;;11128:1;:4;;;10809:409;;;;11159:1;:4;;;10809:409;;;;11190:1;10809:409;;::::0;10772:14:::1;:469::i;:::-;11270:14;::::0;::::1;::::0;10730:511;;-1:-1:-1;11270:18:109;11266:412:::1;;11317:8;::::0;11366:23:::1;::::0;;-1:-1:-1;;;11366:23:109;;;;11317:8;;;::::1;-1:-1:-1::0;;;;;11317:8:109::1;::::0;:21:::1;::::0;:8;;;;11366:21:::1;::::0;:23:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;11317:8;11366:23;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11392:14;::::0;::::1;::::0;11317:90:::1;::::0;;-1:-1:-1;11317:90:109;;;-1:-1:-1;;;;;;11317:90:109;;;-1:-1:-1;;;;;13885:15:150;;;11317:90:109::1;::::0;::::1;13867:34:150::0;13937:15;;;;13917:18;;;13910:43;13969:18;;;13962:34;11317:90:109;;13802:18:150;;;;;-1:-1:-1;;11317:90:109;;;;;;;-1:-1:-1;11317:90:109;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11492:90:109::1;::::0;;::::1;::::0;::::1;::::0;;11518:8;;-1:-1:-1;;;;;11492:90:109;;::::1;::::0;;::::1;11528:11:::0;;::::1;::::0;11492:90;;::::1;::::0;11541:7;;::::1;::::0;11492:90;;;;11550:31:::1;11492:90:::0;;;;11613:14:::1;::::0;::::1;::::0;11436:218;;-1:-1:-1;;;11436:218:109;;:25;;::::1;::::0;-1:-1:-1;11436:25:109::1;::::0;-1:-1:-1;11436:218:109::1;::::0;11613:14;11436:218:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11266:412;11702:8;::::0;;11736;;11746:11:::1;::::0;::::1;::::0;11759:7:::1;::::0;;::::1;::::0;11702:65;;-1:-1:-1;;;11702:65:109;;-1:-1:-1;;;;;14506:32:150;;;11702:65:109::1;::::0;::::1;14488:51:150::0;14555:18;;;14548:34;;;;14598:18;;;14591:34;11702:65:109;:8;;;::::1;::::0;;::::1;::::0;-1:-1:-1;;14461:18:150;;;;;11702:65:109;;;;;:8;;:65;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11861:382;11901:7;11935:1;:7;;;11969:10;12006:31;12064:10;:20;;;12111:10;:26;;;12168:1;:7;;;12203:17;11861:382;;;;;;;;;;;;;:::i;:::-;;;;;;;;10707:1556;10629:1634;9894:2384;;9598:2680;9217:3072;;;9139:3150;12301:8;-1:-1:-1::0;;;;;12301:26:109::1;;12328:70;;;;;;;;12354:1;:8;;;-1:-1:-1::0;;;;;12328:70:109::1;;;;;12364:1;:11;;;12328:70;;;;12377:1;:7;;;12328:70;;;;12386:1;:11;;;12328:70;;;;;;;;:::i;:::-;;;::::0;12301:98:::1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;12410:8:109::1;::::0;:45:::1;::::0;-1:-1:-1;;;12410:45:109;;::::1;::::0;::::1;21882:25:150::0;;;12410:8:109;;;::::1;-1:-1:-1::0;;;;;12410:8:109::1;::::0;-1:-1:-1;;;;21855:18:150;;12410:45:109::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8960:3503;;8843:3620:::0;;;:::o;18719:430::-;18818:4;18839:7;;;:100;;-1:-1:-1;18905:34:109;451:4;541:3;18905:34;:::i;:::-;18850:51;18872:9;18883:2;18887:3;18892:8;18850:21;:51::i;:::-;:89;18839:100;18835:287;;;18956:11;19014:3;18971:39;19001:8;18972:23;541:3;18972:9;:23;:::i;:::-;18971:29;;:39::i;:::-;18970:47;;;;:::i;:::-;18956:61;;19039:3;:71;;19076:9;19066:6;:19;;:44;;19109:1;19039:71;;19066:44;19088:18;19100:6;19088:9;:18;:::i;:::-;19039:71;;;19045:18;19057:6;19045:9;:18;:::i;:::-;19032:78;;;;;18835:287;-1:-1:-1;19139:2:109;18719:430;;;;;;;:::o;12656:4660::-;902:8;;:26;;;-1:-1:-1;;;902:26:109;;;;:8;;;;-1:-1:-1;;;;;902:8:109;;-1:-1:-1;;902:26:109;;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;880:49:109;:10;:49;872:65;;;;-1:-1:-1;;;872:65:109;;19544:2:150;872:65:109;;;19526:21:150;19583:1;19563:18;;;19556:29;-1:-1:-1;;;19601:18:150;;;19594:33;19644:18;;872:65:109;19342:326:150;872:65:109;12785:42:::1;12830:8:::0;;:40:::1;::::0;-1:-1:-1;;;12830:40:109;;::::1;::::0;::::1;21882:25:150::0;;;12830:8:109;;;::::1;-1:-1:-1::0;;;;;12830:8:109::1;::::0;:31:::1;::::0;21855:18:150;;12830:40:109::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12881:30;12914:8:::0;;12934;;12944:11:::1;::::0;::::1;::::0;12957:7:::1;::::0;;::::1;::::0;12914:51;;-1:-1:-1;;;12914:51:109;;-1:-1:-1;;;;;14506:32:150;;;12914:51:109::1;::::0;::::1;14488::150::0;14555:18;;;14548:34;;;;14598:18;;;14591:34;12914:51:109;12934:8;;-1:-1:-1;12881:30:109;;12914:8;;;::::1;;::::0;:19:::1;::::0;14461:18:150;;;;;12914:51:109::1;::::0;;;;;;;;:8;:51;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12978:27;13008:8:::0;;:26:::1;::::0;;-1:-1:-1;;;13008:26:109;;;;12881:84;;-1:-1:-1;12978:27:109;;13008:8;;;::::1;-1:-1:-1::0;;;;;13008:8:109::1;::::0;-1:-1:-1;;13008:26:109::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12978:56;;13045:17;13065:10;-1:-1:-1::0;;;;;13065:21:109::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13045:43:::0;-1:-1:-1;13105:10:109;;;::::1;::::0;:28:::1;;;13132:1;13119;:10;;;:14;13105:28;13101:4041;;;13150:34;13187:8:::0;;13211;;13221:11:::1;::::0;::::1;::::0;13234:7:::1;::::0;;::::1;::::0;13187:55;;-1:-1:-1;;;13187:55:109;;-1:-1:-1;;;;;14506:32:150;;;13187:55:109::1;::::0;::::1;14488:51:150::0;14555:18;;;14548:34;;;;14598:18;;;14591:34;13187:8:109;;;::::1;;::::0;-1:-1:-1;;14461:18:150;;13187:55:109::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13150:92;;13271:11;13285:10;-1:-1:-1::0;;;;;13285:23:109::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13331:11;::::0;::::1;::::0;13285:58:::1;::::0;-1:-1:-1;;;13285:58:109;;::::1;::::0;::::1;21882:25:150::0;;;;-1:-1:-1;;;;;13285:45:109;;;::::1;::::0;::::1;::::0;21855:18:150;;13285:58:109::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:382;;13662:5;13285:382;;;13378:29;13363:1;:11;;;:44;;;;;;;;:::i;:::-;;:279;;13432:29;13417:1;:11;;;:44;;;;;;;;:::i;:::-;;:225;;13637:5;13363:279;;13417:225;13486:1;:5;;;:27;;;;;13502:1;:11;;;13495:1;:4;;;:18;13486:27;13485:63;;;;13520:1;:5;;;13519:6;:28;;;;;13536:1;:11;;;13529:1;:4;;;:18;13519:28;13485:128;;13609:1;:4;;;13363:279;;13485:128;13576:5;13363:279;;;13410:1;:4;;;13363:279;13271:396;;13684:12;13699:61;13721:1;:11;;;13734:6;13742:1;:5;;;13749:1;:10;;;13699:21;:61::i;:::-;13684:76:::0;-1:-1:-1;13775:12:109::1;13823:30;13808:1;:11;;;:45;;;;;;;;:::i;:::-;;13804:1070;;;13890:9;::::0;13947:8;;13978:11:::1;::::0;::::1;::::0;14012:7:::1;::::0;;::::1;::::0;14042:11:::1;::::0;::::1;::::0;14076:5:::1;::::0;::::1;::::0;14104:17:::1;::::0;::::1;::::0;14144:10:::1;::::0;::::1;::::0;13890:283;;-1:-1:-1;;;13890:283:109;;-1:-1:-1;;;;;16413:32:150;;;13890:283:109::1;::::0;::::1;16395:51:150::0;16462:18;;;16455:34;;;;16505:18;;;16498:34;;;;16548:18;;;16541:34;;;;16619:14;16612:22;16591:19;;;16584:51;16651:19;;;16644:35;16695:19;;;16688:35;13874:13:109::1;::::0;13890:9;;;::::1;::::0;:34:::1;::::0;16367:19:150;;13890:283:109::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13874:299;;14203:1;:5;;;:45;;14240:8;14231:5;:17;;14203:45;;;14220:8;14211:5;:17;;14203:45;14202:89;;14290:1;14202:89;;;14284:3;14273:7;;14253:1;:17;;;:27;;;;:::i;:::-;14252:35;;;;:::i;:::-;14192:99;;13855:452;13804:1070;;;14358:29;14343:1;:11;;;:44;;;;;;;;:::i;:::-;;:77;;;;;14419:1;14412;:4;;;:8;14343:77;:141;;;;;14446:1;:5;;;:37;;14479:1;:4;;;14470:5;:13;;14446:37;;;14463:1;:4;;;14454:5;:13;;14446:37;14342:319;;;-1:-1:-1::0;14526:29:109::1;14511:1;:11;;;:44;;;;;;;;:::i;:::-;;:81;;;;;14591:1;14584;:4;;;:8;14511:81;:149;;;;;14622:1;:5;;;:37;;14655:1;:4;;;14646:5;:13;;14622:37;;;14639:1;:4;;;14630:5;:13;;14622:37;14342:516;;14857:1;14342:516;;;451:4;14792:3;14706:10;-1:-1:-1::0;;;;;14706:23:109::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14751:11;::::0;::::1;::::0;14706:57:::1;::::0;-1:-1:-1;;;14706:57:109;;::::1;::::0;::::1;21882:25:150::0;;;;-1:-1:-1;;;;;14706:44:109;;;::::1;::::0;::::1;::::0;21855:18:150;;14706:57:109::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14686:1;:17;;;:77;;;;:::i;:::-;14685:110;;;;:::i;:::-;:148;;;;:::i;:::-;14332:526;;13804:1070;14909:30;14894:1;:11;;;:45;;;;;;;;:::i;:::-;;:60;;;;;14953:1;14943:7;:11;14894:60;14890:894;;;14975:21;14999:268;15038:1;15062:8;15093:1;:17;;;15133:7;15202;;15190;;15175:12;;:22;;;;:::i;:::-;15164:34;::::0;:7;:34:::1;:::i;:::-;15163:46;;;;:::i;:::-;15232:1;:16;;;14999;:268::i;:::-;14975:292;;15288:8;-1:-1:-1::0;;;;;15288:25:109::1;;15336:70;;;;;;;;15362:1;:8;;;-1:-1:-1::0;;;;;15336:70:109::1;;;;;15372:1;:11;;;15336:70;;;;15385:1;:7;;;15336:70;;;;15394:1;:11;;;15336:70;;;;;;;;:::i;:::-;;;::::0;15429:7:::1;15288:167;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15481:287;15517:7;15547:5;15575:1;15599;:11;;;15633:6;15662:1;:17;;;15702:8;15733:16;15481:287;;;;;;;;;;;;;:::i;:::-;;;;;;;;14956:828;14890:894;15819:30;15804:1;:11;;;:45;;;;;;;;:::i;:::-;;;:60;;;;;15863:1;15853:7;:11;15804:60;15800:1331;;;647:4;15913:7;:26;:56;;15962:7;15913:56;;;647:4;15913:56;15903:66;;15988:7;16054:3;451:4;16024:8;16003:1;:17;;;15999:33;;;;:::i;:::-;15998:53;;;;:::i;:::-;:59;;;;:::i;:::-;15988:69;;16076:10;16097:1:::0;16091:3:::1;:7;16090:48;;;;-1:-1:-1::0;16120:17:109::1;::::0;::::1;::::0;16104:8:::1;:3:::0;-1:-1:-1;;16104:8:109::1;:::i;:::-;16103:35;16090:48;16089:162;;16199:10;-1:-1:-1::0;;;;;16199:23:109::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16239:11;::::0;::::1;::::0;16199:52:::1;::::0;-1:-1:-1;;;16199:52:109;;::::1;::::0;::::1;21882:25:150::0;;;;-1:-1:-1;;;;;16199:39:109;;;::::1;::::0;::::1;::::0;21855:18:150;;16199:52:109::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16146:50;16185:1;:10;;;16176:3;16155:1;:17;;;16151:28;;;;:::i;:::-;16146:38:::0;::::1;:50::i;:::-;:105;;;;:::i;:::-;16089:162;;;16142:1;16089:162;16076:175;;16272:21;16296:246;16335:1;16359:8;16390:1;:17;;;16430:7;451:4;16468:3;16460:5;:11;;;;:::i;:::-;:24;;;;:::i;:::-;16507:1;:16;;;16296;:246::i;:::-;16272:270;;16563:8;-1:-1:-1::0;;;;;16563:25:109::1;;16611:70;;;;;;;;16637:1;:8;;;-1:-1:-1::0;;;;;16611:70:109::1;;;;;16647:1;:11;;;16611:70;;;;16660:1;:7;;;16611:70;;;;16669:1;:11;;;16611:70;;;;;;;;:::i;:::-;;;::::0;16704:7:::1;16563:167;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16754:361;16790:7;16820:5;16922:1;16946;:11;;;16980:6;17009:1;:17;;;17049:8;17080:16;16754:361;;;;;;;;;;;;;:::i;:::-;;;;;;;;15866:1265;;;15800:1331;13135:4007;;;;13101:4041;17154:8;-1:-1:-1::0;;;;;17154:26:109::1;;17181:70;;;;;;;;17207:1;:8;;;-1:-1:-1::0;;;;;17181:70:109::1;;;;;17217:1;:11;;;17181:70;;;;17230:1;:7;;;17181:70;;;;17239:1;:11;;;17181:70;;;;;;;;:::i;:::-;;;::::0;17154:98:::1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;17263:8:109::1;::::0;:45:::1;::::0;-1:-1:-1;;;17263:45:109;;::::1;::::0;::::1;21882:25:150::0;;;17263:8:109;;;::::1;-1:-1:-1::0;;;;;17263:8:109::1;::::0;-1:-1:-1;17263:36:109::1;::::0;-1:-1:-1;21855:18:150;;17263:45:109::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12774:4542;;;;12656:4660:::0;;;:::o;19157:405::-;19256:4;19282:1;19277:2;:6;:103;;;;-1:-1:-1;19341:32:109;451:4;496:2;19341:32;:::i;:::-;:39;;-1:-1:-1;;19341:39:109;:::i;:::-;19287:51;19309:9;19320:2;19324:3;19329:8;19287:21;:51::i;:::-;:93;19277:103;19273:262;;;19397:11;19453:3;19412:37;19440:8;19413:21;496:2;19413:9;:21;:::i;19412:37::-;19411:45;;;;:::i;:::-;19397:59;;19478:3;:45;;19505:18;19517:6;19505:9;:18;:::i;19478:45::-;19484:18;19496:6;19484:9;:18;:::i;17506:767::-;902:8;;:26;;;-1:-1:-1;;;902:26:109;;;;:8;;;;-1:-1:-1;;;;;902:8:109;;-1:-1:-1;;902:26:109;;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;880:49:109;:10;:49;872:65;;;;-1:-1:-1;;;872:65:109;;19544:2:150;872:65:109;;;19526:21:150;19583:1;19563:18;;;19556:29;-1:-1:-1;;;19601:18:150;;;19594:33;19644:18;;872:65:109;19342:326:150;872:65:109;17621:27:::1;17651:8:::0;;:26:::1;::::0;;-1:-1:-1;;;17651:26:109;;;;:8;;;::::1;-1:-1:-1::0;;;;;17651:8:109::1;::::0;-1:-1:-1;;17651:26:109::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17726:35;::::0;-1:-1:-1;;;17726:35:109;;::::1;::::0;::::1;21882:25:150::0;;;17621:56:109;;-1:-1:-1;17688:35:109::1;::::0;-1:-1:-1;;;;;17726:26:109;::::1;::::0;::::1;::::0;21855:18:150;;17726:35:109::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17774:30;17807:8:::0;;17827;;17837:11:::1;::::0;::::1;::::0;17850:7:::1;::::0;;::::1;::::0;17807:51;;-1:-1:-1;;;17807:51:109;;-1:-1:-1;;;;;14506:32:150;;;17807:51:109::1;::::0;::::1;14488::150::0;14555:18;;;14548:34;;;;14598:18;;;14591:34;17807:51:109;17827:8;;-1:-1:-1;17774:30:109;;17807:8;;;::::1;;::::0;:19:::1;::::0;14461:18:150;;;;;17807:51:109::1;::::0;;;;;;;;:8;:51;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17774:84:::0;-1:-1:-1;17887:10:109;;;::::1;::::0;:41:::1;;;17923:1;:5;;;17914:14;;:1;:5;;;:14;;;17887:41;:84;;;;;17960:1;:11;;;17945:1;:11;;;:26;17887:84;:146;;;;;17989:1;:5;;;:43;;18027:5;18016:1;:7;;;:16;;17989:43;;;18008:5;17997:1;:7;;;:16;;17989:43;17869:340;;;18060:8;::::0;18078;;18088:11:::1;::::0;::::1;::::0;18101:7:::1;::::0;;::::1;::::0;18110::::1;::::0;::::1;::::0;18060:58;;-1:-1:-1;;;18060:58:109;;-1:-1:-1;;;;;15913:32:150;;;18060:58:109::1;::::0;::::1;15895:51:150::0;15962:18;;;15955:34;;;;16005:18;;;15998:34;16048:18;;;16041:34;18060:8:109;;;::::1;;::::0;:17:::1;::::0;15867:19:150;;18060:58:109::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;18157:8:109;;18167:11:::1;::::0;;::::1;::::0;18180:7:::1;::::0;;::::1;::::0;18189::::1;::::0;::::1;::::0;18138:59;;25660:25:150;;;25701:18;;;25694:34;;;;25744:18;;;25737:34;25802:2;25787:18;;25780:34;;;;18138:59:109;-1:-1:-1;;;;;18138:59:109;;::::1;::::0;-1:-1:-1;18138:59:109::1;::::0;-1:-1:-1;18138:59:109;;;25647:3:150;18138:59:109;;::::1;17869:340;18221:44;::::0;-1:-1:-1;;;18221:44:109;;::::1;::::0;::::1;21882:25:150::0;;;-1:-1:-1;;;;;18221:35:109;::::1;::::0;-1:-1:-1;;21855:18:150;;18221:44:109::1;21736:177:150::0;18454:257:109;18559:1;18549:7;:11;:77;;;;-1:-1:-1;18586:8:109;;:26;;;-1:-1:-1;;;18586:26:109;;;;:8;;;;-1:-1:-1;;;;;18586:8:109;;-1:-1:-1;;18586:26:109;;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18586:37:109;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18564:62:109;:10;:62;18549:77;18541:93;;;;-1:-1:-1;;;18541:93:109;;18121:2:150;18541:93:109;;;18103:21:150;18160:1;18140:18;;;18133:29;-1:-1:-1;;;18178:18:150;;;18171:33;18221:18;;18541:93:109;17919:326:150;18541:93:109;18645:8;;:23;;;-1:-1:-1;;;18645:23:109;;;;:8;;;;-1:-1:-1;;;;;18645:8:109;;:21;;:23;;;;;;;;;;;;;;;:8;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:58;;-1:-1:-1;;;18645:58:109;;-1:-1:-1;;;;;14199:32:150;;;18645:58:109;;;14181:51:150;14248:18;;;14241:34;;;18645:40:109;;;;;;;14154:18:150;;18645:58:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18454:257;;:::o;4536:2192::-;902:8;;:26;;;-1:-1:-1;;;902:26:109;;;;:8;;;;-1:-1:-1;;;;;902:8:109;;-1:-1:-1;;902:26:109;;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;880:49:109;:10;:49;872:65;;;;-1:-1:-1;;;872:65:109;;19544:2:150;872:65:109;;;19526:21:150;19583:1;19563:18;;;19556:29;-1:-1:-1;;;19601:18:150;;;19594:33;19644:18;;872:65:109;19342:326:150;872:65:109;4658:43:::1;4704:8:::0;;:41:::1;::::0;-1:-1:-1;;;4704:41:109;;::::1;::::0;::::1;21882:25:150::0;;;4704:8:109;;;::::1;-1:-1:-1::0;;;;;4704:8:109::1;::::0;:32:::1;::::0;21855:18:150;;4704:41:109::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4658:87;;4760:1;:7;;;4771:1;4760:12;4756:51;;;4789:7;3269:483:24::0;1203:256:109;;:::o;4756:51::-:1;4856:7:::0;;:14;-1:-1:-1;;;;;4856:28:109::1;4853:60;;4886:27;::::0;-1:-1:-1;;;4886:27:109;;19198:2:150;4886:27:109::1;::::0;::::1;19180:21:150::0;19237:2;19217:18;;;19210:30;-1:-1:-1;;;19256:18:150;;;19249:47;19313:18;;4886:27:109::1;18996:341:150::0;4853:60:109::1;4957:7:::0;;4924:30:::1;5005:8:::0;;:26:::1;::::0;;-1:-1:-1;;;5005:26:109;;;;:8;;;::::1;-1:-1:-1::0;;;;;5005:8:109::1;::::0;-1:-1:-1;;5005:26:109::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4975:56;;5042:24;5069:10;-1:-1:-1::0;;;;;5069:23:109::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5162:11;::::0;;::::1;::::0;5135:39:::1;::::0;;-1:-1:-1;;;5135:39:109;;::::1;::::0;::::1;21882:25:150::0;;;;5135:39:109;5042:52;;-1:-1:-1;5177:1:109::1;::::0;-1:-1:-1;;;;;5135:26:109;::::1;::::0;-1:-1:-1;;21855:18:150;;;;;5135:39:109;;;;;;:26;:39;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;5131:424;;;5230:9;::::0;5302:11:::1;::::0;::::1;::::0;5332:5:::1;::::0;::::1;::::0;5379:10:::1;::::0;::::1;::::0;5356:18:::1;::::0;::::1;::::0;5205:21:::1;::::0;-1:-1:-1;;;;;5230:9:109::1;::::0;:29:::1;::::0;5278:5;;5302:11;;5332:5;;5356:34:::1;::::0;:18;:22:::1;:34::i;:::-;5230:175;::::0;-1:-1:-1;;;;;;5230:175:109::1;::::0;;;;;;::::1;::::0;::::1;24466:25:150::0;;;;24507:18;;;24500:34;;;;24577:14;24570:22;24550:18;;;24543:50;24609:18;;;24602:34;24438:19;;5230:175:109::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5422:11;::::0;::::1;:30:::0;-1:-1:-1;5131:424:109::1;;;5499:44;5521:5;5528:7;5537:1;:5;;;5499:21;:44::i;:::-;5485:11;::::0;::::1;:58:::0;5131:424:::1;5567:16;451:4;5618:3;5603:1;:11;;;5587:1;:13;;;:27;;;;:::i;:::-;5586:35;;;;:::i;:::-;:48;;;;:::i;:::-;5567:67:::0;-1:-1:-1;5665:10:109;;;:122:::1;;;5693:1;:5;;;:93;;5775:11;5759:1;:13;;;:27;;;;:::i;:::-;5745:1;:11;;;:41;5693:93;;;5731:11;5715:1;:13;;;:27;;;;:::i;:::-;5701:1;:11;;;:41;5693:93;5665:204;;;;5812:1;5805;:4;;;:8;:63;;;;;5818:1;:5;;;:49;;5863:1;:4;;;5848:1;:11;;;:19;;5818:49;;;5841:1;:4;;;5826:1;:11;;;:19;;5818:49;5665:286;;;;5894:1;5887;:4;;;:8;:63;;;;;5900:1;:5;;;:49;;5945:1;:4;;;5930:1;:11;;;:19;;5900:49;;;5923:1;:4;;;5908:1;:11;;;:19;;5900:49;5665:383;;;;5969:79;5990:1;:8;;;6000:1;:11;;;6013:34;6036:1;:10;;;6013:1;:18;;;:22;;:34;;;;:::i;5969:79::-;5968:80;5665:383;5647:1009;;;6157:8;::::0;6198;;6208:18:::1;::::0;::::1;::::0;6157:70:::1;::::0;-1:-1:-1;;;6157:70:109;;:8;;;::::1;-1:-1:-1::0;;;;;6157:8:109;;::::1;:70;::::0;::::1;13867:34:150::0;;;13937:15;;13917:18;;;13910:43;13969:18;;;13962:34;6157:8:109;:21:::1;::::0;13802:18:150;;6157:70:109::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6275:8:109;;6285:11:::1;::::0;;::::1;::::0;6247:50:::1;::::0;;23746:25:150;;;23787:18;;;23780:34;;;;6247:50:109;;-1:-1:-1;;;;;6247:50:109;;::::1;::::0;-1:-1:-1;6247:50:109::1;::::0;-1:-1:-1;6247:50:109;;;;;;::::1;5647:1009;;;6332:39;6374:17;6389:1;6374:14;:17::i;:::-;6332:59;;6413:231;6446:7;6472:10;6501:4;6524:10;:20;;;6563:10;:26;;;6608:1;6628::::0;6413:231:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;6317:339;5647:1009;6668:8;::::0;:52:::1;::::0;-1:-1:-1;;;6668:52:109;;::::1;::::0;::::1;22086:25:150::0;;;6715:4:109::1;22127:18:150::0;;;22120:50;6668:8:109;;;::::1;-1:-1:-1::0;;;;;6668:8:109::1;::::0;:37:::1;::::0;22059:18:150;;6668:52:109::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4647:2081;;;;;4536:2192:::0;;;:::o;6912:1749::-;902:8;;:26;;;-1:-1:-1;;;902:26:109;;;;:8;;;;-1:-1:-1;;;;;902:8:109;;-1:-1:-1;;902:26:109;;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;880:49:109;:10;:49;872:65;;;;-1:-1:-1;;;872:65:109;;19544:2:150;872:65:109;;;19526:21:150;19583:1;19563:18;;;19556:29;-1:-1:-1;;;19601:18:150;;;19594:33;19644:18;;872:65:109;19342:326:150;872:65:109;7035:43:::1;7081:8:::0;;:41:::1;::::0;-1:-1:-1;;;7081:41:109;;::::1;::::0;::::1;21882:25:150::0;;;7081:8:109;;;::::1;-1:-1:-1::0;;;;;7081:8:109::1;::::0;:32:::1;::::0;21855:18:150;;7081:41:109::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7133:30;7166:8:::0;;7186:7;;:14;;7202:17:::1;::::0;::::1;::::0;7221:13:::1;::::0;;::::1;::::0;7166:69;;-1:-1:-1;;;7166:69:109;;-1:-1:-1;;;;;14506:32:150;;;7166:69:109::1;::::0;::::1;14488:51:150::0;14555:18;;;14548:34;;;;14598:18;;;14591:34;;;;7186:7:109;;-1:-1:-1;7133:30:109;;7166:8;;;::::1;;::::0;:19:::1;::::0;14461:18:150;;7166:69:109::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7285:7:::0;;:14;7133:102;;-1:-1:-1;;;;;;7285:28:109::1;7282:60;;7315:27;::::0;-1:-1:-1;;;7315:27:109;;19198:2:150;7315:27:109::1;::::0;::::1;19180:21:150::0;19237:2;19217:18;;;19210:30;-1:-1:-1;;;19256:18:150;;;19249:47;19313:18;;7315:27:109::1;18996:341:150::0;7282:60:109::1;7357:10:::0;;;::::1;::::0;:28:::1;;;7384:1;7371;:10;;;:14;7357:28;7353:1237;;;7402:34;7439:8:::0;;7463;;7473:11:::1;::::0;::::1;::::0;7486:7:::1;::::0;;::::1;::::0;7439:55;;-1:-1:-1;;;7439:55:109;;-1:-1:-1;;;;;14506:32:150;;;7439:55:109::1;::::0;::::1;14488:51:150::0;14555:18;;;14548:34;;;;14598:18;;;14591:34;7439:8:109;;;::::1;;::::0;-1:-1:-1;;14461:18:150;;7439:55:109::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7509:27;7539:8:::0;;:26:::1;::::0;;-1:-1:-1;;;7539:26:109;;;;7402:92;;-1:-1:-1;7509:27:109;;7539:8;;;::::1;-1:-1:-1::0;;;;;7539:8:109::1;::::0;-1:-1:-1;;7539:26:109::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7509:56;;7582:11;7596:60;7618:1;:11;;;7631:5;7638:1;:5;;;7645:1;:10;;;7596:21;:60::i;:::-;7582:74;;7685:7;7756:3;451:4;7727:7;7700:1;:7;;;:23;;;7696:38;;;;:::i;:::-;7695:58;;;;:::i;:::-;:64;;;;:::i;:::-;7685:74;;7774:16;7801:1:::0;7795:3:::1;:7;7794:54;;;;-1:-1:-1::0;7824:7:109;;:23:::1;;::::0;7808:8:::1;:3:::0;-1:-1:-1;;7808:8:109::1;:::i;:::-;7807:41;7794:54;7793:119;;7856:56;7901:1;:10;;;7892:3;7865:1;:7;;;:23;;;7861:34;;;;:::i;7856:56::-;7793:119;;;7852:1;7793:119;7774:138;;7929:21;7953:280;7988:1;8008:7;8034:1;:7;;;:23;;;8076:1;451:4;8167:3;8111:10;-1:-1:-1::0;;;;;8111:23:109::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8151:11;::::0;::::1;::::0;8111:52:::1;::::0;-1:-1:-1;;;8111:52:109;;::::1;::::0;::::1;21882:25:150::0;;;;-1:-1:-1;;;;;8111:39:109;;;::::1;::::0;::::1;::::0;21855:18:150;;8111:52:109::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8097:66;::::0;:11;:66:::1;:::i;:::-;8096:74;;;;:::i;:::-;:87;;;;:::i;:::-;8202:1;:16;;;7953;:280::i;:::-;7929:304;;8255:226;8288:7;8314:1;8334:5;8358;8382:1;:7;;;:23;;;8424:7;8450:16;8255:226;;;;;;;;;;;;:::i;:::-;;;;;;;;7387:1106;;;;;;7353:1237;;;8556:8:::0;;8566:11:::1;::::0;;::::1;::::0;8528:50:::1;::::0;;23746:25:150;;;23787:18;;;23780:34;;;;8528:50:109;;-1:-1:-1;;;;;8528:50:109;;::::1;::::0;::::1;::::0;;;;;;;;::::1;7353:1237;8600:8;::::0;;:53:::1;::::0;-1:-1:-1;;;8600:53:109;;::::1;::::0;::::1;22086:25:150::0;;;22127:18;;;22120:50;;;;8600:8:109;;::::1;-1:-1:-1::0;;;;;8600:8:109::1;::::0;:37:::1;::::0;22059:18:150;;8600:53:109::1;21918:258:150::0;24795:522:109;24951:5;24969:8;24980:3;:81;;25026:34;25047:12;25030:9;25026:34;:::i;:::-;24980:81;;;24987:34;25011:9;24991:12;24987:34;:::i;:::-;24969:92;-1:-1:-1;25072:11:109;25086:24;451:4;-1:-1:-1;;25086:24:109;:::i;:::-;25072:38;-1:-1:-1;25121:11:109;25135:34;451:4;541:3;25135:34;:::i;:::-;25121:48;-1:-1:-1;25235:9:109;25202:24;451:4;25217:8;25202:14;:24::i;:::-;25185:10;:4;25192:3;25185:10;:::i;:::-;:42;;;;:::i;:::-;25184:61;;;;:::i;:::-;25180:65;;25264:7;25260:1;:11;:49;;25288:7;25284:1;:11;:25;;25308:1;25260:49;;25284:25;25298:7;25260:49;;;25274:7;25260:49;25256:53;24795:522;-1:-1:-1;;;;;;;;24795:522:109:o;130:127:127:-;190:4;119;214:13;218:9;214:1;:13;:::i;:::-;213:37;;;;:::i;:::-;206:44;;130:127;;;;;:::o;25325:238:109:-;25418:4;;451;25474:3;25453:17;25462:8;25453:6;:17;:::i;:::-;25452:25;;;;:::i;:::-;:38;;;;:::i;:::-;25435:55;;25508:5;:47;;25537:18;25546:9;25537:6;:18;:::i;:::-;25508:47;;;25516:18;25525:9;25516:6;:18;:::i;20495:1685::-;20573:28;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20573:28:109;20614:27;20644:8;;:26;;;-1:-1:-1;;;20644:26:109;;;;:8;;;;-1:-1:-1;;;;;20644:8:109;;-1:-1:-1;;20644:26:109;;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20614:56;;20681:24;20708:10;-1:-1:-1;;;;;20708:23:109;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20765:15;20746:16;;;:34;20818:8;;20858:13;;20886:16;;;;20945:15;;;;20917:23;;;;20681:52;;-1:-1:-1;20818:8:109;;;;-1:-1:-1;;;;;20818:8:109;;:25;;20917:44;;:23;:27;:44::i;:::-;21014:10;;;;20818:217;;-1:-1:-1;;;;;;20818:217:109;;;;;;;-1:-1:-1;;;;;15355:32:150;;;20818:217:109;;;15337:51:150;15404:18;;;15397:34;;;;15447:18;;;15440:34;20976:4:109;15490:18:150;;;15483:50;;;15549:19;;;15542:51;15637:14;15630:22;15609:19;;;15602:51;15309:19;;20818:217:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20791:6;:23;;:244;;;;;;;:::i;:::-;;;-1:-1:-1;21048:8:109;;:23;;;-1:-1:-1;;;21048:23:109;;;;:8;;;;-1:-1:-1;;;;;21048:8:109;;:21;;:23;;;;;;;;;;;;;;;:8;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;21048:38:109;;21087:44;21115:6;:15;;;21087:6;:23;;;:27;;:44;;;;:::i;:::-;21048:84;;;;;;;;;;;;;21882:25:150;;21870:2;21855:18;;21736:177;21048:84:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21143:8:109;;:23;;;-1:-1:-1;;;21143:23:109;;;;:8;;;;-1:-1:-1;;;;;21143:8:109;;-1:-1:-1;21143:21:109;;-1:-1:-1;21143:23:109;;;;;;;;;;;;;;;:8;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21189:13;;21204:23;;;;21143:85;;-1:-1:-1;;;21143:85:109;;-1:-1:-1;;;;;14199:32:150;;;21143:85:109;;;14181:51:150;14248:18;;;14241:34;;;;21143:45:109;;;;;14154:18:150;;21143:85:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;21266:23:109;;;;;21241:22;;;:48;-1:-1:-1;21300:27:109;;;;21355:8;21385:13;;-1:-1:-1;21400:16:109;;;21355:62;;-1:-1:-1;;;21355:62:109;;-1:-1:-1;;;;;14199:32:150;;;21355:62:109;;;14181:51:150;14248:18;;;14241:34;;;;21355:8:109;;;;;;:29;;14154:18:150;;21355:62:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21340:6;:12;;:77;;;;;21440:67;21450:6;:16;;;21468:6;:15;;;21485:6;:9;;;21496:6;:10;;;21440:9;:67::i;:::-;21428:6;:9;;:79;;;;;21530:67;21540:6;:16;;;21558:6;:15;;;21575:6;:9;;;21586:6;:10;;;21530:9;:67::i;:::-;21518:9;;;:79;21610:9;;21645:13;;21660:16;;;;21678:12;;;;;21692:10;;;;21610:93;;-1:-1:-1;;;21610:93:109;;-1:-1:-1;;;;;14879:32:150;;;21610:93:109;;;14861:51:150;14928:18;;;14921:34;;;;14971:18;;;14964:34;15041:14;15034:22;15014:18;;;15007:50;21610:9:109;;;:34;;14833:19:150;;21610:93:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;21742:16:109;;;;21787:15;;;;21760:22;;;;-1:-1:-1;;;;;21716:25:109;;;;;21742:16;;21760:43;;:26;:43::i;:::-;21805:10;;;;21716:106;;-1:-1:-1;;;;;;21716:106:109;;;;;;;;;;24044:25:150;;;;24085:18;;;24078:34;;;;24155:14;24148:22;24128:18;;;24121:50;21817:4:109;24187:18:150;;;24180:50;24016:19;;21716:106:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21835:8:109;;21890:243;;;-1:-1:-1;21890:243:109;;;;;21961:15;;;;21934:22;;;;21835:8;;;;-1:-1:-1;;;;;21835:8:109;;-1:-1:-1;21835:19:109;;-1:-1:-1;21961:15:109;;21890:243;;21934:43;;:22;:26;:43::i;:::-;21890:243;;21996:12;21890:243;;;;;;;;;;;;;;-1:-1:-1;21890:243:109;;;;;22082:9;:36;;-1:-1:-1;;;22082:36:109;;21890:243;;;;;-1:-1:-1;;;;;22082:9:109;;;;:28;;:36;;22111:6;;22082:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21890:243;;;21835:309;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22165:6:109;;20495:1685;-1:-1:-1;;;;;;20495:1685:109:o;263:127:127:-;323:4;374:9;347:23;119:4;347:1;:23;:::i;22688:2099:109:-;22938:21;23116:8;;23157:13;;23235:15;;;;22938:21;;;;;;23116:8;;;;-1:-1:-1;;;;;23116:8:109;;:22;;23157:13;23189:11;;23219:32;;:11;;:15;:32::i;:::-;23116:150;;;-1:-1:-1;;;;;;;23116:150:109;;;;;;-1:-1:-1;;;;;14506:32:150;;;;23116:150:109;;;14488:51:150;14555:18;;;14548:34;;;;14598:18;;;14591:34;23116:150:109;;14461:18:150;;;;;23116:150:109;;;;;-1:-1:-1;23116:150:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23354:9;;23071:195;;-1:-1:-1;23071:195:109;-1:-1:-1;23295:7:109;;-1:-1:-1;;;;;23354:9:109;:23;23396:6;23421:11;23451:14;23484:32;23501:15;23071:195;23484:32;:::i;:::-;23535:5;23354:201;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23317:238;;-1:-1:-1;23317:238:109;;-1:-1:-1;23317:238:109;-1:-1:-1;23576:20:109;;23572:134;;23617:8;;:23;;;-1:-1:-1;;;23617:23:109;;;;:8;;;;-1:-1:-1;;;;;23617:8:109;;:21;;:23;;;;;;;;;;;;;;;:8;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23658:13;;23617:73;;-1:-1:-1;;;23617:73:109;;-1:-1:-1;;;;;14199:32:150;;;23617:73:109;;;14181:51:150;14248:18;;;14241:34;;;23617:40:109;;;;;14154:18:150;;23617:73:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23572:134;23730:1;23724:3;:7;23720:300;;;23752:8;;:23;;;-1:-1:-1;;;23752:23:109;;;;:8;;;;-1:-1:-1;;;;;23752:8:109;;:21;;:23;;;;;;;;;;;;;;;:8;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23752:39:109;;23797:4;23798:3;23797:4;:::i;:::-;23752:57;;-1:-1:-1;;;;;;23752:57:109;;;;;;;;;;22086:25:150;;;;23804:4:109;22127:18:150;;;22120:50;22059:18;;23752:57:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23828:8:109;;:23;;;-1:-1:-1;;;23828:23:109;;;;:8;;;;-1:-1:-1;;;;;23828:8:109;;-1:-1:-1;23828:21:109;;-1:-1:-1;23828:23:109;;;;;;;;;;;;;;;:8;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23828:39:109;;23868:27;23880:15;23868:9;:27;:::i;:::-;23828:75;;-1:-1:-1;;;;;;23828:75:109;;;;;;;;;;22086:25:150;;;;23897:5:109;22127:18:150;;;22120:50;22059:18;;23828:75:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23720:300;;;23929:13;;23925:95;;23945:8;;:23;;;-1:-1:-1;;;23945:23:109;;;;:8;;;;-1:-1:-1;;;;;23945:8:109;;:21;;:23;;;;;;;;;;;;;;;:8;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23945:39:109;;23985:27;23997:15;23985:9;:27;:::i;:::-;23945:75;;-1:-1:-1;;;;;;23945:75:109;;;;;;;;;;22086:25:150;;;;24014:5:109;22127:18:150;;;22120:50;22059:18;;23945:75:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23925:95;24041:18;;24037:126;;24080:8;;:23;;;-1:-1:-1;;;24080:23:109;;;;:8;;;;-1:-1:-1;;;;;24080:8:109;;:21;;:23;;;;;;;;;;;;;;;:8;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67;;-1:-1:-1;;;24080:67:109;;;;;21882:25:150;;;-1:-1:-1;;;;;24080:51:109;;;;;;;21855:18:150;;24080:67:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24037:126;-1:-1:-1;;24186:8:109;;:23;;;-1:-1:-1;;;24186:23:109;;;;:8;;;;-1:-1:-1;;;;;24186:8:109;;-1:-1:-1;24186:21:109;;:23;;;;;;;;;;;;;;:8;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24186:38:109;;24225:32;24241:6;:15;;;24225:11;:15;;:32;;;;:::i;:::-;24186:72;;;;;;;;;;;;;21882:25:150;;21870:2;21855:18;;21736:177;24186:72:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24301:11;24275:6;:22;;;:37;24271:271;;;24327:8;;;24352:13;;24367:16;;;;24385:12;;;;;24327:71;;-1:-1:-1;;;24327:71:109;;-1:-1:-1;;;;;14506:32:150;;;24327:71:109;;;14488:51:150;14555:18;;;14548:34;;;;14598:18;;;14591:34;24327:71:109;:8;;;;;;;;-1:-1:-1;;14461:18:150;;;;;24327:71:109;;;;;:8;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24271:271;;;24429:8;;24459:13;;24474:16;;;;24492:12;;;;24429:8;;;;-1:-1:-1;;;;;24429:8:109;;:29;;24459:13;24474:16;24506:23;24520:9;24506:11;:23;:::i;:::-;24429:101;;-1:-1:-1;;;;;;24429:101:109;;;;;;;-1:-1:-1;;;;;15913:32:150;;;24429:101:109;;;15895:51:150;15962:18;;;15955:34;;;;16005:18;;;15998:34;16048:18;;;16041:34;15867:19;;24429:101:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24271:271;24554:8;;:26;;;-1:-1:-1;;;24554:26:109;;;;:8;;;;-1:-1:-1;;;;;24554:8:109;;-1:-1:-1;;24554:26:109;;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24554:39:109;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24554:55:109;;24624:6;:16;;;24655:32;24671:6;:15;;;24655:11;:15;;:32;;;;:::i;:::-;24702:10;;;;24554:189;;-1:-1:-1;;;;;;24554:189:109;;;;;;;;;;24044:25:150;;;;24085:18;;;24078:34;;;;24155:14;24148:22;24128:18;;;24121:50;24727:5:109;24187:18:150;;;24180:50;24016:19;;24554:189:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24756:23;22688:2099;;;;;;;;:::o;14:138:150:-;93:13;;115:31;93:13;115:31;:::i;:::-;14:138;;;:::o;157:132::-;233:13;;255:28;233:13;255:28;:::i;294:155::-;381:13;;423:1;413:12;;403:40;;439:1;436;429:12;454:920;517:5;565:6;553:9;548:3;544:19;540:32;537:52;;;585:1;582;575:12;537:52;607:22;;:::i;:::-;598:31;;652:40;682:9;652:40;:::i;:::-;645:5;638:55;746:2;735:9;731:18;725:25;720:2;713:5;709:14;702:49;804:2;793:9;789:18;783:25;778:2;771:5;767:14;760:49;862:2;851:9;847:18;841:25;836:2;829:5;825:14;818:49;921:3;910:9;906:19;900:26;894:3;887:5;883:15;876:51;981:3;970:9;966:19;960:26;954:3;947:5;943:15;936:51;1020:47;1062:3;1051:9;1047:19;1020:47;:::i;:::-;1014:3;1007:5;1003:15;996:72;1122:3;1111:9;1107:19;1101:26;1095:3;1088:5;1084:15;1077:51;1147:3;1203:2;1192:9;1188:18;1182:25;1177:2;1170:5;1166:14;1159:49;;1227:3;1283:2;1272:9;1268:18;1262:25;1257:2;1250:5;1246:14;1239:49;;1307:3;1363:2;1352:9;1348:18;1342:25;1337:2;1330:5;1326:14;1319:49;;454:920;;;;:::o;1379:251::-;1449:6;1502:2;1490:9;1481:7;1477:23;1473:32;1470:52;;;1518:1;1515;1508:12;1470:52;1550:9;1544:16;1569:31;1594:5;1569:31;:::i;:::-;1619:5;1379:251;-1:-1:-1;;;1379:251:150:o;1635:388::-;1703:6;1711;1764:2;1752:9;1743:7;1739:23;1735:32;1732:52;;;1780:1;1777;1770:12;1732:52;1819:9;1806:23;1838:31;1863:5;1838:31;:::i;:::-;1888:5;-1:-1:-1;1945:2:150;1930:18;;1917:32;1958:33;1917:32;1958:33;:::i;:::-;2010:7;2000:17;;;1635:388;;;;;:::o;2028:315::-;2096:6;2104;2157:2;2145:9;2136:7;2132:23;2128:32;2125:52;;;2173:1;2170;2163:12;2125:52;2212:9;2199:23;2231:31;2256:5;2231:31;:::i;:::-;2281:5;2333:2;2318:18;;;;2305:32;;-1:-1:-1;;;2028:315:150:o;2348:383::-;2425:6;2433;2441;2494:2;2482:9;2473:7;2469:23;2465:32;2462:52;;;2510:1;2507;2500:12;2462:52;2549:9;2536:23;2568:31;2593:5;2568:31;:::i;:::-;2618:5;2670:2;2655:18;;2642:32;;-1:-1:-1;2721:2:150;2706:18;;;2693:32;;2348:383;-1:-1:-1;;;2348:383:150:o;2736:245::-;2803:6;2856:2;2844:9;2835:7;2831:23;2827:32;2824:52;;;2872:1;2869;2862:12;2824:52;2904:9;2898:16;2923:28;2945:5;2923:28;:::i;4099:284::-;4193:6;4246:2;4234:9;4225:7;4221:23;4217:32;4214:52;;;4262:1;4259;4252:12;4214:52;4294:9;4288:16;4333:1;4326:5;4323:12;4313:40;;4349:1;4346;4339:12;4388:1065;4491:6;4544:3;4532:9;4523:7;4519:23;4515:33;4512:53;;;4561:1;4558;4551:12;4512:53;4587:17;;:::i;:::-;4627:40;4657:9;4627:40;:::i;:::-;4620:5;4613:55;4721:2;4710:9;4706:18;4700:25;4695:2;4688:5;4684:14;4677:49;4779:2;4768:9;4764:18;4758:25;4753:2;4746:5;4742:14;4735:49;4837:2;4826:9;4822:18;4816:25;4811:2;4804:5;4800:14;4793:49;4875:47;4917:3;4906:9;4902:19;4875:47;:::i;:::-;4869:3;4858:15;;4851:72;4977:3;4962:19;;;4956:26;4939:15;;;4932:51;5037:3;5022:19;;;5016:26;4999:15;;;4992:51;5097:3;5082:19;;;5076:26;5059:15;;;5052:51;5122:3;5163:18;;;5157:25;5141:14;;;5134:49;5202:3;5243:18;;;5237:25;5221:14;;;5214:49;5282:3;5323:18;;;5317:25;5301:14;;;5294:49;5362:3;5403:18;;;5397:25;5381:14;;;5374:49;;;;-1:-1:-1;4862:5:150;4388:1065;-1:-1:-1;4388:1065:150:o;5458:878::-;5564:6;5617:3;5605:9;5596:7;5592:23;5588:33;5585:53;;;5634:1;5631;5624:12;5585:53;5667:2;5661:9;5709:3;5701:6;5697:16;5779:6;5767:10;5764:22;5743:18;5731:10;5728:34;5725:62;5722:185;;;5829:10;5824:3;5820:20;5817:1;5810:31;5864:4;5861:1;5854:15;5892:4;5889:1;5882:15;5722:185;5923:2;5916:22;5960:16;;5985:31;5960:16;5985:31;:::i;:::-;6040:5;6032:6;6025:21;;6100:2;6089:9;6085:18;6079:25;6074:2;6066:6;6062:15;6055:50;6159:2;6148:9;6144:18;6138:25;6133:2;6125:6;6121:15;6114:50;6209:2;6198:9;6194:18;6188:25;6244:1;6235:7;6232:14;6222:42;;6260:1;6257;6250:12;6222:42;6292:2;6280:15;;6273:32;6284:6;5458:878;-1:-1:-1;;;5458:878:150:o;6341:1094::-;6449:6;6480:3;6524:2;6512:9;6503:7;6499:23;6495:32;6492:52;;;6540:1;6537;6530:12;6492:52;6573:2;6567:9;6603:15;;;;6648:18;6633:34;;6669:22;;;6630:62;6627:185;;;6734:10;6729:3;6725:20;6722:1;6715:31;6769:4;6766:1;6759:15;6797:4;6794:1;6787:15;6627:185;6832:10;6828:2;6821:22;6871:9;6865:16;6852:29;;6890:31;6915:5;6890:31;:::i;:::-;6945:5;6937:6;6930:21;7005:2;6994:9;6990:18;6984:25;6979:2;6971:6;6967:15;6960:50;7064:2;7053:9;7049:18;7043:25;7038:2;7030:6;7026:15;7019:50;7102:57;7155:2;7144:9;7140:18;7102:57;:::i;:::-;7097:2;7089:6;7085:15;7078:82;7215:3;7204:9;7200:19;7194:26;7188:3;7180:6;7176:16;7169:52;7276:3;7265:9;7261:19;7255:26;7249:3;7241:6;7237:16;7230:52;7337:3;7326:9;7322:19;7316:26;7310:3;7302:6;7298:16;7291:52;7398:3;7387:9;7383:19;7377:26;7371:3;7363:6;7359:16;7352:52;7423:6;7413:16;;;;6341:1094;;;;:::o;7440:776::-;7547:6;7600:3;7588:9;7579:7;7575:23;7571:33;7568:53;;;7617:1;7614;7607:12;7568:53;7650:2;7644:9;7692:4;7684:6;7680:17;7763:6;7751:10;7748:22;7727:18;7715:10;7712:34;7709:62;7706:185;;;7813:10;7808:3;7804:20;7801:1;7794:31;7848:4;7845:1;7838:15;7876:4;7873:1;7866:15;7706:185;7907:2;7900:22;7946:54;7992:7;7981:9;7946:54;:::i;:::-;7931:70;;8057:3;8042:19;;8036:26;8029:4;8017:17;;8010:53;8117:3;8102:19;;8096:26;8091:2;8079:15;;8072:51;8179:3;8164:19;;;8158:26;8151:4;8139:17;;8132:53;-1:-1:-1;7938:6:150;7440:776;-1:-1:-1;7440:776:150:o;8221:980::-;8319:6;8372:3;8360:9;8351:7;8347:23;8343:33;8340:53;;;8389:1;8386;8379:12;8340:53;8422:2;8416:9;8464:3;8456:6;8452:16;8534:6;8522:10;8519:22;8498:18;8486:10;8483:34;8480:62;8477:185;;;8584:10;8579:3;8575:20;8572:1;8565:31;8619:4;8616:1;8609:15;8647:4;8644:1;8637:15;8477:185;8678:2;8671:22;8715:16;;8740:31;8715:16;8740:31;:::i;:::-;8795:5;8787:6;8780:21;;8855:2;8844:9;8840:18;8834:25;8829:2;8821:6;8817:15;8810:50;8914:2;8903:9;8899:18;8893:25;8888:2;8880:6;8876:15;8869:50;8973:2;8962:9;8958:18;8952:25;8947:2;8939:6;8935:15;8928:50;9023:3;9012:9;9008:19;9002:26;9037:30;9059:7;9037:30;:::i;:::-;9095:3;9083:16;;9076:33;9164:3;9149:19;;;9143:26;9125:16;;;9118:52;;;;-1:-1:-1;9087:6:150;8221:980;-1:-1:-1;8221:980:150:o;9206:846::-;9304:6;9357:3;9345:9;9336:7;9332:23;9328:33;9325:53;;;9374:1;9371;9364:12;9325:53;9407:2;9401:9;9449:3;9441:6;9437:16;9519:6;9507:10;9504:22;9483:18;9471:10;9468:34;9465:62;9462:185;;;9569:10;9564:3;9560:20;9557:1;9550:31;9604:4;9601:1;9594:15;9632:4;9629:1;9622:15;9462:185;9667:10;9663:2;9656:22;;9708:9;9702:16;9694:6;9687:32;9773:2;9762:9;9758:18;9752:25;9747:2;9739:6;9735:15;9728:50;9832:2;9821:9;9817:18;9811:25;9806:2;9798:6;9794:15;9787:50;9880:2;9869:9;9865:18;9859:25;9893:28;9915:5;9893:28;:::i;:::-;9949:2;9937:15;;9930:30;10015:3;10000:19;;;9994:26;9976:16;;;9969:52;;;;-1:-1:-1;9941:6:150;9206:846;-1:-1:-1;9206:846:150:o;10057:247::-;10151:6;10204:3;10192:9;10183:7;10179:23;10175:33;10172:53;;;10221:1;10218;10211:12;10172:53;10244:54;10290:7;10279:9;10244:54;:::i;10309:184::-;10379:6;10432:2;10420:9;10411:7;10407:23;10403:32;10400:52;;;10448:1;10445;10438:12;10400:52;-1:-1:-1;10471:16:150;;10309:184;-1:-1:-1;10309:184:150:o;10498:305::-;10585:6;10593;10601;10654:2;10642:9;10633:7;10629:23;10625:32;10622:52;;;10670:1;10667;10660:12;10622:52;10699:9;10693:16;10683:26;;10749:2;10738:9;10734:18;10728:25;10718:35;;10793:2;10782:9;10778:18;10772:25;10762:35;;10498:305;;;;;:::o;10808:245::-;10887:6;10895;10948:2;10936:9;10927:7;10923:23;10919:32;10916:52;;;10964:1;10961;10954:12;10916:52;-1:-1:-1;;10987:16:150;;11043:2;11028:18;;;11022:25;10987:16;;11022:25;;-1:-1:-1;10808:245:150:o;11058:316::-;11135:6;11143;11151;11204:2;11192:9;11183:7;11179:23;11175:32;11172:52;;;11220:1;11217;11210:12;11172:52;-1:-1:-1;;11243:23:150;;;11313:2;11298:18;;11285:32;;-1:-1:-1;11364:2:150;11349:18;;;11336:32;;11058:316;-1:-1:-1;11058:316:150:o;11379:446::-;11462:6;11470;11478;11486;11539:3;11527:9;11518:7;11514:23;11510:33;11507:53;;;11556:1;11553;11546:12;11507:53;11592:9;11579:23;11569:33;;11649:2;11638:9;11634:18;11621:32;11611:42;;11700:2;11689:9;11685:18;11672:32;11662:42;;11754:2;11743:9;11739:18;11726:32;11767:28;11789:5;11767:28;:::i;:::-;11379:446;;;;-1:-1:-1;11379:446:150;;-1:-1:-1;;11379:446:150:o;12035:238::-;12117:1;12110:5;12107:12;12097:143;;12162:10;12157:3;12153:20;12150:1;12143:31;12197:4;12194:1;12187:15;12225:4;12222:1;12215:15;12097:143;12249:18;;12035:238::o;12278:775::-;12356:12;;-1:-1:-1;;;;;11896:31:150;11884:44;;12423:4;12416:5;12412:16;12406:23;12399:4;12394:3;12390:14;12383:47;12479:4;12472:5;12468:16;12462:23;12455:4;12450:3;12446:14;12439:47;12535:4;12528:5;12524:16;12518:23;12511:4;12506:3;12502:14;12495:47;12591:4;12584:5;12580:16;12574:23;12567:4;12562:3;12558:14;12551:47;12647:4;12640:5;12636:16;12630:23;12623:4;12618:3;12614:14;12607:47;12700:4;12693:5;12689:16;12683:23;12715:45;12754:4;12749:3;12745:14;12731:12;12009:13;12002:21;11990:34;;11939:91;12715:45;-1:-1:-1;12809:4:150;12798:16;;;12792:23;12776:14;;;12769:47;12835:6;12877:14;;;12871:21;12857:12;;;12850:43;12912:6;12954:14;;;12948:21;12934:12;;;12927:43;12989:6;13031:14;;;13025:21;13011:12;;13004:43;12278:775::o;13058:356::-;13175:1;13171;13166:3;13162:11;13158:19;13150:5;13144:12;13140:38;13135:3;13128:51;13228:4;13221:5;13217:16;13211:23;13204:4;13199:3;13195:14;13188:47;13284:4;13277:5;13273:16;13267:23;13260:4;13255:3;13251:14;13244:47;13337:4;13330:5;13326:16;13320:23;13352:56;13402:4;13397:3;13393:14;13379:12;13352:56;:::i;19673:243::-;19855:3;19840:19;;19868:42;19844:9;19892:6;19868:42;:::i;19921:642::-;20187:3;20172:19;;20200:42;20176:9;20224:6;20200:42;:::i;:::-;20285:6;20279:13;20273:3;20262:9;20258:19;20251:42;20348:4;20340:6;20336:17;20330:24;20324:3;20313:9;20309:19;20302:53;20410:4;20402:6;20398:17;20392:24;20386:3;20375:9;20371:19;20364:53;20486:4;20478:6;20474:17;20468:24;20461:32;20454:40;20448:3;20437:9;20433:19;20426:69;20550:4;20542:6;20538:17;20532:24;20526:3;20515:9;20511:19;20504:53;19921:642;;;;;:::o;20568:529::-;20860:3;20845:19;;20873:42;20849:9;20897:6;20873:42;:::i;:::-;20952:6;20946:3;20935:9;20931:19;20924:35;20996:6;20990:3;20979:9;20975:19;20968:35;21040:6;21034:3;21023:9;21019:19;21012:35;21084:6;21078:3;21067:9;21063:19;21056:35;20568:529;;;;;;;;:::o;21102:276::-;21306:3;21291:19;;21319:53;21295:9;21354:6;21319:53;:::i;21383:348::-;21615:3;21600:19;;21628:53;21604:9;21663:6;21628:53;:::i;:::-;21718:6;21712:3;21701:9;21697:19;21690:35;21383:348;;;;;:::o;22181:682::-;22536:25;;;22523:3;22508:19;;22570:51;22617:2;22602:18;;22594:6;22570:51;:::i;:::-;22665:14;;22658:22;22652:3;22637:19;;22630:51;22712:3;22697:19;;22690:35;;;;22756:3;22741:19;;22734:35;;;;22800:3;22785:19;;22778:35;22844:3;22829:19;;;22822:35;22181:682;;-1:-1:-1;;22181:682:150:o;24647:777::-;25050:25;;;25106:2;25091:18;;25084:34;;;25037:3;25022:19;;25127:51;25174:2;25159:18;;25151:6;25127:51;:::i;:::-;25187:55;25237:3;25226:9;25222:19;25214:6;25187:55;:::i;:::-;25279:6;25273:3;25262:9;25258:19;25251:35;25323:6;25317:3;25306:9;25302:19;25295:35;25367:6;25361:3;25350:9;25346:19;25339:35;25411:6;25405:3;25394:9;25390:19;25383:35;24647:777;;;;;;;;;;;:::o;25825:352::-;25897:2;25891:9;25939:6;25927:19;;25976:18;25961:34;;25997:22;;;25958:62;25955:185;;;26062:10;26057:3;26053:20;26050:1;26043:31;26097:4;26094:1;26087:15;26125:4;26122:1;26115:15;25955:185;26156:2;26149:22;25825:352;:::o;26182:344::-;26249:2;26243:9;26291:3;26279:16;;26325:18;26310:34;;26346:22;;;26307:62;26304:185;;;26411:10;26406:3;26402:20;26399:1;26392:31;26446:4;26443:1;26436:15;26474:4;26471:1;26464:15;26531:265;26570:3;26598:9;;;-1:-1:-1;;;;;26642:27:150;;;26635:35;;26623:10;;26619:52;26616:78;;;26674:18;;:::i;:::-;-1:-1:-1;;;26721:19:150;;;26714:27;;26706:36;;26703:62;;;26745:18;;:::i;:::-;-1:-1:-1;;26781:9:150;;26531:265::o;26801:128::-;26841:3;26872:1;26868:6;26865:1;26862:13;26859:39;;;26878:18;;:::i;:::-;-1:-1:-1;26914:9:150;;26801:128::o;26934:193::-;26973:1;26999;26989:35;;27004:18;;:::i;:::-;-1:-1:-1;;27060:13:150;;-1:-1:-1;;;27040:18:150;;27036:38;27033:64;;;27077:18;;:::i;:::-;-1:-1:-1;27111:10:150;;26934:193::o;27132:120::-;27172:1;27198;27188:35;;27203:18;;:::i;:::-;-1:-1:-1;27237:9:150;;27132:120::o;27257:553::-;27296:7;-1:-1:-1;;;;;27366:9:150;;;27394;;;27438:10;;;27432:17;;27419:11;;;27415:35;27412:61;;;27453:18;;:::i;:::-;-1:-1:-1;;;27529:1:150;27522:9;;27567:11;;;27560:19;;27547:11;;;27543:37;27540:63;;;27583:18;;:::i;:::-;27629:1;27626;27622:9;27612:19;;27676:1;27672:2;27667:11;27664:1;27660:19;27655:2;27651;27647:11;27643:37;27640:63;;;27683:18;;:::i;:::-;27748:1;27744:2;27739:11;27736:1;27732:19;27727:2;27723;27719:11;27715:37;27712:63;;;27755:18;;:::i;:::-;-1:-1:-1;;;27795:9:150;;;;;27257:553;-1:-1:-1;;;27257:553:150:o;27815:168::-;27855:7;27921:1;27917;27913:6;27909:14;27906:1;27903:21;27898:1;27891:9;27884:17;27880:45;27877:71;;;27928:18;;:::i;:::-;-1:-1:-1;27968:9:150;;27815:168::o;27988:267::-;28027:4;28056:9;;;-1:-1:-1;;;28100:19:150;;28093:27;;28081:10;;28077:44;28074:70;;;28124:18;;:::i;:::-;-1:-1:-1;;;;;28171:27:150;;28164:35;;28156:44;;28153:70;;;28203:18;;:::i;:::-;-1:-1:-1;;28240:9:150;;27988:267::o;28260:125::-;28300:4;28328:1;28325;28322:8;28319:34;;;28333:18;;:::i;:::-;-1:-1:-1;28370:9:150;;28260:125::o;28390:136::-;28425:3;-1:-1:-1;;;28446:22:150;;28443:48;;;28471:18;;:::i;:::-;-1:-1:-1;28511:1:150;28507:13;;28390:136::o;28531:127::-;28592:10;28587:3;28583:20;28580:1;28573:31;28623:4;28620:1;28613:15;28647:4;28644:1;28637:15;28663:127;28724:10;28719:3;28715:20;28712:1;28705:31;28755:4;28752:1;28745:15;28779:4;28776:1;28769:15;28795:127;28856:10;28851:3;28847:20;28844:1;28837:31;28887:4;28884:1;28877:15;28911:4;28908:1;28901:15;28927:131;-1:-1:-1;;;;;29002:31:150;;28992:42;;28982:70;;29048:1;29045;29038:12;28982:70;28927:131;:::o;29063:118::-;29149:5;29142:13;29135:21;29128:5;29125:32;29115:60;;29171:1;29168;29161:12","linkReferences":{}},"methodIdentifiers":{"closeTradeMarketCallback(uint256,uint256,uint256)":"fa7227e9","correctSl(uint256,uint256,uint256,bool)":"b5edf954","correctTp(uint256,uint256,uint256,bool)":"aee2e443","executeLimitCloseOrderCallback(uint256,uint256,uint256)":"b2250471","executeLimitOpenOrderCallback(uint256,uint256,uint256)":"857c3f1e","initialize(address,address)":"485cc955","liqFeeP()":"74cbe6ee","liqTotalFeeP()":"69d017d5","openTradeMarketCallback(uint256,uint256,uint256)":"edd67fbe","pairInfos()":"1346b0ff","setFeeP(uint256,uint256,uint256)":"45ac0f9a","storageT()":"16fff074","transferFromVault(address,uint256)":"da8ddc74","updateMarginCallback(uint256,uint256,uint256)":"203efa58","updateSlCallback(uint256,uint256,uint256)":"da0870e7","vaultFeeP()":"c4493e37","withinExposureLimits(address,uint256,uint256)":"6819edf3"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"AddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"done\",\"type\":\"bool\"}],\"name\":\"Done\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_vaultFeeP\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_liqFeeP\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_liqTotalFeeP\",\"type\":\"uint256\"}],\"name\":\"FeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limitIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPosToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"t\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"enum ITradingStorage.LimitOrder\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"percentProfit\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"usdcSentToTrader\",\"type\":\"uint256\"}],\"name\":\"LimitExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"MarginUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPosToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"t\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"open\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"percentProfit\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"usdcSentToTrader\",\"type\":\"uint256\"}],\"name\":\"MarketExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"MarketOpenCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"Pause\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSl\",\"type\":\"uint256\"}],\"name\":\"SlUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"spreadP\",\"type\":\"uint256\"}],\"name\":\"closeTradeMarketCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"}],\"name\":\"correctSl\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"}],\"name\":\"correctTp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"spreadP\",\"type\":\"uint256\"}],\"name\":\"executeLimitCloseOrderCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"spreadP\",\"type\":\"uint256\"}],\"name\":\"executeLimitOpenOrderCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_storageT\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_pairInfos\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liqFeeP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liqTotalFeeP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"spreadP\",\"type\":\"uint256\"}],\"name\":\"openTradeMarketCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pairInfos\",\"outputs\":[{\"internalType\":\"contract IPairInfos\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_liqFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_liqTotalFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_vaultFeeP\",\"type\":\"uint256\"}],\"name\":\"setFeeP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageT\",\"outputs\":[{\"internalType\":\"contract ITradingStorage\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transferFromVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"spreadP\",\"type\":\"uint256\"}],\"name\":\"updateMarginCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"spreadP\",\"type\":\"uint256\"}],\"name\":\"updateSlCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vaultFeeP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_leveragedPos\",\"type\":\"uint256\"}],\"name\":\"withinExposureLimits\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"closeTradeMarketCallback(uint256,uint256,uint256)\":{\"details\":\"Callback function for closing a trade on the market.\",\"params\":{\"orderId\":\"orderId.\",\"price\":\"price.\",\"spreadP\":\"spreadP.\"}},\"executeLimitCloseOrderCallback(uint256,uint256,uint256)\":{\"details\":\"Callback function for executing limit close orders(TP/SL/LIQ)\",\"params\":{\"orderId\":\"orderId.\",\"price\":\"price.\",\"spreadP\":\"spreadP.\"}},\"executeLimitOpenOrderCallback(uint256,uint256,uint256)\":{\"details\":\"Callback function for executing limit open orders.\",\"params\":{\"orderId\":\"orderId.\",\"price\":\"price.\",\"spreadP\":\"spreadP.\"}},\"initialize(address,address)\":{\"details\":\"Initializes proxy\",\"params\":{\"_pairInfos\":\"Address of the PairInfos contract.\",\"_storageT\":\"Address of the Trading Storage contract.\"}},\"openTradeMarketCallback(uint256,uint256,uint256)\":{\"details\":\"Callback function for opening a trade on the market.\",\"params\":{\"orderId\":\"orderId.\",\"price\":\"price.\",\"spreadP\":\"spreadP.\"}},\"setFeeP(uint256,uint256,uint256)\":{\"details\":\"Updates the fees for liquidation, total liquidation, and the vault. Can only be called by the governance address.\",\"params\":{\"_liqFeeP\":\"Executor Reward for Liquidation\",\"_liqTotalFeeP\":\"Total liquidation fee percentage inlcuding LP percentage\",\"_vaultFeeP\":\"New vault fee percentage of Total Fees\"}},\"transferFromVault(address,uint256)\":{\"params\":{\"_amount\":\"Amount to be transferred\",\"_trader\":\"Address of the trader\"}},\"updateMarginCallback(uint256,uint256,uint256)\":{\"details\":\"Callback function for updating a trader's margin.(Deposit/Withdraw)\",\"params\":{\"orderId\":\"orderId.\",\"price\":\"price.\",\"spreadP\":\"spreadP.\"}},\"updateSlCallback(uint256,uint256,uint256)\":{\"params\":{\"orderId\":\"orderId.\",\"price\":\"price.\",\"spreadP\":\"spreadP.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"transferFromVault(address,uint256)\":{\"notice\":\"Transfers funds from the vault to the trader\"},\"updateSlCallback(uint256,uint256,uint256)\":{\"notice\":\"Updates stop loss order based on aggregator's callback\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/TradingCallbacks.sol\":\"TradingCallbacks\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":chainlink/=lib/chainlink/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"src/TradingCallbacks.sol\":{\"keccak256\":\"0x7b598c053d33bdd08707b8c306804d5de44ffbcd54ea0ae32bbccbc8fa5a3f23\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d2e535fd4c837aa1bfd75934f27aa1d050caa8b91f82c86a307b2ca5bf2a4f4\",\"dweb:/ipfs/QmWqzesPWodBS4tqLfMUKmzyG7uR3uJSemhuhGpcPvawt5\"]},\"src/interfaces/ICallbacks.sol\":{\"keccak256\":\"0x29a3caaa16b7a336e7670a433468716569c2bb227691bf21b53279be0d43d9ac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://682f1631658e298794d902b2fe61a66eb72363131cc08cb39bea49f8084c7712\",\"dweb:/ipfs/QmZngteZUFLYRQrx2QEEoTFvov5FpjAGntS53GrfTqgysA\"]},\"src/interfaces/IExecute.sol\":{\"keccak256\":\"0x189f78c460465dcdaab444248da17059e96e76e862bb08540e7054296512b9b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c757cbde37e2932a25fca5ed1ef8fdd49cf1521b8d9f1cfa1d512d1e94862a3b\",\"dweb:/ipfs/QmVvbrLcDBFo9oMdNqaYTmhhtgnH2WzgX8nbMTKuJU6Y1m\"]},\"src/interfaces/IPairInfos.sol\":{\"keccak256\":\"0xf9fe387fdcef5ddd217632154ff64741f6b2d7f944b45e985a9a326799f13003\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a214b58dc1ec86de11ed4fed6e63afd51b793a1bbdca99e1d46abf4efa931d43\",\"dweb:/ipfs/QmckDVNNeMv6MdYgih78SAfhFNtGtrM4D4wRMdaAE2riCu\"]},\"src/interfaces/IPairStorage.sol\":{\"keccak256\":\"0x5263d6aeb4ddae325132a38df89f9cbdc4432f44b2d4a657500b29a8b1705fdb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a5a03ab14963ec685d8b2c8f2833755136abd84074100eec057fb234ec2616\",\"dweb:/ipfs/QmdV2B3wVYhtkCT6ajU8HKsj824LXCBuF82dkhco6sGPch\"]},\"src/interfaces/IPausable.sol\":{\"keccak256\":\"0x0cf760757842bd332ce27fac78b8dc0f7a36406529a213954bc463c2be174ecd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c69ee15b814b76caed732b47b729d1c2b361ed158b85220da30ea9aac893ad0e\",\"dweb:/ipfs/QmbF9HWVA7DCtNzK2LkRdvhMV1TuqTf9dzUzAKwQadHZnY\"]},\"src/interfaces/IPriceAggregator.sol\":{\"keccak256\":\"0xd07d98635205ba6650fc5427145869f1ec803fb370f0f3dad836c7b0ce2686a5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e3cef3626f7384e4a3876137f27716c0ef9b4a13e8443d5591b94a09f4c211a\",\"dweb:/ipfs/QmUJSKSDNUxuxz42jo9hbNrHncsyw41hJvk7kZqGSeNL7c\"]},\"src/interfaces/ITradingStorage.sol\":{\"keccak256\":\"0x43ffc276291a1a728e97af0eab1057c55ed8f4180a79ea8023384a33ec135ba6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8f3aca6840be01265d57ad5f141cec52b238bec7a4b9feb39a428727685c0e8b\",\"dweb:/ipfs/QmcFUiJFw6A8jhxKVUMY7jjxQiqBaTSmdkcehqSLtnN1pg\"]},\"src/interfaces/IVaultManager.sol\":{\"keccak256\":\"0x167daac6e885fa066e910a79d7f602ba52f321141af1992b83c842fe264e9219\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77790089333c8783cc836eec99e4dc10f6554f0c6a3ea4f7fd2c727e4d4605e6\",\"dweb:/ipfs/QmNRP5WJKfwDu4S5TK8fQc6MGk8JeDf51DNeevtLfjQnoJ\"]},\"src/library/PositionMath.sol\":{\"keccak256\":\"0x02b855130b30da5e71c143006945ae31208082628e64720633c378029c42333c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a449300eedf6e864ef54e9e7d4c5d2e4c295f62d6a41925a3af33a0fb643b15c\",\"dweb:/ipfs/QmT6regWhrbyUUBui1ZLuW5DGfUFuCHpCVHQUxv9qbMVu1\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.7+commit.e28d00a7"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"string","name":"name","type":"string","indexed":false},{"internalType":"address","name":"a","type":"address","indexed":false}],"type":"event","name":"AddressUpdated","anonymous":false},{"inputs":[{"internalType":"bool","name":"done","type":"bool","indexed":false}],"type":"event","name":"Done","anonymous":false},{"inputs":[{"internalType":"uint256","name":"_vaultFeeP","type":"uint256","indexed":false},{"internalType":"uint256","name":"_liqFeeP","type":"uint256","indexed":false},{"internalType":"uint256","name":"_liqTotalFeeP","type":"uint256","indexed":false}],"type":"event","name":"FeeUpdated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"uint256","name":"limitIndex","type":"uint256","indexed":false},{"internalType":"struct ITradingStorage.Trade","name":"t","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"initialPosToken","type":"uint256"},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"indexed":false},{"internalType":"enum ITradingStorage.LimitOrder","name":"orderType","type":"uint8","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256","indexed":false},{"internalType":"int256","name":"percentProfit","type":"int256","indexed":false},{"internalType":"uint256","name":"usdcSentToTrader","type":"uint256","indexed":false}],"type":"event","name":"LimitExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"newSl","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"MarginUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"struct ITradingStorage.Trade","name":"t","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"initialPosToken","type":"uint256"},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"indexed":false},{"internalType":"bool","name":"open","type":"bool","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256","indexed":false},{"internalType":"int256","name":"percentProfit","type":"int256","indexed":false},{"internalType":"uint256","name":"usdcSentToTrader","type":"uint256","indexed":false}],"type":"event","name":"MarketExecuted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false}],"type":"event","name":"MarketOpenCanceled","anonymous":false},{"inputs":[{"internalType":"bool","name":"paused","type":"bool","indexed":false}],"type":"event","name":"Pause","anonymous":false},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"newSl","type":"uint256","indexed":false}],"type":"event","name":"SlUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"spreadP","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"closeTradeMarketCallback"},{"inputs":[{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"}],"stateMutability":"pure","type":"function","name":"correctSl","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"}],"stateMutability":"pure","type":"function","name":"correctTp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"spreadP","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"executeLimitCloseOrderCallback"},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"spreadP","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"executeLimitOpenOrderCallback"},{"inputs":[{"internalType":"address","name":"_storageT","type":"address"},{"internalType":"address","name":"_pairInfos","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"liqFeeP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"liqTotalFeeP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"spreadP","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"openTradeMarketCallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"pairInfos","outputs":[{"internalType":"contract IPairInfos","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_liqFeeP","type":"uint256"},{"internalType":"uint256","name":"_liqTotalFeeP","type":"uint256"},{"internalType":"uint256","name":"_vaultFeeP","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setFeeP"},{"inputs":[],"stateMutability":"view","type":"function","name":"storageT","outputs":[{"internalType":"contract ITradingStorage","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFromVault"},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"spreadP","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"updateMarginCallback"},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"spreadP","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"updateSlCallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"vaultFeeP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_leveragedPos","type":"uint256"}],"stateMutability":"view","type":"function","name":"withinExposureLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{"closeTradeMarketCallback(uint256,uint256,uint256)":{"details":"Callback function for closing a trade on the market.","params":{"orderId":"orderId.","price":"price.","spreadP":"spreadP."}},"executeLimitCloseOrderCallback(uint256,uint256,uint256)":{"details":"Callback function for executing limit close orders(TP/SL/LIQ)","params":{"orderId":"orderId.","price":"price.","spreadP":"spreadP."}},"executeLimitOpenOrderCallback(uint256,uint256,uint256)":{"details":"Callback function for executing limit open orders.","params":{"orderId":"orderId.","price":"price.","spreadP":"spreadP."}},"initialize(address,address)":{"details":"Initializes proxy","params":{"_pairInfos":"Address of the PairInfos contract.","_storageT":"Address of the Trading Storage contract."}},"openTradeMarketCallback(uint256,uint256,uint256)":{"details":"Callback function for opening a trade on the market.","params":{"orderId":"orderId.","price":"price.","spreadP":"spreadP."}},"setFeeP(uint256,uint256,uint256)":{"details":"Updates the fees for liquidation, total liquidation, and the vault. Can only be called by the governance address.","params":{"_liqFeeP":"Executor Reward for Liquidation","_liqTotalFeeP":"Total liquidation fee percentage inlcuding LP percentage","_vaultFeeP":"New vault fee percentage of Total Fees"}},"transferFromVault(address,uint256)":{"params":{"_amount":"Amount to be transferred","_trader":"Address of the trader"}},"updateMarginCallback(uint256,uint256,uint256)":{"details":"Callback function for updating a trader's margin.(Deposit/Withdraw)","params":{"orderId":"orderId.","price":"price.","spreadP":"spreadP."}},"updateSlCallback(uint256,uint256,uint256)":{"params":{"orderId":"orderId.","price":"price.","spreadP":"spreadP."}}},"version":1},"userdoc":{"kind":"user","methods":{"transferFromVault(address,uint256)":{"notice":"Transfers funds from the vault to the trader"},"updateSlCallback(uint256,uint256,uint256)":{"notice":"Updates stop loss order based on aggregator's callback"}},"version":1}},"settings":{"remappings":["@chainlink/=lib/chainlink/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","chainlink/=lib/chainlink/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","pyth-sdk-solidity/=lib/pyth-sdk-solidity/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/TradingCallbacks.sol":"TradingCallbacks"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"src/TradingCallbacks.sol":{"keccak256":"0x7b598c053d33bdd08707b8c306804d5de44ffbcd54ea0ae32bbccbc8fa5a3f23","urls":["bzz-raw://6d2e535fd4c837aa1bfd75934f27aa1d050caa8b91f82c86a307b2ca5bf2a4f4","dweb:/ipfs/QmWqzesPWodBS4tqLfMUKmzyG7uR3uJSemhuhGpcPvawt5"],"license":"MIT"},"src/interfaces/ICallbacks.sol":{"keccak256":"0x29a3caaa16b7a336e7670a433468716569c2bb227691bf21b53279be0d43d9ac","urls":["bzz-raw://682f1631658e298794d902b2fe61a66eb72363131cc08cb39bea49f8084c7712","dweb:/ipfs/QmZngteZUFLYRQrx2QEEoTFvov5FpjAGntS53GrfTqgysA"],"license":"MIT"},"src/interfaces/IExecute.sol":{"keccak256":"0x189f78c460465dcdaab444248da17059e96e76e862bb08540e7054296512b9b4","urls":["bzz-raw://c757cbde37e2932a25fca5ed1ef8fdd49cf1521b8d9f1cfa1d512d1e94862a3b","dweb:/ipfs/QmVvbrLcDBFo9oMdNqaYTmhhtgnH2WzgX8nbMTKuJU6Y1m"],"license":"MIT"},"src/interfaces/IPairInfos.sol":{"keccak256":"0xf9fe387fdcef5ddd217632154ff64741f6b2d7f944b45e985a9a326799f13003","urls":["bzz-raw://a214b58dc1ec86de11ed4fed6e63afd51b793a1bbdca99e1d46abf4efa931d43","dweb:/ipfs/QmckDVNNeMv6MdYgih78SAfhFNtGtrM4D4wRMdaAE2riCu"],"license":"MIT"},"src/interfaces/IPairStorage.sol":{"keccak256":"0x5263d6aeb4ddae325132a38df89f9cbdc4432f44b2d4a657500b29a8b1705fdb","urls":["bzz-raw://a0a5a03ab14963ec685d8b2c8f2833755136abd84074100eec057fb234ec2616","dweb:/ipfs/QmdV2B3wVYhtkCT6ajU8HKsj824LXCBuF82dkhco6sGPch"],"license":"MIT"},"src/interfaces/IPausable.sol":{"keccak256":"0x0cf760757842bd332ce27fac78b8dc0f7a36406529a213954bc463c2be174ecd","urls":["bzz-raw://c69ee15b814b76caed732b47b729d1c2b361ed158b85220da30ea9aac893ad0e","dweb:/ipfs/QmbF9HWVA7DCtNzK2LkRdvhMV1TuqTf9dzUzAKwQadHZnY"],"license":"MIT"},"src/interfaces/IPriceAggregator.sol":{"keccak256":"0xd07d98635205ba6650fc5427145869f1ec803fb370f0f3dad836c7b0ce2686a5","urls":["bzz-raw://6e3cef3626f7384e4a3876137f27716c0ef9b4a13e8443d5591b94a09f4c211a","dweb:/ipfs/QmUJSKSDNUxuxz42jo9hbNrHncsyw41hJvk7kZqGSeNL7c"],"license":"MIT"},"src/interfaces/ITradingStorage.sol":{"keccak256":"0x43ffc276291a1a728e97af0eab1057c55ed8f4180a79ea8023384a33ec135ba6","urls":["bzz-raw://8f3aca6840be01265d57ad5f141cec52b238bec7a4b9feb39a428727685c0e8b","dweb:/ipfs/QmcFUiJFw6A8jhxKVUMY7jjxQiqBaTSmdkcehqSLtnN1pg"],"license":"MIT"},"src/interfaces/IVaultManager.sol":{"keccak256":"0x167daac6e885fa066e910a79d7f602ba52f321141af1992b83c842fe264e9219","urls":["bzz-raw://77790089333c8783cc836eec99e4dc10f6554f0c6a3ea4f7fd2c727e4d4605e6","dweb:/ipfs/QmNRP5WJKfwDu4S5TK8fQc6MGk8JeDf51DNeevtLfjQnoJ"],"license":"MIT"},"src/library/PositionMath.sol":{"keccak256":"0x02b855130b30da5e71c143006945ae31208082628e64720633c378029c42333c","urls":["bzz-raw://a449300eedf6e864ef54e9e7d4c5d2e4c295f62d6a41925a3af33a0fb643b15c","dweb:/ipfs/QmT6regWhrbyUUBui1ZLuW5DGfUFuCHpCVHQUxv9qbMVu1"],"license":"MIT"}},"version":1},"ast":{"absolutePath":"src/TradingCallbacks.sol","id":80829,"exportedSymbols":{"AddressUpgradeable":[46968],"ICallbacks":[88257],"IERC20":[51481],"IExecute":[88371],"IPairInfos":[88745],"IPairStorage":[89055],"IPausable":[89063],"IPriceAggregator":[89248],"ITradingStorage":[89943],"IVaultManager":[90188],"Initializable":[43537],"PositionMath":[90841],"TradingCallbacks":[80828]},"nodeType":"SourceUnit","src":"33:25535:109","nodes":[{"id":78323,"nodeType":"PragmaDirective","src":"33:22:109","nodes":[],"literals":["solidity","0.8",".7"]},{"id":78324,"nodeType":"ImportDirective","src":"59:42:109","nodes":[],"absolutePath":"src/interfaces/ITradingStorage.sol","file":"./interfaces/ITradingStorage.sol","nameLocation":"-1:-1:-1","scope":80829,"sourceUnit":89944,"symbolAliases":[],"unitAlias":""},{"id":78325,"nodeType":"ImportDirective","src":"103:37:109","nodes":[],"absolutePath":"src/interfaces/IPairInfos.sol","file":"./interfaces/IPairInfos.sol","nameLocation":"-1:-1:-1","scope":80829,"sourceUnit":88746,"symbolAliases":[],"unitAlias":""},{"id":78326,"nodeType":"ImportDirective","src":"142:37:109","nodes":[],"absolutePath":"src/interfaces/ICallbacks.sol","file":"./interfaces/ICallbacks.sol","nameLocation":"-1:-1:-1","scope":80829,"sourceUnit":88258,"symbolAliases":[],"unitAlias":""},{"id":78327,"nodeType":"ImportDirective","src":"181:75:109","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":80829,"sourceUnit":43538,"symbolAliases":[],"unitAlias":""},{"id":78329,"nodeType":"ImportDirective","src":"258:56:109","nodes":[],"absolutePath":"src/library/PositionMath.sol","file":"./library/PositionMath.sol","nameLocation":"-1:-1:-1","scope":80829,"sourceUnit":90842,"symbolAliases":[{"foreign":{"id":78328,"name":"PositionMath","nodeType":"Identifier","overloadedDeclarations":[],"src":"266:12:109","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":80828,"nodeType":"ContractDefinition","src":"318:25248:109","nodes":[{"id":78336,"nodeType":"UsingForDirective","src":"380:28:109","nodes":[],"libraryName":{"id":78334,"name":"PositionMath","nodeType":"IdentifierPath","referencedDeclaration":90841,"src":"386:12:109"},"typeName":{"id":78335,"name":"uint","nodeType":"ElementaryTypeName","src":"403:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},{"id":78339,"nodeType":"VariableDeclaration","src":"416:39:109","nodes":[],"constant":true,"mutability":"constant","name":"_PRECISION","nameLocation":"438:10:109","scope":80828,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78337,"name":"uint","nodeType":"ElementaryTypeName","src":"416:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653130","id":78338,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"451:4:109","typeDescriptions":{"typeIdentifier":"t_rational_10000000000_by_1","typeString":"int_const 10000000000"},"value":"1e10"},"visibility":"private"},{"id":78342,"nodeType":"VariableDeclaration","src":"462:36:109","nodes":[],"constant":true,"mutability":"constant","name":"_MAX_SL_P","nameLocation":"484:9:109","scope":80828,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78340,"name":"uint","nodeType":"ElementaryTypeName","src":"462:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3830","id":78341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"496:2:109","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},"visibility":"private"},{"id":78345,"nodeType":"VariableDeclaration","src":"505:39:109","nodes":[],"constant":true,"mutability":"constant","name":"_MAX_GAIN_P","nameLocation":"527:11:109","scope":80828,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78343,"name":"uint","nodeType":"ElementaryTypeName","src":"505:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"353030","id":78344,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"541:3:109","typeDescriptions":{"typeIdentifier":"t_rational_500_by_1","typeString":"int_const 500"},"value":"500"},"visibility":"private"},{"id":78348,"nodeType":"VariableDeclaration","src":"551:48:109","nodes":[],"constant":true,"mutability":"constant","name":"_WITHDRAW_THRESHOLD_P","nameLocation":"573:21:109","scope":80828,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78346,"name":"uint","nodeType":"ElementaryTypeName","src":"551:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3830","id":78347,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"597:2:109","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},"visibility":"private"},{"id":78351,"nodeType":"VariableDeclaration","src":"606:45:109","nodes":[],"constant":true,"mutability":"constant","name":"_MAX_EXEC_REWARD","nameLocation":"628:16:109","scope":80828,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78349,"name":"uint","nodeType":"ElementaryTypeName","src":"606:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31306536","id":78350,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"647:4:109","typeDescriptions":{"typeIdentifier":"t_rational_10000000_by_1","typeString":"int_const 10000000"},"value":"10e6"},"visibility":"private"},{"id":78354,"nodeType":"VariableDeclaration","src":"660:31:109","nodes":[],"constant":false,"functionSelector":"16fff074","mutability":"mutable","name":"storageT","nameLocation":"683:8:109","scope":80828,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"},"typeName":{"id":78353,"nodeType":"UserDefinedTypeName","pathNode":{"id":78352,"name":"ITradingStorage","nodeType":"IdentifierPath","referencedDeclaration":89943,"src":"660:15:109"},"referencedDeclaration":89943,"src":"660:15:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"visibility":"public"},{"id":78357,"nodeType":"VariableDeclaration","src":"698:27:109","nodes":[],"constant":false,"functionSelector":"1346b0ff","mutability":"mutable","name":"pairInfos","nameLocation":"716:9:109","scope":80828,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPairInfos_$88745","typeString":"contract IPairInfos"},"typeName":{"id":78356,"nodeType":"UserDefinedTypeName","pathNode":{"id":78355,"name":"IPairInfos","nodeType":"IdentifierPath","referencedDeclaration":88745,"src":"698:10:109"},"referencedDeclaration":88745,"src":"698:10:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPairInfos_$88745","typeString":"contract IPairInfos"}},"visibility":"public"},{"id":78359,"nodeType":"VariableDeclaration","src":"734:19:109","nodes":[],"constant":false,"functionSelector":"74cbe6ee","mutability":"mutable","name":"liqFeeP","nameLocation":"746:7:109","scope":80828,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78358,"name":"uint","nodeType":"ElementaryTypeName","src":"734:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":78361,"nodeType":"VariableDeclaration","src":"760:24:109","nodes":[],"constant":false,"functionSelector":"69d017d5","mutability":"mutable","name":"liqTotalFeeP","nameLocation":"772:12:109","scope":80828,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78360,"name":"uint","nodeType":"ElementaryTypeName","src":"760:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":78364,"nodeType":"VariableDeclaration","src":"791:30:109","nodes":[],"baseFunctions":[88169],"constant":false,"functionSelector":"c4493e37","mutability":"mutable","name":"vaultFeeP","nameLocation":"812:9:109","overrides":{"id":78363,"nodeType":"OverrideSpecifier","overrides":[],"src":"803:8:109"},"scope":80828,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78362,"name":"uint","nodeType":"ElementaryTypeName","src":"791:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":78381,"nodeType":"ModifierDefinition","src":"830:127:109","nodes":[],"body":{"id":78380,"nodeType":"Block","src":"861:96:109","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":78375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78367,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"880:3:109","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":78368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"880:10:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":78371,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"902:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":78372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"priceAggregator","nodeType":"MemberAccess","referencedDeclaration":89592,"src":"902:24:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPriceAggregator_$89248_$","typeString":"function () view external returns (contract IPriceAggregator)"}},"id":78373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"902:26:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}],"id":78370,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"894:7:109","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":78369,"name":"address","nodeType":"ElementaryTypeName","src":"894:7:109","typeDescriptions":{}}},"id":78374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"894:35:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"880:49:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"415f4f","id":78376,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"931:5:109","typeDescriptions":{"typeIdentifier":"t_stringliteral_d1cac025b2522d3dbf446a5b37fe800cd535bc0c63064eef066eca891317e086","typeString":"literal_string \"A_O\""},"value":"A_O"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d1cac025b2522d3dbf446a5b37fe800cd535bc0c63064eef066eca891317e086","typeString":"literal_string \"A_O\""}],"id":78366,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"872:7:109","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":78377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"872:65:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78378,"nodeType":"ExpressionStatement","src":"872:65:109"},{"id":78379,"nodeType":"PlaceholderStatement","src":"948:1:109"}]},"name":"onlyPriceAggregator","nameLocation":"839:19:109","parameters":{"id":78365,"nodeType":"ParameterList","parameters":[],"src":"858:2:109"},"virtual":false,"visibility":"internal"},{"id":78388,"nodeType":"FunctionDefinition","src":"965:55:109","nodes":[],"body":{"id":78387,"nodeType":"Block","src":"979:41:109","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":78384,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43518,"src":"990:20:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":78385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"990:22:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78386,"nodeType":"ExpressionStatement","src":"990:22:109"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":78382,"nodeType":"ParameterList","parameters":[],"src":"976:2:109"},"returnParameters":{"id":78383,"nodeType":"ParameterList","parameters":[],"src":"979:0:109"},"scope":80828,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":78423,"nodeType":"FunctionDefinition","src":"1203:256:109","nodes":[],"body":{"id":78422,"nodeType":"Block","src":"1283:176:109","nodes":[],"statements":[{"expression":{"id":78402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78398,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"1294:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":78400,"name":"_storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78391,"src":"1321:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":78399,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"1305:15:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":78401,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1305:26:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"src":"1294:37:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":78403,"nodeType":"ExpressionStatement","src":"1294:37:109"},{"expression":{"id":78408,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78404,"name":"pairInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78357,"src":"1342:9:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPairInfos_$88745","typeString":"contract IPairInfos"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":78406,"name":"_pairInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78393,"src":"1365:10:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":78405,"name":"IPairInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88745,"src":"1354:10:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPairInfos_$88745_$","typeString":"type(contract IPairInfos)"}},"id":78407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1354:22:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPairInfos_$88745","typeString":"contract IPairInfos"}},"src":"1342:34:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPairInfos_$88745","typeString":"contract IPairInfos"}},"id":78409,"nodeType":"ExpressionStatement","src":"1342:34:109"},{"expression":{"id":78412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78410,"name":"vaultFeeP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78364,"src":"1387:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3230","id":78411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1399:2:109","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"src":"1387:14:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78413,"nodeType":"ExpressionStatement","src":"1387:14:109"},{"expression":{"id":78416,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78414,"name":"liqFeeP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78359,"src":"1412:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"35","id":78415,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1422:1:109","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"1412:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78417,"nodeType":"ExpressionStatement","src":"1412:11:109"},{"expression":{"id":78420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78418,"name":"liqTotalFeeP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78361,"src":"1434:12:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"3130","id":78419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1449:2:109","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1434:17:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78421,"nodeType":"ExpressionStatement","src":"1434:17:109"}]},"documentation":{"id":78389,"nodeType":"StructuredDocumentation","src":"1027:170:109","text":" @dev Initializes proxy\n @param _storageT Address of the Trading Storage contract.\n @param _pairInfos Address of the PairInfos contract."},"functionSelector":"485cc955","implemented":true,"kind":"function","modifiers":[{"id":78396,"kind":"modifierInvocation","modifierName":{"id":78395,"name":"initializer","nodeType":"IdentifierPath","referencedDeclaration":43439,"src":"1271:11:109"},"nodeType":"ModifierInvocation","src":"1271:11:109"}],"name":"initialize","nameLocation":"1212:10:109","parameters":{"id":78394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78391,"mutability":"mutable","name":"_storageT","nameLocation":"1231:9:109","nodeType":"VariableDeclaration","scope":78423,"src":"1223:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":78390,"name":"address","nodeType":"ElementaryTypeName","src":"1223:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":78393,"mutability":"mutable","name":"_pairInfos","nameLocation":"1250:10:109","nodeType":"VariableDeclaration","scope":78423,"src":"1242:18:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":78392,"name":"address","nodeType":"ElementaryTypeName","src":"1242:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1222:39:109"},"returnParameters":{"id":78397,"nodeType":"ParameterList","parameters":[],"src":"1283:0:109"},"scope":80828,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":78456,"nodeType":"FunctionDefinition","src":"1827:241:109","nodes":[],"body":{"id":78455,"nodeType":"Block","src":"1904:164:109","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":78439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78434,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1923:3:109","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":78435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1923:10:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":78436,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"1937:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":78437,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"gov","nodeType":"MemberAccess","referencedDeclaration":89575,"src":"1937:12:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":78438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1937:14:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1923:28:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"475f4f","id":78440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1953:5:109","typeDescriptions":{"typeIdentifier":"t_stringliteral_94a61c08aa7bc7eb97f72678044c076b50a5cde7f1ee3895ff4a01962a9121e9","typeString":"literal_string \"G_O\""},"value":"G_O"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_94a61c08aa7bc7eb97f72678044c076b50a5cde7f1ee3895ff4a01962a9121e9","typeString":"literal_string \"G_O\""}],"id":78433,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1915:7:109","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":78441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1915:44:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78442,"nodeType":"ExpressionStatement","src":"1915:44:109"},{"expression":{"id":78445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78443,"name":"liqFeeP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78359,"src":"1970:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":78444,"name":"_liqFeeP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78426,"src":"1980:8:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1970:18:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78446,"nodeType":"ExpressionStatement","src":"1970:18:109"},{"expression":{"id":78449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78447,"name":"liqTotalFeeP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78361,"src":"1999:12:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":78448,"name":"_liqTotalFeeP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78428,"src":"2014:13:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1999:28:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78450,"nodeType":"ExpressionStatement","src":"1999:28:109"},{"expression":{"id":78453,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78451,"name":"vaultFeeP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78364,"src":"2038:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":78452,"name":"_vaultFeeP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78430,"src":"2050:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2038:22:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78454,"nodeType":"ExpressionStatement","src":"2038:22:109"}]},"documentation":{"id":78424,"nodeType":"StructuredDocumentation","src":"1467:354:109","text":" @dev Updates the fees for liquidation, total liquidation, and the vault.\n Can only be called by the governance address.\n @param _liqFeeP Executor Reward for Liquidation\n @param _liqTotalFeeP Total liquidation fee percentage inlcuding LP percentage\n @param _vaultFeeP New vault fee percentage of Total Fees"},"functionSelector":"45ac0f9a","implemented":true,"kind":"function","modifiers":[],"name":"setFeeP","nameLocation":"1836:7:109","parameters":{"id":78431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78426,"mutability":"mutable","name":"_liqFeeP","nameLocation":"1849:8:109","nodeType":"VariableDeclaration","scope":78456,"src":"1844:13:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78425,"name":"uint","nodeType":"ElementaryTypeName","src":"1844:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":78428,"mutability":"mutable","name":"_liqTotalFeeP","nameLocation":"1864:13:109","nodeType":"VariableDeclaration","scope":78456,"src":"1859:18:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78427,"name":"uint","nodeType":"ElementaryTypeName","src":"1859:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":78430,"mutability":"mutable","name":"_vaultFeeP","nameLocation":"1884:10:109","nodeType":"VariableDeclaration","scope":78456,"src":"1879:15:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78429,"name":"uint","nodeType":"ElementaryTypeName","src":"1879:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1843:52:109"},"returnParameters":{"id":78432,"nodeType":"ParameterList","parameters":[],"src":"1904:0:109"},"scope":80828,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":78690,"nodeType":"FunctionDefinition","src":"2267:2085:109","nodes":[],"body":{"id":78689,"nodeType":"Block","src":"2391:1961:109","nodes":[],"statements":[{"assignments":[78471],"declarations":[{"constant":false,"id":78471,"mutability":"mutable","name":"aggregator","nameLocation":"2419:10:109","nodeType":"VariableDeclaration","scope":78689,"src":"2402:27:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"},"typeName":{"id":78470,"nodeType":"UserDefinedTypeName","pathNode":{"id":78469,"name":"IPriceAggregator","nodeType":"IdentifierPath","referencedDeclaration":89248,"src":"2402:16:109"},"referencedDeclaration":89248,"src":"2402:16:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"visibility":"internal"}],"id":78475,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":78472,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"2432:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":78473,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"priceAggregator","nodeType":"MemberAccess","referencedDeclaration":89592,"src":"2432:24:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPriceAggregator_$89248_$","typeString":"function () view external returns (contract IPriceAggregator)"}},"id":78474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2432:26:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"nodeType":"VariableDeclarationStatement","src":"2402:56:109"},{"assignments":[78480],"declarations":[{"constant":false,"id":78480,"mutability":"mutable","name":"o","nameLocation":"2513:1:109","nodeType":"VariableDeclaration","scope":78689,"src":"2469:45:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_memory_ptr","typeString":"struct IPriceAggregator.PendingMarginUpdate"},"typeName":{"id":78479,"nodeType":"UserDefinedTypeName","pathNode":{"id":78478,"name":"IPriceAggregator.PendingMarginUpdate","nodeType":"IdentifierPath","referencedDeclaration":89116,"src":"2469:36:109"},"referencedDeclaration":89116,"src":"2469:36:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_storage_ptr","typeString":"struct IPriceAggregator.PendingMarginUpdate"}},"visibility":"internal"}],"id":78485,"initialValue":{"arguments":[{"id":78483,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78459,"src":"2554:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":78481,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78471,"src":"2517:10:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":78482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pendingMarginUpdateOrders","nodeType":"MemberAccess","referencedDeclaration":89213,"src":"2517:36:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_struct$_PendingMarginUpdate_$89116_memory_ptr_$","typeString":"function (uint256) view external returns (struct IPriceAggregator.PendingMarginUpdate memory)"}},"id":78484,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2517:45:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_memory_ptr","typeString":"struct IPriceAggregator.PendingMarginUpdate memory"}},"nodeType":"VariableDeclarationStatement","src":"2469:93:109"},{"assignments":[78490],"declarations":[{"constant":false,"id":78490,"mutability":"mutable","name":"_trade","nameLocation":"2602:6:109","nodeType":"VariableDeclaration","scope":78689,"src":"2573:35:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":78489,"nodeType":"UserDefinedTypeName","pathNode":{"id":78488,"name":"ITradingStorage.Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"2573:21:109"},"referencedDeclaration":89438,"src":"2573:21:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"}],"id":78500,"initialValue":{"arguments":[{"expression":{"id":78493,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78480,"src":"2631:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_memory_ptr","typeString":"struct IPriceAggregator.PendingMarginUpdate memory"}},"id":78494,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89100,"src":"2631:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78495,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78480,"src":"2641:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_memory_ptr","typeString":"struct IPriceAggregator.PendingMarginUpdate memory"}},"id":78496,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89102,"src":"2641:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":78497,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78480,"src":"2654:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_memory_ptr","typeString":"struct IPriceAggregator.PendingMarginUpdate memory"}},"id":78498,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89104,"src":"2654:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":78491,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"2611:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":78492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openTrades","nodeType":"MemberAccess","referencedDeclaration":89686,"src":"2611:19:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_struct$_Trade_$89438_memory_ptr_$","typeString":"function (address,uint256,uint256) view external returns (struct ITradingStorage.Trade memory)"}},"id":78499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2611:51:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"nodeType":"VariableDeclarationStatement","src":"2573:89:109"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78501,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78461,"src":"2686:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":78502,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2695:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2686:10:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78633,"nodeType":"IfStatement","src":"2683:1050:109","trueBody":{"id":78632,"nodeType":"Block","src":"2697:1036:109","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_updateType_$89408","typeString":"enum ITradingStorage.updateType"},"id":78509,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78504,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78480,"src":"2716:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_memory_ptr","typeString":"struct IPriceAggregator.PendingMarginUpdate memory"}},"id":78505,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"_type","nodeType":"MemberAccess","referencedDeclaration":89107,"src":"2716:7:109","typeDescriptions":{"typeIdentifier":"t_enum$_updateType_$89408","typeString":"enum ITradingStorage.updateType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":78506,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"2727:15:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":78507,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"updateType","nodeType":"MemberAccess","referencedDeclaration":89408,"src":"2727:26:109","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_updateType_$89408_$","typeString":"type(enum ITradingStorage.updateType)"}},"id":78508,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"DEPOSIT","nodeType":"MemberAccess","referencedDeclaration":89406,"src":"2727:34:109","typeDescriptions":{"typeIdentifier":"t_enum$_updateType_$89408","typeString":"enum ITradingStorage.updateType"}},"src":"2716:45:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":78630,"nodeType":"Block","src":"3006:716:109","statements":[{"id":78618,"nodeType":"Block","src":"3025:598:109","statements":[{"assignments":[78536],"declarations":[{"constant":false,"id":78536,"mutability":"mutable","name":"profitP","nameLocation":"3052:7:109","nodeType":"VariableDeclaration","scope":78618,"src":"3048:11:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":78535,"name":"int","nodeType":"ElementaryTypeName","src":"3048:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":78546,"initialValue":{"arguments":[{"expression":{"id":78538,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78490,"src":"3084:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78539,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"3084:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":78540,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78461,"src":"3102:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":78541,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78490,"src":"3109:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78542,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"3109:10:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":78543,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78490,"src":"3121:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78544,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"3121:15:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":78537,"name":"_currentPercentProfit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80795,"src":"3062:21:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_bool_$_t_uint256_$returns$_t_int256_$","typeString":"function (uint256,uint256,bool,uint256) pure returns (int256)"}},"id":78545,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3062:75:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"3048:89:109"},{"assignments":[78548],"declarations":[{"constant":false,"id":78548,"mutability":"mutable","name":"pnl","nameLocation":"3164:3:109","nodeType":"VariableDeclaration","scope":78618,"src":"3160:7:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":78547,"name":"int","nodeType":"ElementaryTypeName","src":"3160:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":78564,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":78563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":78561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":78555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":78551,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78490,"src":"3175:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78552,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"3175:22:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":78550,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3171:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":78549,"name":"int","nodeType":"ElementaryTypeName","src":"3171:3:109","typeDescriptions":{}}},"id":78553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3171:27:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":78554,"name":"profitP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78536,"src":"3201:7:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"3171:37:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":78556,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3170:39:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":78559,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78339,"src":"3216:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":78558,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3212:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":78557,"name":"int","nodeType":"ElementaryTypeName","src":"3212:3:109","typeDescriptions":{}}},"id":78560,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3212:15:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"3170:57:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":78562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3230:3:109","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"3170:63:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"3160:73:109"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":78567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78565,"name":"pnl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78548,"src":"3260:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":78566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3266:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3260:7:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78589,"nodeType":"IfStatement","src":"3256:165:109","trueBody":{"id":78588,"nodeType":"Block","src":"3269:152:109","statements":[{"expression":{"id":78586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":78568,"name":"pnl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78548,"src":"3296:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":78585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":78582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78569,"name":"pnl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78548,"src":"3303:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"arguments":[{"expression":{"id":78576,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78490,"src":"3364:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78577,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"3364:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":78578,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78480,"src":"3382:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_memory_ptr","typeString":"struct IPriceAggregator.PendingMarginUpdate memory"}},"id":78579,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tier","nodeType":"MemberAccess","referencedDeclaration":89111,"src":"3382:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":78572,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78471,"src":"3313:10:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":78573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairsStorage","nodeType":"MemberAccess","referencedDeclaration":89162,"src":"3313:23:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPairStorage_$89055_$","typeString":"function () view external returns (contract IPairStorage)"}},"id":78574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3313:25:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":78575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"lossProtectionMultiplier","nodeType":"MemberAccess","referencedDeclaration":89007,"src":"3313:50:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view external returns (uint256)"}},"id":78580,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3313:76:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":78571,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3309:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":78570,"name":"int","nodeType":"ElementaryTypeName","src":"3309:3:109","typeDescriptions":{}}},"id":78581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3309:81:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"3303:87:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":78583,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3302:89:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":78584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3394:3:109","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"3302:95:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"3296:101:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":78587,"nodeType":"ExpressionStatement","src":"3296:101:109"}]}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":78614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":78597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":78593,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78490,"src":"3456:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78594,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"3456:22:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":78592,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3452:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":78591,"name":"int","nodeType":"ElementaryTypeName","src":"3452:3:109","typeDescriptions":{}}},"id":78595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3452:27:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":78596,"name":"pnl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78548,"src":"3482:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"3452:33:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":78598,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3451:35:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":78613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":78610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":78601,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78490,"src":"3494:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78602,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"3494:22:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":78600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3490:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":78599,"name":"int","nodeType":"ElementaryTypeName","src":"3490:3:109","typeDescriptions":{}}},"id":78603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3490:27:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78608,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"313030","id":78606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3524:3:109","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":78607,"name":"_WITHDRAW_THRESHOLD_P","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78348,"src":"3530:21:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3524:27:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":78605,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3520:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":78604,"name":"int","nodeType":"ElementaryTypeName","src":"3520:3:109","typeDescriptions":{}}},"id":78609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3520:32:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"3490:62:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":78611,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3489:64:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":78612,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3556:3:109","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"3489:70:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"3451:108:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"575f545f42","id":78615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3595:7:109","typeDescriptions":{"typeIdentifier":"t_stringliteral_3eee26fb7c51d09a7f13c5ad21d0cbc4fdfd6d85c4aab8f27151297d6afb6fe0","typeString":"literal_string \"W_T_B\""},"value":"W_T_B"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3eee26fb7c51d09a7f13c5ad21d0cbc4fdfd6d85c4aab8f27151297d6afb6fe0","typeString":"literal_string \"W_T_B\""}],"id":78590,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3443:7:109","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":78616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3443:160:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78617,"nodeType":"ExpressionStatement","src":"3443:160:109"}]},{"expression":{"arguments":[{"expression":{"id":78624,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78490,"src":"3682:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78625,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"3682:13:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78626,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78480,"src":"3697:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_memory_ptr","typeString":"struct IPriceAggregator.PendingMarginUpdate memory"}},"id":78627,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":89109,"src":"3697:8:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":78619,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"3641:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":78621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"vaultManager","nodeType":"MemberAccess","referencedDeclaration":89598,"src":"3641:21:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVaultManager_$90188_$","typeString":"function () view external returns (contract IVaultManager)"}},"id":78622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3641:23:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultManager_$90188","typeString":"contract IVaultManager"}},"id":78623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendUSDCToTrader","nodeType":"MemberAccess","referencedDeclaration":90153,"src":"3641:40:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":78628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3641:65:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78629,"nodeType":"ExpressionStatement","src":"3641:65:109"}]},"id":78631,"nodeType":"IfStatement","src":"2712:1010:109","trueBody":{"id":78534,"nodeType":"Block","src":"2763:237:109","statements":[{"expression":{"arguments":[{"expression":{"id":78513,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78490,"src":"2852:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78514,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"2852:13:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":78517,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"2875:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}],"id":78516,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2867:7:109","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":78515,"name":"address","nodeType":"ElementaryTypeName","src":"2867:7:109","typeDescriptions":{}}},"id":78518,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2867:17:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78519,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78480,"src":"2886:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_memory_ptr","typeString":"struct IPriceAggregator.PendingMarginUpdate memory"}},"id":78520,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":89109,"src":"2886:8:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":78510,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"2830:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":78512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferUSDC","nodeType":"MemberAccess","referencedDeclaration":89617,"src":"2830:21:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":78521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2830:65:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78522,"nodeType":"ExpressionStatement","src":"2830:65:109"},{"expression":{"arguments":[{"expression":{"id":78528,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78490,"src":"2960:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78529,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"2960:13:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78530,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78480,"src":"2975:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_memory_ptr","typeString":"struct IPriceAggregator.PendingMarginUpdate memory"}},"id":78531,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"amount","nodeType":"MemberAccess","referencedDeclaration":89109,"src":"2975:8:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":78523,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"2914:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":78525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"vaultManager","nodeType":"MemberAccess","referencedDeclaration":89598,"src":"2914:21:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVaultManager_$90188_$","typeString":"function () view external returns (contract IVaultManager)"}},"id":78526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2914:23:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultManager_$90188","typeString":"contract IVaultManager"}},"id":78527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"receiveUSDCFromTrader","nodeType":"MemberAccess","referencedDeclaration":90160,"src":"2914:45:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":78532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2914:70:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78533,"nodeType":"ExpressionStatement","src":"2914:70:109"}]}}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78634,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78480,"src":"3846:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_memory_ptr","typeString":"struct IPriceAggregator.PendingMarginUpdate memory"}},"id":78635,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"marginFees","nodeType":"MemberAccess","referencedDeclaration":89113,"src":"3846:12:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":78636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3862:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3846:17:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78669,"nodeType":"IfStatement","src":"3842:332:109","trueBody":{"id":78668,"nodeType":"Block","src":"3864:310:109","statements":[{"expression":{"arguments":[{"expression":{"id":78643,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78480,"src":"3919:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_memory_ptr","typeString":"struct IPriceAggregator.PendingMarginUpdate memory"}},"id":78644,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"marginFees","nodeType":"MemberAccess","referencedDeclaration":89113,"src":"3919:12:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":78645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3933:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":78638,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"3879:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":78640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"vaultManager","nodeType":"MemberAccess","referencedDeclaration":89598,"src":"3879:21:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVaultManager_$90188_$","typeString":"function () view external returns (contract IVaultManager)"}},"id":78641,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3879:23:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultManager_$90188","typeString":"contract IVaultManager"}},"id":78642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allocateRewards","nodeType":"MemberAccess","referencedDeclaration":90172,"src":"3879:39:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_bool_$returns$__$","typeString":"function (uint256,bool) external"}},"id":78646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3879:60:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78647,"nodeType":"ExpressionStatement","src":"3879:60:109"},{"expression":{"arguments":[{"expression":{"id":78655,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78490,"src":"4028:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78656,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"4028:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":78660,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78480,"src":"4080:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_memory_ptr","typeString":"struct IPriceAggregator.PendingMarginUpdate memory"}},"id":78661,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"oldLeverage","nodeType":"MemberAccess","referencedDeclaration":89115,"src":"4080:13:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":78657,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78480,"src":"4063:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarginUpdate_$89116_memory_ptr","typeString":"struct IPriceAggregator.PendingMarginUpdate memory"}},"id":78658,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"marginFees","nodeType":"MemberAccess","referencedDeclaration":89113,"src":"4063:12:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":90823,"src":"4063:16:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":78662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4063:31:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":78663,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78490,"src":"4113:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78664,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"4113:10:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"66616c7365","id":78665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4142:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":78648,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"3954:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":78650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"priceAggregator","nodeType":"MemberAccess","referencedDeclaration":89592,"src":"3954:24:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPriceAggregator_$89248_$","typeString":"function () view external returns (contract IPriceAggregator)"}},"id":78651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3954:26:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":78652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairsStorage","nodeType":"MemberAccess","referencedDeclaration":89162,"src":"3954:39:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPairStorage_$89055_$","typeString":"function () view external returns (contract IPairStorage)"}},"id":78653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3954:41:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":78654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"updateGroupOI","nodeType":"MemberAccess","referencedDeclaration":88886,"src":"3954:55:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$returns$__$","typeString":"function (uint256,uint256,bool,bool) external"}},"id":78666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3954:208:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78667,"nodeType":"ExpressionStatement","src":"3954:208:109"}]}},{"expression":{"arguments":[{"expression":{"id":78673,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78490,"src":"4219:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78674,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"4219:13:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78675,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78490,"src":"4234:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78676,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"4234:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":78677,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78490,"src":"4252:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78678,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89421,"src":"4252:12:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":78679,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78490,"src":"4266:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78680,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"4266:10:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":78670,"name":"pairInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78357,"src":"4184:9:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPairInfos_$88745","typeString":"contract IPairInfos"}},"id":78672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"storeTradeInitialAccFees","nodeType":"MemberAccess","referencedDeclaration":88667,"src":"4184:34:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,uint256,uint256,bool) external"}},"id":78681,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4184:93:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78682,"nodeType":"ExpressionStatement","src":"4184:93:109"},{"expression":{"arguments":[{"id":78686,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78459,"src":"4336:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":78683,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78471,"src":"4290:10:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":78685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"unregisterPendingMarginUpdateOrder","nodeType":"MemberAccess","referencedDeclaration":89239,"src":"4290:45:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":78687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4290:54:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78688,"nodeType":"ExpressionStatement","src":"4290:54:109"}]},"baseFunctions":[88223],"documentation":{"id":78457,"nodeType":"StructuredDocumentation","src":"2076:185:109","text":" @dev Callback function for updating a trader's margin.(Deposit/Withdraw)\n @param orderId orderId.\n @param price price.\n @param spreadP spreadP."},"functionSelector":"203efa58","implemented":true,"kind":"function","modifiers":[{"id":78467,"kind":"modifierInvocation","modifierName":{"id":78466,"name":"onlyPriceAggregator","nodeType":"IdentifierPath","referencedDeclaration":78381,"src":"2371:19:109"},"nodeType":"ModifierInvocation","src":"2371:19:109"}],"name":"updateMarginCallback","nameLocation":"2276:20:109","overrides":{"id":78465,"nodeType":"OverrideSpecifier","overrides":[],"src":"2362:8:109"},"parameters":{"id":78464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78459,"mutability":"mutable","name":"orderId","nameLocation":"2312:7:109","nodeType":"VariableDeclaration","scope":78690,"src":"2307:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78458,"name":"uint","nodeType":"ElementaryTypeName","src":"2307:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":78461,"mutability":"mutable","name":"price","nameLocation":"2326:5:109","nodeType":"VariableDeclaration","scope":78690,"src":"2321:10:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78460,"name":"uint","nodeType":"ElementaryTypeName","src":"2321:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":78463,"mutability":"mutable","name":"spreadP","nameLocation":"2338:7:109","nodeType":"VariableDeclaration","scope":78690,"src":"2333:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78462,"name":"uint","nodeType":"ElementaryTypeName","src":"2333:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2296:56:109"},"returnParameters":{"id":78468,"nodeType":"ParameterList","parameters":[],"src":"2391:0:109"},"scope":80828,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":78943,"nodeType":"FunctionDefinition","src":"4536:2192:109","nodes":[],"body":{"id":78942,"nodeType":"Block","src":"4647:2081:109","nodes":[],"statements":[{"assignments":[78707],"declarations":[{"constant":false,"id":78707,"mutability":"mutable","name":"o","nameLocation":"4700:1:109","nodeType":"VariableDeclaration","scope":78942,"src":"4658:43:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder"},"typeName":{"id":78706,"nodeType":"UserDefinedTypeName","pathNode":{"id":78705,"name":"ITradingStorage.PendingMarketOrder","nodeType":"IdentifierPath","referencedDeclaration":89484,"src":"4658:34:109"},"referencedDeclaration":89484,"src":"4658:34:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_storage_ptr","typeString":"struct ITradingStorage.PendingMarketOrder"}},"visibility":"internal"}],"id":78712,"initialValue":{"arguments":[{"id":78710,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78693,"src":"4737:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":78708,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"4704:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":78709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"reqIDpendingMarketOrder","nodeType":"MemberAccess","referencedDeclaration":89754,"src":"4704:32:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_struct$_PendingMarketOrder_$89484_memory_ptr_$","typeString":"function (uint256) view external returns (struct ITradingStorage.PendingMarketOrder memory)"}},"id":78711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4704:41:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"nodeType":"VariableDeclarationStatement","src":"4658:87:109"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78713,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78707,"src":"4760:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":78714,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"block","nodeType":"MemberAccess","referencedDeclaration":89479,"src":"4760:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":78715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4771:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4760:12:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78719,"nodeType":"IfStatement","src":"4756:51:109","trueBody":{"id":78718,"nodeType":"Block","src":"4774:33:109","statements":[{"functionReturnParameters":78702,"id":78717,"nodeType":"Return","src":"4789:7:109"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":78727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":78720,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78707,"src":"4856:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":78721,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"4856:7:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78722,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"4856:14:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":78725,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4882:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":78724,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4874:7:109","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":78723,"name":"address","nodeType":"ElementaryTypeName","src":"4874:7:109","typeDescriptions":{}}},"id":78726,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4874:10:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4856:28:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78732,"nodeType":"IfStatement","src":"4853:60:109","trueBody":{"expression":{"arguments":[{"hexValue":"494e565f50454e44494e475f4f52444552","id":78729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4893:19:109","typeDescriptions":{"typeIdentifier":"t_stringliteral_c46932e1d40c389382ae27af4e18ac45c70f2148ea6bfb7c3c3ddc9eb72cc6e2","typeString":"literal_string \"INV_PENDING_ORDER\""},"value":"INV_PENDING_ORDER"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c46932e1d40c389382ae27af4e18ac45c70f2148ea6bfb7c3c3ddc9eb72cc6e2","typeString":"literal_string \"INV_PENDING_ORDER\""}],"id":78728,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"4886:6:109","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":78730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4886:27:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78731,"nodeType":"ExpressionStatement","src":"4886:27:109"}},{"assignments":[78737],"declarations":[{"constant":false,"id":78737,"mutability":"mutable","name":"t","nameLocation":"4953:1:109","nodeType":"VariableDeclaration","scope":78942,"src":"4924:30:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":78736,"nodeType":"UserDefinedTypeName","pathNode":{"id":78735,"name":"ITradingStorage.Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"4924:21:109"},"referencedDeclaration":89438,"src":"4924:21:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"}],"id":78740,"initialValue":{"expression":{"id":78738,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78707,"src":"4957:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":78739,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"4957:7:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"nodeType":"VariableDeclarationStatement","src":"4924:40:109"},{"assignments":[78743],"declarations":[{"constant":false,"id":78743,"mutability":"mutable","name":"aggregator","nameLocation":"4992:10:109","nodeType":"VariableDeclaration","scope":78942,"src":"4975:27:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"},"typeName":{"id":78742,"nodeType":"UserDefinedTypeName","pathNode":{"id":78741,"name":"IPriceAggregator","nodeType":"IdentifierPath","referencedDeclaration":89248,"src":"4975:16:109"},"referencedDeclaration":89248,"src":"4975:16:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"visibility":"internal"}],"id":78747,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":78744,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"5005:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":78745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"priceAggregator","nodeType":"MemberAccess","referencedDeclaration":89592,"src":"5005:24:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPriceAggregator_$89248_$","typeString":"function () view external returns (contract IPriceAggregator)"}},"id":78746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5005:26:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"nodeType":"VariableDeclarationStatement","src":"4975:56:109"},{"assignments":[78750],"declarations":[{"constant":false,"id":78750,"mutability":"mutable","name":"pairsStored","nameLocation":"5055:11:109","nodeType":"VariableDeclaration","scope":78942,"src":"5042:24:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"},"typeName":{"id":78749,"nodeType":"UserDefinedTypeName","pathNode":{"id":78748,"name":"IPairStorage","nodeType":"IdentifierPath","referencedDeclaration":89055,"src":"5042:12:109"},"referencedDeclaration":89055,"src":"5042:12:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"visibility":"internal"}],"id":78754,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":78751,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78743,"src":"5069:10:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":78752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairsStorage","nodeType":"MemberAccess","referencedDeclaration":89162,"src":"5069:23:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPairStorage_$89055_$","typeString":"function () view external returns (contract IPairStorage)"}},"id":78753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5069:25:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"nodeType":"VariableDeclarationStatement","src":"5042:52:109"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":78757,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"5162:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78758,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"5162:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":78755,"name":"pairsStored","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78750,"src":"5135:11:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":78756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairGroupIndex","nodeType":"MemberAccess","referencedDeclaration":88908,"src":"5135:26:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":78759,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5135:39:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32","id":78760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5177:1:109","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5135:43:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":78797,"nodeType":"Block","src":"5470:85:109","statements":[{"expression":{"id":78795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":78786,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"5485:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78788,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"5485:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":78790,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78695,"src":"5521:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":78791,"name":"spreadP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78697,"src":"5528:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":78792,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"5537:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78793,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"5537:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":78789,"name":"_marketExecutionPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80827,"src":"5499:21:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint256,uint256,bool) pure returns (uint256)"}},"id":78794,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5499:44:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5485:58:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78796,"nodeType":"ExpressionStatement","src":"5485:58:109"}]},"id":78798,"nodeType":"IfStatement","src":"5131:424:109","trueBody":{"id":78785,"nodeType":"Block","src":"5189:275:109","statements":[{"assignments":[78763],"declarations":[{"constant":false,"id":78763,"mutability":"mutable","name":"priceAfterImpact","nameLocation":"5210:16:109","nodeType":"VariableDeclaration","scope":78785,"src":"5205:21:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78762,"name":"uint","nodeType":"ElementaryTypeName","src":"5205:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78778,"initialValue":{"arguments":[{"id":78766,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78695,"src":"5278:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":78767,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"5302:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78768,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"5302:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":78769,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"5332:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78770,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"5332:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"expression":{"id":78774,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"5379:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78775,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"5379:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":78771,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"5356:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78772,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"positionSizeUSDC","nodeType":"MemberAccess","referencedDeclaration":89425,"src":"5356:18:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":90823,"src":"5356:22:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":78776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5356:34:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":78764,"name":"pairInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78357,"src":"5230:9:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPairInfos_$88745","typeString":"contract IPairInfos"}},"id":78765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getTradePriceImpact","nodeType":"MemberAccess","referencedDeclaration":88680,"src":"5230:29:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$_t_uint256_$_t_bool_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,bool,uint256) view external returns (uint256)"}},"id":78777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5230:175:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5204:201:109"},{"expression":{"id":78783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":78779,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"5422:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78781,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"5422:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":78782,"name":"priceAfterImpact","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78763,"src":"5436:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5422:30:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78784,"nodeType":"ExpressionStatement","src":"5422:30:109"}]}},{"assignments":[78800],"declarations":[{"constant":false,"id":78800,"mutability":"mutable","name":"maxSlippage","nameLocation":"5572:11:109","nodeType":"VariableDeclaration","scope":78942,"src":"5567:16:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78799,"name":"uint","nodeType":"ElementaryTypeName","src":"5567:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":78811,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78801,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78707,"src":"5587:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":78802,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"wantedPrice","nodeType":"MemberAccess","referencedDeclaration":89481,"src":"5587:13:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":78803,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78707,"src":"5603:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":78804,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"slippageP","nodeType":"MemberAccess","referencedDeclaration":89483,"src":"5603:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5587:27:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":78806,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5586:29:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":78807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5618:3:109","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"5586:35:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":78809,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78339,"src":"5624:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5586:48:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5567:67:109"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78814,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78812,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78695,"src":"5665:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":78813,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5674:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5665:10:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"condition":{"expression":{"id":78815,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"5693:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78816,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"5693:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78824,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"5745:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78825,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"5745:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78826,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78707,"src":"5759:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":78827,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"wantedPrice","nodeType":"MemberAccess","referencedDeclaration":89481,"src":"5759:13:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":78828,"name":"maxSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78800,"src":"5775:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5759:27:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5745:41:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5693:93:109","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78817,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"5701:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78818,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"5701:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78819,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78707,"src":"5715:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":78820,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"wantedPrice","nodeType":"MemberAccess","referencedDeclaration":89481,"src":"5715:13:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":78821,"name":"maxSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78800,"src":"5731:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5715:27:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5701:41:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":78832,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5692:95:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5665:122:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78834,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"5805:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78835,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tp","nodeType":"MemberAccess","referencedDeclaration":89433,"src":"5805:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":78836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5812:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5805:8:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"condition":{"expression":{"id":78838,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"5818:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78839,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"5818:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78849,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78845,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"5848:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78846,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"5848:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":78847,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"5863:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78848,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tp","nodeType":"MemberAccess","referencedDeclaration":89433,"src":"5863:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5848:19:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5818:49:109","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78840,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"5826:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78841,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"5826:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":78842,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"5841:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78843,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tp","nodeType":"MemberAccess","referencedDeclaration":89433,"src":"5841:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5826:19:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":78851,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5817:51:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5805:63:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":78853,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5804:65:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5665:204:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":78873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78855,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"5887:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78856,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89435,"src":"5887:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":78857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5894:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5887:8:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"condition":{"expression":{"id":78859,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"5900:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78860,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"5900:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78866,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"5930:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78867,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"5930:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":78868,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"5945:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78869,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89435,"src":"5945:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5930:19:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5900:49:109","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":78861,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"5908:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78862,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"5908:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":78863,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"5923:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78864,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89435,"src":"5923:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5908:19:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":78872,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5899:51:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5887:63:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":78874,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5886:65:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5665:286:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":78888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5968:80:109","subExpression":{"arguments":[{"expression":{"id":78877,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"5990:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78878,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"5990:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78879,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"6000:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78880,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"6000:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":78884,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"6036:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78885,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"6036:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":78881,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"6013:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78882,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"positionSizeUSDC","nodeType":"MemberAccess","referencedDeclaration":89425,"src":"6013:18:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":78883,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":90823,"src":"6013:22:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":78886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6013:34:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":78876,"name":"withinExposureLimits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80315,"src":"5969:20:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256,uint256) view returns (bool)"}},"id":78887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5969:79:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5665:383:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":78933,"nodeType":"Block","src":"6317:339:109","statements":[{"assignments":[78916],"declarations":[{"constant":false,"id":78916,"mutability":"mutable","name":"finalTrade","nameLocation":"6361:10:109","nodeType":"VariableDeclaration","scope":78933,"src":"6332:39:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":78915,"nodeType":"UserDefinedTypeName","pathNode":{"id":78914,"name":"ITradingStorage.Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"6332:21:109"},"referencedDeclaration":89438,"src":"6332:21:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"}],"id":78920,"initialValue":{"arguments":[{"id":78918,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"6389:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}],"id":78917,"name":"_registerTrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80504,"src":"6374:14:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Trade_$89438_memory_ptr_$returns$_t_struct$_Trade_$89438_memory_ptr_$","typeString":"function (struct ITradingStorage.Trade memory) returns (struct ITradingStorage.Trade memory)"}},"id":78919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6374:17:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"nodeType":"VariableDeclarationStatement","src":"6332:59:109"},{"eventCall":{"arguments":[{"id":78922,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78693,"src":"6446:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":78923,"name":"finalTrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78916,"src":"6472:10:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},{"hexValue":"74727565","id":78924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6501:4:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"id":78925,"name":"finalTrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78916,"src":"6524:10:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78926,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"6524:20:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":78927,"name":"finalTrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78916,"src":"6563:10:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78928,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"6563:26:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":78929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6608:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":78930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6628:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":78921,"name":"MarketExecuted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88090,"src":"6413:14:109","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_struct$_Trade_$89438_memory_ptr_$_t_bool_$_t_uint256_$_t_uint256_$_t_int256_$_t_uint256_$returns$__$","typeString":"function (uint256,struct ITradingStorage.Trade memory,bool,uint256,uint256,int256,uint256)"}},"id":78931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6413:231:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78932,"nodeType":"EmitStatement","src":"6408:236:109"}]},"id":78934,"nodeType":"IfStatement","src":"5647:1009:109","trueBody":{"id":78911,"nodeType":"Block","src":"6060:251:109","statements":[{"expression":{"arguments":[{"arguments":[{"id":78895,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"6187:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}],"id":78894,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6179:7:109","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":78893,"name":"address","nodeType":"ElementaryTypeName","src":"6179:7:109","typeDescriptions":{}}},"id":78896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6179:17:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78897,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"6198:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78898,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"6198:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78899,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"6208:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78900,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"positionSizeUSDC","nodeType":"MemberAccess","referencedDeclaration":89425,"src":"6208:18:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":78890,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"6157:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":78892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferUSDC","nodeType":"MemberAccess","referencedDeclaration":89617,"src":"6157:21:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":78901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6157:70:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78902,"nodeType":"ExpressionStatement","src":"6157:70:109"},{"eventCall":{"arguments":[{"id":78904,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78693,"src":"6266:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":78905,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"6275:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78906,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"6275:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":78907,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78737,"src":"6285:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78908,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"6285:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":78903,"name":"MarketOpenCanceled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88118,"src":"6247:18:109","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$__$","typeString":"function (uint256,address,uint256)"}},"id":78909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6247:50:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78910,"nodeType":"EmitStatement","src":"6242:55:109"}]}},{"expression":{"arguments":[{"id":78938,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78693,"src":"6706:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":78939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6715:4:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":78935,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"6668:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":78937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"unregisterPendingMarketOrder","nodeType":"MemberAccess","referencedDeclaration":89644,"src":"6668:37:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_bool_$returns$__$","typeString":"function (uint256,bool) external"}},"id":78940,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6668:52:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78941,"nodeType":"ExpressionStatement","src":"6668:52:109"}]},"baseFunctions":[88178],"documentation":{"id":78691,"nodeType":"StructuredDocumentation","src":"4360:170:109","text":" @dev Callback function for opening a trade on the market.\n @param orderId orderId.\n @param price price.\n @param spreadP spreadP."},"functionSelector":"edd67fbe","implemented":true,"kind":"function","modifiers":[{"id":78701,"kind":"modifierInvocation","modifierName":{"id":78700,"name":"onlyPriceAggregator","nodeType":"IdentifierPath","referencedDeclaration":78381,"src":"4627:19:109"},"nodeType":"ModifierInvocation","src":"4627:19:109"}],"name":"openTradeMarketCallback","nameLocation":"4545:23:109","overrides":{"id":78699,"nodeType":"OverrideSpecifier","overrides":[],"src":"4618:8:109"},"parameters":{"id":78698,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78693,"mutability":"mutable","name":"orderId","nameLocation":"4574:7:109","nodeType":"VariableDeclaration","scope":78943,"src":"4569:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78692,"name":"uint","nodeType":"ElementaryTypeName","src":"4569:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":78695,"mutability":"mutable","name":"price","nameLocation":"4588:5:109","nodeType":"VariableDeclaration","scope":78943,"src":"4583:10:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78694,"name":"uint","nodeType":"ElementaryTypeName","src":"4583:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":78697,"mutability":"mutable","name":"spreadP","nameLocation":"4600:7:109","nodeType":"VariableDeclaration","scope":78943,"src":"4595:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78696,"name":"uint","nodeType":"ElementaryTypeName","src":"4595:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4568:40:109"},"returnParameters":{"id":78702,"nodeType":"ParameterList","parameters":[],"src":"4647:0:109"},"scope":80828,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":79154,"nodeType":"FunctionDefinition","src":"6912:1749:109","nodes":[],"body":{"id":79153,"nodeType":"Block","src":"7024:1637:109","nodes":[],"statements":[{"assignments":[78960],"declarations":[{"constant":false,"id":78960,"mutability":"mutable","name":"o","nameLocation":"7077:1:109","nodeType":"VariableDeclaration","scope":79153,"src":"7035:43:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder"},"typeName":{"id":78959,"nodeType":"UserDefinedTypeName","pathNode":{"id":78958,"name":"ITradingStorage.PendingMarketOrder","nodeType":"IdentifierPath","referencedDeclaration":89484,"src":"7035:34:109"},"referencedDeclaration":89484,"src":"7035:34:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_storage_ptr","typeString":"struct ITradingStorage.PendingMarketOrder"}},"visibility":"internal"}],"id":78965,"initialValue":{"arguments":[{"id":78963,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78946,"src":"7114:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":78961,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"7081:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":78962,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"reqIDpendingMarketOrder","nodeType":"MemberAccess","referencedDeclaration":89754,"src":"7081:32:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_struct$_PendingMarketOrder_$89484_memory_ptr_$","typeString":"function (uint256) view external returns (struct ITradingStorage.PendingMarketOrder memory)"}},"id":78964,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7081:41:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"nodeType":"VariableDeclarationStatement","src":"7035:87:109"},{"assignments":[78970],"declarations":[{"constant":false,"id":78970,"mutability":"mutable","name":"t","nameLocation":"7162:1:109","nodeType":"VariableDeclaration","scope":79153,"src":"7133:30:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":78969,"nodeType":"UserDefinedTypeName","pathNode":{"id":78968,"name":"ITradingStorage.Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"7133:21:109"},"referencedDeclaration":89438,"src":"7133:21:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"}],"id":78983,"initialValue":{"arguments":[{"expression":{"expression":{"id":78973,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78960,"src":"7186:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":78974,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"7186:7:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78975,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"7186:14:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"expression":{"id":78976,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78960,"src":"7202:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":78977,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"7202:7:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78978,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"7202:17:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":78979,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78960,"src":"7221:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":78980,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"7221:7:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78981,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89421,"src":"7221:13:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":78971,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"7166:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":78972,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openTrades","nodeType":"MemberAccess","referencedDeclaration":89686,"src":"7166:19:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_struct$_Trade_$89438_memory_ptr_$","typeString":"function (address,uint256,uint256) view external returns (struct ITradingStorage.Trade memory)"}},"id":78982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7166:69:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"nodeType":"VariableDeclarationStatement","src":"7133:102:109"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":78991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":78984,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78960,"src":"7285:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":78985,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"7285:7:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":78986,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"7285:14:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":78989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7311:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":78988,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7303:7:109","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":78987,"name":"address","nodeType":"ElementaryTypeName","src":"7303:7:109","typeDescriptions":{}}},"id":78990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7303:10:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7285:28:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":78996,"nodeType":"IfStatement","src":"7282:60:109","trueBody":{"expression":{"arguments":[{"hexValue":"494e565f50454e44494e475f4f52444552","id":78993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7322:19:109","typeDescriptions":{"typeIdentifier":"t_stringliteral_c46932e1d40c389382ae27af4e18ac45c70f2148ea6bfb7c3c3ddc9eb72cc6e2","typeString":"literal_string \"INV_PENDING_ORDER\""},"value":"INV_PENDING_ORDER"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c46932e1d40c389382ae27af4e18ac45c70f2148ea6bfb7c3c3ddc9eb72cc6e2","typeString":"literal_string \"INV_PENDING_ORDER\""}],"id":78992,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"7315:6:109","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":78994,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7315:27:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":78995,"nodeType":"ExpressionStatement","src":"7315:27:109"}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":79004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":78999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78997,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78948,"src":"7357:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":78998,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7366:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7357:10:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79003,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":79000,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78970,"src":"7371:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79001,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"7371:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":79002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7384:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7371:14:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7357:28:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":79144,"nodeType":"Block","src":"8508:82:109","statements":[{"eventCall":{"arguments":[{"id":79137,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78946,"src":"8547:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79138,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78970,"src":"8556:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79139,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"8556:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":79140,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78970,"src":"8566:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79141,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"8566:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79136,"name":"MarketOpenCanceled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88118,"src":"8528:18:109","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$returns$__$","typeString":"function (uint256,address,uint256)"}},"id":79142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8528:50:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79143,"nodeType":"EmitStatement","src":"8523:55:109"}]},"id":79145,"nodeType":"IfStatement","src":"7353:1237:109","trueBody":{"id":79135,"nodeType":"Block","src":"7387:1106:109","statements":[{"assignments":[79009],"declarations":[{"constant":false,"id":79009,"mutability":"mutable","name":"i","nameLocation":"7435:1:109","nodeType":"VariableDeclaration","scope":79135,"src":"7402:34:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_memory_ptr","typeString":"struct ITradingStorage.TradeInfo"},"typeName":{"id":79008,"nodeType":"UserDefinedTypeName","pathNode":{"id":79007,"name":"ITradingStorage.TradeInfo","nodeType":"IdentifierPath","referencedDeclaration":89449,"src":"7402:25:109"},"referencedDeclaration":89449,"src":"7402:25:109","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage_ptr","typeString":"struct ITradingStorage.TradeInfo"}},"visibility":"internal"}],"id":79019,"initialValue":{"arguments":[{"expression":{"id":79012,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78970,"src":"7463:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79013,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"7463:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":79014,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78970,"src":"7473:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79015,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"7473:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79016,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78970,"src":"7486:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79017,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89421,"src":"7486:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":79010,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"7439:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":79011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openTradesInfo","nodeType":"MemberAccess","referencedDeclaration":89698,"src":"7439:23:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_struct$_TradeInfo_$89449_memory_ptr_$","typeString":"function (address,uint256,uint256) view external returns (struct ITradingStorage.TradeInfo memory)"}},"id":79018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7439:55:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_memory_ptr","typeString":"struct ITradingStorage.TradeInfo memory"}},"nodeType":"VariableDeclarationStatement","src":"7402:92:109"},{"assignments":[79022],"declarations":[{"constant":false,"id":79022,"mutability":"mutable","name":"aggregator","nameLocation":"7526:10:109","nodeType":"VariableDeclaration","scope":79135,"src":"7509:27:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"},"typeName":{"id":79021,"nodeType":"UserDefinedTypeName","pathNode":{"id":79020,"name":"IPriceAggregator","nodeType":"IdentifierPath","referencedDeclaration":89248,"src":"7509:16:109"},"referencedDeclaration":89248,"src":"7509:16:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"visibility":"internal"}],"id":79026,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":79023,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"7539:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":79024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"priceAggregator","nodeType":"MemberAccess","referencedDeclaration":89592,"src":"7539:24:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPriceAggregator_$89248_$","typeString":"function () view external returns (contract IPriceAggregator)"}},"id":79025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7539:26:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"nodeType":"VariableDeclarationStatement","src":"7509:56:109"},{"assignments":[79028],"declarations":[{"constant":false,"id":79028,"mutability":"mutable","name":"profitP","nameLocation":"7586:7:109","nodeType":"VariableDeclaration","scope":79135,"src":"7582:11:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":79027,"name":"int","nodeType":"ElementaryTypeName","src":"7582:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":79038,"initialValue":{"arguments":[{"expression":{"id":79030,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78970,"src":"7618:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79031,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"7618:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":79032,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78948,"src":"7631:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79033,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78970,"src":"7638:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79034,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"7638:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":79035,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78970,"src":"7645:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79036,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"7645:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79029,"name":"_currentPercentProfit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80795,"src":"7596:21:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_bool_$_t_uint256_$returns$_t_int256_$","typeString":"function (uint256,uint256,bool,uint256) pure returns (int256)"}},"id":79037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7596:60:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7582:74:109"},{"assignments":[79040],"declarations":[{"constant":false,"id":79040,"mutability":"mutable","name":"pnl","nameLocation":"7689:3:109","nodeType":"VariableDeclaration","scope":79135,"src":"7685:7:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":79039,"name":"int","nodeType":"ElementaryTypeName","src":"7685:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":79057,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":79056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":79054,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":79048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"expression":{"id":79043,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78960,"src":"7700:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":79044,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"7700:7:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79045,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"7700:23:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79042,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7696:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":79041,"name":"int","nodeType":"ElementaryTypeName","src":"7696:3:109","typeDescriptions":{}}},"id":79046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7696:28:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":79047,"name":"profitP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79028,"src":"7727:7:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7696:38:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":79049,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7695:40:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":79052,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78339,"src":"7742:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79051,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7738:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":79050,"name":"int","nodeType":"ElementaryTypeName","src":"7738:3:109","typeDescriptions":{}}},"id":79053,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7738:15:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7695:58:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":79055,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7756:3:109","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"7695:64:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"7685:74:109"},{"assignments":[79059],"declarations":[{"constant":false,"id":79059,"mutability":"mutable","name":"levPosToken","nameLocation":"7779:11:109","nodeType":"VariableDeclaration","scope":79135,"src":"7774:16:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79058,"name":"uint","nodeType":"ElementaryTypeName","src":"7774:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":79095,"initialValue":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":79076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":79062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79060,"name":"pnl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79040,"src":"7795:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":79061,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7801:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7795:7:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":79063,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7794:9:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":79075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":79067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79064,"name":"pnl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79040,"src":"7808:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":79066,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"7814:2:109","subExpression":{"hexValue":"31","id":79065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7815:1:109","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}},"src":"7808:8:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":79068,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7807:10:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"expression":{"expression":{"id":79071,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78960,"src":"7824:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":79072,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"7824:7:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79073,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"7824:23:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79070,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7820:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":79069,"name":"int","nodeType":"ElementaryTypeName","src":"7820:3:109","typeDescriptions":{}}},"id":79074,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7820:28:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7807:41:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7794:54:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":79077,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7793:56:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"expression":{"id":79091,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78970,"src":"7901:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79092,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"7901:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":79088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"expression":{"id":79083,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78960,"src":"7865:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":79084,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"7865:7:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79085,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"7865:23:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79082,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7861:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":79081,"name":"int","nodeType":"ElementaryTypeName","src":"7861:3:109","typeDescriptions":{}}},"id":79086,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7861:28:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":79087,"name":"pnl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79040,"src":"7892:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"7861:34:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":79080,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7856:4:109","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":79079,"name":"uint","nodeType":"ElementaryTypeName","src":"7856:4:109","typeDescriptions":{}}},"id":79089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7856:40:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":90823,"src":"7856:44:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":79093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7856:56:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7793:119:109","trueExpression":{"hexValue":"30","id":79078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7852:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7774:138:109"},{"assignments":[79097],"declarations":[{"constant":false,"id":79097,"mutability":"mutable","name":"usdcSentToTrader","nameLocation":"7934:16:109","nodeType":"VariableDeclaration","scope":79135,"src":"7929:21:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79096,"name":"uint","nodeType":"ElementaryTypeName","src":"7929:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":79122,"initialValue":{"arguments":[{"id":79099,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78970,"src":"7988:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},{"id":79100,"name":"profitP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79028,"src":"8008:7:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"expression":{"expression":{"id":79101,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78960,"src":"8034:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":79102,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"8034:7:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79103,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"8034:23:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":79104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8076:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79105,"name":"levPosToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79059,"src":"8097:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"expression":{"id":79110,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78970,"src":"8151:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79111,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"8151:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":79106,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79022,"src":"8111:10:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":79107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairsStorage","nodeType":"MemberAccess","referencedDeclaration":89162,"src":"8111:23:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPairStorage_$89055_$","typeString":"function () view external returns (contract IPairStorage)"}},"id":79108,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8111:25:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":79109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairCloseFeeP","nodeType":"MemberAccess","referencedDeclaration":88991,"src":"8111:39:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":79112,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8111:52:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8097:66:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":79114,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8096:68:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":79115,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8167:3:109","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"8096:74:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":79117,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78339,"src":"8173:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8096:87:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79119,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79009,"src":"8202:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_memory_ptr","typeString":"struct ITradingStorage.TradeInfo memory"}},"id":79120,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"lossProtection","nodeType":"MemberAccess","referencedDeclaration":89448,"src":"8202:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79098,"name":"_unregisterTrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80699,"src":"7953:16:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Trade_$89438_memory_ptr_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct ITradingStorage.Trade memory,int256,uint256,uint256,uint256,uint256) returns (uint256)"}},"id":79121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7953:280:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7929:304:109"},{"eventCall":{"arguments":[{"id":79124,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78946,"src":"8288:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":79125,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78970,"src":"8314:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},{"hexValue":"66616c7365","id":79126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8334:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"id":79127,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78948,"src":"8358:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":79128,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78960,"src":"8382:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingMarketOrder_$89484_memory_ptr","typeString":"struct ITradingStorage.PendingMarketOrder memory"}},"id":79129,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trade","nodeType":"MemberAccess","referencedDeclaration":89477,"src":"8382:7:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79130,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"8382:23:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":79131,"name":"profitP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79028,"src":"8424:7:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":79132,"name":"usdcSentToTrader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79097,"src":"8450:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79123,"name":"MarketExecuted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88090,"src":"8255:14:109","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_struct$_Trade_$89438_memory_ptr_$_t_bool_$_t_uint256_$_t_uint256_$_t_int256_$_t_uint256_$returns$__$","typeString":"function (uint256,struct ITradingStorage.Trade memory,bool,uint256,uint256,int256,uint256)"}},"id":79133,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8255:226:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79134,"nodeType":"EmitStatement","src":"8250:231:109"}]}},{"expression":{"arguments":[{"id":79149,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78946,"src":"8638:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":79150,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8647:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":79146,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"8600:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":79148,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"unregisterPendingMarketOrder","nodeType":"MemberAccess","referencedDeclaration":89644,"src":"8600:37:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_bool_$returns$__$","typeString":"function (uint256,bool) external"}},"id":79151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8600:53:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79152,"nodeType":"ExpressionStatement","src":"8600:53:109"}]},"baseFunctions":[88187],"documentation":{"id":78944,"nodeType":"StructuredDocumentation","src":"6736:170:109","text":" @dev Callback function for closing a trade on the market.\n @param orderId orderId.\n @param price price.\n @param spreadP spreadP."},"functionSelector":"fa7227e9","implemented":true,"kind":"function","modifiers":[{"id":78954,"kind":"modifierInvocation","modifierName":{"id":78953,"name":"onlyPriceAggregator","nodeType":"IdentifierPath","referencedDeclaration":78381,"src":"7004:19:109"},"nodeType":"ModifierInvocation","src":"7004:19:109"}],"name":"closeTradeMarketCallback","nameLocation":"6921:24:109","overrides":{"id":78952,"nodeType":"OverrideSpecifier","overrides":[],"src":"6995:8:109"},"parameters":{"id":78951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":78946,"mutability":"mutable","name":"orderId","nameLocation":"6951:7:109","nodeType":"VariableDeclaration","scope":79154,"src":"6946:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78945,"name":"uint","nodeType":"ElementaryTypeName","src":"6946:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":78948,"mutability":"mutable","name":"price","nameLocation":"6965:5:109","nodeType":"VariableDeclaration","scope":79154,"src":"6960:10:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78947,"name":"uint","nodeType":"ElementaryTypeName","src":"6960:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":78950,"mutability":"mutable","name":"spreadP","nameLocation":"6977:7:109","nodeType":"VariableDeclaration","scope":79154,"src":"6972:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":78949,"name":"uint","nodeType":"ElementaryTypeName","src":"6972:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6945:40:109"},"returnParameters":{"id":78955,"nodeType":"ParameterList","parameters":[],"src":"7024:0:109"},"scope":80828,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":79489,"nodeType":"FunctionDefinition","src":"8843:3620:109","nodes":[],"body":{"id":79488,"nodeType":"Block","src":"8960:3503:109","nodes":[],"statements":[{"assignments":[79171],"declarations":[{"constant":false,"id":79171,"mutability":"mutable","name":"n","nameLocation":"9012:1:109","nodeType":"VariableDeclaration","scope":79488,"src":"8971:42:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder"},"typeName":{"id":79170,"nodeType":"UserDefinedTypeName","pathNode":{"id":79169,"name":"ITradingStorage.PendingLimitOrder","nodeType":"IdentifierPath","referencedDeclaration":89494,"src":"8971:33:109"},"referencedDeclaration":89494,"src":"8971:33:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_storage_ptr","typeString":"struct ITradingStorage.PendingLimitOrder"}},"visibility":"internal"}],"id":79176,"initialValue":{"arguments":[{"id":79174,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79157,"src":"9048:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":79172,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"9016:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":79173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"reqIDpendingLimitOrder","nodeType":"MemberAccess","referencedDeclaration":89740,"src":"9016:31:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_struct$_PendingLimitOrder_$89494_memory_ptr_$","typeString":"function (uint256) view external returns (struct ITradingStorage.PendingLimitOrder memory)"}},"id":79175,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9016:40:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"nodeType":"VariableDeclarationStatement","src":"8971:85:109"},{"assignments":[79179],"declarations":[{"constant":false,"id":79179,"mutability":"mutable","name":"executor","nameLocation":"9076:8:109","nodeType":"VariableDeclaration","scope":79488,"src":"9067:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IExecute_$88371","typeString":"contract IExecute"},"typeName":{"id":79178,"nodeType":"UserDefinedTypeName","pathNode":{"id":79177,"name":"IExecute","nodeType":"IdentifierPath","referencedDeclaration":88371,"src":"9067:8:109"},"referencedDeclaration":88371,"src":"9067:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_IExecute_$88371","typeString":"contract IExecute"}},"visibility":"internal"}],"id":79185,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":79180,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"9087:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":79181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"priceAggregator","nodeType":"MemberAccess","referencedDeclaration":89592,"src":"9087:24:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPriceAggregator_$89248_$","typeString":"function () view external returns (contract IPriceAggregator)"}},"id":79182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9087:26:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":79183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"executions","nodeType":"MemberAccess","referencedDeclaration":89168,"src":"9087:37:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IExecute_$88371_$","typeString":"function () view external returns (contract IExecute)"}},"id":79184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9087:39:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IExecute_$88371","typeString":"contract IExecute"}},"nodeType":"VariableDeclarationStatement","src":"9067:59:109"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":79198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79186,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79159,"src":"9143:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":79187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9152:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9143:10:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"expression":{"id":79191,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79171,"src":"9184:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79192,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89486,"src":"9184:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":79193,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79171,"src":"9194:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79194,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89488,"src":"9194:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79195,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79171,"src":"9207:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79196,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89490,"src":"9207:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":79189,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"9157:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":79190,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"hasOpenLimitOrder","nodeType":"MemberAccess","referencedDeclaration":89664,"src":"9157:26:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256,uint256) view external returns (bool)"}},"id":79197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9157:58:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9143:72:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":79465,"nodeType":"IfStatement","src":"9139:3150:109","trueBody":{"id":79464,"nodeType":"Block","src":"9217:3072:109","statements":[{"assignments":[79203],"declarations":[{"constant":false,"id":79203,"mutability":"mutable","name":"o","nameLocation":"9270:1:109","nodeType":"VariableDeclaration","scope":79464,"src":"9232:39:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder"},"typeName":{"id":79202,"nodeType":"UserDefinedTypeName","pathNode":{"id":79201,"name":"ITradingStorage.OpenLimitOrder","nodeType":"IdentifierPath","referencedDeclaration":89474,"src":"9232:30:109"},"referencedDeclaration":89474,"src":"9232:30:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_storage_ptr","typeString":"struct ITradingStorage.OpenLimitOrder"}},"visibility":"internal"}],"id":79213,"initialValue":{"arguments":[{"expression":{"id":79206,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79171,"src":"9301:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79207,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89486,"src":"9301:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":79208,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79171,"src":"9311:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79209,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89488,"src":"9311:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79210,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79171,"src":"9324:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79211,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89490,"src":"9324:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":79204,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"9274:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":79205,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getOpenLimitOrder","nodeType":"MemberAccess","referencedDeclaration":89732,"src":"9274:26:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_struct$_OpenLimitOrder_$89474_memory_ptr_$","typeString":"function (address,uint256,uint256) view external returns (struct ITradingStorage.OpenLimitOrder memory)"}},"id":79212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9274:58:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"nodeType":"VariableDeclarationStatement","src":"9232:100:109"},{"assignments":[79218],"declarations":[{"constant":false,"id":79218,"mutability":"mutable","name":"t","nameLocation":"9375:1:109","nodeType":"VariableDeclaration","scope":79464,"src":"9347:29:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_OpenLimitOrderType_$88279","typeString":"enum IExecute.OpenLimitOrderType"},"typeName":{"id":79217,"nodeType":"UserDefinedTypeName","pathNode":{"id":79216,"name":"IExecute.OpenLimitOrderType","nodeType":"IdentifierPath","referencedDeclaration":88279,"src":"9347:27:109"},"referencedDeclaration":88279,"src":"9347:27:109","typeDescriptions":{"typeIdentifier":"t_enum$_OpenLimitOrderType_$88279","typeString":"enum IExecute.OpenLimitOrderType"}},"visibility":"internal"}],"id":79228,"initialValue":{"arguments":[{"expression":{"id":79221,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79171,"src":"9408:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79222,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89486,"src":"9408:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":79223,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79171,"src":"9418:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79224,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89488,"src":"9418:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79225,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79171,"src":"9431:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79226,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89490,"src":"9431:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":79219,"name":"executor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79179,"src":"9379:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_IExecute_$88371","typeString":"contract IExecute"}},"id":79220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openLimitOrderTypes","nodeType":"MemberAccess","referencedDeclaration":88358,"src":"9379:28:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_enum$_OpenLimitOrderType_$88279_$","typeString":"function (address,uint256,uint256) view external returns (enum IExecute.OpenLimitOrderType)"}},"id":79227,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9379:60:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_OpenLimitOrderType_$88279","typeString":"enum IExecute.OpenLimitOrderType"}},"nodeType":"VariableDeclarationStatement","src":"9347:92:109"},{"assignments":[79231],"declarations":[{"constant":false,"id":79231,"mutability":"mutable","name":"aggregator","nameLocation":"9473:10:109","nodeType":"VariableDeclaration","scope":79464,"src":"9456:27:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"},"typeName":{"id":79230,"nodeType":"UserDefinedTypeName","pathNode":{"id":79229,"name":"IPriceAggregator","nodeType":"IdentifierPath","referencedDeclaration":89248,"src":"9456:16:109"},"referencedDeclaration":89248,"src":"9456:16:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"visibility":"internal"}],"id":79235,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":79232,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"9486:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":79233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"priceAggregator","nodeType":"MemberAccess","referencedDeclaration":89592,"src":"9486:24:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPriceAggregator_$89248_$","typeString":"function () view external returns (contract IPriceAggregator)"}},"id":79234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9486:26:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"nodeType":"VariableDeclarationStatement","src":"9456:56:109"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":79279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_OpenLimitOrderType_$88279","typeString":"enum IExecute.OpenLimitOrderType"},"id":79240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79236,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79218,"src":"9603:1:109","typeDescriptions":{"typeIdentifier":"t_enum$_OpenLimitOrderType_$88279","typeString":"enum IExecute.OpenLimitOrderType"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":79237,"name":"IExecute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88371,"src":"9608:8:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IExecute_$88371_$","typeString":"type(contract IExecute)"}},"id":79238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"OpenLimitOrderType","nodeType":"MemberAccess","referencedDeclaration":88279,"src":"9608:27:109","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_OpenLimitOrderType_$88279_$","typeString":"type(enum IExecute.OpenLimitOrderType)"}},"id":79239,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"REVERSAL","nodeType":"MemberAccess","referencedDeclaration":88277,"src":"9608:36:109","typeDescriptions":{"typeIdentifier":"t_enum$_OpenLimitOrderType_$88279","typeString":"enum IExecute.OpenLimitOrderType"}},"src":"9603:41:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"condition":{"expression":{"id":79253,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"9738:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79254,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89459,"src":"9738:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79259,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79159,"src":"9765:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":79260,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"9774:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79261,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"price","nodeType":"MemberAccess","referencedDeclaration":89467,"src":"9774:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9765:16:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":79263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9738:43:109","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79255,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79159,"src":"9746:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":79256,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"9755:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79257,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"price","nodeType":"MemberAccess","referencedDeclaration":89467,"src":"9755:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9746:16:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":79264,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9737:45:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":79265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9603:179:109","trueExpression":{"components":[{"condition":{"expression":{"id":79241,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"9669:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79242,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89459,"src":"9669:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79247,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79159,"src":"9696:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":79248,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"9705:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79249,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"price","nodeType":"MemberAccess","referencedDeclaration":89467,"src":"9705:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9696:16:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":79251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9669:43:109","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79246,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79243,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79159,"src":"9677:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":79244,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"9686:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79245,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"price","nodeType":"MemberAccess","referencedDeclaration":89467,"src":"9686:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9677:16:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":79252,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9668:45:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":79266,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9602:181:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"expression":{"id":79268,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"9825:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79269,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89451,"src":"9825:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":79270,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"9835:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79271,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89453,"src":"9835:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":79275,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"9867:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79276,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89461,"src":"9867:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":79272,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"9848:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79273,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"positionSize","nodeType":"MemberAccess","referencedDeclaration":89457,"src":"9848:14:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":90823,"src":"9848:18:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":79277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9848:30:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79267,"name":"withinExposureLimits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80315,"src":"9804:20:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256,uint256) view returns (bool)"}},"id":79278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9804:75:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9602:277:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":79463,"nodeType":"IfStatement","src":"9598:2680:109","trueBody":{"id":79462,"nodeType":"Block","src":"9894:2384:109","statements":[{"assignments":[79281],"declarations":[{"constant":false,"id":79281,"mutability":"mutable","name":"priceBeforeImpact","nameLocation":"9920:17:109","nodeType":"VariableDeclaration","scope":79462,"src":"9915:22:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79280,"name":"uint","nodeType":"ElementaryTypeName","src":"9915:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":79283,"initialValue":{"id":79282,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79159,"src":"9940:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9915:30:109"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":79290,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"10025:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79291,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89453,"src":"10025:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":79285,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79231,"src":"9983:10:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":79286,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairsStorage","nodeType":"MemberAccess","referencedDeclaration":89162,"src":"9983:23:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPairStorage_$89055_$","typeString":"function () view external returns (contract IPairStorage)"}},"id":79287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9983:25:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}],"id":79284,"name":"IPairStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89055,"src":"9970:12:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IPairStorage_$89055_$","typeString":"type(contract IPairStorage)"}},"id":79288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9970:39:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":79289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairGroupIndex","nodeType":"MemberAccess","referencedDeclaration":88908,"src":"9970:54:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":79292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9970:67:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"32","id":79293,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10040:1:109","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9970:71:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":79326,"nodeType":"Block","src":"10432:95:109","statements":[{"expression":{"id":79324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":79317,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79159,"src":"10455:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":79319,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79159,"src":"10485:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":79320,"name":"spreadP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79161,"src":"10492:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79321,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"10501:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79322,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89459,"src":"10501:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":79318,"name":"_marketExecutionPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80827,"src":"10463:21:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint256,uint256,bool) pure returns (uint256)"}},"id":79323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10463:44:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10455:52:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79325,"nodeType":"ExpressionStatement","src":"10455:52:109"}]},"id":79327,"nodeType":"IfStatement","src":"9966:561:109","trueBody":{"id":79316,"nodeType":"Block","src":"10061:365:109","statements":[{"assignments":[79296],"declarations":[{"constant":false,"id":79296,"mutability":"mutable","name":"priceAfterImpact","nameLocation":"10126:16:109","nodeType":"VariableDeclaration","scope":79316,"src":"10121:21:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79295,"name":"uint","nodeType":"ElementaryTypeName","src":"10121:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":79311,"initialValue":{"arguments":[{"id":79299,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79159,"src":"10202:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79300,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"10234:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79301,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89453,"src":"10234:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79302,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"10272:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79303,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89459,"src":"10272:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"expression":{"id":79307,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"10323:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79308,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89461,"src":"10323:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":79304,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"10304:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79305,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"positionSize","nodeType":"MemberAccess","referencedDeclaration":89457,"src":"10304:14:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":90823,"src":"10304:18:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":79309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10304:30:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":79297,"name":"pairInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78357,"src":"10146:9:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPairInfos_$88745","typeString":"contract IPairInfos"}},"id":79298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getTradePriceImpact","nodeType":"MemberAccess","referencedDeclaration":88680,"src":"10146:29:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$_t_uint256_$_t_bool_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,bool,uint256) view external returns (uint256)"}},"id":79310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10146:211:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10120:237:109"},{"expression":{"id":79314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":79312,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79159,"src":"10382:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":79313,"name":"priceAfterImpact","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79296,"src":"10390:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10382:24:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79315,"nodeType":"ExpressionStatement","src":"10382:24:109"}]}},{"assignments":[79329],"declarations":[{"constant":false,"id":79329,"mutability":"mutable","name":"maxSlippage","nameLocation":"10552:11:109","nodeType":"VariableDeclaration","scope":79462,"src":"10547:16:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79328,"name":"uint","nodeType":"ElementaryTypeName","src":"10547:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":79340,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79339,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":79330,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"10567:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79331,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"price","nodeType":"MemberAccess","referencedDeclaration":89467,"src":"10567:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":79332,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"10577:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79333,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"slippageP","nodeType":"MemberAccess","referencedDeclaration":89469,"src":"10577:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10567:21:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":79335,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10566:23:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":79336,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10592:3:109","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"10566:29:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":79338,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78339,"src":"10598:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10566:42:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10547:61:109"},{"condition":{"id":79357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"10632:73:109","subExpression":{"components":[{"condition":{"expression":{"id":79341,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"10634:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79342,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89459,"src":"10634:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79349,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79159,"src":"10675:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":79350,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"10683:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79351,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"price","nodeType":"MemberAccess","referencedDeclaration":89467,"src":"10683:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":79352,"name":"maxSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79329,"src":"10693:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10683:21:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10675:29:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":79355,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10634:70:109","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79348,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79343,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79159,"src":"10642:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":79344,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"10651:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79345,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"price","nodeType":"MemberAccess","referencedDeclaration":89467,"src":"10651:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":79346,"name":"maxSlippage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79329,"src":"10661:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10651:21:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10642:30:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":79356,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10633:72:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":79461,"nodeType":"IfStatement","src":"10629:1634:109","trueBody":{"id":79460,"nodeType":"Block","src":"10707:1556:109","statements":[{"assignments":[79362],"declarations":[{"constant":false,"id":79362,"mutability":"mutable","name":"finalTrade","nameLocation":"10759:10:109","nodeType":"VariableDeclaration","scope":79460,"src":"10730:39:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":79361,"nodeType":"UserDefinedTypeName","pathNode":{"id":79360,"name":"ITradingStorage.Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"10730:21:109"},"referencedDeclaration":89438,"src":"10730:21:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"}],"id":79386,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":79366,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"10857:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79367,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89451,"src":"10857:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":79368,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"10892:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79369,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89453,"src":"10892:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":79370,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10930:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":79371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10958:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"id":79372,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"10986:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79373,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"positionSize","nodeType":"MemberAccess","referencedDeclaration":89457,"src":"10986:14:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":79374,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79159,"src":"11027:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79375,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"11059:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79376,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89459,"src":"11059:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":79377,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"11091:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79378,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89461,"src":"11091:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79379,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"11128:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79380,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tp","nodeType":"MemberAccess","referencedDeclaration":89463,"src":"11128:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79381,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"11159:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79382,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89465,"src":"11159:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":79383,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11190:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":79364,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"10809:15:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":79365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"Trade","nodeType":"MemberAccess","referencedDeclaration":89438,"src":"10809:21:109","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Trade_$89438_storage_ptr_$","typeString":"type(struct ITradingStorage.Trade storage pointer)"}},"id":79384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10809:409:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}],"id":79363,"name":"_registerTrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80504,"src":"10772:14:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Trade_$89438_memory_ptr_$returns$_t_struct$_Trade_$89438_memory_ptr_$","typeString":"function (struct ITradingStorage.Trade memory) returns (struct ITradingStorage.Trade memory)"}},"id":79385,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10772:469:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"nodeType":"VariableDeclarationStatement","src":"10730:511:109"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79390,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":79387,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"11270:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79388,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"executionFee","nodeType":"MemberAccess","referencedDeclaration":89473,"src":"11270:14:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":79389,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11287:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11270:18:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":79428,"nodeType":"IfStatement","src":"11266:412:109","trueBody":{"id":79427,"nodeType":"Block","src":"11290:388:109","statements":[{"expression":{"arguments":[{"arguments":[{"id":79396,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"11347:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}],"id":79395,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11339:7:109","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":79394,"name":"address","nodeType":"ElementaryTypeName","src":"11339:7:109","typeDescriptions":{}}},"id":79397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11339:17:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":79400,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"11366:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":79401,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"vaultManager","nodeType":"MemberAccess","referencedDeclaration":89598,"src":"11366:21:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVaultManager_$90188_$","typeString":"function () view external returns (contract IVaultManager)"}},"id":79402,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11366:23:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultManager_$90188","typeString":"contract IVaultManager"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IVaultManager_$90188","typeString":"contract IVaultManager"}],"id":79399,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11358:7:109","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":79398,"name":"address","nodeType":"ElementaryTypeName","src":"11358:7:109","typeDescriptions":{}}},"id":79403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11358:32:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":79404,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"11392:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79405,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"executionFee","nodeType":"MemberAccess","referencedDeclaration":89473,"src":"11392:14:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":79391,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"11317:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":79393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transferUSDC","nodeType":"MemberAccess","referencedDeclaration":89617,"src":"11317:21:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":79406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11317:90:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79407,"nodeType":"ExpressionStatement","src":"11317:90:109"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":79413,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"11518:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79414,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89451,"src":"11518:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":79415,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"11528:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79416,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89453,"src":"11528:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79417,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"11541:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79418,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89455,"src":"11541:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"expression":{"id":79419,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"11550:15:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":79420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LimitOrder","nodeType":"MemberAccess","referencedDeclaration":89405,"src":"11550:26:109","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_LimitOrder_$89405_$","typeString":"type(enum ITradingStorage.LimitOrder)"}},"id":79421,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"OPEN","nodeType":"MemberAccess","referencedDeclaration":89404,"src":"11550:31:109","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}],"expression":{"id":79411,"name":"IExecute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88371,"src":"11492:8:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IExecute_$88371_$","typeString":"type(contract IExecute)"}},"id":79412,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"TriggeredLimitId","nodeType":"MemberAccess","referencedDeclaration":88275,"src":"11492:25:109","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_TriggeredLimitId_$88275_storage_ptr_$","typeString":"type(struct IExecute.TriggeredLimitId storage pointer)"}},"id":79422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11492:90:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TriggeredLimitId_$88275_memory_ptr","typeString":"struct IExecute.TriggeredLimitId memory"}},{"expression":{"id":79423,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"11613:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79424,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"executionFee","nodeType":"MemberAccess","referencedDeclaration":89473,"src":"11613:14:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_TriggeredLimitId_$88275_memory_ptr","typeString":"struct IExecute.TriggeredLimitId memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":79408,"name":"executor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79179,"src":"11436:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_IExecute_$88371","typeString":"contract IExecute"}},"id":79410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"distributeReward","nodeType":"MemberAccess","referencedDeclaration":88346,"src":"11436:25:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_TriggeredLimitId_$88275_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (struct IExecute.TriggeredLimitId memory,uint256) external"}},"id":79425,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11436:218:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79426,"nodeType":"ExpressionStatement","src":"11436:218:109"}]}},{"expression":{"arguments":[{"expression":{"id":79432,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"11736:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79433,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89451,"src":"11736:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":79434,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"11746:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79435,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89453,"src":"11746:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79436,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"11759:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79437,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89455,"src":"11759:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":79429,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"11702:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":79431,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"unregisterOpenLimitOrder","nodeType":"MemberAccess","referencedDeclaration":89653,"src":"11702:33:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256) external"}},"id":79438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11702:65:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79439,"nodeType":"ExpressionStatement","src":"11702:65:109"},{"eventCall":{"arguments":[{"id":79441,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79157,"src":"11901:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79442,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79171,"src":"11935:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79443,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89490,"src":"11935:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":79444,"name":"finalTrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79362,"src":"11969:10:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},{"expression":{"expression":{"id":79445,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"12006:15:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":79446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LimitOrder","nodeType":"MemberAccess","referencedDeclaration":89405,"src":"12006:26:109","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_LimitOrder_$89405_$","typeString":"type(enum ITradingStorage.LimitOrder)"}},"id":79447,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"OPEN","nodeType":"MemberAccess","referencedDeclaration":89404,"src":"12006:31:109","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},{"expression":{"id":79448,"name":"finalTrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79362,"src":"12064:10:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79449,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"12064:20:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79450,"name":"finalTrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79362,"src":"12111:10:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79451,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"12111:26:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":79454,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79203,"src":"12168:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_OpenLimitOrder_$89474_memory_ptr","typeString":"struct ITradingStorage.OpenLimitOrder memory"}},"id":79455,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"price","nodeType":"MemberAccess","referencedDeclaration":89467,"src":"12168:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79453,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12164:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":79452,"name":"int","nodeType":"ElementaryTypeName","src":"12164:3:109","typeDescriptions":{}}},"id":79456,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12164:12:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":79457,"name":"priceBeforeImpact","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79281,"src":"12203:17:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"},{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79440,"name":"LimitExecuted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88110,"src":"11861:13:109","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_struct$_Trade_$89438_memory_ptr_$_t_enum$_LimitOrder_$89405_$_t_uint256_$_t_uint256_$_t_int256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,struct ITradingStorage.Trade memory,enum ITradingStorage.LimitOrder,uint256,uint256,int256,uint256)"}},"id":79458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11861:382:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79459,"nodeType":"EmitStatement","src":"11856:387:109"}]}}]}}]}},{"expression":{"arguments":[{"arguments":[{"expression":{"id":79471,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79171,"src":"12354:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79472,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89486,"src":"12354:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":79473,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79171,"src":"12364:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79474,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89488,"src":"12364:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79475,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79171,"src":"12377:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79476,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89490,"src":"12377:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79477,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79171,"src":"12386:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79478,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderType","nodeType":"MemberAccess","referencedDeclaration":89493,"src":"12386:11:109","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}],"expression":{"id":79469,"name":"IExecute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88371,"src":"12328:8:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IExecute_$88371_$","typeString":"type(contract IExecute)"}},"id":79470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"TriggeredLimitId","nodeType":"MemberAccess","referencedDeclaration":88275,"src":"12328:25:109","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_TriggeredLimitId_$88275_storage_ptr_$","typeString":"type(struct IExecute.TriggeredLimitId storage pointer)"}},"id":79479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12328:70:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TriggeredLimitId_$88275_memory_ptr","typeString":"struct IExecute.TriggeredLimitId memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_TriggeredLimitId_$88275_memory_ptr","typeString":"struct IExecute.TriggeredLimitId memory"}],"expression":{"id":79466,"name":"executor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79179,"src":"12301:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_IExecute_$88371","typeString":"contract IExecute"}},"id":79468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"unregisterTrigger","nodeType":"MemberAccess","referencedDeclaration":88338,"src":"12301:26:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_TriggeredLimitId_$88275_memory_ptr_$returns$__$","typeString":"function (struct IExecute.TriggeredLimitId memory) external"}},"id":79480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12301:98:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79481,"nodeType":"ExpressionStatement","src":"12301:98:109"},{"expression":{"arguments":[{"id":79485,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79157,"src":"12447:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":79482,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"12410:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":79484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"unregisterPendingLimitOrder","nodeType":"MemberAccess","referencedDeclaration":89797,"src":"12410:36:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":79486,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12410:45:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79487,"nodeType":"ExpressionStatement","src":"12410:45:109"}]},"baseFunctions":[88196],"documentation":{"id":79155,"nodeType":"StructuredDocumentation","src":"8669:168:109","text":" @dev Callback function for executing limit open orders.\n @param orderId orderId.\n @param price price.\n @param spreadP spreadP."},"functionSelector":"857c3f1e","implemented":true,"kind":"function","modifiers":[{"id":79165,"kind":"modifierInvocation","modifierName":{"id":79164,"name":"onlyPriceAggregator","nodeType":"IdentifierPath","referencedDeclaration":78381,"src":"8940:19:109"},"nodeType":"ModifierInvocation","src":"8940:19:109"}],"name":"executeLimitOpenOrderCallback","nameLocation":"8852:29:109","overrides":{"id":79163,"nodeType":"OverrideSpecifier","overrides":[],"src":"8931:8:109"},"parameters":{"id":79162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79157,"mutability":"mutable","name":"orderId","nameLocation":"8887:7:109","nodeType":"VariableDeclaration","scope":79489,"src":"8882:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79156,"name":"uint","nodeType":"ElementaryTypeName","src":"8882:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":79159,"mutability":"mutable","name":"price","nameLocation":"8901:5:109","nodeType":"VariableDeclaration","scope":79489,"src":"8896:10:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79158,"name":"uint","nodeType":"ElementaryTypeName","src":"8896:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":79161,"mutability":"mutable","name":"spreadP","nameLocation":"8913:7:109","nodeType":"VariableDeclaration","scope":79489,"src":"8908:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79160,"name":"uint","nodeType":"ElementaryTypeName","src":"8908:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8881:40:109"},"returnParameters":{"id":79166,"nodeType":"ParameterList","parameters":[],"src":"8960:0:109"},"scope":80828,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":79972,"nodeType":"FunctionDefinition","src":"12656:4660:109","nodes":[],"body":{"id":79971,"nodeType":"Block","src":"12774:4542:109","nodes":[],"statements":[{"assignments":[79506],"declarations":[{"constant":false,"id":79506,"mutability":"mutable","name":"o","nameLocation":"12826:1:109","nodeType":"VariableDeclaration","scope":79971,"src":"12785:42:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder"},"typeName":{"id":79505,"nodeType":"UserDefinedTypeName","pathNode":{"id":79504,"name":"ITradingStorage.PendingLimitOrder","nodeType":"IdentifierPath","referencedDeclaration":89494,"src":"12785:33:109"},"referencedDeclaration":89494,"src":"12785:33:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_storage_ptr","typeString":"struct ITradingStorage.PendingLimitOrder"}},"visibility":"internal"}],"id":79511,"initialValue":{"arguments":[{"id":79509,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79492,"src":"12862:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":79507,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"12830:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":79508,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"reqIDpendingLimitOrder","nodeType":"MemberAccess","referencedDeclaration":89740,"src":"12830:31:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_struct$_PendingLimitOrder_$89494_memory_ptr_$","typeString":"function (uint256) view external returns (struct ITradingStorage.PendingLimitOrder memory)"}},"id":79510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12830:40:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"nodeType":"VariableDeclarationStatement","src":"12785:85:109"},{"assignments":[79516],"declarations":[{"constant":false,"id":79516,"mutability":"mutable","name":"t","nameLocation":"12910:1:109","nodeType":"VariableDeclaration","scope":79971,"src":"12881:30:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":79515,"nodeType":"UserDefinedTypeName","pathNode":{"id":79514,"name":"ITradingStorage.Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"12881:21:109"},"referencedDeclaration":89438,"src":"12881:21:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"}],"id":79526,"initialValue":{"arguments":[{"expression":{"id":79519,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79506,"src":"12934:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79520,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89486,"src":"12934:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":79521,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79506,"src":"12944:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79522,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89488,"src":"12944:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79523,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79506,"src":"12957:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79524,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89490,"src":"12957:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":79517,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"12914:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":79518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openTrades","nodeType":"MemberAccess","referencedDeclaration":89686,"src":"12914:19:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_struct$_Trade_$89438_memory_ptr_$","typeString":"function (address,uint256,uint256) view external returns (struct ITradingStorage.Trade memory)"}},"id":79525,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12914:51:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"nodeType":"VariableDeclarationStatement","src":"12881:84:109"},{"assignments":[79529],"declarations":[{"constant":false,"id":79529,"mutability":"mutable","name":"aggregator","nameLocation":"12995:10:109","nodeType":"VariableDeclaration","scope":79971,"src":"12978:27:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"},"typeName":{"id":79528,"nodeType":"UserDefinedTypeName","pathNode":{"id":79527,"name":"IPriceAggregator","nodeType":"IdentifierPath","referencedDeclaration":89248,"src":"12978:16:109"},"referencedDeclaration":89248,"src":"12978:16:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"visibility":"internal"}],"id":79533,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":79530,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"13008:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":79531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"priceAggregator","nodeType":"MemberAccess","referencedDeclaration":89592,"src":"13008:24:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPriceAggregator_$89248_$","typeString":"function () view external returns (contract IPriceAggregator)"}},"id":79532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13008:26:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"nodeType":"VariableDeclarationStatement","src":"12978:56:109"},{"assignments":[79536],"declarations":[{"constant":false,"id":79536,"mutability":"mutable","name":"executor","nameLocation":"13054:8:109","nodeType":"VariableDeclaration","scope":79971,"src":"13045:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IExecute_$88371","typeString":"contract IExecute"},"typeName":{"id":79535,"nodeType":"UserDefinedTypeName","pathNode":{"id":79534,"name":"IExecute","nodeType":"IdentifierPath","referencedDeclaration":88371,"src":"13045:8:109"},"referencedDeclaration":88371,"src":"13045:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_IExecute_$88371","typeString":"contract IExecute"}},"visibility":"internal"}],"id":79540,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":79537,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79529,"src":"13065:10:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":79538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"executions","nodeType":"MemberAccess","referencedDeclaration":89168,"src":"13065:21:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IExecute_$88371_$","typeString":"function () view external returns (contract IExecute)"}},"id":79539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13065:23:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IExecute_$88371","typeString":"contract IExecute"}},"nodeType":"VariableDeclarationStatement","src":"13045:43:109"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":79548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79541,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79494,"src":"13105:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":79542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13114:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13105:10:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":79544,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"13119:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79545,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"13119:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":79546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13132:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13119:14:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13105:28:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":79948,"nodeType":"IfStatement","src":"13101:4041:109","trueBody":{"id":79947,"nodeType":"Block","src":"13135:4007:109","statements":[{"assignments":[79553],"declarations":[{"constant":false,"id":79553,"mutability":"mutable","name":"i","nameLocation":"13183:1:109","nodeType":"VariableDeclaration","scope":79947,"src":"13150:34:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_memory_ptr","typeString":"struct ITradingStorage.TradeInfo"},"typeName":{"id":79552,"nodeType":"UserDefinedTypeName","pathNode":{"id":79551,"name":"ITradingStorage.TradeInfo","nodeType":"IdentifierPath","referencedDeclaration":89449,"src":"13150:25:109"},"referencedDeclaration":89449,"src":"13150:25:109","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_storage_ptr","typeString":"struct ITradingStorage.TradeInfo"}},"visibility":"internal"}],"id":79563,"initialValue":{"arguments":[{"expression":{"id":79556,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"13211:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79557,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"13211:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":79558,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"13221:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79559,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"13221:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79560,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"13234:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79561,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89421,"src":"13234:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":79554,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"13187:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":79555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openTradesInfo","nodeType":"MemberAccess","referencedDeclaration":89698,"src":"13187:23:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_struct$_TradeInfo_$89449_memory_ptr_$","typeString":"function (address,uint256,uint256) view external returns (struct ITradingStorage.TradeInfo memory)"}},"id":79562,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13187:55:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_memory_ptr","typeString":"struct ITradingStorage.TradeInfo memory"}},"nodeType":"VariableDeclarationStatement","src":"13150:92:109"},{"assignments":[79565],"declarations":[{"constant":false,"id":79565,"mutability":"mutable","name":"vPrice","nameLocation":"13276:6:109","nodeType":"VariableDeclaration","scope":79947,"src":"13271:11:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79564,"name":"uint","nodeType":"ElementaryTypeName","src":"13271:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":79616,"initialValue":{"condition":{"arguments":[{"expression":{"id":79570,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"13331:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79571,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"13331:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":79566,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79529,"src":"13285:10:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":79567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairsStorage","nodeType":"MemberAccess","referencedDeclaration":89162,"src":"13285:23:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPairStorage_$89055_$","typeString":"function () view external returns (contract IPairStorage)"}},"id":79568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13285:25:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":79569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"guaranteedSlEnabled","nodeType":"MemberAccess","referencedDeclaration":88966,"src":"13285:45:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view external returns (bool)"}},"id":79572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13285:58:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":79614,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79494,"src":"13662:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13285:382:109","trueExpression":{"condition":{"commonType":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"},"id":79578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":79573,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79506,"src":"13363:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79574,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderType","nodeType":"MemberAccess","referencedDeclaration":89493,"src":"13363:11:109","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":79575,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"13378:15:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":79576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LimitOrder","nodeType":"MemberAccess","referencedDeclaration":89405,"src":"13378:26:109","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_LimitOrder_$89405_$","typeString":"type(enum ITradingStorage.LimitOrder)"}},"id":79577,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"TP","nodeType":"MemberAccess","referencedDeclaration":89401,"src":"13378:29:109","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"src":"13363:44:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"condition":{"commonType":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"},"id":79586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":79581,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79506,"src":"13417:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79582,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderType","nodeType":"MemberAccess","referencedDeclaration":89493,"src":"13417:11:109","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":79583,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"13432:15:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":79584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LimitOrder","nodeType":"MemberAccess","referencedDeclaration":89405,"src":"13432:26:109","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_LimitOrder_$89405_$","typeString":"type(enum ITradingStorage.LimitOrder)"}},"id":79585,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SL","nodeType":"MemberAccess","referencedDeclaration":89402,"src":"13432:29:109","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"src":"13417:44:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":79611,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79494,"src":"13637:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13417:225:109","trueExpression":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":79606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":79594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":79587,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"13486:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79588,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"13486:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79593,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":79589,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"13495:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79590,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89435,"src":"13495:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"id":79591,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"13502:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79592,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"13502:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13495:18:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13486:27:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":79595,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13485:29:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":79604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"13519:6:109","subExpression":{"expression":{"id":79596,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"13520:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79597,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"13520:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79603,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":79599,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"13529:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79600,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89435,"src":"13529:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":79601,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"13536:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79602,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"13536:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13529:18:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13519:28:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":79605,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13518:30:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13485:63:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"expression":{"id":79608,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"13609:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79609,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89435,"src":"13609:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13485:128:109","trueExpression":{"id":79607,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79494,"src":"13576:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13363:279:109","trueExpression":{"expression":{"id":79579,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"13410:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79580,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tp","nodeType":"MemberAccess","referencedDeclaration":89433,"src":"13410:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13271:396:109"},{"assignments":[79618],"declarations":[{"constant":false,"id":79618,"mutability":"mutable","name":"vProfitP","nameLocation":"13688:8:109","nodeType":"VariableDeclaration","scope":79947,"src":"13684:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":79617,"name":"int","nodeType":"ElementaryTypeName","src":"13684:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":79628,"initialValue":{"arguments":[{"expression":{"id":79620,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"13721:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79621,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"13721:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":79622,"name":"vPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79565,"src":"13734:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79623,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"13742:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79624,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"13742:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":79625,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"13749:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79626,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"13749:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79619,"name":"_currentPercentProfit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80795,"src":"13699:21:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_bool_$_t_uint256_$returns$_t_int256_$","typeString":"function (uint256,uint256,bool,uint256) pure returns (int256)"}},"id":79627,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13699:61:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"13684:76:109"},{"assignments":[79630],"declarations":[{"constant":false,"id":79630,"mutability":"mutable","name":"vReward","nameLocation":"13780:7:109","nodeType":"VariableDeclaration","scope":79947,"src":"13775:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79629,"name":"uint","nodeType":"ElementaryTypeName","src":"13775:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":79631,"nodeType":"VariableDeclarationStatement","src":"13775:12:109"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"},"id":79637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":79632,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79506,"src":"13808:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79633,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderType","nodeType":"MemberAccess","referencedDeclaration":89493,"src":"13808:11:109","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":79634,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"13823:15:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":79635,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LimitOrder","nodeType":"MemberAccess","referencedDeclaration":89405,"src":"13823:26:109","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_LimitOrder_$89405_$","typeString":"type(enum ITradingStorage.LimitOrder)"}},"id":79636,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LIQ","nodeType":"MemberAccess","referencedDeclaration":89403,"src":"13823:30:109","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"src":"13808:45:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":79752,"nodeType":"Block","src":"14313:561:109","statements":[{"expression":{"id":79750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":79681,"name":"vReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79630,"src":"14332:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":79732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":79705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":79692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"},"id":79687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":79682,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79506,"src":"14343:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79683,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderType","nodeType":"MemberAccess","referencedDeclaration":89493,"src":"14343:11:109","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":79684,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"14358:15:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":79685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LimitOrder","nodeType":"MemberAccess","referencedDeclaration":89405,"src":"14358:26:109","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_LimitOrder_$89405_$","typeString":"type(enum ITradingStorage.LimitOrder)"}},"id":79686,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"TP","nodeType":"MemberAccess","referencedDeclaration":89401,"src":"14358:29:109","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"src":"14343:44:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":79688,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"14412:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79689,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tp","nodeType":"MemberAccess","referencedDeclaration":89433,"src":"14412:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":79690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14419:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14412:8:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14343:77:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"condition":{"expression":{"id":79693,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"14446:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79694,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"14446:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79699,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79494,"src":"14470:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":79700,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"14479:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79701,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tp","nodeType":"MemberAccess","referencedDeclaration":89433,"src":"14479:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14470:13:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":79703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14446:37:109","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79698,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79695,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79494,"src":"14454:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":79696,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"14463:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79697,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tp","nodeType":"MemberAccess","referencedDeclaration":89433,"src":"14463:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14454:13:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":79704,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14445:39:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14343:141:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":79706,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14342:143:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":79730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":79717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"},"id":79712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":79707,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79506,"src":"14511:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79708,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderType","nodeType":"MemberAccess","referencedDeclaration":89493,"src":"14511:11:109","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":79709,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"14526:15:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":79710,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LimitOrder","nodeType":"MemberAccess","referencedDeclaration":89405,"src":"14526:26:109","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_LimitOrder_$89405_$","typeString":"type(enum ITradingStorage.LimitOrder)"}},"id":79711,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"SL","nodeType":"MemberAccess","referencedDeclaration":89402,"src":"14526:29:109","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"src":"14511:44:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":79713,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"14584:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79714,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89435,"src":"14584:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":79715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14591:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14584:8:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14511:81:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"condition":{"expression":{"id":79718,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"14622:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79719,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"14622:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79724,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79494,"src":"14646:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"expression":{"id":79725,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"14655:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79726,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89435,"src":"14655:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14646:13:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":79728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14622:37:109","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79720,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79494,"src":"14630:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"expression":{"id":79721,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"14639:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79722,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89435,"src":"14639:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14630:13:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":79729,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14621:39:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14511:149:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":79731,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14510:151:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14342:319:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":79748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14857:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":79749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14342:516:109","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":79733,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"14686:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79734,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"14686:17:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"expression":{"id":79739,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"14751:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79740,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"14751:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":79735,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79529,"src":"14706:10:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":79736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairsStorage","nodeType":"MemberAccess","referencedDeclaration":89162,"src":"14706:23:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPairStorage_$89055_$","typeString":"function () view external returns (contract IPairStorage)"}},"id":79737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14706:25:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":79738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairLimitOrderFeeP","nodeType":"MemberAccess","referencedDeclaration":88973,"src":"14706:44:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":79741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14706:57:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14686:77:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":79743,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14685:79:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":79744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14792:3:109","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"14685:110:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":79746,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78339,"src":"14823:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14685:148:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14332:526:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79751,"nodeType":"ExpressionStatement","src":"14332:526:109"}]},"id":79753,"nodeType":"IfStatement","src":"13804:1070:109","trueBody":{"id":79680,"nodeType":"Block","src":"13855:452:109","statements":[{"assignments":[79639],"declarations":[{"constant":false,"id":79639,"mutability":"mutable","name":"liqPrice","nameLocation":"13879:8:109","nodeType":"VariableDeclaration","scope":79680,"src":"13874:13:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79638,"name":"uint","nodeType":"ElementaryTypeName","src":"13874:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":79657,"initialValue":{"arguments":[{"expression":{"id":79642,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"13947:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79643,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"13947:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":79644,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"13978:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79645,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"13978:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79646,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"14012:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79647,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89421,"src":"14012:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79648,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"14042:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79649,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"14042:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79650,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"14076:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79651,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"14076:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":79652,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"14104:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79653,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"14104:17:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79654,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"14144:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79655,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"14144:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":79640,"name":"pairInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78357,"src":"13890:9:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPairInfos_$88745","typeString":"contract IPairInfos"}},"id":79641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getTradeLiquidationPrice","nodeType":"MemberAccess","referencedDeclaration":88699,"src":"13890:34:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256,uint256,uint256,bool,uint256,uint256) view external returns (uint256)"}},"id":79656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13890:283:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13874:299:109"},{"expression":{"id":79678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":79658,"name":"vReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79630,"src":"14192:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"components":[{"condition":{"expression":{"id":79659,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"14203:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79660,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"14203:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79664,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79494,"src":"14231:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":79665,"name":"liqPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79639,"src":"14240:8:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14231:17:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":79667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14203:45:109","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79661,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79494,"src":"14211:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":79662,"name":"liqPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79639,"src":"14220:8:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14211:17:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":79668,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14202:47:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":79676,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14290:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":79677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"14202:89:109","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":79669,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"14253:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79670,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"14253:17:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":79671,"name":"liqFeeP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78359,"src":"14273:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14253:27:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":79673,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14252:29:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":79674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14284:3:109","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"14252:35:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14192:99:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79679,"nodeType":"ExpressionStatement","src":"14192:99:109"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":79763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"},"id":79759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":79754,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79506,"src":"14894:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79755,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderType","nodeType":"MemberAccess","referencedDeclaration":89493,"src":"14894:11:109","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":79756,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"14909:15:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":79757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LimitOrder","nodeType":"MemberAccess","referencedDeclaration":89405,"src":"14909:26:109","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_LimitOrder_$89405_$","typeString":"type(enum ITradingStorage.LimitOrder)"}},"id":79758,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LIQ","nodeType":"MemberAccess","referencedDeclaration":89403,"src":"14909:30:109","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"src":"14894:45:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79760,"name":"vReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79630,"src":"14943:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":79761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14953:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14943:11:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14894:60:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":79816,"nodeType":"IfStatement","src":"14890:894:109","trueBody":{"id":79815,"nodeType":"Block","src":"14956:828:109","statements":[{"assignments":[79765],"declarations":[{"constant":false,"id":79765,"mutability":"mutable","name":"usdcSentToTrader","nameLocation":"14980:16:109","nodeType":"VariableDeclaration","scope":79815,"src":"14975:21:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79764,"name":"uint","nodeType":"ElementaryTypeName","src":"14975:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":79784,"initialValue":{"arguments":[{"id":79767,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"15038:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},{"id":79768,"name":"vProfitP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79618,"src":"15062:8:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"expression":{"id":79769,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"15093:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79770,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"15093:17:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":79771,"name":"vReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79630,"src":"15133:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79772,"name":"vReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79630,"src":"15164:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79773,"name":"liqTotalFeeP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78361,"src":"15175:12:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":79774,"name":"liqFeeP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78359,"src":"15190:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15175:22:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":79776,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15174:24:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15164:34:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":79778,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15163:36:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":79779,"name":"liqFeeP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78359,"src":"15202:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15163:46:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79781,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79553,"src":"15232:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_memory_ptr","typeString":"struct ITradingStorage.TradeInfo memory"}},"id":79782,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"lossProtection","nodeType":"MemberAccess","referencedDeclaration":89448,"src":"15232:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79766,"name":"_unregisterTrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80699,"src":"14999:16:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Trade_$89438_memory_ptr_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct ITradingStorage.Trade memory,int256,uint256,uint256,uint256,uint256) returns (uint256)"}},"id":79783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14999:268:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14975:292:109"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":79790,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79506,"src":"15362:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79791,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89486,"src":"15362:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":79792,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79506,"src":"15372:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79793,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89488,"src":"15372:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79794,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79506,"src":"15385:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79795,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89490,"src":"15385:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79796,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79506,"src":"15394:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79797,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderType","nodeType":"MemberAccess","referencedDeclaration":89493,"src":"15394:11:109","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}],"expression":{"id":79788,"name":"IExecute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88371,"src":"15336:8:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IExecute_$88371_$","typeString":"type(contract IExecute)"}},"id":79789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"TriggeredLimitId","nodeType":"MemberAccess","referencedDeclaration":88275,"src":"15336:25:109","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_TriggeredLimitId_$88275_storage_ptr_$","typeString":"type(struct IExecute.TriggeredLimitId storage pointer)"}},"id":79798,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15336:70:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TriggeredLimitId_$88275_memory_ptr","typeString":"struct IExecute.TriggeredLimitId memory"}},{"id":79799,"name":"vReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79630,"src":"15429:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_TriggeredLimitId_$88275_memory_ptr","typeString":"struct IExecute.TriggeredLimitId memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":79785,"name":"executor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79536,"src":"15288:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_IExecute_$88371","typeString":"contract IExecute"}},"id":79787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"distributeReward","nodeType":"MemberAccess","referencedDeclaration":88346,"src":"15288:25:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_TriggeredLimitId_$88275_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (struct IExecute.TriggeredLimitId memory,uint256) external"}},"id":79800,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15288:167:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79801,"nodeType":"ExpressionStatement","src":"15288:167:109"},{"eventCall":{"arguments":[{"id":79803,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79492,"src":"15517:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":79804,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79494,"src":"15547:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":79805,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"15575:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},{"expression":{"id":79806,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79506,"src":"15599:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79807,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderType","nodeType":"MemberAccess","referencedDeclaration":89493,"src":"15599:11:109","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},{"id":79808,"name":"vPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79565,"src":"15633:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79809,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"15662:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79810,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"15662:17:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":79811,"name":"vProfitP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79618,"src":"15702:8:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":79812,"name":"usdcSentToTrader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79765,"src":"15733:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"},{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79802,"name":"LimitExecuted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88110,"src":"15481:13:109","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_struct$_Trade_$89438_memory_ptr_$_t_enum$_LimitOrder_$89405_$_t_uint256_$_t_uint256_$_t_int256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,struct ITradingStorage.Trade memory,enum ITradingStorage.LimitOrder,uint256,uint256,int256,uint256)"}},"id":79813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15481:287:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79814,"nodeType":"EmitStatement","src":"15476:292:109"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":79826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"},"id":79822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":79817,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79506,"src":"15804:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79818,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderType","nodeType":"MemberAccess","referencedDeclaration":89493,"src":"15804:11:109","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":79819,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"15819:15:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":79820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"LimitOrder","nodeType":"MemberAccess","referencedDeclaration":89405,"src":"15819:26:109","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_LimitOrder_$89405_$","typeString":"type(enum ITradingStorage.LimitOrder)"}},"id":79821,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"LIQ","nodeType":"MemberAccess","referencedDeclaration":89403,"src":"15819:30:109","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},"src":"15804:45:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79823,"name":"vReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79630,"src":"15853:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":79824,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15863:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"15853:11:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15804:60:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":79946,"nodeType":"IfStatement","src":"15800:1331:109","trueBody":{"id":79945,"nodeType":"Block","src":"15866:1265:109","statements":[{"expression":{"id":79834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":79827,"name":"vReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79630,"src":"15903:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79828,"name":"vReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79630,"src":"15913:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":79829,"name":"_MAX_EXEC_REWARD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78351,"src":"15923:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15913:26:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":79832,"name":"vReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79630,"src":"15962:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"15913:56:109","trueExpression":{"id":79831,"name":"_MAX_EXEC_REWARD","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78351,"src":"15943:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15903:66:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79835,"nodeType":"ExpressionStatement","src":"15903:66:109"},{"assignments":[79837],"declarations":[{"constant":false,"id":79837,"mutability":"mutable","name":"pnl","nameLocation":"15992:3:109","nodeType":"VariableDeclaration","scope":79945,"src":"15988:7:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":79836,"name":"int","nodeType":"ElementaryTypeName","src":"15988:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":79853,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":79852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":79850,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":79844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":79840,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"16003:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79841,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"16003:17:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79839,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15999:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":79838,"name":"int","nodeType":"ElementaryTypeName","src":"15999:3:109","typeDescriptions":{}}},"id":79842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15999:22:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":79843,"name":"vProfitP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79618,"src":"16024:8:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"15999:33:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":79845,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15998:35:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":79848,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78339,"src":"16040:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79847,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16036:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":79846,"name":"int","nodeType":"ElementaryTypeName","src":"16036:3:109","typeDescriptions":{}}},"id":79849,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16036:15:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"15998:53:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":79851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16054:3:109","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"15998:59:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"15988:69:109"},{"assignments":[79855],"declarations":[{"constant":false,"id":79855,"mutability":"mutable","name":"lpFee","nameLocation":"16081:5:109","nodeType":"VariableDeclaration","scope":79945,"src":"16076:10:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79854,"name":"uint","nodeType":"ElementaryTypeName","src":"16076:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":79897,"initialValue":{"condition":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":79871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":79858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79856,"name":"pnl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79837,"src":"16091:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":79857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16097:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16091:7:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":79859,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16090:9:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":79870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":79863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79860,"name":"pnl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79837,"src":"16104:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":79862,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"16110:2:109","subExpression":{"hexValue":"31","id":79861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16111:1:109","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}},"src":"16104:8:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":79864,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16103:10:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"expression":{"id":79867,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"16120:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79868,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"16120:17:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79866,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16116:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":79865,"name":"int","nodeType":"ElementaryTypeName","src":"16116:3:109","typeDescriptions":{}}},"id":79869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16116:22:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16103:35:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16090:48:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":79872,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16089:50:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79895,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":79885,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"16185:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79886,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"16185:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":79882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":79878,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"16155:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79879,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"16155:17:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79877,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16151:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":79876,"name":"int","nodeType":"ElementaryTypeName","src":"16151:3:109","typeDescriptions":{}}},"id":79880,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16151:22:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":79881,"name":"pnl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79837,"src":"16176:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"16151:28:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":79875,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16146:4:109","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":79874,"name":"uint","nodeType":"ElementaryTypeName","src":"16146:4:109","typeDescriptions":{}}},"id":79883,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16146:34:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":90823,"src":"16146:38:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":79887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16146:50:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"expression":{"id":79892,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"16239:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79893,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"16239:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":79888,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79529,"src":"16199:10:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":79889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairsStorage","nodeType":"MemberAccess","referencedDeclaration":89162,"src":"16199:23:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPairStorage_$89055_$","typeString":"function () view external returns (contract IPairStorage)"}},"id":79890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16199:25:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":79891,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairCloseFeeP","nodeType":"MemberAccess","referencedDeclaration":88991,"src":"16199:39:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":79894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16199:52:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16146:105:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":79896,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"16089:162:109","trueExpression":{"hexValue":"30","id":79873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16142:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16076:175:109"},{"assignments":[79899],"declarations":[{"constant":false,"id":79899,"mutability":"mutable","name":"usdcSentToTrader","nameLocation":"16277:16:109","nodeType":"VariableDeclaration","scope":79945,"src":"16272:21:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79898,"name":"uint","nodeType":"ElementaryTypeName","src":"16272:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":79914,"initialValue":{"arguments":[{"id":79901,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"16335:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},{"id":79902,"name":"vProfitP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79618,"src":"16359:8:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"expression":{"id":79903,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"16390:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79904,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"16390:17:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":79905,"name":"vReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79630,"src":"16430:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":79908,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":79906,"name":"lpFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79855,"src":"16460:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":79907,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16468:3:109","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"16460:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":79909,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78339,"src":"16474:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16460:24:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79911,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79553,"src":"16507:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_memory_ptr","typeString":"struct ITradingStorage.TradeInfo memory"}},"id":79912,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"lossProtection","nodeType":"MemberAccess","referencedDeclaration":89448,"src":"16507:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79900,"name":"_unregisterTrade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80699,"src":"16296:16:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Trade_$89438_memory_ptr_$_t_int256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (struct ITradingStorage.Trade memory,int256,uint256,uint256,uint256,uint256) returns (uint256)"}},"id":79913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16296:246:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16272:270:109"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":79920,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79506,"src":"16637:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79921,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89486,"src":"16637:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":79922,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79506,"src":"16647:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79923,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89488,"src":"16647:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79924,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79506,"src":"16660:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79925,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89490,"src":"16660:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79926,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79506,"src":"16669:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79927,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderType","nodeType":"MemberAccess","referencedDeclaration":89493,"src":"16669:11:109","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}],"expression":{"id":79918,"name":"IExecute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88371,"src":"16611:8:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IExecute_$88371_$","typeString":"type(contract IExecute)"}},"id":79919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"TriggeredLimitId","nodeType":"MemberAccess","referencedDeclaration":88275,"src":"16611:25:109","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_TriggeredLimitId_$88275_storage_ptr_$","typeString":"type(struct IExecute.TriggeredLimitId storage pointer)"}},"id":79928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16611:70:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TriggeredLimitId_$88275_memory_ptr","typeString":"struct IExecute.TriggeredLimitId memory"}},{"id":79929,"name":"vReward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79630,"src":"16704:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_TriggeredLimitId_$88275_memory_ptr","typeString":"struct IExecute.TriggeredLimitId memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":79915,"name":"executor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79536,"src":"16563:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_IExecute_$88371","typeString":"contract IExecute"}},"id":79917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"distributeReward","nodeType":"MemberAccess","referencedDeclaration":88346,"src":"16563:25:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_TriggeredLimitId_$88275_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (struct IExecute.TriggeredLimitId memory,uint256) external"}},"id":79930,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16563:167:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79931,"nodeType":"ExpressionStatement","src":"16563:167:109"},{"eventCall":{"arguments":[{"id":79933,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79492,"src":"16790:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":79934,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79494,"src":"16820:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":79935,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"16922:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},{"expression":{"id":79936,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79506,"src":"16946:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79937,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderType","nodeType":"MemberAccess","referencedDeclaration":89493,"src":"16946:11:109","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}},{"id":79938,"name":"vPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79565,"src":"16980:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79939,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79516,"src":"17009:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":79940,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"17009:17:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":79941,"name":"vProfitP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79618,"src":"17049:8:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":79942,"name":"usdcSentToTrader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79899,"src":"17080:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"},{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":79932,"name":"LimitExecuted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88110,"src":"16754:13:109","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_struct$_Trade_$89438_memory_ptr_$_t_enum$_LimitOrder_$89405_$_t_uint256_$_t_uint256_$_t_int256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,struct ITradingStorage.Trade memory,enum ITradingStorage.LimitOrder,uint256,uint256,int256,uint256)"}},"id":79943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16754:361:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79944,"nodeType":"EmitStatement","src":"16749:366:109"}]}}]}},{"expression":{"arguments":[{"arguments":[{"expression":{"id":79954,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79506,"src":"17207:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79955,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89486,"src":"17207:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":79956,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79506,"src":"17217:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79957,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89488,"src":"17217:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79958,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79506,"src":"17230:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79959,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89490,"src":"17230:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":79960,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79506,"src":"17239:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingLimitOrder_$89494_memory_ptr","typeString":"struct ITradingStorage.PendingLimitOrder memory"}},"id":79961,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"orderType","nodeType":"MemberAccess","referencedDeclaration":89493,"src":"17239:11:109","typeDescriptions":{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_LimitOrder_$89405","typeString":"enum ITradingStorage.LimitOrder"}],"expression":{"id":79952,"name":"IExecute","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88371,"src":"17181:8:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IExecute_$88371_$","typeString":"type(contract IExecute)"}},"id":79953,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"TriggeredLimitId","nodeType":"MemberAccess","referencedDeclaration":88275,"src":"17181:25:109","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_TriggeredLimitId_$88275_storage_ptr_$","typeString":"type(struct IExecute.TriggeredLimitId storage pointer)"}},"id":79962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17181:70:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TriggeredLimitId_$88275_memory_ptr","typeString":"struct IExecute.TriggeredLimitId memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_TriggeredLimitId_$88275_memory_ptr","typeString":"struct IExecute.TriggeredLimitId memory"}],"expression":{"id":79949,"name":"executor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79536,"src":"17154:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_IExecute_$88371","typeString":"contract IExecute"}},"id":79951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"unregisterTrigger","nodeType":"MemberAccess","referencedDeclaration":88338,"src":"17154:26:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_TriggeredLimitId_$88275_memory_ptr_$returns$__$","typeString":"function (struct IExecute.TriggeredLimitId memory) external"}},"id":79963,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17154:98:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79964,"nodeType":"ExpressionStatement","src":"17154:98:109"},{"expression":{"arguments":[{"id":79968,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79492,"src":"17300:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":79965,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"17263:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":79967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"unregisterPendingLimitOrder","nodeType":"MemberAccess","referencedDeclaration":89797,"src":"17263:36:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":79969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17263:45:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":79970,"nodeType":"ExpressionStatement","src":"17263:45:109"}]},"baseFunctions":[88205],"documentation":{"id":79490,"nodeType":"StructuredDocumentation","src":"12471:179:109","text":" @dev Callback function for executing limit close orders(TP/SL/LIQ)\n @param orderId orderId.\n @param price price.\n @param spreadP spreadP."},"functionSelector":"b2250471","implemented":true,"kind":"function","modifiers":[{"id":79500,"kind":"modifierInvocation","modifierName":{"id":79499,"name":"onlyPriceAggregator","nodeType":"IdentifierPath","referencedDeclaration":78381,"src":"12754:19:109"},"nodeType":"ModifierInvocation","src":"12754:19:109"}],"name":"executeLimitCloseOrderCallback","nameLocation":"12665:30:109","overrides":{"id":79498,"nodeType":"OverrideSpecifier","overrides":[],"src":"12745:8:109"},"parameters":{"id":79497,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79492,"mutability":"mutable","name":"orderId","nameLocation":"12701:7:109","nodeType":"VariableDeclaration","scope":79972,"src":"12696:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79491,"name":"uint","nodeType":"ElementaryTypeName","src":"12696:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":79494,"mutability":"mutable","name":"price","nameLocation":"12715:5:109","nodeType":"VariableDeclaration","scope":79972,"src":"12710:10:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79493,"name":"uint","nodeType":"ElementaryTypeName","src":"12710:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":79496,"mutability":"mutable","name":"spreadP","nameLocation":"12727:7:109","nodeType":"VariableDeclaration","scope":79972,"src":"12722:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79495,"name":"uint","nodeType":"ElementaryTypeName","src":"12722:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12695:40:109"},"returnParameters":{"id":79501,"nodeType":"ParameterList","parameters":[],"src":"12774:0:109"},"scope":80828,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":80079,"nodeType":"FunctionDefinition","src":"17506:767:109","nodes":[],"body":{"id":80078,"nodeType":"Block","src":"17610:663:109","nodes":[],"statements":[{"assignments":[79987],"declarations":[{"constant":false,"id":79987,"mutability":"mutable","name":"aggregator","nameLocation":"17638:10:109","nodeType":"VariableDeclaration","scope":80078,"src":"17621:27:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"},"typeName":{"id":79986,"nodeType":"UserDefinedTypeName","pathNode":{"id":79985,"name":"IPriceAggregator","nodeType":"IdentifierPath","referencedDeclaration":89248,"src":"17621:16:109"},"referencedDeclaration":89248,"src":"17621:16:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"visibility":"internal"}],"id":79991,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":79988,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"17651:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":79989,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"priceAggregator","nodeType":"MemberAccess","referencedDeclaration":89592,"src":"17651:24:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPriceAggregator_$89248_$","typeString":"function () view external returns (contract IPriceAggregator)"}},"id":79990,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17651:26:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"nodeType":"VariableDeclarationStatement","src":"17621:56:109"},{"assignments":[79996],"declarations":[{"constant":false,"id":79996,"mutability":"mutable","name":"o","nameLocation":"17722:1:109","nodeType":"VariableDeclaration","scope":80078,"src":"17688:35:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_memory_ptr","typeString":"struct IPriceAggregator.PendingSl"},"typeName":{"id":79995,"nodeType":"UserDefinedTypeName","pathNode":{"id":79994,"name":"IPriceAggregator.PendingSl","nodeType":"IdentifierPath","referencedDeclaration":89098,"src":"17688:26:109"},"referencedDeclaration":89098,"src":"17688:26:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_storage_ptr","typeString":"struct IPriceAggregator.PendingSl"}},"visibility":"internal"}],"id":80001,"initialValue":{"arguments":[{"id":79999,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79975,"src":"17753:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":79997,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79987,"src":"17726:10:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":79998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pendingSlOrders","nodeType":"MemberAccess","referencedDeclaration":89205,"src":"17726:26:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_struct$_PendingSl_$89098_memory_ptr_$","typeString":"function (uint256) view external returns (struct IPriceAggregator.PendingSl memory)"}},"id":80000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17726:35:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_memory_ptr","typeString":"struct IPriceAggregator.PendingSl memory"}},"nodeType":"VariableDeclarationStatement","src":"17688:73:109"},{"assignments":[80006],"declarations":[{"constant":false,"id":80006,"mutability":"mutable","name":"t","nameLocation":"17803:1:109","nodeType":"VariableDeclaration","scope":80078,"src":"17774:30:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":80005,"nodeType":"UserDefinedTypeName","pathNode":{"id":80004,"name":"ITradingStorage.Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"17774:21:109"},"referencedDeclaration":89438,"src":"17774:21:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"}],"id":80016,"initialValue":{"arguments":[{"expression":{"id":80009,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79996,"src":"17827:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_memory_ptr","typeString":"struct IPriceAggregator.PendingSl memory"}},"id":80010,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89087,"src":"17827:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":80011,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79996,"src":"17837:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_memory_ptr","typeString":"struct IPriceAggregator.PendingSl memory"}},"id":80012,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89089,"src":"17837:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":80013,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79996,"src":"17850:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_memory_ptr","typeString":"struct IPriceAggregator.PendingSl memory"}},"id":80014,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89091,"src":"17850:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":80007,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"17807:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80008,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openTrades","nodeType":"MemberAccess","referencedDeclaration":89686,"src":"17807:19:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_uint256_$returns$_t_struct$_Trade_$89438_memory_ptr_$","typeString":"function (address,uint256,uint256) view external returns (struct ITradingStorage.Trade memory)"}},"id":80015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17807:51:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"nodeType":"VariableDeclarationStatement","src":"17774:84:109"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":80044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":80031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":80025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80017,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79977,"src":"17887:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":80018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17896:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17887:10:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":80024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":80020,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80006,"src":"17914:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80021,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"17914:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":80022,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79996,"src":"17923:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_memory_ptr","typeString":"struct IPriceAggregator.PendingSl memory"}},"id":80023,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89095,"src":"17923:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17914:14:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17887:41:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":80026,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80006,"src":"17945:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80027,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"17945:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":80028,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79996,"src":"17960:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_memory_ptr","typeString":"struct IPriceAggregator.PendingSl memory"}},"id":80029,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89093,"src":"17960:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17945:26:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17887:84:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"condition":{"expression":{"id":80032,"name":"t","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80006,"src":"17989:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80033,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"17989:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":80038,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79996,"src":"18016:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_memory_ptr","typeString":"struct IPriceAggregator.PendingSl memory"}},"id":80039,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"newSl","nodeType":"MemberAccess","referencedDeclaration":89097,"src":"18016:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":80040,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79977,"src":"18027:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18016:16:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":80042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"17989:43:109","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":80034,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79996,"src":"17997:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_memory_ptr","typeString":"struct IPriceAggregator.PendingSl memory"}},"id":80035,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"newSl","nodeType":"MemberAccess","referencedDeclaration":89097,"src":"17997:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":80036,"name":"price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79977,"src":"18008:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17997:16:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":80043,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17988:45:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"17887:146:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":80071,"nodeType":"IfStatement","src":"17869:340:109","trueBody":{"id":80070,"nodeType":"Block","src":"18045:164:109","statements":[{"expression":{"arguments":[{"expression":{"id":80048,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79996,"src":"18078:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_memory_ptr","typeString":"struct IPriceAggregator.PendingSl memory"}},"id":80049,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89087,"src":"18078:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":80050,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79996,"src":"18088:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_memory_ptr","typeString":"struct IPriceAggregator.PendingSl memory"}},"id":80051,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89089,"src":"18088:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":80052,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79996,"src":"18101:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_memory_ptr","typeString":"struct IPriceAggregator.PendingSl memory"}},"id":80053,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89091,"src":"18101:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":80054,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79996,"src":"18110:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_memory_ptr","typeString":"struct IPriceAggregator.PendingSl memory"}},"id":80055,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"newSl","nodeType":"MemberAccess","referencedDeclaration":89097,"src":"18110:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":80045,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"18060:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80047,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"updateSl","nodeType":"MemberAccess","referencedDeclaration":89709,"src":"18060:17:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,uint256) external"}},"id":80056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18060:58:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80057,"nodeType":"ExpressionStatement","src":"18060:58:109"},{"eventCall":{"arguments":[{"id":80059,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79975,"src":"18148:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":80060,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79996,"src":"18157:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_memory_ptr","typeString":"struct IPriceAggregator.PendingSl memory"}},"id":80061,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89087,"src":"18157:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":80062,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79996,"src":"18167:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_memory_ptr","typeString":"struct IPriceAggregator.PendingSl memory"}},"id":80063,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89089,"src":"18167:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":80064,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79996,"src":"18180:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_memory_ptr","typeString":"struct IPriceAggregator.PendingSl memory"}},"id":80065,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89091,"src":"18180:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":80066,"name":"o","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79996,"src":"18189:1:109","typeDescriptions":{"typeIdentifier":"t_struct$_PendingSl_$89098_memory_ptr","typeString":"struct IPriceAggregator.PendingSl memory"}},"id":80067,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"newSl","nodeType":"MemberAccess","referencedDeclaration":89097,"src":"18189:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80058,"name":"SlUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88130,"src":"18138:9:109","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,address,uint256,uint256,uint256)"}},"id":80068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18138:59:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80069,"nodeType":"EmitStatement","src":"18133:64:109"}]}},{"expression":{"arguments":[{"id":80075,"name":"orderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79975,"src":"18257:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":80072,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":79987,"src":"18221:10:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":80074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"unregisterPendingSlOrder","nodeType":"MemberAccess","referencedDeclaration":89234,"src":"18221:35:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":80076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18221:44:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80077,"nodeType":"ExpressionStatement","src":"18221:44:109"}]},"baseFunctions":[88214],"documentation":{"id":79973,"nodeType":"StructuredDocumentation","src":"17324:176:109","text":" @notice Updates stop loss order based on aggregator's callback\n @param orderId orderId.\n @param price price.\n @param spreadP spreadP."},"functionSelector":"da0870e7","implemented":true,"kind":"function","modifiers":[{"id":79983,"kind":"modifierInvocation","modifierName":{"id":79982,"name":"onlyPriceAggregator","nodeType":"IdentifierPath","referencedDeclaration":78381,"src":"17590:19:109"},"nodeType":"ModifierInvocation","src":"17590:19:109"}],"name":"updateSlCallback","nameLocation":"17515:16:109","overrides":{"id":79981,"nodeType":"OverrideSpecifier","overrides":[],"src":"17581:8:109"},"parameters":{"id":79980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":79975,"mutability":"mutable","name":"orderId","nameLocation":"17537:7:109","nodeType":"VariableDeclaration","scope":80079,"src":"17532:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79974,"name":"uint","nodeType":"ElementaryTypeName","src":"17532:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":79977,"mutability":"mutable","name":"price","nameLocation":"17551:5:109","nodeType":"VariableDeclaration","scope":80079,"src":"17546:10:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79976,"name":"uint","nodeType":"ElementaryTypeName","src":"17546:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":79979,"mutability":"mutable","name":"spreadP","nameLocation":"17563:7:109","nodeType":"VariableDeclaration","scope":80079,"src":"17558:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":79978,"name":"uint","nodeType":"ElementaryTypeName","src":"17558:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17531:40:109"},"returnParameters":{"id":79984,"nodeType":"ParameterList","parameters":[],"src":"17610:0:109"},"scope":80828,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":80117,"nodeType":"FunctionDefinition","src":"18454:257:109","nodes":[],"body":{"id":80116,"nodeType":"Block","src":"18530:181:109","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":80103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80091,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80089,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80084,"src":"18549:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":80090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18559:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18549:11:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":80102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":80092,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"18564:3:109","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":80093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"18564:10:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":80096,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"18586:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"priceAggregator","nodeType":"MemberAccess","referencedDeclaration":89592,"src":"18586:24:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPriceAggregator_$89248_$","typeString":"function () view external returns (contract IPriceAggregator)"}},"id":80098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18586:26:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":80099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"executions","nodeType":"MemberAccess","referencedDeclaration":89168,"src":"18586:37:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IExecute_$88371_$","typeString":"function () view external returns (contract IExecute)"}},"id":80100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18586:39:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IExecute_$88371","typeString":"contract IExecute"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IExecute_$88371","typeString":"contract IExecute"}],"id":80095,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18578:7:109","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":80094,"name":"address","nodeType":"ElementaryTypeName","src":"18578:7:109","typeDescriptions":{}}},"id":80101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18578:48:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"18564:62:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18549:77:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"455f4f","id":80104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18628:5:109","typeDescriptions":{"typeIdentifier":"t_stringliteral_5c3eee02d2ffc31b9b02a12672751db4bc402655ad477ea06c465c342bbb9cfa","typeString":"literal_string \"E_O\""},"value":"E_O"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5c3eee02d2ffc31b9b02a12672751db4bc402655ad477ea06c465c342bbb9cfa","typeString":"literal_string \"E_O\""}],"id":80088,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"18541:7:109","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":80105,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18541:93:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80106,"nodeType":"ExpressionStatement","src":"18541:93:109"},{"expression":{"arguments":[{"id":80112,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80082,"src":"18686:7:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":80113,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80084,"src":"18695:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":80107,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"18645:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80109,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"vaultManager","nodeType":"MemberAccess","referencedDeclaration":89598,"src":"18645:21:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVaultManager_$90188_$","typeString":"function () view external returns (contract IVaultManager)"}},"id":80110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18645:23:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultManager_$90188","typeString":"contract IVaultManager"}},"id":80111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendUSDCToTrader","nodeType":"MemberAccess","referencedDeclaration":90153,"src":"18645:40:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":80114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18645:58:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80115,"nodeType":"ExpressionStatement","src":"18645:58:109"}]},"baseFunctions":[88230],"documentation":{"id":80080,"nodeType":"StructuredDocumentation","src":"18281:167:109","text":" @notice Transfers funds from the vault to the trader\n @param _trader Address of the trader\n @param _amount Amount to be transferred"},"functionSelector":"da8ddc74","implemented":true,"kind":"function","modifiers":[],"name":"transferFromVault","nameLocation":"18463:17:109","overrides":{"id":80086,"nodeType":"OverrideSpecifier","overrides":[],"src":"18521:8:109"},"parameters":{"id":80085,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80082,"mutability":"mutable","name":"_trader","nameLocation":"18489:7:109","nodeType":"VariableDeclaration","scope":80117,"src":"18481:15:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80081,"name":"address","nodeType":"ElementaryTypeName","src":"18481:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":80084,"mutability":"mutable","name":"_amount","nameLocation":"18503:7:109","nodeType":"VariableDeclaration","scope":80117,"src":"18498:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80083,"name":"uint","nodeType":"ElementaryTypeName","src":"18498:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18480:31:109"},"returnParameters":{"id":80087,"nodeType":"ParameterList","parameters":[],"src":"18530:0:109"},"scope":80828,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":80183,"nodeType":"FunctionDefinition","src":"18719:430:109","nodes":[],"body":{"id":80182,"nodeType":"Block","src":"18824:325:109","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":80150,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80133,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80131,"name":"tp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80123,"src":"18839:2:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":80132,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18845:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"18839:7:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":80149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":80135,"name":"openPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80119,"src":"18872:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":80136,"name":"tp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80123,"src":"18883:2:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":80137,"name":"buy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80125,"src":"18887:3:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":80138,"name":"leverage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80121,"src":"18892:8:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80134,"name":"_currentPercentProfit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80795,"src":"18850:21:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_bool_$_t_uint256_$returns$_t_int256_$","typeString":"function (uint256,uint256,bool,uint256) pure returns (int256)"}},"id":80139,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18850:51:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":80148,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"id":80142,"name":"_MAX_GAIN_P","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78345,"src":"18909:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80141,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18905:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":80140,"name":"int","nodeType":"ElementaryTypeName","src":"18905:3:109","typeDescriptions":{}}},"id":80143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18905:16:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":80146,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78339,"src":"18928:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80145,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18924:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":80144,"name":"int","nodeType":"ElementaryTypeName","src":"18924:3:109","typeDescriptions":{}}},"id":80147,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18924:15:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18905:34:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18850:89:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18839:100:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":80179,"nodeType":"IfStatement","src":"18835:287:109","trueBody":{"id":80178,"nodeType":"Block","src":"18941:181:109","statements":[{"assignments":[80152],"declarations":[{"constant":false,"id":80152,"mutability":"mutable","name":"tpDiff","nameLocation":"18961:6:109","nodeType":"VariableDeclaration","scope":80178,"src":"18956:11:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80151,"name":"uint","nodeType":"ElementaryTypeName","src":"18956:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":80163,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"arguments":[{"id":80158,"name":"leverage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80121,"src":"19001:8:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80153,"name":"openPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80119,"src":"18972:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":80154,"name":"_MAX_GAIN_P","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78345,"src":"18984:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18972:23:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":80156,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18971:25:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80157,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":90840,"src":"18971:29:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":80159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18971:39:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":80160,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18970:41:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":80161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19014:3:109","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"18970:47:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18956:61:109"},{"expression":{"condition":{"id":80164,"name":"buy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80125,"src":"19039:3:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80168,"name":"tpDiff","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80152,"src":"19066:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":80169,"name":"openPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80119,"src":"19076:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19066:19:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":80174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19109:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":80175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19066:44:109","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80171,"name":"openPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80119,"src":"19088:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":80172,"name":"tpDiff","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80152,"src":"19100:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19088:18:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80176,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19039:71:109","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80167,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80165,"name":"openPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80119,"src":"19045:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":80166,"name":"tpDiff","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80152,"src":"19057:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19045:18:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":80130,"id":80177,"nodeType":"Return","src":"19032:78:109"}]}},{"expression":{"id":80180,"name":"tp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80123,"src":"19139:2:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":80130,"id":80181,"nodeType":"Return","src":"19132:9:109"}]},"baseFunctions":[88256],"functionSelector":"aee2e443","implemented":true,"kind":"function","modifiers":[],"name":"correctTp","nameLocation":"18728:9:109","overrides":{"id":80127,"nodeType":"OverrideSpecifier","overrides":[],"src":"18795:8:109"},"parameters":{"id":80126,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80119,"mutability":"mutable","name":"openPrice","nameLocation":"18743:9:109","nodeType":"VariableDeclaration","scope":80183,"src":"18738:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80118,"name":"uint","nodeType":"ElementaryTypeName","src":"18738:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":80121,"mutability":"mutable","name":"leverage","nameLocation":"18759:8:109","nodeType":"VariableDeclaration","scope":80183,"src":"18754:13:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80120,"name":"uint","nodeType":"ElementaryTypeName","src":"18754:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":80123,"mutability":"mutable","name":"tp","nameLocation":"18774:2:109","nodeType":"VariableDeclaration","scope":80183,"src":"18769:7:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80122,"name":"uint","nodeType":"ElementaryTypeName","src":"18769:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":80125,"mutability":"mutable","name":"buy","nameLocation":"18783:3:109","nodeType":"VariableDeclaration","scope":80183,"src":"18778:8:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":80124,"name":"bool","nodeType":"ElementaryTypeName","src":"18778:4:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"18737:50:109"},"returnParameters":{"id":80130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80129,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80183,"src":"18818:4:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80128,"name":"uint","nodeType":"ElementaryTypeName","src":"18818:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18817:6:109"},"scope":80828,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":80248,"nodeType":"FunctionDefinition","src":"19157:405:109","nodes":[],"body":{"id":80247,"nodeType":"Block","src":"19262:300:109","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":80220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80197,"name":"sl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80189,"src":"19277:2:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":80198,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19282:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19277:6:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":80219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":80201,"name":"openPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80185,"src":"19309:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":80202,"name":"sl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80189,"src":"19320:2:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":80203,"name":"buy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80191,"src":"19324:3:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":80204,"name":"leverage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80187,"src":"19329:8:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80200,"name":"_currentPercentProfit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80795,"src":"19287:21:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_bool_$_t_uint256_$returns$_t_int256_$","typeString":"function (uint256,uint256,bool,uint256) pure returns (int256)"}},"id":80205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19287:51:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":80218,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":80214,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"id":80208,"name":"_MAX_SL_P","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78342,"src":"19345:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80207,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19341:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":80206,"name":"int","nodeType":"ElementaryTypeName","src":"19341:3:109","typeDescriptions":{}}},"id":80209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19341:14:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":80212,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78339,"src":"19362:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80211,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19358:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":80210,"name":"int","nodeType":"ElementaryTypeName","src":"19358:3:109","typeDescriptions":{}}},"id":80213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19358:15:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19341:32:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"id":80216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"19377:2:109","subExpression":{"hexValue":"31","id":80215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19378:1:109","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}}],"id":80217,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"19376:4:109","typeDescriptions":{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}},"src":"19341:39:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19287:93:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19277:103:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":80244,"nodeType":"IfStatement","src":"19273:262:109","trueBody":{"id":80243,"nodeType":"Block","src":"19382:153:109","statements":[{"assignments":[80222],"declarations":[{"constant":false,"id":80222,"mutability":"mutable","name":"slDiff","nameLocation":"19402:6:109","nodeType":"VariableDeclaration","scope":80243,"src":"19397:11:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80221,"name":"uint","nodeType":"ElementaryTypeName","src":"19397:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":80233,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"arguments":[{"id":80228,"name":"leverage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80187,"src":"19440:8:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80223,"name":"openPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80185,"src":"19413:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":80224,"name":"_MAX_SL_P","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78342,"src":"19425:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19413:21:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":80226,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19412:23:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"div","nodeType":"MemberAccess","referencedDeclaration":90840,"src":"19412:27:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":80229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19412:37:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":80230,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"19411:39:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":80231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19453:3:109","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"19411:45:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19397:59:109"},{"expression":{"condition":{"id":80234,"name":"buy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80191,"src":"19478:3:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80238,"name":"openPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80185,"src":"19505:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":80239,"name":"slDiff","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80222,"src":"19517:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19505:18:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"19478:45:109","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80235,"name":"openPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80185,"src":"19484:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":80236,"name":"slDiff","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80222,"src":"19496:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19484:18:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":80196,"id":80242,"nodeType":"Return","src":"19471:52:109"}]}},{"expression":{"id":80245,"name":"sl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80189,"src":"19552:2:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":80196,"id":80246,"nodeType":"Return","src":"19545:9:109"}]},"baseFunctions":[88243],"functionSelector":"b5edf954","implemented":true,"kind":"function","modifiers":[],"name":"correctSl","nameLocation":"19166:9:109","overrides":{"id":80193,"nodeType":"OverrideSpecifier","overrides":[],"src":"19233:8:109"},"parameters":{"id":80192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80185,"mutability":"mutable","name":"openPrice","nameLocation":"19181:9:109","nodeType":"VariableDeclaration","scope":80248,"src":"19176:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80184,"name":"uint","nodeType":"ElementaryTypeName","src":"19176:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":80187,"mutability":"mutable","name":"leverage","nameLocation":"19197:8:109","nodeType":"VariableDeclaration","scope":80248,"src":"19192:13:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80186,"name":"uint","nodeType":"ElementaryTypeName","src":"19192:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":80189,"mutability":"mutable","name":"sl","nameLocation":"19212:2:109","nodeType":"VariableDeclaration","scope":80248,"src":"19207:7:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80188,"name":"uint","nodeType":"ElementaryTypeName","src":"19207:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":80191,"mutability":"mutable","name":"buy","nameLocation":"19221:3:109","nodeType":"VariableDeclaration","scope":80248,"src":"19216:8:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":80190,"name":"bool","nodeType":"ElementaryTypeName","src":"19216:4:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"19175:50:109"},"returnParameters":{"id":80196,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80195,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80248,"src":"19256:4:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80194,"name":"uint","nodeType":"ElementaryTypeName","src":"19256:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19255:6:109"},"scope":80828,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":80315,"nodeType":"FunctionDefinition","src":"19570:743:109","nodes":[],"body":{"id":80314,"nodeType":"Block","src":"19681:632:109","nodes":[],"statements":[{"assignments":[80261],"declarations":[{"constant":false,"id":80261,"mutability":"mutable","name":"pairsStored","nameLocation":"19705:11:109","nodeType":"VariableDeclaration","scope":80314,"src":"19692:24:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"},"typeName":{"id":80260,"nodeType":"UserDefinedTypeName","pathNode":{"id":80259,"name":"IPairStorage","nodeType":"IdentifierPath","referencedDeclaration":89055,"src":"19692:12:109"},"referencedDeclaration":89055,"src":"19692:12:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"visibility":"internal"}],"id":80267,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":80262,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"19719:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"priceAggregator","nodeType":"MemberAccess","referencedDeclaration":89592,"src":"19719:24:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPriceAggregator_$89248_$","typeString":"function () view external returns (contract IPriceAggregator)"}},"id":80264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19719:26:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":80265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairsStorage","nodeType":"MemberAccess","referencedDeclaration":89162,"src":"19719:39:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPairStorage_$89055_$","typeString":"function () view external returns (contract IPairStorage)"}},"id":80266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19719:41:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"nodeType":"VariableDeclarationStatement","src":"19692:68:109"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":80312,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":80300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":80288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":80268,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"19817:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"totalOI","nodeType":"MemberAccess","referencedDeclaration":89881,"src":"19817:16:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":80270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19817:18:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":80271,"name":"_leveragedPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80254,"src":"19838:13:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19817:34:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":80273,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"19855:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"maxOpenInterest","nodeType":"MemberAccess","referencedDeclaration":89930,"src":"19855:24:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":80275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19855:26:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19817:64:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80282,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":80279,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80252,"src":"19956:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":80277,"name":"pairsStored","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80261,"src":"19936:11:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":80278,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"groupOI","nodeType":"MemberAccess","referencedDeclaration":88959,"src":"19936:19:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":80280,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19936:31:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":80281,"name":"_leveragedPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80254,"src":"19970:13:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19936:47:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":80285,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80252,"src":"20010:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":80283,"name":"pairsStored","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80261,"src":"19987:11:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":80284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"groupMaxOI","nodeType":"MemberAccess","referencedDeclaration":88952,"src":"19987:22:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":80286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19987:34:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19936:85:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19817:204:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":80291,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80252,"src":"20091:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":80289,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"20075:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairOI","nodeType":"MemberAccess","referencedDeclaration":89897,"src":"20075:15:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":80292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20075:27:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":80293,"name":"_leveragedPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80254,"src":"20105:13:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20075:43:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":80297,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80252,"src":"20144:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":80295,"name":"pairsStored","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80261,"src":"20122:11:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":80296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairMaxOI","nodeType":"MemberAccess","referencedDeclaration":89021,"src":"20122:21:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":80298,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20122:33:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20075:80:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19817:338:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80311,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80306,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":80303,"name":"_trader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80250,"src":"20228:7:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":80301,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"20210:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"walletOI","nodeType":"MemberAccess","referencedDeclaration":89925,"src":"20210:17:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":80304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20210:26:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":80305,"name":"_leveragedPos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80254,"src":"20239:13:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20210:42:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"id":80309,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80252,"src":"20280:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":80307,"name":"pairsStored","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80261,"src":"20256:11:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":80308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"maxWalletOI","nodeType":"MemberAccess","referencedDeclaration":89014,"src":"20256:23:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view external returns (uint256)"}},"id":80310,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20256:35:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20210:81:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"19817:474:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":80258,"id":80313,"nodeType":"Return","src":"19771:520:109"}]},"functionSelector":"6819edf3","implemented":true,"kind":"function","modifiers":[],"name":"withinExposureLimits","nameLocation":"19579:20:109","parameters":{"id":80255,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80250,"mutability":"mutable","name":"_trader","nameLocation":"19608:7:109","nodeType":"VariableDeclaration","scope":80315,"src":"19600:15:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":80249,"name":"address","nodeType":"ElementaryTypeName","src":"19600:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":80252,"mutability":"mutable","name":"_pairIndex","nameLocation":"19622:10:109","nodeType":"VariableDeclaration","scope":80315,"src":"19617:15:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80251,"name":"uint","nodeType":"ElementaryTypeName","src":"19617:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":80254,"mutability":"mutable","name":"_leveragedPos","nameLocation":"19639:13:109","nodeType":"VariableDeclaration","scope":80315,"src":"19634:18:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80253,"name":"uint","nodeType":"ElementaryTypeName","src":"19634:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19599:54:109"},"returnParameters":{"id":80258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80257,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80315,"src":"19675:4:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":80256,"name":"bool","nodeType":"ElementaryTypeName","src":"19675:4:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"19674:6:109"},"scope":80828,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":80504,"nodeType":"FunctionDefinition","src":"20495:1685:109","nodes":[],"body":{"id":80503,"nodeType":"Block","src":"20603:1577:109","nodes":[],"statements":[{"assignments":[80327],"declarations":[{"constant":false,"id":80327,"mutability":"mutable","name":"aggregator","nameLocation":"20631:10:109","nodeType":"VariableDeclaration","scope":80503,"src":"20614:27:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"},"typeName":{"id":80326,"nodeType":"UserDefinedTypeName","pathNode":{"id":80325,"name":"IPriceAggregator","nodeType":"IdentifierPath","referencedDeclaration":89248,"src":"20614:16:109"},"referencedDeclaration":89248,"src":"20614:16:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"visibility":"internal"}],"id":80331,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":80328,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"20644:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"priceAggregator","nodeType":"MemberAccess","referencedDeclaration":89592,"src":"20644:24:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPriceAggregator_$89248_$","typeString":"function () view external returns (contract IPriceAggregator)"}},"id":80330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20644:26:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"nodeType":"VariableDeclarationStatement","src":"20614:56:109"},{"assignments":[80334],"declarations":[{"constant":false,"id":80334,"mutability":"mutable","name":"pairsStored","nameLocation":"20694:11:109","nodeType":"VariableDeclaration","scope":80503,"src":"20681:24:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"},"typeName":{"id":80333,"nodeType":"UserDefinedTypeName","pathNode":{"id":80332,"name":"IPairStorage","nodeType":"IdentifierPath","referencedDeclaration":89055,"src":"20681:12:109"},"referencedDeclaration":89055,"src":"20681:12:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"visibility":"internal"}],"id":80338,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":80335,"name":"aggregator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80327,"src":"20708:10:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":80336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairsStorage","nodeType":"MemberAccess","referencedDeclaration":89162,"src":"20708:23:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPairStorage_$89055_$","typeString":"function () view external returns (contract IPairStorage)"}},"id":80337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20708:25:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"nodeType":"VariableDeclarationStatement","src":"20681:52:109"},{"expression":{"id":80344,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":80339,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"20746:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80341,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"timestamp","nodeType":"MemberAccess","referencedDeclaration":89437,"src":"20746:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":80342,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"20765:5:109","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":80343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"timestamp","nodeType":"MemberAccess","src":"20765:15:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20746:34:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80345,"nodeType":"ExpressionStatement","src":"20746:34:109"},{"expression":{"id":80366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":80346,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"20791:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80348,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"positionSizeUSDC","nodeType":"MemberAccess","referencedDeclaration":89425,"src":"20791:23:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"arguments":[{"expression":{"id":80351,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"20858:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80352,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"20858:13:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":80353,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"20886:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80354,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"20886:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":80358,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"20945:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80359,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"20945:15:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":80355,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"20917:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80356,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"positionSizeUSDC","nodeType":"MemberAccess","referencedDeclaration":89425,"src":"20917:23:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80357,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":90823,"src":"20917:27:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":80360,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20917:44:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":80361,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20976:4:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"hexValue":"74727565","id":80362,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20995:4:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"id":80363,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21014:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80364,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"21014:10:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":80349,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"20818:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80350,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"handleDevGovFees","nodeType":"MemberAccess","referencedDeclaration":89814,"src":"20818:25:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$_t_bool_$returns$_t_uint256_$","typeString":"function (address,uint256,uint256,bool,bool,bool) external returns (uint256)"}},"id":80365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20818:217:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20791:244:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80367,"nodeType":"ExpressionStatement","src":"20791:244:109"},{"expression":{"arguments":[{"arguments":[{"expression":{"id":80376,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21115:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80377,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"21115:15:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":80373,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21087:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80374,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"positionSizeUSDC","nodeType":"MemberAccess","referencedDeclaration":89425,"src":"21087:23:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":90823,"src":"21087:27:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":80378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21087:44:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":80368,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"21048:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"vaultManager","nodeType":"MemberAccess","referencedDeclaration":89598,"src":"21048:21:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVaultManager_$90188_$","typeString":"function () view external returns (contract IVaultManager)"}},"id":80371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21048:23:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultManager_$90188","typeString":"contract IVaultManager"}},"id":80372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"reserveBalance","nodeType":"MemberAccess","referencedDeclaration":90177,"src":"21048:38:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":80379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21048:84:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80380,"nodeType":"ExpressionStatement","src":"21048:84:109"},{"expression":{"arguments":[{"expression":{"id":80386,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21189:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80387,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"21189:13:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":80388,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21204:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80389,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"positionSizeUSDC","nodeType":"MemberAccess","referencedDeclaration":89425,"src":"21204:23:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":80381,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"21143:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80383,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"vaultManager","nodeType":"MemberAccess","referencedDeclaration":89598,"src":"21143:21:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVaultManager_$90188_$","typeString":"function () view external returns (contract IVaultManager)"}},"id":80384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21143:23:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultManager_$90188","typeString":"contract IVaultManager"}},"id":80385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"receiveUSDCFromTrader","nodeType":"MemberAccess","referencedDeclaration":90160,"src":"21143:45:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":80390,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21143:85:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80391,"nodeType":"ExpressionStatement","src":"21143:85:109"},{"expression":{"id":80397,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":80392,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21241:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80394,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"21241:22:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":80395,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21266:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80396,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"positionSizeUSDC","nodeType":"MemberAccess","referencedDeclaration":89425,"src":"21266:23:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21241:48:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80398,"nodeType":"ExpressionStatement","src":"21241:48:109"},{"expression":{"id":80403,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":80399,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21300:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80401,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"positionSizeUSDC","nodeType":"MemberAccess","referencedDeclaration":89425,"src":"21300:23:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":80402,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21326:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"21300:27:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80404,"nodeType":"ExpressionStatement","src":"21300:27:109"},{"expression":{"id":80415,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":80405,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21340:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80407,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89421,"src":"21340:12:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":80410,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21385:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80411,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"21385:13:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":80412,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21400:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80413,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"21400:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":80408,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"21355:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"firstEmptyTradeIndex","nodeType":"MemberAccess","referencedDeclaration":89777,"src":"21355:29:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view external returns (uint256)"}},"id":80414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21355:62:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21340:77:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80416,"nodeType":"ExpressionStatement","src":"21340:77:109"},{"expression":{"id":80430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":80417,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21428:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80419,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"tp","nodeType":"MemberAccess","referencedDeclaration":89433,"src":"21428:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":80421,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21450:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80422,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"21450:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":80423,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21468:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80424,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"21468:15:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":80425,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21485:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80426,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"tp","nodeType":"MemberAccess","referencedDeclaration":89433,"src":"21485:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":80427,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21496:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80428,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"21496:10:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":80420,"name":"correctTp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80183,"src":"21440:9:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256,bool) pure returns (uint256)"}},"id":80429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21440:67:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21428:79:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80431,"nodeType":"ExpressionStatement","src":"21428:79:109"},{"expression":{"id":80445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":80432,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21518:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80434,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89435,"src":"21518:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":80436,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21540:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80437,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openPrice","nodeType":"MemberAccess","referencedDeclaration":89427,"src":"21540:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":80438,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21558:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80439,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"21558:15:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":80440,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21575:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80441,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"sl","nodeType":"MemberAccess","referencedDeclaration":89435,"src":"21575:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":80442,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21586:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80443,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"21586:10:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"id":80435,"name":"correctSl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80248,"src":"21530:9:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256,bool) pure returns (uint256)"}},"id":80444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21530:67:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"21518:79:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80446,"nodeType":"ExpressionStatement","src":"21518:79:109"},{"expression":{"arguments":[{"expression":{"id":80450,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21645:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80451,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"21645:13:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":80452,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21660:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80453,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"21660:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":80454,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21678:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80455,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89421,"src":"21678:12:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":80456,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21692:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80457,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"21692:10:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":80447,"name":"pairInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78357,"src":"21610:9:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPairInfos_$88745","typeString":"contract IPairInfos"}},"id":80449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"storeTradeInitialAccFees","nodeType":"MemberAccess","referencedDeclaration":88667,"src":"21610:34:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,uint256,uint256,bool) external"}},"id":80458,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21610:93:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80459,"nodeType":"ExpressionStatement","src":"21610:93:109"},{"expression":{"arguments":[{"expression":{"id":80463,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21742:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80464,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"21742:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":80468,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21787:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80469,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"21787:15:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":80465,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21760:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80466,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"21760:22:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":90823,"src":"21760:26:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":80470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21760:43:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":80471,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21805:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80472,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"21805:10:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"74727565","id":80473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"21817:4:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":80460,"name":"pairsStored","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80334,"src":"21716:11:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":80462,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"updateGroupOI","nodeType":"MemberAccess","referencedDeclaration":88886,"src":"21716:25:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$returns$__$","typeString":"function (uint256,uint256,bool,bool) external"}},"id":80474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21716:106:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80475,"nodeType":"ExpressionStatement","src":"21716:106:109"},{"expression":{"arguments":[{"id":80479,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21869:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},{"arguments":[{"arguments":[{"expression":{"id":80485,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21961:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80486,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"21961:15:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"expression":{"id":80482,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"21934:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80483,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"21934:22:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":90823,"src":"21934:26:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":80487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21934:43:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":80488,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"21996:5:109","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":80489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","src":"21996:12:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":80490,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"22027:5:109","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":80491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","src":"22027:12:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":80492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"22058:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"id":80495,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"22111:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}],"expression":{"id":80493,"name":"pairInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78357,"src":"22082:9:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPairInfos_$88745","typeString":"contract IPairInfos"}},"id":80494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"lossProtectionTier","nodeType":"MemberAccess","referencedDeclaration":88744,"src":"22082:28:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_struct$_Trade_$89438_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct ITradingStorage.Trade memory) view external returns (uint256)"}},"id":80496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22082:36:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":80480,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"21890:15:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":80481,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"TradeInfo","nodeType":"MemberAccess","referencedDeclaration":89449,"src":"21890:25:109","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_TradeInfo_$89449_storage_ptr_$","typeString":"type(struct ITradingStorage.TradeInfo storage pointer)"}},"id":80497,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21890:243:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TradeInfo_$89449_memory_ptr","typeString":"struct ITradingStorage.TradeInfo memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"},{"typeIdentifier":"t_struct$_TradeInfo_$89449_memory_ptr","typeString":"struct ITradingStorage.TradeInfo memory"}],"expression":{"id":80476,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"21835:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80478,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"storeTrade","nodeType":"MemberAccess","referencedDeclaration":89823,"src":"21835:19:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_Trade_$89438_memory_ptr_$_t_struct$_TradeInfo_$89449_memory_ptr_$returns$__$","typeString":"function (struct ITradingStorage.Trade memory,struct ITradingStorage.TradeInfo memory) external"}},"id":80498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21835:309:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80499,"nodeType":"ExpressionStatement","src":"21835:309:109"},{"expression":{"components":[{"id":80500,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80319,"src":"22165:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}}],"id":80501,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22164:8:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"functionReturnParameters":80324,"id":80502,"nodeType":"Return","src":"22157:15:109"}]},"documentation":{"id":80316,"nodeType":"StructuredDocumentation","src":"20325:164:109","text":" @notice Registers a new trade(Market/Limit)\n @param _trade Trade information to be registered\n @return Updated trade information"},"implemented":true,"kind":"function","modifiers":[],"name":"_registerTrade","nameLocation":"20504:14:109","parameters":{"id":80320,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80319,"mutability":"mutable","name":"_trade","nameLocation":"20548:6:109","nodeType":"VariableDeclaration","scope":80504,"src":"20519:35:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":80318,"nodeType":"UserDefinedTypeName","pathNode":{"id":80317,"name":"ITradingStorage.Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"20519:21:109"},"referencedDeclaration":89438,"src":"20519:21:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"}],"src":"20518:37:109"},"returnParameters":{"id":80324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80323,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80504,"src":"20573:28:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":80322,"nodeType":"UserDefinedTypeName","pathNode":{"id":80321,"name":"ITradingStorage.Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"20573:21:109"},"referencedDeclaration":89438,"src":"20573:21:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"}],"src":"20572:30:109"},"scope":80828,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":80699,"nodeType":"FunctionDefinition","src":"22688:2099:109","nodes":[],"body":{"id":80698,"nodeType":"Block","src":"22961:1826:109","nodes":[],"statements":[{"assignments":[80524],"declarations":[{"constant":false,"id":80524,"mutability":"mutable","name":"totalFees","nameLocation":"23036:9:109","nodeType":"VariableDeclaration","scope":80698,"src":"23031:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80523,"name":"uint","nodeType":"ElementaryTypeName","src":"23031:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":80525,"nodeType":"VariableDeclarationStatement","src":"23031:14:109"},{"id":80633,"nodeType":"Block","src":"23056:1120:109","statements":[{"assignments":[80527,80529],"declarations":[{"constant":false,"id":80527,"mutability":"mutable","name":"feeAfterRebate","nameLocation":"23077:14:109","nodeType":"VariableDeclaration","scope":80633,"src":"23072:19:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80526,"name":"uint","nodeType":"ElementaryTypeName","src":"23072:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":80529,"mutability":"mutable","name":"referrerRebate","nameLocation":"23098:14:109","nodeType":"VariableDeclaration","scope":80633,"src":"23093:19:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80528,"name":"uint","nodeType":"ElementaryTypeName","src":"23093:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":80541,"initialValue":{"arguments":[{"expression":{"id":80532,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80508,"src":"23157:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80533,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"23157:13:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":80534,"name":"_lpFeeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80516,"src":"23189:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":80537,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80508,"src":"23235:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80538,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"23235:15:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":80535,"name":"_collateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80512,"src":"23219:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":90823,"src":"23219:15:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":80539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23219:32:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":80530,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"23116:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"applyReferral","nodeType":"MemberAccess","referencedDeclaration":89918,"src":"23116:22:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (address,uint256,uint256) external returns (uint256,uint256)"}},"id":80540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23116:150:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"23071:195:109"},{"assignments":[80543],"declarations":[{"constant":false,"id":80543,"mutability":"mutable","name":"pnl","nameLocation":"23299:3:109","nodeType":"VariableDeclaration","scope":80633,"src":"23295:7:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":80542,"name":"int","nodeType":"ElementaryTypeName","src":"23295:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":80544,"nodeType":"VariableDeclarationStatement","src":"23295:7:109"},{"expression":{"id":80559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":80545,"name":"usdcSentToTrader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80521,"src":"23318:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":80546,"name":"pnl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80543,"src":"23336:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":80547,"name":"totalFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80524,"src":"23341:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":80548,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"23317:34:109","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_int256_$_t_uint256_$","typeString":"tuple(uint256,int256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":80551,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80508,"src":"23396:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},{"id":80552,"name":"_collateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80512,"src":"23421:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":80553,"name":"_percentProfit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80510,"src":"23451:14:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80556,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80554,"name":"feeAfterRebate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80527,"src":"23484:14:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":80555,"name":"_feeAmountToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80514,"src":"23501:15:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23484:32:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":80557,"name":"_tier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80518,"src":"23535:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":80549,"name":"pairInfos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78357,"src":"23354:9:109","typeDescriptions":{"typeIdentifier":"t_contract$_IPairInfos_$88745","typeString":"contract IPairInfos"}},"id":80550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"getTradeValue","nodeType":"MemberAccess","referencedDeclaration":88719,"src":"23354:23:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_struct$_Trade_$89438_memory_ptr_$_t_uint256_$_t_int256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_int256_$_t_uint256_$","typeString":"function (struct ITradingStorage.Trade memory,uint256,int256,uint256,uint256) external returns (uint256,int256,uint256)"}},"id":80558,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23354:201:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_int256_$_t_uint256_$","typeString":"tuple(uint256,int256,uint256)"}},"src":"23317:238:109","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80560,"nodeType":"ExpressionStatement","src":"23317:238:109"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80561,"name":"usdcSentToTrader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80521,"src":"23576:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":80562,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23595:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23576:20:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":80575,"nodeType":"IfStatement","src":"23572:134:109","trueBody":{"id":80574,"nodeType":"Block","src":"23598:108:109","statements":[{"expression":{"arguments":[{"expression":{"id":80569,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80508,"src":"23658:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80570,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"23658:13:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":80571,"name":"usdcSentToTrader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80521,"src":"23673:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":80564,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"23617:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"vaultManager","nodeType":"MemberAccess","referencedDeclaration":89598,"src":"23617:21:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVaultManager_$90188_$","typeString":"function () view external returns (contract IVaultManager)"}},"id":80567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23617:23:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultManager_$90188","typeString":"contract IVaultManager"}},"id":80568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendUSDCToTrader","nodeType":"MemberAccess","referencedDeclaration":90153,"src":"23617:40:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":80572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23617:73:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80573,"nodeType":"ExpressionStatement","src":"23617:73:109"}]}},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":80578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80576,"name":"pnl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80543,"src":"23724:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":80577,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23730:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23724:7:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80604,"name":"totalFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80524,"src":"23929:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":80605,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23941:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23929:13:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":80618,"nodeType":"IfStatement","src":"23925:95:109","trueBody":{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80612,"name":"totalFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80524,"src":"23985:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":80613,"name":"_feeAmountToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80514,"src":"23997:15:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23985:27:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":80615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"24014:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":80607,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"23945:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"vaultManager","nodeType":"MemberAccess","referencedDeclaration":89598,"src":"23945:21:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVaultManager_$90188_$","typeString":"function () view external returns (contract IVaultManager)"}},"id":80610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23945:23:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultManager_$90188","typeString":"contract IVaultManager"}},"id":80611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allocateRewards","nodeType":"MemberAccess","referencedDeclaration":90172,"src":"23945:39:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_bool_$returns$__$","typeString":"function (uint256,bool) external"}},"id":80616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23945:75:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80617,"nodeType":"ExpressionStatement","src":"23945:75:109"}},"id":80619,"nodeType":"IfStatement","src":"23720:300:109","trueBody":{"id":80603,"nodeType":"Block","src":"23733:186:109","statements":[{"expression":{"arguments":[{"arguments":[{"id":80587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"23797:4:109","subExpression":{"id":80586,"name":"pnl","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80543,"src":"23798:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":80585,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23792:4:109","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":80584,"name":"uint","nodeType":"ElementaryTypeName","src":"23792:4:109","typeDescriptions":{}}},"id":80588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23792:10:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":80589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23804:4:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":80579,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"23752:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"vaultManager","nodeType":"MemberAccess","referencedDeclaration":89598,"src":"23752:21:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVaultManager_$90188_$","typeString":"function () view external returns (contract IVaultManager)"}},"id":80582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23752:23:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultManager_$90188","typeString":"contract IVaultManager"}},"id":80583,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allocateRewards","nodeType":"MemberAccess","referencedDeclaration":90172,"src":"23752:39:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_bool_$returns$__$","typeString":"function (uint256,bool) external"}},"id":80590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23752:57:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80591,"nodeType":"ExpressionStatement","src":"23752:57:109"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80597,"name":"totalFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80524,"src":"23868:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":80598,"name":"_feeAmountToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80514,"src":"23880:15:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23868:27:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":80600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"23897:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":80592,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"23828:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"vaultManager","nodeType":"MemberAccess","referencedDeclaration":89598,"src":"23828:21:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVaultManager_$90188_$","typeString":"function () view external returns (contract IVaultManager)"}},"id":80595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23828:23:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultManager_$90188","typeString":"contract IVaultManager"}},"id":80596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"allocateRewards","nodeType":"MemberAccess","referencedDeclaration":90172,"src":"23828:39:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_bool_$returns$__$","typeString":"function (uint256,bool) external"}},"id":80601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"23828:75:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80602,"nodeType":"ExpressionStatement","src":"23828:75:109"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80620,"name":"referrerRebate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80529,"src":"24041:14:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":80621,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24058:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"24041:18:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":80632,"nodeType":"IfStatement","src":"24037:126:109","trueBody":{"id":80631,"nodeType":"Block","src":"24061:102:109","statements":[{"expression":{"arguments":[{"id":80628,"name":"referrerRebate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80529,"src":"24132:14:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":80623,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"24080:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"vaultManager","nodeType":"MemberAccess","referencedDeclaration":89598,"src":"24080:21:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVaultManager_$90188_$","typeString":"function () view external returns (contract IVaultManager)"}},"id":80626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24080:23:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultManager_$90188","typeString":"contract IVaultManager"}},"id":80627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendReferrerRebateToStorage","nodeType":"MemberAccess","referencedDeclaration":90187,"src":"24080:51:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":80629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24080:67:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80630,"nodeType":"ExpressionStatement","src":"24080:67:109"}]}}]},{"expression":{"arguments":[{"arguments":[{"expression":{"id":80641,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80508,"src":"24241:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80642,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"24241:15:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":80639,"name":"_collateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80512,"src":"24225:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":90823,"src":"24225:15:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":80643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24225:32:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":80634,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"24186:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"vaultManager","nodeType":"MemberAccess","referencedDeclaration":89598,"src":"24186:21:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVaultManager_$90188_$","typeString":"function () view external returns (contract IVaultManager)"}},"id":80637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24186:23:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultManager_$90188","typeString":"contract IVaultManager"}},"id":80638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"releaseBalance","nodeType":"MemberAccess","referencedDeclaration":90182,"src":"24186:38:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256) external"}},"id":80644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24186:72:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80645,"nodeType":"ExpressionStatement","src":"24186:72:109"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":80646,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80508,"src":"24275:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80647,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"initialPosToken","nodeType":"MemberAccess","referencedDeclaration":89423,"src":"24275:22:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":80648,"name":"_collateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80512,"src":"24301:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24275:37:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":80675,"nodeType":"Block","src":"24414:128:109","statements":[{"expression":{"arguments":[{"expression":{"id":80664,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80508,"src":"24459:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80665,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"24459:13:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":80666,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80508,"src":"24474:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80667,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"24474:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":80668,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80508,"src":"24492:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80669,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89421,"src":"24492:12:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80670,"name":"_collateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80512,"src":"24506:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":80671,"name":"totalFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80524,"src":"24520:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24506:23:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":80661,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"24429:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"registerPartialTrade","nodeType":"MemberAccess","referencedDeclaration":89637,"src":"24429:29:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,uint256) external"}},"id":80673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24429:101:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80674,"nodeType":"ExpressionStatement","src":"24429:101:109"}]},"id":80676,"nodeType":"IfStatement","src":"24271:271:109","trueBody":{"expression":{"arguments":[{"expression":{"id":80653,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80508,"src":"24352:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80654,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"trader","nodeType":"MemberAccess","referencedDeclaration":89417,"src":"24352:13:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":80655,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80508,"src":"24367:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80656,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"24367:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":80657,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80508,"src":"24385:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80658,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"index","nodeType":"MemberAccess","referencedDeclaration":89421,"src":"24385:12:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":80650,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"24327:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"unregisterTrade","nodeType":"MemberAccess","referencedDeclaration":89626,"src":"24327:24:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256) external"}},"id":80659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24327:71:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80660,"nodeType":"ExpressionStatement","src":"24327:71:109"}},{"expression":{"arguments":[{"expression":{"id":80684,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80508,"src":"24624:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80685,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"pairIndex","nodeType":"MemberAccess","referencedDeclaration":89419,"src":"24624:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"expression":{"id":80688,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80508,"src":"24671:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80689,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"leverage","nodeType":"MemberAccess","referencedDeclaration":89431,"src":"24671:15:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":80686,"name":"_collateral","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80512,"src":"24655:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":90823,"src":"24655:15:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":80690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24655:32:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":80691,"name":"_trade","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80508,"src":"24702:6:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade memory"}},"id":80692,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"buy","nodeType":"MemberAccess","referencedDeclaration":89429,"src":"24702:10:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"66616c7365","id":80693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"24727:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":80677,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78354,"src":"24554:8:109","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":80679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"priceAggregator","nodeType":"MemberAccess","referencedDeclaration":89592,"src":"24554:24:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPriceAggregator_$89248_$","typeString":"function () view external returns (contract IPriceAggregator)"}},"id":80680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24554:26:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}},"id":80681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"pairsStorage","nodeType":"MemberAccess","referencedDeclaration":89162,"src":"24554:39:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPairStorage_$89055_$","typeString":"function () view external returns (contract IPairStorage)"}},"id":80682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24554:41:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPairStorage_$89055","typeString":"contract IPairStorage"}},"id":80683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"updateGroupOI","nodeType":"MemberAccess","referencedDeclaration":88886,"src":"24554:55:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_bool_$_t_bool_$returns$__$","typeString":"function (uint256,uint256,bool,bool) external"}},"id":80694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24554:189:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":80695,"nodeType":"ExpressionStatement","src":"24554:189:109"},{"expression":{"id":80696,"name":"usdcSentToTrader","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80521,"src":"24763:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":80522,"id":80697,"nodeType":"Return","src":"24756:23:109"}]},"documentation":{"id":80505,"nodeType":"StructuredDocumentation","src":"22188:494:109","text":" @notice Unregisters an existing trade. Called during Partial order close as well.\n @param _trade Trade information\n @param _percentProfit Percentage profit of the trade\n @param _collateral Current USDC position\n @param _feeAmountToken Fee in token for the executor\n @param _lpFeeToken Fee in token for the liquidity provider\n @param _tier Tier level for the trade\n @return usdcSentToTrader Amount of USDC sent to the trader"},"implemented":true,"kind":"function","modifiers":[],"name":"_unregisterTrade","nameLocation":"22697:16:109","parameters":{"id":80519,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80508,"mutability":"mutable","name":"_trade","nameLocation":"22753:6:109","nodeType":"VariableDeclaration","scope":80699,"src":"22724:35:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_memory_ptr","typeString":"struct ITradingStorage.Trade"},"typeName":{"id":80507,"nodeType":"UserDefinedTypeName","pathNode":{"id":80506,"name":"ITradingStorage.Trade","nodeType":"IdentifierPath","referencedDeclaration":89438,"src":"22724:21:109"},"referencedDeclaration":89438,"src":"22724:21:109","typeDescriptions":{"typeIdentifier":"t_struct$_Trade_$89438_storage_ptr","typeString":"struct ITradingStorage.Trade"}},"visibility":"internal"},{"constant":false,"id":80510,"mutability":"mutable","name":"_percentProfit","nameLocation":"22774:14:109","nodeType":"VariableDeclaration","scope":80699,"src":"22770:18:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":80509,"name":"int","nodeType":"ElementaryTypeName","src":"22770:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":80512,"mutability":"mutable","name":"_collateral","nameLocation":"22804:11:109","nodeType":"VariableDeclaration","scope":80699,"src":"22799:16:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80511,"name":"uint","nodeType":"ElementaryTypeName","src":"22799:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":80514,"mutability":"mutable","name":"_feeAmountToken","nameLocation":"22831:15:109","nodeType":"VariableDeclaration","scope":80699,"src":"22826:20:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80513,"name":"uint","nodeType":"ElementaryTypeName","src":"22826:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":80516,"mutability":"mutable","name":"_lpFeeToken","nameLocation":"22881:11:109","nodeType":"VariableDeclaration","scope":80699,"src":"22876:16:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80515,"name":"uint","nodeType":"ElementaryTypeName","src":"22876:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":80518,"mutability":"mutable","name":"_tier","nameLocation":"22908:5:109","nodeType":"VariableDeclaration","scope":80699,"src":"22903:10:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80517,"name":"uint","nodeType":"ElementaryTypeName","src":"22903:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22713:207:109"},"returnParameters":{"id":80522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80521,"mutability":"mutable","name":"usdcSentToTrader","nameLocation":"22943:16:109","nodeType":"VariableDeclaration","scope":80699,"src":"22938:21:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80520,"name":"uint","nodeType":"ElementaryTypeName","src":"22938:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"22937:23:109"},"scope":80828,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":80795,"nodeType":"FunctionDefinition","src":"24795:522:109","nodes":[],"body":{"id":80794,"nodeType":"Block","src":"24958:359:109","nodes":[],"statements":[{"assignments":[80713],"declarations":[{"constant":false,"id":80713,"mutability":"mutable","name":"diff","nameLocation":"24973:4:109","nodeType":"VariableDeclaration","scope":80794,"src":"24969:8:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":80712,"name":"int","nodeType":"ElementaryTypeName","src":"24969:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":80736,"initialValue":{"condition":{"id":80714,"name":"buy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80705,"src":"24980:3:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":80733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":80727,"name":"openPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80701,"src":"25030:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80726,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25026:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":80725,"name":"int","nodeType":"ElementaryTypeName","src":"25026:3:109","typeDescriptions":{}}},"id":80728,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25026:14:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":80731,"name":"currentPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80703,"src":"25047:12:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80730,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25043:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":80729,"name":"int","nodeType":"ElementaryTypeName","src":"25043:3:109","typeDescriptions":{}}},"id":80732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25043:17:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25026:34:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":80734,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25025:36:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":80735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"24980:81:109","trueExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":80723,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":80717,"name":"currentPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80703,"src":"24991:12:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80716,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24987:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":80715,"name":"int","nodeType":"ElementaryTypeName","src":"24987:3:109","typeDescriptions":{}}},"id":80718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"24987:17:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":80721,"name":"openPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80701,"src":"25011:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80720,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25007:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":80719,"name":"int","nodeType":"ElementaryTypeName","src":"25007:3:109","typeDescriptions":{}}},"id":80722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25007:14:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24987:34:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":80724,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24986:36:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"24969:92:109"},{"assignments":[80738],"declarations":[{"constant":false,"id":80738,"mutability":"mutable","name":"minPnlP","nameLocation":"25076:7:109","nodeType":"VariableDeclaration","scope":80794,"src":"25072:11:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":80737,"name":"int","nodeType":"ElementaryTypeName","src":"25072:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":80747,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":80746,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"id":80741,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78339,"src":"25090:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80740,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25086:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":80739,"name":"int","nodeType":"ElementaryTypeName","src":"25086:3:109","typeDescriptions":{}}},"id":80742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25086:15:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"id":80744,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"25105:4:109","subExpression":{"hexValue":"313030","id":80743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25106:3:109","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"typeDescriptions":{"typeIdentifier":"t_rational_minus_100_by_1","typeString":"int_const -100"}}],"id":80745,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"25104:6:109","typeDescriptions":{"typeIdentifier":"t_rational_minus_100_by_1","typeString":"int_const -100"}},"src":"25086:24:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"25072:38:109"},{"assignments":[80749],"declarations":[{"constant":false,"id":80749,"mutability":"mutable","name":"maxPnlP","nameLocation":"25125:7:109","nodeType":"VariableDeclaration","scope":80794,"src":"25121:11:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":80748,"name":"int","nodeType":"ElementaryTypeName","src":"25121:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":80759,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":80758,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"id":80752,"name":"_MAX_GAIN_P","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78345,"src":"25139:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80751,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25135:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":80750,"name":"int","nodeType":"ElementaryTypeName","src":"25135:3:109","typeDescriptions":{}}},"id":80753,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25135:16:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":80756,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78339,"src":"25158:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80755,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25154:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":80754,"name":"int","nodeType":"ElementaryTypeName","src":"25154:3:109","typeDescriptions":{}}},"id":80757,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25154:15:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25135:34:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"25121:48:109"},{"expression":{"id":80778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":80760,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80710,"src":"25180:1:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":80777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":80771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":80763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80761,"name":"diff","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80713,"src":"25185:4:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"313030","id":80762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25192:3:109","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"25185:10:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"arguments":[{"id":80768,"name":"leverage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80707,"src":"25217:8:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":80766,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78339,"src":"25202:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mul","nodeType":"MemberAccess","referencedDeclaration":90823,"src":"25202:14:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":80769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25202:24:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80765,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25198:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":80764,"name":"int","nodeType":"ElementaryTypeName","src":"25198:3:109","typeDescriptions":{}}},"id":80770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25198:29:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25185:42:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":80772,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25184:44:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"arguments":[{"id":80775,"name":"openPrice","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80701,"src":"25235:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":80774,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25231:3:109","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":80773,"name":"int","nodeType":"ElementaryTypeName","src":"25231:3:109","typeDescriptions":{}}},"id":80776,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"25231:14:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25184:61:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25180:65:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":80779,"nodeType":"ExpressionStatement","src":"25180:65:109"},{"expression":{"id":80792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":80780,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80710,"src":"25256:1:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":80783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80781,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80710,"src":"25260:1:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":80782,"name":"minPnlP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80738,"src":"25264:7:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25260:11:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":80787,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80785,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80710,"src":"25284:1:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":80786,"name":"maxPnlP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80749,"src":"25288:7:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25284:11:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":80789,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80710,"src":"25308:1:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":80790,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"25284:25:109","trueExpression":{"id":80788,"name":"maxPnlP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80749,"src":"25298:7:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":80791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"25260:49:109","trueExpression":{"id":80784,"name":"minPnlP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80738,"src":"25274:7:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25256:53:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":80793,"nodeType":"ExpressionStatement","src":"25256:53:109"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_currentPercentProfit","nameLocation":"24804:21:109","parameters":{"id":80708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80701,"mutability":"mutable","name":"openPrice","nameLocation":"24841:9:109","nodeType":"VariableDeclaration","scope":80795,"src":"24836:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80700,"name":"uint","nodeType":"ElementaryTypeName","src":"24836:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":80703,"mutability":"mutable","name":"currentPrice","nameLocation":"24866:12:109","nodeType":"VariableDeclaration","scope":80795,"src":"24861:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80702,"name":"uint","nodeType":"ElementaryTypeName","src":"24861:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":80705,"mutability":"mutable","name":"buy","nameLocation":"24894:3:109","nodeType":"VariableDeclaration","scope":80795,"src":"24889:8:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":80704,"name":"bool","nodeType":"ElementaryTypeName","src":"24889:4:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":80707,"mutability":"mutable","name":"leverage","nameLocation":"24913:8:109","nodeType":"VariableDeclaration","scope":80795,"src":"24908:13:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80706,"name":"uint","nodeType":"ElementaryTypeName","src":"24908:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24825:103:109"},"returnParameters":{"id":80711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80710,"mutability":"mutable","name":"p","nameLocation":"24955:1:109","nodeType":"VariableDeclaration","scope":80795,"src":"24951:5:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":80709,"name":"int","nodeType":"ElementaryTypeName","src":"24951:3:109","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24950:7:109"},"scope":80828,"stateMutability":"pure","virtual":false,"visibility":"private"},{"id":80827,"nodeType":"FunctionDefinition","src":"25325:238:109","nodes":[],"body":{"id":80826,"nodeType":"Block","src":"25424:139:109","nodes":[],"statements":[{"assignments":[80807],"declarations":[{"constant":false,"id":80807,"mutability":"mutable","name":"priceDiff","nameLocation":"25440:9:109","nodeType":"VariableDeclaration","scope":80826,"src":"25435:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80806,"name":"uint","nodeType":"ElementaryTypeName","src":"25435:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":80816,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80813,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80808,"name":"_price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80797,"src":"25453:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":80809,"name":"_spreadP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80799,"src":"25462:8:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25453:17:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":80811,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25452:19:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":80812,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25474:3:109","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"25452:25:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":80814,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":78339,"src":"25480:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25452:38:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25435:55:109"},{"expression":{"condition":{"id":80817,"name":"_long","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80801,"src":"25508:5:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80821,"name":"_price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80797,"src":"25537:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":80822,"name":"priceDiff","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80807,"src":"25546:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25537:18:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":80824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"25508:47:109","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":80820,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":80818,"name":"_price","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80797,"src":"25516:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":80819,"name":"priceDiff","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":80807,"src":"25525:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25516:18:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":80805,"id":80825,"nodeType":"Return","src":"25501:54:109"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_marketExecutionPrice","nameLocation":"25334:21:109","parameters":{"id":80802,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80797,"mutability":"mutable","name":"_price","nameLocation":"25361:6:109","nodeType":"VariableDeclaration","scope":80827,"src":"25356:11:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80796,"name":"uint","nodeType":"ElementaryTypeName","src":"25356:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":80799,"mutability":"mutable","name":"_spreadP","nameLocation":"25374:8:109","nodeType":"VariableDeclaration","scope":80827,"src":"25369:13:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80798,"name":"uint","nodeType":"ElementaryTypeName","src":"25369:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":80801,"mutability":"mutable","name":"_long","nameLocation":"25389:5:109","nodeType":"VariableDeclaration","scope":80827,"src":"25384:10:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":80800,"name":"bool","nodeType":"ElementaryTypeName","src":"25384:4:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25355:40:109"},"returnParameters":{"id":80805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80804,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":80827,"src":"25418:4:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":80803,"name":"uint","nodeType":"ElementaryTypeName","src":"25418:4:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25417:6:109"},"scope":80828,"stateMutability":"pure","virtual":false,"visibility":"private"}],"abstract":false,"baseContracts":[{"baseName":{"id":78330,"name":"Initializable","nodeType":"IdentifierPath","referencedDeclaration":43537,"src":"347:13:109"},"id":78331,"nodeType":"InheritanceSpecifier","src":"347:13:109"},{"baseName":{"id":78332,"name":"ICallbacks","nodeType":"IdentifierPath","referencedDeclaration":88257,"src":"362:10:109"},"id":78333,"nodeType":"InheritanceSpecifier","src":"362:10:109"}],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[80828,88257,43537],"name":"TradingCallbacks","nameLocation":"327:16:109","scope":80829,"usedErrors":[]}],"license":"MIT"},"id":109}
1
+ {"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"closeTradeMarketCallback","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"isPnl","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeLimitCloseOrderCallback","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"isPnl","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"executeLimitOpenOrderCallback","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"spreadP","type":"uint256","internalType":"uint256"},{"name":"isPnl","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[{"name":"_storageT","type":"address","internalType":"address"},{"name":"_pairInfos","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"liqFeeP","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"liqTotalFeeP","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"openTradeMarketCallback","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"spreadP","type":"uint256","internalType":"uint256"},{"name":"isPnl","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"pairInfos","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPairInfos"}],"stateMutability":"view"},{"type":"function","name":"setFeeP","inputs":[{"name":"_liqFeeP","type":"uint256","internalType":"uint256"},{"name":"_liqTotalFeeP","type":"uint256","internalType":"uint256"},{"name":"_vaultFeeP","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"storageT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ITradingStorage"}],"stateMutability":"view"},{"type":"function","name":"transferFromVault","inputs":[{"name":"_trader","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateMarginCallback","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"isPnl","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateSlCallback","inputs":[{"name":"orderId","type":"uint256","internalType":"uint256"},{"name":"price","type":"uint256","internalType":"uint256"},{"name":"isPnl","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"vaultFeeP","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"AddressUpdated","inputs":[{"name":"name","type":"string","indexed":false,"internalType":"string"},{"name":"a","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Done","inputs":[{"name":"done","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"FeeUpdated","inputs":[{"name":"_vaultFeeP","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_liqFeeP","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_liqTotalFeeP","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"LimitExecuted","inputs":[{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"limitIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"t","type":"tuple","indexed":false,"internalType":"struct ITradingStorage.Trade","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"initialPosToken","type":"uint256","internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]},{"name":"orderType","type":"uint8","indexed":false,"internalType":"enum ITradingStorage.LimitOrder"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"percentProfit","type":"int256","indexed":false,"internalType":"int256"},{"name":"usdcSentToTrader","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"isPnl","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarginUpdated","inputs":[{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newSl","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"MarketExecuted","inputs":[{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"t","type":"tuple","indexed":false,"internalType":"struct ITradingStorage.Trade","components":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"initialPosToken","type":"uint256","internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","internalType":"uint256"},{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"tp","type":"uint256","internalType":"uint256"},{"name":"sl","type":"uint256","internalType":"uint256"},{"name":"timestamp","type":"uint256","internalType":"uint256"}]},{"name":"open","type":"bool","indexed":false,"internalType":"bool"},{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"positionSizeUSDC","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"percentProfit","type":"int256","indexed":false,"internalType":"int256"},{"name":"usdcSentToTrader","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"isPnl","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"MarketOpenCanceled","inputs":[{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Pause","inputs":[{"name":"paused","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"SlUpdated","inputs":[{"name":"orderId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"trader","type":"address","indexed":true,"internalType":"address"},{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newSl","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615d9180620000f36000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806369d017d51161008c578063962e1f0911610066578063962e1f09146101cc578063a875fc6b146101df578063c4493e37146101f2578063da8ddc74146101fb57600080fd5b806369d017d51461019957806374cbe6ee146101b05780638246cd19146101b957600080fd5b806345ac0f9a116100c857806345ac0f9a1461014d578063484aabb114610160578063485cc955146101735780634ec0e8891461018657600080fd5b80631346b0ff146100ef5780631410f75b1461011f57806316fff07414610134575b600080fd5b600154610102906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61013261012d36600461581b565b61020e565b005b600054610102906201000090046001600160a01b031681565b61013261015b3660046157ef565b61092d565b61013261016e3660046157b6565b610a07565b610132610181366004615319565b611a11565b6101326101943660046157b6565b611b6c565b6101a260035481565b604051908152602001610116565b6101a260025481565b6101326101c73660046157b6565b61252a565b6101326101da3660046157b6565b6128ee565b6101326101ed36600461581b565b612ff4565b6101a260045481565b610132610209366004615352565b613a35565b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561025c57600080fd5b505afa158015610270573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029491906152f5565b6001600160a01b0316336001600160a01b0316146102cd5760405162461bcd60e51b81526004016102c490615978565b60405180910390fd5b6000805460405163d5dabd7560e01b815260048101879052620100009091046001600160a01b03169063d5dabd75906024016101c06040518083038186803b15801561031857600080fd5b505afa15801561032c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035091906155ad565b90508060200151600014156103655750610927565b60008160000151905060008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b1580156103bd57600080fd5b505afa1580156103d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f591906152f5565b90506000816001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561043257600080fd5b505afa158015610446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046a91906152f5565b60208401516040516369d4bda360e01b81529192506001600160a01b038316916369d4bda3916104a09160040190815260200190565b60206040518083038186803b1580156104b857600080fd5b505afa1580156104cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f0919061537e565b156105c557600154602084015160c085015160e086015160808701516000946001600160a01b0316936380242e51938d939192909161052f9190613c6b565b6040516001600160e01b031960e087901b16815260048101949094526024840192909252151560448301526064820152881515608482015260a40160206040518083038186803b15801561058257600080fd5b505afa158015610596573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ba91906153b8565b60a0850152506105da565b6105d487878560c00151613c90565b60a08401525b60006402540be4006064866060015187604001516105f89190615c93565b6106029190615bfa565b61060c9190615bfa565b905087158061065157508360c0015161063a5780856040015161062f9190615cb2565b8460a0015110610651565b80856040015161064a9190615bb4565b8460a00151115b806106905750600084610100015111801561069057508360c00151610682578361010001518460a001511115610690565b8361010001518460a0015110155b806106cf575060008461012001511180156106cf57508360c001516106c1578361012001518460a0015110156106cf565b8361012001518460a0015111155b8061078257506000548451602086015160e08701516080880151620100009094046001600160a01b03169363c45cceb693929161070c9190613c6b565b8860c001516040518563ffffffff1660e01b81526004016107309493929190615950565b60206040518083038186803b15801561074857600080fd5b505afa15801561075c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610780919061537e565b155b1561085857600054845160808601516040516345c19a8d60e11b8152620100009093046001600160a01b039081166004850181905292166024840152604483015290638b83351a90606401600060405180830381600087803b1580156107e757600080fd5b505af11580156107fb573d6000803e3d6000fd5b5050505083600001516001600160a01b03167f4b2ef4d80a0964a9a8f43256d8111558389b384d2029743c1eeb6950b14d9c658a866020015160405161084b929190918252602082015260400190565b60405180910390a26108b7565b60006108648588613ce2565b90507f5c00d8b4c6c92b4922d1bd61ef722ec9a29169acb95d956676b07be6a6643eea8a8260018460a0015185606001516000808e6040516108ad989796959493929190615a5f565b60405180910390a1505b600054604051630195728b60e71b8152600481018b905260016024820152620100009091046001600160a01b03169063cab9458090604401600060405180830381600087803b15801561090957600080fd5b505af115801561091d573d6000803e3d6000fd5b5050505050505050505b50505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561097b57600080fd5b505afa15801561098f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b391906152f5565b6001600160a01b0316336001600160a01b0316146109f95760405162461bcd60e51b8152602060048201526003602482015262475f4f60e81b60448201526064016102c4565b600292909255600355600455565b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015610a5557600080fd5b505afa158015610a69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8d91906152f5565b6001600160a01b0316336001600160a01b031614610abd5760405162461bcd60e51b81526004016102c490615978565b6000805460405163363df41d60e11b815260048101869052620100009091046001600160a01b031690636c7be83a9060240160806040518083038186803b158015610b0757600080fd5b505afa158015610b1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3f9190615479565b600080548251602084015160408086015190516351d407ff60e11b81529596509394620100009093046001600160a01b03169363a3a80ffe93610b879392919060040161592f565b6101606040518083038186803b158015610ba057600080fd5b505afa158015610bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd89190615747565b905060008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015610c2957600080fd5b505afa158015610c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6191906152f5565b9050610c956040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8515801590610ca8575060008360e00151115b1561188d5760008054845160208601516040808801519051638c8ff1d560e01b8152620100009094046001600160a01b031693638c8ff1d593610cf1939092909160040161592f565b60a06040518083038186803b158015610d0957600080fd5b505afa158015610d1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4191906156c1565b9050826001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015610d7c57600080fd5b505afa158015610d90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db491906152f5565b6001600160a01b03166324abd3fb85602001516040518263ffffffff1660e01b8152600401610de591815260200190565b60206040518083038186803b158015610dfd57600080fd5b505afa158015610e11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e35919061537e565b610e3f5786610ed4565b600085606001516003811115610e5757610e57615d12565b14610ecd57600185606001516003811115610e7457610e74615d12565b14610e7f5786610ed4565b8360c001518015610e9857508360a00151846101200151115b80610eb857508360c00151158015610eb857508360a00151846101200151105b610ec757836101200151610ed4565b86610ed4565b8361010001515b826000018181525050826001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1657600080fd5b505afa158015610f2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4e91906152f5565b60a0850151835160c087015160e088015160208901516040516354d7dccb60e01b8152600481019590955260248501939093529015156044840152606483015260848201526001600160a01b0391909116906354d7dccb9060a40160206040518083038186803b158015610fc157600080fd5b505afa158015610fd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff991906153b8565b6020830152600060028660600151600381111561101857611018615d12565b1415611135576001548551602087015160408089015160a08a015160c08b015160608c015160e08d01519451636bc84d5960e01b81526001600160a01b0397881660048201526024810196909652604486019390935260648501919091521515608484015260a483015260c48201526000929190911690636bc84d599060e40160206040518083038186803b1580156110b057600080fd5b505afa1580156110c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e891906153b8565b90508560c001516110fc5780891015611101565b808911155b61110c57600061112a565b606460025487606001516111209190615c93565b61112a9190615bfa565b60808501525061130d565b60008660600151600381111561114d5761114d615d12565b14801561115f57506000856101000151115b801561118757508460c0015161117d57846101000151881115611187565b8461010001518810155b806111df57506001866060015160038111156111a5576111a5615d12565b1480156111b757506000856101200151115b80156111df57508460c001516111d5578461012001518810156111df565b8461012001518811155b6111ea576000611307565b6402540be4006064856001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561122b57600080fd5b505afa15801561123f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126391906152f5565b6001600160a01b031663649a648888602001516040518263ffffffff1660e01b815260040161129491815260200190565b60206040518083038186803b1580156112ac57600080fd5b505afa1580156112c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e491906153b8565b87606001516112f39190615c93565b6112fd9190615bfa565b6113079190615bfa565b60808401525b60028660600151600381111561132557611325615d12565b148015611336575060008360800151115b156114f857611380858460200151876060015186608001516002546002546003546113619190615cb2565b89608001516113709190615c93565b61137a9190615bfa565b8c6145a0565b9050836001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b1580156113bb57600080fd5b505afa1580156113cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f391906152f5565b6001600160a01b031663afc329ac604051806080016040528089600001516001600160a01b0316815260200189602001518152602001896040015181526020018960600151600381111561144957611449615d12565b81525085608001516040518363ffffffff1660e01b815260040161146e929190615a44565b600060405180830381600087803b15801561148857600080fd5b505af115801561149c573d6000803e3d6000fd5b505050507fbf3d234454deff88435a11abb8501124ff9e6923fd2fdfc730d83474b6ffbe2c898987896060015187600001518a606001518960200151888f6040516114ef99989796959493929190615aad565b60405180910390a15b60028660600151600381111561151057611510615d12565b14158015611522575060008360800151115b1561188a576298968083608001511161153f578260800151611544565b629896805b6080840152602083015160608601516064916402540be400916115679190615c0e565b6115719190615bcc565b61157b9190615bcc565b6040840181905260001380156115a55750606085015160408401516115a290600019615c0e565b12155b6116e8576402540be4006064856001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156115ea57600080fd5b505afa1580156115fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162291906152f5565b6001600160a01b031663836a341a88602001516040518263ffffffff1660e01b815260040161165391815260200190565b60206040518083038186803b15801561166b57600080fd5b505afa15801561167f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a391906153b8565b604086015160e089015160608a01516116bb91613c6b565b6116c59190615b73565b6116cf9190615c93565b6116d99190615bfa565b6116e39190615bfa565b6116eb565b60005b8360600181815250506117128584602001518760600151866080015187606001518c6145a0565b9050836001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b15801561174d57600080fd5b505afa158015611761573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178591906152f5565b6001600160a01b031663afc329ac604051806080016040528089600001516001600160a01b031681526020018960200151815260200189604001518152602001896060015160038111156117db576117db615d12565b81525085608001516040518363ffffffff1660e01b8152600401611800929190615a44565b600060405180830381600087803b15801561181a57600080fd5b505af115801561182e573d6000803e3d6000fd5b505050507fbf3d234454deff88435a11abb8501124ff9e6923fd2fdfc730d83474b6ffbe2c898987896060015187600001518a606001518960200151888f60405161188199989796959493929190615aad565b60405180910390a15b50505b816001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b1580156118c657600080fd5b505afa1580156118da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fe91906152f5565b6001600160a01b031663bf654d2b604051806080016040528087600001516001600160a01b0316815260200187602001518152602001876040015181526020018760600151600381111561195457611954615d12565b8152506040518263ffffffff1660e01b81526004016119739190615a36565b600060405180830381600087803b15801561198d57600080fd5b505af11580156119a1573d6000803e3d6000fd5b5050600054604051637ada848360e01b8152600481018b9052620100009091046001600160a01b03169250637ada84839150602401600060405180830381600087803b1580156119f057600080fd5b505af1158015611a04573d6000803e3d6000fd5b5050505050505050505050565b600054610100900460ff1615808015611a315750600054600160ff909116105b80611a4b5750303b158015611a4b575060005460ff166001145b611aae5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102c4565b6000805460ff191660011790558015611ad1576000805461ff0019166101001790555b6000805462010000600160b01b031916620100006001600160a01b038681169190910291909117909155600180546001600160a01b03191691841691909117905560146004556005600255600a6003558015611b67576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015611bba57600080fd5b505afa158015611bce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf291906152f5565b6001600160a01b0316336001600160a01b031614611c225760405162461bcd60e51b81526004016102c490615978565b60008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015611c7157600080fd5b505afa158015611c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca991906152f5565b6040516368fb329760e11b8152600481018690529091506000906001600160a01b0383169063d1f6652e906024016101006040518083038186803b158015611cf057600080fd5b505afa158015611d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2891906154fc565b600080548251602084015160408086015190516351d407ff60e11b81529596509394620100009093046001600160a01b03169363a3a80ffe93611d709392919060040161592f565b6101606040518083038186803b158015611d8957600080fd5b505afa158015611d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc19190615747565b9050600082606001516001811115611ddb57611ddb615d12565b1415611f5257600054815160808401516040516345c19a8d60e11b81526001600160a01b0392831660048201526201000090930490911660248301819052604483019190915290638b83351a90606401600060405180830381600087803b158015611e4557600080fd5b505af1158015611e59573d6000803e3d6000fd5b50505050600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015611eab57600080fd5b505afa158015611ebf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee391906152f5565b81516080840151604051635a65ca9160e01b81526001600160a01b0392831660048201526024810191909152911690635a65ca9190604401600060405180830381600087803b158015611f3557600080fd5b505af1158015611f49573d6000803e3d6000fd5b50505050612357565b60008511611f8f5760405162461bcd60e51b815260206004820152600a6024820152695a45524f5f505249434560b01b60448201526064016102c4565b6000836001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015611fca57600080fd5b505afa158015611fde573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200291906152f5565b60a083015160c084015160e085015160208601516040516354d7dccb60e01b81526004810194909452602484018b90529115156044840152606483015260848201526001600160a01b0391909116906354d7dccb9060a40160206040518083038186803b15801561207257600080fd5b505afa158015612086573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120aa91906153b8565b9050600060646402540be4008385606001516120c69190615c0e565b6120d09190615bcc565b6120da9190615bcc565b905060008112156121f9576064856001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561212057600080fd5b505afa158015612134573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215891906152f5565b602085015160a0870151604051632b1cbe9d60e01b8152600481019290925260248201526001600160a01b039190911690632b1cbe9d9060440160206040518083038186803b1580156121aa57600080fd5b505afa1580156121be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e291906153b8565b6121ec9083615c0e565b6121f69190615bcc565b90505b6064612206605082615cb2565b84606001516122159190615c0e565b61221f9190615bcc565b81846060015161222f9190615b73565b136122645760405162461bcd60e51b81526020600482015260056024820152642bafaa2fa160d91b60448201526064016102c4565b5050600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b1580156122b457600080fd5b505afa1580156122c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ec91906152f5565b8151608084015160405163352b159160e11b81526001600160a01b0392831660048201526024810191909152911690636a562b2290604401600060405180830381600087803b15801561233e57600080fd5b505af1158015612352573d6000803e3d6000fd5b505050505b60c08201511561245157600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b1580156123af57600080fd5b505afa1580156123c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e791906152f5565b60c0830151604051635b898b7560e01b81526004810191909152600060248201526001600160a01b039190911690635b898b7590604401600060405180830381600087803b15801561243857600080fd5b505af115801561244c573d6000803e3d6000fd5b505050505b6001548151602083015160408085015160c08601519151630735e1cd60e11b81526001600160a01b0390951694630e6bc39a94612495949093909291600401615950565b600060405180830381600087803b1580156124af57600080fd5b505af11580156124c3573d6000803e3d6000fd5b505060405163c61904a160e01b8152600481018990526001600160a01b038616925063c61904a191506024015b600060405180830381600087803b15801561250a57600080fd5b505af115801561251e573d6000803e3d6000fd5b50505050505050505050565b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561257857600080fd5b505afa15801561258c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b091906152f5565b6001600160a01b0316336001600160a01b0316146125e05760405162461bcd60e51b81526004016102c490615978565b60008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561262f57600080fd5b505afa158015612643573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266791906152f5565b6040516337a3dba360e01b8152600481018690529091506000906001600160a01b038316906337a3dba39060240160c06040518083038186803b1580156126ad57600080fd5b505afa1580156126c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e59190615628565b600080548251602084015160408086015190516351d407ff60e11b81529596509394620100009093046001600160a01b03169363a3a80ffe9361272d9392919060040161592f565b6101606040518083038186803b15801561274657600080fd5b505afa15801561275a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277e9190615747565b9050841580159061279a5750816080015115158160c001511515145b80156127ad575081606001518160a00151145b80156127d357508060c001516127ca57848260a0015110156127d3565b848260a0015111155b156128c1576000548251602084015160408086015160a0870151915163a354418160e01b81526001600160a01b03948516600482015260248101939093526044830152606482015262010000909204169063a354418190608401600060405180830381600087803b15801561284757600080fd5b505af115801561285b573d6000803e3d6000fd5b5050835160208086015160408088015160a089015182518e8152948501939093529083015260608201526001600160a01b0390911692507fe57d6aa2ba102529f6f4f17498f4a95f866a5513e746e676e6cd037c991b6fe9915060800160405180910390a25b6040516361417a4360e01b8152600481018790526001600160a01b038416906361417a43906024016124f0565b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561293c57600080fd5b505afa158015612950573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297491906152f5565b6001600160a01b0316336001600160a01b0316146129a45760405162461bcd60e51b81526004016102c490615978565b6000805460405163d5dabd7560e01b815260048101869052620100009091046001600160a01b03169063d5dabd75906024016101c06040518083038186803b1580156129ef57600080fd5b505afa158015612a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2791906155ad565b6000805482518051602082015160409283015192516351d407ff60e11b81529596509394620100009093046001600160a01b03169363a3a80ffe93612a6f939060040161592f565b6101606040518083038186803b158015612a8857600080fd5b505afa158015612a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac09190615747565b9050612af46040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8415801590612b07575060008260e00151115b15612f615760008054835160208501516040808701519051638c8ff1d560e01b8152620100009094046001600160a01b031693638c8ff1d593612b50939092909160040161592f565b60a06040518083038186803b158015612b6857600080fd5b505afa158015612b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ba091906156c1565b905060008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015612bf157600080fd5b505afa158015612c05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2991906152f5565b9050806001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015612c6457600080fd5b505afa158015612c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9c91906152f5565b60a085015160c086015160e087015160208801516040516354d7dccb60e01b81526004810194909452602484018c90529115156044840152606483015260848201526001600160a01b0391909116906354d7dccb9060a40160206040518083038186803b158015612d0c57600080fd5b505afa158015612d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d4491906153b8565b602084018190528551606001516064916402540be40091612d659190615c0e565b612d6f9190615bcc565b612d799190615bcc565b604084018190526000138015612da457508451606001516040840151612da190600019615c0e565b12155b612dd057604083015160e0850151865160600151612dc191613c6b565b612dcb9190615b73565b612dd3565b60005b8360600181815250506000612f0585856020015188600001516060015160006402540be4006064886001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015612e3357600080fd5b505afa158015612e47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6b91906152f5565b6001600160a01b031663836a341a8d602001516040518263ffffffff1660e01b8152600401612e9c91815260200190565b60206040518083038186803b158015612eb457600080fd5b505afa158015612ec8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eec91906153b8565b8b60600151612efb9190615c93565b6113709190615bfa565b90507f5c00d8b4c6c92b4922d1bd61ef722ec9a29169acb95d956676b07be6a6643eea898660008b8a60000151606001518960200151878e604051612f51989796959493929190615a5f565b60405180910390a1505050612fb6565b81600001516001600160a01b03167f4b2ef4d80a0964a9a8f43256d8111558389b384d2029743c1eeb6950b14d9c65878460200151604051612fad929190918252602082015260400190565b60405180910390a25b60008054604051630195728b60e71b81526004810189905260248101929092526201000090046001600160a01b03169063cab94580906044016124f0565b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561304257600080fd5b505afa158015613056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307a91906152f5565b6001600160a01b0316336001600160a01b0316146130aa5760405162461bcd60e51b81526004016102c490615978565b6000805460405163363df41d60e11b815260048101879052620100009091046001600160a01b031690636c7be83a9060240160806040518083038186803b1580156130f457600080fd5b505afa158015613108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312c9190615479565b905060008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561317d57600080fd5b505afa158015613191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b591906152f5565b6001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b1580156131ed57600080fd5b505afa158015613201573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322591906152f5565b905084158015906132c45750600054825160208401516040808601519051636e6f99cd60e11b8152620100009094046001600160a01b03169363dcdf339a93613274939092909160040161592f565b60206040518083038186803b15801561328c57600080fd5b505afa1580156132a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c4919061537e565b156139575760008054835160208501516040808701519051632e21e28b60e21b8152620100009094046001600160a01b03169363b8878a2c9361330d939092909160040161592f565b6101806040518083038186803b15801561332657600080fd5b505afa15801561333a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061335e91906153d1565b905060008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b1580156133af57600080fd5b505afa1580156133c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133e791906152f5565b90506002845160208601516040808801519051636a6f32f560e11b81526001600160a01b0388169363d4de65ea9361342693919290919060040161592f565b60206040518083038186803b15801561343e57600080fd5b505afa158015613452573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613476919061539b565b600381111561348757613487615d12565b146134b15781608001516134a3578161010001518710156134d2565b8161010001518711156134d2565b81608001516134c8578161010001518711156134d2565b8161010001518710155b801561358457506000548251602084015160a08501516060860151620100009094046001600160a01b03169363c45cceb69392916135109190613c6b565b86608001516040518563ffffffff1660e01b81526004016135349493929190615950565b60206040518083038186803b15801561354c57600080fd5b505afa158015613560573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613584919061537e565b15613954576000879050816001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156135c757600080fd5b505afa1580156135db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135ff91906152f5565b6001600160a01b03166369d4bda384602001516040518263ffffffff1660e01b815260040161363091815260200190565b60206040518083038186803b15801561364857600080fd5b505afa15801561365c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613680919061537e565b15613753576001546020840151608085015160a086015160608701516000946001600160a01b0316936380242e51938e93919290916136bf9190613c6b565b6040516001600160e01b031960e087901b16815260048101949094526024840192909252151560448301526064820152891515608482015260a40160206040518083038186803b15801561371257600080fd5b505afa158015613726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061374a91906153b8565b98506137659050565b61376288888560800151613c90565b97505b82608001516137b7576402540be400606484610120015185610100015161378c9190615c93565b6137969190615bfa565b6137a09190615bfa565b8361010001516137b09190615cb2565b88106137fc565b6402540be40060648461012001518561010001516137d59190615c93565b6137df9190615bfa565b6137e99190615bfa565b8361010001516137f99190615bb4565b88115b61395257600061388160405180610160016040528086600001516001600160a01b03168152602001866020015181526020016000815260200160008152602001866060015181526020018b81526020018660800151151581526020018660a0015181526020018660c0015181526020018660e001518152602001600081525088613ce2565b60005485516020870151604080890151905163b4b0f56760e01b8152949550620100009093046001600160a01b03169363b4b0f567936138c593929160040161592f565b600060405180830381600087803b1580156138df57600080fd5b505af11580156138f3573d6000803e3d6000fd5b505050507fbf3d234454deff88435a11abb8501124ff9e6923fd2fdfc730d83474b6ffbe2c8a87604001518360038560a0015186606001518a6101000151898f60405161394899989796959493929190615aad565b60405180910390a1505b505b50505b806001600160a01b031663bf654d2b604051806080016040528085600001516001600160a01b031681526020018560200151815260200185604001518152602001856060015160038111156139ae576139ae615d12565b8152506040518263ffffffff1660e01b81526004016139cd9190615a36565b600060405180830381600087803b1580156139e757600080fd5b505af11580156139fb573d6000803e3d6000fd5b5050600054604051637ada848360e01b8152600481018a9052620100009091046001600160a01b03169250637ada848391506024016124f0565b600081118015613b4b5750600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015613a8e57600080fd5b505afa158015613aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ac691906152f5565b6001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b158015613afe57600080fd5b505afa158015613b12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b3691906152f5565b6001600160a01b0316336001600160a01b0316145b613b7d5760405162461bcd60e51b8152602060048201526003602482015262455f4f60e81b60448201526064016102c4565b600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015613bcb57600080fd5b505afa158015613bdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c0391906152f5565b60405163352b159160e11b81526001600160a01b038481166004830152602482018490529190911690636a562b2290604401600060405180830381600087803b158015613c4f57600080fd5b505af1158015613c63573d6000803e3d6000fd5b505050505050565b60006402540be400613c7d8385615c93565b613c879190615bfa565b90505b92915050565b6000806402540be4006064613ca58688615c93565b613caf9190615bfa565b613cb99190615bfa565b905082613ccf57613cca8186615cb2565b613cd9565b613cd98186615bb4565b95945050505050565b613d4a60405180610160016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081525090565b60008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015613d9957600080fd5b505afa158015613dad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dd191906152f5565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015613e0957600080fd5b505afa158015613e1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e4191906152f5565b42610140860152905082613f2b576000548451602086015160e08701516080880151620100009094046001600160a01b031693632a9a9667939291613e869190613c6b565b60c08901516040516001600160e01b031960e087901b1681526001600160a01b039094166004850152602484019290925260448301526001606483018190526084830152151560a482015260c401602060405180830381600087803b158015613eee57600080fd5b505af1158015613f02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f2691906153b8565b613f2e565b60005b84608001818151613f3f9190615cb2565b91508181525050600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015613f9457600080fd5b505afa158015613fa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fcc91906152f5565b6001600160a01b03166314269687613ff58660e001518760800151613c6b90919063ffffffff16565b6040518263ffffffff1660e01b815260040161401391815260200190565b600060405180830381600087803b15801561402d57600080fd5b505af1158015614041573d6000803e3d6000fd5b50505050600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b15801561409357600080fd5b505afa1580156140a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140cb91906152f5565b84516080860151604051635a65ca9160e01b81526001600160a01b0392831660048201526024810191909152911690635a65ca9190604401600060405180830381600087803b15801561411d57600080fd5b505af1158015614131573d6000803e3d6000fd5b505050506080840180516060860152600090819052548451602086015160405163292c161760e01b81526001600160a01b039283166004820152602481019190915262010000909204169063292c16179060440160206040518083038186803b15801561419d57600080fd5b505afa1580156141b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141d591906153b8565b60408086019190915260a085015160e086015161010087015160c08801516020890151945163daefa14560e01b81526004810194909452602484019290925260448301521515606482015260848101919091526001600160a01b0382169063daefa1459060a40160206040518083038186803b15801561425457600080fd5b505afa158015614268573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061428c91906153b8565b61010085015260a084015160e085015161012086015160c0870151602088015160405163109b8faf60e11b81526004810195909552602485019390935260448401919091521515606483015260848201526001600160a01b038216906321371f5e9060a40160206040518083038186803b15801561430957600080fd5b505afa15801561431d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061434191906153b8565b6101208501526001548451602086015160408088015160c08901519151630735e1cd60e11b81526001600160a01b0390951694630e6bc39a9461438b949093909291600401615950565b600060405180830381600087803b1580156143a557600080fd5b505af11580156143b9573d6000803e3d6000fd5b50505050806001600160a01b0316634ffe8aec85602001516143ec8760e001518860600151613c6b90919063ffffffff16565b60c08801516040516001600160e01b031960e086901b168152600481019390935260248301919091521515604482015260016064820152608401600060405180830381600087803b15801561444057600080fd5b505af1158015614454573d6000803e3d6000fd5b50505050600060029054906101000a90046001600160a01b03166001600160a01b031663f41450b5856040518060a001604052806144a38960e001518a60600151613c6b90919063ffffffff16565b815243602082018190526040808301919091526000606083015260015490516339c8591b60e11b81526080909201916001600160a01b0390911690637390b236906144f4908c908c90600401615995565b60206040518083038186803b15801561450c57600080fd5b505afa158015614520573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061454491906153b8565b815250866040518463ffffffff1660e01b8152600401614566939291906159b4565b600060405180830381600087803b15801561458057600080fd5b505af1158015614594573d6000803e3d6000fd5b50959695505050505050565b600080600080600060029054906101000a90046001600160a01b03166001600160a01b0316636b2d653f8b60000151886145e78e60e001518d613c6b90919063ffffffff16565b60208f01516040516001600160e01b031960e087901b1681526001600160a01b039094166004850152602484019290925260448301528815156064830152608482015260a481018c905260c481018b905260e4016040805180830381600087803b15801561465457600080fd5b505af1158015614668573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061468c9190615792565b60015491935091506000906001600160a01b03166368286d368c8b8d6146b28d89615bb4565b6040518563ffffffff1660e01b81526004016146d19493929190615a09565b606060405180830381600087803b1580156146eb57600080fd5b505af11580156146ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147239190615764565b6004549297509550915060009060649061473d9082615cb2565b6147478587615cb2565b6147519190615c93565b61475b9190615bfa565b9050600060028261476c8688615cb2565b6147769190615cb2565b6147809190615bfa565b6000549091506201000090046001600160a01b0316630fe1c91f82846147a6888a615cb2565b6147b09190615cb2565b6147ba9190615cb2565b836040518363ffffffff1660e01b81526004016147e1929190918252602082015260400190565b600060405180830381600087803b1580156147fb57600080fd5b505af115801561480f573d6000803e3d6000fd5b50505050600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b15801561486157600080fd5b505afa158015614875573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061489991906152f5565b6000546001600160a01b0391821691636a562b229162010000900416846148c0888a615cb2565b6148ca9190615cb2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561491057600080fd5b505af1158015614924573d6000803e3d6000fd5b505050506000871115614a1c57600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b15801561497f57600080fd5b505afa158015614993573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149b791906152f5565b8d5160405163352b159160e11b81526001600160a01b039182166004820152602481018a9052911690636a562b2290604401600060405180830381600087803b158015614a0357600080fd5b505af1158015614a17573d6000803e3d6000fd5b505050505b6000831215614b1f57600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015614a7357600080fd5b505afa158015614a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614aab91906152f5565b6001600160a01b0316635b898b75614ac285615cc9565b6040516001600160e01b031960e084901b168152600481019190915260016024820152604401600060405180830381600087803b158015614b0257600080fd5b505af1158015614b16573d6000803e3d6000fd5b50505050614c05565b600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015614b6d57600080fd5b505afa158015614b81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ba591906152f5565b6001600160a01b03166321e36150846040518263ffffffff1660e01b8152600401614bd291815260200190565b600060405180830381600087803b158015614bec57600080fd5b505af1158015614c00573d6000803e3d6000fd5b505050505b614c0f8286615cb2565b614c19908b615bb4565b861115614d2b57600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015614c6e57600080fd5b505afa158015614c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ca691906152f5565b6001600160a01b0316635b898b75614cbe8488615cb2565b614cc88d8a615cb2565b614cd29190615cb2565b6040516001600160e01b031960e084901b168152600481019190915260006024820152604401600060405180830381600087803b158015614d1257600080fd5b505af1158015614d26573d6000803e3d6000fd5b505050505b8315614e1757600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015614d7f57600080fd5b505afa158015614d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614db791906152f5565b6001600160a01b031663a056d2bb856040518263ffffffff1660e01b8152600401614de491815260200190565b600060405180830381600087803b158015614dfe57600080fd5b505af1158015614e12573d6000803e3d6000fd5b505050505b5050505050600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015614e6a57600080fd5b505afa158015614e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ea291906152f5565b6001600160a01b03166376079be3614ec78a60e0015189613c6b90919063ffffffff16565b6040518263ffffffff1660e01b8152600401614ee591815260200190565b600060405180830381600087803b158015614eff57600080fd5b505af1158015614f13573d6000803e3d6000fd5b50505050858860600151141561501057600054885160208a01516040808c015190516390d112b960e01b8152620100009094046001600160a01b0316936390d112b993614f66939092909160040161592f565b600060405180830381600087803b158015614f8057600080fd5b505af1158015614f94573d6000803e3d6000fd5b50506001548a5160208c01516040808e01519051639099939760e01b81526001600160a01b03909416955063909993979450614fd29360040161592f565b600060405180830381600087803b158015614fec57600080fd5b505af1158015615000573d6000803e3d6000fd5b5050505087606001519550615095565b600054885160208a01516040808c01519051631fb2681b60e11b81526001600160a01b0393841660048201526024810192909252604482015260648101899052620100009092041690633f64d03690608401600060405180830381600087803b15801561507c57600080fd5b505af1158015615090573d6000803e3d6000fd5b505050505b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b1580156150e357600080fd5b505afa1580156150f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061511b91906152f5565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561515357600080fd5b505afa158015615167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061518b91906152f5565b6001600160a01b0316634ffe8aec89602001516151b58b60e001518a613c6b90919063ffffffff16565b60c08c01516040516001600160e01b031960e086901b168152600481019390935260248301919091521515604482015260006064820152608401600060405180830381600087803b15801561520957600080fd5b505af115801561521d573d6000803e3d6000fd5b50505050509695505050505050565b805161523781615d28565b919050565b805161523781615d40565b80516002811061523757600080fd5b6000610160828403121561526957600080fd5b615271615b09565b905061527c8261522c565b81526020820151602082015260408201516040820152606082015160608201526080820151608082015260a082015160a08201526152bc60c0830161523c565b60c082015260e082015160e082015261010080830151818301525061012080830151818301525061014080830151818301525092915050565b60006020828403121561530757600080fd5b815161531281615d28565b9392505050565b6000806040838503121561532c57600080fd5b823561533781615d28565b9150602083013561534781615d28565b809150509250929050565b6000806040838503121561536557600080fd5b823561537081615d28565b946020939093013593505050565b60006020828403121561539057600080fd5b815161531281615d40565b6000602082840312156153ad57600080fd5b815161531281615d4e565b6000602082840312156153ca57600080fd5b5051919050565b600061018082840312156153e457600080fd5b6153ec615b41565b6153f58361522c565b81526020830151602082015260408301516040820152606083015160608201526154216080840161523c565b608082015260a0838101519082015260c0808401519082015260e08084015190820152610100808401519082015261012080840151908201526101408084015190820152610160928301519281019290925250919050565b60006080828403121561548b57600080fd5b6040516080810181811067ffffffffffffffff821117156154bc57634e487b7160e01b600052604160045260246000fd5b60405282516154ca81615d28565b80825250602083015160208201526040830151604082015260608301516154f081615d4e565b60608201529392505050565b600061010080838503121561551057600080fd5b6040519081019067ffffffffffffffff8211818310171561554157634e487b7160e01b600052604160045260246000fd5b816040528351915061555282615d28565b818152602084015160208201526040840151604082015261557560608501615247565b60608201526080840151608082015260a084015160a082015260c084015160c082015260e084015160e0820152809250505092915050565b60006101c082840312156155c057600080fd5b6040516080810181811067ffffffffffffffff821117156155f157634e487b7160e01b600052604160045260246000fd5b6040526155fe8484615256565b8152610160830151602082015261018083015160408201526101a090920151606083015250919050565b600060c0828403121561563a57600080fd5b60405160c0810181811067ffffffffffffffff8211171561566b57634e487b7160e01b600052604160045260246000fd5b604052825161567981615d28565b8082525060208301516020820152604083015160408201526060830151606082015260808301516156a981615d40565b608082015260a0928301519281019290925250919050565b600060a082840312156156d357600080fd5b60405160a0810181811067ffffffffffffffff8211171561570457634e487b7160e01b600052604160045260246000fd5b8060405250825181526020830151602082015260408301516040820152606083015161572f81615d40565b60608201526080928301519281019290925250919050565b6000610160828403121561575a57600080fd5b613c878383615256565b60008060006060848603121561577957600080fd5b8351925060208401519150604084015190509250925092565b600080604083850312156157a557600080fd5b505080516020909101519092909150565b6000806000606084860312156157cb57600080fd5b833592506020840135915060408401356157e481615d40565b809150509250925092565b60008060006060848603121561580457600080fd5b505081359360208301359350604090920135919050565b6000806000806080858703121561583157600080fd5b843593506020850135925060408501359150606085013561585181615d40565b939692955090935050565b6004811061587a57634e487b7160e01b600052602160045260246000fd5b9052565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c08101516158d060c084018215159052565b5060e081810151908301526101008082015190830152610120808201519083015261014090810151910152565b60018060a01b03815116825260208101516020830152604081015160408301526060810151611b67606084018261585c565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b03949094168452602084019290925260408301521515606082015260800190565b602080825260039082015262415f4f60e81b604082015260600190565b61018081016159a4828561587e565b8215156101608301529392505050565b61022081016159c3828661587e565b8351610160830152602084015161018083015260408401516101a0830152606084015115156101c08301526080909301516101e082015290151561020090910152919050565b6101c08101615a18828761587e565b8461016083015283610180830152826101a083015295945050505050565b60808101613c8a82846158fd565b60a08101615a5282856158fd565b8260808301529392505050565b8881526102408101615a74602083018a61587e565b9615156101808201526101a08101959095526101c08501939093526101e084019190915261020083015215156102209091015292915050565b898152602081018990526102608101615ac9604083018a61587e565b615ad76101a083018961585c565b6101c08201969096526101e0810194909452610200840192909252610220830152151561024090910152949350505050565b604051610160810167ffffffffffffffff81118282101715615b3b57634e487b7160e01b600052604160045260246000fd5b60405290565b604051610180810167ffffffffffffffff81118282101715615b3b57634e487b7160e01b600052604160045260246000fd5b600080821280156001600160ff1b0384900385131615615b9557615b95615ce6565b600160ff1b8390038412811615615bae57615bae615ce6565b50500190565b60008219821115615bc757615bc7615ce6565b500190565b600082615bdb57615bdb615cfc565b600160ff1b821460001984141615615bf557615bf5615ce6565b500590565b600082615c0957615c09615cfc565b500490565b60006001600160ff1b0381841382841380821686840486111615615c3457615c34615ce6565b600160ff1b6000871282811687830589121615615c5357615c53615ce6565b60008712925087820587128484161615615c6f57615c6f615ce6565b87850587128184161615615c8557615c85615ce6565b505050929093029392505050565b6000816000190483118215151615615cad57615cad615ce6565b500290565b600082821015615cc457615cc4615ce6565b500390565b6000600160ff1b821415615cdf57615cdf615ce6565b5060000390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6001600160a01b0381168114615d3d57600080fd5b50565b8015158114615d3d57600080fd5b60048110615d3d57600080fdfea2646970667358221220a58435d79562546e6504f6365421a157eddc5ac362b4aa6ca267674eb1a5983264736f6c63430008070033","sourceMap":"309:23581:112:-:0;;;848:53;;;;;;;;;-1:-1:-1;872:22:112;:20;:22::i;:::-;309:23581;;5939:280:24;6007:13;;;;;;;6006:14;5998:66;;;;;-1:-1:-1;;;5998:66:24;;216:2:154;5998:66:24;;;198:21:154;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:154;;;338:37;5998:66:24;;;;;;392:19:154;5998:66:24;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:24;-1:-1:-1;6125:30:24;;;;;;6174:28;;;564:36:154;;;6174:28:24;;;;;;552:2:154;6174:28:24;;;6074:139;5939:280::o;422:184:154:-;309:23581:112;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806369d017d51161008c578063962e1f0911610066578063962e1f09146101cc578063a875fc6b146101df578063c4493e37146101f2578063da8ddc74146101fb57600080fd5b806369d017d51461019957806374cbe6ee146101b05780638246cd19146101b957600080fd5b806345ac0f9a116100c857806345ac0f9a1461014d578063484aabb114610160578063485cc955146101735780634ec0e8891461018657600080fd5b80631346b0ff146100ef5780631410f75b1461011f57806316fff07414610134575b600080fd5b600154610102906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61013261012d36600461581b565b61020e565b005b600054610102906201000090046001600160a01b031681565b61013261015b3660046157ef565b61092d565b61013261016e3660046157b6565b610a07565b610132610181366004615319565b611a11565b6101326101943660046157b6565b611b6c565b6101a260035481565b604051908152602001610116565b6101a260025481565b6101326101c73660046157b6565b61252a565b6101326101da3660046157b6565b6128ee565b6101326101ed36600461581b565b612ff4565b6101a260045481565b610132610209366004615352565b613a35565b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561025c57600080fd5b505afa158015610270573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029491906152f5565b6001600160a01b0316336001600160a01b0316146102cd5760405162461bcd60e51b81526004016102c490615978565b60405180910390fd5b6000805460405163d5dabd7560e01b815260048101879052620100009091046001600160a01b03169063d5dabd75906024016101c06040518083038186803b15801561031857600080fd5b505afa15801561032c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035091906155ad565b90508060200151600014156103655750610927565b60008160000151905060008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b1580156103bd57600080fd5b505afa1580156103d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f591906152f5565b90506000816001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561043257600080fd5b505afa158015610446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046a91906152f5565b60208401516040516369d4bda360e01b81529192506001600160a01b038316916369d4bda3916104a09160040190815260200190565b60206040518083038186803b1580156104b857600080fd5b505afa1580156104cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f0919061537e565b156105c557600154602084015160c085015160e086015160808701516000946001600160a01b0316936380242e51938d939192909161052f9190613c6b565b6040516001600160e01b031960e087901b16815260048101949094526024840192909252151560448301526064820152881515608482015260a40160206040518083038186803b15801561058257600080fd5b505afa158015610596573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ba91906153b8565b60a0850152506105da565b6105d487878560c00151613c90565b60a08401525b60006402540be4006064866060015187604001516105f89190615c93565b6106029190615bfa565b61060c9190615bfa565b905087158061065157508360c0015161063a5780856040015161062f9190615cb2565b8460a0015110610651565b80856040015161064a9190615bb4565b8460a00151115b806106905750600084610100015111801561069057508360c00151610682578361010001518460a001511115610690565b8361010001518460a0015110155b806106cf575060008461012001511180156106cf57508360c001516106c1578361012001518460a0015110156106cf565b8361012001518460a0015111155b8061078257506000548451602086015160e08701516080880151620100009094046001600160a01b03169363c45cceb693929161070c9190613c6b565b8860c001516040518563ffffffff1660e01b81526004016107309493929190615950565b60206040518083038186803b15801561074857600080fd5b505afa15801561075c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610780919061537e565b155b1561085857600054845160808601516040516345c19a8d60e11b8152620100009093046001600160a01b039081166004850181905292166024840152604483015290638b83351a90606401600060405180830381600087803b1580156107e757600080fd5b505af11580156107fb573d6000803e3d6000fd5b5050505083600001516001600160a01b03167f4b2ef4d80a0964a9a8f43256d8111558389b384d2029743c1eeb6950b14d9c658a866020015160405161084b929190918252602082015260400190565b60405180910390a26108b7565b60006108648588613ce2565b90507f5c00d8b4c6c92b4922d1bd61ef722ec9a29169acb95d956676b07be6a6643eea8a8260018460a0015185606001516000808e6040516108ad989796959493929190615a5f565b60405180910390a1505b600054604051630195728b60e71b8152600481018b905260016024820152620100009091046001600160a01b03169063cab9458090604401600060405180830381600087803b15801561090957600080fd5b505af115801561091d573d6000803e3d6000fd5b5050505050505050505b50505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561097b57600080fd5b505afa15801561098f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b391906152f5565b6001600160a01b0316336001600160a01b0316146109f95760405162461bcd60e51b8152602060048201526003602482015262475f4f60e81b60448201526064016102c4565b600292909255600355600455565b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015610a5557600080fd5b505afa158015610a69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8d91906152f5565b6001600160a01b0316336001600160a01b031614610abd5760405162461bcd60e51b81526004016102c490615978565b6000805460405163363df41d60e11b815260048101869052620100009091046001600160a01b031690636c7be83a9060240160806040518083038186803b158015610b0757600080fd5b505afa158015610b1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3f9190615479565b600080548251602084015160408086015190516351d407ff60e11b81529596509394620100009093046001600160a01b03169363a3a80ffe93610b879392919060040161592f565b6101606040518083038186803b158015610ba057600080fd5b505afa158015610bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd89190615747565b905060008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015610c2957600080fd5b505afa158015610c3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6191906152f5565b9050610c956040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8515801590610ca8575060008360e00151115b1561188d5760008054845160208601516040808801519051638c8ff1d560e01b8152620100009094046001600160a01b031693638c8ff1d593610cf1939092909160040161592f565b60a06040518083038186803b158015610d0957600080fd5b505afa158015610d1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4191906156c1565b9050826001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015610d7c57600080fd5b505afa158015610d90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db491906152f5565b6001600160a01b03166324abd3fb85602001516040518263ffffffff1660e01b8152600401610de591815260200190565b60206040518083038186803b158015610dfd57600080fd5b505afa158015610e11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e35919061537e565b610e3f5786610ed4565b600085606001516003811115610e5757610e57615d12565b14610ecd57600185606001516003811115610e7457610e74615d12565b14610e7f5786610ed4565b8360c001518015610e9857508360a00151846101200151115b80610eb857508360c00151158015610eb857508360a00151846101200151105b610ec757836101200151610ed4565b86610ed4565b8361010001515b826000018181525050826001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1657600080fd5b505afa158015610f2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4e91906152f5565b60a0850151835160c087015160e088015160208901516040516354d7dccb60e01b8152600481019590955260248501939093529015156044840152606483015260848201526001600160a01b0391909116906354d7dccb9060a40160206040518083038186803b158015610fc157600080fd5b505afa158015610fd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff991906153b8565b6020830152600060028660600151600381111561101857611018615d12565b1415611135576001548551602087015160408089015160a08a015160c08b015160608c015160e08d01519451636bc84d5960e01b81526001600160a01b0397881660048201526024810196909652604486019390935260648501919091521515608484015260a483015260c48201526000929190911690636bc84d599060e40160206040518083038186803b1580156110b057600080fd5b505afa1580156110c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e891906153b8565b90508560c001516110fc5780891015611101565b808911155b61110c57600061112a565b606460025487606001516111209190615c93565b61112a9190615bfa565b60808501525061130d565b60008660600151600381111561114d5761114d615d12565b14801561115f57506000856101000151115b801561118757508460c0015161117d57846101000151881115611187565b8461010001518810155b806111df57506001866060015160038111156111a5576111a5615d12565b1480156111b757506000856101200151115b80156111df57508460c001516111d5578461012001518810156111df565b8461012001518811155b6111ea576000611307565b6402540be4006064856001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561122b57600080fd5b505afa15801561123f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126391906152f5565b6001600160a01b031663649a648888602001516040518263ffffffff1660e01b815260040161129491815260200190565b60206040518083038186803b1580156112ac57600080fd5b505afa1580156112c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e491906153b8565b87606001516112f39190615c93565b6112fd9190615bfa565b6113079190615bfa565b60808401525b60028660600151600381111561132557611325615d12565b148015611336575060008360800151115b156114f857611380858460200151876060015186608001516002546002546003546113619190615cb2565b89608001516113709190615c93565b61137a9190615bfa565b8c6145a0565b9050836001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b1580156113bb57600080fd5b505afa1580156113cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113f391906152f5565b6001600160a01b031663afc329ac604051806080016040528089600001516001600160a01b0316815260200189602001518152602001896040015181526020018960600151600381111561144957611449615d12565b81525085608001516040518363ffffffff1660e01b815260040161146e929190615a44565b600060405180830381600087803b15801561148857600080fd5b505af115801561149c573d6000803e3d6000fd5b505050507fbf3d234454deff88435a11abb8501124ff9e6923fd2fdfc730d83474b6ffbe2c898987896060015187600001518a606001518960200151888f6040516114ef99989796959493929190615aad565b60405180910390a15b60028660600151600381111561151057611510615d12565b14158015611522575060008360800151115b1561188a576298968083608001511161153f578260800151611544565b629896805b6080840152602083015160608601516064916402540be400916115679190615c0e565b6115719190615bcc565b61157b9190615bcc565b6040840181905260001380156115a55750606085015160408401516115a290600019615c0e565b12155b6116e8576402540be4006064856001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156115ea57600080fd5b505afa1580156115fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162291906152f5565b6001600160a01b031663836a341a88602001516040518263ffffffff1660e01b815260040161165391815260200190565b60206040518083038186803b15801561166b57600080fd5b505afa15801561167f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a391906153b8565b604086015160e089015160608a01516116bb91613c6b565b6116c59190615b73565b6116cf9190615c93565b6116d99190615bfa565b6116e39190615bfa565b6116eb565b60005b8360600181815250506117128584602001518760600151866080015187606001518c6145a0565b9050836001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b15801561174d57600080fd5b505afa158015611761573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061178591906152f5565b6001600160a01b031663afc329ac604051806080016040528089600001516001600160a01b031681526020018960200151815260200189604001518152602001896060015160038111156117db576117db615d12565b81525085608001516040518363ffffffff1660e01b8152600401611800929190615a44565b600060405180830381600087803b15801561181a57600080fd5b505af115801561182e573d6000803e3d6000fd5b505050507fbf3d234454deff88435a11abb8501124ff9e6923fd2fdfc730d83474b6ffbe2c898987896060015187600001518a606001518960200151888f60405161188199989796959493929190615aad565b60405180910390a15b50505b816001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b1580156118c657600080fd5b505afa1580156118da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fe91906152f5565b6001600160a01b031663bf654d2b604051806080016040528087600001516001600160a01b0316815260200187602001518152602001876040015181526020018760600151600381111561195457611954615d12565b8152506040518263ffffffff1660e01b81526004016119739190615a36565b600060405180830381600087803b15801561198d57600080fd5b505af11580156119a1573d6000803e3d6000fd5b5050600054604051637ada848360e01b8152600481018b9052620100009091046001600160a01b03169250637ada84839150602401600060405180830381600087803b1580156119f057600080fd5b505af1158015611a04573d6000803e3d6000fd5b5050505050505050505050565b600054610100900460ff1615808015611a315750600054600160ff909116105b80611a4b5750303b158015611a4b575060005460ff166001145b611aae5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102c4565b6000805460ff191660011790558015611ad1576000805461ff0019166101001790555b6000805462010000600160b01b031916620100006001600160a01b038681169190910291909117909155600180546001600160a01b03191691841691909117905560146004556005600255600a6003558015611b67576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015611bba57600080fd5b505afa158015611bce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf291906152f5565b6001600160a01b0316336001600160a01b031614611c225760405162461bcd60e51b81526004016102c490615978565b60008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015611c7157600080fd5b505afa158015611c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ca991906152f5565b6040516368fb329760e11b8152600481018690529091506000906001600160a01b0383169063d1f6652e906024016101006040518083038186803b158015611cf057600080fd5b505afa158015611d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2891906154fc565b600080548251602084015160408086015190516351d407ff60e11b81529596509394620100009093046001600160a01b03169363a3a80ffe93611d709392919060040161592f565b6101606040518083038186803b158015611d8957600080fd5b505afa158015611d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc19190615747565b9050600082606001516001811115611ddb57611ddb615d12565b1415611f5257600054815160808401516040516345c19a8d60e11b81526001600160a01b0392831660048201526201000090930490911660248301819052604483019190915290638b83351a90606401600060405180830381600087803b158015611e4557600080fd5b505af1158015611e59573d6000803e3d6000fd5b50505050600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015611eab57600080fd5b505afa158015611ebf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee391906152f5565b81516080840151604051635a65ca9160e01b81526001600160a01b0392831660048201526024810191909152911690635a65ca9190604401600060405180830381600087803b158015611f3557600080fd5b505af1158015611f49573d6000803e3d6000fd5b50505050612357565b60008511611f8f5760405162461bcd60e51b815260206004820152600a6024820152695a45524f5f505249434560b01b60448201526064016102c4565b6000836001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015611fca57600080fd5b505afa158015611fde573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061200291906152f5565b60a083015160c084015160e085015160208601516040516354d7dccb60e01b81526004810194909452602484018b90529115156044840152606483015260848201526001600160a01b0391909116906354d7dccb9060a40160206040518083038186803b15801561207257600080fd5b505afa158015612086573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120aa91906153b8565b9050600060646402540be4008385606001516120c69190615c0e565b6120d09190615bcc565b6120da9190615bcc565b905060008112156121f9576064856001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561212057600080fd5b505afa158015612134573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215891906152f5565b602085015160a0870151604051632b1cbe9d60e01b8152600481019290925260248201526001600160a01b039190911690632b1cbe9d9060440160206040518083038186803b1580156121aa57600080fd5b505afa1580156121be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e291906153b8565b6121ec9083615c0e565b6121f69190615bcc565b90505b6064612206605082615cb2565b84606001516122159190615c0e565b61221f9190615bcc565b81846060015161222f9190615b73565b136122645760405162461bcd60e51b81526020600482015260056024820152642bafaa2fa160d91b60448201526064016102c4565b5050600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b1580156122b457600080fd5b505afa1580156122c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122ec91906152f5565b8151608084015160405163352b159160e11b81526001600160a01b0392831660048201526024810191909152911690636a562b2290604401600060405180830381600087803b15801561233e57600080fd5b505af1158015612352573d6000803e3d6000fd5b505050505b60c08201511561245157600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b1580156123af57600080fd5b505afa1580156123c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e791906152f5565b60c0830151604051635b898b7560e01b81526004810191909152600060248201526001600160a01b039190911690635b898b7590604401600060405180830381600087803b15801561243857600080fd5b505af115801561244c573d6000803e3d6000fd5b505050505b6001548151602083015160408085015160c08601519151630735e1cd60e11b81526001600160a01b0390951694630e6bc39a94612495949093909291600401615950565b600060405180830381600087803b1580156124af57600080fd5b505af11580156124c3573d6000803e3d6000fd5b505060405163c61904a160e01b8152600481018990526001600160a01b038616925063c61904a191506024015b600060405180830381600087803b15801561250a57600080fd5b505af115801561251e573d6000803e3d6000fd5b50505050505050505050565b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561257857600080fd5b505afa15801561258c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b091906152f5565b6001600160a01b0316336001600160a01b0316146125e05760405162461bcd60e51b81526004016102c490615978565b60008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561262f57600080fd5b505afa158015612643573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061266791906152f5565b6040516337a3dba360e01b8152600481018690529091506000906001600160a01b038316906337a3dba39060240160c06040518083038186803b1580156126ad57600080fd5b505afa1580156126c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126e59190615628565b600080548251602084015160408086015190516351d407ff60e11b81529596509394620100009093046001600160a01b03169363a3a80ffe9361272d9392919060040161592f565b6101606040518083038186803b15801561274657600080fd5b505afa15801561275a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277e9190615747565b9050841580159061279a5750816080015115158160c001511515145b80156127ad575081606001518160a00151145b80156127d357508060c001516127ca57848260a0015110156127d3565b848260a0015111155b156128c1576000548251602084015160408086015160a0870151915163a354418160e01b81526001600160a01b03948516600482015260248101939093526044830152606482015262010000909204169063a354418190608401600060405180830381600087803b15801561284757600080fd5b505af115801561285b573d6000803e3d6000fd5b5050835160208086015160408088015160a089015182518e8152948501939093529083015260608201526001600160a01b0390911692507fe57d6aa2ba102529f6f4f17498f4a95f866a5513e746e676e6cd037c991b6fe9915060800160405180910390a25b6040516361417a4360e01b8152600481018790526001600160a01b038416906361417a43906024016124f0565b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561293c57600080fd5b505afa158015612950573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297491906152f5565b6001600160a01b0316336001600160a01b0316146129a45760405162461bcd60e51b81526004016102c490615978565b6000805460405163d5dabd7560e01b815260048101869052620100009091046001600160a01b03169063d5dabd75906024016101c06040518083038186803b1580156129ef57600080fd5b505afa158015612a03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2791906155ad565b6000805482518051602082015160409283015192516351d407ff60e11b81529596509394620100009093046001600160a01b03169363a3a80ffe93612a6f939060040161592f565b6101606040518083038186803b158015612a8857600080fd5b505afa158015612a9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac09190615747565b9050612af46040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b8415801590612b07575060008260e00151115b15612f615760008054835160208501516040808701519051638c8ff1d560e01b8152620100009094046001600160a01b031693638c8ff1d593612b50939092909160040161592f565b60a06040518083038186803b158015612b6857600080fd5b505afa158015612b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ba091906156c1565b905060008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015612bf157600080fd5b505afa158015612c05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2991906152f5565b9050806001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015612c6457600080fd5b505afa158015612c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9c91906152f5565b60a085015160c086015160e087015160208801516040516354d7dccb60e01b81526004810194909452602484018c90529115156044840152606483015260848201526001600160a01b0391909116906354d7dccb9060a40160206040518083038186803b158015612d0c57600080fd5b505afa158015612d20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d4491906153b8565b602084018190528551606001516064916402540be40091612d659190615c0e565b612d6f9190615bcc565b612d799190615bcc565b604084018190526000138015612da457508451606001516040840151612da190600019615c0e565b12155b612dd057604083015160e0850151865160600151612dc191613c6b565b612dcb9190615b73565b612dd3565b60005b8360600181815250506000612f0585856020015188600001516060015160006402540be4006064886001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015612e3357600080fd5b505afa158015612e47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6b91906152f5565b6001600160a01b031663836a341a8d602001516040518263ffffffff1660e01b8152600401612e9c91815260200190565b60206040518083038186803b158015612eb457600080fd5b505afa158015612ec8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eec91906153b8565b8b60600151612efb9190615c93565b6113709190615bfa565b90507f5c00d8b4c6c92b4922d1bd61ef722ec9a29169acb95d956676b07be6a6643eea898660008b8a60000151606001518960200151878e604051612f51989796959493929190615a5f565b60405180910390a1505050612fb6565b81600001516001600160a01b03167f4b2ef4d80a0964a9a8f43256d8111558389b384d2029743c1eeb6950b14d9c65878460200151604051612fad929190918252602082015260400190565b60405180910390a25b60008054604051630195728b60e71b81526004810189905260248101929092526201000090046001600160a01b03169063cab94580906044016124f0565b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561304257600080fd5b505afa158015613056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307a91906152f5565b6001600160a01b0316336001600160a01b0316146130aa5760405162461bcd60e51b81526004016102c490615978565b6000805460405163363df41d60e11b815260048101879052620100009091046001600160a01b031690636c7be83a9060240160806040518083038186803b1580156130f457600080fd5b505afa158015613108573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061312c9190615479565b905060008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561317d57600080fd5b505afa158015613191573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131b591906152f5565b6001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b1580156131ed57600080fd5b505afa158015613201573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061322591906152f5565b905084158015906132c45750600054825160208401516040808601519051636e6f99cd60e11b8152620100009094046001600160a01b03169363dcdf339a93613274939092909160040161592f565b60206040518083038186803b15801561328c57600080fd5b505afa1580156132a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132c4919061537e565b156139575760008054835160208501516040808701519051632e21e28b60e21b8152620100009094046001600160a01b03169363b8878a2c9361330d939092909160040161592f565b6101806040518083038186803b15801561332657600080fd5b505afa15801561333a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061335e91906153d1565b905060008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b1580156133af57600080fd5b505afa1580156133c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133e791906152f5565b90506002845160208601516040808801519051636a6f32f560e11b81526001600160a01b0388169363d4de65ea9361342693919290919060040161592f565b60206040518083038186803b15801561343e57600080fd5b505afa158015613452573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613476919061539b565b600381111561348757613487615d12565b146134b15781608001516134a3578161010001518710156134d2565b8161010001518711156134d2565b81608001516134c8578161010001518711156134d2565b8161010001518710155b801561358457506000548251602084015160a08501516060860151620100009094046001600160a01b03169363c45cceb69392916135109190613c6b565b86608001516040518563ffffffff1660e01b81526004016135349493929190615950565b60206040518083038186803b15801561354c57600080fd5b505afa158015613560573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613584919061537e565b15613954576000879050816001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b1580156135c757600080fd5b505afa1580156135db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135ff91906152f5565b6001600160a01b03166369d4bda384602001516040518263ffffffff1660e01b815260040161363091815260200190565b60206040518083038186803b15801561364857600080fd5b505afa15801561365c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613680919061537e565b15613753576001546020840151608085015160a086015160608701516000946001600160a01b0316936380242e51938e93919290916136bf9190613c6b565b6040516001600160e01b031960e087901b16815260048101949094526024840192909252151560448301526064820152891515608482015260a40160206040518083038186803b15801561371257600080fd5b505afa158015613726573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061374a91906153b8565b98506137659050565b61376288888560800151613c90565b97505b82608001516137b7576402540be400606484610120015185610100015161378c9190615c93565b6137969190615bfa565b6137a09190615bfa565b8361010001516137b09190615cb2565b88106137fc565b6402540be40060648461012001518561010001516137d59190615c93565b6137df9190615bfa565b6137e99190615bfa565b8361010001516137f99190615bb4565b88115b61395257600061388160405180610160016040528086600001516001600160a01b03168152602001866020015181526020016000815260200160008152602001866060015181526020018b81526020018660800151151581526020018660a0015181526020018660c0015181526020018660e001518152602001600081525088613ce2565b60005485516020870151604080890151905163b4b0f56760e01b8152949550620100009093046001600160a01b03169363b4b0f567936138c593929160040161592f565b600060405180830381600087803b1580156138df57600080fd5b505af11580156138f3573d6000803e3d6000fd5b505050507fbf3d234454deff88435a11abb8501124ff9e6923fd2fdfc730d83474b6ffbe2c8a87604001518360038560a0015186606001518a6101000151898f60405161394899989796959493929190615aad565b60405180910390a1505b505b50505b806001600160a01b031663bf654d2b604051806080016040528085600001516001600160a01b031681526020018560200151815260200185604001518152602001856060015160038111156139ae576139ae615d12565b8152506040518263ffffffff1660e01b81526004016139cd9190615a36565b600060405180830381600087803b1580156139e757600080fd5b505af11580156139fb573d6000803e3d6000fd5b5050600054604051637ada848360e01b8152600481018a9052620100009091046001600160a01b03169250637ada848391506024016124f0565b600081118015613b4b5750600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015613a8e57600080fd5b505afa158015613aa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ac691906152f5565b6001600160a01b031663b21f45176040518163ffffffff1660e01b815260040160206040518083038186803b158015613afe57600080fd5b505afa158015613b12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b3691906152f5565b6001600160a01b0316336001600160a01b0316145b613b7d5760405162461bcd60e51b8152602060048201526003602482015262455f4f60e81b60448201526064016102c4565b600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015613bcb57600080fd5b505afa158015613bdf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c0391906152f5565b60405163352b159160e11b81526001600160a01b038481166004830152602482018490529190911690636a562b2290604401600060405180830381600087803b158015613c4f57600080fd5b505af1158015613c63573d6000803e3d6000fd5b505050505050565b60006402540be400613c7d8385615c93565b613c879190615bfa565b90505b92915050565b6000806402540be4006064613ca58688615c93565b613caf9190615bfa565b613cb99190615bfa565b905082613ccf57613cca8186615cb2565b613cd9565b613cd98186615bb4565b95945050505050565b613d4a60405180610160016040528060006001600160a01b031681526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081526020016000815260200160008152602001600081525090565b60008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015613d9957600080fd5b505afa158015613dad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613dd191906152f5565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b158015613e0957600080fd5b505afa158015613e1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e4191906152f5565b42610140860152905082613f2b576000548451602086015160e08701516080880151620100009094046001600160a01b031693632a9a9667939291613e869190613c6b565b60c08901516040516001600160e01b031960e087901b1681526001600160a01b039094166004850152602484019290925260448301526001606483018190526084830152151560a482015260c401602060405180830381600087803b158015613eee57600080fd5b505af1158015613f02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f2691906153b8565b613f2e565b60005b84608001818151613f3f9190615cb2565b91508181525050600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015613f9457600080fd5b505afa158015613fa8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fcc91906152f5565b6001600160a01b03166314269687613ff58660e001518760800151613c6b90919063ffffffff16565b6040518263ffffffff1660e01b815260040161401391815260200190565b600060405180830381600087803b15801561402d57600080fd5b505af1158015614041573d6000803e3d6000fd5b50505050600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b15801561409357600080fd5b505afa1580156140a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140cb91906152f5565b84516080860151604051635a65ca9160e01b81526001600160a01b0392831660048201526024810191909152911690635a65ca9190604401600060405180830381600087803b15801561411d57600080fd5b505af1158015614131573d6000803e3d6000fd5b505050506080840180516060860152600090819052548451602086015160405163292c161760e01b81526001600160a01b039283166004820152602481019190915262010000909204169063292c16179060440160206040518083038186803b15801561419d57600080fd5b505afa1580156141b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141d591906153b8565b60408086019190915260a085015160e086015161010087015160c08801516020890151945163daefa14560e01b81526004810194909452602484019290925260448301521515606482015260848101919091526001600160a01b0382169063daefa1459060a40160206040518083038186803b15801561425457600080fd5b505afa158015614268573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061428c91906153b8565b61010085015260a084015160e085015161012086015160c0870151602088015160405163109b8faf60e11b81526004810195909552602485019390935260448401919091521515606483015260848201526001600160a01b038216906321371f5e9060a40160206040518083038186803b15801561430957600080fd5b505afa15801561431d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061434191906153b8565b6101208501526001548451602086015160408088015160c08901519151630735e1cd60e11b81526001600160a01b0390951694630e6bc39a9461438b949093909291600401615950565b600060405180830381600087803b1580156143a557600080fd5b505af11580156143b9573d6000803e3d6000fd5b50505050806001600160a01b0316634ffe8aec85602001516143ec8760e001518860600151613c6b90919063ffffffff16565b60c08801516040516001600160e01b031960e086901b168152600481019390935260248301919091521515604482015260016064820152608401600060405180830381600087803b15801561444057600080fd5b505af1158015614454573d6000803e3d6000fd5b50505050600060029054906101000a90046001600160a01b03166001600160a01b031663f41450b5856040518060a001604052806144a38960e001518a60600151613c6b90919063ffffffff16565b815243602082018190526040808301919091526000606083015260015490516339c8591b60e11b81526080909201916001600160a01b0390911690637390b236906144f4908c908c90600401615995565b60206040518083038186803b15801561450c57600080fd5b505afa158015614520573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061454491906153b8565b815250866040518463ffffffff1660e01b8152600401614566939291906159b4565b600060405180830381600087803b15801561458057600080fd5b505af1158015614594573d6000803e3d6000fd5b50959695505050505050565b600080600080600060029054906101000a90046001600160a01b03166001600160a01b0316636b2d653f8b60000151886145e78e60e001518d613c6b90919063ffffffff16565b60208f01516040516001600160e01b031960e087901b1681526001600160a01b039094166004850152602484019290925260448301528815156064830152608482015260a481018c905260c481018b905260e4016040805180830381600087803b15801561465457600080fd5b505af1158015614668573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061468c9190615792565b60015491935091506000906001600160a01b03166368286d368c8b8d6146b28d89615bb4565b6040518563ffffffff1660e01b81526004016146d19493929190615a09565b606060405180830381600087803b1580156146eb57600080fd5b505af11580156146ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147239190615764565b6004549297509550915060009060649061473d9082615cb2565b6147478587615cb2565b6147519190615c93565b61475b9190615bfa565b9050600060028261476c8688615cb2565b6147769190615cb2565b6147809190615bfa565b6000549091506201000090046001600160a01b0316630fe1c91f82846147a6888a615cb2565b6147b09190615cb2565b6147ba9190615cb2565b836040518363ffffffff1660e01b81526004016147e1929190918252602082015260400190565b600060405180830381600087803b1580156147fb57600080fd5b505af115801561480f573d6000803e3d6000fd5b50505050600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b15801561486157600080fd5b505afa158015614875573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061489991906152f5565b6000546001600160a01b0391821691636a562b229162010000900416846148c0888a615cb2565b6148ca9190615cb2565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401600060405180830381600087803b15801561491057600080fd5b505af1158015614924573d6000803e3d6000fd5b505050506000871115614a1c57600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b15801561497f57600080fd5b505afa158015614993573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906149b791906152f5565b8d5160405163352b159160e11b81526001600160a01b039182166004820152602481018a9052911690636a562b2290604401600060405180830381600087803b158015614a0357600080fd5b505af1158015614a17573d6000803e3d6000fd5b505050505b6000831215614b1f57600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015614a7357600080fd5b505afa158015614a87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614aab91906152f5565b6001600160a01b0316635b898b75614ac285615cc9565b6040516001600160e01b031960e084901b168152600481019190915260016024820152604401600060405180830381600087803b158015614b0257600080fd5b505af1158015614b16573d6000803e3d6000fd5b50505050614c05565b600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015614b6d57600080fd5b505afa158015614b81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ba591906152f5565b6001600160a01b03166321e36150846040518263ffffffff1660e01b8152600401614bd291815260200190565b600060405180830381600087803b158015614bec57600080fd5b505af1158015614c00573d6000803e3d6000fd5b505050505b614c0f8286615cb2565b614c19908b615bb4565b861115614d2b57600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015614c6e57600080fd5b505afa158015614c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ca691906152f5565b6001600160a01b0316635b898b75614cbe8488615cb2565b614cc88d8a615cb2565b614cd29190615cb2565b6040516001600160e01b031960e084901b168152600481019190915260006024820152604401600060405180830381600087803b158015614d1257600080fd5b505af1158015614d26573d6000803e3d6000fd5b505050505b8315614e1757600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015614d7f57600080fd5b505afa158015614d93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614db791906152f5565b6001600160a01b031663a056d2bb856040518263ffffffff1660e01b8152600401614de491815260200190565b600060405180830381600087803b158015614dfe57600080fd5b505af1158015614e12573d6000803e3d6000fd5b505050505b5050505050600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015614e6a57600080fd5b505afa158015614e7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614ea291906152f5565b6001600160a01b03166376079be3614ec78a60e0015189613c6b90919063ffffffff16565b6040518263ffffffff1660e01b8152600401614ee591815260200190565b600060405180830381600087803b158015614eff57600080fd5b505af1158015614f13573d6000803e3d6000fd5b50505050858860600151141561501057600054885160208a01516040808c015190516390d112b960e01b8152620100009094046001600160a01b0316936390d112b993614f66939092909160040161592f565b600060405180830381600087803b158015614f8057600080fd5b505af1158015614f94573d6000803e3d6000fd5b50506001548a5160208c01516040808e01519051639099939760e01b81526001600160a01b03909416955063909993979450614fd29360040161592f565b600060405180830381600087803b158015614fec57600080fd5b505af1158015615000573d6000803e3d6000fd5b5050505087606001519550615095565b600054885160208a01516040808c01519051631fb2681b60e11b81526001600160a01b0393841660048201526024810192909252604482015260648101899052620100009092041690633f64d03690608401600060405180830381600087803b15801561507c57600080fd5b505af1158015615090573d6000803e3d6000fd5b505050505b600060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b1580156150e357600080fd5b505afa1580156150f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061511b91906152f5565b6001600160a01b03166335b03c176040518163ffffffff1660e01b815260040160206040518083038186803b15801561515357600080fd5b505afa158015615167573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061518b91906152f5565b6001600160a01b0316634ffe8aec89602001516151b58b60e001518a613c6b90919063ffffffff16565b60c08c01516040516001600160e01b031960e086901b168152600481019390935260248301919091521515604482015260006064820152608401600060405180830381600087803b15801561520957600080fd5b505af115801561521d573d6000803e3d6000fd5b50505050509695505050505050565b805161523781615d28565b919050565b805161523781615d40565b80516002811061523757600080fd5b6000610160828403121561526957600080fd5b615271615b09565b905061527c8261522c565b81526020820151602082015260408201516040820152606082015160608201526080820151608082015260a082015160a08201526152bc60c0830161523c565b60c082015260e082015160e082015261010080830151818301525061012080830151818301525061014080830151818301525092915050565b60006020828403121561530757600080fd5b815161531281615d28565b9392505050565b6000806040838503121561532c57600080fd5b823561533781615d28565b9150602083013561534781615d28565b809150509250929050565b6000806040838503121561536557600080fd5b823561537081615d28565b946020939093013593505050565b60006020828403121561539057600080fd5b815161531281615d40565b6000602082840312156153ad57600080fd5b815161531281615d4e565b6000602082840312156153ca57600080fd5b5051919050565b600061018082840312156153e457600080fd5b6153ec615b41565b6153f58361522c565b81526020830151602082015260408301516040820152606083015160608201526154216080840161523c565b608082015260a0838101519082015260c0808401519082015260e08084015190820152610100808401519082015261012080840151908201526101408084015190820152610160928301519281019290925250919050565b60006080828403121561548b57600080fd5b6040516080810181811067ffffffffffffffff821117156154bc57634e487b7160e01b600052604160045260246000fd5b60405282516154ca81615d28565b80825250602083015160208201526040830151604082015260608301516154f081615d4e565b60608201529392505050565b600061010080838503121561551057600080fd5b6040519081019067ffffffffffffffff8211818310171561554157634e487b7160e01b600052604160045260246000fd5b816040528351915061555282615d28565b818152602084015160208201526040840151604082015261557560608501615247565b60608201526080840151608082015260a084015160a082015260c084015160c082015260e084015160e0820152809250505092915050565b60006101c082840312156155c057600080fd5b6040516080810181811067ffffffffffffffff821117156155f157634e487b7160e01b600052604160045260246000fd5b6040526155fe8484615256565b8152610160830151602082015261018083015160408201526101a090920151606083015250919050565b600060c0828403121561563a57600080fd5b60405160c0810181811067ffffffffffffffff8211171561566b57634e487b7160e01b600052604160045260246000fd5b604052825161567981615d28565b8082525060208301516020820152604083015160408201526060830151606082015260808301516156a981615d40565b608082015260a0928301519281019290925250919050565b600060a082840312156156d357600080fd5b60405160a0810181811067ffffffffffffffff8211171561570457634e487b7160e01b600052604160045260246000fd5b8060405250825181526020830151602082015260408301516040820152606083015161572f81615d40565b60608201526080928301519281019290925250919050565b6000610160828403121561575a57600080fd5b613c878383615256565b60008060006060848603121561577957600080fd5b8351925060208401519150604084015190509250925092565b600080604083850312156157a557600080fd5b505080516020909101519092909150565b6000806000606084860312156157cb57600080fd5b833592506020840135915060408401356157e481615d40565b809150509250925092565b60008060006060848603121561580457600080fd5b505081359360208301359350604090920135919050565b6000806000806080858703121561583157600080fd5b843593506020850135925060408501359150606085013561585181615d40565b939692955090935050565b6004811061587a57634e487b7160e01b600052602160045260246000fd5b9052565b80516001600160a01b031682526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c08101516158d060c084018215159052565b5060e081810151908301526101008082015190830152610120808201519083015261014090810151910152565b60018060a01b03815116825260208101516020830152604081015160408301526060810151611b67606084018261585c565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b03949094168452602084019290925260408301521515606082015260800190565b602080825260039082015262415f4f60e81b604082015260600190565b61018081016159a4828561587e565b8215156101608301529392505050565b61022081016159c3828661587e565b8351610160830152602084015161018083015260408401516101a0830152606084015115156101c08301526080909301516101e082015290151561020090910152919050565b6101c08101615a18828761587e565b8461016083015283610180830152826101a083015295945050505050565b60808101613c8a82846158fd565b60a08101615a5282856158fd565b8260808301529392505050565b8881526102408101615a74602083018a61587e565b9615156101808201526101a08101959095526101c08501939093526101e084019190915261020083015215156102209091015292915050565b898152602081018990526102608101615ac9604083018a61587e565b615ad76101a083018961585c565b6101c08201969096526101e0810194909452610200840192909252610220830152151561024090910152949350505050565b604051610160810167ffffffffffffffff81118282101715615b3b57634e487b7160e01b600052604160045260246000fd5b60405290565b604051610180810167ffffffffffffffff81118282101715615b3b57634e487b7160e01b600052604160045260246000fd5b600080821280156001600160ff1b0384900385131615615b9557615b95615ce6565b600160ff1b8390038412811615615bae57615bae615ce6565b50500190565b60008219821115615bc757615bc7615ce6565b500190565b600082615bdb57615bdb615cfc565b600160ff1b821460001984141615615bf557615bf5615ce6565b500590565b600082615c0957615c09615cfc565b500490565b60006001600160ff1b0381841382841380821686840486111615615c3457615c34615ce6565b600160ff1b6000871282811687830589121615615c5357615c53615ce6565b60008712925087820587128484161615615c6f57615c6f615ce6565b87850587128184161615615c8557615c85615ce6565b505050929093029392505050565b6000816000190483118215151615615cad57615cad615ce6565b500290565b600082821015615cc457615cc4615ce6565b500390565b6000600160ff1b821415615cdf57615cdf615ce6565b5060000390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b6001600160a01b0381168114615d3d57600080fd5b50565b8015158114615d3d57600080fd5b60048110615d3d57600080fdfea2646970667358221220a58435d79562546e6504f6365421a157eddc5ac362b4aa6ca267674eb1a5983264736f6c63430008070033","sourceMap":"309:23581:112:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;592:27;;;;;-1:-1:-1;;;;;592:27:112;;;;;;-1:-1:-1;;;;;17549:32:154;;;;17531:51;;17519:2;17504:18;592:27:112;;;;;;;;4187:2118;;;;;;:::i;:::-;;:::i;:::-;;555:31;;;;;;;;-1:-1:-1;;;;;555:31:112;;;1686:236;;;;;;:::i;:::-;;:::i;11914:4828::-;;;;;;:::i;:::-;;:::i;1077:250::-;;;;;;:::i;:::-;;:::i;2140:1821::-;;;;;;:::i;:::-;;:::i;651:24::-;;;;;;;;;22419:25:154;;;22407:2;22392:18;651:24:112;22273:177:154;626:19:112;;;;;;16951:749;;;;;;:::i;:::-;;:::i;6508:1790::-;;;;;;:::i;:::-;;:::i;8530:3172::-;;;;;;:::i;:::-;;:::i;681:30::-;;;;;;17874:254;;;;;;:::i;:::-;;:::i;4187:2118::-;789:8;;:26;;;-1:-1:-1;;;789:26:112;;;;:8;;;;-1:-1:-1;;;;;789:8:112;;-1:-1:-1;;789:26:112;;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;767:49:112;:10;:49;759:65;;;;-1:-1:-1;;;759:65:112;;19638:2:154;759:65:112;;;19620:21:154;19677:1;19657:18;;;19650:29;-1:-1:-1;;;19695:18:154;;;19688:33;19738:18;;759:65:112;;;;;;;;;4320:43:::1;4366:8:::0;;:41:::1;::::0;-1:-1:-1;;;4366:41:112;;::::1;::::0;::::1;22419:25:154::0;;;4366:8:112;;;::::1;-1:-1:-1::0;;;;;4366:8:112::1;::::0;:32:::1;::::0;22392:18:154;;4366:41:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4320:87;;4421:1;:7;;;4432:1;4421:12;4417:49;;;4449:7;;;4417:49;4508:7:::0;;4475:30:::1;4555:8:::0;;:26:::1;::::0;;-1:-1:-1;;;4555:26:112;;;;:8;;;::::1;-1:-1:-1::0;;;;;4555:8:112::1;::::0;-1:-1:-1;;4555:26:112::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4525:56;;4591:24;4618:10;-1:-1:-1::0;;;;;4618:23:112::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4716:11;::::0;::::1;::::0;4681:47:::1;::::0;-1:-1:-1;;;4681:47:112;;::::1;::::0;::::1;22419:25:154::0;;;;4591:52:112;;-1:-1:-1;;;;;;4681:34:112;::::1;::::0;-1:-1:-1;;22392:18:154;;4681:47:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4677:439;;;4778:9;::::0;4848:11:::1;::::0;::::1;::::0;4877:5:::1;::::0;::::1;::::0;4923:10:::1;::::0;::::1;::::0;4900:18:::1;::::0;::::1;::::0;4753:21:::1;::::0;-1:-1:-1;;;;;4778:9:112::1;::::0;:29:::1;::::0;4825:5;;4848:11;;4877:5;;4900:34:::1;::::0;:18;:22:::1;:34::i;:::-;4778:193;::::0;-1:-1:-1;;;;;;4778:193:112::1;::::0;;;;;;::::1;::::0;::::1;25193:25:154::0;;;;25234:18;;;25227:34;;;;25304:14;25297:22;25277:18;;;25270:50;25336:18;;;25329:34;25407:14;;25400:22;25379:19;;;25372:51;25165:19;;4778:193:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4986:11;::::0;::::1;:30:::0;-1:-1:-1;4677:439:112::1;;;5061:44;5083:5;5090:7;5099:1;:5;;;5061:21;:44::i;:::-;5047:11;::::0;::::1;:58:::0;4677:439:::1;5126:16;439:4;5177:3;5162:1;:11;;;5146:1;:13;;;:27;;;;:::i;:::-;5145:35;;;;:::i;:::-;:48;;;;:::i;:::-;5126:67:::0;-1:-1:-1;5221:10:112;;;:121:::1;;;5248:1;:5;;;:93;;5330:11;5314:1;:13;;;:27;;;;:::i;:::-;5300:1;:11;;;:41;5248:93;;;5286:11;5270:1;:13;;;:27;;;;:::i;:::-;5256:1;:11;;;:41;5248:93;5221:202;;;;5366:1;5359;:4;;;:8;:63;;;;;5372:1;:5;;;:49;;5417:1;:4;;;5402:1;:11;;;:19;;5372:49;;;5395:1;:4;;;5380:1;:11;;;:19;;5372:49;5221:283;;;;5447:1;5440;:4;;;:8;:63;;;;;5453:1;:5;;;:49;;5498:1;:4;;;5483:1;:11;;;:19;;5453:49;;;5476:1;:4;;;5461:1;:11;;;:19;;5453:49;5221:395;;;-1:-1:-1::0;5521:8:112::1;::::0;5551;;5561:11:::1;::::0;::::1;::::0;5597:10:::1;::::0;::::1;::::0;5574:18:::1;::::0;::::1;::::0;5521:8;;;::::1;-1:-1:-1::0;;;;;5521:8:112::1;::::0;:29:::1;::::0;5551:8;5561:11;5574:34:::1;::::0;:18;:22:::1;:34::i;:::-;5610:5;::::0;::::1;::::0;5521:95:::1;::::0;-1:-1:-1;;;;;;5521:95:112::1;::::0;;;;;;-1:-1:-1;;;;;14863:32:154;;;5521:95:112::1;::::0;::::1;14845:51:154::0;14912:18;;;14905:34;;;;14955:18;;;14948:34;15025:14;15018:22;14998:18;;;14991:50;14817:19;;5521:95:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5520:96;5221:395;5204:1032;;;5722:8;::::0;5763;;5773:18:::1;::::0;::::1;::::0;5722:70:::1;::::0;-1:-1:-1;;;5722:70:112;;:8;;;::::1;-1:-1:-1::0;;;;;5722:8:112;;::::1;:70;::::0;::::1;13851:34:154::0;;;13921:15;;13901:18;;;13894:43;13953:18;;;13946:34;5722:8:112;:21:::1;::::0;13786:18:154;;5722:70:112::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5839:8:112;;5849:11:::1;::::0;;::::1;::::0;5811:50:::1;::::0;;24451:25:154;;;24492:18;;;24485:34;;;;5811:50:112;;-1:-1:-1;;;;;5811:50:112;;::::1;::::0;-1:-1:-1;5811:50:112::1;::::0;-1:-1:-1;5811:50:112;;;;;;::::1;5204:1032;;;5893:39;5935:24;5950:1;5953:5;5935:14;:24::i;:::-;5893:66;;5979:246;6011:7;6036:10;6064:4;6086:10;:20;;;6124:10;:26;;;6168:1;6187::::0;6206:5:::1;5979:246;;;;;;;;;;;;;:::i;:::-;;;;;;;;5879:357;5204:1032;6246:8;::::0;:52:::1;::::0;-1:-1:-1;;;6246:52:112;;::::1;::::0;::::1;22623:25:154::0;;;6293:4:112::1;22664:18:154::0;;;22657:50;6246:8:112;;;::::1;-1:-1:-1::0;;;;;6246:8:112::1;::::0;:37:::1;::::0;22596:18:154;;6246:52:112::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4310:1995;;;;;834:1;4187:2118:::0;;;;:::o;1686:236::-;1795:8;;:14;;;-1:-1:-1;;;1795:14:112;;;;:8;;;;-1:-1:-1;;;;;1795:8:112;;-1:-1:-1;;1795:14:112;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1781:28:112;:10;:28;1773:44;;;;-1:-1:-1;;;1773:44:112;;19307:2:154;1773:44:112;;;19289:21:154;19346:1;19326:18;;;19319:29;-1:-1:-1;;;19364:18:154;;;19357:33;19407:18;;1773:44:112;19105:326:154;1773:44:112;1827:7;:18;;;;1855:12;:28;1893:9;:22;1686:236::o;11914:4828::-;789:8;;:26;;;-1:-1:-1;;;789:26:112;;;;:8;;;;-1:-1:-1;;;;;789:8:112;;-1:-1:-1;;789:26:112;;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;767:49:112;:10;:49;759:65;;;;-1:-1:-1;;;759:65:112;;19638:2:154;759:65:112;;;19620:21:154;19677:1;19657:18;;;19650:29;-1:-1:-1;;;19695:18:154;;;19688:33;19738:18;;759:65:112;19436:326:154;759:65:112;12040:42:::1;12085:8:::0;;:40:::1;::::0;-1:-1:-1;;;12085:40:112;;::::1;::::0;::::1;22419:25:154::0;;;12085:8:112;;;::::1;-1:-1:-1::0;;;;;12085:8:112::1;::::0;:31:::1;::::0;22392:18:154;;12085:40:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12135:30;12168:8:::0;;12188;;12198:11:::1;::::0;::::1;::::0;12211:7:::1;::::0;;::::1;::::0;12168:51;;-1:-1:-1;;;12168:51:112;;-1:-1:-1;;;;;14490:32:154;;;12168:51:112::1;::::0;::::1;14472::154::0;14539:18;;;14532:34;;;;14582:18;;;14575:34;12168:51:112;12188:8;;-1:-1:-1;12135:30:112;;12168:8;;;::::1;;::::0;:19:::1;::::0;14445:18:154;;;;;12168:51:112::1;::::0;;;;;;;;:8;:51;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12230:27;12260:8:::0;;:26:::1;::::0;;-1:-1:-1;;;12260:26:112;;;;12135:84;;-1:-1:-1;12230:27:112;;12260:8;;;::::1;-1:-1:-1::0;;;;;12260:8:112::1;::::0;-1:-1:-1;;12260:26:112::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12230:56;;12296:31;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12296:31:112::1;12350:10:::0;;;::::1;::::0;:28:::1;;;12377:1;12364;:10;;;:14;12350:28;12346:4211;;;12394:34;12431:8:::0;;12455;;12465:11:::1;::::0;::::1;::::0;12478:7:::1;::::0;;::::1;::::0;12431:55;;-1:-1:-1;;;12431:55:112;;-1:-1:-1;;;;;14490:32:154;;;12431:55:112::1;::::0;::::1;14472:51:154::0;14539:18;;;14532:34;;;;14582:18;;;14575:34;12431:8:112;;;::::1;;::::0;-1:-1:-1;;14445:18:154;;12431:55:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12394:92;;12528:10;-1:-1:-1::0;;;;;12528:23:112::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12574:11;::::0;::::1;::::0;12528:58:::1;::::0;-1:-1:-1;;;12528:58:112;;::::1;::::0;::::1;22419:25:154::0;;;;-1:-1:-1;;;;;12528:45:112;;;::::1;::::0;::::1;::::0;22392:18:154;;12528:58:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:376;;12899:5;12528:376;;;12620:29;12605:1;:11;;;:44;;;;;;;;:::i;:::-;;:275;;12674:29;12659:1;:11;;;:44;;;;;;;;:::i;:::-;;:221;;12875:5;12605:275;;12659:221;12727:1;:5;;;:27;;;;;12743:1;:11;;;12736:1;:4;;;:18;12727:27;12726:63;;;;12761:1;:5;;;12760:6;:28;;;;;12777:1;:11;;;12770:1;:4;;;:18;12760:28;12726:126;;12848:1;:4;;;12605:275;;12726:126;12816:5;12605:275;;;12652:1;:4;;;12605:275;12513:391:::0;;12936:25:::1;::::0;;-1:-1:-1;;;12936:25:112;;;;-1:-1:-1;;;;;12936:23:112;::::1;::::0;-1:-1:-1;;12936:25:112::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:23;:25;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12983:11;::::0;::::1;::::0;12996:12;;13010:5:::1;::::0;::::1;::::0;13017:10:::1;::::0;::::1;::::0;13029:11:::1;::::0;::::1;::::0;12936:105:::1;::::0;-1:-1:-1;;;12936:105:112;;::::1;::::0;::::1;25687:25:154::0;;;;25728:18;;;25721:34;;;;25798:14;;25791:22;25771:18;;;25764:50;25830:18;;;25823:34;25873:19;;;25866:35;-1:-1:-1;;;;;12936:46:112;;;::::1;::::0;::::1;::::0;25659:19:154;;12936:105:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12919:14;::::0;::::1;:122:::0;13055:21:::1;13110:30;13095:1;:11;;;:45;;;;;;;;:::i;:::-;;13091:1060;;;13176:9;::::0;13232:8;;13262:11:::1;::::0;::::1;::::0;13295:7:::1;::::0;;::::1;::::0;13324:11:::1;::::0;::::1;::::0;13357:5:::1;::::0;::::1;::::0;13384:17:::1;::::0;::::1;::::0;13423:10:::1;::::0;::::1;::::0;13176:275;;-1:-1:-1;;;13176:275:112;;-1:-1:-1;;;;;17043:32:154;;;13176:275:112::1;::::0;::::1;17025:51:154::0;17092:18;;;17085:34;;;;17135:18;;;17128:34;;;;17178:18;;;17171:34;;;;17249:14;17242:22;17221:19;;;17214:51;17281:19;;;17274:35;17325:19;;;17318:35;13160:13:112::1;::::0;13176:9;;;::::1;::::0;:34:::1;::::0;16997:19:154;;13176:275:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13160:291;;13486:1;:5;;;:45;;13523:8;13514:5;:17;;13486:45;;;13503:8;13494:5;:17;;13486:45;13485:89;;13573:1;13485:89;;;13567:3;13556:7;;13536:1;:17;;;:27;;;;:::i;:::-;13535:35;;;;:::i;:::-;13469:13;::::0;::::1;:105:::0;-1:-1:-1;13091:1060:112::1;;;13645:29;13630:1;:11;;;:44;;;;;;;;:::i;:::-;;:76;;;;;13705:1;13698;:4;;;:8;13630:76;:139;;;;;13731:1;:5;;;:37;;13764:1;:4;;;13755:5;:13;;13731:37;;;13748:1;:4;;;13739:5;:13;;13731:37;13629:314;;;-1:-1:-1::0;13810:29:112::1;13795:1;:11;;;:44;;;;;;;;:::i;:::-;;:80;;;;;13874:1;13867;:4;;;:8;13795:80;:147;;;;;13904:1;:5;;;:37;;13937:1;:4;;;13928:5;:13;;13904:37;;;13921:1;:4;;;13912:5;:13;;13904:37;13629:507;;14135:1;13629:507;;;439:4;14072:3;13987:10;-1:-1:-1::0;;;;;13987:23:112::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14032:11;::::0;::::1;::::0;13987:57:::1;::::0;-1:-1:-1;;;13987:57:112;;::::1;::::0;::::1;22419:25:154::0;;;;-1:-1:-1;;;;;13987:44:112;;;::::1;::::0;::::1;::::0;22392:18:154;;13987:57:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13967:1;:17;;;:77;;;;:::i;:::-;13966:109;;;;:::i;:::-;:146;;;;:::i;:::-;13613:13;::::0;::::1;:523:::0;13091:1060:::1;14184:30;14169:1;:11;;;:45;;;;;;;;:::i;:::-;;:66;;;;;14234:1;14218:6;:13;;;:17;14169:66;14165:937;;;14274:268;14312:1;14335:6;:14;;;14371:1;:17;;;14410:6;:13;;;14490:7;;14478;;14463:12;;:22;;;;:::i;:::-;14446:6;:13;;;:40;;;;:::i;:::-;14445:52;;;;:::i;:::-;14519:5;14274:16;:268::i;:::-;14255:287;;14561:10;-1:-1:-1::0;;;;;14561:21:112::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;14561:40:112::1;;14623:70;;;;;;;;14649:1;:8;;;-1:-1:-1::0;;;;;14623:70:112::1;;;;;14659:1;:11;;;14623:70;;;;14672:1;:7;;;14623:70;;;;14681:1;:11;;;14623:70;;;;;;;;:::i;:::-;;;::::0;14715:6:::1;:13;;;14561:185;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14770:317;14805:7;14834:5;14861:1;14884;:11;;;14917:6;:12;;;14951:1;:17;;;14990:6;:14;;;15026:16;15064:5;14770:317;;;;;;;;;;;;;;:::i;:::-;;;;;;;;14165:937;15135:30;15120:1;:11;;;:45;;;;;;;;:::i;:::-;;;:66;;;;;15185:1;15169:6;:13;;;:17;15120:66;15116:1431;;;544:4;15239:6;:13;;;:32;:68;;15294:6;:13;;;15239:68;;;544:4;15239:68;15223:13;::::0;::::1;:84:::0;15364:14:::1;::::0;::::1;::::0;15343:17:::1;::::0;::::1;::::0;15400:3:::1;::::0;439:4:::1;::::0;15339:39:::1;::::0;15364:14;15339:39:::1;:::i;:::-;15338:59;;;;:::i;:::-;:65;;;;:::i;:::-;15325:10;::::0;::::1;:78:::0;;;15457:1:::1;-1:-1:-1::0;15443:63:112;::::1;;;-1:-1:-1::0;15488:17:112::1;::::0;::::1;::::0;15464:10:::1;::::0;::::1;::::0;:15:::1;::::0;-1:-1:-1;;15464:15:112::1;:::i;:::-;15463:43;;15443:63;15442:200;;439:4;15628:3;15575:10;-1:-1:-1::0;;;;;15575:23:112::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15615:11;::::0;::::1;::::0;15575:52:::1;::::0;-1:-1:-1;;;15575:52:112;;::::1;::::0;::::1;22419:25:154::0;;;;-1:-1:-1;;;;;15575:39:112;;;::::1;::::0;::::1;::::0;22392:18:154;;15575:52:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15561:10;::::0;::::1;::::0;15546::::1;::::0;::::1;::::0;15524:17:::1;::::0;::::1;::::0;:33:::1;::::0;:21:::1;:33::i;:::-;15520:51;;;;:::i;:::-;15515:112;;;;:::i;:::-;:116;;;;:::i;:::-;:127;;;;:::i;:::-;15442:200;;;15510:1;15442:200;15421:6;:18;;:221;;;::::0;::::1;15680:234;15718:1;15741:6;:14;;;15777:1;:17;;;15816:6;:13;;;15851:6;:18;;;15891:5;15680:16;:234::i;:::-;15661:253;;15933:10;-1:-1:-1::0;;;;;15933:21:112::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;15933:40:112::1;;15995:70;;;;;;;;16021:1;:8;;;-1:-1:-1::0;;;;;15995:70:112::1;;;;;16031:1;:11;;;15995:70;;;;16044:1;:7;;;15995:70;;;;16053:1;:11;;;15995:70;;;;;;;;:::i;:::-;;;::::0;16087:6:::1;:13;;;15933:185;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16141:391;16176:7;16205:5;16306:1;16329;:11;;;16362:6;:12;;;16396:1;:17;;;16435:6;:14;;;16471:16;16509:5;16141:391;;;;;;;;;;;;;;:::i;:::-;;;;;;;;15116:1431;12380:4177;;12346:4211;16567:10;-1:-1:-1::0;;;;;16567:21:112::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16567:41:112::1;;16609:70;;;;;;;;16635:1;:8;;;-1:-1:-1::0;;;;;16609:70:112::1;;;;;16645:1;:11;;;16609:70;;;;16658:1;:7;;;16609:70;;;;16667:1;:11;;;16609:70;;;;;;;;:::i;:::-;;;::::0;16567:113:::1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;16690:8:112::1;::::0;:45:::1;::::0;-1:-1:-1;;;16690:45:112;;::::1;::::0;::::1;22419:25:154::0;;;16690:8:112;;;::::1;-1:-1:-1::0;;;;;16690:8:112::1;::::0;-1:-1:-1;16690:36:112::1;::::0;-1:-1:-1;22392:18:154;;16690:45:112::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12030:4712;;;;11914:4828:::0;;;:::o;1077:250::-;3279:19:24;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:24;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:24;1713:19:37;:23;;;3387:66:24;;-1:-1:-1;3436:12:24;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:24;;18892:2:154;3325:201:24;;;18874:21:154;18931:2;18911:18;;;18904:30;18970:34;18950:18;;;18943:62;-1:-1:-1;;;19021:18:154;;;19014:44;19075:19;;3325:201:24;18690:410:154;3325:201:24;3536:12;:16;;-1:-1:-1;;3536:16:24;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:24;;;;;3562:65;1167:8:112::1;:37:::0;;-1:-1:-1;;;;;;1167:37:112::1;-1:-1:-1::0;;;;;;1167:37:112;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;1214:34:112;;-1:-1:-1;;;;;;1214:34:112::1;::::0;;::::1;::::0;;;::::1;::::0;;1270:2:::1;1258:9;:14:::0;1292:1:::1;1167:8;1282:11:::0;1318:2:::1;1303:12;:17:::0;3647:99:24;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:24;;;3721:14;;-1:-1:-1;17979:36:154;;3721:14:24;;17967:2:154;17952:18;3721:14:24;;;;;;;3647:99;3269:483;1077:250:112;;:::o;2140:1821::-;789:8;;:26;;;-1:-1:-1;;;789:26:112;;;;:8;;;;-1:-1:-1;;;;;789:8:112;;-1:-1:-1;;789:26:112;;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;767:49:112;:10;:49;759:65;;;;-1:-1:-1;;;759:65:112;;19638:2:154;759:65:112;;;19620:21:154;19677:1;19657:18;;;19650:29;-1:-1:-1;;;19695:18:154;;;19688:33;19738:18;;759:65:112;19436:326:154;759:65:112;2270:27:::1;2300:8:::0;;:26:::1;::::0;;-1:-1:-1;;;2300:26:112;;;;:8;;;::::1;-1:-1:-1::0;;;;;2300:8:112::1;::::0;-1:-1:-1;;2300:26:112::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2384:45;::::0;-1:-1:-1;;;2384:45:112;;::::1;::::0;::::1;22419:25:154::0;;;2270:56:112;;-1:-1:-1;2336:45:112::1;::::0;-1:-1:-1;;;;;2384:36:112;::::1;::::0;::::1;::::0;22392:18:154;;2384:45:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2439:35;2477:8:::0;;2497;;2507:11:::1;::::0;::::1;::::0;2520:7:::1;::::0;;::::1;::::0;2477:51;;-1:-1:-1;;;2477:51:112;;-1:-1:-1;;;;;14490:32:154;;;2477:51:112::1;::::0;::::1;14472::154::0;14539:18;;;14532:34;;;;14582:18;;;14575:34;2477:51:112;2497:8;;-1:-1:-1;2439:35:112;;2477:8;;;::::1;;::::0;:19:::1;::::0;14445:18:154;;;;;2477:51:112::1;::::0;;;;;;;;:8;:51;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2439:89:::0;-1:-1:-1;2563:34:112::1;2552:1;:7;;;:45;;;;;;;;:::i;:::-;;2548:1024;;;2656:8;::::0;2678:13;;2712:8:::1;::::0;::::1;::::0;2656:65:::1;::::0;-1:-1:-1;;;2656:65:112;;-1:-1:-1;;;;;13869:15:154;;;2656:65:112::1;::::0;::::1;13851:34:154::0;2656:8:112;;;::::1;::::0;;::::1;13901:18:154::0;;;13894:43;;;13953:18;;;13946:34;;;;2656:8:112;:21:::1;::::0;13786:18:154;;2656:65:112::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2735:8:112::1;::::0;:23:::1;::::0;;-1:-1:-1;;;2735:23:112;;;;:8;;;::::1;-1:-1:-1::0;;;;;2735:8:112::1;::::0;-1:-1:-1;2735:21:112::1;::::0;-1:-1:-1;2735:23:112::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:23;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2781:13:::0;;2796:8:::1;::::0;::::1;::::0;2735:70:::1;::::0;-1:-1:-1;;;2735:70:112;;-1:-1:-1;;;;;14183:32:154;;;2735:70:112::1;::::0;::::1;14165:51:154::0;14232:18;;;14225:34;;;;2735:45:112;::::1;::::0;::::1;::::0;14138:18:154;;2735:70:112::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2548:1024;;;2852:1;2844:5;:9;2836:32;;;::::0;-1:-1:-1;;;2836:32:112;;19969:2:154;2836:32:112::1;::::0;::::1;19951:21:154::0;20008:2;19988:18;;;19981:30;-1:-1:-1;;;20027:18:154;;;20020:40;20077:18;;2836:32:112::1;19767:334:154::0;2836:32:112::1;2900:11;2914:10;-1:-1:-1::0;;;;;2914:23:112::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2961:16;::::0;::::1;::::0;2986:10:::1;::::0;::::1;::::0;2998:15:::1;::::0;::::1;::::0;3015:16:::1;::::0;::::1;::::0;2914:118:::1;::::0;-1:-1:-1;;;2914:118:112;;::::1;::::0;::::1;25687:25:154::0;;;;25728:18;;;25721:34;;;25798:14;;25791:22;25771:18;;;25764:50;25830:18;;;25823:34;25873:19;;;25866:35;-1:-1:-1;;;;;2914:46:112;;;::::1;::::0;::::1;::::0;25659:19:154;;2914:118:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2900:132;;3050:7;3120:3;439:4;3091:7;3065:6;:22;;;3061:37;;;;:::i;:::-;3060:57;;;;:::i;:::-;:63;;;;:::i;:::-;3050:73;;3151:1;3145:3;:7;3141:155;;;3274:3;3193:10;-1:-1:-1::0;;;;;3193:23:112::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3244:16;::::0;::::1;::::0;3262:6:::1;::::0;::::1;::::0;3193:76:::1;::::0;-1:-1:-1;;;3193:76:112;;::::1;::::0;::::1;24451:25:154::0;;;;24492:18;;;24485:34;-1:-1:-1;;;;;3193:50:112;;;::::1;::::0;::::1;::::0;24424:18:154;;3193:76:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3183:87;::::0;:3;:87:::1;:::i;:::-;3182:95;;;;:::i;:::-;3176:101;;3141:155;3426:3;3394:27;495:2;3426:3:::0;3394:27:::1;:::i;:::-;3364:6;:22;;;3360:62;;;;:::i;:::-;3359:70;;;;:::i;:::-;3352:3;3326:6;:22;;;3322:33;;;;:::i;:::-;3321:108;3313:155;;;::::0;-1:-1:-1;;;3313:155:112;;18228:2:154;3313:155:112::1;::::0;::::1;18210:21:154::0;18267:1;18247:18;;;18240:29;-1:-1:-1;;;18285:18:154;;;18278:35;18330:18;;3313:155:112::1;18026:328:154::0;3313:155:112::1;-1:-1:-1::0;;3496:8:112::1;::::0;:23:::1;::::0;;-1:-1:-1;;;3496:23:112;;;;:8;;;::::1;-1:-1:-1::0;;;;;3496:8:112::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:23;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3537:13:::0;;3552:8:::1;::::0;::::1;::::0;3496:65:::1;::::0;-1:-1:-1;;;3496:65:112;;-1:-1:-1;;;;;14183:32:154;;;3496:65:112::1;::::0;::::1;14165:51:154::0;14232:18;;;14225:34;;;;3496:40:112;::::1;::::0;::::1;::::0;14138:18:154;;3496:65:112::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2548:1024;3683:12;::::0;::::1;::::0;:17;3679:107:::1;;3715:8;::::0;:23:::1;::::0;;-1:-1:-1;;;3715:23:112;;;;:8;;;::::1;-1:-1:-1::0;;;;;3715:8:112::1;::::0;:21:::1;::::0;:23:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:23;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3755:12;::::0;::::1;::::0;3715:60:::1;::::0;-1:-1:-1;;;3715:60:112;;::::1;::::0;::::1;22623:25:154::0;;;;3769:5:112::1;22664:18:154::0;;;22657:50;-1:-1:-1;;;;;3715:39:112;;;::::1;::::0;::::1;::::0;22596:18:154;;3715:60:112::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3679:107;3796:9;::::0;3831:13;;3846:16:::1;::::0;::::1;::::0;3864:12:::1;::::0;;::::1;::::0;3878:10:::1;::::0;::::1;::::0;3796:93;;-1:-1:-1;;;3796:93:112;;-1:-1:-1;;;;;14863:32:154;;;3796:93:112::1;::::0;::::1;14845:51:154::0;14912:18;;;14905:34;;;;14955:18;;;14948:34;15025:14;15018:22;14998:18;;;14991:50;3796:9:112;::::1;::::0;:34:::1;::::0;14817:19:154;;3796:93:112::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;3900:54:112::1;::::0;-1:-1:-1;;;3900:54:112;;::::1;::::0;::::1;22419:25:154::0;;;-1:-1:-1;;;;;3900:45:112;::::1;::::0;-1:-1:-1;;;;22392:18:154;;3900:54:112::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2260:1701;;;2140:1821:::0;;;:::o;16951:749::-;789:8;;:26;;;-1:-1:-1;;;789:26:112;;;;:8;;;;-1:-1:-1;;;;;789:8:112;;-1:-1:-1;;789:26:112;;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;767:49:112;:10;:49;759:65;;;;-1:-1:-1;;;759:65:112;;19638:2:154;759:65:112;;;19620:21:154;19677:1;19657:18;;;19650:29;-1:-1:-1;;;19695:18:154;;;19688:33;19738:18;;759:65:112;19436:326:154;759:65:112;17063:27:::1;17093:8:::0;;:26:::1;::::0;;-1:-1:-1;;;17093:26:112;;;;:8;;;::::1;-1:-1:-1::0;;;;;17093:8:112::1;::::0;-1:-1:-1;;17093:26:112::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17167:35;::::0;-1:-1:-1;;;17167:35:112;;::::1;::::0;::::1;22419:25:154::0;;;17063:56:112;;-1:-1:-1;17129:35:112::1;::::0;-1:-1:-1;;;;;17167:26:112;::::1;::::0;::::1;::::0;22392:18:154;;17167:35:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17213:30;17246:8:::0;;17266;;17276:11:::1;::::0;::::1;::::0;17289:7:::1;::::0;;::::1;::::0;17246:51;;-1:-1:-1;;;17246:51:112;;-1:-1:-1;;;;;14490:32:154;;;17246:51:112::1;::::0;::::1;14472::154::0;14539:18;;;14532:34;;;;14582:18;;;14575:34;17246:51:112;17266:8;;-1:-1:-1;17213:30:112;;17246:8;;;::::1;;::::0;:19:::1;::::0;14445:18:154;;;;;17246:51:112::1;::::0;;;;;;;;:8;:51;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17213:84:::0;-1:-1:-1;17324:10:112;;;::::1;::::0;:40:::1;;;17359:1;:5;;;17350:14;;:1;:5;;;:14;;;17324:40;:82;;;;;17395:1;:11;;;17380:1;:11;;;:26;17324:82;:143;;;;;17423:1;:5;;;:43;;17461:5;17450:1;:7;;;:16;;17423:43;;;17442:5;17431:1;:7;;;:16;;17423:43;17307:332;;;17492:8;::::0;17510;;17520:11:::1;::::0;::::1;::::0;17533:7:::1;::::0;;::::1;::::0;17542::::1;::::0;::::1;::::0;17492:58;;-1:-1:-1;;;17492:58:112;;-1:-1:-1;;;;;16543:32:154;;;17492:58:112::1;::::0;::::1;16525:51:154::0;16592:18;;;16585:34;;;;16635:18;;;16628:34;16678:18;;;16671:34;17492:8:112;;;::::1;;::::0;:17:::1;::::0;16497:19:154;;17492:58:112::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;17588:8:112;;17598:11:::1;::::0;;::::1;::::0;17611:7:::1;::::0;;::::1;::::0;17620::::1;::::0;::::1;::::0;17569:59;;27488:25:154;;;27529:18;;;27522:34;;;;27572:18;;;27565:34;27630:2;27615:18;;27608:34;;;;17569:59:112;-1:-1:-1;;;;;17569:59:112;;::::1;::::0;-1:-1:-1;17569:59:112::1;::::0;-1:-1:-1;17569:59:112;;;27475:3:154;17569:59:112;;::::1;17307:332;17649:44;::::0;-1:-1:-1;;;17649:44:112;;::::1;::::0;::::1;22419:25:154::0;;;-1:-1:-1;;;;;17649:35:112;::::1;::::0;-1:-1:-1;;22392:18:154;;17649:44:112::1;22273:177:154::0;6508:1790:112;789:8;;:26;;;-1:-1:-1;;;789:26:112;;;;:8;;;;-1:-1:-1;;;;;789:8:112;;-1:-1:-1;;789:26:112;;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;767:49:112;:10;:49;759:65;;;;-1:-1:-1;;;759:65:112;;19638:2:154;759:65:112;;;19620:21:154;19677:1;19657:18;;;19650:29;-1:-1:-1;;;19695:18:154;;;19688:33;19738:18;;759:65:112;19436:326:154;759:65:112;6628:43:::1;6674:8:::0;;:41:::1;::::0;-1:-1:-1;;;6674:41:112;;::::1;::::0;::::1;22419:25:154::0;;;6674:8:112;;;::::1;-1:-1:-1::0;;;;;6674:8:112::1;::::0;:32:::1;::::0;22392:18:154;;6674:41:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6725:30;6758:8:::0;;6778:7;;:14;;6794:17:::1;::::0;::::1;::::0;6813:13:::1;::::0;;::::1;::::0;6758:69;;-1:-1:-1;;;6758:69:112;;-1:-1:-1;;;;;14490:32:154;;;6758:69:112::1;::::0;::::1;14472:51:154::0;14539:18;;;14532:34;;;;14582:18;;;14575:34;;;;6778:7:112;;-1:-1:-1;6725:30:112;;6758:8;;;::::1;;::::0;:19:::1;::::0;14445:18:154;;6758:69:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6725:102;;6837:31;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6837:31:112::1;6918:10:::0;;;::::1;::::0;:28:::1;;;6945:1;6932;:10;;;:14;6918:28;6914:1315;;;6962:34;6999:8:::0;;7023;;7033:11:::1;::::0;::::1;::::0;7046:7:::1;::::0;;::::1;::::0;6999:55;;-1:-1:-1;;;6999:55:112;;-1:-1:-1;;;;;14490:32:154;;;6999:55:112::1;::::0;::::1;14472:51:154::0;14539:18;;;14532:34;;;;14582:18;;;14575:34;6999:8:112;;;::::1;;::::0;-1:-1:-1;;14445:18:154;;6999:55:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7068:27;7098:8:::0;;:26:::1;::::0;;-1:-1:-1;;;7098:26:112;;;;6962:92;;-1:-1:-1;7068:27:112;;7098:8;;;::::1;-1:-1:-1::0;;;;;7098:8:112::1;::::0;-1:-1:-1;;7098:26:112::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7068:56;;7156:10;-1:-1:-1::0;;;;;7156:23:112::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7203:11;::::0;::::1;::::0;7223:5:::1;::::0;::::1;::::0;7230:10:::1;::::0;::::1;::::0;7242:11:::1;::::0;::::1;::::0;7156:98:::1;::::0;-1:-1:-1;;;7156:98:112;;::::1;::::0;::::1;25687:25:154::0;;;;25728:18;;;25721:34;;;25798:14;;25791:22;25771:18;;;25764:50;25830:18;;;25823:34;25873:19;;;25866:35;-1:-1:-1;;;;;7156:46:112;;;::::1;::::0;::::1;::::0;25659:19:154;;7156:98:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7139:14;::::0;::::1;:115:::0;;;7299:7;;:23:::1;;::::0;7362:3:::1;::::0;439:4:::1;::::0;7295:45:::1;::::0;7139:115;7295:45:::1;:::i;:::-;7294:65;;;;:::i;:::-;:71;;;;:::i;:::-;7281:10;::::0;::::1;:84:::0;;;7415:1:::1;-1:-1:-1::0;7401:69:112;::::1;;;-1:-1:-1::0;7446:7:112;;:23:::1;;::::0;7422:10:::1;::::0;::::1;::::0;:15:::1;::::0;-1:-1:-1;;7422:15:112::1;:::i;:::-;7421:49;;7401:69;7400:141;;7530:10;::::0;::::1;::::0;7515::::1;::::0;::::1;::::0;7487:7;;:23:::1;;::::0;:39:::1;::::0;:27:::1;:39::i;:::-;7483:57;;;;:::i;:::-;7400:141;;;7474:1;7400:141;7379:6;:18;;:162;;;::::0;::::1;7556:21;7580:276;7614:1;7633:6;:14;;;7665:1;:7;;;:23;;;7706:1;439:4;7803:3;7747:10;-1:-1:-1::0;;;;;7747:23:112::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7787:11;::::0;::::1;::::0;7747:52:::1;::::0;-1:-1:-1;;;7747:52:112;;::::1;::::0;::::1;22419:25:154::0;;;;-1:-1:-1;;;;;7747:39:112;;;::::1;::::0;::::1;::::0;22392:18:154;;7747:52:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7726:6;:18;;;:73;;;;:::i;:::-;7725:81;;;;:::i;7580:276::-;7556:300;;7876:248;7908:7;7933:1;7952:5;7975;7998:1;:7;;;:23;;;8039:6;:14;;;8071:16;8105:5;7876:248;;;;;;;;;;;;;:::i;:::-;;;;;;;;6948:1187;;;6914:1315;;;8196:8:::0;;8206:11:::1;::::0;;::::1;::::0;8168:50:::1;::::0;;24451:25:154;;;24492:18;;;24485:34;;;;8168:50:112;;-1:-1:-1;;;;;8168:50:112;;::::1;::::0;::::1;::::0;;;;;;;;::::1;6914:1315;8238:8;::::0;;:53:::1;::::0;-1:-1:-1;;;8238:53:112;;::::1;::::0;::::1;22623:25:154::0;;;22664:18;;;22657:50;;;;8238:8:112;;::::1;-1:-1:-1::0;;;;;8238:8:112::1;::::0;:37:::1;::::0;22596:18:154;;8238:53:112::1;22455:258:154::0;8530:3172:112;789:8;;:26;;;-1:-1:-1;;;789:26:112;;;;:8;;;;-1:-1:-1;;;;;789:8:112;;-1:-1:-1;;789:26:112;;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;767:49:112;:10;:49;759:65;;;;-1:-1:-1;;;759:65:112;;19638:2:154;759:65:112;;;19620:21:154;19677:1;19657:18;;;19650:29;-1:-1:-1;;;19695:18:154;;;19688:33;19738:18;;759:65:112;19436:326:154;759:65:112;8669:42:::1;8714:8:::0;;:40:::1;::::0;-1:-1:-1;;;8714:40:112;;::::1;::::0;::::1;22419:25:154::0;;;8714:8:112;;;::::1;-1:-1:-1::0;;;;;8714:8:112::1;::::0;:31:::1;::::0;22392:18:154;;8714:40:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8764:17;8784:8:::0;;:26:::1;::::0;;-1:-1:-1;;;8784:26:112;;;;8669:85;;-1:-1:-1;8764:17:112;;8784:8;;;::::1;-1:-1:-1::0;;;;;8784:8:112::1;::::0;-1:-1:-1;;8784:26:112::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;8784:37:112::1;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8764:59:::0;-1:-1:-1;8838:10:112;;;::::1;::::0;:72:::1;;-1:-1:-1::0;8852:8:112::1;::::0;8879;;8889:11:::1;::::0;::::1;::::0;8902:7:::1;::::0;;::::1;::::0;8852:58;;-1:-1:-1;;;8852:58:112;;-1:-1:-1;;;;;14490:32:154;;;8852:58:112::1;::::0;::::1;14472:51:154::0;14539:18;;;14532:34;;;;14582:18;;;14575:34;8852:8:112;;;::::1;;::::0;:26:::1;::::0;14445:18:154;;8852:58:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8834:2698;;;8926:39;8968:8:::0;;8995;;9005:11:::1;::::0;::::1;::::0;9018:7:::1;::::0;;::::1;::::0;8968:58;;-1:-1:-1;;;8968:58:112;;-1:-1:-1;;;;;14490:32:154;;;8968:58:112::1;::::0;::::1;14472:51:154::0;14539:18;;;14532:34;;;;14582:18;;;14575:34;8968:8:112;;;::::1;;::::0;:26:::1;::::0;14445:18:154;;8968:58:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9041:27;9071:8:::0;;:26:::1;::::0;;-1:-1:-1;;;9071:26:112;;;;8926:100;;-1:-1:-1;9041:27:112;;9071:8;;;::::1;-1:-1:-1::0;;;;;9071:8:112::1;::::0;-1:-1:-1;;9071:26:112::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:8;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9214:8:::0;;9224:11:::1;::::0;::::1;::::0;9237:7:::1;::::0;;::::1;::::0;9185:60;;-1:-1:-1;;;9185:60:112;;-1:-1:-1;;;;;14490:32:154;;;9185:60:112::1;::::0;::::1;14472:51:154::0;14539:18;;;14532:34;;;;14582:18;;;14575:34;9041:56:112;;-1:-1:-1;9249:36:112::1;::::0;9185:28;;::::1;::::0;::::1;::::0;14445:18:154;;9185:60:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:100;;;;;;;;:::i;:::-;;:236;;9377:1;:5;;;:43;;9413:1;:7;;;9404:5;:16;;9185:236;;9377:43;9394:1;:7;;;9385:5;:16;;9185:236;;;9309:1;:5;;;:43;;9345:1;:7;;;9336:5;:16;;9309:43;;;9326:1;:7;;;9317:5;:16;;9309:43;9184:349;;;;-1:-1:-1::0;9442:8:112::1;::::0;9472;;9482:11:::1;::::0;::::1;::::0;9514:10:::1;::::0;::::1;::::0;9495:14:::1;::::0;::::1;::::0;9442:8;;;::::1;-1:-1:-1::0;;;;;9442:8:112::1;::::0;:29:::1;::::0;9472:8;9482:11;9495:30:::1;::::0;:14;:18:::1;:30::i;:::-;9527:5;::::0;::::1;::::0;9442:91:::1;::::0;-1:-1:-1;;;;;;9442:91:112::1;::::0;;;;;;-1:-1:-1;;;;;14863:32:154;;;9442:91:112::1;::::0;::::1;14845:51:154::0;14912:18;;;14905:34;;;;14955:18;;;14948:34;15025:14;15018:22;14998:18;;;14991:50;14817:19;;9442:91:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9180:2342;;;9566:22;9591:5;9566:30;;9632:10;-1:-1:-1::0;;;;;9632:23:112::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9682:11;::::0;::::1;::::0;9619:75:::1;::::0;-1:-1:-1;;;9619:75:112;;::::1;::::0;::::1;22419:25:154::0;;;;-1:-1:-1;;;;;9619:62:112;;;::::1;::::0;::::1;::::0;22392:18:154;;9619:75:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9615:583;;;9796:9;::::0;9882:11:::1;::::0;::::1;::::0;9919:5:::1;::::0;::::1;::::0;9969:10:::1;::::0;::::1;::::0;9950:14:::1;::::0;::::1;::::0;9771:21:::1;::::0;-1:-1:-1;;;;;9796:9:112::1;::::0;:29:::1;::::0;9851:5;;9882:11;;9919:5;;9950:30:::1;::::0;:14;:18:::1;:30::i;:::-;9796:237;::::0;-1:-1:-1;;;;;;9796:237:112::1;::::0;;;;;;::::1;::::0;::::1;25193:25:154::0;;;;25234:18;;;25227:34;;;;25304:14;25297:22;25277:18;;;25270:50;25336:18;;;25329:34;25407:14;;25400:22;25379:19;;;25372:51;25165:19;;9796:237:112::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9770:263:::0;-1:-1:-1;9615:583:112::1;::::0;-1:-1:-1;9615:583:112::1;;10135:44;10157:5;10164:7;10173:1;:5;;;10135:21;:44::i;:::-;10127:52;;9615:583;10221:1;:5;;;:132;;439:4;10337:3;10322:1;:11;;;10312:1;:7;;;:21;;;;:::i;:::-;10311:29;;;;:::i;:::-;:42;;;;:::i;:::-;10301:1;:7;;;:52;;;;:::i;:::-;10293:5;:60;10221:132;;;439:4;10274:3;10259:1;:11;;;10249:1;:7;;;:21;;;;:::i;:::-;10248:29;;;;:::i;:::-;:42;;;;:::i;:::-;10238:1;:7;;;:52;;;;:::i;:::-;10229:5;:61;10221:132;10216:1292;;10378:39;10420:486;10456:397;;;;;;;;10503:1;:8;;;-1:-1:-1::0;;;;;10456:397:112::1;;;;;10537:1;:11;;;10456:397;;;;10574:1;10456:397;;;;10601:1;10456:397;;;;10628:1;:14;;;10456:397;;;;10668:5;10456:397;;;;10699:1;:5;;;10456:397;;;;;;10730:1;:10;;;10456:397;;;;10766:1;:4;;;10456:397;;;;10796:1;:4;;;10456:397;;;;10826:1;10456:397;;::::0;10879:5:::1;10420:14;:486::i;:::-;10929:8;::::0;10963;;10973:11:::1;::::0;::::1;::::0;10986:7:::1;::::0;;::::1;::::0;10929:65;;-1:-1:-1;;;10929:65:112;;-1:-1:-1;;;;;14490:32:154;;;10929:65:112::1;::::0;::::1;14472:51:154::0;14539:18;;;14532:34;;;;14582:18;;;14575:34;10378:528:112;;-1:-1:-1;10929:8:112;;;::::1;;::::0;-1:-1:-1;;14445:18:154;;10929:65:112::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11085:404;11124:7;11157:1;:7;;;11190:10;11226:31;11283:10;:20;;;11329:10;:26;;;11385:1;:7;;;11419:17;11462:5;11085:404;;;;;;;;;;;;;;:::i;:::-;;;;;;;;10356:1152;10216:1292;9547:1975;9180:2342;8912:2620;;8834:2698;11542:8;-1:-1:-1::0;;;;;11542:26:112::1;;11569:70;;;;;;;;11595:1;:8;;;-1:-1:-1::0;;;;;11569:70:112::1;;;;;11605:1;:11;;;11569:70;;;;11618:1;:7;;;11569:70;;;;11627:1;:11;;;11569:70;;;;;;;;:::i;:::-;;;::::0;11542:98:::1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;11650:8:112::1;::::0;:45:::1;::::0;-1:-1:-1;;;11650:45:112;;::::1;::::0;::::1;22419:25:154::0;;;11650:8:112;;;::::1;-1:-1:-1::0;;;;;11650:8:112::1;::::0;-1:-1:-1;;;;22392:18:154;;11650:45:112::1;22273:177:154::0;17874:254:112;17978:1;17968:7;:11;:77;;;;-1:-1:-1;18005:8:112;;:26;;;-1:-1:-1;;;18005:26:112;;;;:8;;;;-1:-1:-1;;;;;18005:8:112;;-1:-1:-1;;18005:26:112;;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18005:37:112;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;17983:62:112;:10;:62;17968:77;17960:93;;;;-1:-1:-1;;;17960:93:112;;18561:2:154;17960:93:112;;;18543:21:154;18600:1;18580:18;;;18573:29;-1:-1:-1;;;18618:18:154;;;18611:33;18661:18;;17960:93:112;18359:326:154;17960:93:112;18063:8;;:23;;;-1:-1:-1;;;18063:23:112;;;;:8;;;;-1:-1:-1;;;;;18063:8:112;;:21;;:23;;;;;;;;;;;;;;;:8;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:58;;-1:-1:-1;;;18063:58:112;;-1:-1:-1;;;;;14183:32:154;;;18063:58:112;;;14165:51:154;14232:18;;;14225:34;;;18063:40:112;;;;;;;14138:18:154;;18063:58:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17874:254;;:::o;130:127:130:-;190:4;119;214:13;218:9;214:1;:13;:::i;:::-;213:37;;;;:::i;:::-;206:44;;130:127;;;;;:::o;23653:235:112:-;23746:4;;439;23801:3;23780:17;23789:8;23780:6;:17;:::i;:::-;23779:25;;;;:::i;:::-;:38;;;;:::i;:::-;23762:55;;23834:5;:47;;23863:18;23872:9;23863:6;:18;:::i;:::-;23834:47;;;23842:18;23851:9;23842:6;:18;:::i;:::-;23827:54;23653:235;-1:-1:-1;;;;;23653:235:112:o;18361:1964::-;18451:28;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18451:28:112;18492:24;18519:8;;:26;;;-1:-1:-1;;;18519:26:112;;;;:8;;;;-1:-1:-1;;;;;18519:8:112;;-1:-1:-1;;18519:26:112;;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;18519:39:112;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18590:15;18571:16;;;:34;18492:68;-1:-1:-1;18642:5:112;:480;;18728:8;;18793:13;;18846:16;;;;18930:15;;;;18902:23;;;;18728:8;;;;-1:-1:-1;;;;;18728:8:112;;:25;;18793:13;18846:16;18902:44;;:23;:27;:44::i;:::-;19074:10;;;;18728:394;;-1:-1:-1;;;;;;18728:394:112;;;;;;;-1:-1:-1;;;;;15339:32:154;;;18728:394:112;;;15321:51:154;15388:18;;;15381:34;;;;15431:18;;;15424:34;18986:4:112;15474:18:154;;;15467:50;;;15533:19;;;15526:51;15621:14;15614:22;15593:19;;;15586:51;15293:19;;18728:394:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18642:480;;;18687:1;18642:480;18615:6;:23;;:507;;;;;;;:::i;:::-;;;-1:-1:-1;19133:8:112;;:23;;;-1:-1:-1;;;19133:23:112;;;;:8;;;;-1:-1:-1;;;;;19133:8:112;;:21;;:23;;;;;;;;;;;;;;;:8;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;19133:38:112;;19172:44;19200:6;:15;;;19172:6;:23;;;:27;;:44;;;;:::i;:::-;19133:84;;;;;;;;;;;;;22419:25:154;;22407:2;22392:18;;22273:177;19133:84:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19227:8:112;;:23;;;-1:-1:-1;;;19227:23:112;;;;:8;;;;-1:-1:-1;;;;;19227:8:112;;-1:-1:-1;19227:21:112;;-1:-1:-1;19227:23:112;;;;;;;;;;;;;;;:8;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19273:13;;19288:23;;;;19227:85;;-1:-1:-1;;;19227:85:112;;-1:-1:-1;;;;;14183:32:154;;;19227:85:112;;;14165:51:154;14232:18;;;14225:34;;;;19227:45:112;;;;;14138:18:154;;19227:85:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;19348:23:112;;;;;19323:22;;;:48;-1:-1:-1;19381:27:112;;;;19434:8;19464:13;;-1:-1:-1;19479:16:112;;;19434:62;;-1:-1:-1;;;19434:62:112;;-1:-1:-1;;;;;14183:32:154;;;19434:62:112;;;14165:51:154;14232:18;;;14225:34;;;;19434:8:112;;;;;;:29;;14138:18:154;;19434:62:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19419:12;;;;:77;;;;19540:16;;;;19558:15;;;;19575:9;;;;19586:10;;;;19598:16;;;;19518:97;;-1:-1:-1;;;19518:97:112;;;;;27032:25:154;;;;27073:18;;;27066:34;;;;27116:18;;;27109:34;27186:14;27179:22;27159:18;;;27152:50;27218:19;;;27211:35;;;;-1:-1:-1;;;;;19518:21:112;;;;;27004:19:154;;19518:97:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19506:9;;;:109;19659:16;;;;19677:15;;;;19694:9;;;;19705:10;;;;19717:16;;;;19637:97;;-1:-1:-1;;;19637:97:112;;;;;27032:25:154;;;;27073:18;;;27066:34;;;;27116:18;;;27109:34;;;;27186:14;27179:22;27159:18;;;27152:50;27218:19;;;27211:35;-1:-1:-1;;;;;19637:21:112;;;;;27004:19:154;;19637:97:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19625:9;;;:109;19745:9;;19780:13;;19795:16;;;;19813:12;;;;;19827:10;;;;19745:93;;-1:-1:-1;;;19745:93:112;;-1:-1:-1;;;;;14863:32:154;;;19745:93:112;;;14845:51:154;14912:18;;;14905:34;;;;14955:18;;;14948:34;15025:14;15018:22;14998:18;;;14991:50;19745:9:112;;;:34;;14817:19:154;;19745:93:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;19875:16:112;;;;19920:15;;;;19893:22;;;;-1:-1:-1;;;;;19849:25:112;;;;;19875:16;;19893:43;;:26;:43::i;:::-;19938:10;;;;19849:106;;-1:-1:-1;;;;;;19849:106:112;;;;;;;;;;24749:25:154;;;;24790:18;;;24783:34;;;;24860:14;24853:22;24833:18;;;24826:50;19950:4:112;24892:18:154;;;24885:50;24721:19;;19849:106:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19966:8:112;;20019:244;;;-1:-1:-1;20019:244:112;;;;;20089:15;;;;20062:22;;;;19966:8;;;;-1:-1:-1;;;;;19966:8:112;;-1:-1:-1;19966:19:112;;-1:-1:-1;20089:15:112;;20019:244;;20062:43;;:22;:26;:43::i;:::-;20019:244;;20123:12;20019:244;;;;;;;;;;;;;;-1:-1:-1;20019:244:112;;;;;20206:9;:43;;-1:-1:-1;;;20206:43:112;;20019:244;;;;;-1:-1:-1;;;;;20206:9:112;;;;:28;;:43;;20235:6;;20243:5;;20206:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20019:244;;;20277:5;19966:326;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20311:6:112;;18361:1964;-1:-1:-1;;;;;;18361:1964:112:o;20835:2812::-;21079:21;21253:8;;21302:13;;21378:15;;;;21079:21;;;;;;21253:8;;;;-1:-1:-1;;;;;21253:8:112;;:31;;21302:13;21333:11;;21362:32;;:11;;:15;:32::i;:::-;21437:16;;;;21253:275;;;-1:-1:-1;;;;;;;21253:275:112;;;;;;-1:-1:-1;;;;;15973:32:154;;;;21253:275:112;;;15955:51:154;16022:18;;;16015:34;;;;16065:18;;;16058:34;;;;16135:14;;16128:22;16108:18;;;16101:50;16167:19;;;16160:35;16211:19;;;16204:35;;;16255:19;;;16248:35;;;21253:275:112;;15927:19:154;;;;;21253:275:112;;;;;-1:-1:-1;21253:275:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21601:9;;21208:320;;-1:-1:-1;21208:320:112;-1:-1:-1;21543:7:112;;-1:-1:-1;;;;;21601:9:112;:23;21642:6;21666:11;21695:14;21727:32;21744:15;21208:320;21727:32;:::i;:::-;21601:172;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21855:9;;21564:209;;-1:-1:-1;21564:209:112;-1:-1:-1;21564:209:112;-1:-1:-1;21788:20:112;;21869:3;;21849:15;;21869:3;21849:15;:::i;:::-;21813:31;21830:14;21813;:31;:::i;:::-;21812:53;;;;:::i;:::-;21811:61;;;;:::i;:::-;21788:84;-1:-1:-1;21886:12:112;21955:1;21788:84;21902:31;21919:14;21902;:31;:::i;:::-;:49;;;;:::i;:::-;21901:55;;;;:::i;:::-;21970:8;;21886:70;;-1:-1:-1;21970:8:112;;;-1:-1:-1;;;;;21970:8:112;:29;21886:70;22051:15;22017:31;22034:14;22017;:31;:::i;:::-;:49;;;;:::i;:::-;:59;;;;:::i;:::-;22094:7;21970:145;;;;;;;;;;;;;;;24451:25:154;;;24507:2;24492:18;;24485:34;24439:2;24424:18;;24277:248;21970:145:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22130:8:112;;:23;;;-1:-1:-1;;;22130:23:112;;;;:8;;;;-1:-1:-1;;;;;22130:8:112;;-1:-1:-1;22130:21:112;;-1:-1:-1;22130:23:112;;;;;;;;;;;;;;;:8;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22179:8;;-1:-1:-1;;;;;22130:40:112;;;;;;22179:8;;;;22224:15;22190:31;22207:14;22190;:31;:::i;:::-;:49;;;;:::i;:::-;22130:110;;-1:-1:-1;;;;;;22130:110:112;;;;;;;-1:-1:-1;;;;;14183:32:154;;;22130:110:112;;;14165:51:154;14232:18;;;14225:34;14138:18;;22130:110:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22278:1;22259:16;:20;22255:99;;;22281:8;;:23;;;-1:-1:-1;;;22281:23:112;;;;:8;;;;-1:-1:-1;;;;;22281:8:112;;:21;;:23;;;;;;;;;;;;;;;:8;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22322:13;;22281:73;;-1:-1:-1;;;22281:73:112;;-1:-1:-1;;;;;14183:32:154;;;22281:73:112;;;14165:51:154;14232:18;;;14225:34;;;22281:40:112;;;;;14138:18:154;;22281:73:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22255:99;22378:1;22372:3;:7;22368:196;;;22399:8;;:23;;;-1:-1:-1;;;22399:23:112;;;;:8;;;;-1:-1:-1;;;;;22399:8:112;;:21;;:23;;;;;;;;;;;;;;;:8;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22399:39:112;;22444:4;22445:3;22444:4;:::i;:::-;22399:57;;-1:-1:-1;;;;;;22399:57:112;;;;;;;;;;22623:25:154;;;;22451:4:112;22664:18:154;;;22657:50;22596:18;;22399:57:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22368:196;;;22495:8;;:23;;;-1:-1:-1;;;22495:23:112;;;;:8;;;;-1:-1:-1;;;;;22495:8:112;;:21;;:23;;;;;;;;;;;;;;;:8;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:54;;-1:-1:-1;;;22495:54:112;;;;;22419:25:154;;;-1:-1:-1;;;;;22495:43:112;;;;;;;22392:18:154;;22495:54:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22368:196;22613:32;22630:15;22613:14;:32;:::i;:::-;22594:52;;:15;:52;:::i;:::-;22581:9;:66;22577:217;;;22667:8;;:23;;;-1:-1:-1;;;22667:23:112;;;;:8;;;;-1:-1:-1;;;;;22667:8:112;;:21;;:23;;;;;;;;;;;;;;;:8;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22667:39:112;;22738:32;22755:15;22738:14;:32;:::i;:::-;22707:27;22719:15;22707:9;:27;:::i;:::-;:64;;;;:::i;:::-;22667:112;;-1:-1:-1;;;;;;22667:112:112;;;;;;;;;;22623:25:154;;;;22773:5:112;22664:18:154;;;22657:50;22596:18;;22667:112:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22577:217;22811:18;;22807:91;;22831:8;;:23;;;-1:-1:-1;;;22831:23:112;;;;:8;;;;-1:-1:-1;;;;;22831:8:112;;:21;;:23;;;;;;;;;;;;;;;:8;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67;;-1:-1:-1;;;22831:67:112;;;;;22419:25:154;;;-1:-1:-1;;;;;22831:51:112;;;;;;;22392:18:154;;22831:67:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22807:91;-1:-1:-1;;22919:8:112;;:23;;;-1:-1:-1;;;22919:23:112;;;;:8;;;;-1:-1:-1;;;;;22919:8:112;;-1:-1:-1;22919:21:112;;-1:-1:-1;22919:23:112;;;;;-1:-1:-1;22919:23:112;;;;;;;;:8;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22919:38:112;;22958:32;22974:6;:15;;;22958:11;:15;;:32;;;;:::i;:::-;22919:72;;;;;;;;;;;;;22419:25:154;;22407:2;22392:18;;22273:177;22919:72:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23032:11;23006:6;:22;;;:37;23002:410;;;23058:8;;;23083:13;;23098:16;;;;23116:12;;;;;23058:71;;-1:-1:-1;;;23058:71:112;;-1:-1:-1;;;;;14490:32:154;;;23058:71:112;;;14472:51:154;14539:18;;;14532:34;;;;14582:18;;;14575:34;23058:71:112;:8;;;;;;;;-1:-1:-1;;14445:18:154;;;;;23058:71:112;;;;;:8;;:71;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;23143:9:112;;23177:13;;23192:16;;;;23210:12;;;;;23143:80;;-1:-1:-1;;;23143:80:112;;-1:-1:-1;;;;;14490:32:154;;;23143:80:112;;;14472:51:154;14539:18;;;14532:34;;;;14582:18;;;14575:34;23143:9:112;;;-1:-1:-1;;;;14445:18:154;;23143:80:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23251:6;:22;;;23237:36;;23002:410;;;23312:8;;;23342:13;;23357:16;;;;23375:12;;;;;23312:89;;-1:-1:-1;;;23312:89:112;;-1:-1:-1;;;;;16543:32:154;;;23312:89:112;;;16525:51:154;16592:18;;;16585:34;;;;16635:18;;;16628:34;16678:18;;;16671:34;;;23312:89:112;:8;;;;;;;;:29;;16497:19:154;;;;;23312:89:112;;;;;:8;;:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23002:410;23422:8;;:26;;;-1:-1:-1;;;23422:26:112;;;;:8;;;;-1:-1:-1;;;;;23422:8:112;;-1:-1:-1;;23422:26:112;;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23422:39:112;;:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23422:55:112;;23491:6;:16;;;23521:32;23537:6;:15;;;23521:11;:15;;:32;;;;:::i;:::-;23567:10;;;;23422:184;;-1:-1:-1;;;;;;23422:184:112;;;;;;;;;;24749:25:154;;;;24790:18;;;24783:34;;;;24860:14;24853:22;24833:18;;;24826:50;23591:5:112;24892:18:154;;;24885:50;24721:19;;23422:184:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23617:23;20835:2812;;;;;;;;:::o;14:138:154:-;93:13;;115:31;93:13;115:31;:::i;:::-;14:138;;;:::o;157:132::-;233:13;;255:28;233:13;255:28;:::i;294:155::-;381:13;;423:1;413:12;;403:40;;439:1;436;429:12;454:915;517:5;565:6;553:9;548:3;544:19;540:32;537:52;;;585:1;582;575:12;537:52;607:17;;:::i;:::-;598:26;;647:40;677:9;647:40;:::i;:::-;640:5;633:55;741:2;730:9;726:18;720:25;715:2;708:5;704:14;697:49;799:2;788:9;784:18;778:25;773:2;766:5;762:14;755:49;857:2;846:9;842:18;836:25;831:2;824:5;820:14;813:49;916:3;905:9;901:19;895:26;889:3;882:5;878:15;871:51;976:3;965:9;961:19;955:26;949:3;942:5;938:15;931:51;1015:47;1057:3;1046:9;1042:19;1015:47;:::i;:::-;1009:3;1002:5;998:15;991:72;1117:3;1106:9;1102:19;1096:26;1090:3;1083:5;1079:15;1072:51;1142:3;1198:2;1187:9;1183:18;1177:25;1172:2;1165:5;1161:14;1154:49;;1222:3;1278:2;1267:9;1263:18;1257:25;1252:2;1245:5;1241:14;1234:49;;1302:3;1358:2;1347:9;1343:18;1337:25;1332:2;1325:5;1321:14;1314:49;;454:915;;;;:::o;1374:251::-;1444:6;1497:2;1485:9;1476:7;1472:23;1468:32;1465:52;;;1513:1;1510;1503:12;1465:52;1545:9;1539:16;1564:31;1589:5;1564:31;:::i;:::-;1614:5;1374:251;-1:-1:-1;;;1374:251:154:o;1630:388::-;1698:6;1706;1759:2;1747:9;1738:7;1734:23;1730:32;1727:52;;;1775:1;1772;1765:12;1727:52;1814:9;1801:23;1833:31;1858:5;1833:31;:::i;:::-;1883:5;-1:-1:-1;1940:2:154;1925:18;;1912:32;1953:33;1912:32;1953:33;:::i;:::-;2005:7;1995:17;;;1630:388;;;;;:::o;2023:315::-;2091:6;2099;2152:2;2140:9;2131:7;2127:23;2123:32;2120:52;;;2168:1;2165;2158:12;2120:52;2207:9;2194:23;2226:31;2251:5;2226:31;:::i;:::-;2276:5;2328:2;2313:18;;;;2300:32;;-1:-1:-1;;;2023:315:154:o;2343:245::-;2410:6;2463:2;2451:9;2442:7;2438:23;2434:32;2431:52;;;2479:1;2476;2469:12;2431:52;2511:9;2505:16;2530:28;2552:5;2530:28;:::i;3710:284::-;3805:6;3858:2;3846:9;3837:7;3833:23;3829:32;3826:52;;;3874:1;3871;3864:12;3826:52;3906:9;3900:16;3925:39;3958:5;3925:39;:::i;3999:183::-;4068:6;4121:2;4109:9;4100:7;4096:23;4092:32;4089:52;;;4137:1;4134;4127:12;4089:52;-1:-1:-1;4160:16:154;;3999:183;-1:-1:-1;3999:183:154:o;4187:1071::-;4291:6;4344:3;4332:9;4323:7;4319:23;4315:33;4312:53;;;4361:1;4358;4351:12;4312:53;4387:22;;:::i;:::-;4432:40;4462:9;4432:40;:::i;:::-;4425:5;4418:55;4526:2;4515:9;4511:18;4505:25;4500:2;4493:5;4489:14;4482:49;4584:2;4573:9;4569:18;4563:25;4558:2;4551:5;4547:14;4540:49;4642:2;4631:9;4627:18;4621:25;4616:2;4609:5;4605:14;4598:49;4680:47;4722:3;4711:9;4707:19;4680:47;:::i;:::-;4674:3;4663:15;;4656:72;4782:3;4767:19;;;4761:26;4744:15;;;4737:51;4842:3;4827:19;;;4821:26;4804:15;;;4797:51;4902:3;4887:19;;;4881:26;4864:15;;;4857:51;4927:3;4968:18;;;4962:25;4946:14;;;4939:49;5007:3;5048:18;;;5042:25;5026:14;;;5019:49;5087:3;5128:18;;;5122:25;5106:14;;;5099:49;5167:3;5208:18;;;5202:25;5186:14;;;5179:49;;;;-1:-1:-1;4667:5:154;4187:1071;-1:-1:-1;4187:1071:154:o;5263:878::-;5370:6;5423:3;5411:9;5402:7;5398:23;5394:33;5391:53;;;5440:1;5437;5430:12;5391:53;5473:2;5467:9;5515:3;5507:6;5503:16;5585:6;5573:10;5570:22;5549:18;5537:10;5534:34;5531:62;5528:185;;;5635:10;5630:3;5626:20;5623:1;5616:31;5670:4;5667:1;5660:15;5698:4;5695:1;5688:15;5528:185;5729:2;5722:22;5766:16;;5791:31;5766:16;5791:31;:::i;:::-;5846:5;5838:6;5831:21;;5906:2;5895:9;5891:18;5885:25;5880:2;5872:6;5868:15;5861:50;5965:2;5954:9;5950:18;5944:25;5939:2;5931:6;5927:15;5920:50;6015:2;6004:9;6000:18;5994:25;6028:41;6061:7;6028:41;:::i;:::-;6097:2;6085:15;;6078:32;6089:6;5263:878;-1:-1:-1;;;5263:878:154:o;6146:1095::-;6255:6;6286:3;6330:2;6318:9;6309:7;6305:23;6301:32;6298:52;;;6346:1;6343;6336:12;6298:52;6379:2;6373:9;6409:15;;;;6454:18;6439:34;;6475:22;;;6436:62;6433:185;;;6540:10;6535:3;6531:20;6528:1;6521:31;6575:4;6572:1;6565:15;6603:4;6600:1;6593:15;6433:185;6638:10;6634:2;6627:22;6677:9;6671:16;6658:29;;6696:31;6721:5;6696:31;:::i;:::-;6751:5;6743:6;6736:21;6811:2;6800:9;6796:18;6790:25;6785:2;6777:6;6773:15;6766:50;6870:2;6859:9;6855:18;6849:25;6844:2;6836:6;6832:15;6825:50;6908:57;6961:2;6950:9;6946:18;6908:57;:::i;:::-;6903:2;6895:6;6891:15;6884:82;7021:3;7010:9;7006:19;7000:26;6994:3;6986:6;6982:16;6975:52;7082:3;7071:9;7067:19;7061:26;7055:3;7047:6;7043:16;7036:52;7143:3;7132:9;7128:19;7122:26;7116:3;7108:6;7104:16;7097:52;7204:3;7193:9;7189:19;7183:26;7177:3;7169:6;7165:16;7158:52;7229:6;7219:16;;;;6146:1095;;;;:::o;7246:777::-;7354:6;7407:3;7395:9;7386:7;7382:23;7378:33;7375:53;;;7424:1;7421;7414:12;7375:53;7457:2;7451:9;7499:4;7491:6;7487:17;7570:6;7558:10;7555:22;7534:18;7522:10;7519:34;7516:62;7513:185;;;7620:10;7615:3;7611:20;7608:1;7601:31;7655:4;7652:1;7645:15;7683:4;7680:1;7673:15;7513:185;7714:2;7707:22;7753:54;7799:7;7788:9;7753:54;:::i;:::-;7738:70;;7864:3;7849:19;;7843:26;7836:4;7824:17;;7817:53;7924:3;7909:19;;7903:26;7898:2;7886:15;;7879:51;7986:3;7971:19;;;7965:26;7958:4;7946:17;;7939:53;-1:-1:-1;7745:6:154;7246:777;-1:-1:-1;7246:777:154:o;8028:981::-;8127:6;8180:3;8168:9;8159:7;8155:23;8151:33;8148:53;;;8197:1;8194;8187:12;8148:53;8230:2;8224:9;8272:3;8264:6;8260:16;8342:6;8330:10;8327:22;8306:18;8294:10;8291:34;8288:62;8285:185;;;8392:10;8387:3;8383:20;8380:1;8373:31;8427:4;8424:1;8417:15;8455:4;8452:1;8445:15;8285:185;8486:2;8479:22;8523:16;;8548:31;8523:16;8548:31;:::i;:::-;8603:5;8595:6;8588:21;;8663:2;8652:9;8648:18;8642:25;8637:2;8629:6;8625:15;8618:50;8722:2;8711:9;8707:18;8701:25;8696:2;8688:6;8684:15;8677:50;8781:2;8770:9;8766:18;8760:25;8755:2;8747:6;8743:15;8736:50;8831:3;8820:9;8816:19;8810:26;8845:30;8867:7;8845:30;:::i;:::-;8903:3;8891:16;;8884:33;8972:3;8957:19;;;8951:26;8933:16;;;8926:52;;;;-1:-1:-1;8895:6:154;8028:981;-1:-1:-1;8028:981:154:o;9014:847::-;9113:6;9166:3;9154:9;9145:7;9141:23;9137:33;9134:53;;;9183:1;9180;9173:12;9134:53;9216:2;9210:9;9258:3;9250:6;9246:16;9328:6;9316:10;9313:22;9292:18;9280:10;9277:34;9274:62;9271:185;;;9378:10;9373:3;9369:20;9366:1;9359:31;9413:4;9410:1;9403:15;9441:4;9438:1;9431:15;9271:185;9476:10;9472:2;9465:22;;9517:9;9511:16;9503:6;9496:32;9582:2;9571:9;9567:18;9561:25;9556:2;9548:6;9544:15;9537:50;9641:2;9630:9;9626:18;9620:25;9615:2;9607:6;9603:15;9596:50;9689:2;9678:9;9674:18;9668:25;9702:28;9724:5;9702:28;:::i;:::-;9758:2;9746:15;;9739:30;9824:3;9809:19;;;9803:26;9785:16;;;9778:52;;;;-1:-1:-1;9750:6:154;9014:847;-1:-1:-1;9014:847:154:o;9866:248::-;9961:6;10014:3;10002:9;9993:7;9989:23;9985:33;9982:53;;;10031:1;10028;10021:12;9982:53;10054:54;10100:7;10089:9;10054:54;:::i;10308:305::-;10395:6;10403;10411;10464:2;10452:9;10443:7;10439:23;10435:32;10432:52;;;10480:1;10477;10470:12;10432:52;10509:9;10503:16;10493:26;;10559:2;10548:9;10544:18;10538:25;10528:35;;10603:2;10592:9;10588:18;10582:25;10572:35;;10308:305;;;;;:::o;10618:245::-;10697:6;10705;10758:2;10746:9;10737:7;10733:23;10729:32;10726:52;;;10774:1;10771;10764:12;10726:52;-1:-1:-1;;10797:16:154;;10853:2;10838:18;;;10832:25;10797:16;;10832:25;;-1:-1:-1;10618:245:154:o;10868:377::-;10942:6;10950;10958;11011:2;10999:9;10990:7;10986:23;10982:32;10979:52;;;11027:1;11024;11017:12;10979:52;11063:9;11050:23;11040:33;;11120:2;11109:9;11105:18;11092:32;11082:42;;11174:2;11163:9;11159:18;11146:32;11187:28;11209:5;11187:28;:::i;:::-;11234:5;11224:15;;;10868:377;;;;;:::o;11250:316::-;11327:6;11335;11343;11396:2;11384:9;11375:7;11371:23;11367:32;11364:52;;;11412:1;11409;11402:12;11364:52;-1:-1:-1;;11435:23:154;;;11505:2;11490:18;;11477:32;;-1:-1:-1;11556:2:154;11541:18;;;11528:32;;11250:316;-1:-1:-1;11250:316:154:o;11571:446::-;11654:6;11662;11670;11678;11731:3;11719:9;11710:7;11706:23;11702:33;11699:53;;;11748:1;11745;11738:12;11699:53;11784:9;11771:23;11761:33;;11841:2;11830:9;11826:18;11813:32;11803:42;;11892:2;11881:9;11877:18;11864:32;11854:42;;11946:2;11935:9;11931:18;11918:32;11959:28;11981:5;11959:28;:::i;:::-;11571:446;;;;-1:-1:-1;11571:446:154;;-1:-1:-1;;11571:446:154:o;12227:238::-;12309:1;12302:5;12299:12;12289:143;;12354:10;12349:3;12345:20;12342:1;12335:31;12389:4;12386:1;12379:15;12417:4;12414:1;12407:15;12289:143;12441:18;;12227:238::o;12470:775::-;12548:12;;-1:-1:-1;;;;;12088:31:154;12076:44;;12615:4;12608:5;12604:16;12598:23;12591:4;12586:3;12582:14;12575:47;12671:4;12664:5;12660:16;12654:23;12647:4;12642:3;12638:14;12631:47;12727:4;12720:5;12716:16;12710:23;12703:4;12698:3;12694:14;12687:47;12783:4;12776:5;12772:16;12766:23;12759:4;12754:3;12750:14;12743:47;12839:4;12832:5;12828:16;12822:23;12815:4;12810:3;12806:14;12799:47;12892:4;12885:5;12881:16;12875:23;12907:45;12946:4;12941:3;12937:14;12923:12;12201:13;12194:21;12182:34;;12131:91;12907:45;-1:-1:-1;13001:4:154;12990:16;;;12984:23;12968:14;;;12961:47;13027:6;13069:14;;;13063:21;13049:12;;;13042:43;13104:6;13146:14;;;13140:21;13126:12;;;13119:43;13181:6;13223:14;;;13217:21;13203:12;;13196:43;12470:775::o;13250:356::-;13367:1;13363;13358:3;13354:11;13350:19;13342:5;13336:12;13332:38;13327:3;13320:51;13420:4;13413:5;13409:16;13403:23;13396:4;13391:3;13387:14;13380:47;13476:4;13469:5;13465:16;13459:23;13452:4;13447:3;13443:14;13436:47;13529:4;13522:5;13518:16;13512:23;13544:56;13594:4;13589:3;13585:14;13571:12;13544:56;:::i;20106:327::-;20312:3;20297:19;;20325:42;20301:9;20349:6;20325:42;:::i;:::-;20418:6;20411:14;20404:22;20398:3;20387:9;20383:19;20376:51;20106:327;;;;;:::o;20438:728::-;20730:3;20715:19;;20743:42;20719:9;20767:6;20743:42;:::i;:::-;20822:13;;20816:3;20801:19;;20794:42;20891:4;20879:17;;20873:24;20867:3;20852:19;;20845:53;20953:4;20941:17;;20935:24;20929:3;20914:19;;20907:53;21029:4;21017:17;;21011:24;21004:32;20997:40;20991:3;20976:19;;20969:69;21093:4;21081:17;;;21075:24;21069:3;21054:19;;21047:53;21144:14;;21137:22;21131:3;21116:19;;;21109:51;20438:728;;-1:-1:-1;20438:728:154:o;21171:459::-;21437:3;21422:19;;21450:42;21426:9;21474:6;21450:42;:::i;:::-;21529:6;21523:3;21512:9;21508:19;21501:35;21573:6;21567:3;21556:9;21552:19;21545:35;21617:6;21611:3;21600:9;21596:19;21589:35;21171:459;;;;;;;:::o;21635:278::-;21841:3;21826:19;;21854:53;21830:9;21889:6;21854:53;:::i;21918:350::-;22152:3;22137:19;;22165:53;22141:9;22200:6;22165:53;:::i;:::-;22255:6;22249:3;22238:9;22234:19;22227:35;21918:350;;;;;:::o;22718:766::-;23097:25;;;23084:3;23069:19;;23131:51;23178:2;23163:18;;23155:6;23131:51;:::i;:::-;23226:14;;23219:22;23213:3;23198:19;;23191:51;23273:3;23258:19;;23251:35;;;;23317:3;23302:19;;23295:35;;;;23361:3;23346:19;;23339:35;;;;23405:3;23390:19;;23383:35;23462:14;23455:22;23449:3;23434:19;;;23427:51;22718:766;;-1:-1:-1;;22718:766:154:o;25912:862::-;26340:25;;;26396:2;26381:18;;26374:34;;;26327:3;26312:19;;26417:51;26464:2;26449:18;;26441:6;26417:51;:::i;:::-;26477:55;26527:3;26516:9;26512:19;26504:6;26477:55;:::i;:::-;26563:3;26548:19;;26541:35;;;;26607:3;26592:19;;26585:35;;;;26651:3;26636:19;;26629:35;;;;26695:3;26680:19;;26673:35;26752:14;26745:22;26739:3;26724:19;;;26717:51;25912:862;;-1:-1:-1;;;;25912:862:154:o;27653:347::-;27720:2;27714:9;27762:6;27750:19;;27799:18;27784:34;;27820:22;;;27781:62;27778:185;;;27885:10;27880:3;27876:20;27873:1;27866:31;27920:4;27917:1;27910:15;27948:4;27945:1;27938:15;27778:185;27979:2;27972:22;27653:347;:::o;28005:349::-;28077:2;28071:9;28119:3;28107:16;;28153:18;28138:34;;28174:22;;;28135:62;28132:185;;;28239:10;28234:3;28230:20;28227:1;28220:31;28274:4;28271:1;28264:15;28302:4;28299:1;28292:15;28359:265;28398:3;28426:9;;;28451:10;;-1:-1:-1;;;;;28470:27:154;;;28463:35;;28447:52;28444:78;;;28502:18;;:::i;:::-;-1:-1:-1;;;28549:19:154;;;28542:27;;28534:36;;28531:62;;;28573:18;;:::i;:::-;-1:-1:-1;;28609:9:154;;28359:265::o;28629:128::-;28669:3;28700:1;28696:6;28693:1;28690:13;28687:39;;;28706:18;;:::i;:::-;-1:-1:-1;28742:9:154;;28629:128::o;28762:193::-;28801:1;28827;28817:35;;28832:18;;:::i;:::-;-1:-1:-1;;;28868:18:154;;-1:-1:-1;;28888:13:154;;28864:38;28861:64;;;28905:18;;:::i;:::-;-1:-1:-1;28939:10:154;;28762:193::o;28960:120::-;29000:1;29026;29016:35;;29031:18;;:::i;:::-;-1:-1:-1;29065:9:154;;28960:120::o;29085:553::-;29124:7;-1:-1:-1;;;;;29194:9:154;;;29222;;;29247:11;;;29266:10;;;29260:17;;29243:35;29240:61;;;29281:18;;:::i;:::-;-1:-1:-1;;;29357:1:154;29350:9;;29375:11;;;29395;;;29388:19;;29371:37;29368:63;;;29411:18;;:::i;:::-;29457:1;29454;29450:9;29440:19;;29504:1;29500:2;29495:11;29492:1;29488:19;29483:2;29479;29475:11;29471:37;29468:63;;;29511:18;;:::i;:::-;29576:1;29572:2;29567:11;29564:1;29560:19;29555:2;29551;29547:11;29543:37;29540:63;;;29583:18;;:::i;:::-;-1:-1:-1;;;29623:9:154;;;;;29085:553;-1:-1:-1;;;29085:553:154:o;29643:168::-;29683:7;29749:1;29745;29741:6;29737:14;29734:1;29731:21;29726:1;29719:9;29712:17;29708:45;29705:71;;;29756:18;;:::i;:::-;-1:-1:-1;29796:9:154;;29643:168::o;29816:125::-;29856:4;29884:1;29881;29878:8;29875:34;;;29889:18;;:::i;:::-;-1:-1:-1;29926:9:154;;29816:125::o;29946:136::-;29981:3;-1:-1:-1;;;30002:22:154;;29999:48;;;30027:18;;:::i;:::-;-1:-1:-1;30067:1:154;30063:13;;29946:136::o;30087:127::-;30148:10;30143:3;30139:20;30136:1;30129:31;30179:4;30176:1;30169:15;30203:4;30200:1;30193:15;30219:127;30280:10;30275:3;30271:20;30268:1;30261:31;30311:4;30308:1;30301:15;30335:4;30332:1;30325:15;30351:127;30412:10;30407:3;30403:20;30400:1;30393:31;30443:4;30440:1;30433:15;30467:4;30464:1;30457:15;30483:131;-1:-1:-1;;;;;30558:31:154;;30548:42;;30538:70;;30604:1;30601;30594:12;30538:70;30483:131;:::o;30619:118::-;30705:5;30698:13;30691:21;30684:5;30681:32;30671:60;;30727:1;30724;30717:12;30742:109;30825:1;30818:5;30815:12;30805:40;;30841:1;30838;30831:12","linkReferences":{}},"methodIdentifiers":{"closeTradeMarketCallback(uint256,uint256,bool)":"962e1f09","executeLimitCloseOrderCallback(uint256,uint256,bool)":"484aabb1","executeLimitOpenOrderCallback(uint256,uint256,uint256,bool)":"a875fc6b","initialize(address,address)":"485cc955","liqFeeP()":"74cbe6ee","liqTotalFeeP()":"69d017d5","openTradeMarketCallback(uint256,uint256,uint256,bool)":"1410f75b","pairInfos()":"1346b0ff","setFeeP(uint256,uint256,uint256)":"45ac0f9a","storageT()":"16fff074","transferFromVault(address,uint256)":"da8ddc74","updateMarginCallback(uint256,uint256,bool)":"4ec0e889","updateSlCallback(uint256,uint256,bool)":"8246cd19","vaultFeeP()":"c4493e37"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"}],\"name\":\"AddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"done\",\"type\":\"bool\"}],\"name\":\"Done\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_vaultFeeP\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_liqFeeP\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_liqTotalFeeP\",\"type\":\"uint256\"}],\"name\":\"FeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limitIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPosToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"t\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"enum ITradingStorage.LimitOrder\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"percentProfit\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"usdcSentToTrader\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPnl\",\"type\":\"bool\"}],\"name\":\"LimitExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSl\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"MarginUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPosToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct ITradingStorage.Trade\",\"name\":\"t\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"open\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"positionSizeUSDC\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"percentProfit\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"usdcSentToTrader\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"isPnl\",\"type\":\"bool\"}],\"name\":\"MarketExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"MarketOpenCanceled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"paused\",\"type\":\"bool\"}],\"name\":\"Pause\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"trader\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newSl\",\"type\":\"uint256\"}],\"name\":\"SlUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isPnl\",\"type\":\"bool\"}],\"name\":\"closeTradeMarketCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isPnl\",\"type\":\"bool\"}],\"name\":\"executeLimitCloseOrderCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"spreadP\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isPnl\",\"type\":\"bool\"}],\"name\":\"executeLimitOpenOrderCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_storageT\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_pairInfos\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liqFeeP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"liqTotalFeeP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"spreadP\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isPnl\",\"type\":\"bool\"}],\"name\":\"openTradeMarketCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pairInfos\",\"outputs\":[{\"internalType\":\"contract IPairInfos\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_liqFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_liqTotalFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_vaultFeeP\",\"type\":\"uint256\"}],\"name\":\"setFeeP\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageT\",\"outputs\":[{\"internalType\":\"contract ITradingStorage\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_trader\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transferFromVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isPnl\",\"type\":\"bool\"}],\"name\":\"updateMarginCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isPnl\",\"type\":\"bool\"}],\"name\":\"updateSlCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vaultFeeP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"closeTradeMarketCallback(uint256,uint256,bool)\":{\"details\":\"Callback function for closing a trade on the market.\",\"params\":{\"isPnl\":\"Bool indicating if IsPnl based Order.\",\"orderId\":\"orderId.\",\"price\":\"price.\"}},\"executeLimitCloseOrderCallback(uint256,uint256,bool)\":{\"details\":\"Callback function for executing limit close orders(TP/SL/LIQ)\",\"params\":{\"isPnl\":\"Bool indicating if IsPnl based Order.\",\"orderId\":\"orderId.\",\"price\":\"price.\"}},\"executeLimitOpenOrderCallback(uint256,uint256,uint256,bool)\":{\"details\":\"Callback function for executing limit open orders.\",\"params\":{\"isPnl\":\"Bool indicating if IsPnl based Order.\",\"orderId\":\"orderId.\",\"price\":\"price.\",\"spreadP\":\"spreadP.\"}},\"initialize(address,address)\":{\"details\":\"Initializes proxy\",\"params\":{\"_pairInfos\":\"Address of the PairInfos contract.\",\"_storageT\":\"Address of the Trading Storage contract.\"}},\"openTradeMarketCallback(uint256,uint256,uint256,bool)\":{\"details\":\"Callback function for opening a trade on the market.\",\"params\":{\"isPnl\":\"Is a Pnl Based Fee Type Order\",\"orderId\":\"orderId.\",\"price\":\"price.\",\"spreadP\":\"spreadP.\"}},\"setFeeP(uint256,uint256,uint256)\":{\"details\":\"Updates the fees for liquidation, total liquidation, and the vault. Can only be called by the governance address.\",\"params\":{\"_liqFeeP\":\"Executor Reward for Liquidation\",\"_liqTotalFeeP\":\"Total liquidation fee percentage inlcuding LP percentage\",\"_vaultFeeP\":\"New vault fee percentage of Total Fees\"}},\"transferFromVault(address,uint256)\":{\"params\":{\"_amount\":\"Amount to be transferred\",\"_trader\":\"Address of the trader\"}},\"updateMarginCallback(uint256,uint256,bool)\":{\"details\":\"Callback function for updating a trader's margin.(Deposit/Withdraw)\",\"params\":{\"isPnl\":\"Bool indicating if IsPnl based Order.\",\"orderId\":\"orderId.\",\"price\":\"price.\"}},\"updateSlCallback(uint256,uint256,bool)\":{\"params\":{\"isPnl\":\"Bool indicating if IsPnl based Order.\",\"orderId\":\"orderId.\",\"price\":\"price.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"transferFromVault(address,uint256)\":{\"notice\":\"Transfers funds from the vault to the trader\"},\"updateSlCallback(uint256,uint256,bool)\":{\"notice\":\"Updates stop loss order based on aggregator's callback\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/TradingCallbacks.sol\":\"TradingCallbacks\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":chainlink/=lib/chainlink/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pyth-sdk-solidity/=lib/pyth-sdk-solidity/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"src/TradingCallbacks.sol\":{\"keccak256\":\"0x5dd66f26622fe32154044cd2bbe4be21a11df47b996ad284720b52d77c1113be\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cab0b647100b381497206543c6ef232a05124cf98398e1affe0f2660859567a3\",\"dweb:/ipfs/QmP7CxHKTijoFfRk8mZDYbghdrowigmkeSgLcEWcwVNukc\"]},\"src/interfaces/ICallbacks.sol\":{\"keccak256\":\"0xaf271d97c8c47e52d493b1bbb1d0fb51768d6c94ac59aedbc71f5885649fcc3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3d0ae3efa5fd0448cc34d5c6166da6962186f7fa343490997f39ed593d4ab59\",\"dweb:/ipfs/QmRbxqvpg8UToeEX7sGQrToxhZKLeEKvBczrnZ9Qg887Lt\"]},\"src/interfaces/IExecute.sol\":{\"keccak256\":\"0x9d34356818b64942ede2aca017517b9ba329093207a0e417469641436d298c88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3536e9511c45ade7bb3a5ee5545e414fe55c4d3fc05410987a81d2c1590ed4b\",\"dweb:/ipfs/QmS5UbmedkTTnn2qYF5kz3xoEtQceaSpPMm4RdjQgf6isY\"]},\"src/interfaces/IPairInfos.sol\":{\"keccak256\":\"0x882f6c1b97ce23af4ab79a9d12d159ae177d6269fbbd1bc7b365786b8db1990a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3bd9136b25dd909dcbbfaee3f6c568bb8a94af552b52ddc3b0ea5a114d14048\",\"dweb:/ipfs/QmeCBEEbuBe25rQWCndoJHdHM2tBYcPb8CUE4aJr4KQmAP\"]},\"src/interfaces/IPairStorage.sol\":{\"keccak256\":\"0xeec105aed668f80ae66ae314acfe07103f82a5e280fbf234fe2a36d3d67d5a59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cca7c817e7d02629cb85cecc3312c9f4e9c1c22ecc2f0db80c25be9476ce7aff\",\"dweb:/ipfs/QmcnmFawRf9ygBUVQaLW9BD5d2YMSU5dgnkJWRXRHbMuSs\"]},\"src/interfaces/IPausable.sol\":{\"keccak256\":\"0x0cf760757842bd332ce27fac78b8dc0f7a36406529a213954bc463c2be174ecd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c69ee15b814b76caed732b47b729d1c2b361ed158b85220da30ea9aac893ad0e\",\"dweb:/ipfs/QmbF9HWVA7DCtNzK2LkRdvhMV1TuqTf9dzUzAKwQadHZnY\"]},\"src/interfaces/IPriceAggregator.sol\":{\"keccak256\":\"0x21992c3c324abffac8ccb282a5b40569787b786dd79fdf0df1fed6a4bf99b375\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fcb2ead0eeaccfd87a1003e01de8fc0ce97b8365bc9021a9f210dcdcee331ffe\",\"dweb:/ipfs/QmYXMuxPYKUbGSefB7c9AyTXxK7mS4hP9G4JL86mwANHnC\"]},\"src/interfaces/ITradingStorage.sol\":{\"keccak256\":\"0xa010a68fee744de912fbb3eddfb2012889ce22fa718b36cb5cecb90a51be8e8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4631c54588a7043a50e292fd3a84dcb7f25a27428759604c9d502a2469e56f1b\",\"dweb:/ipfs/QmREpbXoV8Z4ZgoxVFpViBCFrmijMXtBY2gDLfFGD7zD1S\"]},\"src/interfaces/IVaultManager.sol\":{\"keccak256\":\"0xa8ccf68fc5846dd0a638f7c337289d7a90b121ada4eb61802be4ff428319dd8e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de750a9805572838bfd630e9ae20f192f8d8a2d53226728aaf32ecd229e8cdb4\",\"dweb:/ipfs/Qmdqj88ry3c1AjABjY3D5PNvE84SXxDoj3M3JLDi8Zz5BS\"]},\"src/library/PositionMath.sol\":{\"keccak256\":\"0x02b855130b30da5e71c143006945ae31208082628e64720633c378029c42333c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a449300eedf6e864ef54e9e7d4c5d2e4c295f62d6a41925a3af33a0fb643b15c\",\"dweb:/ipfs/QmT6regWhrbyUUBui1ZLuW5DGfUFuCHpCVHQUxv9qbMVu1\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.7+commit.e28d00a7"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"string","name":"name","type":"string","indexed":false},{"internalType":"address","name":"a","type":"address","indexed":false}],"type":"event","name":"AddressUpdated","anonymous":false},{"inputs":[{"internalType":"bool","name":"done","type":"bool","indexed":false}],"type":"event","name":"Done","anonymous":false},{"inputs":[{"internalType":"uint256","name":"_vaultFeeP","type":"uint256","indexed":false},{"internalType":"uint256","name":"_liqFeeP","type":"uint256","indexed":false},{"internalType":"uint256","name":"_liqTotalFeeP","type":"uint256","indexed":false}],"type":"event","name":"FeeUpdated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"uint256","name":"limitIndex","type":"uint256","indexed":false},{"internalType":"struct ITradingStorage.Trade","name":"t","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"initialPosToken","type":"uint256"},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"indexed":false},{"internalType":"enum ITradingStorage.LimitOrder","name":"orderType","type":"uint8","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256","indexed":false},{"internalType":"int256","name":"percentProfit","type":"int256","indexed":false},{"internalType":"uint256","name":"usdcSentToTrader","type":"uint256","indexed":false},{"internalType":"bool","name":"isPnl","type":"bool","indexed":false}],"type":"event","name":"LimitExecuted","anonymous":false},{"inputs":[{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"newSl","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"MarginUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"struct ITradingStorage.Trade","name":"t","type":"tuple","components":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"uint256","name":"initialPosToken","type":"uint256"},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256"},{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"tp","type":"uint256"},{"internalType":"uint256","name":"sl","type":"uint256"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"indexed":false},{"internalType":"bool","name":"open","type":"bool","indexed":false},{"internalType":"uint256","name":"price","type":"uint256","indexed":false},{"internalType":"uint256","name":"positionSizeUSDC","type":"uint256","indexed":false},{"internalType":"int256","name":"percentProfit","type":"int256","indexed":false},{"internalType":"uint256","name":"usdcSentToTrader","type":"uint256","indexed":false},{"internalType":"bool","name":"isPnl","type":"bool","indexed":false}],"type":"event","name":"MarketExecuted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false}],"type":"event","name":"MarketOpenCanceled","anonymous":false},{"inputs":[{"internalType":"bool","name":"paused","type":"bool","indexed":false}],"type":"event","name":"Pause","anonymous":false},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256","indexed":false},{"internalType":"address","name":"trader","type":"address","indexed":true},{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"newSl","type":"uint256","indexed":false}],"type":"event","name":"SlUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bool","name":"isPnl","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"closeTradeMarketCallback"},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bool","name":"isPnl","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"executeLimitCloseOrderCallback"},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"spreadP","type":"uint256"},{"internalType":"bool","name":"isPnl","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"executeLimitOpenOrderCallback"},{"inputs":[{"internalType":"address","name":"_storageT","type":"address"},{"internalType":"address","name":"_pairInfos","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"liqFeeP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"liqTotalFeeP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"uint256","name":"spreadP","type":"uint256"},{"internalType":"bool","name":"isPnl","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"openTradeMarketCallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"pairInfos","outputs":[{"internalType":"contract IPairInfos","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_liqFeeP","type":"uint256"},{"internalType":"uint256","name":"_liqTotalFeeP","type":"uint256"},{"internalType":"uint256","name":"_vaultFeeP","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setFeeP"},{"inputs":[],"stateMutability":"view","type":"function","name":"storageT","outputs":[{"internalType":"contract ITradingStorage","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_trader","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFromVault"},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bool","name":"isPnl","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"updateMarginCallback"},{"inputs":[{"internalType":"uint256","name":"orderId","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bool","name":"isPnl","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"updateSlCallback"},{"inputs":[],"stateMutability":"view","type":"function","name":"vaultFeeP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"closeTradeMarketCallback(uint256,uint256,bool)":{"details":"Callback function for closing a trade on the market.","params":{"isPnl":"Bool indicating if IsPnl based Order.","orderId":"orderId.","price":"price."}},"executeLimitCloseOrderCallback(uint256,uint256,bool)":{"details":"Callback function for executing limit close orders(TP/SL/LIQ)","params":{"isPnl":"Bool indicating if IsPnl based Order.","orderId":"orderId.","price":"price."}},"executeLimitOpenOrderCallback(uint256,uint256,uint256,bool)":{"details":"Callback function for executing limit open orders.","params":{"isPnl":"Bool indicating if IsPnl based Order.","orderId":"orderId.","price":"price.","spreadP":"spreadP."}},"initialize(address,address)":{"details":"Initializes proxy","params":{"_pairInfos":"Address of the PairInfos contract.","_storageT":"Address of the Trading Storage contract."}},"openTradeMarketCallback(uint256,uint256,uint256,bool)":{"details":"Callback function for opening a trade on the market.","params":{"isPnl":"Is a Pnl Based Fee Type Order","orderId":"orderId.","price":"price.","spreadP":"spreadP."}},"setFeeP(uint256,uint256,uint256)":{"details":"Updates the fees for liquidation, total liquidation, and the vault. Can only be called by the governance address.","params":{"_liqFeeP":"Executor Reward for Liquidation","_liqTotalFeeP":"Total liquidation fee percentage inlcuding LP percentage","_vaultFeeP":"New vault fee percentage of Total Fees"}},"transferFromVault(address,uint256)":{"params":{"_amount":"Amount to be transferred","_trader":"Address of the trader"}},"updateMarginCallback(uint256,uint256,bool)":{"details":"Callback function for updating a trader's margin.(Deposit/Withdraw)","params":{"isPnl":"Bool indicating if IsPnl based Order.","orderId":"orderId.","price":"price."}},"updateSlCallback(uint256,uint256,bool)":{"params":{"isPnl":"Bool indicating if IsPnl based Order.","orderId":"orderId.","price":"price."}}},"version":1},"userdoc":{"kind":"user","methods":{"transferFromVault(address,uint256)":{"notice":"Transfers funds from the vault to the trader"},"updateSlCallback(uint256,uint256,bool)":{"notice":"Updates stop loss order based on aggregator's callback"}},"version":1}},"settings":{"remappings":["@chainlink/=lib/chainlink/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","chainlink/=lib/chainlink/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/","pyth-sdk-solidity/=lib/pyth-sdk-solidity/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/TradingCallbacks.sol":"TradingCallbacks"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794","urls":["bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e","dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422","urls":["bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b","dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305","urls":["bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5","dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"],"license":"MIT"},"src/TradingCallbacks.sol":{"keccak256":"0x5dd66f26622fe32154044cd2bbe4be21a11df47b996ad284720b52d77c1113be","urls":["bzz-raw://cab0b647100b381497206543c6ef232a05124cf98398e1affe0f2660859567a3","dweb:/ipfs/QmP7CxHKTijoFfRk8mZDYbghdrowigmkeSgLcEWcwVNukc"],"license":"MIT"},"src/interfaces/ICallbacks.sol":{"keccak256":"0xaf271d97c8c47e52d493b1bbb1d0fb51768d6c94ac59aedbc71f5885649fcc3c","urls":["bzz-raw://f3d0ae3efa5fd0448cc34d5c6166da6962186f7fa343490997f39ed593d4ab59","dweb:/ipfs/QmRbxqvpg8UToeEX7sGQrToxhZKLeEKvBczrnZ9Qg887Lt"],"license":"MIT"},"src/interfaces/IExecute.sol":{"keccak256":"0x9d34356818b64942ede2aca017517b9ba329093207a0e417469641436d298c88","urls":["bzz-raw://f3536e9511c45ade7bb3a5ee5545e414fe55c4d3fc05410987a81d2c1590ed4b","dweb:/ipfs/QmS5UbmedkTTnn2qYF5kz3xoEtQceaSpPMm4RdjQgf6isY"],"license":"MIT"},"src/interfaces/IPairInfos.sol":{"keccak256":"0x882f6c1b97ce23af4ab79a9d12d159ae177d6269fbbd1bc7b365786b8db1990a","urls":["bzz-raw://d3bd9136b25dd909dcbbfaee3f6c568bb8a94af552b52ddc3b0ea5a114d14048","dweb:/ipfs/QmeCBEEbuBe25rQWCndoJHdHM2tBYcPb8CUE4aJr4KQmAP"],"license":"MIT"},"src/interfaces/IPairStorage.sol":{"keccak256":"0xeec105aed668f80ae66ae314acfe07103f82a5e280fbf234fe2a36d3d67d5a59","urls":["bzz-raw://cca7c817e7d02629cb85cecc3312c9f4e9c1c22ecc2f0db80c25be9476ce7aff","dweb:/ipfs/QmcnmFawRf9ygBUVQaLW9BD5d2YMSU5dgnkJWRXRHbMuSs"],"license":"MIT"},"src/interfaces/IPausable.sol":{"keccak256":"0x0cf760757842bd332ce27fac78b8dc0f7a36406529a213954bc463c2be174ecd","urls":["bzz-raw://c69ee15b814b76caed732b47b729d1c2b361ed158b85220da30ea9aac893ad0e","dweb:/ipfs/QmbF9HWVA7DCtNzK2LkRdvhMV1TuqTf9dzUzAKwQadHZnY"],"license":"MIT"},"src/interfaces/IPriceAggregator.sol":{"keccak256":"0x21992c3c324abffac8ccb282a5b40569787b786dd79fdf0df1fed6a4bf99b375","urls":["bzz-raw://fcb2ead0eeaccfd87a1003e01de8fc0ce97b8365bc9021a9f210dcdcee331ffe","dweb:/ipfs/QmYXMuxPYKUbGSefB7c9AyTXxK7mS4hP9G4JL86mwANHnC"],"license":"MIT"},"src/interfaces/ITradingStorage.sol":{"keccak256":"0xa010a68fee744de912fbb3eddfb2012889ce22fa718b36cb5cecb90a51be8e8f","urls":["bzz-raw://4631c54588a7043a50e292fd3a84dcb7f25a27428759604c9d502a2469e56f1b","dweb:/ipfs/QmREpbXoV8Z4ZgoxVFpViBCFrmijMXtBY2gDLfFGD7zD1S"],"license":"MIT"},"src/interfaces/IVaultManager.sol":{"keccak256":"0xa8ccf68fc5846dd0a638f7c337289d7a90b121ada4eb61802be4ff428319dd8e","urls":["bzz-raw://de750a9805572838bfd630e9ae20f192f8d8a2d53226728aaf32ecd229e8cdb4","dweb:/ipfs/Qmdqj88ry3c1AjABjY3D5PNvE84SXxDoj3M3JLDi8Zz5BS"],"license":"MIT"},"src/library/PositionMath.sol":{"keccak256":"0x02b855130b30da5e71c143006945ae31208082628e64720633c378029c42333c","urls":["bzz-raw://a449300eedf6e864ef54e9e7d4c5d2e4c295f62d6a41925a3af33a0fb643b15c","dweb:/ipfs/QmT6regWhrbyUUBui1ZLuW5DGfUFuCHpCVHQUxv9qbMVu1"],"license":"MIT"}},"version":1},"id":112}