avantis-trader-sdk 0.3.1__py3-none-any.whl → 0.6.0__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.
- avantis_trader_sdk/__init__.py +22 -1
- avantis_trader_sdk/abis/PairStorage.sol/PairStorage.json +1 -1
- avantis_trader_sdk/client.py +6 -0
- avantis_trader_sdk/config.py +2 -2
- avantis_trader_sdk/rpc/fee_parameters.py +38 -20
- avantis_trader_sdk/rpc/pairs_cache.py +22 -6
- avantis_trader_sdk/rpc/trade.py +60 -2
- avantis_trader_sdk/types.py +71 -9
- {avantis_trader_sdk-0.3.1.dist-info → avantis_trader_sdk-0.6.0.dist-info}/METADATA +2 -2
- {avantis_trader_sdk-0.3.1.dist-info → avantis_trader_sdk-0.6.0.dist-info}/RECORD +12 -12
- {avantis_trader_sdk-0.3.1.dist-info → avantis_trader_sdk-0.6.0.dist-info}/WHEEL +0 -0
- {avantis_trader_sdk-0.3.1.dist-info → avantis_trader_sdk-0.6.0.dist-info}/top_level.txt +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addFee","inputs":[{"name":"_fee","type":"tuple","internalType":"struct IPairStorage.Fee","components":[{"name":"name","type":"string","internalType":"string"},{"name":"openFeeP","type":"uint256","internalType":"uint256"},{"name":"closeFeeP","type":"uint256","internalType":"uint256"},{"name":"limitOrderFeeP","type":"uint256","internalType":"uint256"},{"name":"minLevPosUSDC","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addGroup","inputs":[{"name":"_group","type":"tuple","internalType":"struct IPairStorage.Group","components":[{"name":"name","type":"string","internalType":"string"},{"name":"minLeverage","type":"uint256","internalType":"uint256"},{"name":"maxLeverage","type":"uint256","internalType":"uint256"},{"name":"maxOpenInterestP","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addPair","inputs":[{"name":"_pair","type":"tuple","internalType":"struct IPairStorage.Pair","components":[{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"},{"name":"feed","type":"tuple","internalType":"struct IPairStorage.Feed","components":[{"name":"maxDeviationP","type":"uint256","internalType":"uint256"},{"name":"feedId","type":"bytes32","internalType":"bytes32"}]},{"name":"backupFeed","type":"tuple","internalType":"struct IPairStorage.BackupFeed","components":[{"name":"maxDeviationP","type":"uint256","internalType":"uint256"},{"name":"feedId","type":"address","internalType":"address"}]},{"name":"spreadP","type":"uint256","internalType":"uint256"},{"name":"priceImpactMultiplier","type":"uint256","internalType":"uint256"},{"name":"skewImpactMultiplier","type":"int256","internalType":"int256"},{"name":"groupIndex","type":"uint256","internalType":"uint256"},{"name":"feeIndex","type":"uint256","internalType":"uint256"},{"name":"groupOpenInterestPecentage","type":"uint256","internalType":"uint256"},{"name":"maxWalletOI","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addSkewOpenFees","inputs":[{"name":"_skewFee","type":"tuple","internalType":"struct IPairStorage.SkewFee","components":[{"name":"eqParams","type":"int256[2][10]","internalType":"int256[2][10]"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"blockOILimit","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"currentOrderId","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"delistPair","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fees","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"name","type":"string","internalType":"string"},{"name":"openFeeP","type":"uint256","internalType":"uint256"},{"name":"closeFeeP","type":"uint256","internalType":"uint256"},{"name":"limitOrderFeeP","type":"uint256","internalType":"uint256"},{"name":"minLevPosUSDC","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"feesCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"groupMaxOI","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"groupOI","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"groupOIs","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"groups","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"name","type":"string","internalType":"string"},{"name":"minLeverage","type":"uint256","internalType":"uint256"},{"name":"maxLeverage","type":"uint256","internalType":"uint256"},{"name":"maxOpenInterestP","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"groupsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"guaranteedSlEnabled","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_storageT","type":"address","internalType":"address"},{"name":"_currentOrderId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isPairListed","inputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isUSDCAligned","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"lossProtection","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"lossProtectionMultiplier","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_tier","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxWalletOI","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairBackupFeed","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IPairStorage.BackupFeed","components":[{"name":"maxDeviationP","type":"uint256","internalType":"uint256"},{"name":"feedId","type":"address","internalType":"address"}]}],"stateMutability":"view"},{"type":"function","name":"pairCloseFeeP","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairFeed","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IPairStorage.Feed","components":[{"name":"maxDeviationP","type":"uint256","internalType":"uint256"},{"name":"feedId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"pairGroupIndex","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairJob","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"},{"name":"","type":"string","internalType":"string"},{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"pairLimitOrderFeeP","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairMaxLeverage","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairMaxOI","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairMinLevPosUSDC","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairMinLeverage","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairOpenFeeP","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_leveragedPosition","type":"uint256","internalType":"uint256"},{"name":"_buy","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairPriceImpactMultiplier","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairSkewImpactMultiplier","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"pairSpreadP","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairs","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"},{"name":"feed","type":"tuple","internalType":"struct IPairStorage.Feed","components":[{"name":"maxDeviationP","type":"uint256","internalType":"uint256"},{"name":"feedId","type":"bytes32","internalType":"bytes32"}]},{"name":"backupFeed","type":"tuple","internalType":"struct IPairStorage.BackupFeed","components":[{"name":"maxDeviationP","type":"uint256","internalType":"uint256"},{"name":"feedId","type":"address","internalType":"address"}]},{"name":"spreadP","type":"uint256","internalType":"uint256"},{"name":"priceImpactMultiplier","type":"uint256","internalType":"uint256"},{"name":"skewImpactMultiplier","type":"int256","internalType":"int256"},{"name":"groupIndex","type":"uint256","internalType":"uint256"},{"name":"feeIndex","type":"uint256","internalType":"uint256"},{"name":"groupOpenInterestPecentage","type":"uint256","internalType":"uint256"},{"name":"maxWalletOI","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairsBackend","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IPairStorage.Pair","components":[{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"},{"name":"feed","type":"tuple","internalType":"struct IPairStorage.Feed","components":[{"name":"maxDeviationP","type":"uint256","internalType":"uint256"},{"name":"feedId","type":"bytes32","internalType":"bytes32"}]},{"name":"backupFeed","type":"tuple","internalType":"struct IPairStorage.BackupFeed","components":[{"name":"maxDeviationP","type":"uint256","internalType":"uint256"},{"name":"feedId","type":"address","internalType":"address"}]},{"name":"spreadP","type":"uint256","internalType":"uint256"},{"name":"priceImpactMultiplier","type":"uint256","internalType":"uint256"},{"name":"skewImpactMultiplier","type":"int256","internalType":"int256"},{"name":"groupIndex","type":"uint256","internalType":"uint256"},{"name":"feeIndex","type":"uint256","internalType":"uint256"},{"name":"groupOpenInterestPecentage","type":"uint256","internalType":"uint256"},{"name":"maxWalletOI","type":"uint256","internalType":"uint256"}]},{"name":"","type":"tuple","internalType":"struct IPairStorage.Group","components":[{"name":"name","type":"string","internalType":"string"},{"name":"minLeverage","type":"uint256","internalType":"uint256"},{"name":"maxLeverage","type":"uint256","internalType":"uint256"},{"name":"maxOpenInterestP","type":"uint256","internalType":"uint256"}]},{"name":"","type":"tuple","internalType":"struct IPairStorage.Fee","components":[{"name":"name","type":"string","internalType":"string"},{"name":"openFeeP","type":"uint256","internalType":"uint256"},{"name":"closeFeeP","type":"uint256","internalType":"uint256"},{"name":"limitOrderFeeP","type":"uint256","internalType":"uint256"},{"name":"minLevPosUSDC","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"pairsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setBlockOILImits","inputs":[{"name":"_pairIndex","type":"uint256[]","internalType":"uint256[]"},{"name":"_limits","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"skewedFeesCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"storageT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ITradingStorage"}],"stateMutability":"view"},{"type":"function","name":"udpateSkewOpenFees","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_skewFee","type":"tuple","internalType":"struct IPairStorage.SkewFee","components":[{"name":"eqParams","type":"int256[2][10]","internalType":"int256[2][10]"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateFee","inputs":[{"name":"_id","type":"uint256","internalType":"uint256"},{"name":"_fee","type":"tuple","internalType":"struct IPairStorage.Fee","components":[{"name":"name","type":"string","internalType":"string"},{"name":"openFeeP","type":"uint256","internalType":"uint256"},{"name":"closeFeeP","type":"uint256","internalType":"uint256"},{"name":"limitOrderFeeP","type":"uint256","internalType":"uint256"},{"name":"minLevPosUSDC","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateGroup","inputs":[{"name":"_id","type":"uint256","internalType":"uint256"},{"name":"_group","type":"tuple","internalType":"struct IPairStorage.Group","components":[{"name":"name","type":"string","internalType":"string"},{"name":"minLeverage","type":"uint256","internalType":"uint256"},{"name":"maxLeverage","type":"uint256","internalType":"uint256"},{"name":"maxOpenInterestP","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateGroupOI","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_long","type":"bool","internalType":"bool"},{"name":"_increase","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateLossProtectionMultiplier","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_tier","type":"uint256[]","internalType":"uint256[]"},{"name":"_multiplierPercent","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updatePair","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_pair","type":"tuple","internalType":"struct IPairStorage.Pair","components":[{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"},{"name":"feed","type":"tuple","internalType":"struct IPairStorage.Feed","components":[{"name":"maxDeviationP","type":"uint256","internalType":"uint256"},{"name":"feedId","type":"bytes32","internalType":"bytes32"}]},{"name":"backupFeed","type":"tuple","internalType":"struct IPairStorage.BackupFeed","components":[{"name":"maxDeviationP","type":"uint256","internalType":"uint256"},{"name":"feedId","type":"address","internalType":"address"}]},{"name":"spreadP","type":"uint256","internalType":"uint256"},{"name":"priceImpactMultiplier","type":"uint256","internalType":"uint256"},{"name":"skewImpactMultiplier","type":"int256","internalType":"int256"},{"name":"groupIndex","type":"uint256","internalType":"uint256"},{"name":"feeIndex","type":"uint256","internalType":"uint256"},{"name":"groupOpenInterestPecentage","type":"uint256","internalType":"uint256"},{"name":"maxWalletOI","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BlockOILimitsSet","inputs":[{"name":"pairIndex","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"limits","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"FeeAdded","inputs":[{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"name","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"FeeUpdated","inputs":[{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"GroupAdded","inputs":[{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"name","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"GroupUpdated","inputs":[{"name":"index","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":"LossProtectionAdded","inputs":[{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tier","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"multiplier","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"OrderLimitsSet","inputs":[{"name":"pairIndex","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"limits","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"PairAdded","inputs":[{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"from","type":"string","indexed":false,"internalType":"string"},{"name":"to","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"PairUpdated","inputs":[{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SkewFeeAdded","inputs":[{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SkewFeeUpdated","inputs":[{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61449e80620000f36000396000f3fe608060405234801561001057600080fd5b50600436106102955760003560e01c80636d8b5224116101675780639a7c200e116100ce578063b91ac78811610087578063b91ac788146107c1578063cd6dc687146107eb578063e70ab5cd146107fe578063e8b50f8414610811578063f645aff514610824578063fb3e519d1461083757600080fd5b80639a7c200e1461073b5780639ae6b9e01461074e578063a1d54e9b1461076e578063a1ead06414610792578063b2e1b2d6146107a5578063b81b2b71146107b857600080fd5b8063885e275011610120578063885e2750146106be5780638c9a0ea4146106c7578063925931fc146106da5780639567dccf146106e35780639586621f1461070557806396324bd41461071857600080fd5b80636d8b5224146106365780636dc37de31461063f57806372fce6f01461065257806374db8c89146106655780637f684baf14610678578063836a341a1461068b57600080fd5b80633c44d0a31161020b5780635a3e32e0116101c45780635a3e32e01461055c5780635e4f8f591461056f5780635fc8cd2814610582578063649a648814610595578063658de48a146105c8578063685e905b146105d157600080fd5b80633c44d0a3146104a95780633d7a5f1a146104cc5780634acc79ed146104df5780634ffe8aec1461050357806356e5536c1461051657806359a992d01461052957600080fd5b80631eaa005c1161025d5780631eaa005c1461038c578063238cd23f146103e857806324abd3fb1461041b578063281b693c1461043f5780632b1cbe9d14610472578063302f81fc1461048557600080fd5b806310ed40881461029a57806315b40d91146102af5780631628bfeb146102ed57806316fff074146103485780631a67bacc14610379575b600080fd5b6102ad6102a83660046134d5565b61084a565b005b6102da6102bd3660046137f1565b600b60209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b6103386102fb366004613540565b8151602081840181018051600982529282019482019490942091909352815180830184018051928152908401929093019190912091525460ff1681565b60405190151581526020016102e4565b600054610361906201000090046001600160a01b031681565b6040516001600160a01b0390911681526020016102e4565b6102ad610387366004613647565b6109f8565b6103db61039a366004613664565b604080518082019091526000808252602082015250600090815260066020908152604091829020825180840190935260028101548352600301549082015290565b6040516102e49190613c4f565b6102da6103f6366004613664565b6000908152600660209081526040808320600a01548352600890915290206004015490565b610338610429366004613664565b6000908152600660205260409020600901541590565b6102da61044d366004613664565b6000908152600660209081526040808320600901548352600790915290206002015490565b6102da6104803660046137f1565b610b16565b610498610493366004613664565b610b37565b6040516102e4959493929190613a71565b6102da6104b7366004613664565b60009081526006602052604090206009015490565b6102ad6104da3660046137c3565b610e93565b6104f26104ed366004613664565b610f9d565b6040516102e4959493929190613b85565b6102ad610511366004613848565b611053565b6102da610524366004613664565b6111ed565b6102da610537366004613664565b6000908152600660209081526040808320600901548352600790915290206001015490565b6102ad61056a36600461374b565b61121f565b6102da61057d366004613664565b6113fc565b6102da610590366004613664565b61142b565b6102da6105a3366004613664565b6000908152600660209081526040808320600a01548352600890915290206003015490565b6102da60045481565b6106296105df366004613664565b604080518082019091526000808252602082015250600090815260066020908152604091829020825180840190935260048101548352600501546001600160a01b03169082015290565b6040516102e49190613c2f565b6102da60055481565b61033861064d366004613664565b61160d565b6102ad6106603660046135df565b611672565b6102ad610673366004613664565b61181d565b6102ad6106863660046135a3565b611a48565b6102da610699366004613664565b6000908152600660209081526040808320600a01548352600890915290206002015490565b6102da60035481565b6102da6106d5366004613664565b611bc0565b6102da60015481565b6106f66106f1366004613664565b611ce6565b6040516102e493929190613c66565b6102ad610713366004613696565b612108565b61072b610726366004613664565b6122e4565b6040516102e49493929190613b56565b6102ad61074936600461370f565b612394565b6102da61075c366004613664565b600d6020526000908152604090205481565b6102da61077c366004613664565b6000908152600660208190526040909120015490565b6102da6107a03660046137f1565b612538565b6102da6107b3366004613664565b61255d565b6102da60025481565b6107d46107cf366004613664565b612586565b6040516102e49b9a99989796959493929190613abd565b6102ad6107f93660046134a9565b612721565b6102ad61080c366004613613565b612890565b6102da61081f366004613664565b612b91565b6102ad610832366004613787565b612d73565b6102da610845366004613813565b612fc8565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561089857600080fd5b505afa1580156108ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d0919061348c565b6001600160a01b0316336001600160a01b0316146109095760405162461bcd60e51b815260040161090090613c0d565b60405180910390fd5b8281146109475760405162461bcd60e51b815260206004820152600c60248201526b0988a9cbe9a92a69a82a886960a31b6044820152606401610900565b60005b60ff81168411156109b45782828260ff1681811061096a5761096a61416b565b90506020020135600d600087878560ff1681811061098a5761098a61416b565b90506020020135815260200190815260200160002081905550806109ad90614135565b905061094a565b507fc5c5af5d05689513c60f635389c8449ac23f2b277af3a15f88c21c6de36fcf14848484846040516109ea9493929190613a3f565b60405180910390a150505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015610a4657600080fd5b505afa158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e919061348c565b6001600160a01b0316336001600160a01b031614610aae5760405162461bcd60e51b815260040161090090613c0d565b6005546000908152600c602052604090208190610acb8282614408565b5050600580547f5d7a16e490fc66ca6522d4ba0437ac1a3b97cf25666340a19e408176295826d7916000610afe8361411a565b9091555060405190815260200160405180910390a150565b6000828152600b602090815260408083208484529091529020545b92915050565b60608060008060008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8c57600080fd5b505afa158015610ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc4919061348c565b6001600160a01b0316336001600160a01b031614610c165760405162461bcd60e51b815260206004820152600f60248201526e41474752454741544f525f4f4e4c5960881b6044820152606401610900565b60008681526006602052604080822081516101608101909252805482908290610c3e906140d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6a906140d0565b8015610cb75780601f10610c8c57610100808354040283529160200191610cb7565b820191906000526020600020905b815481529060010190602001808311610c9a57829003601f168201915b50505050508152602001600182018054610cd0906140d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610cfc906140d0565b8015610d495780601f10610d1e57610100808354040283529160200191610d49565b820191906000526020600020905b815481529060010190602001808311610d2c57829003601f168201915b505050918352505060408051808201825260028401548152600384015460208281019190915280840191909152815180830183526004850154815260058501546001600160a01b031691810191909152818301526006830154606083015260078301546080830152600883015460a083015260098084015460c0840152600a84015460e0840152600b840154610100840152600c9093015461012090920191909152825190519293509091610dfe91906139b1565b90815260200160405180910390208160200151604051610e1e91906139b1565b9081526040519081900360200190205460ff16610e4d5760405162461bcd60e51b815260040161090090613bbc565b8060000151816020015182604001516020015183606001516020015160016000815480929190610e7c9061411a565b90915550939b929a50909850965090945092505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015610ee157600080fd5b505afa158015610ef5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f19919061348c565b6001600160a01b0316336001600160a01b031614610f495760405162461bcd60e51b815260040161090090613c0d565b6000828152600c602052604090208190610f638282614408565b50506040518281527f049d8e73ae29fd805de1f8eae372a5020742554b37118c1e33687e89ef3027ff906020015b60405180910390a15050565b600860205260009081526040902080548190610fb8906140d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610fe4906140d0565b80156110315780601f1061100657610100808354040283529160200191611031565b820191906000526020600020905b81548152906001019060200180831161101457829003601f168201915b5050505050908060010154908060020154908060030154908060040154905085565b600060029054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b1580156110a057600080fd5b505afa1580156110b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d8919061348c565b6001600160a01b0316336001600160a01b0316146111295760405162461bcd60e51b815260206004820152600e60248201526d43414c4c4241434b535f4f4e4c5960901b6044820152606401610900565b6000848152600660209081526040808320600901548352600a90915281209083611154576001611157565b60005b60ff169050821561119057848282600281106111755761117561416b565b0160008282546111859190613e76565b909155506111e59050565b848282600281106111a3576111a361416b565b0154116111b15760006111d0565b848282600281106111c4576111c461416b565b01546111d09190613f54565b8282600281106111e2576111e261416b565b01555b505050505050565b6000818152600660205260408120600c015460649061120b84611bc0565b6112159190613f35565b610b319190613e8e565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561126d57600080fd5b505afa158015611281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a5919061348c565b6001600160a01b0316336001600160a01b0316146112d55760405162461bcd60e51b815260040161090090613c0d565b60008281526007602052604090206001015482906113285760405162461bcd60e51b815260206004820152601060248201526f11d493d55417d393d517d31254d5115160821b6044820152606401610900565b816113396402540be4006002613f35565b81602001351015801561135f57506113576402540be4006096613f35565b816040013511155b8015611372575080604001358160200135105b6113b05760405162461bcd60e51b815260206004820152600f60248201526e57524f4e475f4c455645524147455360881b6044820152606401610900565b600084815260076020526040902083906113ca8282614284565b50506040518481527fcfde8f228364c70f12cbbac5a88fc91ceca76dd750ac93364991a333b34afb8e906020016109ea565b6000818152600660209081526040808320600901548352600a909152812060018101549054610b319190613e76565b6000818152600660205260408082208151610160810190925280548392919082908290611457906140d0565b80601f0160208091040260200160405190810160405280929190818152602001828054611483906140d0565b80156114d05780601f106114a5576101008083540402835291602001916114d0565b820191906000526020600020905b8154815290600101906020018083116114b357829003601f168201915b505050505081526020016001820180546114e9906140d0565b80601f0160208091040260200160405190810160405280929190818152602001828054611515906140d0565b80156115625780601f1061153757610100808354040283529160200191611562565b820191906000526020600020905b81548152906001019060200180831161154557829003601f168201915b505050918352505060408051808201825260028401548152600384015460208281019190915280840191909152815180830183526004850154815260058501546001600160a01b031691810191909152908201526006820154606082015260078201546080820152600882015460a080830191909152600983015460c0830152600a83015460e0830152600b830154610100830152600c909201546101209091015201519392505050565b604051621554d160ea1b602082015260009060230160408051601f1981840301815282825280516020918201206000868152600683529290922091926116549291016139cd565b60405160208183030381529060405280519060200120149050919050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156116c057600080fd5b505afa1580156116d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f8919061348c565b6001600160a01b0316336001600160a01b0316146117285760405162461bcd60e51b815260040161090090613c0d565b806117396402540be4006002613f35565b81602001351015801561175f57506117576402540be4006096613f35565b816040013511155b8015611772575080604001358160200135105b6117b05760405162461bcd60e51b815260206004820152600f60248201526e57524f4e475f4c455645524147455360881b6044820152606401610900565b600354600090815260076020526040902082906117cd8282614284565b5050600380547faf17de8e82beccc440012117a600dc37e26925225d0f1ee192fc107eb3dcbca49160006118008361411a565b9091555061180e8480613def565b604051610f9193929190613d9f565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561186b57600080fd5b505afa15801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a3919061348c565b6001600160a01b0316336001600160a01b0316146118d35760405162461bcd60e51b815260040161090090613c0d565b6000818152600660205260409081902090516009906118f39083906139cd565b90815260200160405180910390208160010160405161191291906139cd565b9081526040519081900360200190205460ff166119415760405162461bcd60e51b815260040161090090613bbc565b600060098260000160405161195691906139cd565b90815260200160405180910390208260010160405161197591906139cd565b90815260405160209181900382018120805460ff1916931515939093179092558382527f123a1b961ae93e7acda9790b318237b175b45ac09277cd3614305d8baa3f1953910160405180910390a16000828152600660205260408120906119dc828261323a565b6119ea60018301600061323a565b5060006002820181905560038201819055600482018190556005820180546001600160a01b031916905560068201819055600782018190556008820181905560098201819055600a8201819055600b8201819055600c909101555050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9657600080fd5b505afa158015611aaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ace919061348c565b6001600160a01b0316336001600160a01b031614611afe5760405162461bcd60e51b815260040161090090613c0d565b8060008160200135118015611b17575060008160400135115b8015611b27575060008160600135115b8015611b37575060008160800135115b611b705760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f4645455360b01b6044820152606401610900565b60045460009081526008602052604090208290611b8d8282614197565b5050600480547f482049823c85e038e099fe4f2b901487c4800def71c9a3f5bae2de8381ec54f69160006118008361411a565b60006064600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015611c1257600080fd5b505afa158015611c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4a919061348c565b6001600160a01b0316637b78d7826040518163ffffffff1660e01b815260040160206040518083038186803b158015611c8257600080fd5b505afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba919061367d565b600084815260066020908152604080832060090154835260079091529020600301546112159190613f35565b611cee613277565b611d196040518060800160405280606081526020016000815260200160008152602001600081525090565b611d4b6040518060a0016040528060608152602001600081526020016000815260200160008152602001600081525090565b60008481526006602052604080822081516101608101909252805482908290611d73906140d0565b80601f0160208091040260200160405190810160405280929190818152602001828054611d9f906140d0565b8015611dec5780601f10611dc157610100808354040283529160200191611dec565b820191906000526020600020905b815481529060010190602001808311611dcf57829003601f168201915b50505050508152602001600182018054611e05906140d0565b80601f0160208091040260200160405190810160405280929190818152602001828054611e31906140d0565b8015611e7e5780601f10611e5357610100808354040283529160200191611e7e565b820191906000526020600020905b815481529060010190602001808311611e6157829003601f168201915b505050505081526020016002820160405180604001604052908160008201548152602001600182015481525050815260200160048201604051806040016040529081600082015481526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681525050815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152602001600c82015481525050905080600760008360e00151815260200190815260200160002060086000846101000151815260200190815260200160002081604051806080016040529081600082018054611f90906140d0565b80601f0160208091040260200160405190810160405280929190818152602001828054611fbc906140d0565b80156120095780601f10611fde57610100808354040283529160200191612009565b820191906000526020600020905b815481529060010190602001808311611fec57829003601f168201915b5050505050815260200160018201548152602001600282015481526020016003820154815250509150806040518060a001604052908160008201805461204e906140d0565b80601f016020809104026020016040519081016040528092919081815260200182805461207a906140d0565b80156120c75780601f1061209c576101008083540402835291602001916120c7565b820191906000526020600020905b8154815290600101906020018083116120aa57829003601f168201915b505050505081526020016001820154815260200160028201548152602001600382015481526020016004820154815250509050935093509350509193909250565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561215657600080fd5b505afa15801561216a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218e919061348c565b6001600160a01b0316336001600160a01b0316146121be5760405162461bcd60e51b815260040161090090613c0d565b8281146121ca57600080fd5b60005b8381101561229d5760328383838181106121e9576121e961416b565b9050602002013510156122335760405162461bcd60e51b81526020600482015260126024820152710a48a8482a88abe8ab0868a8a88a6be9a82b60731b6044820152606401610900565b8282828181106122455761224561416b565b90506020020135600b600088815260200190815260200160002060008787858181106122735761227361416b565b90506020020135815260200190815260200160002081905550806122969061411a565b90506121cd565b507ff66559a3ee7945e0e49289392f86db1a3a3049abc2a1c89664a702fa0427322785858585856040516122d5959493929190613d66565b60405180910390a15050505050565b6007602052600090815260409020805481906122ff906140d0565b80601f016020809104026020016040519081016040528092919081815260200182805461232b906140d0565b80156123785780601f1061234d57610100808354040283529160200191612378565b820191906000526020600020905b81548152906001019060200180831161235b57829003601f168201915b5050505050908060010154908060020154908060030154905084565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156123e257600080fd5b505afa1580156123f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241a919061348c565b6001600160a01b0316336001600160a01b03161461244a5760405162461bcd60e51b815260040161090090613c0d565b600082815260086020526040902060010154829061247a5760405162461bcd60e51b815260040161090090613be5565b8160008160200135118015612493575060008160400135115b80156124a3575060008160600135115b80156124b3575060008160800135115b6124ec5760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f4645455360b01b6044820152606401610900565b600084815260086020526040902083906125068282614197565b50506040518481527f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c76906020016109ea565b600a602052816000526040600020816002811061255457600080fd5b01549150829050565b6000606461256a83611bc0565b6000848152600660205260409020600b01546112159190613f35565b6006602052600090815260409020805481906125a1906140d0565b80601f01602080910402602001604051908101604052809291908181526020018280546125cd906140d0565b801561261a5780601f106125ef5761010080835404028352916020019161261a565b820191906000526020600020905b8154815290600101906020018083116125fd57829003601f168201915b50505050509080600101805461262f906140d0565b80601f016020809104026020016040519081016040528092919081815260200182805461265b906140d0565b80156126a85780601f1061267d576101008083540402835291602001916126a8565b820191906000526020600020905b81548152906001019060200180831161268b57829003601f168201915b505060408051808201825260028701548152600387015460208083019190915282518084019093526004880154835260058801546001600160a01b03169083015260068701546007880154600889015460098a0154600a8b0154600b8c0154600c909c01549a9b959a969950939750919550939092908b565b600054610100900460ff16158080156127415750600054600160ff909116105b8061275b5750303b15801561275b575060005460ff166001145b6127be5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610900565b6000805460ff1916600117905580156127e1576000805461ff0019166101001790555b6000821161281e5760405162461bcd60e51b815260206004820152600a60248201526904f524445525f49445f360b41b6044820152606401610900565b60018290556000805462010000600160b01b031916620100006001600160a01b03861602179055801561288b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156128de57600080fd5b505afa1580156128f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612916919061348c565b6001600160a01b0316336001600160a01b0316146129465760405162461bcd60e51b815260040161090090613c0d565b6040810180356129855760405162461bcd60e51b815260206004820152600a60248201526915d493d391d7d191515160b21b6044820152606401610900565b6101208201356000818152600760205260409020600101546129dc5760405162461bcd60e51b815260206004820152601060248201526f11d493d55417d393d517d31254d5115160821b6044820152606401610900565b610140830135600081815260086020526040902060010154612a105760405162461bcd60e51b815260040161090090613be5565b6009612a1c8580613def565b604051612a2a9291906139a1565b9081526020016040518091039020848060200190612a489190613def565b604051612a569291906139a1565b9081526040519081900360200190205460ff1615612aac5760405162461bcd60e51b81526020600482015260136024820152721410525497d053149150511657d31254d51151606a1b6044820152606401610900565b60025460009081526006602052604090208490612ac98282614361565b50600190506009612ada8680613def565b604051612ae89291906139a1565b9081526020016040518091039020858060200190612b069190613def565b604051612b149291906139a1565b908152604051908190036020019020805491151560ff19909216919091179055600280547f3adfd40f2b74073df2a84238acdb7f460565a557b3cc13bddc8833289bf38e09916000612b658361411a565b90915550612b738680613def565b612b806020890189613def565b6040516109ea959493929190613dc2565b6000818152600660205260408082208151610160810190925280548392919082908290612bbd906140d0565b80601f0160208091040260200160405190810160405280929190818152602001828054612be9906140d0565b8015612c365780601f10612c0b57610100808354040283529160200191612c36565b820191906000526020600020905b815481529060010190602001808311612c1957829003601f168201915b50505050508152602001600182018054612c4f906140d0565b80601f0160208091040260200160405190810160405280929190818152602001828054612c7b906140d0565b8015612cc85780601f10612c9d57610100808354040283529160200191612cc8565b820191906000526020600020905b815481529060010190602001808311612cab57829003601f168201915b505050918352505060408051808201825260028401548152600384015460208281019190915280840191909152815180830183526004850154815260058501546001600160a01b031691810191909152908201526006820154606082015260078201546080820152600882015460a0820152600982015460c080830191909152600a83015460e0830152600b830154610100830152600c909201546101209091015201519392505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015612dc157600080fd5b505afa158015612dd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612df9919061348c565b6001600160a01b0316336001600160a01b031614612e295760405162461bcd60e51b815260040161090090613c0d565b604081018035612e685760405162461bcd60e51b815260206004820152600a60248201526915d493d391d7d191515160b21b6044820152606401610900565b610140820135600081815260086020526040902060010154612e9c5760405162461bcd60e51b815260040161090090613be5565b600084815260066020526040908190209051600990612ebc9083906139cd565b908152602001604051809103902081600101604051612edb91906139cd565b9081526040519081900360200190205460ff16612f0a5760405162461bcd60e51b815260040161090090613bbc565b604084013560028201556060840135600382015560c08401356006820155610140840135600a820155608084013515801590612f5f57506000612f5360c0860160a08701613468565b6001600160a01b031614155b15612f7e576080840160048201612f76828261409b565b905050612f98565b600060048201556005810180546001600160a01b03191690555b6040518581527f123a1b961ae93e7acda9790b318237b175b45ac09277cd3614305d8baa3f1953906020016122d5565b60008054604051639cb87f2360e01b8152600481018690526024810183905282916201000090046001600160a01b031690639cb87f239060440160206040518083038186803b15801561301a57600080fd5b505afa15801561302e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613052919061367d565b60008054604051639cb87f2360e01b815260048101899052600160248201529293509091620100009091046001600160a01b031690639cb87f239060440160206040518083038186803b1580156130a857600080fd5b505afa1580156130bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e0919061367d565b905083156130f9576130f28583613e76565b9150613106565b6131038582613e76565b90505b60006131128284613e76565b8561311d578361311f565b825b61312a906064613f35565b6131349190613e8e565b6000888152600c60209081526040808320815161016081019092529394509192908290810182600a86835b828210156131a557604080518082019182905290600284810287019182845b81548152602001906001019080831161317e5750505050508152602001906001019061315f565b505050915250909150600090506131bd600a84613e8e565b90506127106402540be400836000015183600a81106131de576131de61416b565b6020020151600160200201518451869085600a81106131ff576131ff61416b565b60200201515161320f9190613eb0565b6132199190613e35565b6132239190613f35565b61322d9190613e8e565b9998505050505050505050565b508054613246906140d0565b6000825580601f10613256575050565b601f0160209004906000526020600020908101906132749190613313565b50565b60405180610160016040528060608152602001606081526020016132b1604051806040016040528060008152602001600080191681525090565b81526020016132dc60405180604001604052806000815260200160006001600160a01b031681525090565b8152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5b808211156133285760008155600101613314565b5090565b60008083601f84011261333e57600080fd5b5081356001600160401b0381111561335557600080fd5b6020830191508360208260051b850101111561337057600080fd5b9250929050565b8035801515811461338757600080fd5b919050565b600082601f83011261339d57600080fd5b81356001600160401b03808211156133b7576133b7614181565b604051601f8301601f19908116603f011681019082821181831017156133df576133df614181565b816040528381528660208588010111156133f857600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060a0828403121561342a57600080fd5b50919050565b60006080828403121561342a57600080fd5b60006101a0828403121561342a57600080fd5b6000610280828403121561342a57600080fd5b60006020828403121561347a57600080fd5b813561348581614453565b9392505050565b60006020828403121561349e57600080fd5b815161348581614453565b600080604083850312156134bc57600080fd5b82356134c781614453565b946020939093013593505050565b600080600080604085870312156134eb57600080fd5b84356001600160401b038082111561350257600080fd5b61350e8883890161332c565b9096509450602087013591508082111561352757600080fd5b506135348782880161332c565b95989497509550505050565b6000806040838503121561355357600080fd5b82356001600160401b038082111561356a57600080fd5b6135768683870161338c565b9350602085013591508082111561358c57600080fd5b506135998582860161338c565b9150509250929050565b6000602082840312156135b557600080fd5b81356001600160401b038111156135cb57600080fd5b6135d784828501613418565b949350505050565b6000602082840312156135f157600080fd5b81356001600160401b0381111561360757600080fd5b6135d784828501613430565b60006020828403121561362557600080fd5b81356001600160401b0381111561363b57600080fd5b6135d784828501613442565b6000610280828403121561365a57600080fd5b6134858383613455565b60006020828403121561367657600080fd5b5035919050565b60006020828403121561368f57600080fd5b5051919050565b6000806000806000606086880312156136ae57600080fd5b8535945060208601356001600160401b03808211156136cc57600080fd5b6136d889838a0161332c565b909650945060408801359150808211156136f157600080fd5b506136fe8882890161332c565b969995985093965092949392505050565b6000806040838503121561372257600080fd5b8235915060208301356001600160401b0381111561373f57600080fd5b61359985828601613418565b6000806040838503121561375e57600080fd5b8235915060208301356001600160401b0381111561377b57600080fd5b61359985828601613430565b6000806040838503121561379a57600080fd5b8235915060208301356001600160401b038111156137b757600080fd5b61359985828601613442565b6000806102a083850312156137d757600080fd5b823591506137e88460208501613455565b90509250929050565b6000806040838503121561380457600080fd5b50508035926020909101359150565b60008060006060848603121561382857600080fd5b833592506020840135915061383f60408501613377565b90509250925092565b6000806000806080858703121561385e57600080fd5b843593506020850135925061387560408601613377565b915061388360608601613377565b905092959194509250565b81835260006001600160fb1b038311156138a757600080fd5b8260051b8083602087013760009401602001938452509192915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845261390581602086016020860161406b565b601f01601f19169290920160200192915050565b6000815160a0845261392e60a08501826138ed565b9050602083015160208501526040830151604085015260608301516060850152608083015160808501528091505092915050565b600081516080845261397760808501826138ed565b90506020830151602085015260408301516040850152606083015160608501528091505092915050565b8183823760009101908152919050565b600082516139c381846020870161406b565b9190910192915050565b60008083546139db816140d0565b600182811680156139f35760018114613a0457613a33565b60ff19841687528287019450613a33565b8760005260208060002060005b85811015613a2a5781548a820152908401908201613a11565b50505082870194505b50929695505050505050565b604081526000613a5360408301868861388e565b8281036020840152613a6681858761388e565b979650505050505050565b60a081526000613a8460a08301886138ed565b8281036020840152613a9681886138ed565b604084019690965250506001600160a01b0392909216606083015260809091015292915050565b60006101a0808352613ad18184018f6138ed565b90508281036020840152613ae5818e6138ed565b8c51604085015260208d015160608501529150613aff9050565b8951608083015260208a01516001600160a01b031660a083015260c082019890985260e081019690965261010086019490945261012085019290925261014084015261016083015261018090910152949350505050565b608081526000613b6960808301876138ed565b6020830195909552506040810192909252606090910152919050565b60a081526000613b9860a08301886138ed565b90508560208301528460408301528360608301528260808301529695505050505050565b6020808252600f908201526e1410525497d393d517d31254d51151608a1b604082015260600190565b6020808252600e908201526d11915157d393d517d31254d5115160921b604082015260600190565b602080825260089082015267474f565f4f4e4c5960c01b604082015260600190565b815181526020808301516001600160a01b03169082015260408101610b31565b815181526020808301519082015260408101610b31565b60608152600084516101a0806060850152613c856102008501836138ed565b91506020870151605f19858403016080860152613ca283826138ed565b9250506040870151613cc160a086018280518252602090810151910152565b506060870151805160e086015260208101516001600160a01b03166101008601525060808701516101208581019190915260a08801516101408087019190915260c089015161016087015260e0890151610180870152610100890151928601929092528701516101c08501528601516101e08401528281036020840152613d488186613962565b90508281036040840152613d5c8185613919565b9695505050505050565b858152606060208201526000613d8060608301868861388e565b8281036040840152613d9381858761388e565b98975050505050505050565b838152604060208201526000613db96040830184866138c4565b95945050505050565b858152606060208201526000613ddc6060830186886138c4565b8281036040840152613d938185876138c4565b6000808335601e19843603018112613e0657600080fd5b8301803591506001600160401b03821115613e2057600080fd5b60200191503681900382131561337057600080fd5b600080821280156001600160ff1b0384900385131615613e5757613e57614155565b600160ff1b8390038412811615613e7057613e70614155565b50500190565b60008219821115613e8957613e89614155565b500190565b600082613eab57634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160ff1b0381841382841380821686840486111615613ed657613ed6614155565b600160ff1b6000871282811687830589121615613ef557613ef5614155565b60008712925087820587128484161615613f1157613f11614155565b87850587128184161615613f2757613f27614155565b505050929093029392505050565b6000816000190483118215151615613f4f57613f4f614155565b500290565b600082821015613f6657613f66614155565b500390565b601f82111561288b57600081815260208120601f850160051c81016020861015613f925750805b601f850160051c820191505b818110156111e557828155600101613f9e565b6001600160401b03831115613fc857613fc8614181565b613fdc83613fd683546140d0565b83613f6b565b6000601f84116001811461400a5760008515613ff85750838201355b6140028682614105565b845550614064565b600083815260209020601f19861690835b8281101561403b578685013582556020948501946001909201910161401b565b50868210156140585760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60005b8381101561408657818101518382015260200161406e565b83811115614095576000848401525b50505050565b813581556001810160208301356140b181614453565b81546001600160a01b0319166001600160a01b03919091161790555050565b600181811c908216806140e457607f821691505b6020821081141561342a57634e487b7160e01b600052602260045260246000fd5b600019600383901b1c191660019190911b1790565b600060001982141561412e5761412e614155565b5060010190565b600060ff821660ff81141561414c5761414c614155565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6141a18283613def565b6001600160401b038111156141b8576141b8614181565b6141cc816141c685546140d0565b85613f6b565b6000601f8211600181146141fa57600083156141e85750838201355b6141f28482614105565b865550614254565b600085815260209020601f19841690835b8281101561422b578685013582556020948501946001909201910161420b565b50848210156142485760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050602082013560018201556040820135600282015560608201356003820155608082013560048201555050565b61428e8283613def565b6001600160401b038111156142a5576142a5614181565b6142b3816141c685546140d0565b6000601f8211600181146142e157600083156142cf5750838201355b6142d98482614105565b86555061433b565b600085815260209020601f19841690835b8281101561431257868501358255602094850194600190920191016142f2565b508482101561432f5760001960f88660031b161c19848701351681555b505060018360011b0185555b505050506020820135600182015560408201356002820155606082013560038201555050565b61436b8283613def565b614376818385613fb1565b50506143856020830183613def565b614393818360018601613fb1565b505060408201356002820155606082013560038201556143b9608083016004830161409b565b60c0820135600682015560e0820135600782015561010082013560088201556101208201356009820155610140820135600a820155610160820135600b820155610180820135600c8201555050565b81816000805b600a8110156111e5578383835b600281101561443a57823582556020909201916001918201910161441b565b505050604093909301926002929092019160010161440e565b6001600160a01b038116811461327457600080fdfea2646970667358221220bc793db01af731960a0150dfe7a633cc424a7b2dba2a066b62c99a31d77181bf64736f6c63430008070033","sourceMap":"216:16681:104:-:0;;;2081:53;;;;;;;;;-1:-1:-1;2105:22:104;:20;:22::i;:::-;216:16681;;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:-;216:16681:104;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106102955760003560e01c80636d8b5224116101675780639a7c200e116100ce578063b91ac78811610087578063b91ac788146107c1578063cd6dc687146107eb578063e70ab5cd146107fe578063e8b50f8414610811578063f645aff514610824578063fb3e519d1461083757600080fd5b80639a7c200e1461073b5780639ae6b9e01461074e578063a1d54e9b1461076e578063a1ead06414610792578063b2e1b2d6146107a5578063b81b2b71146107b857600080fd5b8063885e275011610120578063885e2750146106be5780638c9a0ea4146106c7578063925931fc146106da5780639567dccf146106e35780639586621f1461070557806396324bd41461071857600080fd5b80636d8b5224146106365780636dc37de31461063f57806372fce6f01461065257806374db8c89146106655780637f684baf14610678578063836a341a1461068b57600080fd5b80633c44d0a31161020b5780635a3e32e0116101c45780635a3e32e01461055c5780635e4f8f591461056f5780635fc8cd2814610582578063649a648814610595578063658de48a146105c8578063685e905b146105d157600080fd5b80633c44d0a3146104a95780633d7a5f1a146104cc5780634acc79ed146104df5780634ffe8aec1461050357806356e5536c1461051657806359a992d01461052957600080fd5b80631eaa005c1161025d5780631eaa005c1461038c578063238cd23f146103e857806324abd3fb1461041b578063281b693c1461043f5780632b1cbe9d14610472578063302f81fc1461048557600080fd5b806310ed40881461029a57806315b40d91146102af5780631628bfeb146102ed57806316fff074146103485780631a67bacc14610379575b600080fd5b6102ad6102a83660046134d5565b61084a565b005b6102da6102bd3660046137f1565b600b60209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b6103386102fb366004613540565b8151602081840181018051600982529282019482019490942091909352815180830184018051928152908401929093019190912091525460ff1681565b60405190151581526020016102e4565b600054610361906201000090046001600160a01b031681565b6040516001600160a01b0390911681526020016102e4565b6102ad610387366004613647565b6109f8565b6103db61039a366004613664565b604080518082019091526000808252602082015250600090815260066020908152604091829020825180840190935260028101548352600301549082015290565b6040516102e49190613c4f565b6102da6103f6366004613664565b6000908152600660209081526040808320600a01548352600890915290206004015490565b610338610429366004613664565b6000908152600660205260409020600901541590565b6102da61044d366004613664565b6000908152600660209081526040808320600901548352600790915290206002015490565b6102da6104803660046137f1565b610b16565b610498610493366004613664565b610b37565b6040516102e4959493929190613a71565b6102da6104b7366004613664565b60009081526006602052604090206009015490565b6102ad6104da3660046137c3565b610e93565b6104f26104ed366004613664565b610f9d565b6040516102e4959493929190613b85565b6102ad610511366004613848565b611053565b6102da610524366004613664565b6111ed565b6102da610537366004613664565b6000908152600660209081526040808320600901548352600790915290206001015490565b6102ad61056a36600461374b565b61121f565b6102da61057d366004613664565b6113fc565b6102da610590366004613664565b61142b565b6102da6105a3366004613664565b6000908152600660209081526040808320600a01548352600890915290206003015490565b6102da60045481565b6106296105df366004613664565b604080518082019091526000808252602082015250600090815260066020908152604091829020825180840190935260048101548352600501546001600160a01b03169082015290565b6040516102e49190613c2f565b6102da60055481565b61033861064d366004613664565b61160d565b6102ad6106603660046135df565b611672565b6102ad610673366004613664565b61181d565b6102ad6106863660046135a3565b611a48565b6102da610699366004613664565b6000908152600660209081526040808320600a01548352600890915290206002015490565b6102da60035481565b6102da6106d5366004613664565b611bc0565b6102da60015481565b6106f66106f1366004613664565b611ce6565b6040516102e493929190613c66565b6102ad610713366004613696565b612108565b61072b610726366004613664565b6122e4565b6040516102e49493929190613b56565b6102ad61074936600461370f565b612394565b6102da61075c366004613664565b600d6020526000908152604090205481565b6102da61077c366004613664565b6000908152600660208190526040909120015490565b6102da6107a03660046137f1565b612538565b6102da6107b3366004613664565b61255d565b6102da60025481565b6107d46107cf366004613664565b612586565b6040516102e49b9a99989796959493929190613abd565b6102ad6107f93660046134a9565b612721565b6102ad61080c366004613613565b612890565b6102da61081f366004613664565b612b91565b6102ad610832366004613787565b612d73565b6102da610845366004613813565b612fc8565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561089857600080fd5b505afa1580156108ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d0919061348c565b6001600160a01b0316336001600160a01b0316146109095760405162461bcd60e51b815260040161090090613c0d565b60405180910390fd5b8281146109475760405162461bcd60e51b815260206004820152600c60248201526b0988a9cbe9a92a69a82a886960a31b6044820152606401610900565b60005b60ff81168411156109b45782828260ff1681811061096a5761096a61416b565b90506020020135600d600087878560ff1681811061098a5761098a61416b565b90506020020135815260200190815260200160002081905550806109ad90614135565b905061094a565b507fc5c5af5d05689513c60f635389c8449ac23f2b277af3a15f88c21c6de36fcf14848484846040516109ea9493929190613a3f565b60405180910390a150505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015610a4657600080fd5b505afa158015610a5a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7e919061348c565b6001600160a01b0316336001600160a01b031614610aae5760405162461bcd60e51b815260040161090090613c0d565b6005546000908152600c602052604090208190610acb8282614408565b5050600580547f5d7a16e490fc66ca6522d4ba0437ac1a3b97cf25666340a19e408176295826d7916000610afe8361411a565b9091555060405190815260200160405180910390a150565b6000828152600b602090815260408083208484529091529020545b92915050565b60608060008060008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b158015610b8c57600080fd5b505afa158015610ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc4919061348c565b6001600160a01b0316336001600160a01b031614610c165760405162461bcd60e51b815260206004820152600f60248201526e41474752454741544f525f4f4e4c5960881b6044820152606401610900565b60008681526006602052604080822081516101608101909252805482908290610c3e906140d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610c6a906140d0565b8015610cb75780601f10610c8c57610100808354040283529160200191610cb7565b820191906000526020600020905b815481529060010190602001808311610c9a57829003601f168201915b50505050508152602001600182018054610cd0906140d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610cfc906140d0565b8015610d495780601f10610d1e57610100808354040283529160200191610d49565b820191906000526020600020905b815481529060010190602001808311610d2c57829003601f168201915b505050918352505060408051808201825260028401548152600384015460208281019190915280840191909152815180830183526004850154815260058501546001600160a01b031691810191909152818301526006830154606083015260078301546080830152600883015460a083015260098084015460c0840152600a84015460e0840152600b840154610100840152600c9093015461012090920191909152825190519293509091610dfe91906139b1565b90815260200160405180910390208160200151604051610e1e91906139b1565b9081526040519081900360200190205460ff16610e4d5760405162461bcd60e51b815260040161090090613bbc565b8060000151816020015182604001516020015183606001516020015160016000815480929190610e7c9061411a565b90915550939b929a50909850965090945092505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015610ee157600080fd5b505afa158015610ef5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f19919061348c565b6001600160a01b0316336001600160a01b031614610f495760405162461bcd60e51b815260040161090090613c0d565b6000828152600c602052604090208190610f638282614408565b50506040518281527f049d8e73ae29fd805de1f8eae372a5020742554b37118c1e33687e89ef3027ff906020015b60405180910390a15050565b600860205260009081526040902080548190610fb8906140d0565b80601f0160208091040260200160405190810160405280929190818152602001828054610fe4906140d0565b80156110315780601f1061100657610100808354040283529160200191611031565b820191906000526020600020905b81548152906001019060200180831161101457829003601f168201915b5050505050908060010154908060020154908060030154908060040154905085565b600060029054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b1580156110a057600080fd5b505afa1580156110b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110d8919061348c565b6001600160a01b0316336001600160a01b0316146111295760405162461bcd60e51b815260206004820152600e60248201526d43414c4c4241434b535f4f4e4c5960901b6044820152606401610900565b6000848152600660209081526040808320600901548352600a90915281209083611154576001611157565b60005b60ff169050821561119057848282600281106111755761117561416b565b0160008282546111859190613e76565b909155506111e59050565b848282600281106111a3576111a361416b565b0154116111b15760006111d0565b848282600281106111c4576111c461416b565b01546111d09190613f54565b8282600281106111e2576111e261416b565b01555b505050505050565b6000818152600660205260408120600c015460649061120b84611bc0565b6112159190613f35565b610b319190613e8e565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561126d57600080fd5b505afa158015611281573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a5919061348c565b6001600160a01b0316336001600160a01b0316146112d55760405162461bcd60e51b815260040161090090613c0d565b60008281526007602052604090206001015482906113285760405162461bcd60e51b815260206004820152601060248201526f11d493d55417d393d517d31254d5115160821b6044820152606401610900565b816113396402540be4006002613f35565b81602001351015801561135f57506113576402540be4006096613f35565b816040013511155b8015611372575080604001358160200135105b6113b05760405162461bcd60e51b815260206004820152600f60248201526e57524f4e475f4c455645524147455360881b6044820152606401610900565b600084815260076020526040902083906113ca8282614284565b50506040518481527fcfde8f228364c70f12cbbac5a88fc91ceca76dd750ac93364991a333b34afb8e906020016109ea565b6000818152600660209081526040808320600901548352600a909152812060018101549054610b319190613e76565b6000818152600660205260408082208151610160810190925280548392919082908290611457906140d0565b80601f0160208091040260200160405190810160405280929190818152602001828054611483906140d0565b80156114d05780601f106114a5576101008083540402835291602001916114d0565b820191906000526020600020905b8154815290600101906020018083116114b357829003601f168201915b505050505081526020016001820180546114e9906140d0565b80601f0160208091040260200160405190810160405280929190818152602001828054611515906140d0565b80156115625780601f1061153757610100808354040283529160200191611562565b820191906000526020600020905b81548152906001019060200180831161154557829003601f168201915b505050918352505060408051808201825260028401548152600384015460208281019190915280840191909152815180830183526004850154815260058501546001600160a01b031691810191909152908201526006820154606082015260078201546080820152600882015460a080830191909152600983015460c0830152600a83015460e0830152600b830154610100830152600c909201546101209091015201519392505050565b604051621554d160ea1b602082015260009060230160408051601f1981840301815282825280516020918201206000868152600683529290922091926116549291016139cd565b60405160208183030381529060405280519060200120149050919050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156116c057600080fd5b505afa1580156116d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f8919061348c565b6001600160a01b0316336001600160a01b0316146117285760405162461bcd60e51b815260040161090090613c0d565b806117396402540be4006002613f35565b81602001351015801561175f57506117576402540be4006096613f35565b816040013511155b8015611772575080604001358160200135105b6117b05760405162461bcd60e51b815260206004820152600f60248201526e57524f4e475f4c455645524147455360881b6044820152606401610900565b600354600090815260076020526040902082906117cd8282614284565b5050600380547faf17de8e82beccc440012117a600dc37e26925225d0f1ee192fc107eb3dcbca49160006118008361411a565b9091555061180e8480613def565b604051610f9193929190613d9f565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561186b57600080fd5b505afa15801561187f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a3919061348c565b6001600160a01b0316336001600160a01b0316146118d35760405162461bcd60e51b815260040161090090613c0d565b6000818152600660205260409081902090516009906118f39083906139cd565b90815260200160405180910390208160010160405161191291906139cd565b9081526040519081900360200190205460ff166119415760405162461bcd60e51b815260040161090090613bbc565b600060098260000160405161195691906139cd565b90815260200160405180910390208260010160405161197591906139cd565b90815260405160209181900382018120805460ff1916931515939093179092558382527f123a1b961ae93e7acda9790b318237b175b45ac09277cd3614305d8baa3f1953910160405180910390a16000828152600660205260408120906119dc828261323a565b6119ea60018301600061323a565b5060006002820181905560038201819055600482018190556005820180546001600160a01b031916905560068201819055600782018190556008820181905560098201819055600a8201819055600b8201819055600c909101555050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9657600080fd5b505afa158015611aaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ace919061348c565b6001600160a01b0316336001600160a01b031614611afe5760405162461bcd60e51b815260040161090090613c0d565b8060008160200135118015611b17575060008160400135115b8015611b27575060008160600135115b8015611b37575060008160800135115b611b705760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f4645455360b01b6044820152606401610900565b60045460009081526008602052604090208290611b8d8282614197565b5050600480547f482049823c85e038e099fe4f2b901487c4800def71c9a3f5bae2de8381ec54f69160006118008361411a565b60006064600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015611c1257600080fd5b505afa158015611c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4a919061348c565b6001600160a01b0316637b78d7826040518163ffffffff1660e01b815260040160206040518083038186803b158015611c8257600080fd5b505afa158015611c96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cba919061367d565b600084815260066020908152604080832060090154835260079091529020600301546112159190613f35565b611cee613277565b611d196040518060800160405280606081526020016000815260200160008152602001600081525090565b611d4b6040518060a0016040528060608152602001600081526020016000815260200160008152602001600081525090565b60008481526006602052604080822081516101608101909252805482908290611d73906140d0565b80601f0160208091040260200160405190810160405280929190818152602001828054611d9f906140d0565b8015611dec5780601f10611dc157610100808354040283529160200191611dec565b820191906000526020600020905b815481529060010190602001808311611dcf57829003601f168201915b50505050508152602001600182018054611e05906140d0565b80601f0160208091040260200160405190810160405280929190818152602001828054611e31906140d0565b8015611e7e5780601f10611e5357610100808354040283529160200191611e7e565b820191906000526020600020905b815481529060010190602001808311611e6157829003601f168201915b505050505081526020016002820160405180604001604052908160008201548152602001600182015481525050815260200160048201604051806040016040529081600082015481526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681525050815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201548152602001600b8201548152602001600c82015481525050905080600760008360e00151815260200190815260200160002060086000846101000151815260200190815260200160002081604051806080016040529081600082018054611f90906140d0565b80601f0160208091040260200160405190810160405280929190818152602001828054611fbc906140d0565b80156120095780601f10611fde57610100808354040283529160200191612009565b820191906000526020600020905b815481529060010190602001808311611fec57829003601f168201915b5050505050815260200160018201548152602001600282015481526020016003820154815250509150806040518060a001604052908160008201805461204e906140d0565b80601f016020809104026020016040519081016040528092919081815260200182805461207a906140d0565b80156120c75780601f1061209c576101008083540402835291602001916120c7565b820191906000526020600020905b8154815290600101906020018083116120aa57829003601f168201915b505050505081526020016001820154815260200160028201548152602001600382015481526020016004820154815250509050935093509350509193909250565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561215657600080fd5b505afa15801561216a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218e919061348c565b6001600160a01b0316336001600160a01b0316146121be5760405162461bcd60e51b815260040161090090613c0d565b8281146121ca57600080fd5b60005b8381101561229d5760328383838181106121e9576121e961416b565b9050602002013510156122335760405162461bcd60e51b81526020600482015260126024820152710a48a8482a88abe8ab0868a8a88a6be9a82b60731b6044820152606401610900565b8282828181106122455761224561416b565b90506020020135600b600088815260200190815260200160002060008787858181106122735761227361416b565b90506020020135815260200190815260200160002081905550806122969061411a565b90506121cd565b507ff66559a3ee7945e0e49289392f86db1a3a3049abc2a1c89664a702fa0427322785858585856040516122d5959493929190613d66565b60405180910390a15050505050565b6007602052600090815260409020805481906122ff906140d0565b80601f016020809104026020016040519081016040528092919081815260200182805461232b906140d0565b80156123785780601f1061234d57610100808354040283529160200191612378565b820191906000526020600020905b81548152906001019060200180831161235b57829003601f168201915b5050505050908060010154908060020154908060030154905084565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156123e257600080fd5b505afa1580156123f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061241a919061348c565b6001600160a01b0316336001600160a01b03161461244a5760405162461bcd60e51b815260040161090090613c0d565b600082815260086020526040902060010154829061247a5760405162461bcd60e51b815260040161090090613be5565b8160008160200135118015612493575060008160400135115b80156124a3575060008160600135115b80156124b3575060008160800135115b6124ec5760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f4645455360b01b6044820152606401610900565b600084815260086020526040902083906125068282614197565b50506040518481527f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c76906020016109ea565b600a602052816000526040600020816002811061255457600080fd5b01549150829050565b6000606461256a83611bc0565b6000848152600660205260409020600b01546112159190613f35565b6006602052600090815260409020805481906125a1906140d0565b80601f01602080910402602001604051908101604052809291908181526020018280546125cd906140d0565b801561261a5780601f106125ef5761010080835404028352916020019161261a565b820191906000526020600020905b8154815290600101906020018083116125fd57829003601f168201915b50505050509080600101805461262f906140d0565b80601f016020809104026020016040519081016040528092919081815260200182805461265b906140d0565b80156126a85780601f1061267d576101008083540402835291602001916126a8565b820191906000526020600020905b81548152906001019060200180831161268b57829003601f168201915b505060408051808201825260028701548152600387015460208083019190915282518084019093526004880154835260058801546001600160a01b03169083015260068701546007880154600889015460098a0154600a8b0154600b8c0154600c909c01549a9b959a969950939750919550939092908b565b600054610100900460ff16158080156127415750600054600160ff909116105b8061275b5750303b15801561275b575060005460ff166001145b6127be5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610900565b6000805460ff1916600117905580156127e1576000805461ff0019166101001790555b6000821161281e5760405162461bcd60e51b815260206004820152600a60248201526904f524445525f49445f360b41b6044820152606401610900565b60018290556000805462010000600160b01b031916620100006001600160a01b03861602179055801561288b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156128de57600080fd5b505afa1580156128f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612916919061348c565b6001600160a01b0316336001600160a01b0316146129465760405162461bcd60e51b815260040161090090613c0d565b6040810180356129855760405162461bcd60e51b815260206004820152600a60248201526915d493d391d7d191515160b21b6044820152606401610900565b6101208201356000818152600760205260409020600101546129dc5760405162461bcd60e51b815260206004820152601060248201526f11d493d55417d393d517d31254d5115160821b6044820152606401610900565b610140830135600081815260086020526040902060010154612a105760405162461bcd60e51b815260040161090090613be5565b6009612a1c8580613def565b604051612a2a9291906139a1565b9081526020016040518091039020848060200190612a489190613def565b604051612a569291906139a1565b9081526040519081900360200190205460ff1615612aac5760405162461bcd60e51b81526020600482015260136024820152721410525497d053149150511657d31254d51151606a1b6044820152606401610900565b60025460009081526006602052604090208490612ac98282614361565b50600190506009612ada8680613def565b604051612ae89291906139a1565b9081526020016040518091039020858060200190612b069190613def565b604051612b149291906139a1565b908152604051908190036020019020805491151560ff19909216919091179055600280547f3adfd40f2b74073df2a84238acdb7f460565a557b3cc13bddc8833289bf38e09916000612b658361411a565b90915550612b738680613def565b612b806020890189613def565b6040516109ea959493929190613dc2565b6000818152600660205260408082208151610160810190925280548392919082908290612bbd906140d0565b80601f0160208091040260200160405190810160405280929190818152602001828054612be9906140d0565b8015612c365780601f10612c0b57610100808354040283529160200191612c36565b820191906000526020600020905b815481529060010190602001808311612c1957829003601f168201915b50505050508152602001600182018054612c4f906140d0565b80601f0160208091040260200160405190810160405280929190818152602001828054612c7b906140d0565b8015612cc85780601f10612c9d57610100808354040283529160200191612cc8565b820191906000526020600020905b815481529060010190602001808311612cab57829003601f168201915b505050918352505060408051808201825260028401548152600384015460208281019190915280840191909152815180830183526004850154815260058501546001600160a01b031691810191909152908201526006820154606082015260078201546080820152600882015460a0820152600982015460c080830191909152600a83015460e0830152600b830154610100830152600c909201546101209091015201519392505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015612dc157600080fd5b505afa158015612dd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612df9919061348c565b6001600160a01b0316336001600160a01b031614612e295760405162461bcd60e51b815260040161090090613c0d565b604081018035612e685760405162461bcd60e51b815260206004820152600a60248201526915d493d391d7d191515160b21b6044820152606401610900565b610140820135600081815260086020526040902060010154612e9c5760405162461bcd60e51b815260040161090090613be5565b600084815260066020526040908190209051600990612ebc9083906139cd565b908152602001604051809103902081600101604051612edb91906139cd565b9081526040519081900360200190205460ff16612f0a5760405162461bcd60e51b815260040161090090613bbc565b604084013560028201556060840135600382015560c08401356006820155610140840135600a820155608084013515801590612f5f57506000612f5360c0860160a08701613468565b6001600160a01b031614155b15612f7e576080840160048201612f76828261409b565b905050612f98565b600060048201556005810180546001600160a01b03191690555b6040518581527f123a1b961ae93e7acda9790b318237b175b45ac09277cd3614305d8baa3f1953906020016122d5565b60008054604051639cb87f2360e01b8152600481018690526024810183905282916201000090046001600160a01b031690639cb87f239060440160206040518083038186803b15801561301a57600080fd5b505afa15801561302e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613052919061367d565b60008054604051639cb87f2360e01b815260048101899052600160248201529293509091620100009091046001600160a01b031690639cb87f239060440160206040518083038186803b1580156130a857600080fd5b505afa1580156130bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130e0919061367d565b905083156130f9576130f28583613e76565b9150613106565b6131038582613e76565b90505b60006131128284613e76565b8561311d578361311f565b825b61312a906064613f35565b6131349190613e8e565b6000888152600c60209081526040808320815161016081019092529394509192908290810182600a86835b828210156131a557604080518082019182905290600284810287019182845b81548152602001906001019080831161317e5750505050508152602001906001019061315f565b505050915250909150600090506131bd600a84613e8e565b90506127106402540be400836000015183600a81106131de576131de61416b565b6020020151600160200201518451869085600a81106131ff576131ff61416b565b60200201515161320f9190613eb0565b6132199190613e35565b6132239190613f35565b61322d9190613e8e565b9998505050505050505050565b508054613246906140d0565b6000825580601f10613256575050565b601f0160209004906000526020600020908101906132749190613313565b50565b60405180610160016040528060608152602001606081526020016132b1604051806040016040528060008152602001600080191681525090565b81526020016132dc60405180604001604052806000815260200160006001600160a01b031681525090565b8152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b5b808211156133285760008155600101613314565b5090565b60008083601f84011261333e57600080fd5b5081356001600160401b0381111561335557600080fd5b6020830191508360208260051b850101111561337057600080fd5b9250929050565b8035801515811461338757600080fd5b919050565b600082601f83011261339d57600080fd5b81356001600160401b03808211156133b7576133b7614181565b604051601f8301601f19908116603f011681019082821181831017156133df576133df614181565b816040528381528660208588010111156133f857600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060a0828403121561342a57600080fd5b50919050565b60006080828403121561342a57600080fd5b60006101a0828403121561342a57600080fd5b6000610280828403121561342a57600080fd5b60006020828403121561347a57600080fd5b813561348581614453565b9392505050565b60006020828403121561349e57600080fd5b815161348581614453565b600080604083850312156134bc57600080fd5b82356134c781614453565b946020939093013593505050565b600080600080604085870312156134eb57600080fd5b84356001600160401b038082111561350257600080fd5b61350e8883890161332c565b9096509450602087013591508082111561352757600080fd5b506135348782880161332c565b95989497509550505050565b6000806040838503121561355357600080fd5b82356001600160401b038082111561356a57600080fd5b6135768683870161338c565b9350602085013591508082111561358c57600080fd5b506135998582860161338c565b9150509250929050565b6000602082840312156135b557600080fd5b81356001600160401b038111156135cb57600080fd5b6135d784828501613418565b949350505050565b6000602082840312156135f157600080fd5b81356001600160401b0381111561360757600080fd5b6135d784828501613430565b60006020828403121561362557600080fd5b81356001600160401b0381111561363b57600080fd5b6135d784828501613442565b6000610280828403121561365a57600080fd5b6134858383613455565b60006020828403121561367657600080fd5b5035919050565b60006020828403121561368f57600080fd5b5051919050565b6000806000806000606086880312156136ae57600080fd5b8535945060208601356001600160401b03808211156136cc57600080fd5b6136d889838a0161332c565b909650945060408801359150808211156136f157600080fd5b506136fe8882890161332c565b969995985093965092949392505050565b6000806040838503121561372257600080fd5b8235915060208301356001600160401b0381111561373f57600080fd5b61359985828601613418565b6000806040838503121561375e57600080fd5b8235915060208301356001600160401b0381111561377b57600080fd5b61359985828601613430565b6000806040838503121561379a57600080fd5b8235915060208301356001600160401b038111156137b757600080fd5b61359985828601613442565b6000806102a083850312156137d757600080fd5b823591506137e88460208501613455565b90509250929050565b6000806040838503121561380457600080fd5b50508035926020909101359150565b60008060006060848603121561382857600080fd5b833592506020840135915061383f60408501613377565b90509250925092565b6000806000806080858703121561385e57600080fd5b843593506020850135925061387560408601613377565b915061388360608601613377565b905092959194509250565b81835260006001600160fb1b038311156138a757600080fd5b8260051b8083602087013760009401602001938452509192915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845261390581602086016020860161406b565b601f01601f19169290920160200192915050565b6000815160a0845261392e60a08501826138ed565b9050602083015160208501526040830151604085015260608301516060850152608083015160808501528091505092915050565b600081516080845261397760808501826138ed565b90506020830151602085015260408301516040850152606083015160608501528091505092915050565b8183823760009101908152919050565b600082516139c381846020870161406b565b9190910192915050565b60008083546139db816140d0565b600182811680156139f35760018114613a0457613a33565b60ff19841687528287019450613a33565b8760005260208060002060005b85811015613a2a5781548a820152908401908201613a11565b50505082870194505b50929695505050505050565b604081526000613a5360408301868861388e565b8281036020840152613a6681858761388e565b979650505050505050565b60a081526000613a8460a08301886138ed565b8281036020840152613a9681886138ed565b604084019690965250506001600160a01b0392909216606083015260809091015292915050565b60006101a0808352613ad18184018f6138ed565b90508281036020840152613ae5818e6138ed565b8c51604085015260208d015160608501529150613aff9050565b8951608083015260208a01516001600160a01b031660a083015260c082019890985260e081019690965261010086019490945261012085019290925261014084015261016083015261018090910152949350505050565b608081526000613b6960808301876138ed565b6020830195909552506040810192909252606090910152919050565b60a081526000613b9860a08301886138ed565b90508560208301528460408301528360608301528260808301529695505050505050565b6020808252600f908201526e1410525497d393d517d31254d51151608a1b604082015260600190565b6020808252600e908201526d11915157d393d517d31254d5115160921b604082015260600190565b602080825260089082015267474f565f4f4e4c5960c01b604082015260600190565b815181526020808301516001600160a01b03169082015260408101610b31565b815181526020808301519082015260408101610b31565b60608152600084516101a0806060850152613c856102008501836138ed565b91506020870151605f19858403016080860152613ca283826138ed565b9250506040870151613cc160a086018280518252602090810151910152565b506060870151805160e086015260208101516001600160a01b03166101008601525060808701516101208581019190915260a08801516101408087019190915260c089015161016087015260e0890151610180870152610100890151928601929092528701516101c08501528601516101e08401528281036020840152613d488186613962565b90508281036040840152613d5c8185613919565b9695505050505050565b858152606060208201526000613d8060608301868861388e565b8281036040840152613d9381858761388e565b98975050505050505050565b838152604060208201526000613db96040830184866138c4565b95945050505050565b858152606060208201526000613ddc6060830186886138c4565b8281036040840152613d938185876138c4565b6000808335601e19843603018112613e0657600080fd5b8301803591506001600160401b03821115613e2057600080fd5b60200191503681900382131561337057600080fd5b600080821280156001600160ff1b0384900385131615613e5757613e57614155565b600160ff1b8390038412811615613e7057613e70614155565b50500190565b60008219821115613e8957613e89614155565b500190565b600082613eab57634e487b7160e01b600052601260045260246000fd5b500490565b60006001600160ff1b0381841382841380821686840486111615613ed657613ed6614155565b600160ff1b6000871282811687830589121615613ef557613ef5614155565b60008712925087820587128484161615613f1157613f11614155565b87850587128184161615613f2757613f27614155565b505050929093029392505050565b6000816000190483118215151615613f4f57613f4f614155565b500290565b600082821015613f6657613f66614155565b500390565b601f82111561288b57600081815260208120601f850160051c81016020861015613f925750805b601f850160051c820191505b818110156111e557828155600101613f9e565b6001600160401b03831115613fc857613fc8614181565b613fdc83613fd683546140d0565b83613f6b565b6000601f84116001811461400a5760008515613ff85750838201355b6140028682614105565b845550614064565b600083815260209020601f19861690835b8281101561403b578685013582556020948501946001909201910161401b565b50868210156140585760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60005b8381101561408657818101518382015260200161406e565b83811115614095576000848401525b50505050565b813581556001810160208301356140b181614453565b81546001600160a01b0319166001600160a01b03919091161790555050565b600181811c908216806140e457607f821691505b6020821081141561342a57634e487b7160e01b600052602260045260246000fd5b600019600383901b1c191660019190911b1790565b600060001982141561412e5761412e614155565b5060010190565b600060ff821660ff81141561414c5761414c614155565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6141a18283613def565b6001600160401b038111156141b8576141b8614181565b6141cc816141c685546140d0565b85613f6b565b6000601f8211600181146141fa57600083156141e85750838201355b6141f28482614105565b865550614254565b600085815260209020601f19841690835b8281101561422b578685013582556020948501946001909201910161420b565b50848210156142485760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050602082013560018201556040820135600282015560608201356003820155608082013560048201555050565b61428e8283613def565b6001600160401b038111156142a5576142a5614181565b6142b3816141c685546140d0565b6000601f8211600181146142e157600083156142cf5750838201355b6142d98482614105565b86555061433b565b600085815260209020601f19841690835b8281101561431257868501358255602094850194600190920191016142f2565b508482101561432f5760001960f88660031b161c19848701351681555b505060018360011b0185555b505050506020820135600182015560408201356002820155606082013560038201555050565b61436b8283613def565b614376818385613fb1565b50506143856020830183613def565b614393818360018601613fb1565b505060408201356002820155606082013560038201556143b9608083016004830161409b565b60c0820135600682015560e0820135600782015561010082013560088201556101208201356009820155610140820135600a820155610160820135600b820155610180820135600c8201555050565b81816000805b600a8110156111e5578383835b600281101561443a57823582556020909201916001918201910161441b565b505050604093909301926002929092019160010161440e565b6001600160a01b038116811461327457600080fdfea2646970667358221220bc793db01af731960a0150dfe7a633cc424a7b2dba2a066b62c99a31d77181bf64736f6c63430008070033","sourceMap":"216:16681:104:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6212:339;;;;;;:::i;:::-;;:::i;:::-;;923:60;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;14497:25:150;;;14485:2;14470:18;923:60:104;;;;;;;;809:62;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14093:14:150;;14086:22;14068:41;;14056:2;14041:18;809:62:104;13928:187:150;279:31:104;;;;;;;;-1:-1:-1;;;;;279:31:104;;;;;;-1:-1:-1;;;;;14309:32:150;;;;14291:51;;14279:2;14264:18;279:31:104;14120:228:150;2636:168:104;;;;;;:::i;:::-;;:::i;8971:126::-;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;9068:17:104;;;;:5;:17;;;;;;;;;9061:29;;;;;;;;9068:22;;;9061:29;;;;;;;;;;;8971:126;;;;;;;;:::i;15212:152::-;;;;;;:::i;:::-;15288:4;15316:17;;;:5;:17;;;;;;;;:26;;;15311:32;;:4;:32;;;;;:46;;;;15212:152;12542:156;;;;;;:::i;:::-;12620:4;12643:17;;;:5;:17;;;;;:28;;;:33;;12542:156;10608:152;;;;;;:::i;:::-;10682:4;10712:17;;;:5;:17;;;;;;;;:28;;;10705:36;;:6;:36;;;;;:48;;;;10608:152;12180:158;;;;;;:::i;:::-;;:::i;8354:403::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;9953:131::-;;;;;;:::i;:::-;10026:4;10049:17;;;:5;:17;;;;;:28;;;;9953:131;2962:178;;;;;;:::i;:::-;;:::i;771:32::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;6899:442::-;;;;;;:::i;:::-;;:::i;12916:162::-;;;;;;:::i;:::-;;:::i;10270:152::-;;;;;;:::i;:::-;10344:4;10374:17;;;:5;:17;;;;;;;;:28;;;10367:36;;:6;:36;;;;;:48;;;;10270:152;5272:173;;;;;;:::i;:::-;;:::i;11760:179::-;;;;;;:::i;:::-;;:::i;16027:178::-;;;;;;:::i;:::-;;:::i;14827:154::-;;;;;;:::i;:::-;14904:4;14932:17;;;:5;:17;;;;;;;;:26;;;14927:32;;:4;:32;;;;;:47;;;;14827:154;628:21;;;;;;9328:144;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;9437:17:104;;;:5;:17;;;;;;9430:35;;;;;;;;9437:28;;;9430:35;;;;;;-1:-1:-1;;;;;9430:35:104;;;;;;;;;9328:144;;;;;;;;:::i;655:27::-;;;;;;16703:191;;;;;;:::i;:::-;;:::i;4934:172::-;;;;;;:::i;:::-;;:::i;4516:307::-;;;;;;:::i;:::-;;:::i;5553:150::-;;;;;;:::i;:::-;;:::i;14488:144::-;;;;;;:::i;:::-;14560:4;14588:17;;;:5;:17;;;;;;;;:26;;;14583:32;;:4;:32;;;;;:42;;;;14488:144;599:23;;;;;;10958:229;;;;;;:::i;:::-;;:::i;530:26::-;;;;;;15657:203;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;7632:521::-;;;;;;:::i;:::-;;:::i;729:36::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;5874:155::-;;;;;;:::i;:::-;;:::i;1036:50::-;;;;;;:::i;:::-;;;;;;;;;;;;;;9649:125;;;;;;:::i;:::-;9719:4;9742:17;;;:5;:17;;;;;;;;:25;;;9649:125;877:40;;;;;;:::i;:::-;;:::i;11391:175::-;;;;;;:::i;:::-;;:::i;562:31::-;;;;;;689:34;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;2306:230::-;;;;;;:::i;:::-;;:::i;3248:376::-;;;;;;:::i;:::-;;:::i;16371:175::-;;;;;;:::i;:::-;;:::i;3789:594::-;;;;;;:::i;:::-;;:::i;13477:804::-;;;;;;:::i;:::-;;:::i;6212:339::-;1148:8;;:14;;;-1:-1:-1;;;1148:14:104;;;;:8;;;;-1:-1:-1;;;;;1148:8:104;;-1:-1:-1;;1148:14:104;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1134:28:104;:10;:28;1126:49;;;;-1:-1:-1;;;1126:49:104;;22246:2:150;1126:49:104;;;22228:21:150;22285:1;22265:18;;;22258:29;-1:-1:-1;;;22303:18:150;;;22296:38;22351:18;;1126:49:104;;;;;;;;;6326:35;;::::1;6318:60;;;::::0;-1:-1:-1;;;6318:60:104;;18744:2:150;6318:60:104::1;::::0;::::1;18726:21:150::0;18783:2;18763:18;;;18756:30;-1:-1:-1;;;18802:18:150;;;18795:42;18854:18;;6318:60:104::1;18542:336:150::0;6318:60:104::1;6392:7;6388:104;6401:20;::::0;::::1;::::0;-1:-1:-1;6388:104:104::1;;;6471:7;;6479:1;6471:10;;;;;;;;;:::i;:::-;;;;;;;6441:12;:27;6454:10;;6465:1;6454:13;;;;;;;;;:::i;:::-;;;;;;;6441:27;;;;;;;;;;;:40;;;;6423:3;;;;:::i;:::-;;;6388:104;;;;6507:37;6524:10;;6536:7;;6507:37;;;;;;;;;:::i;:::-;;;;;;;;6212:339:::0;;;;:::o;2636:168::-;1148:8;;:14;;;-1:-1:-1;;;1148:14:104;;;;:8;;;;-1:-1:-1;;;;;1148:8:104;;-1:-1:-1;;1148:14:104;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1134:28:104;:10;:28;1126:49;;;;-1:-1:-1;;;1126:49:104;;22246:2:150;1126:49:104;;;22228:21:150;22285:1;22265:18;;;22258:29;-1:-1:-1;;;22303:18:150;;;22296:38;22351:18;;1126:49:104;22044:331:150;1126:49:104;2724:15:::1;::::0;2715:25:::1;::::0;;;:8:::1;:25;::::0;;;;2743:8;;2715:36:::1;2743:8:::0;2715:25;:36:::1;:::i;:::-;-1:-1:-1::0;;2779:15:104::1;:17:::0;;2766:31:::1;::::0;2779:15:::1;:17;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;2766:31:104::1;::::0;14497:25:150;;;14485:2;14470:18;2766:31:104::1;;;;;;;2636:168:::0;:::o;12180:158::-;12275:4;12298:26;;;:14;:26;;;;;;;;:33;;;;;;;;;12180:158;;;;;:::o;8354:403::-;8445:7;8509:8;;:26;;;-1:-1:-1;;;8509:26:104;;;;8415:13;;;;8445:7;;;;;;8509:8;;;-1:-1:-1;;;;;8509:8:104;;-1:-1:-1;;8509:26:104;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8487:49:104;:10;:49;8479:77;;;;-1:-1:-1;;;8479:77:104;;20871:2:150;8479:77:104;;;20853:21:150;20910:2;20890:18;;;20883:30;-1:-1:-1;;;20929:18:150;;;20922:45;20984:18;;8479:77:104;20669:339:150;8479:77:104;8567:13;8583:17;;;:5;:17;;;;;;8567:33;;;;;;;;;;;;8583:17;;8567:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8567:33:104;;;-1:-1:-1;;8567:33:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8567:33:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8567:33:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8631:6;;8618:20;;8631:6;;-1:-1:-1;8567:33:104;;8618:20;;8631:6;8618:20;:::i;:::-;;;;;;;;;;;;;8639:1;:4;;;8618:26;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;8610:54;;;;-1:-1:-1;;;8610:54:104;;21559:2:150;8610:54:104;;;21541:21:150;21598:2;21578:18;;;21571:30;-1:-1:-1;;;21617:18:150;;;21610:45;21672:18;;8610:54:104;21357:339:150;8610:54:104;8683:1;:6;;;8691:1;:4;;;8697:1;:6;;;:13;;;8712:1;:12;;;:19;;;8733:14;;:16;;;;;;;;;:::i;:::-;;;;-1:-1:-1;8675:75:104;;;;-1:-1:-1;8675:75:104;;-1:-1:-1;8675:75:104;-1:-1:-1;8675:75:104;;-1:-1:-1;8354:403:104;-1:-1:-1;;;8354:403:104:o;2962:178::-;1148:8;;:14;;;-1:-1:-1;;;1148:14:104;;;;:8;;;;-1:-1:-1;;;;;1148:8:104;;-1:-1:-1;;1148:14:104;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1134:28:104;:10;:28;1126:49;;;;-1:-1:-1;;;1126:49:104;;22246:2:150;1126:49:104;;;22228:21:150;22285:1;22265:18;;;22258:29;-1:-1:-1;;;22303:18:150;;;22296:38;22351:18;;1126:49:104;22044:331:150;1126:49:104;3061:20:::1;::::0;;;:8:::1;:20;::::0;;;;3084:8;;3061:31:::1;3084:8:::0;3061:20;:31:::1;:::i;:::-;-1:-1:-1::0;;3107:26:104::1;::::0;14497:25:150;;;3107:26:104::1;::::0;14485:2:150;14470:18;3107:26:104::1;;;;;;;;2962:178:::0;;:::o;771:32::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6899:442::-;7031:8;;:20;;;-1:-1:-1;;;7031:20:104;;;;:8;;;;-1:-1:-1;;;;;7031:8:104;;-1:-1:-1;;7031:20:104;;;;;;;;;;;;;;;:8;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;7017:34:104;:10;:34;7009:61;;;;-1:-1:-1;;;7009:61:104;;17715:2:150;7009:61:104;;;17697:21:150;17754:2;17734:18;;;17727:30;-1:-1:-1;;;17773:18:150;;;17766:44;17827:18;;7009:61:104;17513:338:150;7009:61:104;7081:18;7111:17;;;:5;:17;;;;;;;;:28;;;7102:38;;:8;:38;;;;;;7163:5;:13;;7175:1;7163:13;;;7171:1;7163:13;7150:26;;;;7191:9;7187:148;;;7229:7;7216:2;7219:5;7216:9;;;;;;;:::i;:::-;;;:20;;;;;;;:::i;:::-;;;;-1:-1:-1;7187:148:104;;-1:-1:-1;7187:148:104;;7291:7;7279:2;7282:5;7279:9;;;;;;;:::i;:::-;;;:19;:45;;7323:1;7279:45;;;7313:7;7301:2;7304:5;7301:9;;;;;;;:::i;:::-;;;:19;;;;:::i;:::-;7267:2;7270:5;7267:9;;;;;;;:::i;:::-;;:57;7187:148;6999:342;;6899:442;;;;:::o;12916:162::-;12986:4;13035:17;;;:5;:17;;;;;:29;;;13068:3;;13010:22;13041:10;13010;:22::i;:::-;:54;;;;:::i;:::-;13009:62;;;;:::i;5272:173::-;1148:8;;:14;;;-1:-1:-1;;;1148:14:104;;;;:8;;;;-1:-1:-1;;;;;1148:8:104;;-1:-1:-1;;1148:14:104;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1134:28:104;:10;:28;1126:49;;;;-1:-1:-1;;;1126:49:104;;22246:2:150;1126:49:104;;;22228:21:150;22285:1;22265:18;;;22258:29;-1:-1:-1;;;22303:18:150;;;22296:38;22351:18;;1126:49:104;22044:331:150;1126:49:104;1290:1:::1;1256:19:::0;;;:6:::1;:19;::::0;;;;:31:::1;;::::0;5355:3;;1248:64:::1;;;::::0;-1:-1:-1;;;1248:64:104;;19085:2:150;1248:64:104::1;::::0;::::1;19067:21:150::0;19124:2;19104:18;;;19097:30;-1:-1:-1;;;19143:18:150;;;19136:46;19199:18;;1248:64:104::1;18883:340:150::0;1248:64:104::1;5368:6:::0;449:14:::2;401:4;449:1;:14;:::i;:::-;1646:6;:18;;;:35;;:90;;;;-1:-1:-1::0;507:16:104::2;401:4;507:3;:16;:::i;:::-;1701:6;:18;;;:35;;1646:90;:149;;;;;1777:6;:18;;;1756:6;:18;;;:39;1646:149;1625:211;;;::::0;-1:-1:-1;;;1625:211:104;;21215:2:150;1625:211:104::2;::::0;::::2;21197:21:150::0;21254:2;21234:18;;;21227:30;-1:-1:-1;;;21273:18:150;;;21266:45;21328:18;;1625:211:104::2;21013:339:150::0;1625:211:104::2;5386:11:::3;::::0;;;:6:::3;:11;::::0;;;;5400:6;;5386:20:::3;5400:6:::0;5386:11;:20:::3;:::i;:::-;-1:-1:-1::0;;5421:17:104::3;::::0;14497:25:150;;;5421:17:104::3;::::0;14485:2:150;14470:18;5421:17:104::3;14353:175:150::0;11760:179:104;11824:4;11900:17;;;:5;:17;;;;;;;;:28;;;11891:38;;:8;:38;;;;;11930:1;11891:41;;;11847;;:85;;11891:41;11847:85;:::i;16027:178::-;16110:4;16141:17;;;:5;:17;;;;;;16125:33;;;;;;;;;;16110:4;;16125:33;16141:17;16125:33;;16141:17;;16125:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16125:33:104;;;-1:-1:-1;;16125:33:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16125:33:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16125:33:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16175:23;;;;-1:-1:-1;;;16027:178:104:o;16703:191::-;16862:23;;-1:-1:-1;;;16862:23:104;;;13348:18:150;16774:4:104;;13382:11:150;;16862:23:104;;;-1:-1:-1;;16862:23:104;;;;;;;;;16852:34;;16862:23;16852:34;;;;16824:17;;;;:5;:17;;;;;;16852:34;;16807:40;;16824:17;16807:40;;:::i;:::-;;;;;;;;;;;;;16797:51;;;;;;:89;16789:98;;16703:191;;;:::o;4934:172::-;1148:8;;:14;;;-1:-1:-1;;;1148:14:104;;;;:8;;;;-1:-1:-1;;;;;1148:8:104;;-1:-1:-1;;1148:14:104;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1134:28:104;:10;:28;1126:49;;;;-1:-1:-1;;;1126:49:104;;22246:2:150;1126:49:104;;;22228:21:150;22285:1;22265:18;;;22258:29;-1:-1:-1;;;22303:18:150;;;22296:38;22351:18;;1126:49:104;22044:331:150;1126:49:104;5000:6;449:14:::1;401:4;449:1;:14;:::i;:::-;1646:6;:18;;;:35;;:90;;;;-1:-1:-1::0;507:16:104::1;401:4;507:3;:16;:::i;:::-;1701:6;:18;;;:35;;1646:90;:149;;;;;1777:6;:18;;;1756:6;:18;;;:39;1646:149;1625:211;;;::::0;-1:-1:-1;;;1625:211:104;;21215:2:150;1625:211:104::1;::::0;::::1;21197:21:150::0;21254:2;21234:18;;;21227:30;-1:-1:-1;;;21273:18:150;;;21266:45;21328:18;;1625:211:104::1;21013:339:150::0;1625:211:104::1;5025:11:::2;::::0;5018:19:::2;::::0;;;:6:::2;:19;::::0;;;;5040:6;;5018:28:::2;5040:6:::0;5018:19;:28:::2;:::i;:::-;-1:-1:-1::0;;5072:11:104::2;:13:::0;;5061:38:::2;::::0;5072:11:::2;:13;::::0;::::2;:::i;:::-;::::0;;;-1:-1:-1;5087:11:104::2;:6:::0;;:11:::2;:::i;:::-;5061:38;;;;;;;;:::i;4516:307::-:0;1148:8;;:14;;;-1:-1:-1;;;1148:14:104;;;;:8;;;;-1:-1:-1;;;;;1148:8:104;;-1:-1:-1;;1148:14:104;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1134:28:104;:10;:28;1126:49;;;;-1:-1:-1;;;1126:49:104;;22246:2:150;1126:49:104;;;22228:21:150;22285:1;22265:18;;;22258:29;-1:-1:-1;;;22303:18:150;;;22296:38;22351:18;;1126:49:104;22044:331:150;1126:49:104;4594:14:::1;4611:17:::0;;;:5:::1;:17;::::0;;;;;;4646:20;;:12:::1;::::0;:20:::1;::::0;4611:17;;4646:20:::1;:::i;:::-;;;;;;;;;;;;;4667:1;:4;;4646:26;;;;;;:::i;:::-;::::0;;;::::1;::::0;;;;;::::1;::::0;;;;::::1;;4638:54;;;::::0;-1:-1:-1;;;4638:54:104;;21559:2:150;4638:54:104::1;::::0;::::1;21541:21:150::0;21598:2;21578:18;;;21571:30;-1:-1:-1;;;21617:18:150;;;21610:45;21672:18;;4638:54:104::1;21357:339:150::0;4638:54:104::1;4739:5;4711:12;4724:1;:6;;4711:20;;;;;;:::i;:::-;;;;;;;;;;;;;4732:1;:4;;4711:26;;;;;;:::i;:::-;::::0;;;::::1;::::0;::::1;::::0;;;;;;;;:33;;-1:-1:-1;;4711:33:104::1;::::0;::::1;;::::0;;;::::1;::::0;;;14497:25:150;;;4759:23:104::1;::::0;14470:18:150;4759:23:104::1;;;;;;;4799:17;::::0;;;:5:::1;:17;::::0;;;;;4792:24:::1;4799:17:::0;;4792:24:::1;:::i;:::-;;;::::0;::::1;;;:::i;:::-;-1:-1:-1::0;4792:24:104::1;;::::0;::::1;::::0;;;;;;;;;::::1;::::0;::::1;::::0;;;;;;;;-1:-1:-1;;;;;;4792:24:104::1;::::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;-1:-1:-1;;4516:307:104:o;5553:150::-;1148:8;;:14;;;-1:-1:-1;;;1148:14:104;;;;:8;;;;-1:-1:-1;;;;;1148:8:104;;-1:-1:-1;;1148:14:104;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1134:28:104;:10;:28;1126:49;;;;-1:-1:-1;;;1126:49:104;;22246:2:150;1126:49:104;;;22228:21:150;22285:1;22265:18;;;22258:29;-1:-1:-1;;;22303:18:150;;;22296:38;22351:18;;1126:49:104;22044:331:150;1126:49:104;5611:4:::1;1941:1;1925:4;:13;;;:17;:39;;;;;1963:1;1946:4;:14;;;:18;1925:39;:66;;;;;1990:1;1968:4;:19;;;:23;1925:66;:92;;;;;2016:1;1995:4;:18;;;:22;1925:92;1904:149;;;::::0;-1:-1:-1;;;1904:149:104;;19430:2:150;1904:149:104::1;::::0;::::1;19412:21:150::0;19469:2;19449:18;;;19442:30;-1:-1:-1;;;19488:18:150;;;19481:40;19538:18;;1904:149:104::1;19228:334:150::0;1904:149:104::1;5632:9:::2;::::0;5627:15:::2;::::0;;;:4:::2;:15;::::0;;;;5645:4;;5627:22:::2;5645:4:::0;5627:15;:22:::2;:::i;:::-;-1:-1:-1::0;;5673:9:104::2;:11:::0;;5664:32:::2;::::0;5673:9:::2;:11;::::0;::::2;:::i;10958:229::-:0;11025:4;11117:8;;:23;;;-1:-1:-1;;;11117:23:104;;;;11177:3;;11117:8;;;-1:-1:-1;;;;;11117:8:104;;:21;;:23;;;;;;;;;;;;;;:8;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11117:42:104;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11061:36;11068:17;;;:5;:17;;;;;;;;:28;;;11061:36;;:6;:36;;;;;:53;;;:100;;;;:::i;15657:203::-;15715:11;;:::i;:::-;15728:12;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15728:12:104;15742:10;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15742:10:104;15764:13;15780;;;:5;:13;;;;;;15764:29;;;;;;;;;;;;15780:13;;15764:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;15764:29:104;;;-1:-1:-1;;15764:29:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15764:29:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15764:29:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15821:12;;;;-1:-1:-1;15814:20:104;;;;;;;;;15841:10;;;;15836:16;;;;;;;;;15803:50;;;;;;;;;;15821:12;;-1:-1:-1;15821:12:104;;15836:16;;15803:50;15814:20;;15803:50;;15814:20;;15803:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15657:203;;;;;:::o;7632:521::-;1148:8;;:14;;;-1:-1:-1;;;1148:14:104;;;;:8;;;;-1:-1:-1;;;;;1148:8:104;;-1:-1:-1;;1148:14:104;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1134:28:104;:10;:28;1126:49;;;;-1:-1:-1;;;1126:49:104;;22246:2:150;1126:49:104;;;22228:21:150;22285:1;22265:18;;;22258:29;-1:-1:-1;;;22303:18:150;;;22296:38;22351:18;;1126:49:104;22044:331:150;1126:49:104;7813:41;;::::1;7805:50;;;::::0;::::1;;7871:6;7866:207;7879:16:::0;;::::1;7866:207;;;358:2;7924:18;;7943:1;7924:21;;;;;;;:::i;:::-;;;;;;;:41;;7916:72;;;::::0;-1:-1:-1;;;7916:72:104;;18397:2:150;7916:72:104::1;::::0;::::1;18379:21:150::0;18436:2;18416:18;;;18409:30;-1:-1:-1;;;18455:18:150;;;18448:48;18513:18;;7916:72:104::1;18195:342:150::0;7916:72:104::1;8041:18;;8060:1;8041:21;;;;;;;:::i;:::-;;;;;;;8002:14;:26;8017:10;8002:26;;;;;;;;;;;:36;8029:5;;8035:1;8029:8;;;;;;;:::i;:::-;;;;;;;8002:36;;;;;;;;;;;:60;;;;7897:3;;;;:::i;:::-;;;7866:207;;;;8088:58;8108:10;8120:5;;8127:18;;8088:58;;;;;;;;;;:::i;:::-;;;;;;;;7632:521:::0;;;;;:::o;729:36::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5874:155::-;1148:8;;:14;;;-1:-1:-1;;;1148:14:104;;;;:8;;;;-1:-1:-1;;;;;1148:8:104;;-1:-1:-1;;1148:14:104;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1134:28:104;:10;:28;1126:49;;;;-1:-1:-1;;;1126:49:104;;22246:2:150;1126:49:104;;;22228:21:150;22285:1;22265:18;;;22258:29;-1:-1:-1;;;22303:18:150;;;22296:38;22351:18;;1126:49:104;22044:331:150;1126:49:104;1415:1:::1;1388:15:::0;;;:4:::1;:15;::::0;;;;:24:::1;;::::0;5949:3;;1380:55:::1;;;::::0;-1:-1:-1;;;1380:55:104;;21903:2:150;1380:55:104::1;::::0;::::1;21885:21:150::0;21942:2;21922:18;;;21915:30;-1:-1:-1;;;21961:18:150;;;21954:44;22015:18;;1380:55:104::1;21701:338:150::0;1380:55:104::1;5960:4:::2;1941:1;1925:4;:13;;;:17;:39;;;;;1963:1;1946:4;:14;;;:18;1925:39;:66;;;;;1990:1;1968:4;:19;;;:23;1925:66;:92;;;;;2016:1;1995:4;:18;;;:22;1925:92;1904:149;;;::::0;-1:-1:-1;;;1904:149:104;;19430:2:150;1904:149:104::2;::::0;::::2;19412:21:150::0;19469:2;19449:18;;;19442:30;-1:-1:-1;;;19488:18:150;;;19481:40;19538:18;;1904:149:104::2;19228:334:150::0;1904:149:104::2;5976:9:::3;::::0;;;:4:::3;:9;::::0;;;;5988:4;;5976:16:::3;5988:4:::0;5976:9;:16:::3;:::i;:::-;-1:-1:-1::0;;6007:15:104::3;::::0;14497:25:150;;;6007:15:104::3;::::0;14485:2:150;14470:18;6007:15:104::3;14353:175:150::0;877:40:104;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;877:40:104;;-1:-1:-1;877:40:104:o;11391:175::-;11459:4;11556:3;11530:22;11541:10;11530;:22::i;:::-;11483:17;;;;:5;:17;;;;;:44;;;:69;;;;:::i;689:34::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;689:34:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;689:34:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;689:34:104;;-1:-1:-1;689:34:104;;-1:-1:-1;689:34:104;;;;;:::o;2306:230::-;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;;19769:2:150;3325:201:24;;;19751:21:150;19808:2;19788:18;;;19781:30;19847:34;19827:18;;;19820:62;-1:-1:-1;;;19898:18:150;;;19891:44;19952:19;;3325:201:24;19567: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;2424:1:104::1;2406:15;:19;2398:42;;;::::0;-1:-1:-1;;;2398:42:104;;20532:2:150;2398:42:104::1;::::0;::::1;20514:21:150::0;20571:2;20551:18;;;20544:30;-1:-1:-1;;;20590:18:150;;;20583:40;20640:18;;2398:42:104::1;20330:334:150::0;2398:42:104::1;2450:14;:32:::0;;;2492:8:::1;:37:::0;;-1:-1:-1;;;;;;2492:37:104::1;-1:-1:-1::0;;;;;;2492:37:104;::::1;;;::::0;;3647:99:24;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:24;;;3721:14;;-1:-1:-1;14685:36:150;;3721:14:24;;14673:2:150;14658:18;3721:14:24;;;;;;;3647:99;3269:483;2306:230:104;;:::o;3248:376::-;1148:8;;:14;;;-1:-1:-1;;;1148:14:104;;;;:8;;;;-1:-1:-1;;;;;1148:8:104;;-1:-1:-1;;1148:14:104;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1134:28:104;:10;:28;1126:49;;;;-1:-1:-1;;;1126:49:104;;22246:2:150;1126:49:104;;;22228:21:150;22285:1;22265:18;;;22258:29;-1:-1:-1;;;22303:18:150;;;22296:38;22351:18;;1126:49:104;22044:331:150;1126:49:104;3324:10:::1;::::0;::::1;1514:19:::0;::::1;1506:46;;;::::0;-1:-1:-1;;;1506:46:104;;18058:2:150;1506:46:104::1;::::0;::::1;18040:21:150::0;18097:2;18077:18;;;18070:30;-1:-1:-1;;;18116:18:150;;;18109:40;18166:18;;1506:46:104::1;17856:334:150::0;1506:46:104::1;3348:16:::2;::::0;::::2;;1290:1;1256:19:::0;;;:6:::2;:19;::::0;;;;:31:::2;;::::0;1248:64:::2;;;::::0;-1:-1:-1;;;1248:64:104;;19085:2:150;1248:64:104::2;::::0;::::2;19067:21:150::0;19124:2;19104:18;;;19097:30;-1:-1:-1;;;19143:18:150;;;19136:46;19199:18;;1248:64:104::2;18883:340:150::0;1248:64:104::2;3376:14:::3;::::0;::::3;;1415:1;1388:15:::0;;;:4:::3;:15;::::0;;;;:24:::3;;::::0;1380:55:::3;;;::::0;-1:-1:-1;;;1380:55:104;;21903:2:150;1380:55:104::3;::::0;::::3;21885:21:150::0;21942:2;21922:18;;;21915:30;-1:-1:-1;;;21961:18:150;;;21954:44;22015:18;;1380:55:104::3;21701:338:150::0;1380:55:104::3;3411:12:::4;3424:10;:5:::0;;:10:::4;:::i;:::-;3411:24;;;;;;;:::i;:::-;;;;;;;;;;;;;3436:5;:8;;;;;;;;:::i;:::-;3411:34;;;;;;;:::i;:::-;::::0;;;::::4;::::0;;;;;::::4;::::0;;;;::::4;;3410:35;3402:67;;;::::0;-1:-1:-1;;;3402:67:104;;20184:2:150;3402:67:104::4;::::0;::::4;20166:21:150::0;20223:2;20203:18;;;20196:30;-1:-1:-1;;;20242:18:150;;;20235:49;20301:18;;3402:67:104::4;19982:343:150::0;3402:67:104::4;3486:10;::::0;3480:17:::4;::::0;;;:5:::4;:17;::::0;;;;3500:5;;3480:25:::4;3500:5:::0;3480:17;:25:::4;:::i;:::-;-1:-1:-1::0;3552:4:104::4;::::0;-1:-1:-1;3515:12:104::4;3528:10;:5:::0;;:10:::4;:::i;:::-;3515:24;;;;;;;:::i;:::-;;;;;;;;;;;;;3540:5;:8;;;;;;;;:::i;:::-;3515:34;;;;;;;:::i;:::-;::::0;;;::::4;::::0;;;;;::::4;::::0;;;:41;;;::::4;;-1:-1:-1::0;;3515:41:104;;::::4;::::0;;;::::4;::::0;;3582:10:::4;:12:::0;;3572:45:::4;::::0;3515:34:::4;3582:12;::::0;::::4;:::i;:::-;::::0;;;-1:-1:-1;3596:10:104::4;:5:::0;;:10:::4;:::i;:::-;3608:8;;::::0;::::4;:5:::0;:8:::4;:::i;:::-;3572:45;;;;;;;;;;:::i;16371:175::-:0;16453:3;16483:17;;;:5;:17;;;;;;16467:33;;;;;;;;;;16453:3;;16467:33;16483:17;16467:33;;16483:17;;16467:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;16467:33:104;;;-1:-1:-1;;16467:33:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16467:33:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16467:33:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16517:22;;;;-1:-1:-1;;;16371:175:104:o;3789:594::-;1148:8;;:14;;;-1:-1:-1;;;1148:14:104;;;;:8;;;;-1:-1:-1;;;;;1148:8:104;;-1:-1:-1;;1148:14:104;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1134:28:104;:10;:28;1126:49;;;;-1:-1:-1;;;1126:49:104;;22246:2:150;1126:49:104;;;22228:21:150;22285:1;22265:18;;;22258:29;-1:-1:-1;;;22303:18:150;;;22296:38;22351:18;;1126:49:104;22044:331:150;1126:49:104;3893:10:::1;::::0;::::1;1514:19:::0;::::1;1506:46;;;::::0;-1:-1:-1;;;1506:46:104;;18058:2:150;1506:46:104::1;::::0;::::1;18040:21:150::0;18097:2;18077:18;;;18070:30;-1:-1:-1;;;18116:18:150;;;18109:40;18166:18;;1506:46:104::1;17856:334:150::0;1506:46:104::1;3915:14:::2;::::0;::::2;;1415:1;1388:15:::0;;;:4:::2;:15;::::0;;;;:24:::2;;::::0;1380:55:::2;;;::::0;-1:-1:-1;;;1380:55:104;;21903:2:150;1380:55:104::2;::::0;::::2;21885:21:150::0;21942:2;21922:18;;;21915:30;-1:-1:-1;;;21961:18:150;;;21954:44;22015:18;;1380:55:104::2;21701:338:150::0;1380:55:104::2;3941:14:::3;3958:17:::0;;;:5:::3;:17;::::0;;;;;;3993:20;;:12:::3;::::0;:20:::3;::::0;3958:17;;3993:20:::3;:::i;:::-;;;;;;;;;;;;;4014:1;:4;;3993:26;;;;;;:::i;:::-;::::0;;;::::3;::::0;;;;;::::3;::::0;;;;::::3;;3985:54;;;::::0;-1:-1:-1;;;3985:54:104;;21559:2:150;3985:54:104::3;::::0;::::3;21541:21:150::0;21598:2;21578:18;;;21571:30;-1:-1:-1;;;21617:18:150;;;21610:45;21672:18;;3985:54:104::3;21357:339:150::0;3985:54:104::3;4059:10;::::0;::::3;31409:19:150::0;4050:6:104::3;::::0;::::3;31396:33:150::0;31472:14;;;31459:28;31445:12;;;31438:50;4091:13:104::3;::::0;::::3;;4079:9;::::0;::::3;:25:::0;4127:14:::3;::::0;::::3;;4114:10;::::0;::::3;:27:::0;4155:16:::3;::::0;::::3;:30;:34:::0;;;;:75:::3;;-1:-1:-1::0;4228:1:104::3;4193:23;::::0;;;;;;::::3;:::i;:::-;-1:-1:-1::0;;;;;4193:37:104::3;;;4155:75;4151:187;;;4261:16;::::0;::::3;4246:12;::::0;::::3;:31;4261:16:::0;4246:12;:31:::3;:::i;:::-;;;;4151:187;;;4315:12;;::::0;::::3;4308:19:::0;;;;;;-1:-1:-1;;;;;;4308:19:104::3;::::0;;4151:187:::3;4353:23;::::0;14497:25:150;;;4353:23:104::3;::::0;14485:2:150;14470:18;4353:23:104::3;14353:175:150::0;13477:804:104;13584:4;13628:8;;:40;;-1:-1:-1;;;13628:40:104;;;;;25556:25:150;;;25597:18;;;25590:34;;;13584:4:104;;13628:8;;;-1:-1:-1;;;;;13628:8:104;;:25;;25529:18:150;;13628:40:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13678:26;13707:8;;:40;;-1:-1:-1;;;13707:40:104;;;;;25556:25:150;;;13745:1:104;25597:18:150;;;25590:34;13600:68:104;;-1:-1:-1;13678:26:104;;13707:8;;;;-1:-1:-1;;;;;13707:8:104;;:25;;25529:18:150;;13707:40:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13678:69;;13762:4;13758:151;;;13782:42;13806:18;13782:42;;:::i;:::-;;;13758:151;;;13855:43;13880:18;13855:43;;:::i;:::-;;;13758:151;13919:20;14019:44;14042:21;14019:20;:44;:::i;:::-;13950:4;:51;;13981:20;13950:51;;;13957:21;13950:51;13943:59;;:3;:59;:::i;:::-;13942:122;;;;:::i;:::-;14074:22;14099:20;;;:8;:20;;;;;;;;14074:45;;;;;;;;13919:145;;-1:-1:-1;14074:22:104;;14099:20;14074:45;;;;14099:20;14074:45;:22;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14074:45:104;;-1:-1:-1;14074:45:104;;-1:-1:-1;14130:8:104;;-1:-1:-1;14141:18:104;14157:2;14141:15;:18;:::i;:::-;14130:29;;14268:5;401:4;14230:7;:16;;;14247:3;14230:21;;;;;;;:::i;:::-;;;;;14252:1;14230:24;;;;14182:16;;14211:15;;14199:3;14182:21;;;;;;;:::i;:::-;;;;;:24;:45;;;;:::i;:::-;:72;;;;:::i;:::-;14177:89;;;;:::i;:::-;:96;;;;:::i;:::-;14169:105;13477:804;-1:-1:-1;;;;;;;;;13477:804:104:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;14:367:150:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:150;;-1:-1:-1;;;;;214:30:150;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;308:67;14:367;;;;;:::o;386:160::-;451:20;;507:13;;500:21;490:32;;480:60;;536:1;533;526:12;480:60;386:160;;;:::o;551:719::-;594:5;647:3;640:4;632:6;628:17;624:27;614:55;;665:1;662;655:12;614:55;688:20;;-1:-1:-1;;;;;757:10:150;;;754:36;;;770:18;;:::i;:::-;845:2;839:9;813:2;899:13;;-1:-1:-1;;895:22:150;;;919:2;891:31;887:40;875:53;;;943:18;;;963:22;;;940:46;937:72;;;989:18;;:::i;:::-;1029:10;1025:2;1018:22;1064:2;1056:6;1049:18;1110:3;1103:4;1098:2;1090:6;1086:15;1082:26;1079:35;1076:55;;;1127:1;1124;1117:12;1076:55;1191:2;1184:4;1176:6;1172:17;1165:4;1157:6;1153:17;1140:54;1238:1;1231:4;1226:2;1218:6;1214:15;1210:26;1203:37;1258:6;1249:15;;;;;;551:719;;;;:::o;1275:152::-;1331:5;1376:3;1367:6;1362:3;1358:16;1354:26;1351:46;;;1393:1;1390;1383:12;1351:46;-1:-1:-1;1415:6:150;1275:152;-1:-1:-1;1275:152:150:o;1432:154::-;1490:5;1535:3;1526:6;1521:3;1517:16;1513:26;1510:46;;;1552:1;1549;1542:12;1591:153;1648:5;1693:3;1684:6;1679:3;1675:16;1671:26;1668:46;;;1710:1;1707;1700:12;1749:156;1809:5;1854:3;1845:6;1840:3;1836:16;1832:26;1829:46;;;1871:1;1868;1861:12;1910:247;1969:6;2022:2;2010:9;2001:7;1997:23;1993:32;1990:52;;;2038:1;2035;2028:12;1990:52;2077:9;2064:23;2096:31;2121:5;2096:31;:::i;:::-;2146:5;1910:247;-1:-1:-1;;;1910:247:150:o;2162:251::-;2232:6;2285:2;2273:9;2264:7;2260:23;2256:32;2253:52;;;2301:1;2298;2291:12;2253:52;2333:9;2327:16;2352:31;2377:5;2352:31;:::i;2418:315::-;2486:6;2494;2547:2;2535:9;2526:7;2522:23;2518:32;2515:52;;;2563:1;2560;2553:12;2515:52;2602:9;2589:23;2621:31;2646:5;2621:31;:::i;:::-;2671:5;2723:2;2708:18;;;;2695:32;;-1:-1:-1;;;2418:315:150:o;2738:773::-;2860:6;2868;2876;2884;2937:2;2925:9;2916:7;2912:23;2908:32;2905:52;;;2953:1;2950;2943:12;2905:52;2980:23;;-1:-1:-1;;;;;3052:14:150;;;3049:34;;;3079:1;3076;3069:12;3049:34;3118:70;3180:7;3171:6;3160:9;3156:22;3118:70;:::i;:::-;3207:8;;-1:-1:-1;3092:96:150;-1:-1:-1;3295:2:150;3280:18;;3267:32;;-1:-1:-1;3311:16:150;;;3308:36;;;3340:1;3337;3330:12;3308:36;;3379:72;3443:7;3432:8;3421:9;3417:24;3379:72;:::i;:::-;2738:773;;;;-1:-1:-1;3470:8:150;-1:-1:-1;;;;2738:773:150:o;4077:543::-;4165:6;4173;4226:2;4214:9;4205:7;4201:23;4197:32;4194:52;;;4242:1;4239;4232:12;4194:52;4269:23;;-1:-1:-1;;;;;4341:14:150;;;4338:34;;;4368:1;4365;4358:12;4338:34;4391:50;4433:7;4424:6;4413:9;4409:22;4391:50;:::i;:::-;4381:60;;4494:2;4483:9;4479:18;4466:32;4450:48;;4523:2;4513:8;4510:16;4507:36;;;4539:1;4536;4529:12;4507:36;;4562:52;4606:7;4595:8;4584:9;4580:24;4562:52;:::i;:::-;4552:62;;;4077:543;;;;;:::o;4625:349::-;4708:6;4761:2;4749:9;4740:7;4736:23;4732:32;4729:52;;;4777:1;4774;4767:12;4729:52;4804:23;;-1:-1:-1;;;;;4839:30:150;;4836:50;;;4882:1;4879;4872:12;4836:50;4905:63;4960:7;4951:6;4940:9;4936:22;4905:63;:::i;:::-;4895:73;4625:349;-1:-1:-1;;;;4625:349:150:o;4979:353::-;5064:6;5117:2;5105:9;5096:7;5092:23;5088:32;5085:52;;;5133:1;5130;5123:12;5085:52;5160:23;;-1:-1:-1;;;;;5195:30:150;;5192:50;;;5238:1;5235;5228:12;5192:50;5261:65;5318:7;5309:6;5298:9;5294:22;5261:65;:::i;5337:351::-;5421:6;5474:2;5462:9;5453:7;5449:23;5445:32;5442:52;;;5490:1;5487;5480:12;5442:52;5517:23;;-1:-1:-1;;;;;5552:30:150;;5549:50;;;5595:1;5592;5585:12;5549:50;5618:64;5674:7;5665:6;5654:9;5650:22;5618:64;:::i;5693:240::-;5780:6;5833:3;5821:9;5812:7;5808:23;5804:33;5801:53;;;5850:1;5847;5840:12;5801:53;5873:54;5919:7;5908:9;5873:54;:::i;5938:180::-;5997:6;6050:2;6038:9;6029:7;6025:23;6021:32;6018:52;;;6066:1;6063;6056:12;6018:52;-1:-1:-1;6089:23:150;;5938:180;-1:-1:-1;5938:180:150:o;6123:184::-;6193:6;6246:2;6234:9;6225:7;6221:23;6217:32;6214:52;;;6262:1;6259;6252:12;6214:52;-1:-1:-1;6285:16:150;;6123:184;-1:-1:-1;6123:184:150:o;6312:841::-;6443:6;6451;6459;6467;6475;6528:2;6516:9;6507:7;6503:23;6499:32;6496:52;;;6544:1;6541;6534:12;6496:52;6567:23;;;-1:-1:-1;6641:2:150;6626:18;;6613:32;-1:-1:-1;;;;;6694:14:150;;;6691:34;;;6721:1;6718;6711:12;6691:34;6760:70;6822:7;6813:6;6802:9;6798:22;6760:70;:::i;:::-;6849:8;;-1:-1:-1;6734:96:150;-1:-1:-1;6937:2:150;6922:18;;6909:32;;-1:-1:-1;6953:16:150;;;6950:36;;;6982:1;6979;6972:12;6950:36;;7021:72;7085:7;7074:8;7063:9;7059:24;7021:72;:::i;:::-;6312:841;;;;-1:-1:-1;6312:841:150;;-1:-1:-1;7112:8:150;;6995:98;6312:841;-1:-1:-1;;;6312:841:150:o;7158:417::-;7250:6;7258;7311:2;7299:9;7290:7;7286:23;7282:32;7279:52;;;7327:1;7324;7317:12;7279:52;7350:23;;;-1:-1:-1;7424:2:150;7409:18;;7396:32;-1:-1:-1;;;;;7440:30:150;;7437:50;;;7483:1;7480;7473:12;7437:50;7506:63;7561:7;7552:6;7541:9;7537:22;7506:63;:::i;7580:421::-;7674:6;7682;7735:2;7723:9;7714:7;7710:23;7706:32;7703:52;;;7751:1;7748;7741:12;7703:52;7774:23;;;-1:-1:-1;7848:2:150;7833:18;;7820:32;-1:-1:-1;;;;;7864:30:150;;7861:50;;;7907:1;7904;7897:12;7861:50;7930:65;7987:7;7978:6;7967:9;7963:22;7930:65;:::i;8006:419::-;8099:6;8107;8160:2;8148:9;8139:7;8135:23;8131:32;8128:52;;;8176:1;8173;8166:12;8128:52;8199:23;;;-1:-1:-1;8273:2:150;8258:18;;8245:32;-1:-1:-1;;;;;8289:30:150;;8286:50;;;8332:1;8329;8322:12;8286:50;8355:64;8411:7;8402:6;8391:9;8387:22;8355:64;:::i;8430:308::-;8526:6;8534;8587:3;8575:9;8566:7;8562:23;8558:33;8555:53;;;8604:1;8601;8594:12;8555:53;8640:9;8627:23;8617:33;;8669:63;8724:7;8719:2;8708:9;8704:18;8669:63;:::i;:::-;8659:73;;8430:308;;;;;:::o;8743:248::-;8811:6;8819;8872:2;8860:9;8851:7;8847:23;8843:32;8840:52;;;8888:1;8885;8878:12;8840:52;-1:-1:-1;;8911:23:150;;;8981:2;8966:18;;;8953:32;;-1:-1:-1;8743:248:150:o;8996:316::-;9070:6;9078;9086;9139:2;9127:9;9118:7;9114:23;9110:32;9107:52;;;9155:1;9152;9145:12;9107:52;9191:9;9178:23;9168:33;;9248:2;9237:9;9233:18;9220:32;9210:42;;9271:35;9302:2;9291:9;9287:18;9271:35;:::i;:::-;9261:45;;8996:316;;;;;:::o;9317:385::-;9397:6;9405;9413;9421;9474:3;9462:9;9453:7;9449:23;9445:33;9442:53;;;9491:1;9488;9481:12;9442:53;9527:9;9514:23;9504:33;;9584:2;9573:9;9569:18;9556:32;9546:42;;9607:35;9638:2;9627:9;9623:18;9607:35;:::i;:::-;9597:45;;9661:35;9692:2;9681:9;9677:18;9661:35;:::i;:::-;9651:45;;9317:385;;;;;;;:::o;9707:354::-;9795:19;;;9777:3;-1:-1:-1;;;;;9826:31:150;;9823:51;;;9870:1;9867;9860:12;9823:51;9906:6;9903:1;9899:14;9958:8;9951:5;9944:4;9939:3;9935:14;9922:45;10035:1;9990:18;;10010:4;9986:29;10024:13;;;-1:-1:-1;9986:29:150;;9707:354;-1:-1:-1;;9707:354:150:o;10066:267::-;10155:6;10150:3;10143:19;10207:6;10200:5;10193:4;10188:3;10184:14;10171:43;-1:-1:-1;10259:1:150;10234:16;;;10252:4;10230:27;;;10223:38;;;;10315:2;10294:15;;;-1:-1:-1;;10290:29:150;10281:39;;;10277:50;;10066:267::o;10338:258::-;10380:3;10418:5;10412:12;10445:6;10440:3;10433:19;10461:63;10517:6;10510:4;10505:3;10501:14;10494:4;10487:5;10483:16;10461:63;:::i;:::-;10578:2;10557:15;-1:-1:-1;;10553:29:150;10544:39;;;;10585:4;10540:50;;10338:258;-1:-1:-1;;10338:258:150:o;10783:440::-;10829:3;10873:5;10867:12;10900:4;10895:3;10888:17;10926:47;10967:4;10962:3;10958:14;10944:12;10926:47;:::i;:::-;10914:59;;11022:4;11015:5;11011:16;11005:23;10998:4;10993:3;10989:14;10982:47;11078:4;11071:5;11067:16;11061:23;11054:4;11049:3;11045:14;11038:47;11134:4;11127:5;11123:16;11117:23;11110:4;11105:3;11101:14;11094:47;11190:4;11183:5;11179:16;11173:23;11166:4;11161:3;11157:14;11150:47;11213:4;11206:11;;;10783:440;;;;:::o;11378:386::-;11426:3;11470:5;11464:12;11497:4;11492:3;11485:17;11523:47;11564:4;11559:3;11555:14;11541:12;11523:47;:::i;:::-;11511:59;;11619:4;11612:5;11608:16;11602:23;11595:4;11590:3;11586:14;11579:47;11675:4;11668:5;11664:16;11658:23;11651:4;11646:3;11642:14;11635:47;11731:4;11724:5;11720:16;11714:23;11707:4;11702:3;11698:14;11691:47;11754:4;11747:11;;;11378:386;;;;:::o;11769:273::-;11954:6;11946;11941:3;11928:33;11910:3;11980:16;;12005:13;;;11980:16;11769:273;-1:-1:-1;11769:273:150:o;12047:276::-;12178:3;12216:6;12210:13;12232:53;12278:6;12273:3;12266:4;12258:6;12254:17;12232:53;:::i;:::-;12301:16;;;;;12047:276;-1:-1:-1;;12047:276:150:o;12328:813::-;12456:3;12485:1;12518:6;12512:13;12548:36;12574:9;12548:36;:::i;:::-;12603:1;12620:18;;;12647:104;;;;12765:1;12760:356;;;;12613:503;;12647:104;-1:-1:-1;;12680:24:150;;12668:37;;12725:16;;;;-1:-1:-1;12647:104:150;;12760:356;12791:6;12788:1;12781:17;12821:4;12866:2;12863:1;12853:16;12891:1;12905:165;12919:6;12916:1;12913:13;12905:165;;;12997:14;;12984:11;;;12977:35;13040:16;;;;12934:10;;12905:165;;;12909:3;;;13099:6;13094:3;13090:16;13083:23;;12613:503;-1:-1:-1;13132:3:150;;12328:813;-1:-1:-1;;;;;;12328:813:150:o;13404:519::-;13681:2;13670:9;13663:21;13644:4;13707:73;13776:2;13765:9;13761:18;13753:6;13745;13707:73;:::i;:::-;13828:9;13820:6;13816:22;13811:2;13800:9;13796:18;13789:50;13856:61;13910:6;13902;13894;13856:61;:::i;:::-;13848:69;13404:519;-1:-1:-1;;;;;;;13404:519:150:o;14732:625::-;15013:3;15002:9;14995:22;14976:4;15040:46;15081:3;15070:9;15066:19;15058:6;15040:46;:::i;:::-;15134:9;15126:6;15122:22;15117:2;15106:9;15102:18;15095:50;15162:33;15188:6;15180;15162:33;:::i;:::-;15226:2;15211:18;;15204:34;;;;-1:-1:-1;;;;;;;15274:32:150;;;;15269:2;15254:18;;15247:60;15338:3;15323:19;;;15316:35;15204:34;;-1:-1:-1;;14732:625:150:o;15362:1194::-;15877:4;15906:3;15936:2;15925:9;15918:21;15962:45;16003:2;15992:9;15988:18;15980:6;15962:45;:::i;:::-;15948:59;;16055:9;16047:6;16043:22;16038:2;16027:9;16023:18;16016:50;16083:33;16109:6;16101;16083:33;:::i;:::-;11298:12;;16171:2;16156:18;;11286:25;11360:4;11349:16;;11343:23;11327:14;;;11320:47;16075:41;-1:-1:-1;16125:50:150;;-1:-1:-1;11228:145:150;16125:50;10677:12;;16236:3;16221:19;;10665:25;10743:4;10732:16;;;10726:23;-1:-1:-1;;;;;10722:49:150;-1:-1:-1;10706:14:150;;10699:73;16272:3;16257:19;;16250:35;;;;16316:3;16301:19;;16294:35;;;;16360:3;16345:19;;16338:35;;;;16404:3;16389:19;;16382:35;;;;16448:3;16433:19;;16426:35;16492:3;16477:19;;16470:35;16536:3;16521:19;;;16514:36;10732:16;;-1:-1:-1;;;15362:1194:150:o;16561:435::-;16794:3;16783:9;16776:22;16757:4;16815:46;16856:3;16845:9;16841:19;16833:6;16815:46;:::i;:::-;16892:2;16877:18;;16870:34;;;;-1:-1:-1;16935:2:150;16920:18;;16913:34;;;;16978:2;16963:18;;;16956:34;16807:54;16561:435;-1:-1:-1;16561:435:150:o;17001:507::-;17262:3;17251:9;17244:22;17225:4;17283:46;17324:3;17313:9;17309:19;17301:6;17283:46;:::i;:::-;17275:54;;17365:6;17360:2;17349:9;17345:18;17338:34;17408:6;17403:2;17392:9;17388:18;17381:34;17451:6;17446:2;17435:9;17431:18;17424:34;17495:6;17489:3;17478:9;17474:19;17467:35;17001:507;;;;;;;;:::o;22380:257::-;10677:12;;10665:25;;10743:4;10732:16;;;10726:23;-1:-1:-1;;;;;10722:49:150;10706:14;;;10699:73;22572:2;22557:18;;22584:47;10601:177;22642:239;11298:12;;11286:25;;11360:4;11349:16;;;11343:23;11327:14;;;11320:47;22822:2;22807:18;;22834:41;11228:145;22886:1706;23209:2;23198:9;23191:21;23172:4;23247:6;23241:13;23273:6;23315:2;23310;23299:9;23295:18;23288:30;23341:52;23388:3;23377:9;23373:19;23359:12;23341:52;:::i;:::-;23327:66;;23442:4;23434:6;23430:17;23424:24;23517:2;23513:7;23501:9;23493:6;23489:22;23485:36;23479:3;23468:9;23464:19;23457:65;23545:41;23579:6;23563:14;23545:41;:::i;:::-;23531:55;;;23635:4;23627:6;23623:17;23617:24;23650:59;23704:3;23693:9;23689:19;23673:14;11298:12;;11286:25;;11360:4;11349:16;;;11343:23;11327:14;;11320:47;11228:145;23650:59;-1:-1:-1;23758:2:150;23746:15;;23740:22;10677:12;;23831:3;23816:19;;10665:25;10743:4;10732:16;;10726:23;-1:-1:-1;;;;;10722:49:150;10706:14;;;10699:73;-1:-1:-1;23873:3:150;23861:16;;23855:23;23897:3;23916:18;;;23909:30;;;;23976:3;23964:16;;23958:23;24000:3;24019:18;;;24012:30;;;;24097:4;24085:17;;24079:24;24073:3;24058:19;;24051:53;24159:3;24147:16;;24141:23;24135:3;24120:19;;24113:52;24219:6;24207:19;;24201:26;24181:18;;;24174:54;;;;24271:15;;24265:22;24259:3;24244:19;;24237:51;24331:15;;24325:22;24319:3;24304:19;;24297:51;24386:22;;;24379:4;24364:20;;24357:52;24432:39;24390:6;24456;24432:39;:::i;:::-;24418:53;;24521:9;24513:6;24509:22;24502:4;24491:9;24487:20;24480:52;24549:37;24579:6;24571;24549:37;:::i;:::-;24541:45;22886:1706;-1:-1:-1;;;;;;22886:1706:150:o;24779:590::-;25084:6;25073:9;25066:25;25127:2;25122;25111:9;25107:18;25100:30;25047:4;25153:73;25222:2;25211:9;25207:18;25199:6;25191;25153:73;:::i;:::-;25274:9;25266:6;25262:22;25257:2;25246:9;25242:18;25235:50;25302:61;25356:6;25348;25340;25302:61;:::i;:::-;25294:69;24779:590;-1:-1:-1;;;;;;;;24779:590:150:o;25896:318::-;26083:6;26072:9;26065:25;26126:2;26121;26110:9;26106:18;26099:30;26046:4;26146:62;26204:2;26193:9;26189:18;26181:6;26173;26146:62;:::i;:::-;26138:70;25896:318;-1:-1:-1;;;;;25896:318:150:o;26219:508::-;26464:6;26453:9;26446:25;26507:2;26502;26491:9;26487:18;26480:30;26427:4;26533:62;26591:2;26580:9;26576:18;26568:6;26560;26533:62;:::i;:::-;26643:9;26635:6;26631:22;26626:2;26615:9;26611:18;26604:50;26671;26714:6;26706;26698;26671:50;:::i;26732:522::-;26810:4;26816:6;26876:11;26863:25;26970:2;26966:7;26955:8;26939:14;26935:29;26931:43;26911:18;26907:68;26897:96;;26989:1;26986;26979:12;26897:96;27016:33;;27068:20;;;-1:-1:-1;;;;;;27100:30:150;;27097:50;;;27143:1;27140;27133:12;27097:50;27176:4;27164:17;;-1:-1:-1;27207:14:150;27203:27;;;27193:38;;27190:58;;;27244:1;27241;27234:12;27385:265;27424:3;27452:9;;;-1:-1:-1;;;;;27496:27:150;;;27489:35;;27477:10;;27473:52;27470:78;;;27528:18;;:::i;:::-;-1:-1:-1;;;27575:19:150;;;27568:27;;27560:36;;27557:62;;;27599:18;;:::i;:::-;-1:-1:-1;;27635:9:150;;27385:265::o;27655:128::-;27695:3;27726:1;27722:6;27719:1;27716:13;27713:39;;;27732:18;;:::i;:::-;-1:-1:-1;27768:9:150;;27655:128::o;27788:217::-;27828:1;27854;27844:132;;27898:10;27893:3;27889:20;27886:1;27879:31;27933:4;27930:1;27923:15;27961:4;27958:1;27951:15;27844:132;-1:-1:-1;27990:9:150;;27788:217::o;28010:553::-;28049:7;-1:-1:-1;;;;;28119:9:150;;;28147;;;28191:10;;;28185:17;;28172:11;;;28168:35;28165:61;;;28206:18;;:::i;:::-;-1:-1:-1;;;28282:1:150;28275:9;;28320:11;;;28313:19;;28300:11;;;28296:37;28293:63;;;28336:18;;:::i;:::-;28382:1;28379;28375:9;28365:19;;28429:1;28425:2;28420:11;28417:1;28413:19;28408:2;28404;28400:11;28396:37;28393:63;;;28436:18;;:::i;:::-;28501:1;28497:2;28492:11;28489:1;28485:19;28480:2;28476;28472:11;28468:37;28465:63;;;28508:18;;:::i;:::-;-1:-1:-1;;;28548:9:150;;;;;28010:553;-1:-1:-1;;;28010:553:150:o;28568:168::-;28608:7;28674:1;28670;28666:6;28662:14;28659:1;28656:21;28651:1;28644:9;28637:17;28633:45;28630:71;;;28681:18;;:::i;:::-;-1:-1:-1;28721:9:150;;28568:168::o;28741:125::-;28781:4;28809:1;28806;28803:8;28800:34;;;28814:18;;:::i;:::-;-1:-1:-1;28851:9:150;;28741:125::o;28871:545::-;28973:2;28968:3;28965:11;28962:448;;;29009:1;29034:5;29030:2;29023:17;29079:4;29075:2;29065:19;29149:2;29137:10;29133:19;29130:1;29126:27;29120:4;29116:38;29185:4;29173:10;29170:20;29167:47;;;-1:-1:-1;29208:4:150;29167:47;29263:2;29258:3;29254:12;29251:1;29247:20;29241:4;29237:31;29227:41;;29318:82;29336:2;29329:5;29326:13;29318:82;;;29381:17;;;29362:1;29351:13;29318:82;;29421:1190;-1:-1:-1;;;;;29521:27:150;;29518:53;;;29551:18;;:::i;:::-;29580:94;29670:3;29630:38;29662:4;29656:11;29630:38;:::i;:::-;29624:4;29580:94;:::i;:::-;29700:1;29725:2;29720:3;29717:11;29742:1;29737:616;;;;30397:1;30414:3;30411:93;;;-1:-1:-1;30470:19:150;;;30457:33;30411:93;-1:-1:-1;;32012:1:150;32008:11;;;32004:24;32000:29;31990:40;32036:1;32032:11;;;31987:57;30517:78;;29710:895;;29737:616;27332:1;27325:14;;;27369:4;27356:18;;-1:-1:-1;;29773:17:150;;;29874:9;29896:229;29910:7;29907:1;29904:14;29896:229;;;29999:19;;;29986:33;29971:49;;30106:4;30091:20;;;;30059:1;30047:14;;;;29926:12;29896:229;;;29900:3;30153;30144:7;30141:16;30138:159;;;30277:1;30273:6;30267:3;30261;30258:1;30254:11;30250:21;30246:34;30242:39;30229:9;30224:3;30220:19;30207:33;30203:79;30195:6;30188:95;30138:159;;;30340:1;30334:3;30331:1;30327:11;30323:19;30317:4;30310:33;29710:895;;;29421:1190;;;:::o;30616:258::-;30688:1;30698:113;30712:6;30709:1;30706:13;30698:113;;;30788:11;;;30782:18;30769:11;;;30762:39;30734:2;30727:10;30698:113;;;30829:6;30826:1;30823:13;30820:48;;;30864:1;30855:6;30850:3;30846:16;30839:27;30820:48;;30616:258;;;:::o;30879:412::-;31017:5;31004:19;30998:4;30991:33;31061:1;31055:4;31051:12;31111:2;31104:5;31100:14;31087:28;31124:33;31149:7;31124:33;:::i;:::-;31192:17;;-1:-1:-1;;;;;;31188:60:150;-1:-1:-1;;;;;31250:33:150;;;;31185:99;31166:119;;-1:-1:-1;;30879:412:150:o;31499:380::-;31578:1;31574:12;;;;31621;;;31642:61;;31696:4;31688:6;31684:17;31674:27;;31642:61;31749:2;31741:6;31738:14;31718:18;31715:38;31712:161;;;31795:10;31790:3;31786:20;31783:1;31776:31;31830:4;31827:1;31820:15;31858:4;31855:1;31848:15;32055:135;32094:3;-1:-1:-1;;32115:17:150;;32112:43;;;32135:18;;:::i;:::-;-1:-1:-1;32182:1:150;32171:13;;32055:135::o;32195:175::-;32232:3;32276:4;32269:5;32265:16;32305:4;32296:7;32293:17;32290:43;;;32313:18;;:::i;:::-;32362:1;32349:15;;32195:175;-1:-1:-1;;32195:175:150:o;32375:127::-;32436:10;32431:3;32427:20;32424:1;32417:31;32467:4;32464:1;32457:15;32491:4;32488:1;32481:15;32507:127;32568:10;32563:3;32559:20;32556:1;32549:31;32599:4;32596:1;32589:15;32623:4;32620:1;32613:15;32639:127;32700:10;32695:3;32691:20;32688:1;32681:31;32731:4;32728:1;32721:15;32755:4;32752:1;32745:15;33221:1680;33386:56;33436:5;33429;33386:56;:::i;:::-;-1:-1:-1;;;;;33454:37:150;;33451:63;;;33494:18;;:::i;:::-;33523:104;33613:13;33573:38;33605:4;33599:11;33573:38;:::i;:::-;33567:4;33523:104;:::i;:::-;33653:1;33688:2;33673:13;33670:21;33705:1;33700:672;;;;34418:1;34435:13;34432:113;;;-1:-1:-1;34503:27:150;;;34490:41;34432:113;-1:-1:-1;;32012:1:150;32008:11;;;32004:24;32000:29;31990:40;32036:1;32032:11;;;31987:57;34558:90;;33663:995;;33700:672;27332:1;27325:14;;;27369:4;27356:18;;-1:-1:-1;;33736:27:150;;;33847:9;33869:237;33883:7;33880:1;33877:14;33869:237;;;33972:27;;;33959:41;33944:57;;34087:4;34072:20;;;;34040:1;34028:14;;;;33899:12;33869:237;;;33873:3;34134:13;34125:7;34122:26;34119:187;;;34286:1;34282:6;34276:3;34260:13;34257:1;34253:21;34249:31;34245:44;34241:49;34228:9;34215:11;34211:27;34198:41;34194:97;34186:6;34179:113;34119:187;;;34359:1;34343:13;34340:1;34336:21;34332:29;34326:4;34319:43;33663:995;;;;;34712:2;34705:5;34701:14;34688:28;34684:1;34678:4;34674:12;34667:50;34771:2;34764:5;34760:14;34747:28;34743:1;34737:4;34733:12;34726:50;34830:2;34823:5;34819:14;34806:28;34802:1;34796:4;34792:12;34785:50;34889:3;34882:5;34878:15;34865:29;34861:1;34855:4;34851:12;34844:51;33221:1680;;:::o;35142:1624::-;35311:56;35361:5;35354;35311:56;:::i;:::-;-1:-1:-1;;;;;35379:37:150;;35376:63;;;35419:18;;:::i;:::-;35448:104;35538:13;35498:38;35530:4;35524:11;35498:38;:::i;35448:104::-;35578:1;35613:2;35598:13;35595:21;35630:1;35625:672;;;;36343:1;36360:13;36357:113;;;-1:-1:-1;36428:27:150;;;36415:41;36357:113;-1:-1:-1;;32012:1:150;32008:11;;;32004:24;32000:29;31990:40;32036:1;32032:11;;;31987:57;36483:90;;35588:995;;35625:672;27332:1;27325:14;;;27369:4;27356:18;;-1:-1:-1;;35661:27:150;;;35772:9;35794:237;35808:7;35805:1;35802:14;35794:237;;;35897:27;;;35884:41;35869:57;;36012:4;35997:20;;;;35965:1;35953:14;;;;35824:12;35794:237;;;35798:3;36059:13;36050:7;36047:26;36044:187;;;36211:1;36207:6;36201:3;36185:13;36182:1;36178:21;36174:31;36170:44;36166:49;36153:9;36140:11;36136:27;36123:41;36119:97;36111:6;36104:113;36044:187;;;36284:1;36268:13;36265:1;36261:21;36257:29;36251:4;36244:43;35588:995;;;;;36637:2;36630:5;36626:14;36613:28;36609:1;36603:4;36599:12;36592:50;36696:2;36689:5;36685:14;36672:28;36668:1;36662:4;36658:12;36651:50;36755:2;36748:5;36744:14;36731:28;36727:1;36721:4;36717:12;36710:50;35142:1624;;:::o;36771:1189::-;36938:56;36988:5;36981;36938:56;:::i;:::-;37003:91;37080:13;37067:11;37061:4;37003:91;:::i;:::-;;;37139:65;37200:2;37193:5;37189:14;37182:5;37139:65;:::i;:::-;37213:101;37300:13;37285;37281:1;37275:4;37271:12;37213:101;:::i;:::-;-1:-1:-1;;37412:2:150;37401:14;;31409:19;37397:1;37387:12;;31396:33;31472:14;;;31459:28;31445:12;;;31438:50;37425:106;37526:3;37519:5;37515:15;37511:1;37505:4;37501:12;37425:106;:::i;:::-;37585:3;37578:5;37574:15;37561:29;37557:1;37551:4;37547:12;37540:51;37645:3;37638:5;37634:15;37621:29;37617:1;37611:4;37607:12;37600:51;37705:3;37698:5;37694:15;37681:29;37677:1;37671:4;37667:12;37660:51;37765:3;37758:5;37754:15;37741:29;37737:1;37731:4;37727:12;37720:51;37826:3;37819:5;37815:15;37802:29;37797:2;37791:4;37787:13;37780:52;37887:3;37880:5;37876:15;37863:29;37858:2;37852:4;37848:13;37841:52;37948:3;37941:5;37937:15;37924:29;37919:2;37913:4;37909:13;37902:52;36771:1189;;:::o;37965:750::-;38118:5;38151:4;38173:1;38194;38204:505;38220:4;38215:3;38212:13;38204:505;;;38287:6;38327:11;38362:1;38376:235;38392:4;38387:3;38384:13;38376:235;;;38473:22;;38451:45;;38539:2;38525:17;;;;38595:1;38576:21;;;;38407:11;38376:235;;;-1:-1:-1;;;38646:2:150;38634:15;;;;;38694:4;38677:22;;;;;38244:1;38235:11;38204:505;;38720:131;-1:-1:-1;;;;;38795:31:150;;38785:42;;38775:70;;38841:1;38838;38831:12","linkReferences":{}},"methodIdentifiers":{"addFee((string,uint256,uint256,uint256,uint256))":"7f684baf","addGroup((string,uint256,uint256,uint256))":"72fce6f0","addPair((string,string,(uint256,bytes32),(uint256,address),uint256,uint256,int256,uint256,uint256,uint256,uint256))":"e70ab5cd","addSkewOpenFees((int256[2][10]))":"1a67bacc","blockOILimit(uint256)":"9ae6b9e0","currentOrderId()":"925931fc","delistPair(uint256)":"74db8c89","fees(uint256)":"4acc79ed","feesCount()":"658de48a","groupMaxOI(uint256)":"8c9a0ea4","groupOI(uint256)":"5e4f8f59","groupOIs(uint256,uint256)":"a1ead064","groups(uint256)":"96324bd4","groupsCount()":"885e2750","guaranteedSlEnabled(uint256)":"24abd3fb","initialize(address,uint256)":"cd6dc687","isPairListed(string,string)":"1628bfeb","isUSDCAligned(uint256)":"6dc37de3","lossProtection(uint256,uint256)":"15b40d91","lossProtectionMultiplier(uint256,uint256)":"2b1cbe9d","maxWalletOI(uint256)":"56e5536c","pairBackupFeed(uint256)":"685e905b","pairCloseFeeP(uint256)":"836a341a","pairFeed(uint256)":"1eaa005c","pairGroupIndex(uint256)":"3c44d0a3","pairJob(uint256)":"302f81fc","pairLimitOrderFeeP(uint256)":"649a6488","pairMaxLeverage(uint256)":"281b693c","pairMaxOI(uint256)":"b2e1b2d6","pairMinLevPosUSDC(uint256)":"238cd23f","pairMinLeverage(uint256)":"59a992d0","pairOpenFeeP(uint256,uint256,bool)":"fb3e519d","pairPriceImpactMultiplier(uint256)":"5fc8cd28","pairSkewImpactMultiplier(uint256)":"e8b50f84","pairSpreadP(uint256)":"a1d54e9b","pairs(uint256)":"b91ac788","pairsBackend(uint256)":"9567dccf","pairsCount()":"b81b2b71","setBlockOILImits(uint256[],uint256[])":"10ed4088","skewedFeesCount()":"6d8b5224","storageT()":"16fff074","udpateSkewOpenFees(uint256,(int256[2][10]))":"3d7a5f1a","updateFee(uint256,(string,uint256,uint256,uint256,uint256))":"9a7c200e","updateGroup(uint256,(string,uint256,uint256,uint256))":"5a3e32e0","updateGroupOI(uint256,uint256,bool,bool)":"4ffe8aec","updateLossProtectionMultiplier(uint256,uint256[],uint256[])":"9586621f","updatePair(uint256,(string,string,(uint256,bytes32),(uint256,address),uint256,uint256,int256,uint256,uint256,uint256,uint256))":"f645aff5"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"pairIndex\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"limits\",\"type\":\"uint256[]\"}],\"name\":\"BlockOILimitsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"FeeAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"FeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"GroupAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"GroupUpdated\",\"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\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tier\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"multiplier\",\"type\":\"uint256[]\"}],\"name\":\"LossProtectionAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"pairIndex\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"limits\",\"type\":\"uint256[]\"}],\"name\":\"OrderLimitsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"}],\"name\":\"PairAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"PairUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"SkewFeeAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"SkewFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"openFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"closeFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitOrderFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minLevPosUSDC\",\"type\":\"uint256\"}],\"internalType\":\"struct IPairStorage.Fee\",\"name\":\"_fee\",\"type\":\"tuple\"}],\"name\":\"addFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minLeverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxLeverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxOpenInterestP\",\"type\":\"uint256\"}],\"internalType\":\"struct IPairStorage.Group\",\"name\":\"_group\",\"type\":\"tuple\"}],\"name\":\"addGroup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"feedId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IPairStorage.Feed\",\"name\":\"feed\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feedId\",\"type\":\"address\"}],\"internalType\":\"struct IPairStorage.BackupFeed\",\"name\":\"backupFeed\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"spreadP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"priceImpactMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"skewImpactMultiplier\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"groupIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"groupOpenInterestPecentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxWalletOI\",\"type\":\"uint256\"}],\"internalType\":\"struct IPairStorage.Pair\",\"name\":\"_pair\",\"type\":\"tuple\"}],\"name\":\"addPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"int256[2][10]\",\"name\":\"eqParams\",\"type\":\"int256[2][10]\"}],\"internalType\":\"struct IPairStorage.SkewFee\",\"name\":\"_skewFee\",\"type\":\"tuple\"}],\"name\":\"addSkewOpenFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"blockOILimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentOrderId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"delistPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"fees\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"openFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"closeFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitOrderFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minLevPosUSDC\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"groupMaxOI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"groupOI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"groupOIs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"groups\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minLeverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxLeverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxOpenInterestP\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"groupsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"guaranteedSlEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_storageT\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_currentOrderId\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"isPairListed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"isUSDCAligned\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"lossProtection\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_tier\",\"type\":\"uint256\"}],\"name\":\"lossProtectionMultiplier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"maxWalletOI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairBackupFeed\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feedId\",\"type\":\"address\"}],\"internalType\":\"struct IPairStorage.BackupFeed\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairCloseFeeP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairFeed\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"feedId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IPairStorage.Feed\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairGroupIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairJob\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairLimitOrderFeeP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairMaxLeverage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairMaxOI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairMinLevPosUSDC\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairMinLeverage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_leveragedPosition\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_buy\",\"type\":\"bool\"}],\"name\":\"pairOpenFeeP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairPriceImpactMultiplier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairSkewImpactMultiplier\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairSpreadP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pairs\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"feedId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IPairStorage.Feed\",\"name\":\"feed\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feedId\",\"type\":\"address\"}],\"internalType\":\"struct IPairStorage.BackupFeed\",\"name\":\"backupFeed\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"spreadP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"priceImpactMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"skewImpactMultiplier\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"groupIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"groupOpenInterestPecentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxWalletOI\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"pairsBackend\",\"outputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"feedId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IPairStorage.Feed\",\"name\":\"feed\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feedId\",\"type\":\"address\"}],\"internalType\":\"struct IPairStorage.BackupFeed\",\"name\":\"backupFeed\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"spreadP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"priceImpactMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"skewImpactMultiplier\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"groupIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"groupOpenInterestPecentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxWalletOI\",\"type\":\"uint256\"}],\"internalType\":\"struct IPairStorage.Pair\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minLeverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxLeverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxOpenInterestP\",\"type\":\"uint256\"}],\"internalType\":\"struct IPairStorage.Group\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"openFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"closeFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitOrderFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minLevPosUSDC\",\"type\":\"uint256\"}],\"internalType\":\"struct IPairStorage.Fee\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pairsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_pairIndex\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_limits\",\"type\":\"uint256[]\"}],\"name\":\"setBlockOILImits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"skewedFeesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageT\",\"outputs\":[{\"internalType\":\"contract ITradingStorage\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"int256[2][10]\",\"name\":\"eqParams\",\"type\":\"int256[2][10]\"}],\"internalType\":\"struct IPairStorage.SkewFee\",\"name\":\"_skewFee\",\"type\":\"tuple\"}],\"name\":\"udpateSkewOpenFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"openFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"closeFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitOrderFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minLevPosUSDC\",\"type\":\"uint256\"}],\"internalType\":\"struct IPairStorage.Fee\",\"name\":\"_fee\",\"type\":\"tuple\"}],\"name\":\"updateFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"minLeverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxLeverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxOpenInterestP\",\"type\":\"uint256\"}],\"internalType\":\"struct IPairStorage.Group\",\"name\":\"_group\",\"type\":\"tuple\"}],\"name\":\"updateGroup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_long\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_increase\",\"type\":\"bool\"}],\"name\":\"updateGroupOI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"_tier\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_multiplierPercent\",\"type\":\"uint256[]\"}],\"name\":\"updateLossProtectionMultiplier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"feedId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IPairStorage.Feed\",\"name\":\"feed\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feedId\",\"type\":\"address\"}],\"internalType\":\"struct IPairStorage.BackupFeed\",\"name\":\"backupFeed\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"spreadP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"priceImpactMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"skewImpactMultiplier\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"groupIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"groupOpenInterestPecentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxWalletOI\",\"type\":\"uint256\"}],\"internalType\":\"struct IPairStorage.Pair\",\"name\":\"_pair\",\"type\":\"tuple\"}],\"name\":\"updatePair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addFee((string,uint256,uint256,uint256,uint256))\":{\"params\":{\"_fee\":\"The Fee structure to add.\"}},\"addGroup((string,uint256,uint256,uint256))\":{\"params\":{\"_group\":\"The new group to be added.\"}},\"addPair((string,string,(uint256,bytes32),(uint256,address),uint256,uint256,int256,uint256,uint256,uint256,uint256))\":{\"details\":\"Adds a new trading pair.\",\"params\":{\"_pair\":\"The new trading pair to add.\"}},\"addSkewOpenFees((int256[2][10]))\":{\"details\":\"Adds a skew open fee.\",\"params\":{\"_skewFee\":\"The skew fee to add.\"}},\"delistPair(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the pair to be delisted.\"}},\"groupMaxOI(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The maximum open interest for the group.\"}},\"groupOI(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The total open interest for the group.\"}},\"guaranteedSlEnabled(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"True if enabled, false otherwise.\"}},\"initialize(address,uint256)\":{\"details\":\"Initializes the contract.\",\"params\":{\"_currentOrderId\":\"Initial order ID.\",\"_storageT\":\"Address of the trading storage contract.\"}},\"isUSDCAligned(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"bool\"}},\"lossProtectionMultiplier(uint256,uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\",\"_tier\":\"The tier level.\"},\"returns\":{\"_0\":\"The loss protection multiplier.\"}},\"maxWalletOI(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The maximum open interest for the wallet.\"}},\"pairBackupFeed(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"BackupFeed memory object containing backup feed information.\"}},\"pairCloseFeeP(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The fee percentage for closing the position.\"}},\"pairFeed(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"Feed memory object containing feed related information.\"}},\"pairGroupIndex(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The group index.\"}},\"pairJob(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"A tuple containing the feed IDs and the order ID.\"}},\"pairLimitOrderFeeP(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The fee percentage for the limit order.\"}},\"pairMaxLeverage(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The maximum leverage.\"}},\"pairMaxOI(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The maximum open interest for the pair.\"}},\"pairMinLevPosUSDC(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The minimum leveraged position size in USDC.\"}},\"pairMinLeverage(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The minimum leverage.\"}},\"pairOpenFeeP(uint256,uint256,bool)\":{\"params\":{\"_buy\":\"Boolean indicating whether the position is a long (true) or short (false).\",\"_leveragedPosition\":\"The size of the leveraged position.\",\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The fee percentage for opening the position.\"}},\"pairPriceImpactMultiplier(uint256)\":{\"params\":{\"_pairIndex\":\"The pair Index\"},\"returns\":{\"_0\":\"Pair Price Impact multiplier\"}},\"pairSkewImpactMultiplier(uint256)\":{\"params\":{\"_pairIndex\":\"The pair Index\"},\"returns\":{\"_0\":\"Pair Skew Impact multiplier\"}},\"pairSpreadP(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The spread percentage.\"}},\"pairsBackend(uint256)\":{\"params\":{\"_index\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"Pair memory, Group memory, and Fee memory objects containing details for the trading pair, group, and fees.\"}},\"setBlockOILImits(uint256[],uint256[])\":{\"params\":{\"_limits\":\"Value of per block OI limits\",\"_pairIndex\":\"Array of pair Indexes to update Limits for\"}},\"udpateSkewOpenFees(uint256,(int256[2][10]))\":{\"details\":\"Updates a skew open fee.\",\"params\":{\"_pairIndex\":\"The index of the pair to update.\",\"_skewFee\":\"The new skew fee.\"}},\"updateFee(uint256,(string,uint256,uint256,uint256,uint256))\":{\"params\":{\"_fee\":\"The new Fee structure.\",\"_id\":\"The ID of the fee structure to update.\"}},\"updateGroup(uint256,(string,uint256,uint256,uint256))\":{\"params\":{\"_group\":\"The new group data.\",\"_id\":\"The ID of the group to be updated.\"}},\"updateGroupOI(uint256,uint256,bool,bool)\":{\"params\":{\"_amount\":\"The amount to update the open interest by.\",\"_increase\":\"Specifies if the open interest should be increased.\",\"_long\":\"Specifies if the position is long.\",\"_pairIndex\":\"The index of the trading pair.\"}},\"updateLossProtectionMultiplier(uint256,uint256[],uint256[])\":{\"params\":{\"_multiplierPercent\":\"The corresponding multipliers for each tier.\",\"_pairIndex\":\"The index of the trading pair.\",\"_tier\":\"The tiers for the loss protection.\"}},\"updatePair(uint256,(string,string,(uint256,bytes32),(uint256,address),uint256,uint256,int256,uint256,uint256,uint256,uint256))\":{\"details\":\"Updates an existing trading pair.\",\"params\":{\"_pair\":\"The new pair data.\",\"_pairIndex\":\"The index of the pair to update.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addFee((string,uint256,uint256,uint256,uint256))\":{\"notice\":\"Adds a new fee structure.\"},\"addGroup((string,uint256,uint256,uint256))\":{\"notice\":\"Adds a new trading group.\"},\"delistPair(uint256)\":{\"notice\":\"Delists a trading pair by index.\"},\"groupMaxOI(uint256)\":{\"notice\":\"Get the maximum open interest (OI) for a group.\"},\"groupOI(uint256)\":{\"notice\":\"Get the total open interest (OI) for a group.\"},\"guaranteedSlEnabled(uint256)\":{\"notice\":\"Check if guaranteed stop loss is enabled for a trading pair.\"},\"isUSDCAligned(uint256)\":{\"notice\":\"Helper method to Check pair is usdc aligned\"},\"lossProtectionMultiplier(uint256,uint256)\":{\"notice\":\"Get the loss protection multiplier for a trading pair and tier.\"},\"maxWalletOI(uint256)\":{\"notice\":\"Get the maximum open interest (OI) for a wallet in a trading pair.\"},\"pairBackupFeed(uint256)\":{\"notice\":\"Get the Chainlink backup feed information of a trading pair.\"},\"pairCloseFeeP(uint256)\":{\"notice\":\"Get the fee for closing a position on a trading pair.\"},\"pairFeed(uint256)\":{\"notice\":\"Get the Pyth feed information of a trading pair.\"},\"pairGroupIndex(uint256)\":{\"notice\":\"Get the group index to which a trading pair belongs.\"},\"pairJob(uint256)\":{\"notice\":\"Fetches relevant information for an order.\"},\"pairLimitOrderFeeP(uint256)\":{\"notice\":\"Get the fee for executing a TP/SL limit close.\"},\"pairMaxLeverage(uint256)\":{\"notice\":\"Get the maximum leverage available for a trading pair.\"},\"pairMaxOI(uint256)\":{\"notice\":\"Get the maximum open interest (OI) for a trading pair.\"},\"pairMinLevPosUSDC(uint256)\":{\"notice\":\"Get the minimum leveraged position size (in USDC) allowed for a trading pair.\"},\"pairMinLeverage(uint256)\":{\"notice\":\"Get the minimum leverage available for a trading pair.\"},\"pairOpenFeeP(uint256,uint256,bool)\":{\"notice\":\"Calculate the fee for opening a leveraged position on a trading pair based on skew\"},\"pairPriceImpactMultiplier(uint256)\":{\"notice\":\"Get priceImpact multiplier for a certain pair\"},\"pairSkewImpactMultiplier(uint256)\":{\"notice\":\"Get priceImpact multiplier for a certain pair\"},\"pairSpreadP(uint256)\":{\"notice\":\"Get the spread percentage of a trading pair.\"},\"pairsBackend(uint256)\":{\"notice\":\"Get backend details for a specific trading pair, its group, and associated fees.\"},\"setBlockOILImits(uint256[],uint256[])\":{\"notice\":\"Updates per block OI limit\"},\"updateFee(uint256,(string,uint256,uint256,uint256,uint256))\":{\"notice\":\"Updates an existing fee structure.\"},\"updateGroup(uint256,(string,uint256,uint256,uint256))\":{\"notice\":\"Updates an existing trading group.\"},\"updateGroupOI(uint256,uint256,bool,bool)\":{\"notice\":\"Updates the collateral open interest for a trading group.\"},\"updateLossProtectionMultiplier(uint256,uint256[],uint256[])\":{\"notice\":\"Updates the loss protection multiplier for a given trading pair.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PairStorage.sol\":\"PairStorage\"},\"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/PairStorage.sol\":{\"keccak256\":\"0x990a61bf45888c9b85062c297b524f8f7a5c325f8159841cd617a54fd5351167\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cce7743fa24db5e9321798ac4d5ee3d15cd8c2ecadc32358b21a4995117bab5a\",\"dweb:/ipfs/QmNizZd3JfoTFjdsMygShbcjn8fqC3SJris9tudFuTkZgz\"]},\"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/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\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.7+commit.e28d00a7"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256[]","name":"pairIndex","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"limits","type":"uint256[]","indexed":false}],"type":"event","name":"BlockOILimitsSet","anonymous":false},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"string","name":"name","type":"string","indexed":false}],"type":"event","name":"FeeAdded","anonymous":false},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256","indexed":false}],"type":"event","name":"FeeUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"string","name":"name","type":"string","indexed":false}],"type":"event","name":"GroupAdded","anonymous":false},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256","indexed":false}],"type":"event","name":"GroupUpdated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256[]","name":"tier","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"multiplier","type":"uint256[]","indexed":false}],"type":"event","name":"LossProtectionAdded","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"pairIndex","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"limits","type":"uint256[]","indexed":false}],"type":"event","name":"OrderLimitsSet","anonymous":false},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"string","name":"from","type":"string","indexed":false},{"internalType":"string","name":"to","type":"string","indexed":false}],"type":"event","name":"PairAdded","anonymous":false},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256","indexed":false}],"type":"event","name":"PairUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256","indexed":false}],"type":"event","name":"SkewFeeAdded","anonymous":false},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256","indexed":false}],"type":"event","name":"SkewFeeUpdated","anonymous":false},{"inputs":[{"internalType":"struct IPairStorage.Fee","name":"_fee","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"openFeeP","type":"uint256"},{"internalType":"uint256","name":"closeFeeP","type":"uint256"},{"internalType":"uint256","name":"limitOrderFeeP","type":"uint256"},{"internalType":"uint256","name":"minLevPosUSDC","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"addFee"},{"inputs":[{"internalType":"struct IPairStorage.Group","name":"_group","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minLeverage","type":"uint256"},{"internalType":"uint256","name":"maxLeverage","type":"uint256"},{"internalType":"uint256","name":"maxOpenInterestP","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"addGroup"},{"inputs":[{"internalType":"struct IPairStorage.Pair","name":"_pair","type":"tuple","components":[{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"},{"internalType":"struct IPairStorage.Feed","name":"feed","type":"tuple","components":[{"internalType":"uint256","name":"maxDeviationP","type":"uint256"},{"internalType":"bytes32","name":"feedId","type":"bytes32"}]},{"internalType":"struct IPairStorage.BackupFeed","name":"backupFeed","type":"tuple","components":[{"internalType":"uint256","name":"maxDeviationP","type":"uint256"},{"internalType":"address","name":"feedId","type":"address"}]},{"internalType":"uint256","name":"spreadP","type":"uint256"},{"internalType":"uint256","name":"priceImpactMultiplier","type":"uint256"},{"internalType":"int256","name":"skewImpactMultiplier","type":"int256"},{"internalType":"uint256","name":"groupIndex","type":"uint256"},{"internalType":"uint256","name":"feeIndex","type":"uint256"},{"internalType":"uint256","name":"groupOpenInterestPecentage","type":"uint256"},{"internalType":"uint256","name":"maxWalletOI","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"addPair"},{"inputs":[{"internalType":"struct IPairStorage.SkewFee","name":"_skewFee","type":"tuple","components":[{"internalType":"int256[2][10]","name":"eqParams","type":"int256[2][10]"}]}],"stateMutability":"nonpayable","type":"function","name":"addSkewOpenFees"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"blockOILimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"currentOrderId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"delistPair"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"fees","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"openFeeP","type":"uint256"},{"internalType":"uint256","name":"closeFeeP","type":"uint256"},{"internalType":"uint256","name":"limitOrderFeeP","type":"uint256"},{"internalType":"uint256","name":"minLevPosUSDC","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"feesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"groupMaxOI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"groupOI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"groupOIs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"groups","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minLeverage","type":"uint256"},{"internalType":"uint256","name":"maxLeverage","type":"uint256"},{"internalType":"uint256","name":"maxOpenInterestP","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"groupsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"guaranteedSlEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_storageT","type":"address"},{"internalType":"uint256","name":"_currentOrderId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function","name":"isPairListed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"isUSDCAligned","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"lossProtection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_tier","type":"uint256"}],"stateMutability":"view","type":"function","name":"lossProtectionMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"maxWalletOI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairBackupFeed","outputs":[{"internalType":"struct IPairStorage.BackupFeed","name":"","type":"tuple","components":[{"internalType":"uint256","name":"maxDeviationP","type":"uint256"},{"internalType":"address","name":"feedId","type":"address"}]}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairCloseFeeP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairFeed","outputs":[{"internalType":"struct IPairStorage.Feed","name":"","type":"tuple","components":[{"internalType":"uint256","name":"maxDeviationP","type":"uint256"},{"internalType":"bytes32","name":"feedId","type":"bytes32"}]}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairGroupIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"pairJob","outputs":[{"internalType":"string","name":"","type":"string"},{"internalType":"string","name":"","type":"string"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairLimitOrderFeeP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairMaxLeverage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairMaxOI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairMinLevPosUSDC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairMinLeverage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_leveragedPosition","type":"uint256"},{"internalType":"bool","name":"_buy","type":"bool"}],"stateMutability":"view","type":"function","name":"pairOpenFeeP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairPriceImpactMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairSkewImpactMultiplier","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairSpreadP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairs","outputs":[{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"},{"internalType":"struct IPairStorage.Feed","name":"feed","type":"tuple","components":[{"internalType":"uint256","name":"maxDeviationP","type":"uint256"},{"internalType":"bytes32","name":"feedId","type":"bytes32"}]},{"internalType":"struct IPairStorage.BackupFeed","name":"backupFeed","type":"tuple","components":[{"internalType":"uint256","name":"maxDeviationP","type":"uint256"},{"internalType":"address","name":"feedId","type":"address"}]},{"internalType":"uint256","name":"spreadP","type":"uint256"},{"internalType":"uint256","name":"priceImpactMultiplier","type":"uint256"},{"internalType":"int256","name":"skewImpactMultiplier","type":"int256"},{"internalType":"uint256","name":"groupIndex","type":"uint256"},{"internalType":"uint256","name":"feeIndex","type":"uint256"},{"internalType":"uint256","name":"groupOpenInterestPecentage","type":"uint256"},{"internalType":"uint256","name":"maxWalletOI","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairsBackend","outputs":[{"internalType":"struct IPairStorage.Pair","name":"","type":"tuple","components":[{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"},{"internalType":"struct IPairStorage.Feed","name":"feed","type":"tuple","components":[{"internalType":"uint256","name":"maxDeviationP","type":"uint256"},{"internalType":"bytes32","name":"feedId","type":"bytes32"}]},{"internalType":"struct IPairStorage.BackupFeed","name":"backupFeed","type":"tuple","components":[{"internalType":"uint256","name":"maxDeviationP","type":"uint256"},{"internalType":"address","name":"feedId","type":"address"}]},{"internalType":"uint256","name":"spreadP","type":"uint256"},{"internalType":"uint256","name":"priceImpactMultiplier","type":"uint256"},{"internalType":"int256","name":"skewImpactMultiplier","type":"int256"},{"internalType":"uint256","name":"groupIndex","type":"uint256"},{"internalType":"uint256","name":"feeIndex","type":"uint256"},{"internalType":"uint256","name":"groupOpenInterestPecentage","type":"uint256"},{"internalType":"uint256","name":"maxWalletOI","type":"uint256"}]},{"internalType":"struct IPairStorage.Group","name":"","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minLeverage","type":"uint256"},{"internalType":"uint256","name":"maxLeverage","type":"uint256"},{"internalType":"uint256","name":"maxOpenInterestP","type":"uint256"}]},{"internalType":"struct IPairStorage.Fee","name":"","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"openFeeP","type":"uint256"},{"internalType":"uint256","name":"closeFeeP","type":"uint256"},{"internalType":"uint256","name":"limitOrderFeeP","type":"uint256"},{"internalType":"uint256","name":"minLevPosUSDC","type":"uint256"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pairsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256[]","name":"_pairIndex","type":"uint256[]"},{"internalType":"uint256[]","name":"_limits","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setBlockOILImits"},{"inputs":[],"stateMutability":"view","type":"function","name":"skewedFeesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"storageT","outputs":[{"internalType":"contract ITradingStorage","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"struct IPairStorage.SkewFee","name":"_skewFee","type":"tuple","components":[{"internalType":"int256[2][10]","name":"eqParams","type":"int256[2][10]"}]}],"stateMutability":"nonpayable","type":"function","name":"udpateSkewOpenFees"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"struct IPairStorage.Fee","name":"_fee","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"openFeeP","type":"uint256"},{"internalType":"uint256","name":"closeFeeP","type":"uint256"},{"internalType":"uint256","name":"limitOrderFeeP","type":"uint256"},{"internalType":"uint256","name":"minLevPosUSDC","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"updateFee"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"struct IPairStorage.Group","name":"_group","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"minLeverage","type":"uint256"},{"internalType":"uint256","name":"maxLeverage","type":"uint256"},{"internalType":"uint256","name":"maxOpenInterestP","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"updateGroup"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_long","type":"bool"},{"internalType":"bool","name":"_increase","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"updateGroupOI"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256[]","name":"_tier","type":"uint256[]"},{"internalType":"uint256[]","name":"_multiplierPercent","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"updateLossProtectionMultiplier"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"struct IPairStorage.Pair","name":"_pair","type":"tuple","components":[{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"},{"internalType":"struct IPairStorage.Feed","name":"feed","type":"tuple","components":[{"internalType":"uint256","name":"maxDeviationP","type":"uint256"},{"internalType":"bytes32","name":"feedId","type":"bytes32"}]},{"internalType":"struct IPairStorage.BackupFeed","name":"backupFeed","type":"tuple","components":[{"internalType":"uint256","name":"maxDeviationP","type":"uint256"},{"internalType":"address","name":"feedId","type":"address"}]},{"internalType":"uint256","name":"spreadP","type":"uint256"},{"internalType":"uint256","name":"priceImpactMultiplier","type":"uint256"},{"internalType":"int256","name":"skewImpactMultiplier","type":"int256"},{"internalType":"uint256","name":"groupIndex","type":"uint256"},{"internalType":"uint256","name":"feeIndex","type":"uint256"},{"internalType":"uint256","name":"groupOpenInterestPecentage","type":"uint256"},{"internalType":"uint256","name":"maxWalletOI","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"updatePair"}],"devdoc":{"kind":"dev","methods":{"addFee((string,uint256,uint256,uint256,uint256))":{"params":{"_fee":"The Fee structure to add."}},"addGroup((string,uint256,uint256,uint256))":{"params":{"_group":"The new group to be added."}},"addPair((string,string,(uint256,bytes32),(uint256,address),uint256,uint256,int256,uint256,uint256,uint256,uint256))":{"details":"Adds a new trading pair.","params":{"_pair":"The new trading pair to add."}},"addSkewOpenFees((int256[2][10]))":{"details":"Adds a skew open fee.","params":{"_skewFee":"The skew fee to add."}},"delistPair(uint256)":{"params":{"_pairIndex":"The index of the pair to be delisted."}},"groupMaxOI(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"The maximum open interest for the group."}},"groupOI(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"The total open interest for the group."}},"guaranteedSlEnabled(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"True if enabled, false otherwise."}},"initialize(address,uint256)":{"details":"Initializes the contract.","params":{"_currentOrderId":"Initial order ID.","_storageT":"Address of the trading storage contract."}},"isUSDCAligned(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"bool"}},"lossProtectionMultiplier(uint256,uint256)":{"params":{"_pairIndex":"The index of the trading pair.","_tier":"The tier level."},"returns":{"_0":"The loss protection multiplier."}},"maxWalletOI(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"The maximum open interest for the wallet."}},"pairBackupFeed(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"BackupFeed memory object containing backup feed information."}},"pairCloseFeeP(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"The fee percentage for closing the position."}},"pairFeed(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"Feed memory object containing feed related information."}},"pairGroupIndex(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"The group index."}},"pairJob(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"A tuple containing the feed IDs and the order ID."}},"pairLimitOrderFeeP(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"The fee percentage for the limit order."}},"pairMaxLeverage(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"The maximum leverage."}},"pairMaxOI(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"The maximum open interest for the pair."}},"pairMinLevPosUSDC(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"The minimum leveraged position size in USDC."}},"pairMinLeverage(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"The minimum leverage."}},"pairOpenFeeP(uint256,uint256,bool)":{"params":{"_buy":"Boolean indicating whether the position is a long (true) or short (false).","_leveragedPosition":"The size of the leveraged position.","_pairIndex":"The index of the trading pair."},"returns":{"_0":"The fee percentage for opening the position."}},"pairPriceImpactMultiplier(uint256)":{"params":{"_pairIndex":"The pair Index"},"returns":{"_0":"Pair Price Impact multiplier"}},"pairSkewImpactMultiplier(uint256)":{"params":{"_pairIndex":"The pair Index"},"returns":{"_0":"Pair Skew Impact multiplier"}},"pairSpreadP(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"The spread percentage."}},"pairsBackend(uint256)":{"params":{"_index":"The index of the trading pair."},"returns":{"_0":"Pair memory, Group memory, and Fee memory objects containing details for the trading pair, group, and fees."}},"setBlockOILImits(uint256[],uint256[])":{"params":{"_limits":"Value of per block OI limits","_pairIndex":"Array of pair Indexes to update Limits for"}},"udpateSkewOpenFees(uint256,(int256[2][10]))":{"details":"Updates a skew open fee.","params":{"_pairIndex":"The index of the pair to update.","_skewFee":"The new skew fee."}},"updateFee(uint256,(string,uint256,uint256,uint256,uint256))":{"params":{"_fee":"The new Fee structure.","_id":"The ID of the fee structure to update."}},"updateGroup(uint256,(string,uint256,uint256,uint256))":{"params":{"_group":"The new group data.","_id":"The ID of the group to be updated."}},"updateGroupOI(uint256,uint256,bool,bool)":{"params":{"_amount":"The amount to update the open interest by.","_increase":"Specifies if the open interest should be increased.","_long":"Specifies if the position is long.","_pairIndex":"The index of the trading pair."}},"updateLossProtectionMultiplier(uint256,uint256[],uint256[])":{"params":{"_multiplierPercent":"The corresponding multipliers for each tier.","_pairIndex":"The index of the trading pair.","_tier":"The tiers for the loss protection."}},"updatePair(uint256,(string,string,(uint256,bytes32),(uint256,address),uint256,uint256,int256,uint256,uint256,uint256,uint256))":{"details":"Updates an existing trading pair.","params":{"_pair":"The new pair data.","_pairIndex":"The index of the pair to update."}}},"version":1},"userdoc":{"kind":"user","methods":{"addFee((string,uint256,uint256,uint256,uint256))":{"notice":"Adds a new fee structure."},"addGroup((string,uint256,uint256,uint256))":{"notice":"Adds a new trading group."},"delistPair(uint256)":{"notice":"Delists a trading pair by index."},"groupMaxOI(uint256)":{"notice":"Get the maximum open interest (OI) for a group."},"groupOI(uint256)":{"notice":"Get the total open interest (OI) for a group."},"guaranteedSlEnabled(uint256)":{"notice":"Check if guaranteed stop loss is enabled for a trading pair."},"isUSDCAligned(uint256)":{"notice":"Helper method to Check pair is usdc aligned"},"lossProtectionMultiplier(uint256,uint256)":{"notice":"Get the loss protection multiplier for a trading pair and tier."},"maxWalletOI(uint256)":{"notice":"Get the maximum open interest (OI) for a wallet in a trading pair."},"pairBackupFeed(uint256)":{"notice":"Get the Chainlink backup feed information of a trading pair."},"pairCloseFeeP(uint256)":{"notice":"Get the fee for closing a position on a trading pair."},"pairFeed(uint256)":{"notice":"Get the Pyth feed information of a trading pair."},"pairGroupIndex(uint256)":{"notice":"Get the group index to which a trading pair belongs."},"pairJob(uint256)":{"notice":"Fetches relevant information for an order."},"pairLimitOrderFeeP(uint256)":{"notice":"Get the fee for executing a TP/SL limit close."},"pairMaxLeverage(uint256)":{"notice":"Get the maximum leverage available for a trading pair."},"pairMaxOI(uint256)":{"notice":"Get the maximum open interest (OI) for a trading pair."},"pairMinLevPosUSDC(uint256)":{"notice":"Get the minimum leveraged position size (in USDC) allowed for a trading pair."},"pairMinLeverage(uint256)":{"notice":"Get the minimum leverage available for a trading pair."},"pairOpenFeeP(uint256,uint256,bool)":{"notice":"Calculate the fee for opening a leveraged position on a trading pair based on skew"},"pairPriceImpactMultiplier(uint256)":{"notice":"Get priceImpact multiplier for a certain pair"},"pairSkewImpactMultiplier(uint256)":{"notice":"Get priceImpact multiplier for a certain pair"},"pairSpreadP(uint256)":{"notice":"Get the spread percentage of a trading pair."},"pairsBackend(uint256)":{"notice":"Get backend details for a specific trading pair, its group, and associated fees."},"setBlockOILImits(uint256[],uint256[])":{"notice":"Updates per block OI limit"},"updateFee(uint256,(string,uint256,uint256,uint256,uint256))":{"notice":"Updates an existing fee structure."},"updateGroup(uint256,(string,uint256,uint256,uint256))":{"notice":"Updates an existing trading group."},"updateGroupOI(uint256,uint256,bool,bool)":{"notice":"Updates the collateral open interest for a trading group."},"updateLossProtectionMultiplier(uint256,uint256[],uint256[])":{"notice":"Updates the loss protection multiplier for a given trading pair."}},"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/PairStorage.sol":"PairStorage"},"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/PairStorage.sol":{"keccak256":"0x990a61bf45888c9b85062c297b524f8f7a5c325f8159841cd617a54fd5351167","urls":["bzz-raw://cce7743fa24db5e9321798ac4d5ee3d15cd8c2ecadc32358b21a4995117bab5a","dweb:/ipfs/QmNizZd3JfoTFjdsMygShbcjn8fqC3SJris9tudFuTkZgz"],"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/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"}},"version":1},"ast":{"absolutePath":"src/PairStorage.sol","id":74451,"exportedSymbols":{"AddressUpgradeable":[46968],"ICallbacks":[88257],"IERC20":[51481],"IExecute":[88371],"IPairStorage":[89055],"IPausable":[89063],"IPriceAggregator":[89248],"ITradingStorage":[89943],"IVaultManager":[90188],"Initializable":[43537],"PairStorage":[74450]},"nodeType":"SourceUnit","src":"32:16866:104","nodes":[{"id":73139,"nodeType":"PragmaDirective","src":"32:22:104","nodes":[],"literals":["solidity","0.8",".7"]},{"id":73140,"nodeType":"ImportDirective","src":"56:42:104","nodes":[],"absolutePath":"src/interfaces/ITradingStorage.sol","file":"./interfaces/ITradingStorage.sol","nameLocation":"-1:-1:-1","scope":74451,"sourceUnit":89944,"symbolAliases":[],"unitAlias":""},{"id":73141,"nodeType":"ImportDirective","src":"99:75:104","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":74451,"sourceUnit":43538,"symbolAliases":[],"unitAlias":""},{"id":73142,"nodeType":"ImportDirective","src":"175:39:104","nodes":[],"absolutePath":"src/interfaces/IPairStorage.sol","file":"./interfaces/IPairStorage.sol","nameLocation":"-1:-1:-1","scope":74451,"sourceUnit":89056,"symbolAliases":[],"unitAlias":""},{"id":74450,"nodeType":"ContractDefinition","src":"216:16681:104","nodes":[{"id":73149,"nodeType":"VariableDeclaration","src":"279:31:104","nodes":[],"constant":false,"functionSelector":"16fff074","mutability":"mutable","name":"storageT","nameLocation":"302:8:104","scope":74450,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"},"typeName":{"id":73148,"nodeType":"UserDefinedTypeName","pathNode":{"id":73147,"name":"ITradingStorage","nodeType":"IdentifierPath","referencedDeclaration":89943,"src":"279:15:104"},"referencedDeclaration":89943,"src":"279:15:104","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"visibility":"public"},{"id":73152,"nodeType":"VariableDeclaration","src":"317:43:104","nodes":[],"constant":true,"mutability":"constant","name":"_MAX_LOSS_REBATE","nameLocation":"339:16:104","scope":74450,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73150,"name":"uint","nodeType":"ElementaryTypeName","src":"317:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3530","id":73151,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"358:2:104","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"50"},"visibility":"private"},{"id":73155,"nodeType":"VariableDeclaration","src":"366:39:104","nodes":[],"constant":true,"mutability":"constant","name":"_PRECISION","nameLocation":"388:10:104","scope":74450,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73153,"name":"uint","nodeType":"ElementaryTypeName","src":"366:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31653130","id":73154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"401:4:104","typeDescriptions":{"typeIdentifier":"t_rational_10000000000_by_1","typeString":"int_const 10000000000"},"value":"1e10"},"visibility":"private"},{"id":73160,"nodeType":"VariableDeclaration","src":"411:52:104","nodes":[],"constant":true,"mutability":"constant","name":"_MIN_LEVERAGE","nameLocation":"433:13:104","scope":74450,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73156,"name":"uint","nodeType":"ElementaryTypeName","src":"411:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73159,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":73157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"449:1:104","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":73158,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73155,"src":"453:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"449:14:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"id":73165,"nodeType":"VariableDeclaration","src":"469:54:104","nodes":[],"constant":true,"mutability":"constant","name":"_MAX_LEVERAGE","nameLocation":"491:13:104","scope":74450,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73161,"name":"uint","nodeType":"ElementaryTypeName","src":"469:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73164,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"313530","id":73162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"507:3:104","typeDescriptions":{"typeIdentifier":"t_rational_150_by_1","typeString":"int_const 150"},"value":"150"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":73163,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73155,"src":"513:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"507:16:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"id":73167,"nodeType":"VariableDeclaration","src":"530:26:104","nodes":[],"constant":false,"functionSelector":"925931fc","mutability":"mutable","name":"currentOrderId","nameLocation":"542:14:104","scope":74450,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73166,"name":"uint","nodeType":"ElementaryTypeName","src":"530:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":73170,"nodeType":"VariableDeclaration","src":"562:31:104","nodes":[],"baseFunctions":[89026],"constant":false,"functionSelector":"b81b2b71","mutability":"mutable","name":"pairsCount","nameLocation":"583:10:104","overrides":{"id":73169,"nodeType":"OverrideSpecifier","overrides":[],"src":"574:8:104"},"scope":74450,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73168,"name":"uint","nodeType":"ElementaryTypeName","src":"562:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":73172,"nodeType":"VariableDeclaration","src":"599:23:104","nodes":[],"constant":false,"functionSelector":"885e2750","mutability":"mutable","name":"groupsCount","nameLocation":"611:11:104","scope":74450,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73171,"name":"uint","nodeType":"ElementaryTypeName","src":"599:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":73174,"nodeType":"VariableDeclaration","src":"628:21:104","nodes":[],"constant":false,"functionSelector":"658de48a","mutability":"mutable","name":"feesCount","nameLocation":"640:9:104","scope":74450,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73173,"name":"uint","nodeType":"ElementaryTypeName","src":"628:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":73176,"nodeType":"VariableDeclaration","src":"655:27:104","nodes":[],"constant":false,"functionSelector":"6d8b5224","mutability":"mutable","name":"skewedFeesCount","nameLocation":"667:15:104","scope":74450,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73175,"name":"uint","nodeType":"ElementaryTypeName","src":"655:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":73181,"nodeType":"VariableDeclaration","src":"689:34:104","nodes":[],"constant":false,"functionSelector":"b91ac788","mutability":"mutable","name":"pairs","nameLocation":"718:5:104","scope":74450,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair)"},"typeName":{"id":73180,"keyType":{"id":73177,"name":"uint","nodeType":"ElementaryTypeName","src":"697:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"689:21:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair)"},"valueType":{"id":73179,"nodeType":"UserDefinedTypeName","pathNode":{"id":73178,"name":"Pair","nodeType":"IdentifierPath","referencedDeclaration":88782,"src":"705:4:104"},"referencedDeclaration":88782,"src":"705:4:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage_ptr","typeString":"struct IPairStorage.Pair"}}},"visibility":"public"},{"id":73186,"nodeType":"VariableDeclaration","src":"729:36:104","nodes":[],"constant":false,"functionSelector":"96324bd4","mutability":"mutable","name":"groups","nameLocation":"759:6:104","scope":74450,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Group_$88791_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Group)"},"typeName":{"id":73185,"keyType":{"id":73182,"name":"uint","nodeType":"ElementaryTypeName","src":"737:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"729:22:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Group_$88791_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Group)"},"valueType":{"id":73184,"nodeType":"UserDefinedTypeName","pathNode":{"id":73183,"name":"Group","nodeType":"IdentifierPath","referencedDeclaration":88791,"src":"745:5:104"},"referencedDeclaration":88791,"src":"745:5:104","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_storage_ptr","typeString":"struct IPairStorage.Group"}}},"visibility":"public"},{"id":73191,"nodeType":"VariableDeclaration","src":"771:32:104","nodes":[],"constant":false,"functionSelector":"4acc79ed","mutability":"mutable","name":"fees","nameLocation":"799:4:104","scope":74450,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Fee_$88802_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Fee)"},"typeName":{"id":73190,"keyType":{"id":73187,"name":"uint","nodeType":"ElementaryTypeName","src":"779:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"771:20:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Fee_$88802_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Fee)"},"valueType":{"id":73189,"nodeType":"UserDefinedTypeName","pathNode":{"id":73188,"name":"Fee","nodeType":"IdentifierPath","referencedDeclaration":88802,"src":"787:3:104"},"referencedDeclaration":88802,"src":"787:3:104","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_storage_ptr","typeString":"struct IPairStorage.Fee"}}},"visibility":"public"},{"id":73197,"nodeType":"VariableDeclaration","src":"809:62:104","nodes":[],"constant":false,"functionSelector":"1628bfeb","mutability":"mutable","name":"isPairListed","nameLocation":"859:12:104","scope":74450,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_mapping$_t_string_memory_ptr_$_t_bool_$_$","typeString":"mapping(string => mapping(string => bool))"},"typeName":{"id":73196,"keyType":{"id":73192,"name":"string","nodeType":"ElementaryTypeName","src":"817:6:104","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"nodeType":"Mapping","src":"809:42:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_mapping$_t_string_memory_ptr_$_t_bool_$_$","typeString":"mapping(string => mapping(string => bool))"},"valueType":{"id":73195,"keyType":{"id":73193,"name":"string","nodeType":"ElementaryTypeName","src":"835:6:104","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"nodeType":"Mapping","src":"827:23:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_bool_$","typeString":"mapping(string => bool)"},"valueType":{"id":73194,"name":"bool","nodeType":"ElementaryTypeName","src":"845:4:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}}},"visibility":"public"},{"id":73203,"nodeType":"VariableDeclaration","src":"877:40:104","nodes":[],"constant":false,"functionSelector":"a1ead064","mutability":"mutable","name":"groupOIs","nameLocation":"909:8:104","scope":74450,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_uint256_$2_storage_$","typeString":"mapping(uint256 => uint256[2])"},"typeName":{"id":73202,"keyType":{"id":73198,"name":"uint","nodeType":"ElementaryTypeName","src":"885:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"877:24:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_uint256_$2_storage_$","typeString":"mapping(uint256 => uint256[2])"},"valueType":{"baseType":{"id":73199,"name":"uint","nodeType":"ElementaryTypeName","src":"893:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73201,"length":{"hexValue":"32","id":73200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"898:1:104","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"893:7:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}}},"visibility":"public"},{"id":73209,"nodeType":"VariableDeclaration","src":"923:60:104","nodes":[],"constant":false,"functionSelector":"15b40d91","mutability":"mutable","name":"lossProtection","nameLocation":"969:14:104","scope":74450,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(uint256 => uint256))"},"typeName":{"id":73208,"keyType":{"id":73204,"name":"uint","nodeType":"ElementaryTypeName","src":"931:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"923:38:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(uint256 => uint256))"},"valueType":{"id":73207,"keyType":{"id":73205,"name":"uint","nodeType":"ElementaryTypeName","src":"947:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"939:21:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":73206,"name":"uint","nodeType":"ElementaryTypeName","src":"955:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"id":73214,"nodeType":"VariableDeclaration","src":"989:41:104","nodes":[],"constant":false,"mutability":"mutable","name":"skewFees","nameLocation":"1022:8:104","scope":74450,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SkewFee_$88809_storage_$","typeString":"mapping(uint256 => struct IPairStorage.SkewFee)"},"typeName":{"id":73213,"keyType":{"id":73210,"name":"uint","nodeType":"ElementaryTypeName","src":"997:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"989:24:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SkewFee_$88809_storage_$","typeString":"mapping(uint256 => struct IPairStorage.SkewFee)"},"valueType":{"id":73212,"nodeType":"UserDefinedTypeName","pathNode":{"id":73211,"name":"SkewFee","nodeType":"IdentifierPath","referencedDeclaration":88809,"src":"1005:7:104"},"referencedDeclaration":88809,"src":"1005:7:104","typeDescriptions":{"typeIdentifier":"t_struct$_SkewFee_$88809_storage_ptr","typeString":"struct IPairStorage.SkewFee"}}},"visibility":"private"},{"id":73219,"nodeType":"VariableDeclaration","src":"1036:50:104","nodes":[],"baseFunctions":[89033],"constant":false,"functionSelector":"9ae6b9e0","mutability":"mutable","name":"blockOILimit","nameLocation":"1074:12:104","overrides":{"id":73218,"nodeType":"OverrideSpecifier","overrides":[],"src":"1065:8:104"},"scope":74450,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"typeName":{"id":73217,"keyType":{"id":73215,"name":"uint","nodeType":"ElementaryTypeName","src":"1044:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"1036:21:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"},"valueType":{"id":73216,"name":"uint","nodeType":"ElementaryTypeName","src":"1052:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"id":73233,"nodeType":"ModifierDefinition","src":"1097:96:104","nodes":[],"body":{"id":73232,"nodeType":"Block","src":"1116:77:104","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":73227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":73222,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1134:3:104","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"1134:10:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":73224,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73149,"src":"1148:8:104","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":73225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"gov","nodeType":"MemberAccess","referencedDeclaration":89575,"src":"1148:12:104","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":73226,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1148:14:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1134:28:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"474f565f4f4e4c59","id":73228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1164:10:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_e24bb66e7063bdafcf2e5ceff578e6b6ea2c27ad98f30b9e10f9fe144c21c798","typeString":"literal_string \"GOV_ONLY\""},"value":"GOV_ONLY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e24bb66e7063bdafcf2e5ceff578e6b6ea2c27ad98f30b9e10f9fe144c21c798","typeString":"literal_string \"GOV_ONLY\""}],"id":73221,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1126:7:104","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":73229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1126:49:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73230,"nodeType":"ExpressionStatement","src":"1126:49:104"},{"id":73231,"nodeType":"PlaceholderStatement","src":"1185:1:104"}]},"name":"onlyGov","nameLocation":"1106:7:104","parameters":{"id":73220,"nodeType":"ParameterList","parameters":[],"src":"1113:2:104"},"virtual":false,"visibility":"internal"},{"id":73249,"nodeType":"ModifierDefinition","src":"1199:131:104","nodes":[],"body":{"id":73248,"nodeType":"Block","src":"1238:92:104","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":73238,"name":"groups","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73186,"src":"1256:6:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Group_$88791_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Group storage ref)"}},"id":73240,"indexExpression":{"id":73239,"name":"_groupIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73235,"src":"1263:11:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1256:19:104","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_storage","typeString":"struct IPairStorage.Group storage ref"}},"id":73241,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"minLeverage","nodeType":"MemberAccess","referencedDeclaration":88786,"src":"1256:31:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":73242,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1290:1:104","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1256:35:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"47524f55505f4e4f545f4c4953544544","id":73244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1293:18:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_6efedcbad90726c64f3d286db7f7bfeb692f0818a52d902815a06bc76b345c83","typeString":"literal_string \"GROUP_NOT_LISTED\""},"value":"GROUP_NOT_LISTED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6efedcbad90726c64f3d286db7f7bfeb692f0818a52d902815a06bc76b345c83","typeString":"literal_string \"GROUP_NOT_LISTED\""}],"id":73237,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1248:7:104","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":73245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1248:64:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73246,"nodeType":"ExpressionStatement","src":"1248:64:104"},{"id":73247,"nodeType":"PlaceholderStatement","src":"1322:1:104"}]},"name":"groupListed","nameLocation":"1208:11:104","parameters":{"id":73236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73235,"mutability":"mutable","name":"_groupIndex","nameLocation":"1225:11:104","nodeType":"VariableDeclaration","scope":73249,"src":"1220:16:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73234,"name":"uint","nodeType":"ElementaryTypeName","src":"1220:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1219:18:104"},"virtual":false,"visibility":"internal"},{"id":73265,"nodeType":"ModifierDefinition","src":"1335:118:104","nodes":[],"body":{"id":73264,"nodeType":"Block","src":"1370:83:104","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73259,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":73254,"name":"fees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73191,"src":"1388:4:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Fee_$88802_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Fee storage ref)"}},"id":73256,"indexExpression":{"id":73255,"name":"_feeIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73251,"src":"1393:9:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1388:15:104","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_storage","typeString":"struct IPairStorage.Fee storage ref"}},"id":73257,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"openFeeP","nodeType":"MemberAccess","referencedDeclaration":88795,"src":"1388:24:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":73258,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1415:1:104","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1388:28:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4645455f4e4f545f4c4953544544","id":73260,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1418:16:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_dc5c7e267cd5462d43ba67858777dc283ddb686b69618494d764230902f560dd","typeString":"literal_string \"FEE_NOT_LISTED\""},"value":"FEE_NOT_LISTED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_dc5c7e267cd5462d43ba67858777dc283ddb686b69618494d764230902f560dd","typeString":"literal_string \"FEE_NOT_LISTED\""}],"id":73253,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1380:7:104","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":73261,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1380:55:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73262,"nodeType":"ExpressionStatement","src":"1380:55:104"},{"id":73263,"nodeType":"PlaceholderStatement","src":"1445:1:104"}]},"name":"feeListed","nameLocation":"1344:9:104","parameters":{"id":73252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73251,"mutability":"mutable","name":"_feeIndex","nameLocation":"1359:9:104","nodeType":"VariableDeclaration","scope":73265,"src":"1354:14:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73250,"name":"uint","nodeType":"ElementaryTypeName","src":"1354:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1353:16:104"},"virtual":false,"visibility":"internal"},{"id":73280,"nodeType":"ModifierDefinition","src":"1459:111:104","nodes":[],"body":{"id":73279,"nodeType":"Block","src":"1496:74:104","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":73271,"name":"_feed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73268,"src":"1514:5:104","typeDescriptions":{"typeIdentifier":"t_struct$_Feed_$88752_calldata_ptr","typeString":"struct IPairStorage.Feed calldata"}},"id":73272,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"maxDeviationP","nodeType":"MemberAccess","referencedDeclaration":88749,"src":"1514:19:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":73273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1536:1:104","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1514:23:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"57524f4e475f46454544","id":73275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1539:12:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_14740a5c4e8086317fb3533f31baaa316cffa7c01786164159c3971125d1b792","typeString":"literal_string \"WRONG_FEED\""},"value":"WRONG_FEED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_14740a5c4e8086317fb3533f31baaa316cffa7c01786164159c3971125d1b792","typeString":"literal_string \"WRONG_FEED\""}],"id":73270,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1506:7:104","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":73276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1506:46:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73277,"nodeType":"ExpressionStatement","src":"1506:46:104"},{"id":73278,"nodeType":"PlaceholderStatement","src":"1562:1:104"}]},"name":"feedOk","nameLocation":"1468:6:104","parameters":{"id":73269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73268,"mutability":"mutable","name":"_feed","nameLocation":"1489:5:104","nodeType":"VariableDeclaration","scope":73280,"src":"1475:19:104","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Feed_$88752_calldata_ptr","typeString":"struct IPairStorage.Feed"},"typeName":{"id":73267,"nodeType":"UserDefinedTypeName","pathNode":{"id":73266,"name":"Feed","nodeType":"IdentifierPath","referencedDeclaration":88752,"src":"1475:4:104"},"referencedDeclaration":88752,"src":"1475:4:104","typeDescriptions":{"typeIdentifier":"t_struct$_Feed_$88752_storage_ptr","typeString":"struct IPairStorage.Feed"}},"visibility":"internal"}],"src":"1474:21:104"},"virtual":false,"visibility":"internal"},{"id":73306,"nodeType":"ModifierDefinition","src":"1575:279:104","nodes":[],"body":{"id":73305,"nodeType":"Block","src":"1615:239:104","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":73300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":73294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":73286,"name":"_group","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73283,"src":"1646:6:104","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_calldata_ptr","typeString":"struct IPairStorage.Group calldata"}},"id":73287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"minLeverage","nodeType":"MemberAccess","referencedDeclaration":88786,"src":"1646:18:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":73288,"name":"_MIN_LEVERAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73160,"src":"1668:13:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1646:35:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":73290,"name":"_group","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73283,"src":"1701:6:104","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_calldata_ptr","typeString":"struct IPairStorage.Group calldata"}},"id":73291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"maxLeverage","nodeType":"MemberAccess","referencedDeclaration":88788,"src":"1701:18:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":73292,"name":"_MAX_LEVERAGE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73165,"src":"1723:13:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1701:35:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1646:90:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":73295,"name":"_group","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73283,"src":"1756:6:104","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_calldata_ptr","typeString":"struct IPairStorage.Group calldata"}},"id":73296,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"minLeverage","nodeType":"MemberAccess","referencedDeclaration":88786,"src":"1756:18:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":73297,"name":"_group","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73283,"src":"1777:6:104","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_calldata_ptr","typeString":"struct IPairStorage.Group calldata"}},"id":73298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"maxLeverage","nodeType":"MemberAccess","referencedDeclaration":88788,"src":"1777:18:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1756:39:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1646:149:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"57524f4e475f4c4556455241474553","id":73301,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1809:17:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_bca1800a72331c2c6383228b2fbab80a0f62297f5fd87fe480d907f71db5a588","typeString":"literal_string \"WRONG_LEVERAGES\""},"value":"WRONG_LEVERAGES"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bca1800a72331c2c6383228b2fbab80a0f62297f5fd87fe480d907f71db5a588","typeString":"literal_string \"WRONG_LEVERAGES\""}],"id":73285,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1625:7:104","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":73302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1625:211:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73303,"nodeType":"ExpressionStatement","src":"1625:211:104"},{"id":73304,"nodeType":"PlaceholderStatement","src":"1846:1:104"}]},"name":"groupOk","nameLocation":"1584:7:104","parameters":{"id":73284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73283,"mutability":"mutable","name":"_group","nameLocation":"1607:6:104","nodeType":"VariableDeclaration","scope":73306,"src":"1592:21:104","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_calldata_ptr","typeString":"struct IPairStorage.Group"},"typeName":{"id":73282,"nodeType":"UserDefinedTypeName","pathNode":{"id":73281,"name":"Group","nodeType":"IdentifierPath","referencedDeclaration":88791,"src":"1592:5:104"},"referencedDeclaration":88791,"src":"1592:5:104","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_storage_ptr","typeString":"struct IPairStorage.Group"}},"visibility":"internal"}],"src":"1591:23:104"},"virtual":false,"visibility":"internal"},{"id":73336,"nodeType":"ModifierDefinition","src":"1860:211:104","nodes":[],"body":{"id":73335,"nodeType":"Block","src":"1894:177:104","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":73330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":73325,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":73320,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73315,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":73312,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73309,"src":"1925:4:104","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_calldata_ptr","typeString":"struct IPairStorage.Fee calldata"}},"id":73313,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openFeeP","nodeType":"MemberAccess","referencedDeclaration":88795,"src":"1925:13:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":73314,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1941:1:104","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1925:17:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":73316,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73309,"src":"1946:4:104","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_calldata_ptr","typeString":"struct IPairStorage.Fee calldata"}},"id":73317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"closeFeeP","nodeType":"MemberAccess","referencedDeclaration":88797,"src":"1946:14:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":73318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1963:1:104","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1946:18:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1925:39:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":73321,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73309,"src":"1968:4:104","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_calldata_ptr","typeString":"struct IPairStorage.Fee calldata"}},"id":73322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"limitOrderFeeP","nodeType":"MemberAccess","referencedDeclaration":88799,"src":"1968:19:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":73323,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1990:1:104","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1968:23:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1925:66:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":73326,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73309,"src":"1995:4:104","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_calldata_ptr","typeString":"struct IPairStorage.Fee calldata"}},"id":73327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"minLevPosUSDC","nodeType":"MemberAccess","referencedDeclaration":88801,"src":"1995:18:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":73328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2016:1:104","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1995:22:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1925:92:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"57524f4e475f46454553","id":73331,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2031:12:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_75454c9120b8cb3c4d2eed79fd190e71ed04620f23394fa31b82f9541aca1e05","typeString":"literal_string \"WRONG_FEES\""},"value":"WRONG_FEES"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_75454c9120b8cb3c4d2eed79fd190e71ed04620f23394fa31b82f9541aca1e05","typeString":"literal_string \"WRONG_FEES\""}],"id":73311,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1904:7:104","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":73332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1904:149:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73333,"nodeType":"ExpressionStatement","src":"1904:149:104"},{"id":73334,"nodeType":"PlaceholderStatement","src":"2063:1:104"}]},"name":"feeOk","nameLocation":"1869:5:104","parameters":{"id":73310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73309,"mutability":"mutable","name":"_fee","nameLocation":"1888:4:104","nodeType":"VariableDeclaration","scope":73336,"src":"1875:17:104","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_calldata_ptr","typeString":"struct IPairStorage.Fee"},"typeName":{"id":73308,"nodeType":"UserDefinedTypeName","pathNode":{"id":73307,"name":"Fee","nodeType":"IdentifierPath","referencedDeclaration":88802,"src":"1875:3:104"},"referencedDeclaration":88802,"src":"1875:3:104","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_storage_ptr","typeString":"struct IPairStorage.Fee"}},"visibility":"internal"}],"src":"1874:19:104"},"virtual":false,"visibility":"internal"},{"id":73343,"nodeType":"FunctionDefinition","src":"2081:53:104","nodes":[],"body":{"id":73342,"nodeType":"Block","src":"2095:39:104","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":73339,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43518,"src":"2105:20:104","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":73340,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2105:22:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73341,"nodeType":"ExpressionStatement","src":"2105:22:104"}]},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":73337,"nodeType":"ParameterList","parameters":[],"src":"2092:2:104"},"returnParameters":{"id":73338,"nodeType":"ParameterList","parameters":[],"src":"2095:0:104"},"scope":74450,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":73371,"nodeType":"FunctionDefinition","src":"2306:230:104","nodes":[],"body":{"id":73370,"nodeType":"Block","src":"2388:148:104","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":73354,"name":"_currentOrderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73348,"src":"2406:15:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":73355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2424:1:104","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2406:19:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f524445525f49445f30","id":73357,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2427:12:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_9153ceb9675ffcec4be17bf9585ae634b162e591da6a1e8b06eed7cb14585284","typeString":"literal_string \"ORDER_ID_0\""},"value":"ORDER_ID_0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9153ceb9675ffcec4be17bf9585ae634b162e591da6a1e8b06eed7cb14585284","typeString":"literal_string \"ORDER_ID_0\""}],"id":73353,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2398:7:104","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":73358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2398:42:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73359,"nodeType":"ExpressionStatement","src":"2398:42:104"},{"expression":{"id":73362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":73360,"name":"currentOrderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73167,"src":"2450:14:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":73361,"name":"_currentOrderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73348,"src":"2467:15:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2450:32:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73363,"nodeType":"ExpressionStatement","src":"2450:32:104"},{"expression":{"id":73368,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":73364,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73149,"src":"2492:8:104","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":73366,"name":"_storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73346,"src":"2519:9:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":73365,"name":"ITradingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":89943,"src":"2503:15:104","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ITradingStorage_$89943_$","typeString":"type(contract ITradingStorage)"}},"id":73367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2503:26:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"src":"2492:37:104","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":73369,"nodeType":"ExpressionStatement","src":"2492:37:104"}]},"documentation":{"id":73344,"nodeType":"StructuredDocumentation","src":"2139:162:104","text":" @dev Initializes the contract.\n @param _storageT Address of the trading storage contract.\n @param _currentOrderId Initial order ID."},"functionSelector":"cd6dc687","implemented":true,"kind":"function","modifiers":[{"id":73351,"kind":"modifierInvocation","modifierName":{"id":73350,"name":"initializer","nodeType":"IdentifierPath","referencedDeclaration":43439,"src":"2376:11:104"},"nodeType":"ModifierInvocation","src":"2376:11:104"}],"name":"initialize","nameLocation":"2315:10:104","parameters":{"id":73349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73346,"mutability":"mutable","name":"_storageT","nameLocation":"2334:9:104","nodeType":"VariableDeclaration","scope":73371,"src":"2326:17:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73345,"name":"address","nodeType":"ElementaryTypeName","src":"2326:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":73348,"mutability":"mutable","name":"_currentOrderId","nameLocation":"2350:15:104","nodeType":"VariableDeclaration","scope":73371,"src":"2345:20:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73347,"name":"uint","nodeType":"ElementaryTypeName","src":"2345:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2325:41:104"},"returnParameters":{"id":73352,"nodeType":"ParameterList","parameters":[],"src":"2388:0:104"},"scope":74450,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":73392,"nodeType":"FunctionDefinition","src":"2636:168:104","nodes":[],"body":{"id":73391,"nodeType":"Block","src":"2705:99:104","nodes":[],"statements":[{"expression":{"id":73384,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":73380,"name":"skewFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73214,"src":"2715:8:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SkewFee_$88809_storage_$","typeString":"mapping(uint256 => struct IPairStorage.SkewFee storage ref)"}},"id":73382,"indexExpression":{"id":73381,"name":"skewedFeesCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73176,"src":"2724:15:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2715:25:104","typeDescriptions":{"typeIdentifier":"t_struct$_SkewFee_$88809_storage","typeString":"struct IPairStorage.SkewFee storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":73383,"name":"_skewFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73375,"src":"2743:8:104","typeDescriptions":{"typeIdentifier":"t_struct$_SkewFee_$88809_calldata_ptr","typeString":"struct IPairStorage.SkewFee calldata"}},"src":"2715:36:104","typeDescriptions":{"typeIdentifier":"t_struct$_SkewFee_$88809_storage","typeString":"struct IPairStorage.SkewFee storage ref"}},"id":73385,"nodeType":"ExpressionStatement","src":"2715:36:104"},{"eventCall":{"arguments":[{"id":73388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2779:17:104","subExpression":{"id":73387,"name":"skewedFeesCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73176,"src":"2779:15:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":73386,"name":"SkewFeeAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88845,"src":"2766:12:104","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":73389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2766:31:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73390,"nodeType":"EmitStatement","src":"2761:36:104"}]},"documentation":{"id":73372,"nodeType":"StructuredDocumentation","src":"2542:89:104","text":" @dev Adds a skew open fee.\n @param _skewFee The skew fee to add."},"functionSelector":"1a67bacc","implemented":true,"kind":"function","modifiers":[{"id":73378,"kind":"modifierInvocation","modifierName":{"id":73377,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":73233,"src":"2697:7:104"},"nodeType":"ModifierInvocation","src":"2697:7:104"}],"name":"addSkewOpenFees","nameLocation":"2645:15:104","parameters":{"id":73376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73375,"mutability":"mutable","name":"_skewFee","nameLocation":"2678:8:104","nodeType":"VariableDeclaration","scope":73392,"src":"2661:25:104","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SkewFee_$88809_calldata_ptr","typeString":"struct IPairStorage.SkewFee"},"typeName":{"id":73374,"nodeType":"UserDefinedTypeName","pathNode":{"id":73373,"name":"SkewFee","nodeType":"IdentifierPath","referencedDeclaration":88809,"src":"2661:7:104"},"referencedDeclaration":88809,"src":"2661:7:104","typeDescriptions":{"typeIdentifier":"t_struct$_SkewFee_$88809_storage_ptr","typeString":"struct IPairStorage.SkewFee"}},"visibility":"internal"}],"src":"2660:27:104"},"returnParameters":{"id":73379,"nodeType":"ParameterList","parameters":[],"src":"2705:0:104"},"scope":74450,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":73414,"nodeType":"FunctionDefinition","src":"2962:178:104","nodes":[],"body":{"id":73413,"nodeType":"Block","src":"3051:89:104","nodes":[],"statements":[{"expression":{"id":73407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":73403,"name":"skewFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73214,"src":"3061:8:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SkewFee_$88809_storage_$","typeString":"mapping(uint256 => struct IPairStorage.SkewFee storage ref)"}},"id":73405,"indexExpression":{"id":73404,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73395,"src":"3070:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3061:20:104","typeDescriptions":{"typeIdentifier":"t_struct$_SkewFee_$88809_storage","typeString":"struct IPairStorage.SkewFee storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":73406,"name":"_skewFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73398,"src":"3084:8:104","typeDescriptions":{"typeIdentifier":"t_struct$_SkewFee_$88809_calldata_ptr","typeString":"struct IPairStorage.SkewFee calldata"}},"src":"3061:31:104","typeDescriptions":{"typeIdentifier":"t_struct$_SkewFee_$88809_storage","typeString":"struct IPairStorage.SkewFee storage ref"}},"id":73408,"nodeType":"ExpressionStatement","src":"3061:31:104"},{"eventCall":{"arguments":[{"id":73410,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73395,"src":"3122:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":73409,"name":"SkewFeeUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88849,"src":"3107:14:104","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":73411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3107:26:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73412,"nodeType":"EmitStatement","src":"3102:31:104"}]},"documentation":{"id":73393,"nodeType":"StructuredDocumentation","src":"2810:147:104","text":" @dev Updates a skew open fee.\n @param _pairIndex The index of the pair to update.\n @param _skewFee The new skew fee."},"functionSelector":"3d7a5f1a","implemented":true,"kind":"function","modifiers":[{"id":73401,"kind":"modifierInvocation","modifierName":{"id":73400,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":73233,"src":"3043:7:104"},"nodeType":"ModifierInvocation","src":"3043:7:104"}],"name":"udpateSkewOpenFees","nameLocation":"2971:18:104","parameters":{"id":73399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73395,"mutability":"mutable","name":"_pairIndex","nameLocation":"2995:10:104","nodeType":"VariableDeclaration","scope":73414,"src":"2990:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73394,"name":"uint","nodeType":"ElementaryTypeName","src":"2990:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":73398,"mutability":"mutable","name":"_skewFee","nameLocation":"3024:8:104","nodeType":"VariableDeclaration","scope":73414,"src":"3007:25:104","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_SkewFee_$88809_calldata_ptr","typeString":"struct IPairStorage.SkewFee"},"typeName":{"id":73397,"nodeType":"UserDefinedTypeName","pathNode":{"id":73396,"name":"SkewFee","nodeType":"IdentifierPath","referencedDeclaration":88809,"src":"3007:7:104"},"referencedDeclaration":88809,"src":"3007:7:104","typeDescriptions":{"typeIdentifier":"t_struct$_SkewFee_$88809_storage_ptr","typeString":"struct IPairStorage.SkewFee"}},"visibility":"internal"}],"src":"2989:44:104"},"returnParameters":{"id":73402,"nodeType":"ParameterList","parameters":[],"src":"3051:0:104"},"scope":74450,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":73473,"nodeType":"FunctionDefinition","src":"3248:376:104","nodes":[],"body":{"id":73472,"nodeType":"Block","src":"3392:232:104","nodes":[],"statements":[{"expression":{"arguments":[{"id":73443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3410:35:104","subExpression":{"baseExpression":{"baseExpression":{"id":73436,"name":"isPairListed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73197,"src":"3411:12:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_mapping$_t_string_memory_ptr_$_t_bool_$_$","typeString":"mapping(string memory => mapping(string memory => bool))"}},"id":73439,"indexExpression":{"expression":{"id":73437,"name":"_pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73418,"src":"3424:5:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_calldata_ptr","typeString":"struct IPairStorage.Pair calldata"}},"id":73438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"from","nodeType":"MemberAccess","referencedDeclaration":88759,"src":"3424:10:104","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3411:24:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_bool_$","typeString":"mapping(string memory => bool)"}},"id":73442,"indexExpression":{"expression":{"id":73440,"name":"_pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73418,"src":"3436:5:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_calldata_ptr","typeString":"struct IPairStorage.Pair calldata"}},"id":73441,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"to","nodeType":"MemberAccess","referencedDeclaration":88761,"src":"3436:8:104","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3411:34:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"504149525f414c52454144595f4c4953544544","id":73444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3447:21:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_7cf38fa10832b8d6b98f33821d4969d5f87661108730fc212076cd39e7216691","typeString":"literal_string \"PAIR_ALREADY_LISTED\""},"value":"PAIR_ALREADY_LISTED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7cf38fa10832b8d6b98f33821d4969d5f87661108730fc212076cd39e7216691","typeString":"literal_string \"PAIR_ALREADY_LISTED\""}],"id":73435,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3402:7:104","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":73445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3402:67:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73446,"nodeType":"ExpressionStatement","src":"3402:67:104"},{"expression":{"id":73451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":73447,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"3480:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":73449,"indexExpression":{"id":73448,"name":"pairsCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73170,"src":"3486:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3480:17:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":73450,"name":"_pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73418,"src":"3500:5:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_calldata_ptr","typeString":"struct IPairStorage.Pair calldata"}},"src":"3480:25:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"id":73452,"nodeType":"ExpressionStatement","src":"3480:25:104"},{"expression":{"id":73461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":73453,"name":"isPairListed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73197,"src":"3515:12:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_mapping$_t_string_memory_ptr_$_t_bool_$_$","typeString":"mapping(string memory => mapping(string memory => bool))"}},"id":73458,"indexExpression":{"expression":{"id":73454,"name":"_pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73418,"src":"3528:5:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_calldata_ptr","typeString":"struct IPairStorage.Pair calldata"}},"id":73455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"from","nodeType":"MemberAccess","referencedDeclaration":88759,"src":"3528:10:104","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3515:24:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_bool_$","typeString":"mapping(string memory => bool)"}},"id":73459,"indexExpression":{"expression":{"id":73456,"name":"_pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73418,"src":"3540:5:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_calldata_ptr","typeString":"struct IPairStorage.Pair calldata"}},"id":73457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"to","nodeType":"MemberAccess","referencedDeclaration":88761,"src":"3540:8:104","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3515:34:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":73460,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3552:4:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3515:41:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":73462,"nodeType":"ExpressionStatement","src":"3515:41:104"},{"eventCall":{"arguments":[{"id":73465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3582:12:104","subExpression":{"id":73464,"name":"pairsCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73170,"src":"3582:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":73466,"name":"_pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73418,"src":"3596:5:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_calldata_ptr","typeString":"struct IPairStorage.Pair calldata"}},"id":73467,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"from","nodeType":"MemberAccess","referencedDeclaration":88759,"src":"3596:10:104","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}},{"expression":{"id":73468,"name":"_pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73418,"src":"3608:5:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_calldata_ptr","typeString":"struct IPairStorage.Pair calldata"}},"id":73469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"to","nodeType":"MemberAccess","referencedDeclaration":88761,"src":"3608:8:104","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":73463,"name":"PairAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88817,"src":"3572:9:104","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory,string memory)"}},"id":73470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3572:45:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73471,"nodeType":"EmitStatement","src":"3567:50:104"}]},"documentation":{"id":73415,"nodeType":"StructuredDocumentation","src":"3146:97:104","text":" @dev Adds a new trading pair.\n @param _pair The new trading pair to add."},"functionSelector":"e70ab5cd","implemented":true,"kind":"function","modifiers":[{"id":73421,"kind":"modifierInvocation","modifierName":{"id":73420,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":73233,"src":"3309:7:104"},"nodeType":"ModifierInvocation","src":"3309:7:104"},{"arguments":[{"expression":{"id":73423,"name":"_pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73418,"src":"3324:5:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_calldata_ptr","typeString":"struct IPairStorage.Pair calldata"}},"id":73424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"feed","nodeType":"MemberAccess","referencedDeclaration":88764,"src":"3324:10:104","typeDescriptions":{"typeIdentifier":"t_struct$_Feed_$88752_calldata_ptr","typeString":"struct IPairStorage.Feed calldata"}}],"id":73425,"kind":"modifierInvocation","modifierName":{"id":73422,"name":"feedOk","nodeType":"IdentifierPath","referencedDeclaration":73280,"src":"3317:6:104"},"nodeType":"ModifierInvocation","src":"3317:18:104"},{"arguments":[{"expression":{"id":73427,"name":"_pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73418,"src":"3348:5:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_calldata_ptr","typeString":"struct IPairStorage.Pair calldata"}},"id":73428,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"groupIndex","nodeType":"MemberAccess","referencedDeclaration":88775,"src":"3348:16:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":73429,"kind":"modifierInvocation","modifierName":{"id":73426,"name":"groupListed","nodeType":"IdentifierPath","referencedDeclaration":73249,"src":"3336:11:104"},"nodeType":"ModifierInvocation","src":"3336:29:104"},{"arguments":[{"expression":{"id":73431,"name":"_pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73418,"src":"3376:5:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_calldata_ptr","typeString":"struct IPairStorage.Pair calldata"}},"id":73432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"feeIndex","nodeType":"MemberAccess","referencedDeclaration":88777,"src":"3376:14:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":73433,"kind":"modifierInvocation","modifierName":{"id":73430,"name":"feeListed","nodeType":"IdentifierPath","referencedDeclaration":73265,"src":"3366:9:104"},"nodeType":"ModifierInvocation","src":"3366:25:104"}],"name":"addPair","nameLocation":"3257:7:104","parameters":{"id":73419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73418,"mutability":"mutable","name":"_pair","nameLocation":"3288:5:104","nodeType":"VariableDeclaration","scope":73473,"src":"3274:19:104","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_calldata_ptr","typeString":"struct IPairStorage.Pair"},"typeName":{"id":73417,"nodeType":"UserDefinedTypeName","pathNode":{"id":73416,"name":"Pair","nodeType":"IdentifierPath","referencedDeclaration":88782,"src":"3274:4:104"},"referencedDeclaration":88782,"src":"3274:4:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage_ptr","typeString":"struct IPairStorage.Pair"}},"visibility":"internal"}],"src":"3264:35:104"},"returnParameters":{"id":73434,"nodeType":"ParameterList","parameters":[],"src":"3392:0:104"},"scope":74450,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":73564,"nodeType":"FunctionDefinition","src":"3789:594:104","nodes":[],"body":{"id":73563,"nodeType":"Block","src":"3931:452:104","nodes":[],"statements":[{"assignments":[73494],"declarations":[{"constant":false,"id":73494,"mutability":"mutable","name":"p","nameLocation":"3954:1:104","nodeType":"VariableDeclaration","scope":73563,"src":"3941:14:104","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage_ptr","typeString":"struct IPairStorage.Pair"},"typeName":{"id":73493,"nodeType":"UserDefinedTypeName","pathNode":{"id":73492,"name":"Pair","nodeType":"IdentifierPath","referencedDeclaration":88782,"src":"3941:4:104"},"referencedDeclaration":88782,"src":"3941:4:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage_ptr","typeString":"struct IPairStorage.Pair"}},"visibility":"internal"}],"id":73498,"initialValue":{"baseExpression":{"id":73495,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"3958:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":73497,"indexExpression":{"id":73496,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73476,"src":"3964:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3958:17:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"nodeType":"VariableDeclarationStatement","src":"3941:34:104"},{"expression":{"arguments":[{"baseExpression":{"baseExpression":{"id":73500,"name":"isPairListed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73197,"src":"3993:12:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_mapping$_t_string_memory_ptr_$_t_bool_$_$","typeString":"mapping(string memory => mapping(string memory => bool))"}},"id":73503,"indexExpression":{"expression":{"id":73501,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73494,"src":"4006:1:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage_ptr","typeString":"struct IPairStorage.Pair storage pointer"}},"id":73502,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"from","nodeType":"MemberAccess","referencedDeclaration":88759,"src":"4006:6:104","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3993:20:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_bool_$","typeString":"mapping(string memory => bool)"}},"id":73506,"indexExpression":{"expression":{"id":73504,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73494,"src":"4014:1:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage_ptr","typeString":"struct IPairStorage.Pair storage pointer"}},"id":73505,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"to","nodeType":"MemberAccess","referencedDeclaration":88761,"src":"4014:4:104","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3993:26:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"504149525f4e4f545f4c4953544544","id":73507,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4021:17:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_d2aae471f4e3bb111f7953ed80c649ca8362f83334e0cbb3b3e94edfbf685add","typeString":"literal_string \"PAIR_NOT_LISTED\""},"value":"PAIR_NOT_LISTED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d2aae471f4e3bb111f7953ed80c649ca8362f83334e0cbb3b3e94edfbf685add","typeString":"literal_string \"PAIR_NOT_LISTED\""}],"id":73499,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3985:7:104","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":73508,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"3985:54:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73509,"nodeType":"ExpressionStatement","src":"3985:54:104"},{"expression":{"id":73515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":73510,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73494,"src":"4050:1:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage_ptr","typeString":"struct IPairStorage.Pair storage pointer"}},"id":73512,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feed","nodeType":"MemberAccess","referencedDeclaration":88764,"src":"4050:6:104","typeDescriptions":{"typeIdentifier":"t_struct$_Feed_$88752_storage","typeString":"struct IPairStorage.Feed storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":73513,"name":"_pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73479,"src":"4059:5:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_calldata_ptr","typeString":"struct IPairStorage.Pair calldata"}},"id":73514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"feed","nodeType":"MemberAccess","referencedDeclaration":88764,"src":"4059:10:104","typeDescriptions":{"typeIdentifier":"t_struct$_Feed_$88752_calldata_ptr","typeString":"struct IPairStorage.Feed calldata"}},"src":"4050:19:104","typeDescriptions":{"typeIdentifier":"t_struct$_Feed_$88752_storage","typeString":"struct IPairStorage.Feed storage ref"}},"id":73516,"nodeType":"ExpressionStatement","src":"4050:19:104"},{"expression":{"id":73522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":73517,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73494,"src":"4079:1:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage_ptr","typeString":"struct IPairStorage.Pair storage pointer"}},"id":73519,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"spreadP","nodeType":"MemberAccess","referencedDeclaration":88769,"src":"4079:9:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":73520,"name":"_pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73479,"src":"4091:5:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_calldata_ptr","typeString":"struct IPairStorage.Pair calldata"}},"id":73521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"spreadP","nodeType":"MemberAccess","referencedDeclaration":88769,"src":"4091:13:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4079:25:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73523,"nodeType":"ExpressionStatement","src":"4079:25:104"},{"expression":{"id":73529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":73524,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73494,"src":"4114:1:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage_ptr","typeString":"struct IPairStorage.Pair storage pointer"}},"id":73526,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"feeIndex","nodeType":"MemberAccess","referencedDeclaration":88777,"src":"4114:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":73527,"name":"_pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73479,"src":"4127:5:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_calldata_ptr","typeString":"struct IPairStorage.Pair calldata"}},"id":73528,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"feeIndex","nodeType":"MemberAccess","referencedDeclaration":88777,"src":"4127:14:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4114:27:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73530,"nodeType":"ExpressionStatement","src":"4114:27:104"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":73544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":73531,"name":"_pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73479,"src":"4155:5:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_calldata_ptr","typeString":"struct IPairStorage.Pair calldata"}},"id":73532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"backupFeed","nodeType":"MemberAccess","referencedDeclaration":88767,"src":"4155:16:104","typeDescriptions":{"typeIdentifier":"t_struct$_BackupFeed_$88757_calldata_ptr","typeString":"struct IPairStorage.BackupFeed calldata"}},"id":73533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"maxDeviationP","nodeType":"MemberAccess","referencedDeclaration":88754,"src":"4155:30:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":73534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4188:1:104","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4155:34:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":73543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":73536,"name":"_pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73479,"src":"4193:5:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_calldata_ptr","typeString":"struct IPairStorage.Pair calldata"}},"id":73537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"backupFeed","nodeType":"MemberAccess","referencedDeclaration":88767,"src":"4193:16:104","typeDescriptions":{"typeIdentifier":"t_struct$_BackupFeed_$88757_calldata_ptr","typeString":"struct IPairStorage.BackupFeed calldata"}},"id":73538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"feedId","nodeType":"MemberAccess","referencedDeclaration":88756,"src":"4193:23:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":73541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4228:1:104","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":73540,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4220:7:104","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":73539,"name":"address","nodeType":"ElementaryTypeName","src":"4220:7:104","typeDescriptions":{}}},"id":73542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4220:10:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4193:37:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4155:75:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":73557,"nodeType":"Block","src":"4294:44:104","statements":[{"expression":{"id":73555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"4308:19:104","subExpression":{"expression":{"id":73553,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73494,"src":"4315:1:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage_ptr","typeString":"struct IPairStorage.Pair storage pointer"}},"id":73554,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"backupFeed","nodeType":"MemberAccess","referencedDeclaration":88767,"src":"4315:12:104","typeDescriptions":{"typeIdentifier":"t_struct$_BackupFeed_$88757_storage","typeString":"struct IPairStorage.BackupFeed storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73556,"nodeType":"ExpressionStatement","src":"4308:19:104"}]},"id":73558,"nodeType":"IfStatement","src":"4151:187:104","trueBody":{"id":73552,"nodeType":"Block","src":"4232:56:104","statements":[{"expression":{"id":73550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":73545,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73494,"src":"4246:1:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage_ptr","typeString":"struct IPairStorage.Pair storage pointer"}},"id":73547,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"backupFeed","nodeType":"MemberAccess","referencedDeclaration":88767,"src":"4246:12:104","typeDescriptions":{"typeIdentifier":"t_struct$_BackupFeed_$88757_storage","typeString":"struct IPairStorage.BackupFeed storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":73548,"name":"_pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73479,"src":"4261:5:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_calldata_ptr","typeString":"struct IPairStorage.Pair calldata"}},"id":73549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"backupFeed","nodeType":"MemberAccess","referencedDeclaration":88767,"src":"4261:16:104","typeDescriptions":{"typeIdentifier":"t_struct$_BackupFeed_$88757_calldata_ptr","typeString":"struct IPairStorage.BackupFeed calldata"}},"src":"4246:31:104","typeDescriptions":{"typeIdentifier":"t_struct$_BackupFeed_$88757_storage","typeString":"struct IPairStorage.BackupFeed storage ref"}},"id":73551,"nodeType":"ExpressionStatement","src":"4246:31:104"}]}},{"eventCall":{"arguments":[{"id":73560,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73476,"src":"4365:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":73559,"name":"PairUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88821,"src":"4353:11:104","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":73561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4353:23:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73562,"nodeType":"EmitStatement","src":"4348:28:104"}]},"documentation":{"id":73474,"nodeType":"StructuredDocumentation","src":"3630:154:104","text":" @dev Updates an existing trading pair.\n @param _pairIndex The index of the pair to update.\n @param _pair The new pair data."},"functionSelector":"f645aff5","implemented":true,"kind":"function","modifiers":[{"id":73482,"kind":"modifierInvocation","modifierName":{"id":73481,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":73233,"src":"3878:7:104"},"nodeType":"ModifierInvocation","src":"3878:7:104"},{"arguments":[{"expression":{"id":73484,"name":"_pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73479,"src":"3893:5:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_calldata_ptr","typeString":"struct IPairStorage.Pair calldata"}},"id":73485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"feed","nodeType":"MemberAccess","referencedDeclaration":88764,"src":"3893:10:104","typeDescriptions":{"typeIdentifier":"t_struct$_Feed_$88752_calldata_ptr","typeString":"struct IPairStorage.Feed calldata"}}],"id":73486,"kind":"modifierInvocation","modifierName":{"id":73483,"name":"feedOk","nodeType":"IdentifierPath","referencedDeclaration":73280,"src":"3886:6:104"},"nodeType":"ModifierInvocation","src":"3886:18:104"},{"arguments":[{"expression":{"id":73488,"name":"_pair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73479,"src":"3915:5:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_calldata_ptr","typeString":"struct IPairStorage.Pair calldata"}},"id":73489,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"feeIndex","nodeType":"MemberAccess","referencedDeclaration":88777,"src":"3915:14:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":73490,"kind":"modifierInvocation","modifierName":{"id":73487,"name":"feeListed","nodeType":"IdentifierPath","referencedDeclaration":73265,"src":"3905:9:104"},"nodeType":"ModifierInvocation","src":"3905:25:104"}],"name":"updatePair","nameLocation":"3798:10:104","parameters":{"id":73480,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73476,"mutability":"mutable","name":"_pairIndex","nameLocation":"3823:10:104","nodeType":"VariableDeclaration","scope":73564,"src":"3818:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73475,"name":"uint","nodeType":"ElementaryTypeName","src":"3818:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":73479,"mutability":"mutable","name":"_pair","nameLocation":"3857:5:104","nodeType":"VariableDeclaration","scope":73564,"src":"3843:19:104","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_calldata_ptr","typeString":"struct IPairStorage.Pair"},"typeName":{"id":73478,"nodeType":"UserDefinedTypeName","pathNode":{"id":73477,"name":"Pair","nodeType":"IdentifierPath","referencedDeclaration":88782,"src":"3843:4:104"},"referencedDeclaration":88782,"src":"3843:4:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage_ptr","typeString":"struct IPairStorage.Pair"}},"visibility":"internal"}],"src":"3808:60:104"},"returnParameters":{"id":73491,"nodeType":"ParameterList","parameters":[],"src":"3931:0:104"},"scope":74450,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":73610,"nodeType":"FunctionDefinition","src":"4516:307:104","nodes":[],"body":{"id":73609,"nodeType":"Block","src":"4584:239:104","nodes":[],"statements":[{"assignments":[73574],"declarations":[{"constant":false,"id":73574,"mutability":"mutable","name":"p","nameLocation":"4607:1:104","nodeType":"VariableDeclaration","scope":73609,"src":"4594:14:104","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage_ptr","typeString":"struct IPairStorage.Pair"},"typeName":{"id":73573,"nodeType":"UserDefinedTypeName","pathNode":{"id":73572,"name":"Pair","nodeType":"IdentifierPath","referencedDeclaration":88782,"src":"4594:4:104"},"referencedDeclaration":88782,"src":"4594:4:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage_ptr","typeString":"struct IPairStorage.Pair"}},"visibility":"internal"}],"id":73578,"initialValue":{"baseExpression":{"id":73575,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"4611:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":73577,"indexExpression":{"id":73576,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73567,"src":"4617:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4611:17:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"nodeType":"VariableDeclarationStatement","src":"4594:34:104"},{"expression":{"arguments":[{"baseExpression":{"baseExpression":{"id":73580,"name":"isPairListed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73197,"src":"4646:12:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_mapping$_t_string_memory_ptr_$_t_bool_$_$","typeString":"mapping(string memory => mapping(string memory => bool))"}},"id":73583,"indexExpression":{"expression":{"id":73581,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73574,"src":"4659:1:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage_ptr","typeString":"struct IPairStorage.Pair storage pointer"}},"id":73582,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"from","nodeType":"MemberAccess","referencedDeclaration":88759,"src":"4659:6:104","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4646:20:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_bool_$","typeString":"mapping(string memory => bool)"}},"id":73586,"indexExpression":{"expression":{"id":73584,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73574,"src":"4667:1:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage_ptr","typeString":"struct IPairStorage.Pair storage pointer"}},"id":73585,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"to","nodeType":"MemberAccess","referencedDeclaration":88761,"src":"4667:4:104","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4646:26:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"504149525f4e4f545f4c4953544544","id":73587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4674:17:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_d2aae471f4e3bb111f7953ed80c649ca8362f83334e0cbb3b3e94edfbf685add","typeString":"literal_string \"PAIR_NOT_LISTED\""},"value":"PAIR_NOT_LISTED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d2aae471f4e3bb111f7953ed80c649ca8362f83334e0cbb3b3e94edfbf685add","typeString":"literal_string \"PAIR_NOT_LISTED\""}],"id":73579,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4638:7:104","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":73588,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4638:54:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73589,"nodeType":"ExpressionStatement","src":"4638:54:104"},{"expression":{"id":73598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":73590,"name":"isPairListed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73197,"src":"4711:12:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_mapping$_t_string_memory_ptr_$_t_bool_$_$","typeString":"mapping(string memory => mapping(string memory => bool))"}},"id":73595,"indexExpression":{"expression":{"id":73591,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73574,"src":"4724:1:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage_ptr","typeString":"struct IPairStorage.Pair storage pointer"}},"id":73592,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"from","nodeType":"MemberAccess","referencedDeclaration":88759,"src":"4724:6:104","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4711:20:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_bool_$","typeString":"mapping(string memory => bool)"}},"id":73596,"indexExpression":{"expression":{"id":73593,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73574,"src":"4732:1:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage_ptr","typeString":"struct IPairStorage.Pair storage pointer"}},"id":73594,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"to","nodeType":"MemberAccess","referencedDeclaration":88761,"src":"4732:4:104","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4711:26:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":73597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4739:5:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"4711:33:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":73599,"nodeType":"ExpressionStatement","src":"4711:33:104"},{"eventCall":{"arguments":[{"id":73601,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73567,"src":"4771:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":73600,"name":"PairUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88821,"src":"4759:11:104","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":73602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4759:23:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73603,"nodeType":"EmitStatement","src":"4754:28:104"},{"expression":{"id":73607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"4792:24:104","subExpression":{"baseExpression":{"id":73604,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"4799:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":73606,"indexExpression":{"id":73605,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73567,"src":"4805:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4799:17:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73608,"nodeType":"ExpressionStatement","src":"4792:24:104"}]},"documentation":{"id":73565,"nodeType":"StructuredDocumentation","src":"4389:122:104","text":" @notice Delists a trading pair by index.\n @param _pairIndex The index of the pair to be delisted."},"functionSelector":"74db8c89","implemented":true,"kind":"function","modifiers":[{"id":73570,"kind":"modifierInvocation","modifierName":{"id":73569,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":73233,"src":"4576:7:104"},"nodeType":"ModifierInvocation","src":"4576:7:104"}],"name":"delistPair","nameLocation":"4525:10:104","parameters":{"id":73568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73567,"mutability":"mutable","name":"_pairIndex","nameLocation":"4550:10:104","nodeType":"VariableDeclaration","scope":73610,"src":"4545:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73566,"name":"uint","nodeType":"ElementaryTypeName","src":"4545:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4535:31:104"},"returnParameters":{"id":73571,"nodeType":"ParameterList","parameters":[],"src":"4584:0:104"},"scope":74450,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":73636,"nodeType":"FunctionDefinition","src":"4934:172:104","nodes":[],"body":{"id":73635,"nodeType":"Block","src":"5008:98:104","nodes":[],"statements":[{"expression":{"id":73626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":73622,"name":"groups","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73186,"src":"5018:6:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Group_$88791_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Group storage ref)"}},"id":73624,"indexExpression":{"id":73623,"name":"groupsCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73172,"src":"5025:11:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5018:19:104","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_storage","typeString":"struct IPairStorage.Group storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":73625,"name":"_group","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73614,"src":"5040:6:104","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_calldata_ptr","typeString":"struct IPairStorage.Group calldata"}},"src":"5018:28:104","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_storage","typeString":"struct IPairStorage.Group storage ref"}},"id":73627,"nodeType":"ExpressionStatement","src":"5018:28:104"},{"eventCall":{"arguments":[{"id":73630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5072:13:104","subExpression":{"id":73629,"name":"groupsCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73172,"src":"5072:11:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":73631,"name":"_group","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73614,"src":"5087:6:104","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_calldata_ptr","typeString":"struct IPairStorage.Group calldata"}},"id":73632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"name","nodeType":"MemberAccess","referencedDeclaration":88784,"src":"5087:11:104","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":73628,"name":"GroupAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88827,"src":"5061:10:104","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":73633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5061:38:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73634,"nodeType":"EmitStatement","src":"5056:43:104"}]},"documentation":{"id":73611,"nodeType":"StructuredDocumentation","src":"4829:100:104","text":" @notice Adds a new trading group.\n @param _group The new group to be added."},"functionSelector":"72fce6f0","implemented":true,"kind":"function","modifiers":[{"id":73617,"kind":"modifierInvocation","modifierName":{"id":73616,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":73233,"src":"4984:7:104"},"nodeType":"ModifierInvocation","src":"4984:7:104"},{"arguments":[{"id":73619,"name":"_group","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73614,"src":"5000:6:104","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_calldata_ptr","typeString":"struct IPairStorage.Group calldata"}}],"id":73620,"kind":"modifierInvocation","modifierName":{"id":73618,"name":"groupOk","nodeType":"IdentifierPath","referencedDeclaration":73306,"src":"4992:7:104"},"nodeType":"ModifierInvocation","src":"4992:15:104"}],"name":"addGroup","nameLocation":"4943:8:104","parameters":{"id":73615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73614,"mutability":"mutable","name":"_group","nameLocation":"4967:6:104","nodeType":"VariableDeclaration","scope":73636,"src":"4952:21:104","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_calldata_ptr","typeString":"struct IPairStorage.Group"},"typeName":{"id":73613,"nodeType":"UserDefinedTypeName","pathNode":{"id":73612,"name":"Group","nodeType":"IdentifierPath","referencedDeclaration":88791,"src":"4952:5:104"},"referencedDeclaration":88791,"src":"4952:5:104","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_storage_ptr","typeString":"struct IPairStorage.Group"}},"visibility":"internal"}],"src":"4951:23:104"},"returnParameters":{"id":73621,"nodeType":"ParameterList","parameters":[],"src":"5008:0:104"},"scope":74450,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":73664,"nodeType":"FunctionDefinition","src":"5272:173:104","nodes":[],"body":{"id":73663,"nodeType":"Block","src":"5376:69:104","nodes":[],"statements":[{"expression":{"id":73657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":73653,"name":"groups","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73186,"src":"5386:6:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Group_$88791_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Group storage ref)"}},"id":73655,"indexExpression":{"id":73654,"name":"_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73639,"src":"5393:3:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5386:11:104","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_storage","typeString":"struct IPairStorage.Group storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":73656,"name":"_group","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73642,"src":"5400:6:104","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_calldata_ptr","typeString":"struct IPairStorage.Group calldata"}},"src":"5386:20:104","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_storage","typeString":"struct IPairStorage.Group storage ref"}},"id":73658,"nodeType":"ExpressionStatement","src":"5386:20:104"},{"eventCall":{"arguments":[{"id":73660,"name":"_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73639,"src":"5434:3:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":73659,"name":"GroupUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88831,"src":"5421:12:104","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":73661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5421:17:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73662,"nodeType":"EmitStatement","src":"5416:22:104"}]},"documentation":{"id":73637,"nodeType":"StructuredDocumentation","src":"5112:155:104","text":" @notice Updates an existing trading group.\n @param _id The ID of the group to be updated.\n @param _group The new group data."},"functionSelector":"5a3e32e0","implemented":true,"kind":"function","modifiers":[{"id":73645,"kind":"modifierInvocation","modifierName":{"id":73644,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":73233,"src":"5335:7:104"},"nodeType":"ModifierInvocation","src":"5335:7:104"},{"arguments":[{"id":73647,"name":"_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73639,"src":"5355:3:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":73648,"kind":"modifierInvocation","modifierName":{"id":73646,"name":"groupListed","nodeType":"IdentifierPath","referencedDeclaration":73249,"src":"5343:11:104"},"nodeType":"ModifierInvocation","src":"5343:16:104"},{"arguments":[{"id":73650,"name":"_group","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73642,"src":"5368:6:104","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_calldata_ptr","typeString":"struct IPairStorage.Group calldata"}}],"id":73651,"kind":"modifierInvocation","modifierName":{"id":73649,"name":"groupOk","nodeType":"IdentifierPath","referencedDeclaration":73306,"src":"5360:7:104"},"nodeType":"ModifierInvocation","src":"5360:15:104"}],"name":"updateGroup","nameLocation":"5281:11:104","parameters":{"id":73643,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73639,"mutability":"mutable","name":"_id","nameLocation":"5298:3:104","nodeType":"VariableDeclaration","scope":73664,"src":"5293:8:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73638,"name":"uint","nodeType":"ElementaryTypeName","src":"5293:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":73642,"mutability":"mutable","name":"_group","nameLocation":"5318:6:104","nodeType":"VariableDeclaration","scope":73664,"src":"5303:21:104","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_calldata_ptr","typeString":"struct IPairStorage.Group"},"typeName":{"id":73641,"nodeType":"UserDefinedTypeName","pathNode":{"id":73640,"name":"Group","nodeType":"IdentifierPath","referencedDeclaration":88791,"src":"5303:5:104"},"referencedDeclaration":88791,"src":"5303:5:104","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_storage_ptr","typeString":"struct IPairStorage.Group"}},"visibility":"internal"}],"src":"5292:33:104"},"returnParameters":{"id":73652,"nodeType":"ParameterList","parameters":[],"src":"5376:0:104"},"scope":74450,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":73690,"nodeType":"FunctionDefinition","src":"5553:150:104","nodes":[],"body":{"id":73689,"nodeType":"Block","src":"5617:86:104","nodes":[],"statements":[{"expression":{"id":73680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":73676,"name":"fees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73191,"src":"5627:4:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Fee_$88802_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Fee storage ref)"}},"id":73678,"indexExpression":{"id":73677,"name":"feesCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73174,"src":"5632:9:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5627:15:104","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_storage","typeString":"struct IPairStorage.Fee storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":73679,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73668,"src":"5645:4:104","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_calldata_ptr","typeString":"struct IPairStorage.Fee calldata"}},"src":"5627:22:104","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_storage","typeString":"struct IPairStorage.Fee storage ref"}},"id":73681,"nodeType":"ExpressionStatement","src":"5627:22:104"},{"eventCall":{"arguments":[{"id":73684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5673:11:104","subExpression":{"id":73683,"name":"feesCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73174,"src":"5673:9:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":73685,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73668,"src":"5686:4:104","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_calldata_ptr","typeString":"struct IPairStorage.Fee calldata"}},"id":73686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"name","nodeType":"MemberAccess","referencedDeclaration":88793,"src":"5686:9:104","typeDescriptions":{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"id":73682,"name":"FeeAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88837,"src":"5664:8:104","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$","typeString":"function (uint256,string memory)"}},"id":73687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5664:32:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73688,"nodeType":"EmitStatement","src":"5659:37:104"}]},"documentation":{"id":73665,"nodeType":"StructuredDocumentation","src":"5451:97:104","text":" @notice Adds a new fee structure.\n @param _fee The Fee structure to add."},"functionSelector":"7f684baf","implemented":true,"kind":"function","modifiers":[{"id":73671,"kind":"modifierInvocation","modifierName":{"id":73670,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":73233,"src":"5597:7:104"},"nodeType":"ModifierInvocation","src":"5597:7:104"},{"arguments":[{"id":73673,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73668,"src":"5611:4:104","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_calldata_ptr","typeString":"struct IPairStorage.Fee calldata"}}],"id":73674,"kind":"modifierInvocation","modifierName":{"id":73672,"name":"feeOk","nodeType":"IdentifierPath","referencedDeclaration":73336,"src":"5605:5:104"},"nodeType":"ModifierInvocation","src":"5605:11:104"}],"name":"addFee","nameLocation":"5562:6:104","parameters":{"id":73669,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73668,"mutability":"mutable","name":"_fee","nameLocation":"5582:4:104","nodeType":"VariableDeclaration","scope":73690,"src":"5569:17:104","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_calldata_ptr","typeString":"struct IPairStorage.Fee"},"typeName":{"id":73667,"nodeType":"UserDefinedTypeName","pathNode":{"id":73666,"name":"Fee","nodeType":"IdentifierPath","referencedDeclaration":88802,"src":"5569:3:104"},"referencedDeclaration":88802,"src":"5569:3:104","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_storage_ptr","typeString":"struct IPairStorage.Fee"}},"visibility":"internal"}],"src":"5568:19:104"},"returnParameters":{"id":73675,"nodeType":"ParameterList","parameters":[],"src":"5617:0:104"},"scope":74450,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":73718,"nodeType":"FunctionDefinition","src":"5874:155:104","nodes":[],"body":{"id":73717,"nodeType":"Block","src":"5966:63:104","nodes":[],"statements":[{"expression":{"id":73711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":73707,"name":"fees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73191,"src":"5976:4:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Fee_$88802_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Fee storage ref)"}},"id":73709,"indexExpression":{"id":73708,"name":"_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73693,"src":"5981:3:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5976:9:104","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_storage","typeString":"struct IPairStorage.Fee storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":73710,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73696,"src":"5988:4:104","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_calldata_ptr","typeString":"struct IPairStorage.Fee calldata"}},"src":"5976:16:104","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_storage","typeString":"struct IPairStorage.Fee storage ref"}},"id":73712,"nodeType":"ExpressionStatement","src":"5976:16:104"},{"eventCall":{"arguments":[{"id":73714,"name":"_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73693,"src":"6018:3:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":73713,"name":"FeeUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88841,"src":"6007:10:104","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":73715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6007:15:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73716,"nodeType":"EmitStatement","src":"6002:20:104"}]},"documentation":{"id":73691,"nodeType":"StructuredDocumentation","src":"5709:160:104","text":" @notice Updates an existing fee structure.\n @param _id The ID of the fee structure to update.\n @param _fee The new Fee structure."},"functionSelector":"9a7c200e","implemented":true,"kind":"function","modifiers":[{"id":73699,"kind":"modifierInvocation","modifierName":{"id":73698,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":73233,"src":"5931:7:104"},"nodeType":"ModifierInvocation","src":"5931:7:104"},{"arguments":[{"id":73701,"name":"_id","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73693,"src":"5949:3:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":73702,"kind":"modifierInvocation","modifierName":{"id":73700,"name":"feeListed","nodeType":"IdentifierPath","referencedDeclaration":73265,"src":"5939:9:104"},"nodeType":"ModifierInvocation","src":"5939:14:104"},{"arguments":[{"id":73704,"name":"_fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73696,"src":"5960:4:104","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_calldata_ptr","typeString":"struct IPairStorage.Fee calldata"}}],"id":73705,"kind":"modifierInvocation","modifierName":{"id":73703,"name":"feeOk","nodeType":"IdentifierPath","referencedDeclaration":73336,"src":"5954:5:104"},"nodeType":"ModifierInvocation","src":"5954:11:104"}],"name":"updateFee","nameLocation":"5883:9:104","parameters":{"id":73697,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73693,"mutability":"mutable","name":"_id","nameLocation":"5898:3:104","nodeType":"VariableDeclaration","scope":73718,"src":"5893:8:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73692,"name":"uint","nodeType":"ElementaryTypeName","src":"5893:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":73696,"mutability":"mutable","name":"_fee","nameLocation":"5916:4:104","nodeType":"VariableDeclaration","scope":73718,"src":"5903:17:104","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_calldata_ptr","typeString":"struct IPairStorage.Fee"},"typeName":{"id":73695,"nodeType":"UserDefinedTypeName","pathNode":{"id":73694,"name":"Fee","nodeType":"IdentifierPath","referencedDeclaration":88802,"src":"5903:3:104"},"referencedDeclaration":88802,"src":"5903:3:104","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_storage_ptr","typeString":"struct IPairStorage.Fee"}},"visibility":"internal"}],"src":"5892:29:104"},"returnParameters":{"id":73706,"nodeType":"ParameterList","parameters":[],"src":"5966:0:104"},"scope":74450,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":73767,"nodeType":"FunctionDefinition","src":"6212:339:104","nodes":[],"body":{"id":73766,"nodeType":"Block","src":"6307:244:104","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":73731,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73722,"src":"6326:10:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":73732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6326:17:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":73733,"name":"_limits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73725,"src":"6347:7:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":73734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6347:14:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6326:35:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4c454e5f4d49534d41544348","id":73736,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6363:14:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_4cc0f5f12e8fefb5c623b4f6780c489e721c45a96d5e1db03c834150505b587a","typeString":"literal_string \"LEN_MISMATCH\""},"value":"LEN_MISMATCH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4cc0f5f12e8fefb5c623b4f6780c489e721c45a96d5e1db03c834150505b587a","typeString":"literal_string \"LEN_MISMATCH\""}],"id":73730,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6318:7:104","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":73737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6318:60:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73738,"nodeType":"ExpressionStatement","src":"6318:60:104"},{"body":{"id":73759,"nodeType":"Block","src":"6427:65:104","statements":[{"expression":{"id":73757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":73749,"name":"blockOILimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73219,"src":"6441:12:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":73753,"indexExpression":{"baseExpression":{"id":73750,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73722,"src":"6454:10:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":73752,"indexExpression":{"id":73751,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73740,"src":"6465:1:104","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6454:13:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6441:27:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":73754,"name":"_limits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73725,"src":"6471:7:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":73756,"indexExpression":{"id":73755,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73740,"src":"6479:1:104","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6471:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6441:40:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73758,"nodeType":"ExpressionStatement","src":"6441:40:104"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":73742,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73740,"src":"6401:1:104","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":73743,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73722,"src":"6404:10:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":73744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"6404:17:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6401:20:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":73760,"initializationExpression":{"assignments":[73740],"declarations":[{"constant":false,"id":73740,"mutability":"mutable","name":"i","nameLocation":"6398:1:104","nodeType":"VariableDeclaration","scope":73760,"src":"6392:7:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":73739,"name":"uint8","nodeType":"ElementaryTypeName","src":"6392:5:104","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":73741,"nodeType":"VariableDeclarationStatement","src":"6392:7:104"},"loopExpression":{"expression":{"id":73747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6423:3:104","subExpression":{"id":73746,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73740,"src":"6425:1:104","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":73748,"nodeType":"ExpressionStatement","src":"6423:3:104"},"nodeType":"ForStatement","src":"6388:104:104"},{"eventCall":{"arguments":[{"id":73762,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73722,"src":"6524:10:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},{"id":73763,"name":"_limits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73725,"src":"6536:7:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"},{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}],"id":73761,"name":"BlockOILimitsSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88867,"src":"6507:16:104","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (uint256[] memory,uint256[] memory)"}},"id":73764,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6507:37:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73765,"nodeType":"EmitStatement","src":"6502:42:104"}]},"documentation":{"id":73719,"nodeType":"StructuredDocumentation","src":"6035:172:104","text":" @notice Updates per block OI limit\n @param _pairIndex Array of pair Indexes to update Limits for\n @param _limits Value of per block OI limits"},"functionSelector":"10ed4088","implemented":true,"kind":"function","modifiers":[{"id":73728,"kind":"modifierInvocation","modifierName":{"id":73727,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":73233,"src":"6300:7:104"},"nodeType":"ModifierInvocation","src":"6300:7:104"}],"name":"setBlockOILImits","nameLocation":"6221:16:104","parameters":{"id":73726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73722,"mutability":"mutable","name":"_pairIndex","nameLocation":"6254:10:104","nodeType":"VariableDeclaration","scope":73767,"src":"6238:26:104","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":73720,"name":"uint","nodeType":"ElementaryTypeName","src":"6238:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73721,"nodeType":"ArrayTypeName","src":"6238:6:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":73725,"mutability":"mutable","name":"_limits","nameLocation":"6282:7:104","nodeType":"VariableDeclaration","scope":73767,"src":"6266:23:104","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":73723,"name":"uint","nodeType":"ElementaryTypeName","src":"6266:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73724,"nodeType":"ArrayTypeName","src":"6266:6:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"6237:53:104"},"returnParameters":{"id":73729,"nodeType":"ParameterList","parameters":[],"src":"6307:0:104"},"scope":74450,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":73838,"nodeType":"FunctionDefinition","src":"6899:442:104","nodes":[],"body":{"id":73837,"nodeType":"Block","src":"6999:342:104","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":73786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":73781,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7017:3:104","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7017:10:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":73783,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73149,"src":"7031:8:104","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":73784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"callbacks","nodeType":"MemberAccess","referencedDeclaration":89608,"src":"7031:18:104","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":73785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7031:20:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7017:34:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"43414c4c4241434b535f4f4e4c59","id":73787,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7053:16:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_12ba7eba217b30610e39522a921cb37ebbb89731fadc9f437697a5d1b44bbbe3","typeString":"literal_string \"CALLBACKS_ONLY\""},"value":"CALLBACKS_ONLY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12ba7eba217b30610e39522a921cb37ebbb89731fadc9f437697a5d1b44bbbe3","typeString":"literal_string \"CALLBACKS_ONLY\""}],"id":73780,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7009:7:104","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":73788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7009:61:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73789,"nodeType":"ExpressionStatement","src":"7009:61:104"},{"assignments":[73795],"declarations":[{"constant":false,"id":73795,"mutability":"mutable","name":"oi","nameLocation":"7097:2:104","nodeType":"VariableDeclaration","scope":73837,"src":"7081:18:104","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"},"typeName":{"baseType":{"id":73793,"name":"uint","nodeType":"ElementaryTypeName","src":"7081:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73794,"length":{"hexValue":"32","id":73792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7086:1:104","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"ArrayTypeName","src":"7081:7:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2]"}},"visibility":"internal"}],"id":73802,"initialValue":{"baseExpression":{"id":73796,"name":"groupOIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73203,"src":"7102:8:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_uint256_$2_storage_$","typeString":"mapping(uint256 => uint256[2] storage ref)"}},"id":73801,"indexExpression":{"expression":{"baseExpression":{"id":73797,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"7111:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":73799,"indexExpression":{"id":73798,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73770,"src":"7117:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7111:17:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"id":73800,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"groupIndex","nodeType":"MemberAccess","referencedDeclaration":88775,"src":"7111:28:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7102:38:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage","typeString":"uint256[2] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"7081:59:104"},{"assignments":[73804],"declarations":[{"constant":false,"id":73804,"mutability":"mutable","name":"index","nameLocation":"7155:5:104","nodeType":"VariableDeclaration","scope":73837,"src":"7150:10:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73803,"name":"uint","nodeType":"ElementaryTypeName","src":"7150:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":73809,"initialValue":{"condition":{"id":73805,"name":"_long","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73774,"src":"7163:5:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"31","id":73807,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7175:1:104","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"id":73808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7163:13:104","trueExpression":{"hexValue":"30","id":73806,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7171:1:104","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"7150:26:104"},{"condition":{"id":73810,"name":"_increase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73776,"src":"7191:9:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":73835,"nodeType":"Block","src":"7253:82:104","statements":[{"expression":{"id":73833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":73818,"name":"oi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73795,"src":"7267:2:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2] storage pointer"}},"id":73820,"indexExpression":{"id":73819,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73804,"src":"7270:5:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7267:9:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":73821,"name":"oi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73795,"src":"7279:2:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2] storage pointer"}},"id":73823,"indexExpression":{"id":73822,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73804,"src":"7282:5:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7279:9:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":73824,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73772,"src":"7291:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7279:19:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"30","id":73831,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7323:1:104","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"id":73832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7279:45:104","trueExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":73826,"name":"oi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73795,"src":"7301:2:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2] storage pointer"}},"id":73828,"indexExpression":{"id":73827,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73804,"src":"7304:5:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7301:9:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":73829,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73772,"src":"7313:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7301:19:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7267:57:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73834,"nodeType":"ExpressionStatement","src":"7267:57:104"}]},"id":73836,"nodeType":"IfStatement","src":"7187:148:104","trueBody":{"id":73817,"nodeType":"Block","src":"7202:45:104","statements":[{"expression":{"id":73815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":73811,"name":"oi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73795,"src":"7216:2:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage_ptr","typeString":"uint256[2] storage pointer"}},"id":73813,"indexExpression":{"id":73812,"name":"index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73804,"src":"7219:5:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7216:9:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":73814,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73772,"src":"7229:7:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7216:20:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73816,"nodeType":"ExpressionStatement","src":"7216:20:104"}]}}]},"baseFunctions":[88886],"documentation":{"id":73768,"nodeType":"StructuredDocumentation","src":"6558:336:104","text":" @notice Updates the collateral open interest for a trading group.\n @param _pairIndex The index of the trading pair.\n @param _amount The amount to update the open interest by.\n @param _long Specifies if the position is long.\n @param _increase Specifies if the open interest should be increased."},"functionSelector":"4ffe8aec","implemented":true,"kind":"function","modifiers":[],"name":"updateGroupOI","nameLocation":"6908:13:104","overrides":{"id":73778,"nodeType":"OverrideSpecifier","overrides":[],"src":"6990:8:104"},"parameters":{"id":73777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73770,"mutability":"mutable","name":"_pairIndex","nameLocation":"6927:10:104","nodeType":"VariableDeclaration","scope":73838,"src":"6922:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73769,"name":"uint","nodeType":"ElementaryTypeName","src":"6922:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":73772,"mutability":"mutable","name":"_amount","nameLocation":"6944:7:104","nodeType":"VariableDeclaration","scope":73838,"src":"6939:12:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73771,"name":"uint","nodeType":"ElementaryTypeName","src":"6939:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":73774,"mutability":"mutable","name":"_long","nameLocation":"6958:5:104","nodeType":"VariableDeclaration","scope":73838,"src":"6953:10:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":73773,"name":"bool","nodeType":"ElementaryTypeName","src":"6953:4:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":73776,"mutability":"mutable","name":"_increase","nameLocation":"6970:9:104","nodeType":"VariableDeclaration","scope":73838,"src":"6965:14:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":73775,"name":"bool","nodeType":"ElementaryTypeName","src":"6965:4:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6921:59:104"},"returnParameters":{"id":73779,"nodeType":"ParameterList","parameters":[],"src":"6999:0:104"},"scope":74450,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":73900,"nodeType":"FunctionDefinition","src":"7632:521:104","nodes":[],"body":{"id":73899,"nodeType":"Block","src":"7795:358:104","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":73853,"name":"_tier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73844,"src":"7813:5:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":73854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7813:12:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":73855,"name":"_multiplierPercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73847,"src":"7829:18:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":73856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7829:25:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7813:41:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":73852,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7805:7:104","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":73858,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7805:50:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73859,"nodeType":"ExpressionStatement","src":"7805:50:104"},{"body":{"id":73891,"nodeType":"Block","src":"7902:171:104","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":73871,"name":"_multiplierPercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73847,"src":"7924:18:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":73873,"indexExpression":{"id":73872,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73861,"src":"7943:1:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7924:21:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":73874,"name":"_MAX_LOSS_REBATE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73152,"src":"7949:16:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7924:41:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5245424154455f455843454544535f4d4158","id":73876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7967:20:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_33b36c043139e62741c4360974b5ff2d881927a9402a644b49af4eb619987d23","typeString":"literal_string \"REBATE_EXCEEDS_MAX\""},"value":"REBATE_EXCEEDS_MAX"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_33b36c043139e62741c4360974b5ff2d881927a9402a644b49af4eb619987d23","typeString":"literal_string \"REBATE_EXCEEDS_MAX\""}],"id":73870,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7916:7:104","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":73877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7916:72:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73878,"nodeType":"ExpressionStatement","src":"7916:72:104"},{"expression":{"id":73889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":73879,"name":"lossProtection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73209,"src":"8002:14:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(uint256 => uint256))"}},"id":73884,"indexExpression":{"id":73880,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73841,"src":"8017:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8002:26:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":73885,"indexExpression":{"baseExpression":{"id":73881,"name":"_tier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73844,"src":"8029:5:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":73883,"indexExpression":{"id":73882,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73861,"src":"8035:1:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8029:8:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8002:36:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":73886,"name":"_multiplierPercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73847,"src":"8041:18:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":73888,"indexExpression":{"id":73887,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73861,"src":"8060:1:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8041:21:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8002:60:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73890,"nodeType":"ExpressionStatement","src":"8002:60:104"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":73866,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":73863,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73861,"src":"7879:1:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":73864,"name":"_tier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73844,"src":"7883:5:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":73865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"7883:12:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7879:16:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":73892,"initializationExpression":{"assignments":[73861],"declarations":[{"constant":false,"id":73861,"mutability":"mutable","name":"i","nameLocation":"7876:1:104","nodeType":"VariableDeclaration","scope":73892,"src":"7871:6:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73860,"name":"uint","nodeType":"ElementaryTypeName","src":"7871:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":73862,"nodeType":"VariableDeclarationStatement","src":"7871:6:104"},"loopExpression":{"expression":{"id":73868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"7897:3:104","subExpression":{"id":73867,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73861,"src":"7899:1:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73869,"nodeType":"ExpressionStatement","src":"7897:3:104"},"nodeType":"ForStatement","src":"7866:207:104"},{"eventCall":{"arguments":[{"id":73894,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73841,"src":"8108:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":73895,"name":"_tier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73844,"src":"8120:5:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},{"id":73896,"name":"_multiplierPercent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73847,"src":"8127:18:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"},{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}],"id":73893,"name":"LossProtectionAdded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":88859,"src":"8088:19:104","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$","typeString":"function (uint256,uint256[] memory,uint256[] memory)"}},"id":73897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8088:58:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73898,"nodeType":"EmitStatement","src":"8083:63:104"}]},"documentation":{"id":73839,"nodeType":"StructuredDocumentation","src":"7347:280:104","text":" @notice Updates the loss protection multiplier for a given trading pair.\n @param _pairIndex The index of the trading pair.\n @param _tier The tiers for the loss protection.\n @param _multiplierPercent The corresponding multipliers for each tier."},"functionSelector":"9586621f","implemented":true,"kind":"function","modifiers":[{"id":73850,"kind":"modifierInvocation","modifierName":{"id":73849,"name":"onlyGov","nodeType":"IdentifierPath","referencedDeclaration":73233,"src":"7787:7:104"},"nodeType":"ModifierInvocation","src":"7787:7:104"}],"name":"updateLossProtectionMultiplier","nameLocation":"7641:30:104","parameters":{"id":73848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73841,"mutability":"mutable","name":"_pairIndex","nameLocation":"7686:10:104","nodeType":"VariableDeclaration","scope":73900,"src":"7681:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73840,"name":"uint","nodeType":"ElementaryTypeName","src":"7681:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":73844,"mutability":"mutable","name":"_tier","nameLocation":"7722:5:104","nodeType":"VariableDeclaration","scope":73900,"src":"7706:21:104","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":73842,"name":"uint","nodeType":"ElementaryTypeName","src":"7706:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73843,"nodeType":"ArrayTypeName","src":"7706:6:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":73847,"mutability":"mutable","name":"_multiplierPercent","nameLocation":"7753:18:104","nodeType":"VariableDeclaration","scope":73900,"src":"7737:34:104","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":73845,"name":"uint","nodeType":"ElementaryTypeName","src":"7737:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":73846,"nodeType":"ArrayTypeName","src":"7737:6:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"7671:106:104"},"returnParameters":{"id":73851,"nodeType":"ParameterList","parameters":[],"src":"7795:0:104"},"scope":74450,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":73963,"nodeType":"FunctionDefinition","src":"8354:403:104","nodes":[],"body":{"id":73962,"nodeType":"Block","src":"8469:288:104","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":73926,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":73918,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8487:3:104","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":73919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"8487:10:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":73922,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73149,"src":"8509:8:104","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":73923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"priceAggregator","nodeType":"MemberAccess","referencedDeclaration":89592,"src":"8509:24:104","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IPriceAggregator_$89248_$","typeString":"function () view external returns (contract IPriceAggregator)"}},"id":73924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8509:26:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IPriceAggregator_$89248","typeString":"contract IPriceAggregator"}],"id":73921,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8501:7:104","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":73920,"name":"address","nodeType":"ElementaryTypeName","src":"8501:7:104","typeDescriptions":{}}},"id":73925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8501:35:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8487:49:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"41474752454741544f525f4f4e4c59","id":73927,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8538:17:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_a8d166d9e0c691ae9ea32095c75d11e51ece2bc722304c7f579b972b5a6a4cb6","typeString":"literal_string \"AGGREGATOR_ONLY\""},"value":"AGGREGATOR_ONLY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a8d166d9e0c691ae9ea32095c75d11e51ece2bc722304c7f579b972b5a6a4cb6","typeString":"literal_string \"AGGREGATOR_ONLY\""}],"id":73917,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8479:7:104","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":73928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8479:77:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73929,"nodeType":"ExpressionStatement","src":"8479:77:104"},{"assignments":[73932],"declarations":[{"constant":false,"id":73932,"mutability":"mutable","name":"p","nameLocation":"8579:1:104","nodeType":"VariableDeclaration","scope":73962,"src":"8567:13:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_memory_ptr","typeString":"struct IPairStorage.Pair"},"typeName":{"id":73931,"nodeType":"UserDefinedTypeName","pathNode":{"id":73930,"name":"Pair","nodeType":"IdentifierPath","referencedDeclaration":88782,"src":"8567:4:104"},"referencedDeclaration":88782,"src":"8567:4:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage_ptr","typeString":"struct IPairStorage.Pair"}},"visibility":"internal"}],"id":73936,"initialValue":{"baseExpression":{"id":73933,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"8583:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":73935,"indexExpression":{"id":73934,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73903,"src":"8589:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8583:17:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"nodeType":"VariableDeclarationStatement","src":"8567:33:104"},{"expression":{"arguments":[{"baseExpression":{"baseExpression":{"id":73938,"name":"isPairListed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73197,"src":"8618:12:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_mapping$_t_string_memory_ptr_$_t_bool_$_$","typeString":"mapping(string memory => mapping(string memory => bool))"}},"id":73941,"indexExpression":{"expression":{"id":73939,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73932,"src":"8631:1:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_memory_ptr","typeString":"struct IPairStorage.Pair memory"}},"id":73940,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"from","nodeType":"MemberAccess","referencedDeclaration":88759,"src":"8631:6:104","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8618:20:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_string_memory_ptr_$_t_bool_$","typeString":"mapping(string memory => bool)"}},"id":73944,"indexExpression":{"expression":{"id":73942,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73932,"src":"8639:1:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_memory_ptr","typeString":"struct IPairStorage.Pair memory"}},"id":73943,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"to","nodeType":"MemberAccess","referencedDeclaration":88761,"src":"8639:4:104","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8618:26:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"504149525f4e4f545f4c4953544544","id":73945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8646:17:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_d2aae471f4e3bb111f7953ed80c649ca8362f83334e0cbb3b3e94edfbf685add","typeString":"literal_string \"PAIR_NOT_LISTED\""},"value":"PAIR_NOT_LISTED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d2aae471f4e3bb111f7953ed80c649ca8362f83334e0cbb3b3e94edfbf685add","typeString":"literal_string \"PAIR_NOT_LISTED\""}],"id":73937,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8610:7:104","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":73946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8610:54:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":73947,"nodeType":"ExpressionStatement","src":"8610:54:104"},{"expression":{"components":[{"expression":{"id":73948,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73932,"src":"8683:1:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_memory_ptr","typeString":"struct IPairStorage.Pair memory"}},"id":73949,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"from","nodeType":"MemberAccess","referencedDeclaration":88759,"src":"8683:6:104","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":73950,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73932,"src":"8691:1:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_memory_ptr","typeString":"struct IPairStorage.Pair memory"}},"id":73951,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"to","nodeType":"MemberAccess","referencedDeclaration":88761,"src":"8691:4:104","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"expression":{"id":73952,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73932,"src":"8697:1:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_memory_ptr","typeString":"struct IPairStorage.Pair memory"}},"id":73953,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feed","nodeType":"MemberAccess","referencedDeclaration":88764,"src":"8697:6:104","typeDescriptions":{"typeIdentifier":"t_struct$_Feed_$88752_memory_ptr","typeString":"struct IPairStorage.Feed memory"}},"id":73954,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feedId","nodeType":"MemberAccess","referencedDeclaration":88751,"src":"8697:13:104","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"expression":{"id":73955,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73932,"src":"8712:1:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_memory_ptr","typeString":"struct IPairStorage.Pair memory"}},"id":73956,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"backupFeed","nodeType":"MemberAccess","referencedDeclaration":88767,"src":"8712:12:104","typeDescriptions":{"typeIdentifier":"t_struct$_BackupFeed_$88757_memory_ptr","typeString":"struct IPairStorage.BackupFeed memory"}},"id":73957,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feedId","nodeType":"MemberAccess","referencedDeclaration":88756,"src":"8712:19:104","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":73959,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"8733:16:104","subExpression":{"id":73958,"name":"currentOrderId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73167,"src":"8733:14:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":73960,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8682:68:104","typeDescriptions":{"typeIdentifier":"t_tuple$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_bytes32_$_t_address_$_t_uint256_$","typeString":"tuple(string memory,string memory,bytes32,address,uint256)"}},"functionReturnParameters":73916,"id":73961,"nodeType":"Return","src":"8675:75:104"}]},"baseFunctions":[88901],"documentation":{"id":73901,"nodeType":"StructuredDocumentation","src":"8159:190:104","text":" @notice Fetches relevant information for an order.\n @param _pairIndex The index of the trading pair.\n @return A tuple containing the feed IDs and the order ID."},"functionSelector":"302f81fc","implemented":true,"kind":"function","modifiers":[],"name":"pairJob","nameLocation":"8363:7:104","overrides":{"id":73905,"nodeType":"OverrideSpecifier","overrides":[],"src":"8397:8:104"},"parameters":{"id":73904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73903,"mutability":"mutable","name":"_pairIndex","nameLocation":"8376:10:104","nodeType":"VariableDeclaration","scope":73963,"src":"8371:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73902,"name":"uint","nodeType":"ElementaryTypeName","src":"8371:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8370:17:104"},"returnParameters":{"id":73916,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73907,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":73963,"src":"8415:13:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":73906,"name":"string","nodeType":"ElementaryTypeName","src":"8415:6:104","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":73909,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":73963,"src":"8430:13:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":73908,"name":"string","nodeType":"ElementaryTypeName","src":"8430:6:104","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":73911,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":73963,"src":"8445:7:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":73910,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8445:7:104","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":73913,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":73963,"src":"8454:7:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":73912,"name":"address","nodeType":"ElementaryTypeName","src":"8454:7:104","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":73915,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":73963,"src":"8463:4:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73914,"name":"uint","nodeType":"ElementaryTypeName","src":"8463:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8414:54:104"},"scope":74450,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":73979,"nodeType":"FunctionDefinition","src":"8971:126:104","nodes":[],"body":{"id":73978,"nodeType":"Block","src":"9051:46:104","nodes":[],"statements":[{"expression":{"expression":{"baseExpression":{"id":73973,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"9068:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":73975,"indexExpression":{"id":73974,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73966,"src":"9074:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9068:17:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"id":73976,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feed","nodeType":"MemberAccess","referencedDeclaration":88764,"src":"9068:22:104","typeDescriptions":{"typeIdentifier":"t_struct$_Feed_$88752_storage","typeString":"struct IPairStorage.Feed storage ref"}},"functionReturnParameters":73972,"id":73977,"nodeType":"Return","src":"9061:29:104"}]},"baseFunctions":[88916],"documentation":{"id":73964,"nodeType":"StructuredDocumentation","src":"8763:203:104","text":" @notice Get the Pyth feed information of a trading pair.\n @param _pairIndex The index of the trading pair.\n @return Feed memory object containing feed related information."},"functionSelector":"1eaa005c","implemented":true,"kind":"function","modifiers":[],"name":"pairFeed","nameLocation":"8980:8:104","overrides":{"id":73968,"nodeType":"OverrideSpecifier","overrides":[],"src":"9020:8:104"},"parameters":{"id":73967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73966,"mutability":"mutable","name":"_pairIndex","nameLocation":"8994:10:104","nodeType":"VariableDeclaration","scope":73979,"src":"8989:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73965,"name":"uint","nodeType":"ElementaryTypeName","src":"8989:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8988:17:104"},"returnParameters":{"id":73972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":73979,"src":"9038:11:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Feed_$88752_memory_ptr","typeString":"struct IPairStorage.Feed"},"typeName":{"id":73970,"nodeType":"UserDefinedTypeName","pathNode":{"id":73969,"name":"Feed","nodeType":"IdentifierPath","referencedDeclaration":88752,"src":"9038:4:104"},"referencedDeclaration":88752,"src":"9038:4:104","typeDescriptions":{"typeIdentifier":"t_struct$_Feed_$88752_storage_ptr","typeString":"struct IPairStorage.Feed"}},"visibility":"internal"}],"src":"9037:13:104"},"scope":74450,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":73995,"nodeType":"FunctionDefinition","src":"9328:144:104","nodes":[],"body":{"id":73994,"nodeType":"Block","src":"9420:52:104","nodes":[],"statements":[{"expression":{"expression":{"baseExpression":{"id":73989,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"9437:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":73991,"indexExpression":{"id":73990,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73982,"src":"9443:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9437:17:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"id":73992,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"backupFeed","nodeType":"MemberAccess","referencedDeclaration":88767,"src":"9437:28:104","typeDescriptions":{"typeIdentifier":"t_struct$_BackupFeed_$88757_storage","typeString":"struct IPairStorage.BackupFeed storage ref"}},"functionReturnParameters":73988,"id":73993,"nodeType":"Return","src":"9430:35:104"}]},"baseFunctions":[88924],"documentation":{"id":73980,"nodeType":"StructuredDocumentation","src":"9103:220:104","text":" @notice Get the Chainlink backup feed information of a trading pair.\n @param _pairIndex The index of the trading pair.\n @return BackupFeed memory object containing backup feed information."},"functionSelector":"685e905b","implemented":true,"kind":"function","modifiers":[],"name":"pairBackupFeed","nameLocation":"9337:14:104","overrides":{"id":73984,"nodeType":"OverrideSpecifier","overrides":[],"src":"9383:8:104"},"parameters":{"id":73983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73982,"mutability":"mutable","name":"_pairIndex","nameLocation":"9357:10:104","nodeType":"VariableDeclaration","scope":73995,"src":"9352:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73981,"name":"uint","nodeType":"ElementaryTypeName","src":"9352:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9351:17:104"},"returnParameters":{"id":73988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73987,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":73995,"src":"9401:17:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_BackupFeed_$88757_memory_ptr","typeString":"struct IPairStorage.BackupFeed"},"typeName":{"id":73986,"nodeType":"UserDefinedTypeName","pathNode":{"id":73985,"name":"BackupFeed","nodeType":"IdentifierPath","referencedDeclaration":88757,"src":"9401:10:104"},"referencedDeclaration":88757,"src":"9401:10:104","typeDescriptions":{"typeIdentifier":"t_struct$_BackupFeed_$88757_storage_ptr","typeString":"struct IPairStorage.BackupFeed"}},"visibility":"internal"}],"src":"9400:19:104"},"scope":74450,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":74010,"nodeType":"FunctionDefinition","src":"9649:125:104","nodes":[],"body":{"id":74009,"nodeType":"Block","src":"9725:49:104","nodes":[],"statements":[{"expression":{"expression":{"baseExpression":{"id":74004,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"9742:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":74006,"indexExpression":{"id":74005,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73998,"src":"9748:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9742:17:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"id":74007,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"spreadP","nodeType":"MemberAccess","referencedDeclaration":88769,"src":"9742:25:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":74003,"id":74008,"nodeType":"Return","src":"9735:32:104"}]},"baseFunctions":[88931],"documentation":{"id":73996,"nodeType":"StructuredDocumentation","src":"9478:166:104","text":" @notice Get the spread percentage of a trading pair.\n @param _pairIndex The index of the trading pair.\n @return The spread percentage."},"functionSelector":"a1d54e9b","implemented":true,"kind":"function","modifiers":[],"name":"pairSpreadP","nameLocation":"9658:11:104","overrides":{"id":74000,"nodeType":"OverrideSpecifier","overrides":[],"src":"9701:8:104"},"parameters":{"id":73999,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73998,"mutability":"mutable","name":"_pairIndex","nameLocation":"9675:10:104","nodeType":"VariableDeclaration","scope":74010,"src":"9670:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":73997,"name":"uint","nodeType":"ElementaryTypeName","src":"9670:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9669:17:104"},"returnParameters":{"id":74003,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74002,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74010,"src":"9719:4:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74001,"name":"uint","nodeType":"ElementaryTypeName","src":"9719:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9718:6:104"},"scope":74450,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":74025,"nodeType":"FunctionDefinition","src":"9953:131:104","nodes":[],"body":{"id":74024,"nodeType":"Block","src":"10032:52:104","nodes":[],"statements":[{"expression":{"expression":{"baseExpression":{"id":74019,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"10049:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":74021,"indexExpression":{"id":74020,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74013,"src":"10055:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10049:17:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"id":74022,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"groupIndex","nodeType":"MemberAccess","referencedDeclaration":88775,"src":"10049:28:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":74018,"id":74023,"nodeType":"Return","src":"10042:35:104"}]},"baseFunctions":[88908],"documentation":{"id":74011,"nodeType":"StructuredDocumentation","src":"9780:168:104","text":" @notice Get the group index to which a trading pair belongs.\n @param _pairIndex The index of the trading pair.\n @return The group index."},"functionSelector":"3c44d0a3","implemented":true,"kind":"function","modifiers":[],"name":"pairGroupIndex","nameLocation":"9962:14:104","overrides":{"id":74015,"nodeType":"OverrideSpecifier","overrides":[],"src":"10008:8:104"},"parameters":{"id":74014,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74013,"mutability":"mutable","name":"_pairIndex","nameLocation":"9982:10:104","nodeType":"VariableDeclaration","scope":74025,"src":"9977:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74012,"name":"uint","nodeType":"ElementaryTypeName","src":"9977:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9976:17:104"},"returnParameters":{"id":74018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74017,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74025,"src":"10026:4:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74016,"name":"uint","nodeType":"ElementaryTypeName","src":"10026:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10025:6:104"},"scope":74450,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":74043,"nodeType":"FunctionDefinition","src":"10270:152:104","nodes":[],"body":{"id":74042,"nodeType":"Block","src":"10350:72:104","nodes":[],"statements":[{"expression":{"expression":{"baseExpression":{"id":74034,"name":"groups","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73186,"src":"10367:6:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Group_$88791_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Group storage ref)"}},"id":74039,"indexExpression":{"expression":{"baseExpression":{"id":74035,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"10374:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":74037,"indexExpression":{"id":74036,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74028,"src":"10380:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10374:17:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"id":74038,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"groupIndex","nodeType":"MemberAccess","referencedDeclaration":88775,"src":"10374:28:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10367:36:104","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_storage","typeString":"struct IPairStorage.Group storage ref"}},"id":74040,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"minLeverage","nodeType":"MemberAccess","referencedDeclaration":88786,"src":"10367:48:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":74033,"id":74041,"nodeType":"Return","src":"10360:55:104"}]},"baseFunctions":[88938],"documentation":{"id":74026,"nodeType":"StructuredDocumentation","src":"10090:175:104","text":" @notice Get the minimum leverage available for a trading pair.\n @param _pairIndex The index of the trading pair.\n @return The minimum leverage."},"functionSelector":"59a992d0","implemented":true,"kind":"function","modifiers":[],"name":"pairMinLeverage","nameLocation":"10279:15:104","overrides":{"id":74030,"nodeType":"OverrideSpecifier","overrides":[],"src":"10326:8:104"},"parameters":{"id":74029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74028,"mutability":"mutable","name":"_pairIndex","nameLocation":"10300:10:104","nodeType":"VariableDeclaration","scope":74043,"src":"10295:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74027,"name":"uint","nodeType":"ElementaryTypeName","src":"10295:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10294:17:104"},"returnParameters":{"id":74033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74032,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74043,"src":"10344:4:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74031,"name":"uint","nodeType":"ElementaryTypeName","src":"10344:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10343:6:104"},"scope":74450,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":74061,"nodeType":"FunctionDefinition","src":"10608:152:104","nodes":[],"body":{"id":74060,"nodeType":"Block","src":"10688:72:104","nodes":[],"statements":[{"expression":{"expression":{"baseExpression":{"id":74052,"name":"groups","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73186,"src":"10705:6:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Group_$88791_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Group storage ref)"}},"id":74057,"indexExpression":{"expression":{"baseExpression":{"id":74053,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"10712:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":74055,"indexExpression":{"id":74054,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74046,"src":"10718:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10712:17:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"id":74056,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"groupIndex","nodeType":"MemberAccess","referencedDeclaration":88775,"src":"10712:28:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10705:36:104","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_storage","typeString":"struct IPairStorage.Group storage ref"}},"id":74058,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"maxLeverage","nodeType":"MemberAccess","referencedDeclaration":88788,"src":"10705:48:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":74051,"id":74059,"nodeType":"Return","src":"10698:55:104"}]},"baseFunctions":[88945],"documentation":{"id":74044,"nodeType":"StructuredDocumentation","src":"10428:175:104","text":" @notice Get the maximum leverage available for a trading pair.\n @param _pairIndex The index of the trading pair.\n @return The maximum leverage."},"functionSelector":"281b693c","implemented":true,"kind":"function","modifiers":[],"name":"pairMaxLeverage","nameLocation":"10617:15:104","overrides":{"id":74048,"nodeType":"OverrideSpecifier","overrides":[],"src":"10664:8:104"},"parameters":{"id":74047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74046,"mutability":"mutable","name":"_pairIndex","nameLocation":"10638:10:104","nodeType":"VariableDeclaration","scope":74061,"src":"10633:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74045,"name":"uint","nodeType":"ElementaryTypeName","src":"10633:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10632:17:104"},"returnParameters":{"id":74051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74050,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74061,"src":"10682:4:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74049,"name":"uint","nodeType":"ElementaryTypeName","src":"10682:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10681:6:104"},"scope":74450,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":74088,"nodeType":"FunctionDefinition","src":"10958:229:104","nodes":[],"body":{"id":74087,"nodeType":"Block","src":"11031:156:104","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":74070,"name":"groups","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73186,"src":"11061:6:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Group_$88791_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Group storage ref)"}},"id":74075,"indexExpression":{"expression":{"baseExpression":{"id":74071,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"11068:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":74073,"indexExpression":{"id":74072,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74064,"src":"11074:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11068:17:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"id":74074,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"groupIndex","nodeType":"MemberAccess","referencedDeclaration":88775,"src":"11068:28:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11061:36:104","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_storage","typeString":"struct IPairStorage.Group storage ref"}},"id":74076,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"maxOpenInterestP","nodeType":"MemberAccess","referencedDeclaration":88790,"src":"11061:53:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":74077,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73149,"src":"11117:8:104","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":74078,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"vaultManager","nodeType":"MemberAccess","referencedDeclaration":89598,"src":"11117:21:104","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_contract$_IVaultManager_$90188_$","typeString":"function () view external returns (contract IVaultManager)"}},"id":74079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11117:23:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IVaultManager_$90188","typeString":"contract IVaultManager"}},"id":74080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"currentBalanceUSDC","nodeType":"MemberAccess","referencedDeclaration":90165,"src":"11117:42:104","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":74081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11117:44:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11061:100:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":74083,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11060:102:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":74084,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11177:3:104","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"11060:120:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":74069,"id":74086,"nodeType":"Return","src":"11041:139:104"}]},"baseFunctions":[88952],"documentation":{"id":74062,"nodeType":"StructuredDocumentation","src":"10766:187:104","text":" @notice Get the maximum open interest (OI) for a group.\n @param _pairIndex The index of the trading pair.\n @return The maximum open interest for the group."},"functionSelector":"8c9a0ea4","implemented":true,"kind":"function","modifiers":[],"name":"groupMaxOI","nameLocation":"10967:10:104","overrides":{"id":74066,"nodeType":"OverrideSpecifier","overrides":[],"src":"11007:8:104"},"parameters":{"id":74065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74064,"mutability":"mutable","name":"_pairIndex","nameLocation":"10983:10:104","nodeType":"VariableDeclaration","scope":74088,"src":"10978:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74063,"name":"uint","nodeType":"ElementaryTypeName","src":"10978:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10977:17:104"},"returnParameters":{"id":74069,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74068,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74088,"src":"11025:4:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74067,"name":"uint","nodeType":"ElementaryTypeName","src":"11025:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11024:6:104"},"scope":74450,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":74110,"nodeType":"FunctionDefinition","src":"11391:175:104","nodes":[],"body":{"id":74109,"nodeType":"Block","src":"11465:101:104","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":74097,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"11483:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":74099,"indexExpression":{"id":74098,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74091,"src":"11489:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11483:17:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"id":74100,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"groupOpenInterestPecentage","nodeType":"MemberAccess","referencedDeclaration":88779,"src":"11483:44:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":74102,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74091,"src":"11541:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":74101,"name":"groupMaxOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74088,"src":"11530:10:104","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":74103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11530:22:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11483:69:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":74105,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11482:71:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":74106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11556:3:104","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"11482:77:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":74096,"id":74108,"nodeType":"Return","src":"11475:84:104"}]},"baseFunctions":[89021],"documentation":{"id":74089,"nodeType":"StructuredDocumentation","src":"11193:193:104","text":" @notice Get the maximum open interest (OI) for a trading pair.\n @param _pairIndex The index of the trading pair.\n @return The maximum open interest for the pair."},"functionSelector":"b2e1b2d6","implemented":true,"kind":"function","modifiers":[],"name":"pairMaxOI","nameLocation":"11400:9:104","overrides":{"id":74093,"nodeType":"OverrideSpecifier","overrides":[],"src":"11441:8:104"},"parameters":{"id":74092,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74091,"mutability":"mutable","name":"_pairIndex","nameLocation":"11415:10:104","nodeType":"VariableDeclaration","scope":74110,"src":"11410:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74090,"name":"uint","nodeType":"ElementaryTypeName","src":"11410:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11409:17:104"},"returnParameters":{"id":74096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74095,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74110,"src":"11459:4:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74094,"name":"uint","nodeType":"ElementaryTypeName","src":"11459:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11458:6:104"},"scope":74450,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":74138,"nodeType":"FunctionDefinition","src":"11760:179:104","nodes":[],"body":{"id":74137,"nodeType":"Block","src":"11830:109:104","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74135,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":74119,"name":"groupOIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73203,"src":"11847:8:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_uint256_$2_storage_$","typeString":"mapping(uint256 => uint256[2] storage ref)"}},"id":74124,"indexExpression":{"expression":{"baseExpression":{"id":74120,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"11856:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":74122,"indexExpression":{"id":74121,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74113,"src":"11862:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11856:17:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"id":74123,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"groupIndex","nodeType":"MemberAccess","referencedDeclaration":88775,"src":"11856:28:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11847:38:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage","typeString":"uint256[2] storage ref"}},"id":74126,"indexExpression":{"hexValue":"30","id":74125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11886:1:104","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11847:41:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"baseExpression":{"baseExpression":{"id":74127,"name":"groupOIs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73203,"src":"11891:8:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_uint256_$2_storage_$","typeString":"mapping(uint256 => uint256[2] storage ref)"}},"id":74132,"indexExpression":{"expression":{"baseExpression":{"id":74128,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"11900:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":74130,"indexExpression":{"id":74129,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74113,"src":"11906:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11900:17:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"id":74131,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"groupIndex","nodeType":"MemberAccess","referencedDeclaration":88775,"src":"11900:28:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11891:38:104","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$2_storage","typeString":"uint256[2] storage ref"}},"id":74134,"indexExpression":{"hexValue":"31","id":74133,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11930:1:104","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11891:41:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11847:85:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":74118,"id":74136,"nodeType":"Return","src":"11840:92:104"}]},"baseFunctions":[88959],"documentation":{"id":74111,"nodeType":"StructuredDocumentation","src":"11572:183:104","text":" @notice Get the total open interest (OI) for a group.\n @param _pairIndex The index of the trading pair.\n @return The total open interest for the group."},"functionSelector":"5e4f8f59","implemented":true,"kind":"function","modifiers":[],"name":"groupOI","nameLocation":"11769:7:104","overrides":{"id":74115,"nodeType":"OverrideSpecifier","overrides":[],"src":"11806:8:104"},"parameters":{"id":74114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74113,"mutability":"mutable","name":"_pairIndex","nameLocation":"11782:10:104","nodeType":"VariableDeclaration","scope":74138,"src":"11777:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74112,"name":"uint","nodeType":"ElementaryTypeName","src":"11777:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11776:17:104"},"returnParameters":{"id":74118,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74117,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74138,"src":"11824:4:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74116,"name":"uint","nodeType":"ElementaryTypeName","src":"11824:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11823:6:104"},"scope":74450,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":74156,"nodeType":"FunctionDefinition","src":"12180:158:104","nodes":[],"body":{"id":74155,"nodeType":"Block","src":"12281:57:104","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":74149,"name":"lossProtection","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73209,"src":"12298:14:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(uint256 => uint256))"}},"id":74151,"indexExpression":{"id":74150,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74141,"src":"12313:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12298:26:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":74153,"indexExpression":{"id":74152,"name":"_tier","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74143,"src":"12325:5:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12298:33:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":74148,"id":74154,"nodeType":"Return","src":"12291:40:104"}]},"baseFunctions":[89007],"documentation":{"id":74139,"nodeType":"StructuredDocumentation","src":"11945:230:104","text":" @notice Get the loss protection multiplier for a trading pair and tier.\n @param _pairIndex The index of the trading pair.\n @param _tier The tier level.\n @return The loss protection multiplier."},"functionSelector":"2b1cbe9d","implemented":true,"kind":"function","modifiers":[],"name":"lossProtectionMultiplier","nameLocation":"12189:24:104","overrides":{"id":74145,"nodeType":"OverrideSpecifier","overrides":[],"src":"12257:8:104"},"parameters":{"id":74144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74141,"mutability":"mutable","name":"_pairIndex","nameLocation":"12219:10:104","nodeType":"VariableDeclaration","scope":74156,"src":"12214:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74140,"name":"uint","nodeType":"ElementaryTypeName","src":"12214:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":74143,"mutability":"mutable","name":"_tier","nameLocation":"12236:5:104","nodeType":"VariableDeclaration","scope":74156,"src":"12231:10:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74142,"name":"uint","nodeType":"ElementaryTypeName","src":"12231:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12213:29:104"},"returnParameters":{"id":74148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74147,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74156,"src":"12275:4:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74146,"name":"uint","nodeType":"ElementaryTypeName","src":"12275:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12274:6:104"},"scope":74450,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":74173,"nodeType":"FunctionDefinition","src":"12542:156:104","nodes":[],"body":{"id":74172,"nodeType":"Block","src":"12626:72:104","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74170,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":74165,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"12643:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":74167,"indexExpression":{"id":74166,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74159,"src":"12649:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12643:17:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"id":74168,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"groupIndex","nodeType":"MemberAccess","referencedDeclaration":88775,"src":"12643:28:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":74169,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12675:1:104","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12643:33:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":74164,"id":74171,"nodeType":"Return","src":"12636:40:104"}]},"baseFunctions":[88966],"documentation":{"id":74157,"nodeType":"StructuredDocumentation","src":"12344:193:104","text":" @notice Check if guaranteed stop loss is enabled for a trading pair.\n @param _pairIndex The index of the trading pair.\n @return True if enabled, false otherwise."},"functionSelector":"24abd3fb","implemented":true,"kind":"function","modifiers":[],"name":"guaranteedSlEnabled","nameLocation":"12551:19:104","overrides":{"id":74161,"nodeType":"OverrideSpecifier","overrides":[],"src":"12602:8:104"},"parameters":{"id":74160,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74159,"mutability":"mutable","name":"_pairIndex","nameLocation":"12576:10:104","nodeType":"VariableDeclaration","scope":74173,"src":"12571:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74158,"name":"uint","nodeType":"ElementaryTypeName","src":"12571:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12570:17:104"},"returnParameters":{"id":74164,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74163,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74173,"src":"12620:4:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":74162,"name":"bool","nodeType":"ElementaryTypeName","src":"12620:4:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12619:6:104"},"scope":74450,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":74195,"nodeType":"FunctionDefinition","src":"12916:162:104","nodes":[],"body":{"id":74194,"nodeType":"Block","src":"12992:86:104","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74192,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":74183,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74176,"src":"13021:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":74182,"name":"groupMaxOI","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74088,"src":"13010:10:104","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":74184,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13010:22:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"baseExpression":{"id":74185,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"13035:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":74187,"indexExpression":{"id":74186,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74176,"src":"13041:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13035:17:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"id":74188,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"maxWalletOI","nodeType":"MemberAccess","referencedDeclaration":88781,"src":"13035:29:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13010:54:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":74190,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13009:56:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":74191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13068:3:104","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"13009:62:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":74181,"id":74193,"nodeType":"Return","src":"13002:69:104"}]},"baseFunctions":[89014],"documentation":{"id":74174,"nodeType":"StructuredDocumentation","src":"12704:207:104","text":" @notice Get the maximum open interest (OI) for a wallet in a trading pair.\n @param _pairIndex The index of the trading pair.\n @return The maximum open interest for the wallet."},"functionSelector":"56e5536c","implemented":true,"kind":"function","modifiers":[],"name":"maxWalletOI","nameLocation":"12925:11:104","overrides":{"id":74178,"nodeType":"OverrideSpecifier","overrides":[],"src":"12968:8:104"},"parameters":{"id":74177,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74176,"mutability":"mutable","name":"_pairIndex","nameLocation":"12942:10:104","nodeType":"VariableDeclaration","scope":74195,"src":"12937:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74175,"name":"uint","nodeType":"ElementaryTypeName","src":"12937:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12936:17:104"},"returnParameters":{"id":74181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74180,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74195,"src":"12986:4:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74179,"name":"uint","nodeType":"ElementaryTypeName","src":"12986:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12985:6:104"},"scope":74450,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":74293,"nodeType":"FunctionDefinition","src":"13477:804:104","nodes":[],"body":{"id":74292,"nodeType":"Block","src":"13590:691:104","nodes":[],"statements":[{"assignments":[74209],"declarations":[{"constant":false,"id":74209,"mutability":"mutable","name":"openInterestUSDCLong","nameLocation":"13605:20:104","nodeType":"VariableDeclaration","scope":74292,"src":"13600:25:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74208,"name":"uint","nodeType":"ElementaryTypeName","src":"13600:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":74215,"initialValue":{"arguments":[{"id":74212,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74198,"src":"13654:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":74213,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13666:1:104","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"expression":{"id":74210,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73149,"src":"13628:8:104","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":74211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openInterestUSDC","nodeType":"MemberAccess","referencedDeclaration":89890,"src":"13628:25:104","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view external returns (uint256)"}},"id":74214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13628:40:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13600:68:104"},{"assignments":[74217],"declarations":[{"constant":false,"id":74217,"mutability":"mutable","name":"openInterestUSDCShort","nameLocation":"13683:21:104","nodeType":"VariableDeclaration","scope":74292,"src":"13678:26:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74216,"name":"uint","nodeType":"ElementaryTypeName","src":"13678:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":74223,"initialValue":{"arguments":[{"id":74220,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74198,"src":"13733:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"31","id":74221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13745:1:104","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"expression":{"id":74218,"name":"storageT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73149,"src":"13707:8:104","typeDescriptions":{"typeIdentifier":"t_contract$_ITradingStorage_$89943","typeString":"contract ITradingStorage"}},"id":74219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"openInterestUSDC","nodeType":"MemberAccess","referencedDeclaration":89890,"src":"13707:25:104","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) view external returns (uint256)"}},"id":74222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13707:40:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13678:69:104"},{"condition":{"id":74224,"name":"_buy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74202,"src":"13762:4:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":74234,"nodeType":"Block","src":"13841:68:104","statements":[{"expression":{"id":74232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74230,"name":"openInterestUSDCShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74217,"src":"13855:21:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":74231,"name":"_leveragedPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74200,"src":"13880:18:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13855:43:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":74233,"nodeType":"ExpressionStatement","src":"13855:43:104"}]},"id":74235,"nodeType":"IfStatement","src":"13758:151:104","trueBody":{"id":74229,"nodeType":"Block","src":"13768:67:104","statements":[{"expression":{"id":74227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74225,"name":"openInterestUSDCLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74209,"src":"13782:20:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":74226,"name":"_leveragedPosition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74200,"src":"13806:18:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13782:42:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":74228,"nodeType":"ExpressionStatement","src":"13782:42:104"}]}},{"assignments":[74237],"declarations":[{"constant":false,"id":74237,"mutability":"mutable","name":"openInterestPct","nameLocation":"13924:15:104","nodeType":"VariableDeclaration","scope":74292,"src":"13919:20:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74236,"name":"uint","nodeType":"ElementaryTypeName","src":"13919:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":74251,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"313030","id":74238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13943:3:104","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"condition":{"id":74239,"name":"_buy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74202,"src":"13950:4:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":74241,"name":"openInterestUSDCLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74209,"src":"13981:20:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":74242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"13950:51:104","trueExpression":{"id":74240,"name":"openInterestUSDCShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74217,"src":"13957:21:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":74243,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13949:53:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13943:59:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":74245,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13942:61:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74248,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74246,"name":"openInterestUSDCLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74209,"src":"14019:20:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":74247,"name":"openInterestUSDCShort","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74217,"src":"14042:21:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14019:44:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":74249,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14018:46:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13942:122:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13919:145:104"},{"assignments":[74254],"declarations":[{"constant":false,"id":74254,"mutability":"mutable","name":"skewFee","nameLocation":"14089:7:104","nodeType":"VariableDeclaration","scope":74292,"src":"14074:22:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SkewFee_$88809_memory_ptr","typeString":"struct IPairStorage.SkewFee"},"typeName":{"id":74253,"nodeType":"UserDefinedTypeName","pathNode":{"id":74252,"name":"SkewFee","nodeType":"IdentifierPath","referencedDeclaration":88809,"src":"14074:7:104"},"referencedDeclaration":88809,"src":"14074:7:104","typeDescriptions":{"typeIdentifier":"t_struct$_SkewFee_$88809_storage_ptr","typeString":"struct IPairStorage.SkewFee"}},"visibility":"internal"}],"id":74258,"initialValue":{"baseExpression":{"id":74255,"name":"skewFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73214,"src":"14099:8:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SkewFee_$88809_storage_$","typeString":"mapping(uint256 => struct IPairStorage.SkewFee storage ref)"}},"id":74257,"indexExpression":{"id":74256,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74198,"src":"14108:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14099:20:104","typeDescriptions":{"typeIdentifier":"t_struct$_SkewFee_$88809_storage","typeString":"struct IPairStorage.SkewFee storage ref"}},"nodeType":"VariableDeclarationStatement","src":"14074:45:104"},{"assignments":[74260],"declarations":[{"constant":false,"id":74260,"mutability":"mutable","name":"box","nameLocation":"14135:3:104","nodeType":"VariableDeclaration","scope":74292,"src":"14130:8:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74259,"name":"uint","nodeType":"ElementaryTypeName","src":"14130:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":74264,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74261,"name":"openInterestPct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74237,"src":"14141:15:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130","id":74262,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14157:2:104","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"14141:18:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14130:29:104"},{"expression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74287,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":74284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":74277,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"expression":{"id":74267,"name":"skewFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74254,"src":"14182:7:104","typeDescriptions":{"typeIdentifier":"t_struct$_SkewFee_$88809_memory_ptr","typeString":"struct IPairStorage.SkewFee memory"}},"id":74268,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"eqParams","nodeType":"MemberAccess","referencedDeclaration":88808,"src":"14182:16:104","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_int256_$2_memory_ptr_$10_memory_ptr","typeString":"int256[2] memory[10] memory"}},"id":74270,"indexExpression":{"id":74269,"name":"box","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74260,"src":"14199:3:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14182:21:104","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$2_memory_ptr","typeString":"int256[2] memory"}},"id":74272,"indexExpression":{"hexValue":"30","id":74271,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14204:1:104","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14182:24:104","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":74275,"name":"openInterestPct","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74237,"src":"14211:15:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":74274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14207:3:104","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":74273,"name":"int","nodeType":"ElementaryTypeName","src":"14207:3:104","typeDescriptions":{}}},"id":74276,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14207:20:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14182:45:104","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"baseExpression":{"baseExpression":{"expression":{"id":74278,"name":"skewFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74254,"src":"14230:7:104","typeDescriptions":{"typeIdentifier":"t_struct$_SkewFee_$88809_memory_ptr","typeString":"struct IPairStorage.SkewFee memory"}},"id":74279,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"eqParams","nodeType":"MemberAccess","referencedDeclaration":88808,"src":"14230:16:104","typeDescriptions":{"typeIdentifier":"t_array$_t_array$_t_int256_$2_memory_ptr_$10_memory_ptr","typeString":"int256[2] memory[10] memory"}},"id":74281,"indexExpression":{"id":74280,"name":"box","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74260,"src":"14247:3:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14230:21:104","typeDescriptions":{"typeIdentifier":"t_array$_t_int256_$2_memory_ptr","typeString":"int256[2] memory"}},"id":74283,"indexExpression":{"hexValue":"31","id":74282,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14252:1:104","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14230:24:104","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14182:72:104","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":74266,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14177:4:104","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":74265,"name":"uint","nodeType":"ElementaryTypeName","src":"14177:4:104","typeDescriptions":{}}},"id":74285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14177:78:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":74286,"name":"_PRECISION","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73155,"src":"14256:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14177:89:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130303030","id":74288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14268:5:104","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"value":"10000"},"src":"14177:96:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":74290,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"14176:98:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":74207,"id":74291,"nodeType":"Return","src":"14169:105:104"}]},"baseFunctions":[88984],"documentation":{"id":74196,"nodeType":"StructuredDocumentation","src":"13084:388:104","text":" @notice Calculate the fee for opening a leveraged position on a trading pair based on skew\n @param _pairIndex The index of the trading pair.\n @param _leveragedPosition The size of the leveraged position.\n @param _buy Boolean indicating whether the position is a long (true) or short (false).\n @return The fee percentage for opening the position."},"functionSelector":"fb3e519d","implemented":true,"kind":"function","modifiers":[],"name":"pairOpenFeeP","nameLocation":"13486:12:104","overrides":{"id":74204,"nodeType":"OverrideSpecifier","overrides":[],"src":"13566:8:104"},"parameters":{"id":74203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74198,"mutability":"mutable","name":"_pairIndex","nameLocation":"13504:10:104","nodeType":"VariableDeclaration","scope":74293,"src":"13499:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74197,"name":"uint","nodeType":"ElementaryTypeName","src":"13499:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":74200,"mutability":"mutable","name":"_leveragedPosition","nameLocation":"13521:18:104","nodeType":"VariableDeclaration","scope":74293,"src":"13516:23:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74199,"name":"uint","nodeType":"ElementaryTypeName","src":"13516:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":74202,"mutability":"mutable","name":"_buy","nameLocation":"13546:4:104","nodeType":"VariableDeclaration","scope":74293,"src":"13541:9:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":74201,"name":"bool","nodeType":"ElementaryTypeName","src":"13541:4:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"13498:53:104"},"returnParameters":{"id":74207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74206,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74293,"src":"13584:4:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74205,"name":"uint","nodeType":"ElementaryTypeName","src":"13584:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13583:6:104"},"scope":74450,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":74311,"nodeType":"FunctionDefinition","src":"14488:144:104","nodes":[],"body":{"id":74310,"nodeType":"Block","src":"14566:66:104","nodes":[],"statements":[{"expression":{"expression":{"baseExpression":{"id":74302,"name":"fees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73191,"src":"14583:4:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Fee_$88802_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Fee storage ref)"}},"id":74307,"indexExpression":{"expression":{"baseExpression":{"id":74303,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"14588:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":74305,"indexExpression":{"id":74304,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74296,"src":"14594:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14588:17:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"id":74306,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeIndex","nodeType":"MemberAccess","referencedDeclaration":88777,"src":"14588:26:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14583:32:104","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_storage","typeString":"struct IPairStorage.Fee storage ref"}},"id":74308,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"closeFeeP","nodeType":"MemberAccess","referencedDeclaration":88797,"src":"14583:42:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":74301,"id":74309,"nodeType":"Return","src":"14576:49:104"}]},"baseFunctions":[88991],"documentation":{"id":74294,"nodeType":"StructuredDocumentation","src":"14287:196:104","text":" @notice Get the fee for closing a position on a trading pair.\n @param _pairIndex The index of the trading pair.\n @return The fee percentage for closing the position."},"functionSelector":"836a341a","implemented":true,"kind":"function","modifiers":[],"name":"pairCloseFeeP","nameLocation":"14497:13:104","overrides":{"id":74298,"nodeType":"OverrideSpecifier","overrides":[],"src":"14542:8:104"},"parameters":{"id":74297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74296,"mutability":"mutable","name":"_pairIndex","nameLocation":"14516:10:104","nodeType":"VariableDeclaration","scope":74311,"src":"14511:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74295,"name":"uint","nodeType":"ElementaryTypeName","src":"14511:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14510:17:104"},"returnParameters":{"id":74301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74300,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74311,"src":"14560:4:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74299,"name":"uint","nodeType":"ElementaryTypeName","src":"14560:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14559:6:104"},"scope":74450,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":74329,"nodeType":"FunctionDefinition","src":"14827:154:104","nodes":[],"body":{"id":74328,"nodeType":"Block","src":"14910:71:104","nodes":[],"statements":[{"expression":{"expression":{"baseExpression":{"id":74320,"name":"fees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73191,"src":"14927:4:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Fee_$88802_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Fee storage ref)"}},"id":74325,"indexExpression":{"expression":{"baseExpression":{"id":74321,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"14932:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":74323,"indexExpression":{"id":74322,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74314,"src":"14938:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14932:17:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"id":74324,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeIndex","nodeType":"MemberAccess","referencedDeclaration":88777,"src":"14932:26:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14927:32:104","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_storage","typeString":"struct IPairStorage.Fee storage ref"}},"id":74326,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"limitOrderFeeP","nodeType":"MemberAccess","referencedDeclaration":88799,"src":"14927:47:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":74319,"id":74327,"nodeType":"Return","src":"14920:54:104"}]},"baseFunctions":[88973],"documentation":{"id":74312,"nodeType":"StructuredDocumentation","src":"14638:184:104","text":" @notice Get the fee for executing a TP/SL limit close.\n @param _pairIndex The index of the trading pair.\n @return The fee percentage for the limit order."},"functionSelector":"649a6488","implemented":true,"kind":"function","modifiers":[],"name":"pairLimitOrderFeeP","nameLocation":"14836:18:104","overrides":{"id":74316,"nodeType":"OverrideSpecifier","overrides":[],"src":"14886:8:104"},"parameters":{"id":74315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74314,"mutability":"mutable","name":"_pairIndex","nameLocation":"14860:10:104","nodeType":"VariableDeclaration","scope":74329,"src":"14855:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74313,"name":"uint","nodeType":"ElementaryTypeName","src":"14855:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14854:17:104"},"returnParameters":{"id":74319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74329,"src":"14904:4:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74317,"name":"uint","nodeType":"ElementaryTypeName","src":"14904:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14903:6:104"},"scope":74450,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":74347,"nodeType":"FunctionDefinition","src":"15212:152:104","nodes":[],"body":{"id":74346,"nodeType":"Block","src":"15294:70:104","nodes":[],"statements":[{"expression":{"expression":{"baseExpression":{"id":74338,"name":"fees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73191,"src":"15311:4:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Fee_$88802_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Fee storage ref)"}},"id":74343,"indexExpression":{"expression":{"baseExpression":{"id":74339,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"15316:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":74341,"indexExpression":{"id":74340,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74332,"src":"15322:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15316:17:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"id":74342,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeIndex","nodeType":"MemberAccess","referencedDeclaration":88777,"src":"15316:26:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15311:32:104","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_storage","typeString":"struct IPairStorage.Fee storage ref"}},"id":74344,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"minLevPosUSDC","nodeType":"MemberAccess","referencedDeclaration":88801,"src":"15311:46:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":74337,"id":74345,"nodeType":"Return","src":"15304:53:104"}]},"baseFunctions":[88998],"documentation":{"id":74330,"nodeType":"StructuredDocumentation","src":"14987:220:104","text":" @notice Get the minimum leveraged position size (in USDC) allowed for a trading pair.\n @param _pairIndex The index of the trading pair.\n @return The minimum leveraged position size in USDC."},"functionSelector":"238cd23f","implemented":true,"kind":"function","modifiers":[],"name":"pairMinLevPosUSDC","nameLocation":"15221:17:104","overrides":{"id":74334,"nodeType":"OverrideSpecifier","overrides":[],"src":"15270:8:104"},"parameters":{"id":74333,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74332,"mutability":"mutable","name":"_pairIndex","nameLocation":"15244:10:104","nodeType":"VariableDeclaration","scope":74347,"src":"15239:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74331,"name":"uint","nodeType":"ElementaryTypeName","src":"15239:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15238:17:104"},"returnParameters":{"id":74337,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74336,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74347,"src":"15288:4:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74335,"name":"uint","nodeType":"ElementaryTypeName","src":"15288:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15287:6:104"},"scope":74450,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":74381,"nodeType":"FunctionDefinition","src":"15657:203:104","nodes":[],"body":{"id":74380,"nodeType":"Block","src":"15754:106:104","nodes":[],"statements":[{"assignments":[74364],"declarations":[{"constant":false,"id":74364,"mutability":"mutable","name":"p","nameLocation":"15776:1:104","nodeType":"VariableDeclaration","scope":74380,"src":"15764:13:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_memory_ptr","typeString":"struct IPairStorage.Pair"},"typeName":{"id":74363,"nodeType":"UserDefinedTypeName","pathNode":{"id":74362,"name":"Pair","nodeType":"IdentifierPath","referencedDeclaration":88782,"src":"15764:4:104"},"referencedDeclaration":88782,"src":"15764:4:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage_ptr","typeString":"struct IPairStorage.Pair"}},"visibility":"internal"}],"id":74368,"initialValue":{"baseExpression":{"id":74365,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"15780:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":74367,"indexExpression":{"id":74366,"name":"_index","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74350,"src":"15786:6:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15780:13:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"nodeType":"VariableDeclarationStatement","src":"15764:29:104"},{"expression":{"components":[{"id":74369,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74364,"src":"15811:1:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_memory_ptr","typeString":"struct IPairStorage.Pair memory"}},{"baseExpression":{"id":74370,"name":"groups","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73186,"src":"15814:6:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Group_$88791_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Group storage ref)"}},"id":74373,"indexExpression":{"expression":{"id":74371,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74364,"src":"15821:1:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_memory_ptr","typeString":"struct IPairStorage.Pair memory"}},"id":74372,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"groupIndex","nodeType":"MemberAccess","referencedDeclaration":88775,"src":"15821:12:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15814:20:104","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_storage","typeString":"struct IPairStorage.Group storage ref"}},{"baseExpression":{"id":74374,"name":"fees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73191,"src":"15836:4:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Fee_$88802_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Fee storage ref)"}},"id":74377,"indexExpression":{"expression":{"id":74375,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74364,"src":"15841:1:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_memory_ptr","typeString":"struct IPairStorage.Pair memory"}},"id":74376,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"feeIndex","nodeType":"MemberAccess","referencedDeclaration":88777,"src":"15841:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15836:16:104","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_storage","typeString":"struct IPairStorage.Fee storage ref"}}],"id":74378,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15810:43:104","typeDescriptions":{"typeIdentifier":"t_tuple$_t_struct$_Pair_$88782_memory_ptr_$_t_struct$_Group_$88791_storage_$_t_struct$_Fee_$88802_storage_$","typeString":"tuple(struct IPairStorage.Pair memory,struct IPairStorage.Group storage ref,struct IPairStorage.Fee storage ref)"}},"functionReturnParameters":74361,"id":74379,"nodeType":"Return","src":"15803:50:104"}]},"documentation":{"id":74348,"nodeType":"StructuredDocumentation","src":"15370:282:104","text":" @notice Get backend details for a specific trading pair, its group, and associated fees.\n @param _index The index of the trading pair.\n @return Pair memory, Group memory, and Fee memory objects containing details for the trading pair, group, and fees."},"functionSelector":"9567dccf","implemented":true,"kind":"function","modifiers":[],"name":"pairsBackend","nameLocation":"15666:12:104","parameters":{"id":74351,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74350,"mutability":"mutable","name":"_index","nameLocation":"15684:6:104","nodeType":"VariableDeclaration","scope":74381,"src":"15679:11:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74349,"name":"uint","nodeType":"ElementaryTypeName","src":"15679:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15678:13:104"},"returnParameters":{"id":74361,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74354,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74381,"src":"15715:11:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_memory_ptr","typeString":"struct IPairStorage.Pair"},"typeName":{"id":74353,"nodeType":"UserDefinedTypeName","pathNode":{"id":74352,"name":"Pair","nodeType":"IdentifierPath","referencedDeclaration":88782,"src":"15715:4:104"},"referencedDeclaration":88782,"src":"15715:4:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage_ptr","typeString":"struct IPairStorage.Pair"}},"visibility":"internal"},{"constant":false,"id":74357,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74381,"src":"15728:12:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_memory_ptr","typeString":"struct IPairStorage.Group"},"typeName":{"id":74356,"nodeType":"UserDefinedTypeName","pathNode":{"id":74355,"name":"Group","nodeType":"IdentifierPath","referencedDeclaration":88791,"src":"15728:5:104"},"referencedDeclaration":88791,"src":"15728:5:104","typeDescriptions":{"typeIdentifier":"t_struct$_Group_$88791_storage_ptr","typeString":"struct IPairStorage.Group"}},"visibility":"internal"},{"constant":false,"id":74360,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74381,"src":"15742:10:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_memory_ptr","typeString":"struct IPairStorage.Fee"},"typeName":{"id":74359,"nodeType":"UserDefinedTypeName","pathNode":{"id":74358,"name":"Fee","nodeType":"IdentifierPath","referencedDeclaration":88802,"src":"15742:3:104"},"referencedDeclaration":88802,"src":"15742:3:104","typeDescriptions":{"typeIdentifier":"t_struct$_Fee_$88802_storage_ptr","typeString":"struct IPairStorage.Fee"}},"visibility":"internal"}],"src":"15714:39:104"},"scope":74450,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":74401,"nodeType":"FunctionDefinition","src":"16027:178:104","nodes":[],"body":{"id":74400,"nodeType":"Block","src":"16115:90:104","nodes":[],"statements":[{"assignments":[74392],"declarations":[{"constant":false,"id":74392,"mutability":"mutable","name":"p","nameLocation":"16137:1:104","nodeType":"VariableDeclaration","scope":74400,"src":"16125:13:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_memory_ptr","typeString":"struct IPairStorage.Pair"},"typeName":{"id":74391,"nodeType":"UserDefinedTypeName","pathNode":{"id":74390,"name":"Pair","nodeType":"IdentifierPath","referencedDeclaration":88782,"src":"16125:4:104"},"referencedDeclaration":88782,"src":"16125:4:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage_ptr","typeString":"struct IPairStorage.Pair"}},"visibility":"internal"}],"id":74396,"initialValue":{"baseExpression":{"id":74393,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"16141:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":74395,"indexExpression":{"id":74394,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74384,"src":"16147:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16141:17:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"nodeType":"VariableDeclarationStatement","src":"16125:33:104"},{"expression":{"expression":{"id":74397,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74392,"src":"16175:1:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_memory_ptr","typeString":"struct IPairStorage.Pair memory"}},"id":74398,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"priceImpactMultiplier","nodeType":"MemberAccess","referencedDeclaration":88771,"src":"16175:23:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":74389,"id":74399,"nodeType":"Return","src":"16168:30:104"}]},"baseFunctions":[89047],"documentation":{"id":74382,"nodeType":"StructuredDocumentation","src":"15866:156:104","text":" @notice Get priceImpact multiplier for a certain pair\n @param _pairIndex The pair Index\n @return Pair Price Impact multiplier"},"functionSelector":"5fc8cd28","implemented":true,"kind":"function","modifiers":[],"name":"pairPriceImpactMultiplier","nameLocation":"16036:25:104","overrides":{"id":74386,"nodeType":"OverrideSpecifier","overrides":[],"src":"16088:8:104"},"parameters":{"id":74385,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74384,"mutability":"mutable","name":"_pairIndex","nameLocation":"16067:10:104","nodeType":"VariableDeclaration","scope":74401,"src":"16062:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74383,"name":"uint","nodeType":"ElementaryTypeName","src":"16062:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16061:17:104"},"returnParameters":{"id":74389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74388,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74401,"src":"16110:4:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74387,"name":"uint","nodeType":"ElementaryTypeName","src":"16110:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16109:6:104"},"scope":74450,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":74421,"nodeType":"FunctionDefinition","src":"16371:175:104","nodes":[],"body":{"id":74420,"nodeType":"Block","src":"16457:89:104","nodes":[],"statements":[{"assignments":[74412],"declarations":[{"constant":false,"id":74412,"mutability":"mutable","name":"p","nameLocation":"16479:1:104","nodeType":"VariableDeclaration","scope":74420,"src":"16467:13:104","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_memory_ptr","typeString":"struct IPairStorage.Pair"},"typeName":{"id":74411,"nodeType":"UserDefinedTypeName","pathNode":{"id":74410,"name":"Pair","nodeType":"IdentifierPath","referencedDeclaration":88782,"src":"16467:4:104"},"referencedDeclaration":88782,"src":"16467:4:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage_ptr","typeString":"struct IPairStorage.Pair"}},"visibility":"internal"}],"id":74416,"initialValue":{"baseExpression":{"id":74413,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"16483:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":74415,"indexExpression":{"id":74414,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74404,"src":"16489:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16483:17:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"nodeType":"VariableDeclarationStatement","src":"16467:33:104"},{"expression":{"expression":{"id":74417,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74412,"src":"16517:1:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_memory_ptr","typeString":"struct IPairStorage.Pair memory"}},"id":74418,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"skewImpactMultiplier","nodeType":"MemberAccess","referencedDeclaration":88773,"src":"16517:22:104","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":74409,"id":74419,"nodeType":"Return","src":"16510:29:104"}]},"baseFunctions":[89054],"documentation":{"id":74402,"nodeType":"StructuredDocumentation","src":"16211:155:104","text":" @notice Get priceImpact multiplier for a certain pair\n @param _pairIndex The pair Index\n @return Pair Skew Impact multiplier"},"functionSelector":"e8b50f84","implemented":true,"kind":"function","modifiers":[],"name":"pairSkewImpactMultiplier","nameLocation":"16380:24:104","overrides":{"id":74406,"nodeType":"OverrideSpecifier","overrides":[],"src":"16431:8:104"},"parameters":{"id":74405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74404,"mutability":"mutable","name":"_pairIndex","nameLocation":"16410:10:104","nodeType":"VariableDeclaration","scope":74421,"src":"16405:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74403,"name":"uint","nodeType":"ElementaryTypeName","src":"16405:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16404:17:104"},"returnParameters":{"id":74409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74408,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74421,"src":"16453:3:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":74407,"name":"int","nodeType":"ElementaryTypeName","src":"16453:3:104","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"16452:5:104"},"scope":74450,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":74449,"nodeType":"FunctionDefinition","src":"16703:191:104","nodes":[],"body":{"id":74448,"nodeType":"Block","src":"16779:115:104","nodes":[],"statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":74445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"expression":{"baseExpression":{"id":74433,"name":"pairs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73181,"src":"16824:5:104","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_Pair_$88782_storage_$","typeString":"mapping(uint256 => struct IPairStorage.Pair storage ref)"}},"id":74435,"indexExpression":{"id":74434,"name":"_pairIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74424,"src":"16830:10:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16824:17:104","typeDescriptions":{"typeIdentifier":"t_struct$_Pair_$88782_storage","typeString":"struct IPairStorage.Pair storage ref"}},"id":74436,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"from","nodeType":"MemberAccess","referencedDeclaration":88759,"src":"16824:22:104","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"expression":{"id":74431,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16807:3:104","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":74432,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"16807:16:104","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":74437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16807:40:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":74430,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"16797:9:104","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":74438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16797:51:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"hexValue":"555344","id":74442,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"16879:5:104","typeDescriptions":{"typeIdentifier":"t_stringliteral_c4ae21aac0c6549d71dd96035b7e0bdb6c79ebdba8891b666115bc976d16a29e","typeString":"literal_string \"USD\""},"value":"USD"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c4ae21aac0c6549d71dd96035b7e0bdb6c79ebdba8891b666115bc976d16a29e","typeString":"literal_string \"USD\""}],"expression":{"id":74440,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"16862:3:104","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":74441,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodePacked","nodeType":"MemberAccess","src":"16862:16:104","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":74443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16862:23:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":74439,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"16852:9:104","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":74444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16852:34:104","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"16797:89:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":74446,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16796:91:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":74429,"id":74447,"nodeType":"Return","src":"16789:98:104"}]},"baseFunctions":[89040],"documentation":{"id":74422,"nodeType":"StructuredDocumentation","src":"16552:146:104","text":" @notice Helper method to Check pair is usdc aligned\n @param _pairIndex The index of the trading pair.\n @return bool"},"functionSelector":"6dc37de3","implemented":true,"kind":"function","modifiers":[],"name":"isUSDCAligned","nameLocation":"16712:13:104","overrides":{"id":74426,"nodeType":"OverrideSpecifier","overrides":[],"src":"16757:8:104"},"parameters":{"id":74425,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74424,"mutability":"mutable","name":"_pairIndex","nameLocation":"16731:10:104","nodeType":"VariableDeclaration","scope":74449,"src":"16726:15:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74423,"name":"uint","nodeType":"ElementaryTypeName","src":"16726:4:104","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16725:17:104"},"returnParameters":{"id":74429,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74428,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74449,"src":"16774:4:104","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":74427,"name":"bool","nodeType":"ElementaryTypeName","src":"16774:4:104","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"16773:6:104"},"scope":74450,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":73143,"name":"Initializable","nodeType":"IdentifierPath","referencedDeclaration":43537,"src":"240:13:104"},"id":73144,"nodeType":"InheritanceSpecifier","src":"240:13:104"},{"baseName":{"id":73145,"name":"IPairStorage","nodeType":"IdentifierPath","referencedDeclaration":89055,"src":"255:12:104"},"id":73146,"nodeType":"InheritanceSpecifier","src":"255:12:104"}],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[74450,89055,43537],"name":"PairStorage","nameLocation":"225:11:104","scope":74451,"usedErrors":[]}],"license":"MIT"},"id":104}
|
|
1
|
+
{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addFee","inputs":[{"name":"_fee","type":"tuple","internalType":"struct IPairStorage.Fee","components":[{"name":"openFeeP","type":"uint256","internalType":"uint256"},{"name":"closeFeeP","type":"uint256","internalType":"uint256"},{"name":"limitOrderFeeP","type":"uint256","internalType":"uint256"},{"name":"minLevPosUSDC","type":"uint256","internalType":"uint256"},{"name":"pnlFees","type":"tuple","internalType":"struct IPairStorage.PnlFees","components":[{"name":"numTiers","type":"uint256","internalType":"uint256"},{"name":"tierP","type":"uint256[]","internalType":"uint256[]"},{"name":"feesP","type":"uint256[]","internalType":"uint256[]"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addGroup","inputs":[{"name":"_group","type":"tuple","internalType":"struct IPairStorage.Group","components":[{"name":"name","type":"string","internalType":"string"},{"name":"maxOpenInterestP","type":"uint256","internalType":"uint256"},{"name":"isSpreadDynamic","type":"bool","internalType":"bool"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addPair","inputs":[{"name":"_pair","type":"tuple","internalType":"struct IPairStorage.Pair","components":[{"name":"feed","type":"tuple","internalType":"struct IPairStorage.Feed","components":[{"name":"maxOpenDeviationP","type":"uint256","internalType":"uint256"},{"name":"maxCloseDeviationP","type":"uint256","internalType":"uint256"},{"name":"feedId","type":"bytes32","internalType":"bytes32"}]},{"name":"backupFeed","type":"tuple","internalType":"struct IPairStorage.BackupFeed","components":[{"name":"maxDeviationP","type":"uint256","internalType":"uint256"},{"name":"feedId","type":"address","internalType":"address"}]},{"name":"spreadP","type":"uint256","internalType":"uint256"},{"name":"pnlSpreadP","type":"uint256","internalType":"uint256"},{"name":"leverages","type":"tuple","internalType":"struct IPairStorage.Leverage","components":[{"name":"minLeverage","type":"uint256","internalType":"uint256"},{"name":"maxLeverage","type":"uint256","internalType":"uint256"},{"name":"pnlMinLeverage","type":"uint256","internalType":"uint256"},{"name":"pnlMaxLeverage","type":"uint256","internalType":"uint256"}]},{"name":"priceImpactMultiplier","type":"uint256","internalType":"uint256"},{"name":"skewImpactMultiplier","type":"int256","internalType":"int256"},{"name":"groupIndex","type":"uint256","internalType":"uint256"},{"name":"feeIndex","type":"uint256","internalType":"uint256"},{"name":"values","type":"tuple","internalType":"struct IPairStorage.Values","components":[{"name":"maxGainP","type":"int256","internalType":"int256"},{"name":"maxSlP","type":"int256","internalType":"int256"},{"name":"maxLongOiP","type":"uint256","internalType":"uint256"},{"name":"maxShortOiP","type":"uint256","internalType":"uint256"},{"name":"groupOpenInterestPecentage","type":"uint256","internalType":"uint256"},{"name":"maxWalletOI","type":"uint256","internalType":"uint256"},{"name":"isUSDCAligned","type":"bool","internalType":"bool"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addSkewOpenFees","inputs":[{"name":"_skewFee","type":"tuple","internalType":"struct IPairStorage.SkewFee","components":[{"name":"eqParams","type":"int256[2][10]","internalType":"int256[2][10]"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"addtionalPairParams","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"param_9","type":"uint256","internalType":"uint256"},{"name":"param_10","type":"uint256","internalType":"uint256"},{"name":"param_11","type":"uint256","internalType":"uint256"},{"name":"param_12","type":"uint256","internalType":"uint256"},{"name":"param_13","type":"uint256","internalType":"uint256"},{"name":"param_14","type":"uint256","internalType":"uint256"},{"name":"param_15","type":"uint256","internalType":"uint256"},{"name":"param_16","type":"uint256","internalType":"uint256"},{"name":"param_17","type":"uint256","internalType":"uint256"},{"name":"param_18","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"blockOILimit","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"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"},{"name":"pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"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"},{"name":"pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"currentOrderId","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"currentPercentProfit","inputs":[{"name":"openPrice","type":"uint256","internalType":"uint256"},{"name":"currentPrice","type":"uint256","internalType":"uint256"},{"name":"buy","type":"bool","internalType":"bool"},{"name":"leverage","type":"uint256","internalType":"uint256"},{"name":"pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"p","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"delistPair","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"fees","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"openFeeP","type":"uint256","internalType":"uint256"},{"name":"closeFeeP","type":"uint256","internalType":"uint256"},{"name":"limitOrderFeeP","type":"uint256","internalType":"uint256"},{"name":"minLevPosUSDC","type":"uint256","internalType":"uint256"},{"name":"pnlFees","type":"tuple","internalType":"struct IPairStorage.PnlFees","components":[{"name":"numTiers","type":"uint256","internalType":"uint256"},{"name":"tierP","type":"uint256[]","internalType":"uint256[]"},{"name":"feesP","type":"uint256[]","internalType":"uint256[]"}]}],"stateMutability":"view"},{"type":"function","name":"feesCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPairData","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"},{"name":"numTiers","type":"uint256","internalType":"uint256"},{"name":"tierThresholds","type":"uint256[]","internalType":"uint256[]"},{"name":"timer","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getPnlBasedFee","inputs":[{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"collateral","type":"uint256","internalType":"uint256"},{"name":"percentProfit","type":"int256","internalType":"int256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPosType","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"getSkewParams","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"skewFee","type":"tuple","internalType":"struct IPairStorage.SkewFee","components":[{"name":"eqParams","type":"int256[2][10]","internalType":"int256[2][10]"}]}],"stateMutability":"view"},{"type":"function","name":"groupMaxOI","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"groupOI","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"groupOIs","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"groups","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"name","type":"string","internalType":"string"},{"name":"maxOpenInterestP","type":"uint256","internalType":"uint256"},{"name":"isSpreadDynamic","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"groupsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"guaranteedSlEnabled","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_storageT","type":"address","internalType":"address"},{"name":"_currentOrderId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isDynamicSpreadEnabled","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPairListed","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isUSDCAligned","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"lossProtection","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"lossProtectionMultiplier","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_tier","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maxWalletOI","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"openCloseThreshold","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_leveragePos","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"openPosType","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"pairBackupFeed","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IPairStorage.BackupFeed","components":[{"name":"maxDeviationP","type":"uint256","internalType":"uint256"},{"name":"feedId","type":"address","internalType":"address"}]}],"stateMutability":"view"},{"type":"function","name":"pairCloseFeeP","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairData","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"},{"name":"numTiers","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairFeed","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IPairStorage.Feed","components":[{"name":"maxOpenDeviationP","type":"uint256","internalType":"uint256"},{"name":"maxCloseDeviationP","type":"uint256","internalType":"uint256"},{"name":"feedId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"pairGroupIndex","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairJob","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"pairLimitOrderFeeP","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairMaxLeverage","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_isPnl","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairMaxLongOI","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairMaxOI","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairMaxShortOI","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairMinLevPosUSDC","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairMinLeverage","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_isPnl","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairOpenFeeP","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_leveragedPosition","type":"uint256","internalType":"uint256"},{"name":"_buy","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairParams","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"posSpreadCap","type":"uint256","internalType":"uint256"},{"name":"negSpreadCap","type":"uint256","internalType":"uint256"},{"name":"param_1","type":"uint256","internalType":"uint256"},{"name":"param_2","type":"uint256","internalType":"uint256"},{"name":"param_3","type":"uint256","internalType":"uint256"},{"name":"param_4","type":"uint256","internalType":"uint256"},{"name":"param_5","type":"uint256","internalType":"uint256"},{"name":"param_6","type":"uint256","internalType":"uint256"},{"name":"param_7","type":"uint256","internalType":"uint256"},{"name":"param_8","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairPriceImpactMultiplier","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairSkewImpactMultiplier","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"int256","internalType":"int256"}],"stateMutability":"view"},{"type":"function","name":"pairSpreadP","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_isPnl","type":"bool","internalType":"bool"}],"outputs":[{"name":"spreadP","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"pairs","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"feed","type":"tuple","internalType":"struct IPairStorage.Feed","components":[{"name":"maxOpenDeviationP","type":"uint256","internalType":"uint256"},{"name":"maxCloseDeviationP","type":"uint256","internalType":"uint256"},{"name":"feedId","type":"bytes32","internalType":"bytes32"}]},{"name":"backupFeed","type":"tuple","internalType":"struct IPairStorage.BackupFeed","components":[{"name":"maxDeviationP","type":"uint256","internalType":"uint256"},{"name":"feedId","type":"address","internalType":"address"}]},{"name":"spreadP","type":"uint256","internalType":"uint256"},{"name":"pnlSpreadP","type":"uint256","internalType":"uint256"},{"name":"leverages","type":"tuple","internalType":"struct IPairStorage.Leverage","components":[{"name":"minLeverage","type":"uint256","internalType":"uint256"},{"name":"maxLeverage","type":"uint256","internalType":"uint256"},{"name":"pnlMinLeverage","type":"uint256","internalType":"uint256"},{"name":"pnlMaxLeverage","type":"uint256","internalType":"uint256"}]},{"name":"priceImpactMultiplier","type":"uint256","internalType":"uint256"},{"name":"skewImpactMultiplier","type":"int256","internalType":"int256"},{"name":"groupIndex","type":"uint256","internalType":"uint256"},{"name":"feeIndex","type":"uint256","internalType":"uint256"},{"name":"values","type":"tuple","internalType":"struct IPairStorage.Values","components":[{"name":"maxGainP","type":"int256","internalType":"int256"},{"name":"maxSlP","type":"int256","internalType":"int256"},{"name":"maxLongOiP","type":"uint256","internalType":"uint256"},{"name":"maxShortOiP","type":"uint256","internalType":"uint256"},{"name":"groupOpenInterestPecentage","type":"uint256","internalType":"uint256"},{"name":"maxWalletOI","type":"uint256","internalType":"uint256"},{"name":"isUSDCAligned","type":"bool","internalType":"bool"}]}],"stateMutability":"view"},{"type":"function","name":"pairsBackend","inputs":[{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IPairStorage.Pair","components":[{"name":"feed","type":"tuple","internalType":"struct IPairStorage.Feed","components":[{"name":"maxOpenDeviationP","type":"uint256","internalType":"uint256"},{"name":"maxCloseDeviationP","type":"uint256","internalType":"uint256"},{"name":"feedId","type":"bytes32","internalType":"bytes32"}]},{"name":"backupFeed","type":"tuple","internalType":"struct IPairStorage.BackupFeed","components":[{"name":"maxDeviationP","type":"uint256","internalType":"uint256"},{"name":"feedId","type":"address","internalType":"address"}]},{"name":"spreadP","type":"uint256","internalType":"uint256"},{"name":"pnlSpreadP","type":"uint256","internalType":"uint256"},{"name":"leverages","type":"tuple","internalType":"struct IPairStorage.Leverage","components":[{"name":"minLeverage","type":"uint256","internalType":"uint256"},{"name":"maxLeverage","type":"uint256","internalType":"uint256"},{"name":"pnlMinLeverage","type":"uint256","internalType":"uint256"},{"name":"pnlMaxLeverage","type":"uint256","internalType":"uint256"}]},{"name":"priceImpactMultiplier","type":"uint256","internalType":"uint256"},{"name":"skewImpactMultiplier","type":"int256","internalType":"int256"},{"name":"groupIndex","type":"uint256","internalType":"uint256"},{"name":"feeIndex","type":"uint256","internalType":"uint256"},{"name":"values","type":"tuple","internalType":"struct IPairStorage.Values","components":[{"name":"maxGainP","type":"int256","internalType":"int256"},{"name":"maxSlP","type":"int256","internalType":"int256"},{"name":"maxLongOiP","type":"uint256","internalType":"uint256"},{"name":"maxShortOiP","type":"uint256","internalType":"uint256"},{"name":"groupOpenInterestPecentage","type":"uint256","internalType":"uint256"},{"name":"maxWalletOI","type":"uint256","internalType":"uint256"},{"name":"isUSDCAligned","type":"bool","internalType":"bool"}]}]},{"name":"","type":"tuple","internalType":"struct IPairStorage.Group","components":[{"name":"name","type":"string","internalType":"string"},{"name":"maxOpenInterestP","type":"uint256","internalType":"uint256"},{"name":"isSpreadDynamic","type":"bool","internalType":"bool"}]},{"name":"","type":"tuple","internalType":"struct IPairStorage.Fee","components":[{"name":"openFeeP","type":"uint256","internalType":"uint256"},{"name":"closeFeeP","type":"uint256","internalType":"uint256"},{"name":"limitOrderFeeP","type":"uint256","internalType":"uint256"},{"name":"minLevPosUSDC","type":"uint256","internalType":"uint256"},{"name":"pnlFees","type":"tuple","internalType":"struct IPairStorage.PnlFees","components":[{"name":"numTiers","type":"uint256","internalType":"uint256"},{"name":"tierP","type":"uint256[]","internalType":"uint256[]"},{"name":"feesP","type":"uint256[]","internalType":"uint256[]"}]}]}],"stateMutability":"view"},{"type":"function","name":"pairsCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"resetPosType","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBlockOILImits","inputs":[{"name":"_pairIndex","type":"uint256[]","internalType":"uint256[]"},{"name":"_limits","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPairData","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"from","type":"string","internalType":"string"},{"name":"to","type":"string","internalType":"string"},{"name":"_numTiers","type":"uint256","internalType":"uint256"},{"name":"_tierThresholds","type":"uint256[]","internalType":"uint256[]"},{"name":"_timer","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"skewedFeesCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"spreadCaps","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"storageT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ITradingStorage"}],"stateMutability":"view"},{"type":"function","name":"storePosType","inputs":[{"name":"trader","type":"address","internalType":"address"},{"name":"pairIndex","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"},{"name":"isPnl","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"syncGroupOI","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_newLongOI","type":"uint256","internalType":"uint256"},{"name":"_newShortOI","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"syncOrderId","inputs":[{"name":"_orderId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"udpateSkewOpenFees","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_skewFee","type":"tuple","internalType":"struct IPairStorage.SkewFee","components":[{"name":"eqParams","type":"int256[2][10]","internalType":"int256[2][10]"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateAdditionalPairParams","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_params","type":"tuple","internalType":"struct IPairStorage.AdditionalPairParams","components":[{"name":"param_9","type":"uint256","internalType":"uint256"},{"name":"param_10","type":"uint256","internalType":"uint256"},{"name":"param_11","type":"uint256","internalType":"uint256"},{"name":"param_12","type":"uint256","internalType":"uint256"},{"name":"param_13","type":"uint256","internalType":"uint256"},{"name":"param_14","type":"uint256","internalType":"uint256"},{"name":"param_15","type":"uint256","internalType":"uint256"},{"name":"param_16","type":"uint256","internalType":"uint256"},{"name":"param_17","type":"uint256","internalType":"uint256"},{"name":"param_18","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateFee","inputs":[{"name":"_id","type":"uint256","internalType":"uint256"},{"name":"_fee","type":"tuple","internalType":"struct IPairStorage.Fee","components":[{"name":"openFeeP","type":"uint256","internalType":"uint256"},{"name":"closeFeeP","type":"uint256","internalType":"uint256"},{"name":"limitOrderFeeP","type":"uint256","internalType":"uint256"},{"name":"minLevPosUSDC","type":"uint256","internalType":"uint256"},{"name":"pnlFees","type":"tuple","internalType":"struct IPairStorage.PnlFees","components":[{"name":"numTiers","type":"uint256","internalType":"uint256"},{"name":"tierP","type":"uint256[]","internalType":"uint256[]"},{"name":"feesP","type":"uint256[]","internalType":"uint256[]"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateGroup","inputs":[{"name":"_id","type":"uint256","internalType":"uint256"},{"name":"_group","type":"tuple","internalType":"struct IPairStorage.Group","components":[{"name":"name","type":"string","internalType":"string"},{"name":"maxOpenInterestP","type":"uint256","internalType":"uint256"},{"name":"isSpreadDynamic","type":"bool","internalType":"bool"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateGroupOI","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_long","type":"bool","internalType":"bool"},{"name":"_increase","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updateLossProtectionMultiplier","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_tier","type":"uint256[]","internalType":"uint256[]"},{"name":"_multiplierPercent","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updatePair","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_pair","type":"tuple","internalType":"struct IPairStorage.Pair","components":[{"name":"feed","type":"tuple","internalType":"struct IPairStorage.Feed","components":[{"name":"maxOpenDeviationP","type":"uint256","internalType":"uint256"},{"name":"maxCloseDeviationP","type":"uint256","internalType":"uint256"},{"name":"feedId","type":"bytes32","internalType":"bytes32"}]},{"name":"backupFeed","type":"tuple","internalType":"struct IPairStorage.BackupFeed","components":[{"name":"maxDeviationP","type":"uint256","internalType":"uint256"},{"name":"feedId","type":"address","internalType":"address"}]},{"name":"spreadP","type":"uint256","internalType":"uint256"},{"name":"pnlSpreadP","type":"uint256","internalType":"uint256"},{"name":"leverages","type":"tuple","internalType":"struct IPairStorage.Leverage","components":[{"name":"minLeverage","type":"uint256","internalType":"uint256"},{"name":"maxLeverage","type":"uint256","internalType":"uint256"},{"name":"pnlMinLeverage","type":"uint256","internalType":"uint256"},{"name":"pnlMaxLeverage","type":"uint256","internalType":"uint256"}]},{"name":"priceImpactMultiplier","type":"uint256","internalType":"uint256"},{"name":"skewImpactMultiplier","type":"int256","internalType":"int256"},{"name":"groupIndex","type":"uint256","internalType":"uint256"},{"name":"feeIndex","type":"uint256","internalType":"uint256"},{"name":"values","type":"tuple","internalType":"struct IPairStorage.Values","components":[{"name":"maxGainP","type":"int256","internalType":"int256"},{"name":"maxSlP","type":"int256","internalType":"int256"},{"name":"maxLongOiP","type":"uint256","internalType":"uint256"},{"name":"maxShortOiP","type":"uint256","internalType":"uint256"},{"name":"groupOpenInterestPecentage","type":"uint256","internalType":"uint256"},{"name":"maxWalletOI","type":"uint256","internalType":"uint256"},{"name":"isUSDCAligned","type":"bool","internalType":"bool"}]}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"updatePairParams","inputs":[{"name":"_pairIndex","type":"uint256","internalType":"uint256"},{"name":"_params","type":"tuple","internalType":"struct IPairStorage.PairParams","components":[{"name":"posSpreadCap","type":"uint256","internalType":"uint256"},{"name":"negSpreadCap","type":"uint256","internalType":"uint256"},{"name":"param_1","type":"uint256","internalType":"uint256"},{"name":"param_2","type":"uint256","internalType":"uint256"},{"name":"param_3","type":"uint256","internalType":"uint256"},{"name":"param_4","type":"uint256","internalType":"uint256"},{"name":"param_5","type":"uint256","internalType":"uint256"},{"name":"param_6","type":"uint256","internalType":"uint256"},{"name":"param_7","type":"uint256","internalType":"uint256"},{"name":"param_8","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AdditionalPairParamsUpdated","inputs":[{"name":"params","type":"tuple","indexed":false,"internalType":"struct IPairStorage.AdditionalPairParams","components":[{"name":"param_9","type":"uint256","internalType":"uint256"},{"name":"param_10","type":"uint256","internalType":"uint256"},{"name":"param_11","type":"uint256","internalType":"uint256"},{"name":"param_12","type":"uint256","internalType":"uint256"},{"name":"param_13","type":"uint256","internalType":"uint256"},{"name":"param_14","type":"uint256","internalType":"uint256"},{"name":"param_15","type":"uint256","internalType":"uint256"},{"name":"param_16","type":"uint256","internalType":"uint256"},{"name":"param_17","type":"uint256","internalType":"uint256"},{"name":"param_18","type":"uint256","internalType":"uint256"}]}],"anonymous":false},{"type":"event","name":"BlockOILimitsSet","inputs":[{"name":"pairIndex","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"limits","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"FeeAdded","inputs":[{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"FeeUpdated","inputs":[{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"GroupAdded","inputs":[{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"name","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"GroupUpdated","inputs":[{"name":"index","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":"LossProtectionAdded","inputs":[{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tier","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"multiplier","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"OrderLimitsSet","inputs":[{"name":"pairIndex","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"limits","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"PairAdded","inputs":[{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"feedId","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"PairDataUpdated","inputs":[{"name":"pairIndex","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"from","type":"string","indexed":false,"internalType":"string"},{"name":"to","type":"string","indexed":false,"internalType":"string"},{"name":"numTiers","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tierthresholds","type":"uint256[]","indexed":false,"internalType":"uint256[]"},{"name":"timers","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"PairDelisted","inputs":[{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PairParamsUpdated","inputs":[{"name":"params","type":"tuple","indexed":false,"internalType":"struct IPairStorage.PairParams","components":[{"name":"posSpreadCap","type":"uint256","internalType":"uint256"},{"name":"negSpreadCap","type":"uint256","internalType":"uint256"},{"name":"param_1","type":"uint256","internalType":"uint256"},{"name":"param_2","type":"uint256","internalType":"uint256"},{"name":"param_3","type":"uint256","internalType":"uint256"},{"name":"param_4","type":"uint256","internalType":"uint256"},{"name":"param_5","type":"uint256","internalType":"uint256"},{"name":"param_6","type":"uint256","internalType":"uint256"},{"name":"param_7","type":"uint256","internalType":"uint256"},{"name":"param_8","type":"uint256","internalType":"uint256"}]}],"anonymous":false},{"type":"event","name":"PairUpdated","inputs":[{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SkewFeeAdded","inputs":[{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SkewFeeUpdated","inputs":[{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615a4780620000f36000396000f3fe608060405234801561001057600080fd5b50600436106104125760003560e01c806374db8c89116102205780639ae6b9e011610130578063c9fb8b20116100b8578063e14ed99511610087578063e14ed99514610ea1578063e8b50f8414610ec5578063f11bbcc014611014578063f80aa68b14611027578063fb3e519d1461103a57600080fd5b8063c9fb8b2014610e0a578063cd6dc68714610e3e578063d703fb0814610e51578063daefa14514610e8e57600080fd5b8063b2e1b2d6116100ff578063b2e1b2d614610c6f578063b81b2b7114610c82578063b91ac78814610c8b578063befef00b14610db3578063c5f5951a14610dc657600080fd5b80639ae6b9e014610c075780639b2f6cab14610c27578063a1ead06414610c3a578063af11959f14610c4d57600080fd5b80638f6d1431116101b35780639586621f116101825780639586621f14610b9957806395fe913914610bac57806396324bd414610bbf57806397db453814610be1578063995b765614610bf457600080fd5b80638f6d143114610af9578063925931fc14610b0c57806393cf8ed314610b155780639567dccf14610b7757600080fd5b806387698869116101ef5780638769886914610aaa578063885e275014610abd5780638a549af714610ac65780638c9a0ea414610ae657600080fd5b806374db8c8914610a3e5780637719d43c14610a515780637c07e44514610a64578063836a341a14610a7757600080fd5b80634acc79ed116103265780635fc8cd28116102ae57806369d4bda31161027d57806369d4bda3146109b35780636d8b5224146109e95780636dc37de3146109f257806372282ebe14610a18578063737113b514610a2b57600080fd5b80635fc8cd28146107c0578063649a648814610912578063658de48a14610945578063685e905b1461094e57600080fd5b806354219e62116102f557806354219e621461075157806354d7dccb1461076457806356e5536c146107775780635b3f88551461078a5780635e4f8f59146107ad57600080fd5b80634acc79ed146106f45780634e1d47ea146107185780634ffe8aec1461072b578063503a202f1461073e57600080fd5b8063223673e5116103a95780632bf6ae41116103785780632bf6ae41146105c9578063302f81fc146105dc5780633c44d0a3146106125780633d7a5f1a1461063557806342dee1ad1461064857600080fd5b8063223673e51461054d578063238cd23f1461056057806324abd3fb146105935780632b1cbe9d146105b657600080fd5b806316fff074116103e557806316fff074146104905780631a67bacc146104c15780631eaa005c146104d457806321371f5e1461053a57600080fd5b8063108c35871461041757806310ed40881461043d57806312f070cd1461045257806315b40d9114610465575b600080fd5b61042a610425366004614729565b61104d565b6040519081526020015b60405180910390f35b61045061044b3660046146a1565b6110b4565b005b61042a61046036600461487e565b611262565b61042a610473366004614a81565b600d60209081526000928352604080842090915290825290205481565b6000546104a9906201000090046001600160a01b031681565b6040516001600160a01b039091168152602001610434565b6104506104cf3660046147cf565b611298565b61052d6104e2366004614729565b60408051606080820183526000808352602080840182905292840181905293845260068252928290208251938401835280548452600181015491840191909152600201549082015290565b6040516104349190614fa6565b61042a610548366004614b90565b6113b6565b61045061055b366004614742565b61146d565b61042a61056e366004614729565b6000908152600660209081526040808320600e01548352600a90915290206003015490565b6105a66105a1366004614729565b6115eb565b6040519015158152602001610434565b61042a6105c4366004614a81565b611623565b6104506105d7366004614987565b611644565b6105ef6105ea366004614729565b6117db565b604080519384526001600160a01b03909216602084015290820152606001610434565b61042a610620366004614729565b6000908152600660205260409020600d015490565b610450610643366004614a5c565b611a4f565b6106aa610656366004614729565b6007602052806000526040600020600091509050806000015490806001015490806002015490806003015490806004015490806005015490806006015490806007015490806008015490806009015490508a565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c085015260e084015261010083015261012082015261014001610434565b610707610702366004614729565b611b51565b60405161043495949392919061526e565b610450610726366004614729565b611c4b565b610450610739366004614adc565b611d36565b61045061074c366004614657565b611ed0565b61045061075f366004614a37565b611f5e565b61042a610772366004614b1b565b61225d565b61042a610785366004614729565b612315565b6105a6610798366004614729565b600b6020526000908152604090205460ff1681565b61042a6107bb366004614729565b6123bd565b61042a6107ce366004614729565b60009081526006602081815260409283902083516101a08101855281546101408201908152600183015461016083015260028301546101808301528152845180860186526003830154815260048301546001600160a01b031681850152818401526005820154818601529281015460608085019190915284516080818101875260078401548252600884015482860152600984015482880152600a8401548284015280860191909152600b83015460a0808701918252600c85015460c080890191909152600d86015460e0808a0191909152600e8701546101008a015289519081018a52600f870154815260108701549781019790975260118601549887019890985260128501549386019390935260138401549185019190915260148301549184019190915260159091015460ff16151593820193909352610120909101525190565b61042a610920366004614729565b6000908152600660209081526040808320600e01548352600a90915290206002015490565b61042a60045481565b6109a661095c366004614729565b604080518082019091526000808252602082015250600090815260066020908152604091829020825180840190935260038101548352600401546001600160a01b03169082015290565b6040516104349190614f86565b6105a66109c1366004614729565b6000908152600660209081526040808320600d01548352600990915290206002015460ff1690565b61042a60055481565b6105a6610a00366004614729565b60009081526006602052604090206015015460ff1690565b610450610a26366004614b64565b6123ec565b61042a610a39366004614a81565b6124ee565b610450610a4c366004614729565b612566565b61042a610a5f366004614b64565b6126a9565b610450610a723660046149fb565b6127b0565b61042a610a85366004614729565b6000908152600660209081526040808320600e01548352600a90915290206001015490565b61042a610ab8366004614729565b612906565b61042a60035481565b610ad9610ad4366004614729565b61295c565b604051610434919061515c565b61042a610af4366004614729565b6129e4565b610450610b073660046148ae565b612b0a565b61042a60015481565b6106aa610b23366004614729565b6008602052806000526040600020600091509050806000015490806001015490806002015490806003015490806004015490806005015490806006015490806007015490806008015490806009015490508a565b610b8a610b85366004614729565b612cc6565b6040516104349392919061506d565b610450610ba7366004614805565b613021565b610450610bba3660046147b2565b6131ee565b610bd2610bcd366004614729565b61345b565b60405161043493929190614e79565b610450610bef366004614987565b613509565b61042a610c0236600461487e565b6136a0565b61042a610c15366004614729565b600f6020526000908152604090205481565b61042a610c3536600461487e565b6136d5565b61042a610c48366004614a81565b61370a565b610c60610c5b366004614729565b61372f565b60405161043493929190614de4565b61042a610c7d366004614729565b613861565b61042a60025481565b610d9d610c99366004614729565b60066020818152600092835260409283902083516060808201865282548252600183015482850152600283015482870152855180870187526003840154815260048401546001600160a01b031681860152600584015495840154875160808082018a52600787015482526008870154828901526009870154828b0152600a87015482860152600b870154600c880154600d890154600e8a01548d5160e081018f52600f8c0154815260108c01549c81019c909c5260118b01549d8c019d909d5260128a0154978b01979097526013890154928a0192909252601488015460a08a015260159097015460ff16151560c08901529498929796919590949093909290918a565b6040516104349a99989796959493929190614fc7565b610450610dc136600461477e565b61388a565b6105a6610dd4366004614622565b6001600160a01b0383166000908152601060209081526040808320858452825280832084845290915290205460ff169392505050565b6105a6610e18366004614622565b601060209081526000938452604080852082529284528284209052825290205460ff1681565b610450610e4c3660046145f6565b6139ae565b610e79610e5f366004614729565b600090815260076020526040902080546001909101549091565b60408051928352602083019190915201610434565b61042a610e9c366004614b90565b613b1d565b610eb4610eaf366004614729565b613bb6565b604051610434959493929190614e1a565b61042a610ed3366004614729565b60009081526006602081815260409283902083516101a08101855281546101408201908152600183015461016083015260028301546101808301528152845180860186526003830154815260048301546001600160a01b031681850152818401526005820154818601529281015460608085019190915284516080818101875260078401548252600884015482860152600984015482880152600a8401548284015280860191909152600b83015460a080870191909152600c84015460c0808801918252600d86015460e0808a0191909152600e8701546101008a015289519081018a52600f870154815260108701549781019790975260118601549887019890985260128501549386019390935260138401549185019190915260148301549084015260159091015460ff16151593820193909352610120909101525190565b6104506110223660046149b5565b613e06565b610450611035366004614622565b613f93565b61042a611048366004614aa3565b61401a565b600080606461105b846129e4565b6000858152600660205260409020601301546110779190615448565b61108191906153af565b6000848152600660205260409020601201549091506064906110a39083615448565b6110ad91906153af565b9392505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561110257600080fd5b505afa158015611116573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113a91906145d9565b6001600160a01b0316336001600160a01b0316146111735760405162461bcd60e51b815260040161116a90614ef4565b60405180910390fd5b8281146111b15760405162461bcd60e51b815260206004820152600c60248201526b0988a9cbe9a92a69a82a886960a31b604482015260640161116a565b60005b60ff811684111561121e5782828260ff168181106111d4576111d46156cb565b90506020020135600f600087878560ff168181106111f4576111f46156cb565b90506020020135815260200190815260200160002081905550806112179061567f565b90506111b4565b507fc5c5af5d05689513c60f635389c8449ac23f2b277af3a15f88c21c6de36fcf14848484846040516112549493929190614db2565b60405180910390a150505050565b600081611280576000838152600660205260409020600501546110ad565b50506000908152600660208190526040909120015490565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156112e657600080fd5b505afa1580156112fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131e91906145d9565b6001600160a01b0316336001600160a01b03161461134e5760405162461bcd60e51b815260040161116a90614ef4565b6005546000908152600e60205260409020819061136b82826159a0565b5050600580547f5d7a16e490fc66ca6522d4ba0437ac1a3b97cf25666340a19e408176295826d791600061139e83615664565b9091555060405190815260200160405180910390a150565b600080841180156113ff57506000828152600660205260409020601001546113e4906402540be400906153c3565b6113f0906000196153c3565b6113fd878686898761225d565b125b156114615760008281526006602052604081206010015460649061142f908890611429908b615448565b9061427f565b61143991906153af565b90508361144f5761144a8188615369565b611459565b61145981886154a6565b915050611464565b50825b95945050505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156114bb57600080fd5b505afa1580156114cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f391906145d9565b6001600160a01b0316336001600160a01b0316146115235760405162461bcd60e51b815260040161116a90614ef4565b80803515801590611538575060008160400135115b8015611548575060008160600135115b6115815760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f4645455360b01b604482015260640161116a565b6004546000908152600a60205260409020829061159e8282615704565b5050600480547f59fdca5c5019c8bddf5b408b17992d0fce838508a49ac6a398c8e06e645cfdf89160006115d183615664565b909155506040519081526020015b60405180910390a15050565b6000818152600660205260408120600d0154600281148061160c5750806003145b1561161a5750600092915050565b50600192915050565b6000828152600d602090815260408083208484529091529020545b92915050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561169257600080fd5b505afa1580156116a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ca91906145d9565b6001600160a01b0316336001600160a01b0316146116fa5760405162461bcd60e51b815260040161116a90614ef4565b600082815260066020908152604080832060028101548452600b9092529091205460ff1661173a5760405162461bcd60e51b815260040161116a90614ea3565b60008381526008602081815260409283902085358155908501356001820155848301356002820155606085013560038201556080850135600482015560a0850135600582015560c0850135600682015560e0850135600782015561010085013591810191909155610120840135600982015590517fb065caa6c83f0960c83293dac3e2885911a34fb60f81e3571b9e4c266de93c5290611254908590614f16565b60008060008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561182d57600080fd5b505afa158015611841573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186591906145d9565b6001600160a01b0316336001600160a01b0316146118b75760405162461bcd60e51b815260206004820152600f60248201526e41474752454741544f525f4f4e4c5960881b604482015260640161116a565b600084815260066020818152604080842081516101a08101835281546101408201908152600183015461016083015260028301546101808301528152825180840184526003830154815260048301546001600160a01b031681860152818501526005820154818401529381015460608086019190915282516080818101855260078401548252600884015482870152600984015482860152600a8401548284015280870191909152600b8084015460a080890191909152600c85015460c0808a0191909152600d86015460e0808b0191909152600e8701546101008b015287519081018852600f87015481526010870154818a015260118701548189015260128701549581019590955260138601549385019390935260148501549084015260159093015460ff90811615159183019190915261012086019190915284518301518652925290922054909116611a1f5760405162461bcd60e51b815260040161116a90614ea3565b805160400151602080830151015160018054906000611a3d83615664565b91905055935093509350509193909250565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9d57600080fd5b505afa158015611ab1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad591906145d9565b6001600160a01b0316336001600160a01b031614611b055760405162461bcd60e51b815260040161116a90614ef4565b6000828152600e602052604090208190611b1f82826159a0565b50506040518281527f049d8e73ae29fd805de1f8eae372a5020742554b37118c1e33687e89ef3027ff906020016115df565b600a602052806000526040600020600091509050806000015490806001015490806002015490806003015490806004016040518060600160405290816000820154815260200160018201805480602002602001604051908101604052809291908181526020018280548015611be557602002820191906000526020600020905b815481526020019060010190808311611bd1575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015611c3d57602002820191906000526020600020905b815481526020019060010190808311611c29575b505050505081525050905085565b600054604080516312d43a5160e01b815290517392ed158d5e423cfdc9eed5bd7328fff7ced6ff94926201000090046001600160a01b0316916312d43a51916004808301926020929190829003018186803b158015611ca957600080fd5b505afa158015611cbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce191906145d9565b6001600160a01b0316336001600160a01b03161480611d085750336001600160a01b038216145b611d245760405162461bcd60e51b815260040161116a90614ef4565b611d2f826001615369565b6001555050565b600060029054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b158015611d8357600080fd5b505afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb91906145d9565b6001600160a01b0316336001600160a01b031614611e0c5760405162461bcd60e51b815260206004820152600e60248201526d43414c4c4241434b535f4f4e4c5960901b604482015260640161116a565b6000848152600660209081526040808320600d01548352600c90915281209083611e37576001611e3a565b60005b60ff1690508215611e735784828260028110611e5857611e586156cb565b016000828254611e689190615369565b90915550611ec89050565b84828260028110611e8657611e866156cb565b015411611e94576000611eb3565b84828260028110611ea757611ea76156cb565b0154611eb391906154a6565b828260028110611ec557611ec56156cb565b01555b505050505050565b6000546201000090046001600160a01b03163314611f1f5760405162461bcd60e51b815260206004820152600c60248201526b53544f524147455f4f4e4c5960a01b604482015260640161116a565b6001600160a01b039390931660009081526010602090815260408083209483529381528382209282529190915220805460ff1916911515919091179055565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015611fac57600080fd5b505afa158015611fc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe491906145d9565b6001600160a01b0316336001600160a01b0316146120145760405162461bcd60e51b815260040161116a90614ef4565b80803515801590612029575060008160200135115b6120625760405162461bcd60e51b815260206004820152600a60248201526915d493d391d7d191515160b21b604482015260640161116a565b6101c08201356000818152600a60205260409020546120935760405162461bcd60e51b815260040161116a90614ecc565b600084815260066020908152604080832060028101548452600b9092529091205460ff166120d35760405162461bcd60e51b815260040161116a90614ea3565b60a0840135600582015560c0840135600682015560e0840135600782015561010084013560088201556101208401356009820155610140840135600a820155610160840135600b820155610180840135600c8201556101a0840135600d8201556101c0840135600e820155833581556020840135600182015560408401356002820155610260840135601382015561028084013560148201556101e0840135600f8201556102008401356010820155610220840135601182015561024084013560128201556121aa6102c085016102a0860161470c565b60158201805460ff19169115159190911790556060840135158015906121e9575060006121dd60a08601608087016145bc565b6001600160a01b031614155b156122085760608401600382016122008282615584565b905050612222565b600060038201556004810180546001600160a01b03191690555b6040518581527f123a1b961ae93e7acda9790b318237b175b45ac09277cd3614305d8baa3f1953906020015b60405180910390a15050505050565b600080846122745761226f8688615467565b61227e565b61227e8787615467565b905060006122936402540be4006063196153c3565b6000858152600660205260408120600f0154919250906122b9906402540be400906153c3565b9050886122cb6402540be40088614291565b6122d68560646153c3565b6122e091906153c3565b6122ea9190615381565b9350818412612306578084136123005783612308565b80612308565b815b9998505050505050505050565b600081815260066020908152604080832060140154835482516337198e3d60e21b815292516064949293620100009092046001600160a01b03169263dc6638f49260048082019391829003018186803b15801561237157600080fd5b505afa158015612385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a991906147ec565b6123b39190615448565b61163e91906153af565b6000818152600660209081526040808320600d01548352600c90915281206001810154905461163e9190615369565b600054604080516312d43a5160e01b815290517392ed158d5e423cfdc9eed5bd7328fff7ced6ff94926201000090046001600160a01b0316916312d43a51916004808301926020929190829003018186803b15801561244a57600080fd5b505afa15801561245e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248291906145d9565b6001600160a01b0316336001600160a01b031614806124a95750336001600160a01b038216145b6124c55760405162461bcd60e51b815260040161116a90614ef4565b506000928352600660209081526040808520600d01548552600c90915290922090815560010155565b60008281526011602052604081206002810154829061250f906001906154a6565b90505b801561255b57600081815260038301602052604090205484111561254957600090815260049091016020526040902054905061163e565b8061255381615618565b915050612512565b506000949350505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156125b457600080fd5b505afa1580156125c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ec91906145d9565b6001600160a01b0316336001600160a01b03161461261c5760405162461bcd60e51b815260040161116a90614ef4565b600081815260066020908152604080832060028101548452600b9092529091205460ff1661265c5760405162461bcd60e51b815260040161116a90614ea3565b60028101546000908152600b602052604090819020805460ff19169055517fbc60496f15270554a3788ef8ac1a84e07392d3d0d3ac1cd4235eb12e44796b80906115df9084815260200190565b6000808212156126bb575060006110ad565b60005b6000858152600a6020526040902060040154811015612723576000858152600a602052604090206005018054829081106126fa576126fa6156cb565b906000526020600020015483101561271157612723565b8061271b81615664565b9150506126be565b600060646402540be4006127378688615448565b61274191906153af565b61274b91906153af565b6000878152600a6020526040902060060180549192506064916402540be4009184918690811061277d5761277d6156cb565b90600052602060002001546127929190615448565b61279c91906153af565b6127a691906153af565b9695505050505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156127fe57600080fd5b505afa158015612812573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283691906145d9565b6001600160a01b0316336001600160a01b0316146128665760405162461bcd60e51b815260040161116a90614ef4565b60008281526009602052604090206001015482906128b95760405162461bcd60e51b815260206004820152601060248201526f11d493d55417d393d517d31254d5115160821b604482015260640161116a565b81600084815260096020526040902083906128d482826157e1565b50506040518481527fcfde8f228364c70f12cbbac5a88fc91ceca76dd750ac93364991a333b34afb8e90602001611254565b6000806064612914846129e4565b6000858152600660205260409020601301546129309190615448565b61293a91906153af565b6000848152600660205260409020601101549091506064906110a39083615448565b6129646142a3565b6000828152600e6020908152604080832081516101608101909252909290918391908201908390600a90835b828210156129d657604080518082019182905290600284810287019182845b8154815260200190600101908083116129af57505050505081526020019060010190612990565b505050915250909392505050565b60006064600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015612a3657600080fd5b505afa158015612a4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6e91906145d9565b6001600160a01b0316637b78d7826040518163ffffffff1660e01b815260040160206040518083038186803b158015612aa657600080fd5b505afa158015612aba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ade91906147ec565b6000848152600660209081526040808320600d0154835260099091529020600101546123b39190615448565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015612b5857600080fd5b505afa158015612b6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9091906145d9565b6001600160a01b0316336001600160a01b031614612bc05760405162461bcd60e51b815260040161116a90614ef4565b60008a8152601160205260409020612bd9818b8b6142bb565b50612be86001820189896142bb565b506002810186905560005b86811015612c6f57858582818110612c0d57612c0d6156cb565b9050602002013582600301600083815260200190815260200160002081905550838382818110612c3f57612c3f6156cb565b60008481526004860160209081526040909120910292909201359091555080612c6781615664565b915050612bf3565b507f101f216063e0a5d147edef5989e1844bf35b58c1c0c4a89b55f32dec90a245e48b8b8b8b8b8b8b8b8b8b604051612cb19a99989796959493929190615200565b60405180910390a15050505050505050505050565b612cce61433f565b612cf4604051806060016040528060608152602001600081526020016000151581525090565b612cfc614421565b600084815260066020818152604080842081516101a08101835281546101408201908152600183015461016083015260028301546101808301528152825180840184526003830154815260048301546001600160a01b03168186015281850152600582015481840152938101546060808601919091528251608081810185526007840154825260088401548287015260098085015483870152600a808601548486015282890193909352600b85015460a0808a0191909152600c86015460c0808b0191909152600d87015460e0808c01918252600e8901546101008d019081528a519182018b52600f8a0154825260108a0154828d015260118a0154828c015260128a0154828a015260138a01549682019690965260148901549381019390935260159097015460ff161515908201526101208901529351885292855283872092518752909352938190208151928301909152835492938493909290839082908290612e679061562f565b80601f0160208091040260200160405190810160405280929190818152602001828054612e939061562f565b8015612ee05780601f10612eb557610100808354040283529160200191612ee0565b820191906000526020600020905b815481529060010190602001808311612ec357829003601f168201915b50505050508152602001600182015481526020016002820160009054906101000a900460ff1615151515815250509150806040518060a001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482016040518060600160405290816000820154815260200160018201805480602002602001604051908101604052809291908181526020018280548015612fad57602002820191906000526020600020905b815481526020019060010190808311612f99575b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561300557602002820191906000526020600020905b815481526020019060010190808311612ff1575b5050509190925250505090525092989197509195509350505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561306f57600080fd5b505afa158015613083573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a791906145d9565b6001600160a01b0316336001600160a01b0316146130d75760405162461bcd60e51b815260040161116a90614ef4565b8281146130e357600080fd5b60005b838110156131b6576032838383818110613102576131026156cb565b90506020020135101561314c5760405162461bcd60e51b81526020600482015260126024820152710a48a8482a88abe8ab0868a8a88a6be9a82b60731b604482015260640161116a565b82828281811061315e5761315e6156cb565b90506020020135600d6000888152602001908152602001600020600087878581811061318c5761318c6156cb565b90506020020135815260200190815260200160002081905550806131af90615664565b90506130e6565b507ff66559a3ee7945e0e49289392f86db1a3a3049abc2a1c89664a702fa04273227858585858560405161224e9594939291906151b9565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561323c57600080fd5b505afa158015613250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061327491906145d9565b6001600160a01b0316336001600160a01b0316146132a45760405162461bcd60e51b815260040161116a90614ef4565b808035158015906132b9575060008160200135115b6132f25760405162461bcd60e51b815260206004820152600a60248201526915d493d391d7d191515160b21b604482015260640161116a565b6101a08201356000818152600960205260409020600101546133495760405162461bcd60e51b815260206004820152601060248201526f11d493d55417d393d517d31254d5115160821b604482015260640161116a565b6101c08301356000818152600a602052604090205461337a5760405162461bcd60e51b815260040161116a90614ecc565b6040808501356000908152600b602052205460ff16156133d25760405162461bcd60e51b81526020600482015260136024820152721410525497d053149150511657d31254d51151606a1b604482015260640161116a565b600254600090815260066020526040902084906133ef82826158fc565b50506040808501356000908152600b602052908120805460ff19166001179055600280547ff12b8f222c927a2f4e4a6e5f46768b7cf45296bf1a48d563c3e2341d4bbd56029290919061344183615664565b909155506040805191825286810135602083015201611254565b6009602052600090815260409020805481906134769061562f565b80601f01602080910402602001604051908101604052809291908181526020018280546134a29061562f565b80156134ef5780601f106134c4576101008083540402835291602001916134ef565b820191906000526020600020905b8154815290600101906020018083116134d257829003601f168201915b50505050600183015460029093015491929160ff16905083565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561355757600080fd5b505afa15801561356b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061358f91906145d9565b6001600160a01b0316336001600160a01b0316146135bf5760405162461bcd60e51b815260040161116a90614ef4565b600082815260066020908152604080832060028101548452600b9092529091205460ff166135ff5760405162461bcd60e51b815260040161116a90614ea3565b60008381526007602081815260409283902085358155908501356001820155848301356002820155606085013560038201556080850135600482015560a0850135600582015560c0850135600682015560e0850135918101919091556101008401356008820155610120840135600982015590517faa40309aef879624006da7c0cefe8cb88b3ba84b79613bdcbba1dc3da2980a3890611254908590614f16565b6000816136be576000838152600660205260409020600701546110ad565b505060009081526006602052604090206009015490565b6000816136f3576000838152600660205260409020600801546110ad565b50506000908152600660205260409020600a015490565b600c602052816000526040600020816002811061372657600080fd5b01549150829050565b60116020526000908152604090208054819061374a9061562f565b80601f01602080910402602001604051908101604052809291908181526020018280546137769061562f565b80156137c35780601f10613798576101008083540402835291602001916137c3565b820191906000526020600020905b8154815290600101906020018083116137a657829003601f168201915b5050505050908060010180546137d89061562f565b80601f01602080910402602001604051908101604052809291908181526020018280546138049061562f565b80156138515780601f1061382657610100808354040283529160200191613851565b820191906000526020600020905b81548152906001019060200180831161383457829003601f168201915b5050505050908060020154905083565b6000606461386e836129e4565b6000848152600660205260409020601301546123b39190615448565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156138d857600080fd5b505afa1580156138ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061391091906145d9565b6001600160a01b0316336001600160a01b0316146139405760405162461bcd60e51b815260040161116a90614ef4565b806003546000908152600960205260409020829061395e82826157e1565b5050600380547faf17de8e82beccc440012117a600dc37e26925225d0f1ee192fc107eb3dcbca491600061399183615664565b9091555061399f84806152e2565b6040516115df939291906151e6565b600054610100900460ff16158080156139ce5750600054600160ff909116105b806139e85750303b1580156139e8575060005460ff166001145b613a4b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161116a565b6000805460ff191660011790558015613a6e576000805461ff0019166101001790555b60008211613aab5760405162461bcd60e51b815260206004820152600a60248201526904f524445525f49445f360b41b604482015260640161116a565b60018290556000805462010000600160b01b031916620100006001600160a01b038616021790558015613b18576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000831580613b5857506000828152600660205260409020600f0154613b49906402540be400906153c3565b613b56878686898761225d565b145b15611461576000828152600660205260408120600f0154606490613b82908890611429908b615448565b613b8c91906153af565b905083613bac5786811115613ba2576000611459565b61144a81886154a6565b6114598188615369565b6000818152601160205260408120805460609283929091839182918190613bdc9061562f565b80601f0160208091040260200160405190810160405280929190818152602001828054613c089061562f565b8015613c555780601f10613c2a57610100808354040283529160200191613c55565b820191906000526020600020905b815481529060010190602001808311613c3857829003601f168201915b50505050509550806001018054613c6b9061562f565b80601f0160208091040260200160405190810160405280929190818152602001828054613c979061562f565b8015613ce45780601f10613cb957610100808354040283529160200191613ce4565b820191906000526020600020905b815481529060010190602001808311613cc757829003601f168201915b5050505050945080600201549350836001600160401b03811115613d0a57613d0a6156e1565b604051908082528060200260200182016040528015613d33578160200160208202803683370190505b509250836001600160401b03811115613d4e57613d4e6156e1565b604051908082528060200260200182016040528015613d77578160200160208202803683370190505b50915060005b84811015613dfb5760008181526003830160205260409020548451859083908110613daa57613daa6156cb565b60200260200101818152505081600401600082815260200190815260200160002054838281518110613dde57613dde6156cb565b602090810291909101015280613df381615664565b915050613d7d565b505091939590929450565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015613e5457600080fd5b505afa158015613e68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e8c91906145d9565b6001600160a01b0316336001600160a01b031614613ebc5760405162461bcd60e51b815260040161116a90614ef4565b6000828152600a60205260409020548290613ee95760405162461bcd60e51b815260040161116a90614ecc565b81803515801590613efe575060008160400135115b8015613f0e575060008160600135115b613f475760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f4645455360b01b604482015260640161116a565b6000848152600a602052604090208390613f618282615704565b50506040518481527f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c7690602001611254565b6000546201000090046001600160a01b03163314613fe25760405162461bcd60e51b815260206004820152600c60248201526b53544f524147455f4f4e4c5960a01b604482015260640161116a565b6001600160a01b039092166000908152601060209081526040808320938352928152828220938252929092529020805460ff19169055565b60008054604051639cb87f2360e01b8152600481018690526024810183905282916201000090046001600160a01b031690639cb87f239060440160206040518083038186803b15801561406c57600080fd5b505afa158015614080573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140a491906147ec565b60008054604051639cb87f2360e01b815260048101899052600160248201529293509091620100009091046001600160a01b031690639cb87f239060440160206040518083038186803b1580156140fa57600080fd5b505afa15801561410e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061413291906147ec565b9050831561414b576141448583615369565b9150614158565b6141558582615369565b90505b60006141648284615369565b8561416f5783614171565b825b61417c906064615448565b61418691906153af565b6000888152600e60209081526040808320815161016081019092529394509192908290810182600a86835b828210156141f757604080518082019182905290600284810287019182845b8154815260200190600101908083116141d0575050505050815260200190600101906141b1565b5050509152509091506000905061420f600a846153af565b90506127106402540be400836000015183600a8110614230576142306156cb565b6020020151600160200201518451869085600a8110614251576142516156cb565b60200201515161426191906153c3565b61426b9190615328565b6142759190615448565b61230891906153af565b6000816110a36402540be40085615448565b60006402540be4006110a38385615448565b60405180602001604052806142b661446c565b905290565b8280546142c79061562f565b90600052602060002090601f0160209004810192826142e9576000855561432f565b82601f106143025782800160ff1982351617855561432f565b8280016001018555821561432f579182015b8281111561432f578235825591602001919060010190614314565b5061433b92915061449a565b5090565b604080516101a081018252600061014082018181526101608301829052610180830182905282528251808401909352808352602083810191909152909190820190815260200160008152602001600081526020016143be6040518060800160405280600081526020016000815260200160008152602001600081525090565b8152602001600081526020016000815260200160008152602001600081526020016142b66040518060e001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b6040518060a00160405280600081526020016000815260200160008152602001600081526020016142b660405180606001604052806000815260200160608152602001606081525090565b604051806101400160405280600a905b6144846144af565b81526020019060019003908161447c5790505090565b5b8082111561433b576000815560010161449b565b60405180604001604052806002906020820280368337509192915050565b60008083601f8401126144df57600080fd5b5081356001600160401b038111156144f657600080fd5b6020830191508360208260051b850101111561451157600080fd5b9250929050565b60008083601f84011261452a57600080fd5b5081356001600160401b0381111561454157600080fd5b60208301915083602082850101111561451157600080fd5b6000610140828403121561456c57600080fd5b50919050565b600060a0828403121561456c57600080fd5b60006060828403121561456c57600080fd5b60006102c0828403121561456c57600080fd5b6000610280828403121561456c57600080fd5b6000602082840312156145ce57600080fd5b81356110ad816159eb565b6000602082840312156145eb57600080fd5b81516110ad816159eb565b6000806040838503121561460957600080fd5b8235614614816159eb565b946020939093013593505050565b60008060006060848603121561463757600080fd5b8335614642816159eb565b95602085013595506040909401359392505050565b6000806000806080858703121561466d57600080fd5b8435614678816159eb565b93506020850135925060408501359150606085013561469681615a03565b939692955090935050565b600080600080604085870312156146b757600080fd5b84356001600160401b03808211156146ce57600080fd5b6146da888389016144cd565b909650945060208701359150808211156146f357600080fd5b50614700878288016144cd565b95989497509550505050565b60006020828403121561471e57600080fd5b81356110ad81615a03565b60006020828403121561473b57600080fd5b5035919050565b60006020828403121561475457600080fd5b81356001600160401b0381111561476a57600080fd5b61477684828501614572565b949350505050565b60006020828403121561479057600080fd5b81356001600160401b038111156147a657600080fd5b61477684828501614584565b60006102c082840312156147c557600080fd5b6110ad8383614596565b600061028082840312156147e257600080fd5b6110ad83836145a9565b6000602082840312156147fe57600080fd5b5051919050565b60008060008060006060868803121561481d57600080fd5b8535945060208601356001600160401b038082111561483b57600080fd5b61484789838a016144cd565b9096509450604088013591508082111561486057600080fd5b5061486d888289016144cd565b969995985093965092949392505050565b6000806040838503121561489157600080fd5b8235915060208301356148a381615a03565b809150509250929050565b60008060008060008060008060008060c08b8d0312156148cd57600080fd5b8a35995060208b01356001600160401b03808211156148eb57600080fd5b6148f78e838f01614518565b909b50995060408d013591508082111561491057600080fd5b61491c8e838f01614518565b909950975060608d0135965060808d013591508082111561493c57600080fd5b6149488e838f016144cd565b909650945060a08d013591508082111561496157600080fd5b5061496e8d828e016144cd565b915080935050809150509295989b9194979a5092959850565b600080610160838503121561499b57600080fd5b823591506149ac8460208501614559565b90509250929050565b600080604083850312156149c857600080fd5b8235915060208301356001600160401b038111156149e557600080fd5b6149f185828601614572565b9150509250929050565b60008060408385031215614a0e57600080fd5b8235915060208301356001600160401b03811115614a2b57600080fd5b6149f185828601614584565b6000806102e08385031215614a4b57600080fd5b823591506149ac8460208501614596565b6000806102a08385031215614a7057600080fd5b823591506149ac84602085016145a9565b60008060408385031215614a9457600080fd5b50508035926020909101359150565b600080600060608486031215614ab857600080fd5b83359250602084013591506040840135614ad181615a03565b809150509250925092565b60008060008060808587031215614af257600080fd5b84359350602085013592506040850135614b0b81615a03565b9150606085013561469681615a03565b600080600080600060a08688031215614b3357600080fd5b85359450602086013593506040860135614b4c81615a03565b94979396509394606081013594506080013592915050565b600080600060608486031215614b7957600080fd5b505081359360208301359350604090920135919050565b600080600080600060a08688031215614ba857600080fd5b8535945060208601359350604086013592506060860135614bc881615a03565b949793965091946080013592915050565b81835260006001600160fb1b03831115614bf257600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b83811015614c3f57815187529582019590820190600101614c23565b509495945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845260005b81811015614c9957602081850181015186830182015201614c7d565b81811115614cab576000602083870101525b50601f01601f19169290920160200192915050565b805182526020810151602083015260408101516040830152606081015160608301526000608082015160a0608085015261477660a0850182614d34565b6000815160608452614d126060850182614c73565b9050602083015160208501526040830151151560408501528091505092915050565b805182526000602082015160606020850152614d536060850182614c0f565b9050604083015184820360408601526114648282614c0f565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c0810151151560c08301525050565b604081526000614dc6604083018688614bd9565b8281036020840152614dd9818587614bd9565b979650505050505050565b606081526000614df76060830186614c73565b8281036020840152614e098186614c73565b915050826040830152949350505050565b60a081526000614e2d60a0830188614c73565b8281036020840152614e3f8188614c73565b90508560408401528281036060840152614e598186614c0f565b90508281036080840152614e6d8185614c0f565b98975050505050505050565b606081526000614e8c6060830186614c73565b602083019490945250901515604090910152919050565b6020808252600f908201526e1410525497d393d517d31254d51151608a1b604082015260600190565b6020808252600e908201526d11915157d393d517d31254d5115160921b604082015260600190565b602080825260089082015267474f565f4f4e4c5960c01b604082015260600190565b610140810161163e8284803582526020810135602083015260408101356040830152606081013560608301526080810135608083015260a081013560a083015260c081013560c083015260e081013560e08301526101008082013581840152506101208082013581840152505050565b815181526020808301516001600160a01b0316908201526040810161163e565b8151815260208083015190820152604080830151908201526060810161163e565b8a5181526020808c0151908201526040808c0151908201526102c081018a51606083015260208b01516001600160a01b0316608083015260a082018a905260c08201899052875160e08301526020880151610100830152604088015161012083015260608801516101408301528661016083015285610180830152846101a0830152836101c083015261505e6101e0830184614d6c565b9b9a5050505050505050505050565b60006103006150918387518051825260208082015190830152604090810151910152565b60208681015180516060860152908101516001600160a01b031660808501525060408681015160a085015260608088015160c08601526080880151805160e08701526020810151610100870152918201516101208601528101516101408501525060a086015161016084015260c086015161018084015260e08601516101a08401526101008601516101c08401526101208601516151336101e0850182614d6c565b50806102c084015261514781840186614cfd565b90508281036102e08401526127a68185614cc0565b8151610280820190826000805b600a8110156151af57835183835b6002811015615196578251825260209283019290910190600101615177565b5050506020939093019260409290920191600101615169565b5050505092915050565b8581526060602082015260006151d3606083018688614bd9565b8281036040840152614e6d818587614bd9565b838152604060208201526000611464604083018486614c4a565b8a815260c06020820152600061521a60c083018b8d614c4a565b828103604084015261522d818a8c614c4a565b90508760608401528281036080840152615248818789614bd9565b905082810360a084015261525d818587614bd9565b9d9c50505050505050505050505050565b85815284602082015283604082015282606082015260a060808201526000614dd960a0830184614d34565b6000808335601e198436030181126152b057600080fd5b8301803591506001600160401b038211156152ca57600080fd5b6020019150600581901b360382131561451157600080fd5b6000808335601e198436030181126152f957600080fd5b8301803591506001600160401b0382111561531357600080fd5b60200191503681900382131561451157600080fd5b600080821280156001600160ff1b038490038513161561534a5761534a61569f565b600160ff1b83900384128116156153635761536361569f565b50500190565b6000821982111561537c5761537c61569f565b500190565b600082615390576153906156b5565b600160ff1b8214600019841416156153aa576153aa61569f565b500590565b6000826153be576153be6156b5565b500490565b60006001600160ff1b03818413828413808216868404861116156153e9576153e961569f565b600160ff1b60008712828116878305891216156154085761540861569f565b600087129250878205871284841616156154245761542461569f565b8785058712818416161561543a5761543a61569f565b505050929093029392505050565b60008160001904831182151516156154625761546261569f565b500290565b60008083128015600160ff1b8501841216156154855761548561569f565b6001600160ff1b03840183138116156154a0576154a061569f565b50500390565b6000828210156154b8576154b861569f565b500390565b601f821115613b1857806000526020600020601f840160051c810160208510156154e45750805b6154f6601f850160051c8301826154fd565b5050505050565b5b8181101561551257600081556001016154fe565b5050565b600160401b83111561552a5761552a6156e1565b8054838255808410156155505781600052602060002061554e8282018683016154fd565b505b50818160005260208060002060005b8681101561557b5783358255928201926001918201910161555f565b50505050505050565b8135815560018101602083013561559a816159eb565b81546001600160a01b0319166001600160a01b03919091161790555050565b813581556020820135600182015560408201356002820155606082013560038201556080820135600482015560a0820135600582015560c08201356155fd81615a03565b60068201805482151560ff1660ff1991909116179055505050565b6000816156275761562761569f565b506000190190565b600181811c9082168061564357607f821691505b6020821081141561456c57634e487b7160e01b600052602260045260246000fd5b60006000198214156156785761567861569f565b5060010190565b600060ff821660ff8114156156965761569661569f565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6000813561163e81615a03565b8135815560016020808401358284015560408401356002840155606084013560038401556080840135605e1985360301811261573f57600080fd5b8401803560048501556005840161575883830183615299565b600160401b81111561576c5761576c6156e1565b82548184558082101561579157836000528560002061578f8282018483016154fd565b505b506000928352848320925b818110156157b757823584559286019291850191860161579c565b505050506157c86040820182615299565b93509150506157db828260068601615516565b50505050565b8135601e198336030181126157f557600080fd5b820180356001600160401b0381111561580d57600080fd5b6020813603818401131561582057600080fd5b6158348261582e865461562f565b866154bd565b6000601f83116001811461586a576000841561585257508482018301355b600019600386901b1c1916600185901b1786556158c7565b600086815260209020601f19851690835b8281101561589c57878501860135825593850193600190910190850161587b565b50858210156158bb5760001960f88760031b161c198585890101351681555b505060018460011b0186555b505084013560018401555061551290506158e3604084016156f7565b6002830160ff1981541660ff8315151681178255505050565b8135815560208201356001820155604082013560028201556159246060830160038301615584565b60a0820135600582015560c0820135600682015560e0820135600782015561010082013560088201556101208201356009820155610140820135600a820155610160820135600b820155610180820135600c8201556101a0820135600d8201556101c0820135600e8201556155126101e08301600f83016155b9565b81816000805b600a811015611ec8578383835b60028110156159d25782358255602090920191600191820191016159b3565b50505060409390930192600292909201916001016159a6565b6001600160a01b0381168114615a0057600080fd5b50565b8015158114615a0057600080fdfea2646970667358221220afdf1678dc368ac0a486f0920c5e48af2fe9c34ce59dd170f987b8e1bb46202d64736f6c63430008070033","sourceMap":"309:27935:70:-:0;;;2276:53;;;;;;;;;-1:-1:-1;2300:22:70;:20;:22::i;:::-;309:27935;;5939:280:18;6007:13;;;;;;;6006:14;5998:66;;;;;-1:-1:-1;;;5998:66:18;;216:2:93;5998:66:18;;;198:21:93;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:93;;;338:37;5998:66:18;;;;;;392:19:93;5998:66:18;;;;6078:12;;6094:15;6078:12;;;:31;6074:139;;6125:12;:30;;-1:-1:-1;;6125:30:18;-1:-1:-1;6125:30:18;;;;;;6174:28;;;564:36:93;;;6174:28:18;;;;;;552:2:93;6174:28:18;;;6074:139;5939:280::o;422:184:93:-;309:27935:70;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106104125760003560e01c806374db8c89116102205780639ae6b9e011610130578063c9fb8b20116100b8578063e14ed99511610087578063e14ed99514610ea1578063e8b50f8414610ec5578063f11bbcc014611014578063f80aa68b14611027578063fb3e519d1461103a57600080fd5b8063c9fb8b2014610e0a578063cd6dc68714610e3e578063d703fb0814610e51578063daefa14514610e8e57600080fd5b8063b2e1b2d6116100ff578063b2e1b2d614610c6f578063b81b2b7114610c82578063b91ac78814610c8b578063befef00b14610db3578063c5f5951a14610dc657600080fd5b80639ae6b9e014610c075780639b2f6cab14610c27578063a1ead06414610c3a578063af11959f14610c4d57600080fd5b80638f6d1431116101b35780639586621f116101825780639586621f14610b9957806395fe913914610bac57806396324bd414610bbf57806397db453814610be1578063995b765614610bf457600080fd5b80638f6d143114610af9578063925931fc14610b0c57806393cf8ed314610b155780639567dccf14610b7757600080fd5b806387698869116101ef5780638769886914610aaa578063885e275014610abd5780638a549af714610ac65780638c9a0ea414610ae657600080fd5b806374db8c8914610a3e5780637719d43c14610a515780637c07e44514610a64578063836a341a14610a7757600080fd5b80634acc79ed116103265780635fc8cd28116102ae57806369d4bda31161027d57806369d4bda3146109b35780636d8b5224146109e95780636dc37de3146109f257806372282ebe14610a18578063737113b514610a2b57600080fd5b80635fc8cd28146107c0578063649a648814610912578063658de48a14610945578063685e905b1461094e57600080fd5b806354219e62116102f557806354219e621461075157806354d7dccb1461076457806356e5536c146107775780635b3f88551461078a5780635e4f8f59146107ad57600080fd5b80634acc79ed146106f45780634e1d47ea146107185780634ffe8aec1461072b578063503a202f1461073e57600080fd5b8063223673e5116103a95780632bf6ae41116103785780632bf6ae41146105c9578063302f81fc146105dc5780633c44d0a3146106125780633d7a5f1a1461063557806342dee1ad1461064857600080fd5b8063223673e51461054d578063238cd23f1461056057806324abd3fb146105935780632b1cbe9d146105b657600080fd5b806316fff074116103e557806316fff074146104905780631a67bacc146104c15780631eaa005c146104d457806321371f5e1461053a57600080fd5b8063108c35871461041757806310ed40881461043d57806312f070cd1461045257806315b40d9114610465575b600080fd5b61042a610425366004614729565b61104d565b6040519081526020015b60405180910390f35b61045061044b3660046146a1565b6110b4565b005b61042a61046036600461487e565b611262565b61042a610473366004614a81565b600d60209081526000928352604080842090915290825290205481565b6000546104a9906201000090046001600160a01b031681565b6040516001600160a01b039091168152602001610434565b6104506104cf3660046147cf565b611298565b61052d6104e2366004614729565b60408051606080820183526000808352602080840182905292840181905293845260068252928290208251938401835280548452600181015491840191909152600201549082015290565b6040516104349190614fa6565b61042a610548366004614b90565b6113b6565b61045061055b366004614742565b61146d565b61042a61056e366004614729565b6000908152600660209081526040808320600e01548352600a90915290206003015490565b6105a66105a1366004614729565b6115eb565b6040519015158152602001610434565b61042a6105c4366004614a81565b611623565b6104506105d7366004614987565b611644565b6105ef6105ea366004614729565b6117db565b604080519384526001600160a01b03909216602084015290820152606001610434565b61042a610620366004614729565b6000908152600660205260409020600d015490565b610450610643366004614a5c565b611a4f565b6106aa610656366004614729565b6007602052806000526040600020600091509050806000015490806001015490806002015490806003015490806004015490806005015490806006015490806007015490806008015490806009015490508a565b604080519a8b5260208b0199909952978901969096526060880194909452608087019290925260a086015260c085015260e084015261010083015261012082015261014001610434565b610707610702366004614729565b611b51565b60405161043495949392919061526e565b610450610726366004614729565b611c4b565b610450610739366004614adc565b611d36565b61045061074c366004614657565b611ed0565b61045061075f366004614a37565b611f5e565b61042a610772366004614b1b565b61225d565b61042a610785366004614729565b612315565b6105a6610798366004614729565b600b6020526000908152604090205460ff1681565b61042a6107bb366004614729565b6123bd565b61042a6107ce366004614729565b60009081526006602081815260409283902083516101a08101855281546101408201908152600183015461016083015260028301546101808301528152845180860186526003830154815260048301546001600160a01b031681850152818401526005820154818601529281015460608085019190915284516080818101875260078401548252600884015482860152600984015482880152600a8401548284015280860191909152600b83015460a0808701918252600c85015460c080890191909152600d86015460e0808a0191909152600e8701546101008a015289519081018a52600f870154815260108701549781019790975260118601549887019890985260128501549386019390935260138401549185019190915260148301549184019190915260159091015460ff16151593820193909352610120909101525190565b61042a610920366004614729565b6000908152600660209081526040808320600e01548352600a90915290206002015490565b61042a60045481565b6109a661095c366004614729565b604080518082019091526000808252602082015250600090815260066020908152604091829020825180840190935260038101548352600401546001600160a01b03169082015290565b6040516104349190614f86565b6105a66109c1366004614729565b6000908152600660209081526040808320600d01548352600990915290206002015460ff1690565b61042a60055481565b6105a6610a00366004614729565b60009081526006602052604090206015015460ff1690565b610450610a26366004614b64565b6123ec565b61042a610a39366004614a81565b6124ee565b610450610a4c366004614729565b612566565b61042a610a5f366004614b64565b6126a9565b610450610a723660046149fb565b6127b0565b61042a610a85366004614729565b6000908152600660209081526040808320600e01548352600a90915290206001015490565b61042a610ab8366004614729565b612906565b61042a60035481565b610ad9610ad4366004614729565b61295c565b604051610434919061515c565b61042a610af4366004614729565b6129e4565b610450610b073660046148ae565b612b0a565b61042a60015481565b6106aa610b23366004614729565b6008602052806000526040600020600091509050806000015490806001015490806002015490806003015490806004015490806005015490806006015490806007015490806008015490806009015490508a565b610b8a610b85366004614729565b612cc6565b6040516104349392919061506d565b610450610ba7366004614805565b613021565b610450610bba3660046147b2565b6131ee565b610bd2610bcd366004614729565b61345b565b60405161043493929190614e79565b610450610bef366004614987565b613509565b61042a610c0236600461487e565b6136a0565b61042a610c15366004614729565b600f6020526000908152604090205481565b61042a610c3536600461487e565b6136d5565b61042a610c48366004614a81565b61370a565b610c60610c5b366004614729565b61372f565b60405161043493929190614de4565b61042a610c7d366004614729565b613861565b61042a60025481565b610d9d610c99366004614729565b60066020818152600092835260409283902083516060808201865282548252600183015482850152600283015482870152855180870187526003840154815260048401546001600160a01b031681860152600584015495840154875160808082018a52600787015482526008870154828901526009870154828b0152600a87015482860152600b870154600c880154600d890154600e8a01548d5160e081018f52600f8c0154815260108c01549c81019c909c5260118b01549d8c019d909d5260128a0154978b01979097526013890154928a0192909252601488015460a08a015260159097015460ff16151560c08901529498929796919590949093909290918a565b6040516104349a99989796959493929190614fc7565b610450610dc136600461477e565b61388a565b6105a6610dd4366004614622565b6001600160a01b0383166000908152601060209081526040808320858452825280832084845290915290205460ff169392505050565b6105a6610e18366004614622565b601060209081526000938452604080852082529284528284209052825290205460ff1681565b610450610e4c3660046145f6565b6139ae565b610e79610e5f366004614729565b600090815260076020526040902080546001909101549091565b60408051928352602083019190915201610434565b61042a610e9c366004614b90565b613b1d565b610eb4610eaf366004614729565b613bb6565b604051610434959493929190614e1a565b61042a610ed3366004614729565b60009081526006602081815260409283902083516101a08101855281546101408201908152600183015461016083015260028301546101808301528152845180860186526003830154815260048301546001600160a01b031681850152818401526005820154818601529281015460608085019190915284516080818101875260078401548252600884015482860152600984015482880152600a8401548284015280860191909152600b83015460a080870191909152600c84015460c0808801918252600d86015460e0808a0191909152600e8701546101008a015289519081018a52600f870154815260108701549781019790975260118601549887019890985260128501549386019390935260138401549185019190915260148301549084015260159091015460ff16151593820193909352610120909101525190565b6104506110223660046149b5565b613e06565b610450611035366004614622565b613f93565b61042a611048366004614aa3565b61401a565b600080606461105b846129e4565b6000858152600660205260409020601301546110779190615448565b61108191906153af565b6000848152600660205260409020601201549091506064906110a39083615448565b6110ad91906153af565b9392505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561110257600080fd5b505afa158015611116573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113a91906145d9565b6001600160a01b0316336001600160a01b0316146111735760405162461bcd60e51b815260040161116a90614ef4565b60405180910390fd5b8281146111b15760405162461bcd60e51b815260206004820152600c60248201526b0988a9cbe9a92a69a82a886960a31b604482015260640161116a565b60005b60ff811684111561121e5782828260ff168181106111d4576111d46156cb565b90506020020135600f600087878560ff168181106111f4576111f46156cb565b90506020020135815260200190815260200160002081905550806112179061567f565b90506111b4565b507fc5c5af5d05689513c60f635389c8449ac23f2b277af3a15f88c21c6de36fcf14848484846040516112549493929190614db2565b60405180910390a150505050565b600081611280576000838152600660205260409020600501546110ad565b50506000908152600660208190526040909120015490565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156112e657600080fd5b505afa1580156112fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131e91906145d9565b6001600160a01b0316336001600160a01b03161461134e5760405162461bcd60e51b815260040161116a90614ef4565b6005546000908152600e60205260409020819061136b82826159a0565b5050600580547f5d7a16e490fc66ca6522d4ba0437ac1a3b97cf25666340a19e408176295826d791600061139e83615664565b9091555060405190815260200160405180910390a150565b600080841180156113ff57506000828152600660205260409020601001546113e4906402540be400906153c3565b6113f0906000196153c3565b6113fd878686898761225d565b125b156114615760008281526006602052604081206010015460649061142f908890611429908b615448565b9061427f565b61143991906153af565b90508361144f5761144a8188615369565b611459565b61145981886154a6565b915050611464565b50825b95945050505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156114bb57600080fd5b505afa1580156114cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f391906145d9565b6001600160a01b0316336001600160a01b0316146115235760405162461bcd60e51b815260040161116a90614ef4565b80803515801590611538575060008160400135115b8015611548575060008160600135115b6115815760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f4645455360b01b604482015260640161116a565b6004546000908152600a60205260409020829061159e8282615704565b5050600480547f59fdca5c5019c8bddf5b408b17992d0fce838508a49ac6a398c8e06e645cfdf89160006115d183615664565b909155506040519081526020015b60405180910390a15050565b6000818152600660205260408120600d0154600281148061160c5750806003145b1561161a5750600092915050565b50600192915050565b6000828152600d602090815260408083208484529091529020545b92915050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561169257600080fd5b505afa1580156116a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ca91906145d9565b6001600160a01b0316336001600160a01b0316146116fa5760405162461bcd60e51b815260040161116a90614ef4565b600082815260066020908152604080832060028101548452600b9092529091205460ff1661173a5760405162461bcd60e51b815260040161116a90614ea3565b60008381526008602081815260409283902085358155908501356001820155848301356002820155606085013560038201556080850135600482015560a0850135600582015560c0850135600682015560e0850135600782015561010085013591810191909155610120840135600982015590517fb065caa6c83f0960c83293dac3e2885911a34fb60f81e3571b9e4c266de93c5290611254908590614f16565b60008060008060029054906101000a90046001600160a01b03166001600160a01b0316633078fff56040518163ffffffff1660e01b815260040160206040518083038186803b15801561182d57600080fd5b505afa158015611841573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186591906145d9565b6001600160a01b0316336001600160a01b0316146118b75760405162461bcd60e51b815260206004820152600f60248201526e41474752454741544f525f4f4e4c5960881b604482015260640161116a565b600084815260066020818152604080842081516101a08101835281546101408201908152600183015461016083015260028301546101808301528152825180840184526003830154815260048301546001600160a01b031681860152818501526005820154818401529381015460608086019190915282516080818101855260078401548252600884015482870152600984015482860152600a8401548284015280870191909152600b8084015460a080890191909152600c85015460c0808a0191909152600d86015460e0808b0191909152600e8701546101008b015287519081018852600f87015481526010870154818a015260118701548189015260128701549581019590955260138601549385019390935260148501549084015260159093015460ff90811615159183019190915261012086019190915284518301518652925290922054909116611a1f5760405162461bcd60e51b815260040161116a90614ea3565b805160400151602080830151015160018054906000611a3d83615664565b91905055935093509350509193909250565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015611a9d57600080fd5b505afa158015611ab1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad591906145d9565b6001600160a01b0316336001600160a01b031614611b055760405162461bcd60e51b815260040161116a90614ef4565b6000828152600e602052604090208190611b1f82826159a0565b50506040518281527f049d8e73ae29fd805de1f8eae372a5020742554b37118c1e33687e89ef3027ff906020016115df565b600a602052806000526040600020600091509050806000015490806001015490806002015490806003015490806004016040518060600160405290816000820154815260200160018201805480602002602001604051908101604052809291908181526020018280548015611be557602002820191906000526020600020905b815481526020019060010190808311611bd1575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020018280548015611c3d57602002820191906000526020600020905b815481526020019060010190808311611c29575b505050505081525050905085565b600054604080516312d43a5160e01b815290517392ed158d5e423cfdc9eed5bd7328fff7ced6ff94926201000090046001600160a01b0316916312d43a51916004808301926020929190829003018186803b158015611ca957600080fd5b505afa158015611cbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ce191906145d9565b6001600160a01b0316336001600160a01b03161480611d085750336001600160a01b038216145b611d245760405162461bcd60e51b815260040161116a90614ef4565b611d2f826001615369565b6001555050565b600060029054906101000a90046001600160a01b03166001600160a01b031662b127836040518163ffffffff1660e01b815260040160206040518083038186803b158015611d8357600080fd5b505afa158015611d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dbb91906145d9565b6001600160a01b0316336001600160a01b031614611e0c5760405162461bcd60e51b815260206004820152600e60248201526d43414c4c4241434b535f4f4e4c5960901b604482015260640161116a565b6000848152600660209081526040808320600d01548352600c90915281209083611e37576001611e3a565b60005b60ff1690508215611e735784828260028110611e5857611e586156cb565b016000828254611e689190615369565b90915550611ec89050565b84828260028110611e8657611e866156cb565b015411611e94576000611eb3565b84828260028110611ea757611ea76156cb565b0154611eb391906154a6565b828260028110611ec557611ec56156cb565b01555b505050505050565b6000546201000090046001600160a01b03163314611f1f5760405162461bcd60e51b815260206004820152600c60248201526b53544f524147455f4f4e4c5960a01b604482015260640161116a565b6001600160a01b039390931660009081526010602090815260408083209483529381528382209282529190915220805460ff1916911515919091179055565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015611fac57600080fd5b505afa158015611fc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe491906145d9565b6001600160a01b0316336001600160a01b0316146120145760405162461bcd60e51b815260040161116a90614ef4565b80803515801590612029575060008160200135115b6120625760405162461bcd60e51b815260206004820152600a60248201526915d493d391d7d191515160b21b604482015260640161116a565b6101c08201356000818152600a60205260409020546120935760405162461bcd60e51b815260040161116a90614ecc565b600084815260066020908152604080832060028101548452600b9092529091205460ff166120d35760405162461bcd60e51b815260040161116a90614ea3565b60a0840135600582015560c0840135600682015560e0840135600782015561010084013560088201556101208401356009820155610140840135600a820155610160840135600b820155610180840135600c8201556101a0840135600d8201556101c0840135600e820155833581556020840135600182015560408401356002820155610260840135601382015561028084013560148201556101e0840135600f8201556102008401356010820155610220840135601182015561024084013560128201556121aa6102c085016102a0860161470c565b60158201805460ff19169115159190911790556060840135158015906121e9575060006121dd60a08601608087016145bc565b6001600160a01b031614155b156122085760608401600382016122008282615584565b905050612222565b600060038201556004810180546001600160a01b03191690555b6040518581527f123a1b961ae93e7acda9790b318237b175b45ac09277cd3614305d8baa3f1953906020015b60405180910390a15050505050565b600080846122745761226f8688615467565b61227e565b61227e8787615467565b905060006122936402540be4006063196153c3565b6000858152600660205260408120600f0154919250906122b9906402540be400906153c3565b9050886122cb6402540be40088614291565b6122d68560646153c3565b6122e091906153c3565b6122ea9190615381565b9350818412612306578084136123005783612308565b80612308565b815b9998505050505050505050565b600081815260066020908152604080832060140154835482516337198e3d60e21b815292516064949293620100009092046001600160a01b03169263dc6638f49260048082019391829003018186803b15801561237157600080fd5b505afa158015612385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a991906147ec565b6123b39190615448565b61163e91906153af565b6000818152600660209081526040808320600d01548352600c90915281206001810154905461163e9190615369565b600054604080516312d43a5160e01b815290517392ed158d5e423cfdc9eed5bd7328fff7ced6ff94926201000090046001600160a01b0316916312d43a51916004808301926020929190829003018186803b15801561244a57600080fd5b505afa15801561245e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248291906145d9565b6001600160a01b0316336001600160a01b031614806124a95750336001600160a01b038216145b6124c55760405162461bcd60e51b815260040161116a90614ef4565b506000928352600660209081526040808520600d01548552600c90915290922090815560010155565b60008281526011602052604081206002810154829061250f906001906154a6565b90505b801561255b57600081815260038301602052604090205484111561254957600090815260049091016020526040902054905061163e565b8061255381615618565b915050612512565b506000949350505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156125b457600080fd5b505afa1580156125c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ec91906145d9565b6001600160a01b0316336001600160a01b03161461261c5760405162461bcd60e51b815260040161116a90614ef4565b600081815260066020908152604080832060028101548452600b9092529091205460ff1661265c5760405162461bcd60e51b815260040161116a90614ea3565b60028101546000908152600b602052604090819020805460ff19169055517fbc60496f15270554a3788ef8ac1a84e07392d3d0d3ac1cd4235eb12e44796b80906115df9084815260200190565b6000808212156126bb575060006110ad565b60005b6000858152600a6020526040902060040154811015612723576000858152600a602052604090206005018054829081106126fa576126fa6156cb565b906000526020600020015483101561271157612723565b8061271b81615664565b9150506126be565b600060646402540be4006127378688615448565b61274191906153af565b61274b91906153af565b6000878152600a6020526040902060060180549192506064916402540be4009184918690811061277d5761277d6156cb565b90600052602060002001546127929190615448565b61279c91906153af565b6127a691906153af565b9695505050505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156127fe57600080fd5b505afa158015612812573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283691906145d9565b6001600160a01b0316336001600160a01b0316146128665760405162461bcd60e51b815260040161116a90614ef4565b60008281526009602052604090206001015482906128b95760405162461bcd60e51b815260206004820152601060248201526f11d493d55417d393d517d31254d5115160821b604482015260640161116a565b81600084815260096020526040902083906128d482826157e1565b50506040518481527fcfde8f228364c70f12cbbac5a88fc91ceca76dd750ac93364991a333b34afb8e90602001611254565b6000806064612914846129e4565b6000858152600660205260409020601301546129309190615448565b61293a91906153af565b6000848152600660205260409020601101549091506064906110a39083615448565b6129646142a3565b6000828152600e6020908152604080832081516101608101909252909290918391908201908390600a90835b828210156129d657604080518082019182905290600284810287019182845b8154815260200190600101908083116129af57505050505081526020019060010190612990565b505050915250909392505050565b60006064600060029054906101000a90046001600160a01b03166001600160a01b0316638a4adf246040518163ffffffff1660e01b815260040160206040518083038186803b158015612a3657600080fd5b505afa158015612a4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6e91906145d9565b6001600160a01b0316637b78d7826040518163ffffffff1660e01b815260040160206040518083038186803b158015612aa657600080fd5b505afa158015612aba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ade91906147ec565b6000848152600660209081526040808320600d0154835260099091529020600101546123b39190615448565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015612b5857600080fd5b505afa158015612b6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b9091906145d9565b6001600160a01b0316336001600160a01b031614612bc05760405162461bcd60e51b815260040161116a90614ef4565b60008a8152601160205260409020612bd9818b8b6142bb565b50612be86001820189896142bb565b506002810186905560005b86811015612c6f57858582818110612c0d57612c0d6156cb565b9050602002013582600301600083815260200190815260200160002081905550838382818110612c3f57612c3f6156cb565b60008481526004860160209081526040909120910292909201359091555080612c6781615664565b915050612bf3565b507f101f216063e0a5d147edef5989e1844bf35b58c1c0c4a89b55f32dec90a245e48b8b8b8b8b8b8b8b8b8b604051612cb19a99989796959493929190615200565b60405180910390a15050505050505050505050565b612cce61433f565b612cf4604051806060016040528060608152602001600081526020016000151581525090565b612cfc614421565b600084815260066020818152604080842081516101a08101835281546101408201908152600183015461016083015260028301546101808301528152825180840184526003830154815260048301546001600160a01b03168186015281850152600582015481840152938101546060808601919091528251608081810185526007840154825260088401548287015260098085015483870152600a808601548486015282890193909352600b85015460a0808a0191909152600c86015460c0808b0191909152600d87015460e0808c01918252600e8901546101008d019081528a519182018b52600f8a0154825260108a0154828d015260118a0154828c015260128a0154828a015260138a01549682019690965260148901549381019390935260159097015460ff161515908201526101208901529351885292855283872092518752909352938190208151928301909152835492938493909290839082908290612e679061562f565b80601f0160208091040260200160405190810160405280929190818152602001828054612e939061562f565b8015612ee05780601f10612eb557610100808354040283529160200191612ee0565b820191906000526020600020905b815481529060010190602001808311612ec357829003601f168201915b50505050508152602001600182015481526020016002820160009054906101000a900460ff1615151515815250509150806040518060a001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482016040518060600160405290816000820154815260200160018201805480602002602001604051908101604052809291908181526020018280548015612fad57602002820191906000526020600020905b815481526020019060010190808311612f99575b505050505081526020016002820180548060200260200160405190810160405280929190818152602001828054801561300557602002820191906000526020600020905b815481526020019060010190808311612ff1575b5050509190925250505090525092989197509195509350505050565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561306f57600080fd5b505afa158015613083573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a791906145d9565b6001600160a01b0316336001600160a01b0316146130d75760405162461bcd60e51b815260040161116a90614ef4565b8281146130e357600080fd5b60005b838110156131b6576032838383818110613102576131026156cb565b90506020020135101561314c5760405162461bcd60e51b81526020600482015260126024820152710a48a8482a88abe8ab0868a8a88a6be9a82b60731b604482015260640161116a565b82828281811061315e5761315e6156cb565b90506020020135600d6000888152602001908152602001600020600087878581811061318c5761318c6156cb565b90506020020135815260200190815260200160002081905550806131af90615664565b90506130e6565b507ff66559a3ee7945e0e49289392f86db1a3a3049abc2a1c89664a702fa04273227858585858560405161224e9594939291906151b9565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561323c57600080fd5b505afa158015613250573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061327491906145d9565b6001600160a01b0316336001600160a01b0316146132a45760405162461bcd60e51b815260040161116a90614ef4565b808035158015906132b9575060008160200135115b6132f25760405162461bcd60e51b815260206004820152600a60248201526915d493d391d7d191515160b21b604482015260640161116a565b6101a08201356000818152600960205260409020600101546133495760405162461bcd60e51b815260206004820152601060248201526f11d493d55417d393d517d31254d5115160821b604482015260640161116a565b6101c08301356000818152600a602052604090205461337a5760405162461bcd60e51b815260040161116a90614ecc565b6040808501356000908152600b602052205460ff16156133d25760405162461bcd60e51b81526020600482015260136024820152721410525497d053149150511657d31254d51151606a1b604482015260640161116a565b600254600090815260066020526040902084906133ef82826158fc565b50506040808501356000908152600b602052908120805460ff19166001179055600280547ff12b8f222c927a2f4e4a6e5f46768b7cf45296bf1a48d563c3e2341d4bbd56029290919061344183615664565b909155506040805191825286810135602083015201611254565b6009602052600090815260409020805481906134769061562f565b80601f01602080910402602001604051908101604052809291908181526020018280546134a29061562f565b80156134ef5780601f106134c4576101008083540402835291602001916134ef565b820191906000526020600020905b8154815290600101906020018083116134d257829003601f168201915b50505050600183015460029093015491929160ff16905083565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b15801561355757600080fd5b505afa15801561356b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061358f91906145d9565b6001600160a01b0316336001600160a01b0316146135bf5760405162461bcd60e51b815260040161116a90614ef4565b600082815260066020908152604080832060028101548452600b9092529091205460ff166135ff5760405162461bcd60e51b815260040161116a90614ea3565b60008381526007602081815260409283902085358155908501356001820155848301356002820155606085013560038201556080850135600482015560a0850135600582015560c0850135600682015560e0850135918101919091556101008401356008820155610120840135600982015590517faa40309aef879624006da7c0cefe8cb88b3ba84b79613bdcbba1dc3da2980a3890611254908590614f16565b6000816136be576000838152600660205260409020600701546110ad565b505060009081526006602052604090206009015490565b6000816136f3576000838152600660205260409020600801546110ad565b50506000908152600660205260409020600a015490565b600c602052816000526040600020816002811061372657600080fd5b01549150829050565b60116020526000908152604090208054819061374a9061562f565b80601f01602080910402602001604051908101604052809291908181526020018280546137769061562f565b80156137c35780601f10613798576101008083540402835291602001916137c3565b820191906000526020600020905b8154815290600101906020018083116137a657829003601f168201915b5050505050908060010180546137d89061562f565b80601f01602080910402602001604051908101604052809291908181526020018280546138049061562f565b80156138515780601f1061382657610100808354040283529160200191613851565b820191906000526020600020905b81548152906001019060200180831161383457829003601f168201915b5050505050908060020154905083565b6000606461386e836129e4565b6000848152600660205260409020601301546123b39190615448565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b1580156138d857600080fd5b505afa1580156138ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061391091906145d9565b6001600160a01b0316336001600160a01b0316146139405760405162461bcd60e51b815260040161116a90614ef4565b806003546000908152600960205260409020829061395e82826157e1565b5050600380547faf17de8e82beccc440012117a600dc37e26925225d0f1ee192fc107eb3dcbca491600061399183615664565b9091555061399f84806152e2565b6040516115df939291906151e6565b600054610100900460ff16158080156139ce5750600054600160ff909116105b806139e85750303b1580156139e8575060005460ff166001145b613a4b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161116a565b6000805460ff191660011790558015613a6e576000805461ff0019166101001790555b60008211613aab5760405162461bcd60e51b815260206004820152600a60248201526904f524445525f49445f360b41b604482015260640161116a565b60018290556000805462010000600160b01b031916620100006001600160a01b038616021790558015613b18576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6000831580613b5857506000828152600660205260409020600f0154613b49906402540be400906153c3565b613b56878686898761225d565b145b15611461576000828152600660205260408120600f0154606490613b82908890611429908b615448565b613b8c91906153af565b905083613bac5786811115613ba2576000611459565b61144a81886154a6565b6114598188615369565b6000818152601160205260408120805460609283929091839182918190613bdc9061562f565b80601f0160208091040260200160405190810160405280929190818152602001828054613c089061562f565b8015613c555780601f10613c2a57610100808354040283529160200191613c55565b820191906000526020600020905b815481529060010190602001808311613c3857829003601f168201915b50505050509550806001018054613c6b9061562f565b80601f0160208091040260200160405190810160405280929190818152602001828054613c979061562f565b8015613ce45780601f10613cb957610100808354040283529160200191613ce4565b820191906000526020600020905b815481529060010190602001808311613cc757829003601f168201915b5050505050945080600201549350836001600160401b03811115613d0a57613d0a6156e1565b604051908082528060200260200182016040528015613d33578160200160208202803683370190505b509250836001600160401b03811115613d4e57613d4e6156e1565b604051908082528060200260200182016040528015613d77578160200160208202803683370190505b50915060005b84811015613dfb5760008181526003830160205260409020548451859083908110613daa57613daa6156cb565b60200260200101818152505081600401600082815260200190815260200160002054838281518110613dde57613dde6156cb565b602090810291909101015280613df381615664565b915050613d7d565b505091939590929450565b600060029054906101000a90046001600160a01b03166001600160a01b03166312d43a516040518163ffffffff1660e01b815260040160206040518083038186803b158015613e5457600080fd5b505afa158015613e68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e8c91906145d9565b6001600160a01b0316336001600160a01b031614613ebc5760405162461bcd60e51b815260040161116a90614ef4565b6000828152600a60205260409020548290613ee95760405162461bcd60e51b815260040161116a90614ecc565b81803515801590613efe575060008160400135115b8015613f0e575060008160600135115b613f475760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f4645455360b01b604482015260640161116a565b6000848152600a602052604090208390613f618282615704565b50506040518481527f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c7690602001611254565b6000546201000090046001600160a01b03163314613fe25760405162461bcd60e51b815260206004820152600c60248201526b53544f524147455f4f4e4c5960a01b604482015260640161116a565b6001600160a01b039092166000908152601060209081526040808320938352928152828220938252929092529020805460ff19169055565b60008054604051639cb87f2360e01b8152600481018690526024810183905282916201000090046001600160a01b031690639cb87f239060440160206040518083038186803b15801561406c57600080fd5b505afa158015614080573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140a491906147ec565b60008054604051639cb87f2360e01b815260048101899052600160248201529293509091620100009091046001600160a01b031690639cb87f239060440160206040518083038186803b1580156140fa57600080fd5b505afa15801561410e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061413291906147ec565b9050831561414b576141448583615369565b9150614158565b6141558582615369565b90505b60006141648284615369565b8561416f5783614171565b825b61417c906064615448565b61418691906153af565b6000888152600e60209081526040808320815161016081019092529394509192908290810182600a86835b828210156141f757604080518082019182905290600284810287019182845b8154815260200190600101908083116141d0575050505050815260200190600101906141b1565b5050509152509091506000905061420f600a846153af565b90506127106402540be400836000015183600a8110614230576142306156cb565b6020020151600160200201518451869085600a8110614251576142516156cb565b60200201515161426191906153c3565b61426b9190615328565b6142759190615448565b61230891906153af565b6000816110a36402540be40085615448565b60006402540be4006110a38385615448565b60405180602001604052806142b661446c565b905290565b8280546142c79061562f565b90600052602060002090601f0160209004810192826142e9576000855561432f565b82601f106143025782800160ff1982351617855561432f565b8280016001018555821561432f579182015b8281111561432f578235825591602001919060010190614314565b5061433b92915061449a565b5090565b604080516101a081018252600061014082018181526101608301829052610180830182905282528251808401909352808352602083810191909152909190820190815260200160008152602001600081526020016143be6040518060800160405280600081526020016000815260200160008152602001600081525090565b8152602001600081526020016000815260200160008152602001600081526020016142b66040518060e001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b6040518060a00160405280600081526020016000815260200160008152602001600081526020016142b660405180606001604052806000815260200160608152602001606081525090565b604051806101400160405280600a905b6144846144af565b81526020019060019003908161447c5790505090565b5b8082111561433b576000815560010161449b565b60405180604001604052806002906020820280368337509192915050565b60008083601f8401126144df57600080fd5b5081356001600160401b038111156144f657600080fd5b6020830191508360208260051b850101111561451157600080fd5b9250929050565b60008083601f84011261452a57600080fd5b5081356001600160401b0381111561454157600080fd5b60208301915083602082850101111561451157600080fd5b6000610140828403121561456c57600080fd5b50919050565b600060a0828403121561456c57600080fd5b60006060828403121561456c57600080fd5b60006102c0828403121561456c57600080fd5b6000610280828403121561456c57600080fd5b6000602082840312156145ce57600080fd5b81356110ad816159eb565b6000602082840312156145eb57600080fd5b81516110ad816159eb565b6000806040838503121561460957600080fd5b8235614614816159eb565b946020939093013593505050565b60008060006060848603121561463757600080fd5b8335614642816159eb565b95602085013595506040909401359392505050565b6000806000806080858703121561466d57600080fd5b8435614678816159eb565b93506020850135925060408501359150606085013561469681615a03565b939692955090935050565b600080600080604085870312156146b757600080fd5b84356001600160401b03808211156146ce57600080fd5b6146da888389016144cd565b909650945060208701359150808211156146f357600080fd5b50614700878288016144cd565b95989497509550505050565b60006020828403121561471e57600080fd5b81356110ad81615a03565b60006020828403121561473b57600080fd5b5035919050565b60006020828403121561475457600080fd5b81356001600160401b0381111561476a57600080fd5b61477684828501614572565b949350505050565b60006020828403121561479057600080fd5b81356001600160401b038111156147a657600080fd5b61477684828501614584565b60006102c082840312156147c557600080fd5b6110ad8383614596565b600061028082840312156147e257600080fd5b6110ad83836145a9565b6000602082840312156147fe57600080fd5b5051919050565b60008060008060006060868803121561481d57600080fd5b8535945060208601356001600160401b038082111561483b57600080fd5b61484789838a016144cd565b9096509450604088013591508082111561486057600080fd5b5061486d888289016144cd565b969995985093965092949392505050565b6000806040838503121561489157600080fd5b8235915060208301356148a381615a03565b809150509250929050565b60008060008060008060008060008060c08b8d0312156148cd57600080fd5b8a35995060208b01356001600160401b03808211156148eb57600080fd5b6148f78e838f01614518565b909b50995060408d013591508082111561491057600080fd5b61491c8e838f01614518565b909950975060608d0135965060808d013591508082111561493c57600080fd5b6149488e838f016144cd565b909650945060a08d013591508082111561496157600080fd5b5061496e8d828e016144cd565b915080935050809150509295989b9194979a5092959850565b600080610160838503121561499b57600080fd5b823591506149ac8460208501614559565b90509250929050565b600080604083850312156149c857600080fd5b8235915060208301356001600160401b038111156149e557600080fd5b6149f185828601614572565b9150509250929050565b60008060408385031215614a0e57600080fd5b8235915060208301356001600160401b03811115614a2b57600080fd5b6149f185828601614584565b6000806102e08385031215614a4b57600080fd5b823591506149ac8460208501614596565b6000806102a08385031215614a7057600080fd5b823591506149ac84602085016145a9565b60008060408385031215614a9457600080fd5b50508035926020909101359150565b600080600060608486031215614ab857600080fd5b83359250602084013591506040840135614ad181615a03565b809150509250925092565b60008060008060808587031215614af257600080fd5b84359350602085013592506040850135614b0b81615a03565b9150606085013561469681615a03565b600080600080600060a08688031215614b3357600080fd5b85359450602086013593506040860135614b4c81615a03565b94979396509394606081013594506080013592915050565b600080600060608486031215614b7957600080fd5b505081359360208301359350604090920135919050565b600080600080600060a08688031215614ba857600080fd5b8535945060208601359350604086013592506060860135614bc881615a03565b949793965091946080013592915050565b81835260006001600160fb1b03831115614bf257600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b83811015614c3f57815187529582019590820190600101614c23565b509495945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845260005b81811015614c9957602081850181015186830182015201614c7d565b81811115614cab576000602083870101525b50601f01601f19169290920160200192915050565b805182526020810151602083015260408101516040830152606081015160608301526000608082015160a0608085015261477660a0850182614d34565b6000815160608452614d126060850182614c73565b9050602083015160208501526040830151151560408501528091505092915050565b805182526000602082015160606020850152614d536060850182614c0f565b9050604083015184820360408601526114648282614c0f565b805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c0810151151560c08301525050565b604081526000614dc6604083018688614bd9565b8281036020840152614dd9818587614bd9565b979650505050505050565b606081526000614df76060830186614c73565b8281036020840152614e098186614c73565b915050826040830152949350505050565b60a081526000614e2d60a0830188614c73565b8281036020840152614e3f8188614c73565b90508560408401528281036060840152614e598186614c0f565b90508281036080840152614e6d8185614c0f565b98975050505050505050565b606081526000614e8c6060830186614c73565b602083019490945250901515604090910152919050565b6020808252600f908201526e1410525497d393d517d31254d51151608a1b604082015260600190565b6020808252600e908201526d11915157d393d517d31254d5115160921b604082015260600190565b602080825260089082015267474f565f4f4e4c5960c01b604082015260600190565b610140810161163e8284803582526020810135602083015260408101356040830152606081013560608301526080810135608083015260a081013560a083015260c081013560c083015260e081013560e08301526101008082013581840152506101208082013581840152505050565b815181526020808301516001600160a01b0316908201526040810161163e565b8151815260208083015190820152604080830151908201526060810161163e565b8a5181526020808c0151908201526040808c0151908201526102c081018a51606083015260208b01516001600160a01b0316608083015260a082018a905260c08201899052875160e08301526020880151610100830152604088015161012083015260608801516101408301528661016083015285610180830152846101a0830152836101c083015261505e6101e0830184614d6c565b9b9a5050505050505050505050565b60006103006150918387518051825260208082015190830152604090810151910152565b60208681015180516060860152908101516001600160a01b031660808501525060408681015160a085015260608088015160c08601526080880151805160e08701526020810151610100870152918201516101208601528101516101408501525060a086015161016084015260c086015161018084015260e08601516101a08401526101008601516101c08401526101208601516151336101e0850182614d6c565b50806102c084015261514781840186614cfd565b90508281036102e08401526127a68185614cc0565b8151610280820190826000805b600a8110156151af57835183835b6002811015615196578251825260209283019290910190600101615177565b5050506020939093019260409290920191600101615169565b5050505092915050565b8581526060602082015260006151d3606083018688614bd9565b8281036040840152614e6d818587614bd9565b838152604060208201526000611464604083018486614c4a565b8a815260c06020820152600061521a60c083018b8d614c4a565b828103604084015261522d818a8c614c4a565b90508760608401528281036080840152615248818789614bd9565b905082810360a084015261525d818587614bd9565b9d9c50505050505050505050505050565b85815284602082015283604082015282606082015260a060808201526000614dd960a0830184614d34565b6000808335601e198436030181126152b057600080fd5b8301803591506001600160401b038211156152ca57600080fd5b6020019150600581901b360382131561451157600080fd5b6000808335601e198436030181126152f957600080fd5b8301803591506001600160401b0382111561531357600080fd5b60200191503681900382131561451157600080fd5b600080821280156001600160ff1b038490038513161561534a5761534a61569f565b600160ff1b83900384128116156153635761536361569f565b50500190565b6000821982111561537c5761537c61569f565b500190565b600082615390576153906156b5565b600160ff1b8214600019841416156153aa576153aa61569f565b500590565b6000826153be576153be6156b5565b500490565b60006001600160ff1b03818413828413808216868404861116156153e9576153e961569f565b600160ff1b60008712828116878305891216156154085761540861569f565b600087129250878205871284841616156154245761542461569f565b8785058712818416161561543a5761543a61569f565b505050929093029392505050565b60008160001904831182151516156154625761546261569f565b500290565b60008083128015600160ff1b8501841216156154855761548561569f565b6001600160ff1b03840183138116156154a0576154a061569f565b50500390565b6000828210156154b8576154b861569f565b500390565b601f821115613b1857806000526020600020601f840160051c810160208510156154e45750805b6154f6601f850160051c8301826154fd565b5050505050565b5b8181101561551257600081556001016154fe565b5050565b600160401b83111561552a5761552a6156e1565b8054838255808410156155505781600052602060002061554e8282018683016154fd565b505b50818160005260208060002060005b8681101561557b5783358255928201926001918201910161555f565b50505050505050565b8135815560018101602083013561559a816159eb565b81546001600160a01b0319166001600160a01b03919091161790555050565b813581556020820135600182015560408201356002820155606082013560038201556080820135600482015560a0820135600582015560c08201356155fd81615a03565b60068201805482151560ff1660ff1991909116179055505050565b6000816156275761562761569f565b506000190190565b600181811c9082168061564357607f821691505b6020821081141561456c57634e487b7160e01b600052602260045260246000fd5b60006000198214156156785761567861569f565b5060010190565b600060ff821660ff8114156156965761569661569f565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6000813561163e81615a03565b8135815560016020808401358284015560408401356002840155606084013560038401556080840135605e1985360301811261573f57600080fd5b8401803560048501556005840161575883830183615299565b600160401b81111561576c5761576c6156e1565b82548184558082101561579157836000528560002061578f8282018483016154fd565b505b506000928352848320925b818110156157b757823584559286019291850191860161579c565b505050506157c86040820182615299565b93509150506157db828260068601615516565b50505050565b8135601e198336030181126157f557600080fd5b820180356001600160401b0381111561580d57600080fd5b6020813603818401131561582057600080fd5b6158348261582e865461562f565b866154bd565b6000601f83116001811461586a576000841561585257508482018301355b600019600386901b1c1916600185901b1786556158c7565b600086815260209020601f19851690835b8281101561589c57878501860135825593850193600190910190850161587b565b50858210156158bb5760001960f88760031b161c198585890101351681555b505060018460011b0186555b505084013560018401555061551290506158e3604084016156f7565b6002830160ff1981541660ff8315151681178255505050565b8135815560208201356001820155604082013560028201556159246060830160038301615584565b60a0820135600582015560c0820135600682015560e0820135600782015561010082013560088201556101208201356009820155610140820135600a820155610160820135600b820155610180820135600c8201556101a0820135600d8201556101c0820135600e8201556155126101e08301600f83016155b9565b81816000805b600a811015611ec8578383835b60028110156159d25782358255602090920191600191820191016159b3565b50505060409390930192600292909201916001016159a6565b6001600160a01b0381168114615a0057600080fd5b50565b8015158114615a0057600080fdfea2646970667358221220afdf1678dc368ac0a486f0920c5e48af2fe9c34ce59dd170f987b8e1bb46202d64736f6c63430008070033","sourceMap":"309:27935:70:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15896:265;;;;;;:::i;:::-;;:::i;:::-;;;20298:25:93;;;20286:2;20271:18;15896:265:70;;;;;;;;8841:339;;;;;;:::i;:::-;;:::i;:::-;;13009:189;;;;;;:::i;:::-;;:::i;1079:60::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;405:31;;;;;;;;-1:-1:-1;;;;;405:31:70;;;;;;-1:-1:-1;;;;;20110:32:93;;;;20092:51;;20080:2;20065:18;405:31:70;19921:228:93;2832:168:70;;;;;;:::i;:::-;;:::i;12273:126::-;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;12370:17:70;;;:5;:17;;;;;;12363:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12273:126;;;;;;;;:::i;25880:470::-;;;;;;:::i;:::-;;:::i;8193:139::-;;;;;;:::i;:::-;;:::i;19930:152::-;;;;;;:::i;:::-;20006:4;20034:17;;;:5;:17;;;;;;;;:26;;;20029:32;;:4;:32;;;;;:46;;;;19930:152;17137:268;;;;;;:::i;:::-;;:::i;:::-;;;19544:14:93;;19537:22;19519:41;;19507:2;19492:18;17137:268:70;19379:187:93;16775:158:70;;;;;;:::i;:::-;;:::i;4839:795::-;;;;;;:::i;:::-;;:::i;11624:435::-;;;;;;:::i;:::-;;:::i;:::-;;;;19773:25:93;;;-1:-1:-1;;;;;19834:32:93;;;;19829:2;19814:18;;19807:60;19883:18;;;19876:34;19761:2;19746:18;11624:435:70;19571:345:93;13377:131:70;;;;;;:::i;:::-;13450:4;13473:17;;;:5;:17;;;;;:28;;;;13377:131;3158:178;;;;;;:::i;:::-;;:::i;737:45::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36074:25:93;;;36130:2;36115:18;;36108:34;;;;36158:18;;;36151:34;;;;36216:2;36201:18;;36194:34;;;;36259:3;36244:19;;36237:35;;;;36303:3;36288:19;;36281:35;36347:3;36332:19;;36325:35;36391:3;36376:19;;36369:35;36435:3;36420:19;;36413:35;36479:3;36464:19;;36457:35;36061:3;36046:19;737:45:70;35675:823:93;900:32:70;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;27971:271::-;;;;;;:::i;:::-;;:::i;9528:442::-;;;;;;:::i;:::-;;:::i;23686:224::-;;;;;;:::i;:::-;;:::i;5798:1256::-;;;;;;:::i;:::-;;:::i;26637:558::-;;;;;;:::i;:::-;;:::i;17623:173::-;;;;;;:::i;:::-;;:::i;938:44::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;16355:179;;;;;;:::i;:::-;;:::i;21547:178::-;;;;;;:::i;:::-;21630:4;21661:17;;;:5;:17;;;;;;;;;21645:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21645:33:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21645:33:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21645:33:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;21645:33:70;21695:23;;21547:178;19545:154;;;;;;:::i;:::-;19622:4;19650:17;;;:5;:17;;;;;;;;:26;;;19645:32;;:4;:32;;;;;:47;;;;19545:154;636:21;;;;;;12630:144;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;12739:17:70;;;:5;:17;;;;;;12732:35;;;;;;;;12739:28;;;12732:35;;;;;;-1:-1:-1;;;;;12732:35:70;;;;;;;;;12630:144;;;;;;;;:::i;22445:200::-;;;;;;:::i;:::-;22525:4;22559:17;;;:5;:17;;;;;;;;:28;;;22604:18;;:6;:18;;;;;:34;;;;;;22445:200;663:27;;;;;;22223:138;;;;;;:::i;:::-;22294:4;22316:17;;;:5;:17;;;;;:38;;;;;;22223:138;27474:395;;;;;;:::i;:::-;;:::i;22966:397::-;;;;;;:::i;:::-;;:::i;7187:276::-;;;;;;:::i;:::-;;:::i;24382:499::-;;;;;;:::i;:::-;;:::i;7912:173::-;;;;;;:::i;:::-;;:::i;19206:144::-;;;;;;:::i;:::-;19278:4;19306:17;;;:5;:17;;;;;;;;:26;;;19301:32;;:4;:32;;;;;:42;;;;19206:144;15418:263;;;;;;:::i;:::-;;:::i;607:23::-;;;;;;20137:132;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;14590:229::-;;;;;;:::i;:::-;;:::i;10788:635::-;;;;;;:::i;:::-;;:::i;538:26::-;;;;;;788:64;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20562:203;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;10261:521::-;;;;;;:::i;:::-;;:::i;3444:367::-;;;;;;:::i;:::-;;:::i;858:36::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;3947:750::-;;;;;;:::i;:::-;;:::i;13740:210::-;;;;;;:::i;:::-;;:::i;1193:50::-;;;;;;:::i;:::-;;;;;;;;;;;;;;14182:210;;;;;;:::i;:::-;;:::i;988:40::-;;;;;;:::i;:::-;;:::i;1333:41::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;15023:182::-;;;;;;:::i;:::-;;:::i;570:31::-;;;;;;697:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;697:34:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;697:34:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7574:172::-;;;;;;:::i;:::-;;:::i;23452:161::-;;;;;;:::i;:::-;-1:-1:-1;;;;;23569:19:70;;;;23547:4;23569:19;;;:11;:19;;;;;;;;:30;;;;;;;;;:37;;;;;;;;;;;;;23452:161;1249:78;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2502:230;;;;;;:::i;:::-;;:::i;22714:177::-;;;;;;:::i;:::-;22782:4;22811:22;;;:10;:22;;;;;:35;;22848;;;;;22811;;22714:177;;;;;32896:25:93;;;32952:2;32937:18;;32930:34;;;;32869:18;22714:177:70;32722:248:93;25135:495:70;;;;;;:::i;:::-;;:::i;20771:609::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;21891:175::-;;;;;;:::i;:::-;21973:3;22003:17;;;:5;:17;;;;;;;;;21987:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21987:33:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21987:33:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21987:33:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;21987:33:70;22037:22;;21891:175;8503:155;;;;;;:::i;:::-;;:::i;23967:211::-;;;;;;:::i;:::-;;:::i;18195:804::-;;;;;;:::i;:::-;;:::i;15896:265::-;15968:4;15984:14;16080:3;16055:22;16066:10;16055;:22::i;:::-;16001:17;;;;:5;:17;;;;;:51;;;:76;;;;:::i;:::-;:82;;;;:::i;:::-;16112:17;;;;:5;:17;;;;;:36;;;15984:99;;-1:-1:-1;16151:3:70;;16100:48;;15984:99;16100:48;:::i;:::-;:54;;;;:::i;:::-;16093:61;15896:265;-1:-1:-1;;;15896:265:70:o;8841:339::-;1432:8;;:14;;;-1:-1:-1;;;1432:14:70;;;;:8;;;;-1:-1:-1;;;;;1432:8:70;;:12;;:14;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:28:70;:10;:28;1410:49;;;;-1:-1:-1;;;1410:49:70;;26969:2:93;1410:49:70;;;26951:21:93;27008:1;26988:18;;;26981:29;-1:-1:-1;;;27026:18:93;;;27019:38;27074:18;;1410:49:70;;;;;;;;;8955:35;;::::1;8947:60;;;::::0;-1:-1:-1;;;8947:60:70;;23470:2:93;8947:60:70::1;::::0;::::1;23452:21:93::0;23509:2;23489:18;;;23482:30;-1:-1:-1;;;23528:18:93;;;23521:42;23580:18;;8947:60:70::1;23268:336:93::0;8947:60:70::1;9021:7;9017:104;9030:20;::::0;::::1;::::0;-1:-1:-1;9017:104:70::1;;;9100:7;;9108:1;9100:10;;;;;;;;;:::i;:::-;;;;;;;9070:12;:27;9083:10;;9094:1;9083:13;;;;;;;;;:::i;:::-;;;;;;;9070:27;;;;;;;;;;;:40;;;;9052:3;;;;:::i;:::-;;;9017:104;;;;9136:37;9153:10;;9165:7;;9136:37;;;;;;;;;:::i;:::-;;;;;;;;8841:339:::0;;;;:::o;13009:189::-;13092:12;13126:6;:65;;13166:17;;;;:5;:17;;;;;:25;;;13126:65;;;-1:-1:-1;;13135:17:70;;;;:5;:17;;;;;;;;:28;;;13009:189::o;2832:168::-;1432:8;;:14;;;-1:-1:-1;;;1432:14:70;;;;:8;;;;-1:-1:-1;;;;;1432:8:70;;:12;;:14;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:28:70;:10;:28;1410:49;;;;-1:-1:-1;;;1410:49:70;;26969:2:93;1410:49:70;;;26951:21:93;27008:1;26988:18;;;26981:29;-1:-1:-1;;;27026:18:93;;;27019:38;27074:18;;1410:49:70;26767:331:93;1410:49:70;2920:15:::1;::::0;2911:25:::1;::::0;;;:8:::1;:25;::::0;;;;2939:8;;2911:36:::1;2939:8:::0;2911:25;:36:::1;:::i;:::-;-1:-1:-1::0;;2975:15:70::1;:17:::0;;2962:31:::1;::::0;2975:15:::1;:17;::::0;::::1;:::i;:::-;::::0;;;-1:-1:-1;2962:31:70::1;::::0;20298:25:93;;;20286:2;20271:18;2962:31:70::1;;;;;;;2832:168:::0;:::o;25880:470::-;25997:4;26022:1;26017:2;:6;:129;;;;-1:-1:-1;26091:16:70;;;;:5;:16;;;;;:30;;;:48;;527:4;;26091:48;:::i;:::-;:55;;-1:-1:-1;;26091:55:70;:::i;:::-;26027:61;26048:9;26059:2;26063:3;26068:8;26078:9;26027:20;:61::i;:::-;:119;26017:129;26013:312;;;26162:11;26195:16;;;:5;:16;;;;;:30;;;26245:3;;26177:64;;26232:8;;26178:48;;:9;:48;:::i;:::-;26177:54;;:64::i;:::-;26176:72;;;;:::i;:::-;26162:86;;26269:3;:45;;26296:18;26308:6;26296:9;:18;:::i;:::-;26269:45;;;26275:18;26287:6;26275:9;:18;:::i;:::-;26262:52;;;;;26013:312;-1:-1:-1;26341:2:70;25880:470;;;;;;;;:::o;8193:139::-;1432:8;;:14;;;-1:-1:-1;;;1432:14:70;;;;:8;;;;-1:-1:-1;;;;;1432:8:70;;:12;;:14;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:28:70;:10;:28;1410:49;;;;-1:-1:-1;;;1410:49:70;;26969:2:93;1410:49:70;;;26951:21:93;27008:1;26988:18;;;26981:29;-1:-1:-1;;;27026:18:93;;;27019:38;27074:18;;1410:49:70;26767:331:93;1410:49:70;8251:4;2142:13;::::1;:17:::0;;;;:44:::1;;;2185:1;2163:4;:19;;;:23;2142:44;:70;;;;;2211:1;2190:4;:18;;;:22;2142:70;2121:127;;;::::0;-1:-1:-1;;;2121:127:70;;24156:2:93;2121:127:70::1;::::0;::::1;24138:21:93::0;24195:2;24175:18;;;24168:30;-1:-1:-1;;;24214:18:93;;;24207:40;24264:18;;2121:127:70::1;23954:334:93::0;2121:127:70::1;8272:9:::2;::::0;8267:15:::2;::::0;;;:4:::2;:15;::::0;;;;8285:4;;8267:22:::2;8285:4:::0;8267:15;:22:::2;:::i;:::-;-1:-1:-1::0;;8313:9:70::2;:11:::0;;8304:21:::2;::::0;8313:9:::2;:11;::::0;::::2;:::i;:::-;::::0;;;-1:-1:-1;8304:21:70::2;::::0;20298:25:93;;;20286:2;20271:18;8304:21:70::2;;;;;;;;1469:1:::1;8193:139:::0;:::o;17137:268::-;17215:4;17250:17;;;:5;:17;;;;;:28;;;17305:1;17291:15;;;:34;;;17310:10;17324:1;17310:15;17291:34;17288:51;;;-1:-1:-1;17334:5:70;;17137:268;-1:-1:-1;;17137:268:70:o;17288:51::-;-1:-1:-1;17394:4:70;;17137:268;-1:-1:-1;;17137:268:70:o;16775:158::-;16870:4;16893:26;;;:14;:26;;;;;;;;:33;;;;;;;;;16775:158;;;;;:::o;4839:795::-;1432:8;;:14;;;-1:-1:-1;;;1432:14:70;;;;:8;;;;-1:-1:-1;;;;;1432:8:70;;:12;;:14;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:28:70;:10;:28;1410:49;;;;-1:-1:-1;;;1410:49:70;;26969:2:93;1410:49:70;;;26951:21:93;27008:1;26988:18;;;26981:29;-1:-1:-1;;;27026:18:93;;;27019:38;27074:18;;1410:49:70;26767:331:93;1410:49:70;4958:14:::1;4975:17:::0;;;:5:::1;:17;::::0;;;;;;;5023:13:::1;::::0;::::1;::::0;5010:27;;:12:::1;:27:::0;;;;;;;::::1;;5002:55;;;::::0;-1:-1:-1;;;5002:55:70;;26282:2:93;5002:55:70::1;::::0;::::1;26264:21:93::0;26321:2;26301:18;;;26294:30;-1:-1:-1;;;26340:18:93;;;26333:45;26395:18;;5002:55:70::1;26080:339:93::0;5002:55:70::1;5068:35;5106:31:::0;;;:19:::1;:31;::::0;;;;;;;;5165:15;::::1;5148:32:::0;;5208:16;;::::1;;5190:15;::::0;::::1;:34:::0;5252:16;;::::1;;5234:15;::::0;::::1;:34:::0;5296:16:::1;::::0;::::1;;5278:15;::::0;::::1;:34:::0;5340:16:::1;::::0;::::1;;5322:15;::::0;::::1;:34:::0;5384:16:::1;::::0;::::1;;5366:15;::::0;::::1;:34:::0;5428:16:::1;::::0;::::1;;5410:15;::::0;::::1;:34:::0;5472:16:::1;::::0;::::1;;5454:15;::::0;::::1;:34:::0;5516:16:::1;::::0;::::1;;5498:15:::0;;::::1;:34:::0;;;;5560:16:::1;::::0;::::1;;5542:15;::::0;::::1;:34:::0;5591:36;;::::1;::::0;::::1;::::0;5165:7;;5591:36:::1;:::i;11624:435::-:0;11685:7;11749:8;;:26;;;-1:-1:-1;;;11749:26:70;;;;11685:7;;;;11749:8;;;;-1:-1:-1;;;;;11749:8:70;;:24;;:26;;;;;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11727:49:70;:10;:49;11719:77;;;;-1:-1:-1;;;11719:77:70;;25938:2:93;11719:77:70;;;25920:21:93;25977:2;25957:18;;;25950:30;-1:-1:-1;;;25996:18:93;;;25989:45;26051:18;;11719:77:70;25736:339:93;11719:77:70;11807:13;11823:17;;;:5;:17;;;;;;;;11807:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11807:33:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11807:33:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11807:33:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11807:33:70;;;;11871:6;;:13;;;11858:27;;;;;;;;11807:33;;11858:27;11850:55;;;;-1:-1:-1;;;11850:55:70;;26282:2:93;11850:55:70;;;26264:21:93;26321:2;26301:18;;;26294:30;-1:-1:-1;;;26340:18:93;;;26333:45;26395:18;;11850:55:70;26080:339:93;11850:55:70;11999:6;;:13;;;12014:12;;;;;:19;;12035:14;:16;;;11999:6;12035:16;;;:::i;:::-;;;;;11991:61;;;;;;;11624:435;;;;;:::o;3158:178::-;1432:8;;:14;;;-1:-1:-1;;;1432:14:70;;;;:8;;;;-1:-1:-1;;;;;1432:8:70;;:12;;:14;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:28:70;:10;:28;1410:49;;;;-1:-1:-1;;;1410:49:70;;26969:2:93;1410:49:70;;;26951:21:93;27008:1;26988:18;;;26981:29;-1:-1:-1;;;27026:18:93;;;27019:38;27074:18;;1410:49:70;26767:331:93;1410:49:70;3257:20:::1;::::0;;;:8:::1;:20;::::0;;;;3280:8;;3257:31:::1;3280:8:::0;3257:20;:31:::1;:::i;:::-;-1:-1:-1::0;;3303:26:70::1;::::0;20298:25:93;;;3303:26:70::1;::::0;20286:2:93;20271:18;3303:26:70::1;20154:175:93::0;900:32:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;27971:271::-;28027:22;28135:8;:14;;;-1:-1:-1;;;28135:14:70;;;;28060:42;;28135:8;;;-1:-1:-1;;;;;28135:8:70;;-1:-1:-1;;28135:14:70;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;28121:28:70;:10;:28;;:60;;-1:-1:-1;;;;;;28153:28:70;;:10;:28;28121:60;28113:82;;;;-1:-1:-1;;;28113:82:70;;26969:2:93;28113:82:70;;;26951:21:93;27008:1;26988:18;;;26981:29;-1:-1:-1;;;27026:18:93;;;27019:38;27074:18;;28113:82:70;26767:331:93;28113:82:70;28223:12;:8;28234:1;28223:12;:::i;:::-;28206:14;:29;-1:-1:-1;;27971:271:70:o;9528:442::-;9660:8;;:20;;;-1:-1:-1;;;9660:20:70;;;;:8;;;;-1:-1:-1;;;;;9660:8:70;;:18;;:20;;;;;;;;;;;;;;;:8;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9646:34:70;:10;:34;9638:61;;;;-1:-1:-1;;;9638:61:70;;22441:2:93;9638:61:70;;;22423:21:93;22480:2;22460:18;;;22453:30;-1:-1:-1;;;22499:18:93;;;22492:44;22553:18;;9638:61:70;22239:338:93;9638:61:70;9710:18;9740:17;;;:5;:17;;;;;;;;:28;;;9731:38;;:8;:38;;;;;;9792:5;:13;;9804:1;9792:13;;;9800:1;9792:13;9779:26;;;;9820:9;9816:148;;;9858:7;9845:2;9848:5;9845:9;;;;;;;:::i;:::-;;;:20;;;;;;;:::i;:::-;;;;-1:-1:-1;9816:148:70;;-1:-1:-1;9816:148:70;;9920:7;9908:2;9911:5;9908:9;;;;;;;:::i;:::-;;;:19;:45;;9952:1;9908:45;;;9942:7;9930:2;9933:5;9930:9;;;;;;;:::i;:::-;;;:19;;;;:::i;:::-;9896:2;9899:5;9896:9;;;;;;;:::i;:::-;;:57;9816:148;9628:342;;9528:442;;;;:::o;23686:224::-;23822:8;;;;;-1:-1:-1;;;;;23822:8:70;23800:10;:31;23792:56;;;;-1:-1:-1;;;23792:56:70;;25597:2:93;23792:56:70;;;25579:21:93;25636:2;25616:18;;;25609:30;-1:-1:-1;;;25655:18:93;;;25648:42;25707:18;;23792:56:70;25395:336:93;23792:56:70;-1:-1:-1;;;;;23858:19:70;;;;;;;;:11;:19;;;;;;;;:30;;;;;;;;;:37;;;;;;;;:45;;-1:-1:-1;;23858:45:70;;;;;;;;;;23686:224::o;5798:1256::-;1432:8;;:14;;;-1:-1:-1;;;1432:14:70;;;;:8;;;;-1:-1:-1;;;;;1432:8:70;;:12;;:14;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:28:70;:10;:28;1410:49;;;;-1:-1:-1;;;1410:49:70;;26969:2:93;1410:49:70;;;26951:21:93;27008:1;26988:18;;;26981:29;-1:-1:-1;;;27026:18:93;;;27019:38;27074:18;;1410:49:70;26767:331:93;1410:49:70;5902:5;1803:23;::::1;:27:::0;;;;:59:::1;;;1861:1;1834:5;:24;;;:28;1803:59;1795:82;;;::::0;-1:-1:-1;;;1795:82:70;;22784:2:93;1795:82:70::1;::::0;::::1;22766:21:93::0;22823:2;22803:18;;;22796:30;-1:-1:-1;;;22842:18:93;;;22835:40;22892:18;;1795:82:70::1;22582:334:93::0;1795:82:70::1;5924:14:::2;::::0;::::2;;1704:1;1677:15:::0;;;:4:::2;:15;::::0;;;;:24;1669:55:::2;;;::::0;-1:-1:-1;;;1669:55:70;;26626:2:93;1669:55:70::2;::::0;::::2;26608:21:93::0;26665:2;26645:18;;;26638:30;-1:-1:-1;;;26684:18:93;;;26677:44;26738:18;;1669:55:70::2;26424:338:93::0;1669:55:70::2;5950:14:::3;5967:17:::0;;;:5:::3;:17;::::0;;;;;;;6015:13:::3;::::0;::::3;::::0;6002:27;;:12:::3;:27:::0;;;;;;;::::3;;5994:55;;;::::0;-1:-1:-1;;;5994:55:70;;26282:2:93;5994:55:70::3;::::0;::::3;26264:21:93::0;26321:2;26301:18;;;26294:30;-1:-1:-1;;;26340:18:93;;;26333:45;26395:18;;5994:55:70::3;26080:339:93::0;5994:55:70::3;6072:13;::::0;::::3;;6060:9;::::0;::::3;:25:::0;6110:16:::3;::::0;::::3;;6095:12;::::0;::::3;:31:::0;6150:15:::3;::::0;::::3;41717:19:93::0;6136:11:70::3;::::0;::::3;41704:33:93::0;41780:14;;;41767:28;41753:12;;;41746:50;41839:14;;;41826:28;41812:12;;;41805:50;41898:14;;;41885:28;41871:12;;;41864:50;6201:27:70::3;::::0;::::3;;6175:23;::::0;::::3;:53:::0;6263:26:::3;::::0;::::3;;6238:22;::::0;::::3;:51:::0;6314:16:::3;::::0;::::3;;6299:12;::::0;::::3;:31:::0;6353:14:::3;::::0;::::3;;6340:10;::::0;::::3;:27:::0;41447:19:93;;41434:33;;41521:2;41510:14;;41497:28;41493:1;41483:12;;41476:50;41580:2;41569:14;;41556:28;41552:1;41542:12;;41535:50;6444:39:70;;;::::3;6406:35:::0;;;:77;6516:24;;;::::3;6493:20:::0;;;:47;6444:12:::3;::::0;::::3;6570:21;6406:8;::::0;::::3;6550:41:::0;6619:19;;;::::3;6601:15:::0;;;:37;6670:23;;;::::3;6648:19:::0;;;:45;6726:24;;;::::3;6703:20:::0;;;:47;6785:26:::3;::::0;;;;;;::::3;:::i;:::-;6760:22:::0;;;:51;;-1:-1:-1;;6760:51:70::3;::::0;::::3;;::::0;;;::::3;::::0;;6826:16:::3;::::0;::::3;:30;:34:::0;;;;:75:::3;;-1:-1:-1::0;6899:1:70::3;6864:23;::::0;;;;;;::::3;:::i;:::-;-1:-1:-1::0;;;;;6864:37:70::3;;;6826:75;6822:187;;;6932:16;::::0;::::3;6917:12;::::0;::::3;:31;6932:16:::0;6917:12;:31:::3;:::i;:::-;;;;6822:187;;;6986:12;;::::0;::::3;6979:19:::0;;;;;;-1:-1:-1;;;;;;6979:19:70::3;::::0;;6822:187:::3;7024:23;::::0;20298:25:93;;;7024:23:70::3;::::0;20286:2:93;20271:18;7024:23:70::3;;;;;;;;5940:1114;1887:1:::2;1469::::1;5798:1256:::0;;:::o;26637:558::-;26819:5;26836:8;26847:3;:81;;26893:34;26914:12;26897:9;26893:34;:::i;:::-;26847:81;;;26854:34;26878:9;26858:12;26854:34;:::i;:::-;26836:92;-1:-1:-1;26938:11:70;26952:24;527:4;-1:-1:-1;;26952:24:70;:::i;:::-;26986:11;27000:16;;;:5;:16;;;;;:23;;:32;26938:38;;-1:-1:-1;26986:11:70;27000:50;;527:4;;27000:50;:::i;:::-;26986:64;-1:-1:-1;27115:9:70;27082:24;527:4;27097:8;27082:14;:24::i;:::-;27065:10;:4;27072:3;27065:10;:::i;:::-;:42;;;;:::i;:::-;27064:61;;;;:::i;:::-;27060:65;;27143:7;27139:1;:11;:49;;27167:7;27163:1;:11;:25;;27187:1;27139:49;;27163:25;27177:7;27139:49;;;27153:7;27139:49;27135:53;26637:558;-1:-1:-1;;;;;;;;;26637:558:70:o;17623:173::-;17693:4;17746:17;;;:5;:17;;;;;;;;:36;;;17717:8;;:26;;-1:-1:-1;;;17717:26:70;;;;17786:3;;17746:36;;17717:8;;;;-1:-1:-1;;;;;17717:8:70;;:24;;:26;;;;;;;;;;;:8;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:65;;;;:::i;:::-;17716:73;;;;:::i;16355:179::-;16419:4;16495:17;;;:5;:17;;;;;;;;:28;;;16486:38;;:8;:38;;;;;16525:1;16486:41;;;16442;;:85;;16486:41;16442:85;:::i;27474:395::-;27567:22;27675:8;:14;;;-1:-1:-1;;;27675:14:70;;;;27600:42;;27675:8;;;-1:-1:-1;;;;;27675:8:70;;-1:-1:-1;;27675:14:70;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;27661:28:70;:10;:28;;:60;;-1:-1:-1;;;;;;27693:28:70;;:10;:28;27661:60;27653:82;;;;-1:-1:-1;;;27653:82:70;;26969:2:93;27653:82:70;;;26951:21:93;27008:1;26988:18;;;26981:29;-1:-1:-1;;;27026:18:93;;;27019:38;27074:18;;27653:82:70;26767:331:93;27653:82:70;-1:-1:-1;27746:18:70;27776:17;;;:5;:17;;;;;;;;:28;;;27767:38;;:8;:38;;;;;;27815:18;;;27846:1;27843:5;:19;27474:395::o;22966:397::-;23059:7;23106:20;;;:8;:20;;;;;23181:17;;;;23059:7;;23181:21;;23201:1;;23181:21;:::i;:::-;23172:30;;23168:171;23205:3;;23168:171;;23246:36;;;;:33;;;:36;;;;;;23231:51;;23228:100;;;23291:37;;;;:34;;;;:37;;;;;;;-1:-1:-1;23284:44:70;;23228:100;23210:3;;;;:::i;:::-;;;;23168:171;;;-1:-1:-1;23355:1:70;;22966:397;-1:-1:-1;;;;22966:397:70:o;7187:276::-;1432:8;;:14;;;-1:-1:-1;;;1432:14:70;;;;:8;;;;-1:-1:-1;;;;;1432:8:70;;:12;;:14;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:28:70;:10;:28;1410:49;;;;-1:-1:-1;;;1410:49:70;;26969:2:93;1410:49:70;;;26951:21:93;27008:1;26988:18;;;26981:29;-1:-1:-1;;;27026:18:93;;;27019:38;27074:18;;1410:49:70;26767:331:93;1410:49:70;7265:14:::1;7282:17:::0;;;:5:::1;:17;::::0;;;;;;;7330:13:::1;::::0;::::1;::::0;7317:27;;:12:::1;:27:::0;;;;;;;::::1;;7309:55;;;::::0;-1:-1:-1;;;7309:55:70;;26282:2:93;7309:55:70::1;::::0;::::1;26264:21:93::0;26321:2;26301:18;;;26294:30;-1:-1:-1;;;26340:18:93;;;26333:45;26395:18;;7309:55:70::1;26080:339:93::0;7309:55:70::1;7396:13;::::0;::::1;::::0;7412:5:::1;7383:27:::0;;;:12:::1;:27;::::0;;;;;;;;:34;;-1:-1:-1;;7383:34:70::1;::::0;;7432:24;;20298:25:93;;;7432:24:70::1;::::0;20271:18:93;7432:24:70::1;20154:175:93::0;24382:499:70;24489:4;24524:1;24508:13;:17;24505:30;;;-1:-1:-1;24534:1:70;24527:8;;24505:30;24575:6;24595:138;24606:15;;;;:4;:15;;;;;:23;;:32;24602:36;;24595:138;;;24683:15;;;;:4;:15;;;;;:29;;:32;;24713:1;;24683:32;;;;;;:::i;:::-;;;;;;;;;24666:13;24661:54;24658:64;;;24717:5;;24658:64;24640:3;;;;:::i;:::-;;;;24595:138;;;24743:8;24798:3;527:4;24754:30;24770:13;24754:10;:30;:::i;:::-;:42;;;;:::i;:::-;:47;;;;:::i;:::-;24818:15;;;;:4;:15;;;;;:29;;:32;;24743:58;;-1:-1:-1;24871:3:70;;527:4;;24743:58;;24848:1;;24818:32;;;;;;:::i;:::-;;;;;;;;;:38;;;;:::i;:::-;:50;;;;:::i;:::-;:56;;;;:::i;:::-;24811:63;24382:499;-1:-1:-1;;;;;;24382:499:70:o;7912:173::-;1432:8;;:14;;;-1:-1:-1;;;1432:14:70;;;;:8;;;;-1:-1:-1;;;;;1432:8:70;;:12;;:14;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:28:70;:10;:28;1410:49;;;;-1:-1:-1;;;1410:49:70;;26969:2:93;1410:49:70;;;26951:21:93;27008:1;26988:18;;;26981:29;-1:-1:-1;;;27026:18:93;;;27019:38;27074:18;;1410:49:70;26767:331:93;1410:49:70;1579:1:::1;1540:19:::0;;;:6:::1;:19;::::0;;;;:36:::1;;::::0;7995:3;;1532:69:::1;;;::::0;-1:-1:-1;;;1532:69:70;;23811:2:93;1532:69:70::1;::::0;::::1;23793:21:93::0;23850:2;23830:18;;;23823:30;-1:-1:-1;;;23869:18:93;;;23862:46;23925:18;;1532:69:70::1;23609:340:93::0;1532:69:70::1;8008:6:::0;8026:11:::3;::::0;;;:6:::3;:11;::::0;;;;8040:6;;8026:20:::3;8040:6:::0;8026:11;:20:::3;:::i;:::-;-1:-1:-1::0;;8061:17:70::3;::::0;20298:25:93;;;8061:17:70::3;::::0;20286:2:93;20271:18;8061:17:70::3;20154:175:93::0;15418:263:70;15489:4;15505:14;15601:3;15576:22;15587:10;15576;:22::i;:::-;15522:17;;;;:5;:17;;;;;:51;;;:76;;;;:::i;:::-;:82;;;;:::i;:::-;15633:17;;;;:5;:17;;;;;:35;;;15505:99;;-1:-1:-1;15671:3:70;;15621:47;;15505:99;15621:47;:::i;20137:132::-;20199:22;;:::i;:::-;20242:20;;;;:8;:20;;;;;;;;20232:30;;;;;;;;;;20242:20;;20232:30;;;;;;20242:20;;20232:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;20232:30:70;;-1:-1:-1;20232:30:70;;20137:132;-1:-1:-1;;;20137:132:70:o;14590:229::-;14657:4;14749:8;;:23;;;-1:-1:-1;;;14749:23:70;;;;14809:3;;14749:8;;;-1:-1:-1;;;;;14749:8:70;;:21;;:23;;;;;;;;;;;;;;:8;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14749:42:70;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14693:36;14700:17;;;:5;:17;;;;;;;;:28;;;14693:36;;:6;:36;;;;;:53;;;:100;;;;:::i;10788:635::-;1432:8;;:14;;;-1:-1:-1;;;1432:14:70;;;;:8;;;;-1:-1:-1;;;;;1432:8:70;;:12;;:14;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:28:70;:10;:28;1410:49;;;;-1:-1:-1;;;1410:49:70;;26969:2:93;1410:49:70;;;26951:21:93;27008:1;26988:18;;;26981:29;-1:-1:-1;;;27026:18:93;;;27019:38;27074:18;;1410:49:70;26767:331:93;1410:49:70;11022:21:::1;11046:20:::0;;;:8:::1;:20;::::0;;;;11076:17:::1;11046:20:::0;11089:4;;11076:17:::1;:::i;:::-;-1:-1:-1::0;11103:12:70::1;:7;::::0;::::1;11113:2:::0;;11103:12:::1;:::i;:::-;-1:-1:-1::0;11125:13:70::1;::::0;::::1;:25:::0;;;11165:6:::1;11161:168;11177:9;11173:1;:13;11161:168;;;11241:15;;11257:1;11241:18;;;;;;;:::i;:::-;;;;;;;11206:4;:29;;:32;11236:1;11206:32;;;;;;;;;;;:53;;;;11309:6;;11316:1;11309:9;;;;;;;:::i;:::-;11273:33;::::0;;;:30:::1;::::0;::::1;11309:9;11273:33:::0;;;;;;;11309:9;::::1;::::0;;;::::1;;11273:45:::0;;;-1:-1:-1;11304:1:70;11188:3:::1;11304:1:::0;11188:3:::1;:::i;:::-;;;;11161:168;;;;11343:73;11359:10;11371:4;;11377:2;;11381:9;11392:15;;11409:6;;11343:73;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;11011:412;10788:635:::0;;;;;;;;;;:::o;20562:203::-;20620:11;;:::i;:::-;20633:12;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;20633:12:70;20647:10;;:::i;:::-;20669:13;20685;;;:5;:13;;;;;;;;20669:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20669:29:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;20669:29:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;20669:29:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;20669:29:70;20726:12;;20719:20;;;;;;;;20746:10;;20741:16;;;;;;;;;20708:50;;;;;;;;;;20669:29;;;;20719:20;;20708:50;20719:20;;20708:50;;20719:20;;20708:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;20708:50:70;;;;-1:-1:-1;;;20708:50:70;;-1:-1:-1;20708:50:70;;;;-1:-1:-1;20708:50:70;;-1:-1:-1;20562:203:70;-1:-1:-1;;;;20562:203:70:o;10261:521::-;1432:8;;:14;;;-1:-1:-1;;;1432:14:70;;;;:8;;;;-1:-1:-1;;;;;1432:8:70;;:12;;:14;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:28:70;:10;:28;1410:49;;;;-1:-1:-1;;;1410:49:70;;26969:2:93;1410:49:70;;;26951:21:93;27008:1;26988:18;;;26981:29;-1:-1:-1;;;27026:18:93;;;27019:38;27074:18;;1410:49:70;26767:331:93;1410:49:70;10442:41;;::::1;10434:50;;;::::0;::::1;;10500:6;10495:207;10508:16:::0;;::::1;10495:207;;;484:2;10553:18;;10572:1;10553:21;;;;;;;:::i;:::-;;;;;;;:41;;10545:72;;;::::0;-1:-1:-1;;;10545:72:70;;23123:2:93;10545:72:70::1;::::0;::::1;23105:21:93::0;23162:2;23142:18;;;23135:30;-1:-1:-1;;;23181:18:93;;;23174:48;23239:18;;10545:72:70::1;22921:342:93::0;10545:72:70::1;10670:18;;10689:1;10670:21;;;;;;;:::i;:::-;;;;;;;10631:14;:26;10646:10;10631:26;;;;;;;;;;;:36;10658:5;;10664:1;10658:8;;;;;;;:::i;:::-;;;;;;;10631:36;;;;;;;;;;;:60;;;;10526:3;;;;:::i;:::-;;;10495:207;;;;10717:58;10737:10;10749:5;;10756:18;;10717:58;;;;;;;;;;:::i;3444:367::-:0;1432:8;;:14;;;-1:-1:-1;;;1432:14:70;;;;:8;;;;-1:-1:-1;;;;;1432:8:70;;:12;;:14;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:28:70;:10;:28;1410:49;;;;-1:-1:-1;;;1410:49:70;;26969:2:93;1410:49:70;;;26951:21:93;27008:1;26988:18;;;26981:29;-1:-1:-1;;;27026:18:93;;;27019:38;27074:18;;1410:49:70;26767:331:93;1410:49:70;3520:5;1803:23;::::1;:27:::0;;;;:59:::1;;;1861:1;1834:5;:24;;;:28;1803:59;1795:82;;;::::0;-1:-1:-1;;;1795:82:70;;22784:2:93;1795:82:70::1;::::0;::::1;22766:21:93::0;22823:2;22803:18;;;22796:30;-1:-1:-1;;;22842:18:93;;;22835:40;22892:18;;1795:82:70::1;22582:334:93::0;1795:82:70::1;3544:16:::2;::::0;::::2;;1579:1;1540:19:::0;;;:6:::2;:19;::::0;;;;:36:::2;;::::0;1532:69:::2;;;::::0;-1:-1:-1;;;1532:69:70;;23811:2:93;1532:69:70::2;::::0;::::2;23793:21:93::0;23850:2;23830:18;;;23823:30;-1:-1:-1;;;23869:18:93;;;23862:46;23925:18;;1532:69:70::2;23609:340:93::0;1532:69:70::2;3572:14:::3;::::0;::::3;;1704:1;1677:15:::0;;;:4:::3;:15;::::0;;;;:24;1669:55:::3;;;::::0;-1:-1:-1;;;1669:55:70;;26626:2:93;1669:55:70::3;::::0;::::3;26608:21:93::0;26665:2;26645:18;;;26638:30;-1:-1:-1;;;26684:18:93;;;26677:44;26738:18;;1669:55:70::3;26424:338:93::0;1669:55:70::3;3620:17:::4;::::0;;::::4;;3607:31;::::0;;;:12:::4;:31;::::0;;;::::4;;3606:32;3598:64;;;::::0;-1:-1:-1;;;3598:64:70;;24910:2:93;3598:64:70::4;::::0;::::4;24892:21:93::0;24949:2;24929:18;;;24922:30;-1:-1:-1;;;24968:18:93;;;24961:49;25027:18;;3598:64:70::4;24708:343:93::0;3598:64:70::4;3679:10;::::0;3673:17:::4;::::0;;;:5:::4;:17;::::0;;;;3693:5;;3673:25:::4;3693:5:::0;3673:17;:25:::4;:::i;:::-;-1:-1:-1::0;;3721:17:70::4;::::0;;::::4;;3708:31;::::0;;;:12:::4;:31;::::0;;;;:38;;-1:-1:-1;;3708:38:70::4;3742:4;3708:38;::::0;;3772:10:::4;:12:::0;;3762:42:::4;::::0;3772:12;;:10;:12:::4;::::0;::::4;:::i;:::-;::::0;;;-1:-1:-1;3786:17:70::4;3762:42:::0;;32896:25:93;;;3786:17:70;;::::4;;32952:2:93::0;32937:18;;32930:34;32869:18;3762:42:70::4;32722:248:93::0;858:36:70;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;858:36:70;;;;;;;;;;;;;;;-1:-1:-1;858:36:70;:::o;3947:750::-;1432:8;;:14;;;-1:-1:-1;;;1432:14:70;;;;:8;;;;-1:-1:-1;;;;;1432:8:70;;:12;;:14;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:28:70;:10;:28;1410:49;;;;-1:-1:-1;;;1410:49:70;;26969:2:93;1410:49:70;;;26951:21:93;27008:1;26988:18;;;26981:29;-1:-1:-1;;;27026:18:93;;;27019:38;27074:18;;1410:49:70;26767:331:93;1410:49:70;4046:14:::1;4063:17:::0;;;:5:::1;:17;::::0;;;;;;;4111:13:::1;::::0;::::1;::::0;4098:27;;:12:::1;:27:::0;;;;;;;::::1;;4090:55;;;::::0;-1:-1:-1;;;4090:55:70;;26282:2:93;4090:55:70::1;::::0;::::1;26264:21:93::0;26321:2;26301:18;;;26294:30;-1:-1:-1;;;26340:18:93;;;26333:45;26395:18;;4090:55:70::1;26080:339:93::0;4090:55:70::1;4156:25;4184:22:::0;;;:10:::1;:22;::::0;;;;;;;;4239:20;::::1;4217:42:::0;;4291:20;;::::1;;4269:19;::::0;::::1;:42:::0;4338:15;;::::1;;4321:14;::::0;::::1;:32:::0;4380:15:::1;::::0;::::1;;4363:14;::::0;::::1;:32:::0;4422:15:::1;::::0;::::1;;4405:14;::::0;::::1;:32:::0;4464:15:::1;::::0;::::1;;4447:14;::::0;::::1;:32:::0;4506:15:::1;::::0;::::1;;4489:14;::::0;::::1;:32:::0;4548:15:::1;::::0;::::1;;4531:14:::0;;::::1;:32:::0;;;;4590:15:::1;::::0;::::1;;4573:14;::::0;::::1;:32:::0;4632:15:::1;::::0;::::1;;4615:14;::::0;::::1;:32:::0;4663:26;;::::1;::::0;::::1;::::0;4239:7;;4663:26:::1;:::i;13740:210::-:0;13827:4;13850:6;:93;;13904:17;;;;:5;:17;;;;;:27;;:39;13850:93;;;-1:-1:-1;;13859:17:70;;;;:5;:17;;;;;:42;;;;13740:210::o;14182:::-;14269:4;14292:6;:93;;14346:17;;;;:5;:17;;;;;:39;;;14292:93;;;-1:-1:-1;;14301:17:70;;;;:5;:17;;;;;:42;;;;14182:210::o;988:40::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;988:40:70;;-1:-1:-1;988:40:70:o;1333:41::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15023:182::-;15091:4;15195:3;15169:22;15180:10;15169;:22::i;:::-;15115:17;;;;:5;:17;;;;;:51;;;:76;;;;:::i;7574:172::-;1432:8;;:14;;;-1:-1:-1;;;1432:14:70;;;;:8;;;;-1:-1:-1;;;;;1432:8:70;;:12;;:14;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:28:70;:10;:28;1410:49;;;;-1:-1:-1;;;1410:49:70;;26969:2:93;1410:49:70;;;26951:21:93;27008:1;26988:18;;;26981:29;-1:-1:-1;;;27026:18:93;;;27019:38;27074:18;;1410:49:70;26767:331:93;1410:49:70;7640:6;7665:11:::2;::::0;7658:19:::2;::::0;;;:6:::2;:19;::::0;;;;7680:6;;7658:28:::2;7680:6:::0;7658:19;:28:::2;:::i;:::-;-1:-1:-1::0;;7712:11:70::2;:13:::0;;7701:38:::2;::::0;7712:11:::2;:13;::::0;::::2;:::i;:::-;::::0;;;-1:-1:-1;7727:11:70::2;:6:::0;;:11:::2;:::i;:::-;7701:38;;;;;;;;:::i;2502:230::-:0;3279:19:18;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:18;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:18;1713:19:31;:23;;;3387:66:18;;-1:-1:-1;3436:12:18;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:18;;24495:2:93;3325:201:18;;;24477:21:93;24534:2;24514:18;;;24507:30;24573:34;24553:18;;;24546:62;-1:-1:-1;;;24624:18:93;;;24617:44;24678:19;;3325:201:18;24293:410:93;3325:201:18;3536:12;:16;;-1:-1:-1;;3536:16:18;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:18;;;;;3562:65;2620:1:70::1;2602:15;:19;2594:42;;;::::0;-1:-1:-1;;;2594:42:70;;25258:2:93;2594:42:70::1;::::0;::::1;25240:21:93::0;25297:2;25277:18;;;25270:30;-1:-1:-1;;;25316:18:93;;;25309:40;25366:18;;2594:42:70::1;25056:334:93::0;2594:42:70::1;2646:14;:32:::0;;;2688:8:::1;:37:::0;;-1:-1:-1;;;;;;2688:37:70::1;-1:-1:-1::0;;;;;;2688:37:70;::::1;;;::::0;;3647:99:18;;;;3697:5;3681:21;;-1:-1:-1;;3681:21:18;;;3721:14;;-1:-1:-1;20486:36:93;;3721:14:18;;20474:2:93;20459:18;3721:14:18;;;;;;;3647:99;3269:483;2502:230:70;;:::o;25135:495::-;25252:4;25272:7;;;:126;;-1:-1:-1;25348:16:70;;;;:5;:16;;;;;:23;;:32;:50;;527:4;;25348:50;:::i;:::-;25283:61;25304:9;25315:2;25319:3;25324:8;25334:9;25283:20;:61::i;:::-;:115;25272:126;25268:337;;;25414:11;25447:16;;;:5;:16;;;;;:23;;:32;25499:3;;25429:66;;25486:8;;25430:50;;:9;:50;:::i;25429:66::-;25428:74;;;;:::i;:::-;25414:88;;25523:3;:71;;25560:9;25550:6;:19;;:44;;25593:1;25523:71;;25550:44;25572:18;25584:6;25572:9;:18;:::i;25523:71::-;25529:18;25541:6;25529:9;:18;:::i;20771:609::-;20894:13;21011:20;;;:8;:20;;;;;21041:16;;20840:18;;;;20894:13;;20840:18;;;;21011:20;;21041:16;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21072:4;:7;;21067:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;21100:13:70;;;;21067:12;;-1:-1:-1;21100:13:70;;-1:-1:-1;21100:13:70;;-1:-1:-1;;;;;;;21140:20:70;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21140:20:70;-1:-1:-1;21123:37:70;-1:-1:-1;21189:8:70;-1:-1:-1;;;;;21178:20:70;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21178:20:70;;21170:28;;21213:6;21209:165;21225:8;21221:1;:12;21209:165;;;21273:32;;;;:29;;;:32;;;;;;21253:17;;:14;;21303:1;;21253:17;;;;;;:::i;:::-;;;;;;:52;;;;;21330:4;:30;;:33;21361:1;21330:33;;;;;;;;;;;;21319:5;21325:1;21319:8;;;;;;;;:::i;:::-;;;;;;;;;;:44;21235:3;;;;:::i;:::-;;;;21209:165;;;;20976:404;20771:609;;;;;;;:::o;8503:155::-;1432:8;;:14;;;-1:-1:-1;;;1432:14:70;;;;:8;;;;-1:-1:-1;;;;;1432:8:70;;:12;;:14;;;;;;;;;;;;;;;:8;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1418:28:70;:10;:28;1410:49;;;;-1:-1:-1;;;1410:49:70;;26969:2:93;1410:49:70;;;26951:21:93;27008:1;26988:18;;;26981:29;-1:-1:-1;;;27026:18:93;;;27019:38;27074:18;;1410:49:70;26767:331:93;1410:49:70;1704:1:::1;1677:15:::0;;;:4:::1;:15;::::0;;;;:24;8578:3;;1669:55:::1;;;::::0;-1:-1:-1;;;1669:55:70;;26626:2:93;1669:55:70::1;::::0;::::1;26608:21:93::0;26665:2;26645:18;;;26638:30;-1:-1:-1;;;26684:18:93;;;26677:44;26738:18;;1669:55:70::1;26424:338:93::0;1669:55:70::1;8589:4:::0;2142:13;::::2;:17:::0;;;;:44:::2;;;2185:1;2163:4;:19;;;:23;2142:44;:70;;;;;2211:1;2190:4;:18;;;:22;2142:70;2121:127;;;::::0;-1:-1:-1;;;2121:127:70;;24156:2:93;2121:127:70::2;::::0;::::2;24138:21:93::0;24195:2;24175:18;;;24168:30;-1:-1:-1;;;24214:18:93;;;24207:40;24264:18;;2121:127:70::2;23954:334:93::0;2121:127:70::2;8605:9:::3;::::0;;;:4:::3;:9;::::0;;;;8617:4;;8605:16:::3;8617:4:::0;8605:9;:16:::3;:::i;:::-;-1:-1:-1::0;;8636:15:70::3;::::0;20298:25:93;;;8636:15:70::3;::::0;20286:2:93;20271:18;8636:15:70::3;20154:175:93::0;23967:211:70;24091:8;;;;;-1:-1:-1;;;;;24091:8:70;24069:10;:31;24061:56;;;;-1:-1:-1;;;24061:56:70;;25597:2:93;24061:56:70;;;25579:21:93;25636:2;25616:18;;;25609:30;-1:-1:-1;;;25655:18:93;;;25648:42;25707:18;;24061:56:70;25395:336:93;24061:56:70;-1:-1:-1;;;;;24134:19:70;;;;;;;;:11;:19;;;;;;;;:30;;;;;;;;;:37;;;;;;;;;24127:44;;-1:-1:-1;;24127:44:70;;;23967:211::o;18195:804::-;18302:4;18346:8;;:40;;-1:-1:-1;;;18346:40:70;;;;;32896:25:93;;;32937:18;;;32930:34;;;18302:4:70;;18346:8;;;-1:-1:-1;;;;;18346:8:70;;:25;;32869:18:93;;18346:40:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18396:26;18425:8;;:40;;-1:-1:-1;;;18425:40:70;;;;;32896:25:93;;;18463:1:70;32937:18:93;;;32930:34;18318:68:70;;-1:-1:-1;18396:26:70;;18425:8;;;;-1:-1:-1;;;;;18425:8:70;;:25;;32869:18:93;;18425:40:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18396:69;;18480:4;18476:151;;;18500:42;18524:18;18500:42;;:::i;:::-;;;18476:151;;;18573:43;18598:18;18573:43;;:::i;:::-;;;18476:151;18637:20;18737:44;18760:21;18737:20;:44;:::i;:::-;18668:4;:51;;18699:20;18668:51;;;18675:21;18668:51;18661:59;;:3;:59;:::i;:::-;18660:122;;;;:::i;:::-;18792:22;18817:20;;;:8;:20;;;;;;;;18792:45;;;;;;;;18637:145;;-1:-1:-1;18792:22:70;;18817:20;18792:45;;;;18817:20;18792:45;:22;:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;18792:45:70;;-1:-1:-1;18792:45:70;;-1:-1:-1;18848:8:70;;-1:-1:-1;18859:18:70;18875:2;18859:15;:18;:::i;:::-;18848:29;;18986:5;527:4;18948:7;:16;;;18965:3;18948:21;;;;;;;:::i;:::-;;;;;18970:1;18948:24;;;;18900:16;;18929:15;;18917:3;18900:21;;;;;;;:::i;:::-;;;;;:24;:45;;;;:::i;:::-;:72;;;;:::i;:::-;18895:89;;;;:::i;:::-;:96;;;;:::i;263:127:90:-;323:4;374:9;347:23;119:4;347:1;:23;:::i;130:127::-;190:4;119;214:13;218:9;214:1;:13;:::i;-1:-1:-1:-;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:367:93:-;77:8;87:6;141:3;134:4;126:6;122:17;118:27;108:55;;159:1;156;149:12;108:55;-1:-1:-1;182:20:93;;-1:-1:-1;;;;;214:30:93;;211:50;;;257:1;254;247:12;211:50;294:4;286:6;282:17;270:29;;354:3;347:4;337:6;334:1;330:14;322:6;318:27;314:38;311:47;308:67;;;371:1;368;361:12;308:67;14:367;;;;;:::o;386:348::-;438:8;448:6;502:3;495:4;487:6;483:17;479:27;469:55;;520:1;517;510:12;469:55;-1:-1:-1;543:20:93;;-1:-1:-1;;;;;575:30:93;;572:50;;;618:1;615;608:12;572:50;655:4;647:6;643:17;631:29;;707:3;700:4;691:6;683;679:19;675:30;672:39;669:59;;;724:1;721;714:12;739:169;812:5;857:3;848:6;843:3;839:16;835:26;832:46;;;874:1;871;864:12;832:46;-1:-1:-1;896:6:93;739:169;-1:-1:-1;739:169:93:o;913:152::-;969:5;1014:3;1005:6;1000:3;996:16;992:26;989:46;;;1031:1;1028;1021:12;1070:153;1128:5;1173:2;1164:6;1159:3;1155:16;1151:25;1148:45;;;1189:1;1186;1179:12;1228:153;1285:5;1330:3;1321:6;1316:3;1312:16;1308:26;1305:46;;;1347:1;1344;1337:12;1386:156;1446:5;1491:3;1482:6;1477:3;1473:16;1469:26;1466:46;;;1508:1;1505;1498:12;1547:247;1606:6;1659:2;1647:9;1638:7;1634:23;1630:32;1627:52;;;1675:1;1672;1665:12;1627:52;1714:9;1701:23;1733:31;1758:5;1733:31;:::i;1799:251::-;1869:6;1922:2;1910:9;1901:7;1897:23;1893:32;1890:52;;;1938:1;1935;1928:12;1890:52;1970:9;1964:16;1989:31;2014:5;1989:31;:::i;2055:315::-;2123:6;2131;2184:2;2172:9;2163:7;2159:23;2155:32;2152:52;;;2200:1;2197;2190:12;2152:52;2239:9;2226:23;2258:31;2283:5;2258:31;:::i;:::-;2308:5;2360:2;2345:18;;;;2332:32;;-1:-1:-1;;;2055:315:93:o;2375:383::-;2452:6;2460;2468;2521:2;2509:9;2500:7;2496:23;2492:32;2489:52;;;2537:1;2534;2527:12;2489:52;2576:9;2563:23;2595:31;2620:5;2595:31;:::i;:::-;2645:5;2697:2;2682:18;;2669:32;;-1:-1:-1;2748:2:93;2733:18;;;2720:32;;2375:383;-1:-1:-1;;;2375:383:93:o;2763:519::-;2846:6;2854;2862;2870;2923:3;2911:9;2902:7;2898:23;2894:33;2891:53;;;2940:1;2937;2930:12;2891:53;2979:9;2966:23;2998:31;3023:5;2998:31;:::i;:::-;3048:5;-1:-1:-1;3100:2:93;3085:18;;3072:32;;-1:-1:-1;3151:2:93;3136:18;;3123:32;;-1:-1:-1;3207:2:93;3192:18;;3179:32;3220:30;3179:32;3220:30;:::i;:::-;2763:519;;;;-1:-1:-1;2763:519:93;;-1:-1:-1;;2763:519:93:o;3287:773::-;3409:6;3417;3425;3433;3486:2;3474:9;3465:7;3461:23;3457:32;3454:52;;;3502:1;3499;3492:12;3454:52;3529:23;;-1:-1:-1;;;;;3601:14:93;;;3598:34;;;3628:1;3625;3618:12;3598:34;3667:70;3729:7;3720:6;3709:9;3705:22;3667:70;:::i;:::-;3756:8;;-1:-1:-1;3641:96:93;-1:-1:-1;3844:2:93;3829:18;;3816:32;;-1:-1:-1;3860:16:93;;;3857:36;;;3889:1;3886;3879:12;3857:36;;3928:72;3992:7;3981:8;3970:9;3966:24;3928:72;:::i;:::-;3287:773;;;;-1:-1:-1;4019:8:93;-1:-1:-1;;;;3287:773:93:o;4065:241::-;4121:6;4174:2;4162:9;4153:7;4149:23;4145:32;4142:52;;;4190:1;4187;4180:12;4142:52;4229:9;4216:23;4248:28;4270:5;4248:28;:::i;4311:180::-;4370:6;4423:2;4411:9;4402:7;4398:23;4394:32;4391:52;;;4439:1;4436;4429:12;4391:52;-1:-1:-1;4462:23:93;;4311:180;-1:-1:-1;4311:180:93:o;5057:349::-;5140:6;5193:2;5181:9;5172:7;5168:23;5164:32;5161:52;;;5209:1;5206;5199:12;5161:52;5236:23;;-1:-1:-1;;;;;5271:30:93;;5268:50;;;5314:1;5311;5304:12;5268:50;5337:63;5392:7;5383:6;5372:9;5368:22;5337:63;:::i;:::-;5327:73;5057:349;-1:-1:-1;;;;5057:349:93:o;5411:353::-;5496:6;5549:2;5537:9;5528:7;5524:23;5520:32;5517:52;;;5565:1;5562;5555:12;5517:52;5592:23;;-1:-1:-1;;;;;5627:30:93;;5624:50;;;5670:1;5667;5660:12;5624:50;5693:65;5750:7;5741:6;5730:9;5726:22;5693:65;:::i;5769:234::-;5853:6;5906:3;5894:9;5885:7;5881:23;5877:33;5874:53;;;5923:1;5920;5913:12;5874:53;5946:51;5989:7;5978:9;5946:51;:::i;6008:240::-;6095:6;6148:3;6136:9;6127:7;6123:23;6119:33;6116:53;;;6165:1;6162;6155:12;6116:53;6188:54;6234:7;6223:9;6188:54;:::i;6438:184::-;6508:6;6561:2;6549:9;6540:7;6536:23;6532:32;6529:52;;;6577:1;6574;6567:12;6529:52;-1:-1:-1;6600:16:93;;6438:184;-1:-1:-1;6438:184:93:o;6627:841::-;6758:6;6766;6774;6782;6790;6843:2;6831:9;6822:7;6818:23;6814:32;6811:52;;;6859:1;6856;6849:12;6811:52;6882:23;;;-1:-1:-1;6956:2:93;6941:18;;6928:32;-1:-1:-1;;;;;7009:14:93;;;7006:34;;;7036:1;7033;7026:12;7006:34;7075:70;7137:7;7128:6;7117:9;7113:22;7075:70;:::i;:::-;7164:8;;-1:-1:-1;7049:96:93;-1:-1:-1;7252:2:93;7237:18;;7224:32;;-1:-1:-1;7268:16:93;;;7265:36;;;7297:1;7294;7287:12;7265:36;;7336:72;7400:7;7389:8;7378:9;7374:24;7336:72;:::i;:::-;6627:841;;;;-1:-1:-1;6627:841:93;;-1:-1:-1;7427:8:93;;7310:98;6627:841;-1:-1:-1;;;6627:841:93:o;7473:309::-;7538:6;7546;7599:2;7587:9;7578:7;7574:23;7570:32;7567:52;;;7615:1;7612;7605:12;7567:52;7651:9;7638:23;7628:33;;7711:2;7700:9;7696:18;7683:32;7724:28;7746:5;7724:28;:::i;:::-;7771:5;7761:15;;;7473:309;;;;;:::o;7787:1490::-;7969:6;7977;7985;7993;8001;8009;8017;8025;8033;8041;8094:3;8082:9;8073:7;8069:23;8065:33;8062:53;;;8111:1;8108;8101:12;8062:53;8134:23;;;-1:-1:-1;8208:2:93;8193:18;;8180:32;-1:-1:-1;;;;;8261:14:93;;;8258:34;;;8288:1;8285;8278:12;8258:34;8327:59;8378:7;8369:6;8358:9;8354:22;8327:59;:::i;:::-;8405:8;;-1:-1:-1;8301:85:93;-1:-1:-1;8493:2:93;8478:18;;8465:32;;-1:-1:-1;8509:16:93;;;8506:36;;;8538:1;8535;8528:12;8506:36;8577:61;8630:7;8619:8;8608:9;8604:24;8577:61;:::i;:::-;8657:8;;-1:-1:-1;8551:87:93;-1:-1:-1;8739:2:93;8724:18;;8711:32;;-1:-1:-1;8796:3:93;8781:19;;8768:33;;-1:-1:-1;8813:16:93;;;8810:36;;;8842:1;8839;8832:12;8810:36;8881:72;8945:7;8934:8;8923:9;8919:24;8881:72;:::i;:::-;8972:8;;-1:-1:-1;8855:98:93;-1:-1:-1;9060:3:93;9045:19;;9032:33;;-1:-1:-1;9077:16:93;;;9074:36;;;9106:1;9103;9096:12;9074:36;;9145:72;9209:7;9198:8;9187:9;9183:24;9145:72;:::i;:::-;9119:98;;9236:8;9226:18;;;9263:8;9253:18;;;7787:1490;;;;;;;;;;;;;:::o;9282:334::-;9391:6;9399;9452:3;9440:9;9431:7;9427:23;9423:33;9420:53;;;9469:1;9466;9459:12;9420:53;9505:9;9492:23;9482:33;;9534:76;9602:7;9597:2;9586:9;9582:18;9534:76;:::i;:::-;9524:86;;9282:334;;;;;:::o;9621:417::-;9713:6;9721;9774:2;9762:9;9753:7;9749:23;9745:32;9742:52;;;9790:1;9787;9780:12;9742:52;9813:23;;;-1:-1:-1;9887:2:93;9872:18;;9859:32;-1:-1:-1;;;;;9903:30:93;;9900:50;;;9946:1;9943;9936:12;9900:50;9969:63;10024:7;10015:6;10004:9;10000:22;9969:63;:::i;:::-;9959:73;;;9621:417;;;;;:::o;10043:421::-;10137:6;10145;10198:2;10186:9;10177:7;10173:23;10169:32;10166:52;;;10214:1;10211;10204:12;10166:52;10237:23;;;-1:-1:-1;10311:2:93;10296:18;;10283:32;-1:-1:-1;;;;;10327:30:93;;10324:50;;;10370:1;10367;10360:12;10324:50;10393:65;10450:7;10441:6;10430:9;10426:22;10393:65;:::i;10798:302::-;10891:6;10899;10952:3;10940:9;10931:7;10927:23;10923:33;10920:53;;;10969:1;10966;10959:12;10920:53;11005:9;10992:23;10982:33;;11034:60;11086:7;11081:2;11070:9;11066:18;11034:60;:::i;11105:308::-;11201:6;11209;11262:3;11250:9;11241:7;11237:23;11233:33;11230:53;;;11279:1;11276;11269:12;11230:53;11315:9;11302:23;11292:33;;11344:63;11399:7;11394:2;11383:9;11379:18;11344:63;:::i;11418:248::-;11486:6;11494;11547:2;11535:9;11526:7;11522:23;11518:32;11515:52;;;11563:1;11560;11553:12;11515:52;-1:-1:-1;;11586:23:93;;;11656:2;11641:18;;;11628:32;;-1:-1:-1;11418:248:93:o;11671:377::-;11745:6;11753;11761;11814:2;11802:9;11793:7;11789:23;11785:32;11782:52;;;11830:1;11827;11820:12;11782:52;11866:9;11853:23;11843:33;;11923:2;11912:9;11908:18;11895:32;11885:42;;11977:2;11966:9;11962:18;11949:32;11990:28;12012:5;11990:28;:::i;:::-;12037:5;12027:15;;;11671:377;;;;;:::o;12053:513::-;12133:6;12141;12149;12157;12210:3;12198:9;12189:7;12185:23;12181:33;12178:53;;;12227:1;12224;12217:12;12178:53;12263:9;12250:23;12240:33;;12320:2;12309:9;12305:18;12292:32;12282:42;;12374:2;12363:9;12359:18;12346:32;12387:28;12409:5;12387:28;:::i;:::-;12434:5;-1:-1:-1;12491:2:93;12476:18;;12463:32;12504:30;12463:32;12504:30;:::i;12571:515::-;12663:6;12671;12679;12687;12695;12748:3;12736:9;12727:7;12723:23;12719:33;12716:53;;;12765:1;12762;12755:12;12716:53;12801:9;12788:23;12778:33;;12858:2;12847:9;12843:18;12830:32;12820:42;;12912:2;12901:9;12897:18;12884:32;12925:28;12947:5;12925:28;:::i;:::-;12571:515;;;;-1:-1:-1;12972:5:93;;13024:2;13009:18;;12996:32;;-1:-1:-1;13075:3:93;13060:19;13047:33;;12571:515;-1:-1:-1;;12571:515:93:o;13091:315::-;13167:6;13175;13183;13236:2;13224:9;13215:7;13211:23;13207:32;13204:52;;;13252:1;13249;13242:12;13204:52;-1:-1:-1;;13275:23:93;;;13345:2;13330:18;;13317:32;;-1:-1:-1;13396:2:93;13381:18;;;13368:32;;13091:315;-1:-1:-1;13091:315:93:o;13732:515::-;13824:6;13832;13840;13848;13856;13909:3;13897:9;13888:7;13884:23;13880:33;13877:53;;;13926:1;13923;13916:12;13877:53;13962:9;13949:23;13939:33;;14019:2;14008:9;14004:18;13991:32;13981:42;;14070:2;14059:9;14055:18;14042:32;14032:42;;14124:2;14113:9;14109:18;14096:32;14137:28;14159:5;14137:28;:::i;:::-;13732:515;;;;-1:-1:-1;13732:515:93;;14236:3;14221:19;14208:33;;13732:515;-1:-1:-1;;13732:515:93:o;14252:354::-;14340:19;;;14322:3;-1:-1:-1;;;;;14371:31:93;;14368:51;;;14415:1;14412;14405:12;14368:51;14451:6;14448:1;14444:14;14503:8;14496:5;14489:4;14484:3;14480:14;14467:45;14580:1;14535:18;;14555:4;14531:29;14569:13;;;-1:-1:-1;14531:29:93;;14252:354;-1:-1:-1;;14252:354:93:o;14611:435::-;14664:3;14702:5;14696:12;14729:6;14724:3;14717:19;14755:4;14784:2;14779:3;14775:12;14768:19;;14821:2;14814:5;14810:14;14842:1;14852:169;14866:6;14863:1;14860:13;14852:169;;;14927:13;;14915:26;;14961:12;;;;14996:15;;;;14888:1;14881:9;14852:169;;;-1:-1:-1;15037:3:93;;14611:435;-1:-1:-1;;;;;14611:435:93:o;15051:267::-;15140:6;15135:3;15128:19;15192:6;15185:5;15178:4;15173:3;15169:14;15156:43;-1:-1:-1;15244:1:93;15219:16;;;15237:4;15215:27;;;15208:38;;;;15300:2;15279:15;;;-1:-1:-1;;15275:29:93;15266:39;;;15262:50;;15051:267::o;15323:472::-;15365:3;15403:5;15397:12;15430:6;15425:3;15418:19;15455:1;15465:162;15479:6;15476:1;15473:13;15465:162;;;15541:4;15597:13;;;15593:22;;15587:29;15569:11;;;15565:20;;15558:59;15494:12;15465:162;;;15645:6;15642:1;15639:13;15636:87;;;15711:1;15704:4;15695:6;15690:3;15686:16;15682:27;15675:38;15636:87;-1:-1:-1;15777:2:93;15756:15;-1:-1:-1;;15752:29:93;15743:39;;;;15784:4;15739:50;;15323:472;-1:-1:-1;;15323:472:93:o;16717:423::-;16799:5;16793:12;16788:3;16781:25;16855:4;16848:5;16844:16;16838:23;16831:4;16826:3;16822:14;16815:47;16911:4;16904:5;16900:16;16894:23;16887:4;16882:3;16878:14;16871:47;16967:4;16960:5;16956:16;16950:23;16943:4;16938:3;16934:14;16927:47;16763:3;17020:4;17013:5;17009:16;17003:23;17058:4;17051;17046:3;17042:14;17035:28;17079:55;17128:4;17123:3;17119:14;17105:12;17079:55;:::i;17351:346::-;17399:3;17443:5;17437:12;17470:4;17465:3;17458:17;17496:47;17537:4;17532:3;17528:14;17514:12;17496:47;:::i;:::-;17484:59;;17592:4;17585:5;17581:16;17575:23;17568:4;17563:3;17559:14;17552:47;17662:4;17655:5;17651:16;17645:23;17638:31;17631:39;17624:4;17619:3;17615:14;17608:63;17687:4;17680:11;;;17351:346;;;;:::o;17968:434::-;18054:5;18048:12;18043:3;18036:25;18018:3;18107:4;18100:5;18096:16;18090:23;18145:4;18138;18133:3;18129:14;18122:28;18171:58;18223:4;18218:3;18214:14;18200:12;18171:58;:::i;:::-;18159:70;;18277:4;18270:5;18266:16;18260:23;18325:3;18319:4;18315:14;18308:4;18303:3;18299:14;18292:38;18346:50;18391:4;18375:14;18346:50;:::i;18407:443::-;18485:5;18479:12;18474:3;18467:25;18541:4;18534:5;18530:16;18524:23;18517:4;18512:3;18508:14;18501:47;18597:4;18590:5;18586:16;18580:23;18573:4;18568:3;18564:14;18557:47;18653:4;18646:5;18642:16;18636:23;18629:4;18624:3;18620:14;18613:47;18709:4;18702:5;18698:16;18692:23;18685:4;18680:3;18676:14;18669:47;18765:4;18758:5;18754:16;18748:23;18741:4;18736:3;18732:14;18725:47;18835:4;18828:5;18824:16;18818:23;18811:31;18804:39;18797:4;18792:3;18788:14;18781:63;;;18407:443::o;18855:519::-;19132:2;19121:9;19114:21;19095:4;19158:73;19227:2;19216:9;19212:18;19204:6;19196;19158:73;:::i;:::-;19279:9;19271:6;19267:22;19262:2;19251:9;19247:18;19240:50;19307:61;19361:6;19353;19345;19307:61;:::i;:::-;19299:69;18855:519;-1:-1:-1;;;;;;;18855:519:93:o;20533:454::-;20758:2;20747:9;20740:21;20721:4;20784:45;20825:2;20814:9;20810:18;20802:6;20784:45;:::i;:::-;20877:9;20869:6;20865:22;20860:2;20849:9;20845:18;20838:50;20905:33;20931:6;20923;20905:33;:::i;:::-;20897:41;;;20974:6;20969:2;20958:9;20954:18;20947:34;20533:454;;;;;;:::o;20992:865::-;21373:3;21362:9;21355:22;21336:4;21400:46;21441:3;21430:9;21426:19;21418:6;21400:46;:::i;:::-;21494:9;21486:6;21482:22;21477:2;21466:9;21462:18;21455:50;21528:33;21554:6;21546;21528:33;:::i;:::-;21514:47;;21597:6;21592:2;21581:9;21577:18;21570:34;21652:9;21644:6;21640:22;21635:2;21624:9;21620:18;21613:50;21686:44;21723:6;21715;21686:44;:::i;:::-;21672:58;;21779:9;21771:6;21767:22;21761:3;21750:9;21746:19;21739:51;21807:44;21844:6;21836;21807:44;:::i;:::-;21799:52;20992:865;-1:-1:-1;;;;;;;;20992:865:93:o;21862:372::-;22061:2;22050:9;22043:21;22024:4;22081:45;22122:2;22111:9;22107:18;22099:6;22081:45;:::i;:::-;22157:2;22142:18;;22135:34;;;;-1:-1:-1;22212:14:93;;22205:22;22200:2;22185:18;;;22178:50;22073:53;21862:372;-1:-1:-1;21862:372:93:o;27459:299::-;27673:3;27658:19;;27686:66;27662:9;27734:6;15908:5;15895:19;15890:3;15883:32;15971:4;15964:5;15960:16;15947:30;15940:4;15935:3;15931:14;15924:54;16034:4;16027:5;16023:16;16010:30;16003:4;15998:3;15994:14;15987:54;16097:4;16090:5;16086:16;16073:30;16066:4;16061:3;16057:14;16050:54;16160:4;16153:5;16149:16;16136:30;16129:4;16124:3;16120:14;16113:54;16223:4;16216:5;16212:16;16199:30;16192:4;16187:3;16183:14;16176:54;16286:4;16279:5;16275:16;16262:30;16255:4;16250:3;16246:14;16239:54;16349:4;16342:5;16338:16;16325:30;16318:4;16313:3;16309:14;16302:54;16375:6;16435:2;16428:5;16424:14;16411:28;16406:2;16401:3;16397:12;16390:50;;16459:6;16519:2;16512:5;16508:14;16495:28;16490:2;16485:3;16481:12;16474:50;;15800:730;;;27763:257;16611:12;;16599:25;;16677:4;16666:16;;;16660:23;-1:-1:-1;;;;;16656:49:93;16640:14;;;16633:73;27955:2;27940:18;;27967:47;16535:177;28025:239;17215:12;;17203:25;;17277:4;17266:16;;;17260:23;17244:14;;;17237:47;17333:4;17322:16;;;17316:23;17300:14;;;17293:47;28205:2;28190:18;;28217:41;17145:201;28269:1107;17215:12;;17203:25;;17277:4;17266:16;;;17260:23;17244:14;;;17237:47;17333:4;17322:16;;;17316:23;17300:14;;;17293:47;28861:3;28846:19;;16611:12;;28976:2;28961:18;;16599:25;16677:4;16666:16;;16660:23;-1:-1:-1;;;;;16656:49:93;16640:14;;;16633:73;29011:3;28996:19;;28989:35;;;29055:3;29040:19;;29033:35;;;17776:12;;29127:3;29112:19;;17764:25;17838:4;17827:16;;17821:23;17805:14;;;17798:47;17894:4;17883:16;;17877:23;17861:14;;;17854:47;17950:4;17939:16;;17933:23;17917:14;;;17910:47;29169:6;29163:3;29152:9;29148:19;29141:35;29213:6;29207:3;29196:9;29192:19;29185:35;29257:6;29251:3;29240:9;29236:19;29229:35;29301:6;29295:3;29284:9;29280:19;29273:35;29317:53;29365:3;29354:9;29350:19;29342:6;29317:53;:::i;:::-;28269:1107;;;;;;;;;;;;;:::o;29665:1381::-;29951:4;29980:3;29992:48;30030:9;30021:6;30015:13;17215:12;;17203:25;;17277:4;17266:16;;;17260:23;17244:14;;;17237:47;17333:4;17322:16;;;17316:23;17300:14;;17293:47;17145:201;29992:48;30087:4;30075:17;;;30069:24;16611:12;;30160:4;30145:20;;16599:25;16666:16;;;16660:23;-1:-1:-1;;;;;16656:49:93;16640:14;;;16633:73;-1:-1:-1;30222:4:93;30210:17;;;30204:24;30197:4;30182:20;;30175:54;30285:4;30273:17;;;30267:24;30260:4;30245:20;;30238:54;30341:4;30329:17;;30323:24;17776:12;;30414:4;30399:20;;17764:25;17838:4;17827:16;;17821:23;17805:14;;;17798:47;17883:16;;;17877:23;17861:14;;;17854:47;17939:16;;17933:23;17917:14;;;17910:47;30356:64;30478:4;30470:6;30466:17;30460:24;30451:6;30440:9;30436:22;30429:56;30543:4;30535:6;30531:17;30525:24;30516:6;30505:9;30501:22;30494:56;30608:4;30600:6;30596:17;30590:24;30581:6;30570:9;30566:22;30559:56;30673:6;30665;30661:19;30655:26;30646:6;30635:9;30631:22;30624:58;30731:6;30723;30719:19;30713:26;30748:64;30804:6;30793:9;30789:22;30773:14;30748:64;:::i;:::-;;30849:2;30843:3;30832:9;30828:19;30821:31;30875:51;30922:2;30911:9;30907:18;30899:6;30875:51;:::i;:::-;30861:65;;30975:9;30967:6;30963:22;30957:3;30946:9;30942:19;30935:51;31003:37;31033:6;31025;31003:37;:::i;31051:889::-;31260:13;;31237:3;31222:19;;;31226:9;31195:4;;31401:533;31417:4;31412:3;31409:13;31401:533;;;31478:13;;31517:3;31600:1;31614:236;31630:4;31625:3;31622:13;31614:236;;;31703:15;;31689:30;;31746:4;31819:17;;;;31776:14;;;;31654:1;31645:11;31614:236;;;-1:-1:-1;;;31919:4:93;31907:17;;;;;31879:4;31870:14;;;;;31441:1;31432:11;31401:533;;;31405:3;;;;31051:889;;;;:::o;32127:590::-;32432:6;32421:9;32414:25;32475:2;32470;32459:9;32455:18;32448:30;32395:4;32501:73;32570:2;32559:9;32555:18;32547:6;32539;32501:73;:::i;:::-;32622:9;32614:6;32610:22;32605:2;32594:9;32590:18;32583:50;32650:61;32704:6;32696;32688;32650:61;:::i;33497:318::-;33684:6;33673:9;33666:25;33727:2;33722;33711:9;33707:18;33700:30;33647:4;33747:62;33805:2;33794:9;33790:18;33782:6;33774;33747:62;:::i;33820:1045::-;34269:6;34258:9;34251:25;34312:3;34307:2;34296:9;34292:18;34285:31;34232:4;34339:63;34397:3;34386:9;34382:19;34374:6;34366;34339:63;:::i;:::-;34450:9;34442:6;34438:22;34433:2;34422:9;34418:18;34411:50;34484;34527:6;34519;34511;34484:50;:::i;:::-;34470:64;;34570:6;34565:2;34554:9;34550:18;34543:34;34626:9;34618:6;34614:22;34608:3;34597:9;34593:19;34586:51;34660:61;34714:6;34706;34698;34660:61;:::i;:::-;34646:75;;34770:9;34762:6;34758:22;34752:3;34741:9;34737:19;34730:51;34798:61;34852:6;34844;34836;34798:61;:::i;:::-;34790:69;33820:1045;-1:-1:-1;;;;;;;;;;;;;33820:1045:93:o;35123:547::-;35416:6;35405:9;35398:25;35459:6;35454:2;35443:9;35439:18;35432:34;35502:6;35497:2;35486:9;35482:18;35475:34;35545:6;35540:2;35529:9;35525:18;35518:34;35589:3;35583;35572:9;35568:19;35561:32;35379:4;35610:54;35659:3;35648:9;35644:19;35636:6;35610:54;:::i;36503:535::-;36586:4;36592:6;36652:11;36639:25;36746:2;36742:7;36731:8;36715:14;36711:29;36707:43;36687:18;36683:68;36673:96;;36765:1;36762;36755:12;36673:96;36792:33;;36844:20;;;-1:-1:-1;;;;;;36876:30:93;;36873:50;;;36919:1;36916;36909:12;36873:50;36952:4;36940:17;;-1:-1:-1;37003:1:93;36999:14;;;36983;36979:35;36969:46;;36966:66;;;37028:1;37025;37018:12;37043:522;37121:4;37127:6;37187:11;37174:25;37281:2;37277:7;37266:8;37250:14;37246:29;37242:43;37222:18;37218:68;37208:96;;37300:1;37297;37290:12;37208:96;37327:33;;37379:20;;;-1:-1:-1;;;;;;37411:30:93;;37408:50;;;37454:1;37451;37444:12;37408:50;37487:4;37475:17;;-1:-1:-1;37518:14:93;37514:27;;;37504:38;;37501:58;;;37555:1;37552;37545:12;37707:265;37746:3;37774:9;;;-1:-1:-1;;;;;37818:27:93;;;37811:35;;37799:10;;37795:52;37792:78;;;37850:18;;:::i;:::-;-1:-1:-1;;;37897:19:93;;;37890:27;;37882:36;;37879:62;;;37921:18;;:::i;:::-;-1:-1:-1;;37957:9:93;;37707:265::o;37977:128::-;38017:3;38048:1;38044:6;38041:1;38038:13;38035:39;;;38054:18;;:::i;:::-;-1:-1:-1;38090:9:93;;37977:128::o;38110:193::-;38149:1;38175;38165:35;;38180:18;;:::i;:::-;-1:-1:-1;;38236:13:93;;-1:-1:-1;;;38216:18:93;;38212:38;38209:64;;;38253:18;;:::i;:::-;-1:-1:-1;38287:10:93;;38110:193::o;38308:120::-;38348:1;38374;38364:35;;38379:18;;:::i;:::-;-1:-1:-1;38413:9:93;;38308:120::o;38433:553::-;38472:7;-1:-1:-1;;;;;38542:9:93;;;38570;;;38614:10;;;38608:17;;38595:11;;;38591:35;38588:61;;;38629:18;;:::i;:::-;-1:-1:-1;;;38705:1:93;38698:9;;38743:11;;;38736:19;;38723:11;;;38719:37;38716:63;;;38759:18;;:::i;:::-;38805:1;38802;38798:9;38788:19;;38852:1;38848:2;38843:11;38840:1;38836:19;38831:2;38827;38823:11;38819:37;38816:63;;;38859:18;;:::i;:::-;38924:1;38920:2;38915:11;38912:1;38908:19;38903:2;38899;38895:11;38891:37;38888:63;;;38931:18;;:::i;:::-;-1:-1:-1;;;38971:9:93;;;;;38433:553;-1:-1:-1;;;38433:553:93:o;38991:168::-;39031:7;39097:1;39093;39089:6;39085:14;39082:1;39079:21;39074:1;39067:9;39060:17;39056:45;39053:71;;;39104:18;;:::i;:::-;-1:-1:-1;39144:9:93;;38991:168::o;39164:267::-;39203:4;39232:9;;;-1:-1:-1;;;39276:19:93;;39269:27;;39257:10;;39253:44;39250:70;;;39300:18;;:::i;:::-;-1:-1:-1;;;;;39347:27:93;;39340:35;;39332:44;;39329:70;;;39379:18;;:::i;:::-;-1:-1:-1;;39416:9:93;;39164:267::o;39436:125::-;39476:4;39504:1;39501;39498:8;39495:34;;;39509:18;;:::i;:::-;-1:-1:-1;39546:9:93;;39436:125::o;39566:418::-;39668:2;39663:3;39660:11;39657:321;;;39704:5;39701:1;39694:16;39748:4;39745:1;39735:18;39818:2;39806:10;39802:19;39799:1;39795:27;39789:4;39785:38;39854:4;39842:10;39839:20;39836:47;;;-1:-1:-1;39877:4:93;39836:47;39896:72;39962:2;39957:3;39953:12;39950:1;39946:20;39940:4;39936:31;39923:11;39896:72;:::i;:::-;;;39566:418;;;:::o;39989:146::-;40051:78;40069:3;40062:5;40059:14;40051:78;;;40125:1;40111:16;;40096:1;40085:13;40051:78;;;39989:146;;:::o;40140:772::-;-1:-1:-1;;;40259:29:93;;40256:55;;;40291:18;;:::i;:::-;40340:4;40334:11;40367:3;40361:4;40354:17;40391:6;40386:3;40383:15;40380:183;;;40431:4;40428:1;40421:15;40474:4;40471:1;40461:18;40492:61;40545:6;40539:4;40535:17;40529:3;40523:4;40519:14;40492:61;:::i;:::-;;40380:183;;40586:5;40610:4;40607:1;40600:15;40634:4;40679:2;40676:1;40666:16;40700:1;40710:196;40724:3;40721:1;40718:10;40710:196;;;40790:20;;40770:41;;40834:15;;;;40894:1;40877:19;;;;40736:9;40710:196;;;40714:3;;;;40140:772;;;:::o;40917:412::-;41055:5;41042:19;41036:4;41029:33;41099:1;41093:4;41089:12;41149:2;41142:5;41138:14;41125:28;41162:33;41187:7;41162:33;:::i;:::-;41230:17;;-1:-1:-1;;;;;;41226:60:93;-1:-1:-1;;;;;41288:33:93;;;;41223:99;41204:119;;-1:-1:-1;;40917:412:93:o;41925:605::-;42055:5;42042:19;42036:4;42029:33;42116:2;42109:5;42105:14;42092:28;42088:1;42082:4;42078:12;42071:50;42175:2;42168:5;42164:14;42151:28;42147:1;42141:4;42137:12;42130:50;42234:2;42227:5;42223:14;42210:28;42206:1;42200:4;42196:12;42189:50;42293:3;42286:5;42282:15;42269:29;42265:1;42259:4;42255:12;42248:51;42353:3;42346:5;42342:15;42329:29;42325:1;42319:4;42315:12;42308:51;42407:3;42400:5;42396:15;42383:29;42421:30;42443:7;42421:30;:::i;:::-;42512:1;42502:12;;44352:11;;44419:13;;44412:21;44369:3;44408:31;-1:-1:-1;;44348:26:93;;;;44396:44;44383:58;;3269:483:18;2502:230:70;;:::o;42535:136:93:-;42574:3;42602:5;42592:39;;42611:18;;:::i;:::-;-1:-1:-1;;;42647:18:93;;42535:136::o;42676:380::-;42755:1;42751:12;;;;42798;;;42819:61;;42873:4;42865:6;42861:17;42851:27;;42819:61;42926:2;42918:6;42915:14;42895:18;42892:38;42889:161;;;42972:10;42967:3;42963:20;42960:1;42953:31;43007:4;43004:1;42997:15;43035:4;43032:1;43025:15;43232:135;43271:3;-1:-1:-1;;43292:17:93;;43289:43;;;43312:18;;:::i;:::-;-1:-1:-1;43359:1:93;43348:13;;43232:135::o;43372:175::-;43409:3;43453:4;43446:5;43442:16;43482:4;43473:7;43470:17;43467:43;;;43490:18;;:::i;:::-;43539:1;43526:15;;43372:175;-1:-1:-1;;43372:175:93:o;43552:127::-;43613:10;43608:3;43604:20;43601:1;43594:31;43644:4;43641:1;43634:15;43668:4;43665:1;43658:15;43684:127;43745:10;43740:3;43736:20;43733:1;43726:31;43776:4;43773:1;43766:15;43800:4;43797:1;43790:15;43816:127;43877:10;43872:3;43868:20;43865:1;43858:31;43908:4;43905:1;43898:15;43932:4;43929:1;43922:15;43948:127;44009:10;44004:3;44000:20;43997:1;43990:31;44040:4;44037:1;44030:15;44064:4;44061:1;44054:15;44080:170;44122:11;44174:3;44161:17;44187:28;44209:5;44187:28;:::i;44902:1761::-;45059:5;45046:19;45040:4;45033:33;45085:1;45105:2;45162;45155:5;45151:14;45138:28;45133:2;45127:4;45123:13;45116:51;45221:2;45214:5;45210:14;45197:28;45193:1;45187:4;45183:12;45176:50;45280:2;45273:5;45269:14;45256:28;45252:1;45246:4;45242:12;45235:50;45344:3;45337:5;45333:15;45320:29;45428:2;45424:7;45416:5;45400:14;45396:26;45392:40;45372:18;45368:65;45358:93;;45447:1;45444;45437:12;45358:93;45472:30;;45532:18;;45528:1;45518:12;;45511:40;45588:1;45578:12;;45633:68;45687:13;;;45472:30;45633:68;:::i;:::-;-1:-1:-1;;;45713:39:93;;45710:65;;;45755:18;;:::i;:::-;45804:10;45798:17;45843:13;45831:10;45824:33;45887:6;45872:13;45869:25;45866:207;;;45927:10;45924:1;45917:21;45976:2;45973:1;45963:16;45992:71;46055:6;46049:4;46045:17;46029:13;46023:4;46019:24;45992:71;:::i;:::-;;45866:207;-1:-1:-1;46123:1:93;46116:21;;;46165:16;;;;46209:208;46223:13;46220:1;46217:20;46209:208;;;46300:20;;46280:41;;46387:20;;;;46344:15;;;;46245:10;;46209:208;;;46213:3;;;;46462:68;46526:2;46520:4;46516:13;46510:4;46462:68;:::i;:::-;46426:104;;;;;46539:118;46643:13;46628;46624:1;46618:4;46614:12;46539:118;:::i;:::-;;;44902:1761;;:::o;46963:1804::-;47137:5;47124:19;47222:2;47218:7;47210:5;47194:14;47190:26;47186:40;47166:18;47162:65;47152:93;;47241:1;47238;47231:12;47152:93;47266:30;;47319:18;;-1:-1:-1;;;;;47349:30:93;;47346:50;;;47392:1;47389;47382:12;47346:50;47415:4;47470:6;47454:14;47450:27;47445:2;47439:4;47435:13;47431:47;47428:67;;;47491:1;47488;47481:12;47428:67;47504:97;47594:6;47554:38;47586:4;47580:11;47554:38;:::i;:::-;47548:4;47504:97;:::i;:::-;47627:1;47655:2;47647:6;47644:14;47672:1;47667:655;;;;48368:1;48385:6;48382:108;;;-1:-1:-1;48450:20:93;;;48446:29;;48433:43;48382:108;-1:-1:-1;;43189:1:93;43185:11;;;43181:24;43177:29;43167:40;43213:1;43209:11;;;43164:57;48503:83;;47637:959;;47667:655;37654:1;37647:14;;;37691:4;37678:18;;-1:-1:-1;;47703:20:93;;;47818:9;47840:235;47854:7;47851:1;47848:14;47840:235;;;47945:20;;;47941:29;;47928:43;47913:59;;48043:18;;;;48011:1;47999:14;;;;47870:10;;47840:235;;;47844:3;48103:6;48094:7;48091:19;48088:175;;;48243:1;48239:6;48233:3;48224:6;48221:1;48217:14;48213:24;48209:37;48205:42;48199:2;48187:9;48181:4;48177:20;48173:29;48160:43;48156:92;48148:6;48141:108;48088:175;;;48309:1;48300:6;48297:1;48293:14;48289:22;48283:4;48276:36;47637:959;-1:-1:-1;;48639:14:93;;48626:28;48622:1;48612:12;;48605:50;-1:-1:-1;48664:97:93;;-1:-1:-1;48720:40:93;48756:2;48745:14;;48720:40;:::i;:::-;48716:1;48710:4;48706:12;44369:3;44365:8;44358:4;44352:11;44348:26;44435:3;44426:5;44419:13;44412:21;44408:31;44399:7;44396:44;44390:4;44383:58;;44255:192;;;49134:912;41447:19;;41434:33;;41521:2;41510:14;;41497:28;41493:1;41483:12;;41476:50;41580:2;41569:14;;41556:28;41552:1;41542:12;;41535:50;49352:105;49453:2;49446:5;49442:14;49438:1;49432:4;49428:12;49352:105;:::i;:::-;49511:3;49500:15;;49487:29;49483:1;49473:12;;49466:51;49571:3;49560:15;;49547:29;49543:1;49533:12;;49526:51;49683:3;49672:15;;41717:19;49668:1;49658:12;;41704:33;41780:14;;;41767:28;41753:12;;;41746:50;41839:14;;;41826:28;41812:12;;;41805:50;41898:14;;;41885:28;41871:12;;;41864:50;49743:3;49736:5;49732:15;49719:29;49714:2;49708:4;49704:13;49697:52;49804:3;49797:5;49793:15;49780:29;49775:2;49769:4;49765:13;49758:52;49865:3;49858:5;49854:15;49841:29;49836:2;49830:4;49826:13;49819:52;49926:3;49919:5;49915:15;49902:29;49897:2;49891:4;49887:13;49880:52;49941:99;50035:3;50028:5;50024:15;50019:2;50013:4;50009:13;49941:99;:::i;50051:750::-;50204:5;50237:4;50259:1;50280;50290:505;50306:4;50301:3;50298:13;50290:505;;;50373:6;50413:11;50448:1;50462:235;50478:4;50473:3;50470:13;50462:235;;;50559:22;;50537:45;;50625:2;50611:17;;;;50681:1;50662:21;;;;50493:11;50462:235;;;-1:-1:-1;;;50732:2:93;50720:15;;;;;50780:4;50763:22;;;;;50330:1;50321:11;50290:505;;50806:131;-1:-1:-1;;;;;50881:31:93;;50871:42;;50861:70;;50927:1;50924;50917:12;50861:70;50806:131;:::o;50942:118::-;51028:5;51021:13;51014:21;51007:5;51004:32;50994:60;;51050:1;51047;51040:12","linkReferences":{}},"methodIdentifiers":{"addFee((uint256,uint256,uint256,uint256,(uint256,uint256[],uint256[])))":"223673e5","addGroup((string,uint256,bool))":"befef00b","addPair(((uint256,uint256,bytes32),(uint256,address),uint256,uint256,(uint256,uint256,uint256,uint256),uint256,int256,uint256,uint256,(int256,int256,uint256,uint256,uint256,uint256,bool)))":"95fe9139","addSkewOpenFees((int256[2][10]))":"1a67bacc","addtionalPairParams(uint256)":"93cf8ed3","blockOILimit(uint256)":"9ae6b9e0","correctSl(uint256,uint256,uint256,bool,uint256)":"21371f5e","correctTp(uint256,uint256,uint256,bool,uint256)":"daefa145","currentOrderId()":"925931fc","currentPercentProfit(uint256,uint256,bool,uint256,uint256)":"54d7dccb","delistPair(uint256)":"74db8c89","fees(uint256)":"4acc79ed","feesCount()":"658de48a","getPairData(uint256)":"e14ed995","getPnlBasedFee(uint256,uint256,int256)":"7719d43c","getPosType(address,uint256,uint256)":"c5f5951a","getSkewParams(uint256)":"8a549af7","groupMaxOI(uint256)":"8c9a0ea4","groupOI(uint256)":"5e4f8f59","groupOIs(uint256,uint256)":"a1ead064","groups(uint256)":"96324bd4","groupsCount()":"885e2750","guaranteedSlEnabled(uint256)":"24abd3fb","initialize(address,uint256)":"cd6dc687","isDynamicSpreadEnabled(uint256)":"69d4bda3","isPairListed(bytes32)":"5b3f8855","isUSDCAligned(uint256)":"6dc37de3","lossProtection(uint256,uint256)":"15b40d91","lossProtectionMultiplier(uint256,uint256)":"2b1cbe9d","maxWalletOI(uint256)":"56e5536c","openCloseThreshold(uint256,uint256)":"737113b5","openPosType(address,uint256,uint256)":"c9fb8b20","pairBackupFeed(uint256)":"685e905b","pairCloseFeeP(uint256)":"836a341a","pairData(uint256)":"af11959f","pairFeed(uint256)":"1eaa005c","pairGroupIndex(uint256)":"3c44d0a3","pairJob(uint256)":"302f81fc","pairLimitOrderFeeP(uint256)":"649a6488","pairMaxLeverage(uint256,bool)":"9b2f6cab","pairMaxLongOI(uint256)":"87698869","pairMaxOI(uint256)":"b2e1b2d6","pairMaxShortOI(uint256)":"108c3587","pairMinLevPosUSDC(uint256)":"238cd23f","pairMinLeverage(uint256,bool)":"995b7656","pairOpenFeeP(uint256,uint256,bool)":"fb3e519d","pairParams(uint256)":"42dee1ad","pairPriceImpactMultiplier(uint256)":"5fc8cd28","pairSkewImpactMultiplier(uint256)":"e8b50f84","pairSpreadP(uint256,bool)":"12f070cd","pairs(uint256)":"b91ac788","pairsBackend(uint256)":"9567dccf","pairsCount()":"b81b2b71","resetPosType(address,uint256,uint256)":"f80aa68b","setBlockOILImits(uint256[],uint256[])":"10ed4088","setPairData(uint256,string,string,uint256,uint256[],uint256[])":"8f6d1431","skewedFeesCount()":"6d8b5224","spreadCaps(uint256)":"d703fb08","storageT()":"16fff074","storePosType(address,uint256,uint256,bool)":"503a202f","syncGroupOI(uint256,uint256,uint256)":"72282ebe","syncOrderId(uint256)":"4e1d47ea","udpateSkewOpenFees(uint256,(int256[2][10]))":"3d7a5f1a","updateAdditionalPairParams(uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))":"2bf6ae41","updateFee(uint256,(uint256,uint256,uint256,uint256,(uint256,uint256[],uint256[])))":"f11bbcc0","updateGroup(uint256,(string,uint256,bool))":"7c07e445","updateGroupOI(uint256,uint256,bool,bool)":"4ffe8aec","updateLossProtectionMultiplier(uint256,uint256[],uint256[])":"9586621f","updatePair(uint256,((uint256,uint256,bytes32),(uint256,address),uint256,uint256,(uint256,uint256,uint256,uint256),uint256,int256,uint256,uint256,(int256,int256,uint256,uint256,uint256,uint256,bool)))":"54219e62","updatePairParams(uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))":"97db4538"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.7+commit.e28d00a7\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"param_9\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_10\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_11\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_12\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_13\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_14\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_15\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_16\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_17\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_18\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct IPairStorage.AdditionalPairParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"AdditionalPairParamsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"pairIndex\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"limits\",\"type\":\"uint256[]\"}],\"name\":\"BlockOILimitsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"FeeAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"FeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"GroupAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"GroupUpdated\",\"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\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tier\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"multiplier\",\"type\":\"uint256[]\"}],\"name\":\"LossProtectionAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"pairIndex\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"limits\",\"type\":\"uint256[]\"}],\"name\":\"OrderLimitsSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"feedId\",\"type\":\"bytes32\"}],\"name\":\"PairAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"numTiers\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"tierthresholds\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"timers\",\"type\":\"uint256[]\"}],\"name\":\"PairDataUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"PairDelisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"posSpreadCap\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"negSpreadCap\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_2\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_3\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_4\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_5\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_6\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_7\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_8\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct IPairStorage.PairParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"PairParamsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"PairUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"SkewFeeAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"SkewFeeUpdated\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"openFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"closeFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitOrderFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minLevPosUSDC\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numTiers\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"tierP\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"feesP\",\"type\":\"uint256[]\"}],\"internalType\":\"struct IPairStorage.PnlFees\",\"name\":\"pnlFees\",\"type\":\"tuple\"}],\"internalType\":\"struct IPairStorage.Fee\",\"name\":\"_fee\",\"type\":\"tuple\"}],\"name\":\"addFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"maxOpenInterestP\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isSpreadDynamic\",\"type\":\"bool\"}],\"internalType\":\"struct IPairStorage.Group\",\"name\":\"_group\",\"type\":\"tuple\"}],\"name\":\"addGroup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxOpenDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxCloseDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"feedId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IPairStorage.Feed\",\"name\":\"feed\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feedId\",\"type\":\"address\"}],\"internalType\":\"struct IPairStorage.BackupFeed\",\"name\":\"backupFeed\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"spreadP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pnlSpreadP\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"minLeverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxLeverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pnlMinLeverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pnlMaxLeverage\",\"type\":\"uint256\"}],\"internalType\":\"struct IPairStorage.Leverage\",\"name\":\"leverages\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"priceImpactMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"skewImpactMultiplier\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"groupIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"int256\",\"name\":\"maxGainP\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"maxSlP\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxLongOiP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxShortOiP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"groupOpenInterestPecentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxWalletOI\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isUSDCAligned\",\"type\":\"bool\"}],\"internalType\":\"struct IPairStorage.Values\",\"name\":\"values\",\"type\":\"tuple\"}],\"internalType\":\"struct IPairStorage.Pair\",\"name\":\"_pair\",\"type\":\"tuple\"}],\"name\":\"addPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"int256[2][10]\",\"name\":\"eqParams\",\"type\":\"int256[2][10]\"}],\"internalType\":\"struct IPairStorage.SkewFee\",\"name\":\"_skewFee\",\"type\":\"tuple\"}],\"name\":\"addSkewOpenFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"addtionalPairParams\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"param_9\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_10\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_11\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_12\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_13\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_14\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_15\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_16\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_17\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_18\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"blockOILimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"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\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"correctSl\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"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\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"correctTp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentOrderId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"openPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"currentPrice\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"buy\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"leverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"}],\"name\":\"currentPercentProfit\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"p\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"delistPair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"fees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"openFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"closeFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitOrderFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minLevPosUSDC\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numTiers\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"tierP\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"feesP\",\"type\":\"uint256[]\"}],\"internalType\":\"struct IPairStorage.PnlFees\",\"name\":\"pnlFees\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"getPairData\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"numTiers\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"tierThresholds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"timer\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateral\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"percentProfit\",\"type\":\"int256\"}],\"name\":\"getPnlBasedFee\",\"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\":\"index\",\"type\":\"uint256\"}],\"name\":\"getPosType\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"getSkewParams\",\"outputs\":[{\"components\":[{\"internalType\":\"int256[2][10]\",\"name\":\"eqParams\",\"type\":\"int256[2][10]\"}],\"internalType\":\"struct IPairStorage.SkewFee\",\"name\":\"skewFee\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"groupMaxOI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"groupOI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"groupOIs\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"groups\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"maxOpenInterestP\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isSpreadDynamic\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"groupsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"guaranteedSlEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_storageT\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_currentOrderId\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"isDynamicSpreadEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"isPairListed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"isUSDCAligned\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"lossProtection\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_tier\",\"type\":\"uint256\"}],\"name\":\"lossProtectionMultiplier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"maxWalletOI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_leveragePos\",\"type\":\"uint256\"}],\"name\":\"openCloseThreshold\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"openPosType\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairBackupFeed\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feedId\",\"type\":\"address\"}],\"internalType\":\"struct IPairStorage.BackupFeed\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairCloseFeeP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pairData\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"numTiers\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairFeed\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxOpenDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxCloseDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"feedId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IPairStorage.Feed\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairGroupIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairJob\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairLimitOrderFeeP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_isPnl\",\"type\":\"bool\"}],\"name\":\"pairMaxLeverage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairMaxLongOI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairMaxOI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairMaxShortOI\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairMinLevPosUSDC\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_isPnl\",\"type\":\"bool\"}],\"name\":\"pairMinLeverage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_leveragedPosition\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_buy\",\"type\":\"bool\"}],\"name\":\"pairOpenFeeP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pairParams\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"posSpreadCap\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"negSpreadCap\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_2\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_3\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_4\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_5\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_6\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_7\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_8\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairPriceImpactMultiplier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"pairSkewImpactMultiplier\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"\",\"type\":\"int256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_isPnl\",\"type\":\"bool\"}],\"name\":\"pairSpreadP\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"spreadP\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"pairs\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxOpenDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxCloseDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"feedId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IPairStorage.Feed\",\"name\":\"feed\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feedId\",\"type\":\"address\"}],\"internalType\":\"struct IPairStorage.BackupFeed\",\"name\":\"backupFeed\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"spreadP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pnlSpreadP\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"minLeverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxLeverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pnlMinLeverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pnlMaxLeverage\",\"type\":\"uint256\"}],\"internalType\":\"struct IPairStorage.Leverage\",\"name\":\"leverages\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"priceImpactMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"skewImpactMultiplier\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"groupIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"int256\",\"name\":\"maxGainP\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"maxSlP\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxLongOiP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxShortOiP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"groupOpenInterestPecentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxWalletOI\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isUSDCAligned\",\"type\":\"bool\"}],\"internalType\":\"struct IPairStorage.Values\",\"name\":\"values\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"pairsBackend\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxOpenDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxCloseDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"feedId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IPairStorage.Feed\",\"name\":\"feed\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feedId\",\"type\":\"address\"}],\"internalType\":\"struct IPairStorage.BackupFeed\",\"name\":\"backupFeed\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"spreadP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pnlSpreadP\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"minLeverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxLeverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pnlMinLeverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pnlMaxLeverage\",\"type\":\"uint256\"}],\"internalType\":\"struct IPairStorage.Leverage\",\"name\":\"leverages\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"priceImpactMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"skewImpactMultiplier\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"groupIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"int256\",\"name\":\"maxGainP\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"maxSlP\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxLongOiP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxShortOiP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"groupOpenInterestPecentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxWalletOI\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isUSDCAligned\",\"type\":\"bool\"}],\"internalType\":\"struct IPairStorage.Values\",\"name\":\"values\",\"type\":\"tuple\"}],\"internalType\":\"struct IPairStorage.Pair\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"maxOpenInterestP\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isSpreadDynamic\",\"type\":\"bool\"}],\"internalType\":\"struct IPairStorage.Group\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"openFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"closeFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitOrderFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minLevPosUSDC\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numTiers\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"tierP\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"feesP\",\"type\":\"uint256[]\"}],\"internalType\":\"struct IPairStorage.PnlFees\",\"name\":\"pnlFees\",\"type\":\"tuple\"}],\"internalType\":\"struct IPairStorage.Fee\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pairsCount\",\"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\":\"index\",\"type\":\"uint256\"}],\"name\":\"resetPosType\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_pairIndex\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_limits\",\"type\":\"uint256[]\"}],\"name\":\"setBlockOILImits\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"from\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"to\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_numTiers\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"_tierThresholds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_timer\",\"type\":\"uint256[]\"}],\"name\":\"setPairData\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"skewedFeesCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"}],\"name\":\"spreadCaps\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"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\":\"pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isPnl\",\"type\":\"bool\"}],\"name\":\"storePosType\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_newLongOI\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_newShortOI\",\"type\":\"uint256\"}],\"name\":\"syncGroupOI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_orderId\",\"type\":\"uint256\"}],\"name\":\"syncOrderId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"int256[2][10]\",\"name\":\"eqParams\",\"type\":\"int256[2][10]\"}],\"internalType\":\"struct IPairStorage.SkewFee\",\"name\":\"_skewFee\",\"type\":\"tuple\"}],\"name\":\"udpateSkewOpenFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"param_9\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_10\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_11\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_12\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_13\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_14\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_15\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_16\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_17\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_18\",\"type\":\"uint256\"}],\"internalType\":\"struct IPairStorage.AdditionalPairParams\",\"name\":\"_params\",\"type\":\"tuple\"}],\"name\":\"updateAdditionalPairParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"openFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"closeFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limitOrderFeeP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minLevPosUSDC\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"numTiers\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"tierP\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"feesP\",\"type\":\"uint256[]\"}],\"internalType\":\"struct IPairStorage.PnlFees\",\"name\":\"pnlFees\",\"type\":\"tuple\"}],\"internalType\":\"struct IPairStorage.Fee\",\"name\":\"_fee\",\"type\":\"tuple\"}],\"name\":\"updateFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_id\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"maxOpenInterestP\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isSpreadDynamic\",\"type\":\"bool\"}],\"internalType\":\"struct IPairStorage.Group\",\"name\":\"_group\",\"type\":\"tuple\"}],\"name\":\"updateGroup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_long\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_increase\",\"type\":\"bool\"}],\"name\":\"updateGroupOI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"_tier\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_multiplierPercent\",\"type\":\"uint256[]\"}],\"name\":\"updateLossProtectionMultiplier\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxOpenDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxCloseDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"feedId\",\"type\":\"bytes32\"}],\"internalType\":\"struct IPairStorage.Feed\",\"name\":\"feed\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"maxDeviationP\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"feedId\",\"type\":\"address\"}],\"internalType\":\"struct IPairStorage.BackupFeed\",\"name\":\"backupFeed\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"spreadP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pnlSpreadP\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"minLeverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxLeverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pnlMinLeverage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"pnlMaxLeverage\",\"type\":\"uint256\"}],\"internalType\":\"struct IPairStorage.Leverage\",\"name\":\"leverages\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"priceImpactMultiplier\",\"type\":\"uint256\"},{\"internalType\":\"int256\",\"name\":\"skewImpactMultiplier\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"groupIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"int256\",\"name\":\"maxGainP\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"maxSlP\",\"type\":\"int256\"},{\"internalType\":\"uint256\",\"name\":\"maxLongOiP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxShortOiP\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"groupOpenInterestPecentage\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxWalletOI\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isUSDCAligned\",\"type\":\"bool\"}],\"internalType\":\"struct IPairStorage.Values\",\"name\":\"values\",\"type\":\"tuple\"}],\"internalType\":\"struct IPairStorage.Pair\",\"name\":\"_pair\",\"type\":\"tuple\"}],\"name\":\"updatePair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_pairIndex\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"posSpreadCap\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"negSpreadCap\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_1\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_2\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_3\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_4\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_5\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_6\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_7\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"param_8\",\"type\":\"uint256\"}],\"internalType\":\"struct IPairStorage.PairParams\",\"name\":\"_params\",\"type\":\"tuple\"}],\"name\":\"updatePairParams\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"addFee((uint256,uint256,uint256,uint256,(uint256,uint256[],uint256[])))\":{\"params\":{\"_fee\":\"The Fee structure to add.\"}},\"addGroup((string,uint256,bool))\":{\"params\":{\"_group\":\"The new group to be added.\"}},\"addPair(((uint256,uint256,bytes32),(uint256,address),uint256,uint256,(uint256,uint256,uint256,uint256),uint256,int256,uint256,uint256,(int256,int256,uint256,uint256,uint256,uint256,bool)))\":{\"details\":\"Adds a new trading pair.\",\"params\":{\"_pair\":\"The new trading pair to add.\"}},\"addSkewOpenFees((int256[2][10]))\":{\"details\":\"Adds a skew open fee.\",\"params\":{\"_skewFee\":\"The skew fee to add.\"}},\"correctSl(uint256,uint256,uint256,bool,uint256)\":{\"params\":{\"buy\":\"Long/Short\",\"leverage\":\"Leverage of trade \",\"openPrice\":\"Opening Price\",\"pairIndex\":\"Index of Asset \",\"sl\":\"Stop Loss\"}},\"correctTp(uint256,uint256,uint256,bool,uint256)\":{\"params\":{\"buy\":\"Long/Short\",\"leverage\":\"Leverage of trade \",\"openPrice\":\"Opening Price\",\"pairIndex\":\"Index of Asset \",\"tp\":\"Take Profit\"}},\"currentPercentProfit(uint256,uint256,bool,uint256,uint256)\":{\"params\":{\"buy\":\"Long/Short\",\"currentPrice\":\"Current Price\",\"leverage\":\"Leverage of the trade in 1e10 precision\",\"openPrice\":\"Opening Price\",\"pairIndex\":\"Index of Asset \"}},\"delistPair(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the pair to be delisted.\"}},\"getPnlBasedFee(uint256,uint256,int256)\":{\"params\":{\"collateral\":\"Amount of Collateral\",\"pairIndex\":\"Asset\",\"percentProfit\":\"Profit percentage in 1e10 precision. 1e10 = 1% \"}},\"groupMaxOI(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The maximum open interest for the group.\"}},\"groupOI(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The total open interest for the group.\"}},\"guaranteedSlEnabled(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"True if enabled, false otherwise.\"}},\"initialize(address,uint256)\":{\"details\":\"Initializes the contract.\",\"params\":{\"_currentOrderId\":\"Initial order ID.\",\"_storageT\":\"Address of the trading storage contract.\"}},\"isUSDCAligned(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"bool\"}},\"lossProtectionMultiplier(uint256,uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\",\"_tier\":\"The tier level.\"},\"returns\":{\"_0\":\"The loss protection multiplier.\"}},\"maxWalletOI(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The maximum open interest for the wallet.\"}},\"pairBackupFeed(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"BackupFeed memory object containing backup feed information.\"}},\"pairCloseFeeP(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The fee percentage for closing the position.\"}},\"pairFeed(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"Feed memory object containing feed related information.\"}},\"pairGroupIndex(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The group index.\"}},\"pairJob(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"A tuple containing the feed IDs and the order ID.\"}},\"pairLimitOrderFeeP(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The fee percentage for the limit order.\"}},\"pairMaxLeverage(uint256,bool)\":{\"params\":{\"_isPnl\":\"Is a Pnl Based OrderType\",\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The maximum leverage.\"}},\"pairMaxLongOI(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The maximum Long open interest for the pair.\"}},\"pairMaxOI(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The maximum open interest for the pair.\"}},\"pairMaxShortOI(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The maximum Short open interest for the pair.\"}},\"pairMinLevPosUSDC(uint256)\":{\"params\":{\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The minimum leveraged position size in USDC.\"}},\"pairMinLeverage(uint256,bool)\":{\"params\":{\"_isPnl\":\"Is a Pnl Based OrderType\",\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The minimum leverage.\"}},\"pairOpenFeeP(uint256,uint256,bool)\":{\"params\":{\"_buy\":\"Boolean indicating whether the position is a long (true) or short (false).\",\"_leveragedPosition\":\"The size of the leveraged position.\",\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"The fee percentage for opening the position.\"}},\"pairPriceImpactMultiplier(uint256)\":{\"params\":{\"_pairIndex\":\"The pair Index\"},\"returns\":{\"_0\":\"Pair Price Impact multiplier\"}},\"pairSkewImpactMultiplier(uint256)\":{\"params\":{\"_pairIndex\":\"The pair Index\"},\"returns\":{\"_0\":\"Pair Skew Impact multiplier\"}},\"pairSpreadP(uint256,bool)\":{\"params\":{\"_isPnl\":\"Bool for pnl fee type orders\",\"_pairIndex\":\"The index of the trading pair.\"},\"returns\":{\"spreadP\":\"The spread percentage.\"}},\"pairsBackend(uint256)\":{\"params\":{\"_index\":\"The index of the trading pair.\"},\"returns\":{\"_0\":\"Pair memory, Group memory, and Fee memory objects containing details for the trading pair, group, and fees.\"}},\"setBlockOILImits(uint256[],uint256[])\":{\"params\":{\"_limits\":\"Value of per block OI limits\",\"_pairIndex\":\"Array of pair Indexes to update Limits for\"}},\"syncGroupOI(uint256,uint256,uint256)\":{\"details\":\"Only to be called before migration\",\"params\":{\"_newLongOI\":\"The new Long OI\",\"_newShortOI\":\"The new Short OI\",\"_pairIndex\":\"The index of the trading pair.\"}},\"udpateSkewOpenFees(uint256,(int256[2][10]))\":{\"details\":\"Updates a skew open fee.\",\"params\":{\"_pairIndex\":\"The index of the pair to update.\",\"_skewFee\":\"The new skew fee.\"}},\"updateAdditionalPairParams(uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))\":{\"details\":\"Params are left vacant to future proof\"},\"updateFee(uint256,(uint256,uint256,uint256,uint256,(uint256,uint256[],uint256[])))\":{\"params\":{\"_fee\":\"The new Fee structure.\",\"_id\":\"The ID of the fee structure to update.\"}},\"updateGroup(uint256,(string,uint256,bool))\":{\"params\":{\"_group\":\"The new group data.\",\"_id\":\"The ID of the group to be updated.\"}},\"updateGroupOI(uint256,uint256,bool,bool)\":{\"params\":{\"_amount\":\"The amount to update the open interest by.\",\"_increase\":\"Specifies if the open interest should be increased.\",\"_long\":\"Specifies if the position is long.\",\"_pairIndex\":\"The index of the trading pair.\"}},\"updateLossProtectionMultiplier(uint256,uint256[],uint256[])\":{\"params\":{\"_multiplierPercent\":\"The corresponding multipliers for each tier.\",\"_pairIndex\":\"The index of the trading pair.\",\"_tier\":\"The tiers for the loss protection.\"}},\"updatePair(uint256,((uint256,uint256,bytes32),(uint256,address),uint256,uint256,(uint256,uint256,uint256,uint256),uint256,int256,uint256,uint256,(int256,int256,uint256,uint256,uint256,uint256,bool)))\":{\"details\":\"Updates an existing trading pair.\",\"params\":{\"_pair\":\"The new pair data.\",\"_pairIndex\":\"The index of the pair to update.\"}},\"updatePairParams(uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))\":{\"details\":\"Some Params are left vacant to future proof\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"addFee((uint256,uint256,uint256,uint256,(uint256,uint256[],uint256[])))\":{\"notice\":\"Adds a new fee structure.\"},\"addGroup((string,uint256,bool))\":{\"notice\":\"Adds a new trading group.\"},\"correctSl(uint256,uint256,uint256,bool,uint256)\":{\"notice\":\"Method to correct Sl based on max SLs allowed per pair\"},\"correctTp(uint256,uint256,uint256,bool,uint256)\":{\"notice\":\"Method to Correct TP based on MAX Gains Allowed per Pair\"},\"currentPercentProfit(uint256,uint256,bool,uint256,uint256)\":{\"notice\":\"Returns profit percent given openPrice and Current price\"},\"delistPair(uint256)\":{\"notice\":\"Delists a trading pair by index.\"},\"getPnlBasedFee(uint256,uint256,int256)\":{\"notice\":\"Computes the Pnl based fee\"},\"getPosType(address,uint256,uint256)\":{\"notice\":\"Return True if the position type is of pnl based Fee\"},\"getSkewParams(uint256)\":{\"notice\":\"Getter for skew Fees\"},\"groupMaxOI(uint256)\":{\"notice\":\"Get the maximum open interest (OI) for a group.\"},\"groupOI(uint256)\":{\"notice\":\"Get the total open interest (OI) for a group.\"},\"guaranteedSlEnabled(uint256)\":{\"notice\":\"Check if guaranteed stop loss is enabled for a trading pair.\"},\"isDynamicSpreadEnabled(uint256)\":{\"notice\":\"Method to check if spread is dynamic or constant\"},\"isUSDCAligned(uint256)\":{\"notice\":\"Helper method to Check pair is usdc aligned\"},\"lossProtectionMultiplier(uint256,uint256)\":{\"notice\":\"Get the loss protection multiplier for a trading pair and tier.\"},\"maxWalletOI(uint256)\":{\"notice\":\"Get the maximum open interest (OI) for a wallet in a trading pair.\"},\"openCloseThreshold(uint256,uint256)\":{\"notice\":\"Gets the Threshold to close the trade\"},\"pairBackupFeed(uint256)\":{\"notice\":\"Get the Chainlink backup feed information of a trading pair.\"},\"pairCloseFeeP(uint256)\":{\"notice\":\"Get the fee for closing a position on a trading pair.\"},\"pairFeed(uint256)\":{\"notice\":\"Get the Pyth feed information of a trading pair.\"},\"pairGroupIndex(uint256)\":{\"notice\":\"Get the group index to which a trading pair belongs.\"},\"pairJob(uint256)\":{\"notice\":\"Fetches relevant information for an order.\"},\"pairLimitOrderFeeP(uint256)\":{\"notice\":\"Get the fee for executing a TP/SL limit close.\"},\"pairMaxLeverage(uint256,bool)\":{\"notice\":\"Get the maximum leverage available for a trading pair.\"},\"pairMaxLongOI(uint256)\":{\"notice\":\"Get the maximum Long open interest (OI) for a trading pair.\"},\"pairMaxOI(uint256)\":{\"notice\":\"Get the maximum open interest (OI) for a trading pair.\"},\"pairMaxShortOI(uint256)\":{\"notice\":\"Get the maximum Short open interest (OI) for a trading pair.\"},\"pairMinLevPosUSDC(uint256)\":{\"notice\":\"Get the minimum leveraged position size (in USDC) allowed for a trading pair.\"},\"pairMinLeverage(uint256,bool)\":{\"notice\":\"Get the minimum leverage available for a trading pair.\"},\"pairOpenFeeP(uint256,uint256,bool)\":{\"notice\":\"Calculate the fee for opening a leveraged position on a trading pair based on skew\"},\"pairPriceImpactMultiplier(uint256)\":{\"notice\":\"Get priceImpact multiplier for a certain pair\"},\"pairSkewImpactMultiplier(uint256)\":{\"notice\":\"Get priceImpact multiplier for a certain pair\"},\"pairSpreadP(uint256,bool)\":{\"notice\":\"Get the spread percentage of a trading pair.\"},\"pairsBackend(uint256)\":{\"notice\":\"Get backend details for a specific trading pair, its group, and associated fees.\"},\"resetPosType(address,uint256,uint256)\":{\"notice\":\"Resets Position type\"},\"setBlockOILImits(uint256[],uint256[])\":{\"notice\":\"Updates per block OI limit\"},\"spreadCaps(uint256)\":{\"notice\":\"Getter for spread caps of an asset\"},\"storePosType(address,uint256,uint256,bool)\":{\"notice\":\"Stores whether position is pnl Based\"},\"syncGroupOI(uint256,uint256,uint256)\":{\"notice\":\"Syncs the group OI between new and old pairStorage contract\"},\"syncOrderId(uint256)\":{\"notice\":\"Syncs the current order ID between new and old pairStorage contract\"},\"updateAdditionalPairParams(uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))\":{\"notice\":\"Setter method for setting additiaonl pairSpecific params\"},\"updateFee(uint256,(uint256,uint256,uint256,uint256,(uint256,uint256[],uint256[])))\":{\"notice\":\"Updates an existing fee structure.\"},\"updateGroup(uint256,(string,uint256,bool))\":{\"notice\":\"Updates an existing trading group.\"},\"updateGroupOI(uint256,uint256,bool,bool)\":{\"notice\":\"Updates the collateral open interest for a trading group.\"},\"updateLossProtectionMultiplier(uint256,uint256[],uint256[])\":{\"notice\":\"Updates the loss protection multiplier for a given trading pair.\"},\"updatePairParams(uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))\":{\"notice\":\"Setter method for setting pairSpecific params\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PairStorage.sol\":\"PairStorage\"},\"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/PairStorage.sol\":{\"keccak256\":\"0xf1ea751492158caffdb61c1fe25adf06f9810d0f35a2c27192130e0ca856cb44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://029c90e540cca0668a9d1b8220470e1c002238367e178b1453d7d14d845b398d\",\"dweb:/ipfs/QmRAofvYaXs3XFdffHVebAAijzq1PojQbavkajdELJYYp6\"]},\"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/IPairStorage.sol\":{\"keccak256\":\"0x57c1e95f658d16420395366771adbf988182fb47bbe70d54bb63c1289160e55e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c420e45ef67e9fdc0567fdfe153442ed427696d55e13ae9023b29b69bc34772\",\"dweb:/ipfs/QmfTM3YeCTzrYc9qaMzz6LELfyHAq7ip94C9P4dC7npuMx\"]},\"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\":\"0xb2d69792255b3a6e1ed844dc50d1052a710ed1e02a110d50c0afca1ef8b0e6d2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://112acb22b0db69deea1ab4b0a404f37372e4d6f460b1fe4ca9f5fba4b9838abe\",\"dweb:/ipfs/QmTzjgCUhpUfHAZA8zFJyqbYDQHZ25RoERQ7N3HnsXudMG\"]},\"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":"struct IPairStorage.AdditionalPairParams","name":"params","type":"tuple","components":[{"internalType":"uint256","name":"param_9","type":"uint256"},{"internalType":"uint256","name":"param_10","type":"uint256"},{"internalType":"uint256","name":"param_11","type":"uint256"},{"internalType":"uint256","name":"param_12","type":"uint256"},{"internalType":"uint256","name":"param_13","type":"uint256"},{"internalType":"uint256","name":"param_14","type":"uint256"},{"internalType":"uint256","name":"param_15","type":"uint256"},{"internalType":"uint256","name":"param_16","type":"uint256"},{"internalType":"uint256","name":"param_17","type":"uint256"},{"internalType":"uint256","name":"param_18","type":"uint256"}],"indexed":false}],"type":"event","name":"AdditionalPairParamsUpdated","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"pairIndex","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"limits","type":"uint256[]","indexed":false}],"type":"event","name":"BlockOILimitsSet","anonymous":false},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256","indexed":false}],"type":"event","name":"FeeAdded","anonymous":false},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256","indexed":false}],"type":"event","name":"FeeUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"string","name":"name","type":"string","indexed":false}],"type":"event","name":"GroupAdded","anonymous":false},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256","indexed":false}],"type":"event","name":"GroupUpdated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"uint256[]","name":"tier","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"multiplier","type":"uint256[]","indexed":false}],"type":"event","name":"LossProtectionAdded","anonymous":false},{"inputs":[{"internalType":"uint256[]","name":"pairIndex","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"limits","type":"uint256[]","indexed":false}],"type":"event","name":"OrderLimitsSet","anonymous":false},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"bytes32","name":"feedId","type":"bytes32","indexed":false}],"type":"event","name":"PairAdded","anonymous":false},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256","indexed":false},{"internalType":"string","name":"from","type":"string","indexed":false},{"internalType":"string","name":"to","type":"string","indexed":false},{"internalType":"uint256","name":"numTiers","type":"uint256","indexed":false},{"internalType":"uint256[]","name":"tierthresholds","type":"uint256[]","indexed":false},{"internalType":"uint256[]","name":"timers","type":"uint256[]","indexed":false}],"type":"event","name":"PairDataUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256","indexed":false}],"type":"event","name":"PairDelisted","anonymous":false},{"inputs":[{"internalType":"struct IPairStorage.PairParams","name":"params","type":"tuple","components":[{"internalType":"uint256","name":"posSpreadCap","type":"uint256"},{"internalType":"uint256","name":"negSpreadCap","type":"uint256"},{"internalType":"uint256","name":"param_1","type":"uint256"},{"internalType":"uint256","name":"param_2","type":"uint256"},{"internalType":"uint256","name":"param_3","type":"uint256"},{"internalType":"uint256","name":"param_4","type":"uint256"},{"internalType":"uint256","name":"param_5","type":"uint256"},{"internalType":"uint256","name":"param_6","type":"uint256"},{"internalType":"uint256","name":"param_7","type":"uint256"},{"internalType":"uint256","name":"param_8","type":"uint256"}],"indexed":false}],"type":"event","name":"PairParamsUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256","indexed":false}],"type":"event","name":"PairUpdated","anonymous":false},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256","indexed":false}],"type":"event","name":"SkewFeeAdded","anonymous":false},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256","indexed":false}],"type":"event","name":"SkewFeeUpdated","anonymous":false},{"inputs":[{"internalType":"struct IPairStorage.Fee","name":"_fee","type":"tuple","components":[{"internalType":"uint256","name":"openFeeP","type":"uint256"},{"internalType":"uint256","name":"closeFeeP","type":"uint256"},{"internalType":"uint256","name":"limitOrderFeeP","type":"uint256"},{"internalType":"uint256","name":"minLevPosUSDC","type":"uint256"},{"internalType":"struct IPairStorage.PnlFees","name":"pnlFees","type":"tuple","components":[{"internalType":"uint256","name":"numTiers","type":"uint256"},{"internalType":"uint256[]","name":"tierP","type":"uint256[]"},{"internalType":"uint256[]","name":"feesP","type":"uint256[]"}]}]}],"stateMutability":"nonpayable","type":"function","name":"addFee"},{"inputs":[{"internalType":"struct IPairStorage.Group","name":"_group","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"maxOpenInterestP","type":"uint256"},{"internalType":"bool","name":"isSpreadDynamic","type":"bool"}]}],"stateMutability":"nonpayable","type":"function","name":"addGroup"},{"inputs":[{"internalType":"struct IPairStorage.Pair","name":"_pair","type":"tuple","components":[{"internalType":"struct IPairStorage.Feed","name":"feed","type":"tuple","components":[{"internalType":"uint256","name":"maxOpenDeviationP","type":"uint256"},{"internalType":"uint256","name":"maxCloseDeviationP","type":"uint256"},{"internalType":"bytes32","name":"feedId","type":"bytes32"}]},{"internalType":"struct IPairStorage.BackupFeed","name":"backupFeed","type":"tuple","components":[{"internalType":"uint256","name":"maxDeviationP","type":"uint256"},{"internalType":"address","name":"feedId","type":"address"}]},{"internalType":"uint256","name":"spreadP","type":"uint256"},{"internalType":"uint256","name":"pnlSpreadP","type":"uint256"},{"internalType":"struct IPairStorage.Leverage","name":"leverages","type":"tuple","components":[{"internalType":"uint256","name":"minLeverage","type":"uint256"},{"internalType":"uint256","name":"maxLeverage","type":"uint256"},{"internalType":"uint256","name":"pnlMinLeverage","type":"uint256"},{"internalType":"uint256","name":"pnlMaxLeverage","type":"uint256"}]},{"internalType":"uint256","name":"priceImpactMultiplier","type":"uint256"},{"internalType":"int256","name":"skewImpactMultiplier","type":"int256"},{"internalType":"uint256","name":"groupIndex","type":"uint256"},{"internalType":"uint256","name":"feeIndex","type":"uint256"},{"internalType":"struct IPairStorage.Values","name":"values","type":"tuple","components":[{"internalType":"int256","name":"maxGainP","type":"int256"},{"internalType":"int256","name":"maxSlP","type":"int256"},{"internalType":"uint256","name":"maxLongOiP","type":"uint256"},{"internalType":"uint256","name":"maxShortOiP","type":"uint256"},{"internalType":"uint256","name":"groupOpenInterestPecentage","type":"uint256"},{"internalType":"uint256","name":"maxWalletOI","type":"uint256"},{"internalType":"bool","name":"isUSDCAligned","type":"bool"}]}]}],"stateMutability":"nonpayable","type":"function","name":"addPair"},{"inputs":[{"internalType":"struct IPairStorage.SkewFee","name":"_skewFee","type":"tuple","components":[{"internalType":"int256[2][10]","name":"eqParams","type":"int256[2][10]"}]}],"stateMutability":"nonpayable","type":"function","name":"addSkewOpenFees"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"addtionalPairParams","outputs":[{"internalType":"uint256","name":"param_9","type":"uint256"},{"internalType":"uint256","name":"param_10","type":"uint256"},{"internalType":"uint256","name":"param_11","type":"uint256"},{"internalType":"uint256","name":"param_12","type":"uint256"},{"internalType":"uint256","name":"param_13","type":"uint256"},{"internalType":"uint256","name":"param_14","type":"uint256"},{"internalType":"uint256","name":"param_15","type":"uint256"},{"internalType":"uint256","name":"param_16","type":"uint256"},{"internalType":"uint256","name":"param_17","type":"uint256"},{"internalType":"uint256","name":"param_18","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"blockOILimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"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"},{"internalType":"uint256","name":"pairIndex","type":"uint256"}],"stateMutability":"view","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"},{"internalType":"uint256","name":"pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"correctTp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"currentOrderId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"openPrice","type":"uint256"},{"internalType":"uint256","name":"currentPrice","type":"uint256"},{"internalType":"bool","name":"buy","type":"bool"},{"internalType":"uint256","name":"leverage","type":"uint256"},{"internalType":"uint256","name":"pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"currentPercentProfit","outputs":[{"internalType":"int256","name":"p","type":"int256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"delistPair"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"fees","outputs":[{"internalType":"uint256","name":"openFeeP","type":"uint256"},{"internalType":"uint256","name":"closeFeeP","type":"uint256"},{"internalType":"uint256","name":"limitOrderFeeP","type":"uint256"},{"internalType":"uint256","name":"minLevPosUSDC","type":"uint256"},{"internalType":"struct IPairStorage.PnlFees","name":"pnlFees","type":"tuple","components":[{"internalType":"uint256","name":"numTiers","type":"uint256"},{"internalType":"uint256[]","name":"tierP","type":"uint256[]"},{"internalType":"uint256[]","name":"feesP","type":"uint256[]"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"feesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPairData","outputs":[{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"},{"internalType":"uint256","name":"numTiers","type":"uint256"},{"internalType":"uint256[]","name":"tierThresholds","type":"uint256[]"},{"internalType":"uint256[]","name":"timer","type":"uint256[]"}]},{"inputs":[{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"collateral","type":"uint256"},{"internalType":"int256","name":"percentProfit","type":"int256"}],"stateMutability":"view","type":"function","name":"getPnlBasedFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPosType","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"getSkewParams","outputs":[{"internalType":"struct IPairStorage.SkewFee","name":"skewFee","type":"tuple","components":[{"internalType":"int256[2][10]","name":"eqParams","type":"int256[2][10]"}]}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"groupMaxOI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"groupOI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"groupOIs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"groups","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"maxOpenInterestP","type":"uint256"},{"internalType":"bool","name":"isSpreadDynamic","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"groupsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"guaranteedSlEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_storageT","type":"address"},{"internalType":"uint256","name":"_currentOrderId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"isDynamicSpreadEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"isPairListed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"isUSDCAligned","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"lossProtection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_tier","type":"uint256"}],"stateMutability":"view","type":"function","name":"lossProtectionMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"maxWalletOI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_leveragePos","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"openCloseThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"openPosType","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairBackupFeed","outputs":[{"internalType":"struct IPairStorage.BackupFeed","name":"","type":"tuple","components":[{"internalType":"uint256","name":"maxDeviationP","type":"uint256"},{"internalType":"address","name":"feedId","type":"address"}]}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairCloseFeeP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairData","outputs":[{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"},{"internalType":"uint256","name":"numTiers","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairFeed","outputs":[{"internalType":"struct IPairStorage.Feed","name":"","type":"tuple","components":[{"internalType":"uint256","name":"maxOpenDeviationP","type":"uint256"},{"internalType":"uint256","name":"maxCloseDeviationP","type":"uint256"},{"internalType":"bytes32","name":"feedId","type":"bytes32"}]}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairGroupIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"pairJob","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairLimitOrderFeeP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"bool","name":"_isPnl","type":"bool"}],"stateMutability":"view","type":"function","name":"pairMaxLeverage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairMaxLongOI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairMaxOI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairMaxShortOI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairMinLevPosUSDC","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"bool","name":"_isPnl","type":"bool"}],"stateMutability":"view","type":"function","name":"pairMinLeverage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_leveragedPosition","type":"uint256"},{"internalType":"bool","name":"_buy","type":"bool"}],"stateMutability":"view","type":"function","name":"pairOpenFeeP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairParams","outputs":[{"internalType":"uint256","name":"posSpreadCap","type":"uint256"},{"internalType":"uint256","name":"negSpreadCap","type":"uint256"},{"internalType":"uint256","name":"param_1","type":"uint256"},{"internalType":"uint256","name":"param_2","type":"uint256"},{"internalType":"uint256","name":"param_3","type":"uint256"},{"internalType":"uint256","name":"param_4","type":"uint256"},{"internalType":"uint256","name":"param_5","type":"uint256"},{"internalType":"uint256","name":"param_6","type":"uint256"},{"internalType":"uint256","name":"param_7","type":"uint256"},{"internalType":"uint256","name":"param_8","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairPriceImpactMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairSkewImpactMultiplier","outputs":[{"internalType":"int256","name":"","type":"int256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"bool","name":"_isPnl","type":"bool"}],"stateMutability":"view","type":"function","name":"pairSpreadP","outputs":[{"internalType":"uint256","name":"spreadP","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairs","outputs":[{"internalType":"struct IPairStorage.Feed","name":"feed","type":"tuple","components":[{"internalType":"uint256","name":"maxOpenDeviationP","type":"uint256"},{"internalType":"uint256","name":"maxCloseDeviationP","type":"uint256"},{"internalType":"bytes32","name":"feedId","type":"bytes32"}]},{"internalType":"struct IPairStorage.BackupFeed","name":"backupFeed","type":"tuple","components":[{"internalType":"uint256","name":"maxDeviationP","type":"uint256"},{"internalType":"address","name":"feedId","type":"address"}]},{"internalType":"uint256","name":"spreadP","type":"uint256"},{"internalType":"uint256","name":"pnlSpreadP","type":"uint256"},{"internalType":"struct IPairStorage.Leverage","name":"leverages","type":"tuple","components":[{"internalType":"uint256","name":"minLeverage","type":"uint256"},{"internalType":"uint256","name":"maxLeverage","type":"uint256"},{"internalType":"uint256","name":"pnlMinLeverage","type":"uint256"},{"internalType":"uint256","name":"pnlMaxLeverage","type":"uint256"}]},{"internalType":"uint256","name":"priceImpactMultiplier","type":"uint256"},{"internalType":"int256","name":"skewImpactMultiplier","type":"int256"},{"internalType":"uint256","name":"groupIndex","type":"uint256"},{"internalType":"uint256","name":"feeIndex","type":"uint256"},{"internalType":"struct IPairStorage.Values","name":"values","type":"tuple","components":[{"internalType":"int256","name":"maxGainP","type":"int256"},{"internalType":"int256","name":"maxSlP","type":"int256"},{"internalType":"uint256","name":"maxLongOiP","type":"uint256"},{"internalType":"uint256","name":"maxShortOiP","type":"uint256"},{"internalType":"uint256","name":"groupOpenInterestPecentage","type":"uint256"},{"internalType":"uint256","name":"maxWalletOI","type":"uint256"},{"internalType":"bool","name":"isUSDCAligned","type":"bool"}]}]},{"inputs":[{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"pairsBackend","outputs":[{"internalType":"struct IPairStorage.Pair","name":"","type":"tuple","components":[{"internalType":"struct IPairStorage.Feed","name":"feed","type":"tuple","components":[{"internalType":"uint256","name":"maxOpenDeviationP","type":"uint256"},{"internalType":"uint256","name":"maxCloseDeviationP","type":"uint256"},{"internalType":"bytes32","name":"feedId","type":"bytes32"}]},{"internalType":"struct IPairStorage.BackupFeed","name":"backupFeed","type":"tuple","components":[{"internalType":"uint256","name":"maxDeviationP","type":"uint256"},{"internalType":"address","name":"feedId","type":"address"}]},{"internalType":"uint256","name":"spreadP","type":"uint256"},{"internalType":"uint256","name":"pnlSpreadP","type":"uint256"},{"internalType":"struct IPairStorage.Leverage","name":"leverages","type":"tuple","components":[{"internalType":"uint256","name":"minLeverage","type":"uint256"},{"internalType":"uint256","name":"maxLeverage","type":"uint256"},{"internalType":"uint256","name":"pnlMinLeverage","type":"uint256"},{"internalType":"uint256","name":"pnlMaxLeverage","type":"uint256"}]},{"internalType":"uint256","name":"priceImpactMultiplier","type":"uint256"},{"internalType":"int256","name":"skewImpactMultiplier","type":"int256"},{"internalType":"uint256","name":"groupIndex","type":"uint256"},{"internalType":"uint256","name":"feeIndex","type":"uint256"},{"internalType":"struct IPairStorage.Values","name":"values","type":"tuple","components":[{"internalType":"int256","name":"maxGainP","type":"int256"},{"internalType":"int256","name":"maxSlP","type":"int256"},{"internalType":"uint256","name":"maxLongOiP","type":"uint256"},{"internalType":"uint256","name":"maxShortOiP","type":"uint256"},{"internalType":"uint256","name":"groupOpenInterestPecentage","type":"uint256"},{"internalType":"uint256","name":"maxWalletOI","type":"uint256"},{"internalType":"bool","name":"isUSDCAligned","type":"bool"}]}]},{"internalType":"struct IPairStorage.Group","name":"","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"maxOpenInterestP","type":"uint256"},{"internalType":"bool","name":"isSpreadDynamic","type":"bool"}]},{"internalType":"struct IPairStorage.Fee","name":"","type":"tuple","components":[{"internalType":"uint256","name":"openFeeP","type":"uint256"},{"internalType":"uint256","name":"closeFeeP","type":"uint256"},{"internalType":"uint256","name":"limitOrderFeeP","type":"uint256"},{"internalType":"uint256","name":"minLevPosUSDC","type":"uint256"},{"internalType":"struct IPairStorage.PnlFees","name":"pnlFees","type":"tuple","components":[{"internalType":"uint256","name":"numTiers","type":"uint256"},{"internalType":"uint256[]","name":"tierP","type":"uint256[]"},{"internalType":"uint256[]","name":"feesP","type":"uint256[]"}]}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pairsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"resetPosType"},{"inputs":[{"internalType":"uint256[]","name":"_pairIndex","type":"uint256[]"},{"internalType":"uint256[]","name":"_limits","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setBlockOILImits"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"string","name":"from","type":"string"},{"internalType":"string","name":"to","type":"string"},{"internalType":"uint256","name":"_numTiers","type":"uint256"},{"internalType":"uint256[]","name":"_tierThresholds","type":"uint256[]"},{"internalType":"uint256[]","name":"_timer","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"setPairData"},{"inputs":[],"stateMutability":"view","type":"function","name":"skewedFeesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"spreadCaps","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"storageT","outputs":[{"internalType":"contract ITradingStorage","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"uint256","name":"pairIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"bool","name":"isPnl","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"storePosType"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_newLongOI","type":"uint256"},{"internalType":"uint256","name":"_newShortOI","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"syncGroupOI"},{"inputs":[{"internalType":"uint256","name":"_orderId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"syncOrderId"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"struct IPairStorage.SkewFee","name":"_skewFee","type":"tuple","components":[{"internalType":"int256[2][10]","name":"eqParams","type":"int256[2][10]"}]}],"stateMutability":"nonpayable","type":"function","name":"udpateSkewOpenFees"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"struct IPairStorage.AdditionalPairParams","name":"_params","type":"tuple","components":[{"internalType":"uint256","name":"param_9","type":"uint256"},{"internalType":"uint256","name":"param_10","type":"uint256"},{"internalType":"uint256","name":"param_11","type":"uint256"},{"internalType":"uint256","name":"param_12","type":"uint256"},{"internalType":"uint256","name":"param_13","type":"uint256"},{"internalType":"uint256","name":"param_14","type":"uint256"},{"internalType":"uint256","name":"param_15","type":"uint256"},{"internalType":"uint256","name":"param_16","type":"uint256"},{"internalType":"uint256","name":"param_17","type":"uint256"},{"internalType":"uint256","name":"param_18","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"updateAdditionalPairParams"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"struct IPairStorage.Fee","name":"_fee","type":"tuple","components":[{"internalType":"uint256","name":"openFeeP","type":"uint256"},{"internalType":"uint256","name":"closeFeeP","type":"uint256"},{"internalType":"uint256","name":"limitOrderFeeP","type":"uint256"},{"internalType":"uint256","name":"minLevPosUSDC","type":"uint256"},{"internalType":"struct IPairStorage.PnlFees","name":"pnlFees","type":"tuple","components":[{"internalType":"uint256","name":"numTiers","type":"uint256"},{"internalType":"uint256[]","name":"tierP","type":"uint256[]"},{"internalType":"uint256[]","name":"feesP","type":"uint256[]"}]}]}],"stateMutability":"nonpayable","type":"function","name":"updateFee"},{"inputs":[{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"struct IPairStorage.Group","name":"_group","type":"tuple","components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"uint256","name":"maxOpenInterestP","type":"uint256"},{"internalType":"bool","name":"isSpreadDynamic","type":"bool"}]}],"stateMutability":"nonpayable","type":"function","name":"updateGroup"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_long","type":"bool"},{"internalType":"bool","name":"_increase","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"updateGroupOI"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"uint256[]","name":"_tier","type":"uint256[]"},{"internalType":"uint256[]","name":"_multiplierPercent","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"updateLossProtectionMultiplier"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"struct IPairStorage.Pair","name":"_pair","type":"tuple","components":[{"internalType":"struct IPairStorage.Feed","name":"feed","type":"tuple","components":[{"internalType":"uint256","name":"maxOpenDeviationP","type":"uint256"},{"internalType":"uint256","name":"maxCloseDeviationP","type":"uint256"},{"internalType":"bytes32","name":"feedId","type":"bytes32"}]},{"internalType":"struct IPairStorage.BackupFeed","name":"backupFeed","type":"tuple","components":[{"internalType":"uint256","name":"maxDeviationP","type":"uint256"},{"internalType":"address","name":"feedId","type":"address"}]},{"internalType":"uint256","name":"spreadP","type":"uint256"},{"internalType":"uint256","name":"pnlSpreadP","type":"uint256"},{"internalType":"struct IPairStorage.Leverage","name":"leverages","type":"tuple","components":[{"internalType":"uint256","name":"minLeverage","type":"uint256"},{"internalType":"uint256","name":"maxLeverage","type":"uint256"},{"internalType":"uint256","name":"pnlMinLeverage","type":"uint256"},{"internalType":"uint256","name":"pnlMaxLeverage","type":"uint256"}]},{"internalType":"uint256","name":"priceImpactMultiplier","type":"uint256"},{"internalType":"int256","name":"skewImpactMultiplier","type":"int256"},{"internalType":"uint256","name":"groupIndex","type":"uint256"},{"internalType":"uint256","name":"feeIndex","type":"uint256"},{"internalType":"struct IPairStorage.Values","name":"values","type":"tuple","components":[{"internalType":"int256","name":"maxGainP","type":"int256"},{"internalType":"int256","name":"maxSlP","type":"int256"},{"internalType":"uint256","name":"maxLongOiP","type":"uint256"},{"internalType":"uint256","name":"maxShortOiP","type":"uint256"},{"internalType":"uint256","name":"groupOpenInterestPecentage","type":"uint256"},{"internalType":"uint256","name":"maxWalletOI","type":"uint256"},{"internalType":"bool","name":"isUSDCAligned","type":"bool"}]}]}],"stateMutability":"nonpayable","type":"function","name":"updatePair"},{"inputs":[{"internalType":"uint256","name":"_pairIndex","type":"uint256"},{"internalType":"struct IPairStorage.PairParams","name":"_params","type":"tuple","components":[{"internalType":"uint256","name":"posSpreadCap","type":"uint256"},{"internalType":"uint256","name":"negSpreadCap","type":"uint256"},{"internalType":"uint256","name":"param_1","type":"uint256"},{"internalType":"uint256","name":"param_2","type":"uint256"},{"internalType":"uint256","name":"param_3","type":"uint256"},{"internalType":"uint256","name":"param_4","type":"uint256"},{"internalType":"uint256","name":"param_5","type":"uint256"},{"internalType":"uint256","name":"param_6","type":"uint256"},{"internalType":"uint256","name":"param_7","type":"uint256"},{"internalType":"uint256","name":"param_8","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"updatePairParams"}],"devdoc":{"kind":"dev","methods":{"addFee((uint256,uint256,uint256,uint256,(uint256,uint256[],uint256[])))":{"params":{"_fee":"The Fee structure to add."}},"addGroup((string,uint256,bool))":{"params":{"_group":"The new group to be added."}},"addPair(((uint256,uint256,bytes32),(uint256,address),uint256,uint256,(uint256,uint256,uint256,uint256),uint256,int256,uint256,uint256,(int256,int256,uint256,uint256,uint256,uint256,bool)))":{"details":"Adds a new trading pair.","params":{"_pair":"The new trading pair to add."}},"addSkewOpenFees((int256[2][10]))":{"details":"Adds a skew open fee.","params":{"_skewFee":"The skew fee to add."}},"correctSl(uint256,uint256,uint256,bool,uint256)":{"params":{"buy":"Long/Short","leverage":"Leverage of trade ","openPrice":"Opening Price","pairIndex":"Index of Asset ","sl":"Stop Loss"}},"correctTp(uint256,uint256,uint256,bool,uint256)":{"params":{"buy":"Long/Short","leverage":"Leverage of trade ","openPrice":"Opening Price","pairIndex":"Index of Asset ","tp":"Take Profit"}},"currentPercentProfit(uint256,uint256,bool,uint256,uint256)":{"params":{"buy":"Long/Short","currentPrice":"Current Price","leverage":"Leverage of the trade in 1e10 precision","openPrice":"Opening Price","pairIndex":"Index of Asset "}},"delistPair(uint256)":{"params":{"_pairIndex":"The index of the pair to be delisted."}},"getPnlBasedFee(uint256,uint256,int256)":{"params":{"collateral":"Amount of Collateral","pairIndex":"Asset","percentProfit":"Profit percentage in 1e10 precision. 1e10 = 1% "}},"groupMaxOI(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"The maximum open interest for the group."}},"groupOI(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"The total open interest for the group."}},"guaranteedSlEnabled(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"True if enabled, false otherwise."}},"initialize(address,uint256)":{"details":"Initializes the contract.","params":{"_currentOrderId":"Initial order ID.","_storageT":"Address of the trading storage contract."}},"isUSDCAligned(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"bool"}},"lossProtectionMultiplier(uint256,uint256)":{"params":{"_pairIndex":"The index of the trading pair.","_tier":"The tier level."},"returns":{"_0":"The loss protection multiplier."}},"maxWalletOI(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"The maximum open interest for the wallet."}},"pairBackupFeed(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"BackupFeed memory object containing backup feed information."}},"pairCloseFeeP(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"The fee percentage for closing the position."}},"pairFeed(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"Feed memory object containing feed related information."}},"pairGroupIndex(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"The group index."}},"pairJob(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"A tuple containing the feed IDs and the order ID."}},"pairLimitOrderFeeP(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"The fee percentage for the limit order."}},"pairMaxLeverage(uint256,bool)":{"params":{"_isPnl":"Is a Pnl Based OrderType","_pairIndex":"The index of the trading pair."},"returns":{"_0":"The maximum leverage."}},"pairMaxLongOI(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"The maximum Long open interest for the pair."}},"pairMaxOI(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"The maximum open interest for the pair."}},"pairMaxShortOI(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"The maximum Short open interest for the pair."}},"pairMinLevPosUSDC(uint256)":{"params":{"_pairIndex":"The index of the trading pair."},"returns":{"_0":"The minimum leveraged position size in USDC."}},"pairMinLeverage(uint256,bool)":{"params":{"_isPnl":"Is a Pnl Based OrderType","_pairIndex":"The index of the trading pair."},"returns":{"_0":"The minimum leverage."}},"pairOpenFeeP(uint256,uint256,bool)":{"params":{"_buy":"Boolean indicating whether the position is a long (true) or short (false).","_leveragedPosition":"The size of the leveraged position.","_pairIndex":"The index of the trading pair."},"returns":{"_0":"The fee percentage for opening the position."}},"pairPriceImpactMultiplier(uint256)":{"params":{"_pairIndex":"The pair Index"},"returns":{"_0":"Pair Price Impact multiplier"}},"pairSkewImpactMultiplier(uint256)":{"params":{"_pairIndex":"The pair Index"},"returns":{"_0":"Pair Skew Impact multiplier"}},"pairSpreadP(uint256,bool)":{"params":{"_isPnl":"Bool for pnl fee type orders","_pairIndex":"The index of the trading pair."},"returns":{"spreadP":"The spread percentage."}},"pairsBackend(uint256)":{"params":{"_index":"The index of the trading pair."},"returns":{"_0":"Pair memory, Group memory, and Fee memory objects containing details for the trading pair, group, and fees."}},"setBlockOILImits(uint256[],uint256[])":{"params":{"_limits":"Value of per block OI limits","_pairIndex":"Array of pair Indexes to update Limits for"}},"syncGroupOI(uint256,uint256,uint256)":{"details":"Only to be called before migration","params":{"_newLongOI":"The new Long OI","_newShortOI":"The new Short OI","_pairIndex":"The index of the trading pair."}},"udpateSkewOpenFees(uint256,(int256[2][10]))":{"details":"Updates a skew open fee.","params":{"_pairIndex":"The index of the pair to update.","_skewFee":"The new skew fee."}},"updateAdditionalPairParams(uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))":{"details":"Params are left vacant to future proof"},"updateFee(uint256,(uint256,uint256,uint256,uint256,(uint256,uint256[],uint256[])))":{"params":{"_fee":"The new Fee structure.","_id":"The ID of the fee structure to update."}},"updateGroup(uint256,(string,uint256,bool))":{"params":{"_group":"The new group data.","_id":"The ID of the group to be updated."}},"updateGroupOI(uint256,uint256,bool,bool)":{"params":{"_amount":"The amount to update the open interest by.","_increase":"Specifies if the open interest should be increased.","_long":"Specifies if the position is long.","_pairIndex":"The index of the trading pair."}},"updateLossProtectionMultiplier(uint256,uint256[],uint256[])":{"params":{"_multiplierPercent":"The corresponding multipliers for each tier.","_pairIndex":"The index of the trading pair.","_tier":"The tiers for the loss protection."}},"updatePair(uint256,((uint256,uint256,bytes32),(uint256,address),uint256,uint256,(uint256,uint256,uint256,uint256),uint256,int256,uint256,uint256,(int256,int256,uint256,uint256,uint256,uint256,bool)))":{"details":"Updates an existing trading pair.","params":{"_pair":"The new pair data.","_pairIndex":"The index of the pair to update."}},"updatePairParams(uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))":{"details":"Some Params are left vacant to future proof"}},"version":1},"userdoc":{"kind":"user","methods":{"addFee((uint256,uint256,uint256,uint256,(uint256,uint256[],uint256[])))":{"notice":"Adds a new fee structure."},"addGroup((string,uint256,bool))":{"notice":"Adds a new trading group."},"correctSl(uint256,uint256,uint256,bool,uint256)":{"notice":"Method to correct Sl based on max SLs allowed per pair"},"correctTp(uint256,uint256,uint256,bool,uint256)":{"notice":"Method to Correct TP based on MAX Gains Allowed per Pair"},"currentPercentProfit(uint256,uint256,bool,uint256,uint256)":{"notice":"Returns profit percent given openPrice and Current price"},"delistPair(uint256)":{"notice":"Delists a trading pair by index."},"getPnlBasedFee(uint256,uint256,int256)":{"notice":"Computes the Pnl based fee"},"getPosType(address,uint256,uint256)":{"notice":"Return True if the position type is of pnl based Fee"},"getSkewParams(uint256)":{"notice":"Getter for skew Fees"},"groupMaxOI(uint256)":{"notice":"Get the maximum open interest (OI) for a group."},"groupOI(uint256)":{"notice":"Get the total open interest (OI) for a group."},"guaranteedSlEnabled(uint256)":{"notice":"Check if guaranteed stop loss is enabled for a trading pair."},"isDynamicSpreadEnabled(uint256)":{"notice":"Method to check if spread is dynamic or constant"},"isUSDCAligned(uint256)":{"notice":"Helper method to Check pair is usdc aligned"},"lossProtectionMultiplier(uint256,uint256)":{"notice":"Get the loss protection multiplier for a trading pair and tier."},"maxWalletOI(uint256)":{"notice":"Get the maximum open interest (OI) for a wallet in a trading pair."},"openCloseThreshold(uint256,uint256)":{"notice":"Gets the Threshold to close the trade"},"pairBackupFeed(uint256)":{"notice":"Get the Chainlink backup feed information of a trading pair."},"pairCloseFeeP(uint256)":{"notice":"Get the fee for closing a position on a trading pair."},"pairFeed(uint256)":{"notice":"Get the Pyth feed information of a trading pair."},"pairGroupIndex(uint256)":{"notice":"Get the group index to which a trading pair belongs."},"pairJob(uint256)":{"notice":"Fetches relevant information for an order."},"pairLimitOrderFeeP(uint256)":{"notice":"Get the fee for executing a TP/SL limit close."},"pairMaxLeverage(uint256,bool)":{"notice":"Get the maximum leverage available for a trading pair."},"pairMaxLongOI(uint256)":{"notice":"Get the maximum Long open interest (OI) for a trading pair."},"pairMaxOI(uint256)":{"notice":"Get the maximum open interest (OI) for a trading pair."},"pairMaxShortOI(uint256)":{"notice":"Get the maximum Short open interest (OI) for a trading pair."},"pairMinLevPosUSDC(uint256)":{"notice":"Get the minimum leveraged position size (in USDC) allowed for a trading pair."},"pairMinLeverage(uint256,bool)":{"notice":"Get the minimum leverage available for a trading pair."},"pairOpenFeeP(uint256,uint256,bool)":{"notice":"Calculate the fee for opening a leveraged position on a trading pair based on skew"},"pairPriceImpactMultiplier(uint256)":{"notice":"Get priceImpact multiplier for a certain pair"},"pairSkewImpactMultiplier(uint256)":{"notice":"Get priceImpact multiplier for a certain pair"},"pairSpreadP(uint256,bool)":{"notice":"Get the spread percentage of a trading pair."},"pairsBackend(uint256)":{"notice":"Get backend details for a specific trading pair, its group, and associated fees."},"resetPosType(address,uint256,uint256)":{"notice":"Resets Position type"},"setBlockOILImits(uint256[],uint256[])":{"notice":"Updates per block OI limit"},"spreadCaps(uint256)":{"notice":"Getter for spread caps of an asset"},"storePosType(address,uint256,uint256,bool)":{"notice":"Stores whether position is pnl Based"},"syncGroupOI(uint256,uint256,uint256)":{"notice":"Syncs the group OI between new and old pairStorage contract"},"syncOrderId(uint256)":{"notice":"Syncs the current order ID between new and old pairStorage contract"},"updateAdditionalPairParams(uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))":{"notice":"Setter method for setting additiaonl pairSpecific params"},"updateFee(uint256,(uint256,uint256,uint256,uint256,(uint256,uint256[],uint256[])))":{"notice":"Updates an existing fee structure."},"updateGroup(uint256,(string,uint256,bool))":{"notice":"Updates an existing trading group."},"updateGroupOI(uint256,uint256,bool,bool)":{"notice":"Updates the collateral open interest for a trading group."},"updateLossProtectionMultiplier(uint256,uint256[],uint256[])":{"notice":"Updates the loss protection multiplier for a given trading pair."},"updatePairParams(uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))":{"notice":"Setter method for setting pairSpecific params"}},"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/PairStorage.sol":"PairStorage"},"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/PairStorage.sol":{"keccak256":"0xf1ea751492158caffdb61c1fe25adf06f9810d0f35a2c27192130e0ca856cb44","urls":["bzz-raw://029c90e540cca0668a9d1b8220470e1c002238367e178b1453d7d14d845b398d","dweb:/ipfs/QmRAofvYaXs3XFdffHVebAAijzq1PojQbavkajdELJYYp6"],"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/IPairStorage.sol":{"keccak256":"0x57c1e95f658d16420395366771adbf988182fb47bbe70d54bb63c1289160e55e","urls":["bzz-raw://6c420e45ef67e9fdc0567fdfe153442ed427696d55e13ae9023b29b69bc34772","dweb:/ipfs/QmfTM3YeCTzrYc9qaMzz6LELfyHAq7ip94C9P4dC7npuMx"],"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":"0xb2d69792255b3a6e1ed844dc50d1052a710ed1e02a110d50c0afca1ef8b0e6d2","urls":["bzz-raw://112acb22b0db69deea1ab4b0a404f37372e4d6f460b1fe4ca9f5fba4b9838abe","dweb:/ipfs/QmTzjgCUhpUfHAZA8zFJyqbYDQHZ25RoERQ7N3HnsXudMG"],"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":70}
|