@pendle/core-v2 2.17.7-tradingbot → 2.18.0-tradingbot

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.
Files changed (216) hide show
  1. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiveEndpointUpg.sol/PendleMsgReceiveEndpointUpg.dbg.json +1 -1
  2. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgReceiverAppUpg.sol/PendleMsgReceiverAppUpg.dbg.json +1 -1
  3. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSendEndpointUpg.sol/PendleMsgSendEndpointUpg.dbg.json +1 -1
  4. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/PendleMsgSenderAppUpg.sol/PendleMsgSenderAppUpg.dbg.json +1 -1
  5. package/build/artifacts/contracts/LiquidityMining/CrossChainMsg/libraries/LayerZeroHelper.sol/LayerZeroHelper.dbg.json +1 -1
  6. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  7. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerMainchainUpg.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  8. package/build/artifacts/contracts/LiquidityMining/GaugeController/PendleGaugeControllerSidechainUpg.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  9. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributor.sol/PendleFeeDistributor.dbg.json +1 -1
  10. package/build/artifacts/contracts/LiquidityMining/VeDistributor/PendleFeeDistributorV2.sol/PendleFeeDistributorV2.dbg.json +1 -1
  11. package/build/artifacts/contracts/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  12. package/build/artifacts/contracts/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  13. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  14. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  15. package/build/artifacts/contracts/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  16. package/build/artifacts/contracts/LiquidityMining/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  17. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/CheckpointHelper.dbg.json +1 -1
  18. package/build/artifacts/contracts/LiquidityMining/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  19. package/build/artifacts/contracts/core/BulkSeller/BulkSeller.sol/BulkSeller.dbg.json +1 -1
  20. package/build/artifacts/contracts/core/BulkSeller/BulkSellerFactory.sol/BulkSellerFactory.dbg.json +1 -1
  21. package/build/artifacts/contracts/core/BulkSeller/BulkSellerMathCore.sol/BulkSellerMathCore.dbg.json +1 -1
  22. package/build/artifacts/contracts/core/Market/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  23. package/build/artifacts/contracts/core/Market/OracleLib.sol/OracleLib.dbg.json +1 -1
  24. package/build/artifacts/contracts/core/Market/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  25. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  26. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  27. package/build/artifacts/contracts/core/RewardManager/RewardManager.sol/RewardManager.dbg.json +1 -1
  28. package/build/artifacts/contracts/core/RewardManager/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  29. package/build/artifacts/contracts/core/StandardizedYield/PYIndex.sol/PYIndexLib.dbg.json +1 -1
  30. package/build/artifacts/contracts/core/StandardizedYield/SYBase.sol/SYBase.dbg.json +1 -1
  31. package/build/artifacts/contracts/core/StandardizedYield/SYBaseWithRewards.sol/SYBaseWithRewards.dbg.json +1 -1
  32. package/build/artifacts/contracts/core/StandardizedYield/implementations/Ape/sAPE.sol/sAPE.dbg.json +1 -1
  33. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraBbAWethSwethSY.sol/PendleAuraBbAWethSwethSY.dbg.json +1 -1
  34. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethAnkrethSYV2.sol/PendleAuraWethAnkrethSYV2.dbg.json +1 -1
  35. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethRocketEthSYV2.sol/PendleAuraWethRocketEthSYV2.dbg.json +1 -1
  36. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethStafiEthSY.sol/PendleAuraWethStafiEthSY.dbg.json +1 -1
  37. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/PendleAuraWethWstethSYV2.sol/PendleAuraWethWstethSYV2.dbg.json +1 -1
  38. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStableMath.sol/ComposableStableMath.dbg.json +1 -1
  39. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/ComposableStable/ComposableStablePreview.sol/ComposableStablePreview.dbg.json +1 -1
  40. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAPoolHelper.dbg.json +1 -1
  41. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/BbAPoolHelper.sol/BbAWethHelper.dbg.json +1 -1
  42. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearMath.sol/LinearMath.dbg.json +1 -1
  43. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/Linear/LinearPreview.sol/LinearPreview.dbg.json +1 -1
  44. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/MetaStable/MetaStablePreview.sol/MetaStablePreview.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/PendleAuraBalancerStableLPSYV2.sol/PendleAuraBalancerStableLPSYV2.dbg.json +1 -1
  46. package/build/artifacts/contracts/core/StandardizedYield/implementations/BalancerStable/base/StablePreviewBase.sol/StablePreviewBase.dbg.json +1 -1
  47. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  48. package/build/artifacts/contracts/core/StandardizedYield/implementations/BenQi/PendleQiTokenSY.sol/PendleQiTokenSY.dbg.json +1 -1
  49. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotRewardHelper.sol/CamelotRewardHelper.dbg.json +1 -1
  50. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileCommon.sol/CamelotV1VolatileCommon.dbg.json +1 -1
  51. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatileLpHelper.sol/CamelotV1VolatileLpHelper.dbg.json +1 -1
  52. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/CamelotV1VolatilePreview.sol/CamelotV1VolatilePreview.dbg.json +1 -1
  53. package/build/artifacts/contracts/core/StandardizedYield/implementations/CamelotV1Volatile/PendleCamelotV1VolatileSY.sol/PendleCamelotV1VolatileSY.dbg.json +1 -1
  54. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveFraxUsdcSY.sol/PendleCurveFraxUsdcSY.dbg.json +1 -1
  55. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/PendleCurveUsdd3CrvSY.sol/PendleCurveUsdd3CrvSY.dbg.json +1 -1
  56. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/Curve3CrvPoolHelper.sol/Curve3CrvPoolHelper.dbg.json +1 -1
  57. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveFraxUsdcPoolHelper.sol/CurveFraxUsdcPoolHelper.dbg.json +1 -1
  58. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/CurveUsdd3CrvPoolHelper.sol/CurveUsdd3CrvPoolHelper.dbg.json +1 -1
  59. package/build/artifacts/contracts/core/StandardizedYield/implementations/Convex/base/PendleConvexLPSY.sol/PendleConvexLPSY.dbg.json +1 -1
  60. package/build/artifacts/contracts/core/StandardizedYield/implementations/GLP/PendleGlpSY.sol/PendleGlpSY.dbg.json +1 -1
  61. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleGdaiSY.sol/PendleGDaiSY.dbg.json +1 -1
  62. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleLooksStakingSY.sol/PendleLooksStakingSY.dbg.json +1 -1
  63. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleSfrxEthSY.sol/PendleSfrxEthSY.dbg.json +1 -1
  64. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleStargateLPSY.sol/PendleStargateLPSY.dbg.json +1 -1
  65. package/build/artifacts/contracts/core/StandardizedYield/implementations/PendleWstEthSY.sol/PendleWstEthSY.dbg.json +1 -1
  66. package/build/artifacts/contracts/core/TradingBot/BotActionCallback.sol/BotActionCallback.dbg.json +1 -1
  67. package/build/artifacts/contracts/core/TradingBot/BotActionCallback.sol/BotActionCallback.json +32 -17
  68. package/build/artifacts/contracts/core/TradingBot/BotActionHelper.sol/BotActionHelper.dbg.json +1 -1
  69. package/build/artifacts/contracts/core/TradingBot/BotActionHelper.sol/BotActionHelper.json +32 -17
  70. package/build/artifacts/contracts/core/TradingBot/BotSimulationLib.sol/BotSimulationLib.dbg.json +1 -1
  71. package/build/artifacts/contracts/core/TradingBot/BotSimulationLib.sol/BotSimulationLib.json +2 -2
  72. package/build/artifacts/contracts/core/TradingBot/LongYieldDecisionHelper.sol/LongYieldDecisionHelper.dbg.json +4 -0
  73. package/build/artifacts/contracts/core/TradingBot/LongYieldDecisionHelper.sol/LongYieldDecisionHelper.json +1190 -0
  74. package/build/artifacts/contracts/core/TradingBot/LongYieldTradingBot.sol/LongYieldTradingBot.dbg.json +1 -1
  75. package/build/artifacts/contracts/core/TradingBot/LongYieldTradingBot.sol/LongYieldTradingBot.json +301 -397
  76. package/build/artifacts/contracts/core/TradingBot/MarketExtLib.sol/MarketExtLib.dbg.json +1 -1
  77. package/build/artifacts/contracts/core/TradingBot/SpecSegmentLib.sol/SpecSegmentLib.dbg.json +4 -0
  78. package/build/artifacts/contracts/core/TradingBot/SpecSegmentLib.sol/SpecSegmentLib.json +10 -0
  79. package/build/artifacts/contracts/core/TradingBot/TradingBotBase.sol/TradingBotBase.dbg.json +1 -1
  80. package/build/artifacts/contracts/core/TradingBot/TradingBotBase.sol/TradingBotBase.json +32 -17
  81. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  82. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  83. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  84. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  85. package/build/artifacts/contracts/core/YieldContractsV2/InterestManagerYTV2.sol/InterestManagerYTV2.dbg.json +1 -1
  86. package/build/artifacts/contracts/core/YieldContractsV2/PendlePrincipalTokenV2.sol/PendlePrincipalTokenV2.dbg.json +1 -1
  87. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldContractFactoryV2.sol/PendleYieldContractFactoryV2.dbg.json +1 -1
  88. package/build/artifacts/contracts/core/YieldContractsV2/PendleYieldTokenV2.sol/PendleYieldTokenV2.dbg.json +1 -1
  89. package/build/artifacts/contracts/core/libraries/Errors.sol/Errors.dbg.json +1 -1
  90. package/build/artifacts/contracts/core/libraries/TokenAmountLib.sol/TokenAmountLib.dbg.json +1 -1
  91. package/build/artifacts/contracts/core/libraries/math/Math.sol/Math.dbg.json +1 -1
  92. package/build/artifacts/contracts/interfaces/Balancer/IBalancerStablePreview.sol/IBalancerStablePreview.dbg.json +1 -1
  93. package/build/artifacts/contracts/interfaces/Balancer/IERC4626LinearPool.sol/IERC4626LinearPool.dbg.json +1 -1
  94. package/build/artifacts/contracts/interfaces/Balancer/IVault.sol/IVault.dbg.json +1 -1
  95. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNFTPool.sol/ICamelotNFTPool.dbg.json +1 -1
  96. package/build/artifacts/contracts/interfaces/Camelot/ICamelotNitroPool.sol/ICamelotNitroPool.dbg.json +1 -1
  97. package/build/artifacts/contracts/interfaces/Camelot/ICamelotPair.sol/ICamelotPair.dbg.json +1 -1
  98. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiq.sol/IPActionAddRemoveLiq.dbg.json +1 -1
  99. package/build/artifacts/contracts/interfaces/IPActionInfoStatic.sol/IPActionInfoStatic.dbg.json +1 -1
  100. package/build/artifacts/contracts/interfaces/IPActionMarketAuxStatic.sol/IPActionMarketAuxStatic.dbg.json +1 -1
  101. package/build/artifacts/contracts/interfaces/IPActionMarketCoreStatic.sol/IPActionMarketCoreStatic.dbg.json +1 -1
  102. package/build/artifacts/contracts/interfaces/IPActionMintRedeem.sol/IPActionMintRedeem.dbg.json +1 -1
  103. package/build/artifacts/contracts/interfaces/IPActionMintRedeemStatic.sol/IPActionMintRedeemStatic.dbg.json +1 -1
  104. package/build/artifacts/contracts/interfaces/IPActionStorageStatic.sol/IPActionStorageStatic.dbg.json +1 -1
  105. package/build/artifacts/contracts/interfaces/IPActionSwapPT.sol/IPActionSwapPT.dbg.json +1 -1
  106. package/build/artifacts/contracts/interfaces/IPActionSwapYT.sol/IPActionSwapYT.dbg.json +1 -1
  107. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  108. package/build/artifacts/contracts/interfaces/IPBulkSeller.sol/IPBulkSeller.dbg.json +1 -1
  109. package/build/artifacts/contracts/interfaces/IPGauge.sol/IPGauge.dbg.json +1 -1
  110. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  111. package/build/artifacts/contracts/interfaces/IPRouterHelper.sol/IPRouterHelper.dbg.json +1 -1
  112. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  113. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  114. package/build/artifacts/contracts/interfaces/IPVotingEscrowMainchain.sol/IPVotingEscrowMainchain.dbg.json +1 -1
  115. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  116. package/build/artifacts/contracts/interfaces/IStandardizedYield.sol/IStandardizedYield.dbg.json +1 -1
  117. package/build/artifacts/contracts/interfaces/TradingBot/IBotDecisionHelper.sol/IBotDecisionHelper.dbg.json +1 -1
  118. package/build/artifacts/contracts/interfaces/TradingBot/IBotDecisionHelper.sol/IBotDecisionHelper.json +542 -581
  119. package/build/artifacts/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol/ILongYieldTradingBot.dbg.json +1 -1
  120. package/build/artifacts/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol/ILongYieldTradingBot.json +256 -325
  121. package/build/artifacts/contracts/interfaces/TradingBot/ITradingBotBase.sol/ITradingBotBase.dbg.json +1 -1
  122. package/build/artifacts/contracts/interfaces/TradingBot/ITradingBotBase.sol/ITradingBotBase.json +6 -17
  123. package/build/artifacts/contracts/offchain-helpers/BoringLpSeller.sol/BoringLpSeller.dbg.json +1 -1
  124. package/build/artifacts/contracts/offchain-helpers/BoringPtSeller.sol/BoringPtSeller.dbg.json +1 -1
  125. package/build/artifacts/contracts/offchain-helpers/Broadcaster.sol/Broadcaster.dbg.json +1 -1
  126. package/build/artifacts/contracts/offchain-helpers/BulkSellerOffchain.sol/BulkSellerOffchain.dbg.json +1 -1
  127. package/build/artifacts/contracts/offchain-helpers/MarketExchangeRateLib.sol/MarketExchangeRateLib.dbg.json +1 -1
  128. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.dbg.json +1 -1
  129. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.dbg.json +1 -1
  130. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.dbg.json +1 -1
  131. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.dbg.json +1 -1
  132. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.dbg.json +1 -1
  133. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.dbg.json +1 -1
  134. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.dbg.json +1 -1
  135. package/build/artifacts/contracts/offchain-helpers/router-static/base/StorageLayout.sol/StorageLayout.dbg.json +1 -1
  136. package/build/artifacts/contracts/oracles/PendleLpOracleLib.sol/PendleLpOracleLib.dbg.json +1 -1
  137. package/build/artifacts/contracts/oracles/PendlePtOracle.sol/PendlePtOracle.dbg.json +1 -1
  138. package/build/artifacts/contracts/oracles/PendlePtOracleLib.sol/PendlePtOracleLib.dbg.json +1 -1
  139. package/build/artifacts/contracts/oracles/samples/PendleLpGlpOracle.sol/PendleLpGlpOracle.dbg.json +1 -1
  140. package/build/artifacts/contracts/oracles/samples/PendlePtGlpOracle.sol/PendlePtGlpOracle.dbg.json +1 -1
  141. package/build/artifacts/contracts/oracles/samples/PendlePtUsdChainlinkOracle.sol/PendlePtUsdChainlinkOracle.dbg.json +1 -1
  142. package/build/artifacts/contracts/router/ActionAddRemoveLiq.sol/ActionAddRemoveLiq.dbg.json +1 -1
  143. package/build/artifacts/contracts/router/ActionMintRedeem.sol/ActionMintRedeem.dbg.json +1 -1
  144. package/build/artifacts/contracts/router/ActionSwapPT.sol/ActionSwapPT.dbg.json +1 -1
  145. package/build/artifacts/contracts/router/ActionSwapYT.sol/ActionSwapYT.dbg.json +1 -1
  146. package/build/artifacts/contracts/router/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  147. package/build/artifacts/contracts/router/PendleRouterHelper.sol/PendleRouterHelper.dbg.json +1 -1
  148. package/build/artifacts/contracts/router/base/ActionBaseCallback.sol/ActionBaseCallback.dbg.json +1 -1
  149. package/build/artifacts/contracts/router/base/ActionBaseMintRedeem.sol/ActionBaseMintRedeem.dbg.json +1 -1
  150. package/build/artifacts/contracts/router/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  151. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  152. package/build/artifacts/contracts/router/base/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  153. package/build/artifacts/contracts/router/swap-aggregator/PendleSwap.sol/PendleSwap.dbg.json +1 -1
  154. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IAggregationExecutor.sol/IAggregationExecutor.dbg.json +1 -1
  155. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IExecutorHelper.sol/IExecutorHelper.dbg.json +1 -1
  156. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IHashflow.sol/IHashflow.dbg.json +1 -1
  157. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/IMetaAggregationRouterV2.sol/IMetaAggregationRouterV2.dbg.json +1 -1
  158. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/KyberInputScalingHelper.sol/KyberInputScalingHelper.dbg.json +1 -1
  159. package/build/artifacts/contracts/router/swap-aggregator/kyberswap/ScalingDataLib.sol/ScalingDataLib.dbg.json +1 -1
  160. package/contracts/core/TradingBot/BotActionCallback.sol +1 -1
  161. package/contracts/core/TradingBot/BotActionHelper.sol +1 -3
  162. package/contracts/core/TradingBot/BotSimulationLib.sol +2 -1
  163. package/contracts/core/TradingBot/LongYieldDecisionHelper.sol +413 -0
  164. package/contracts/core/TradingBot/LongYieldTradingBot.sol +63 -91
  165. package/contracts/core/TradingBot/SpecSegmentLib.sol +62 -0
  166. package/contracts/core/TradingBot/TradingBotBase.sol +14 -9
  167. package/contracts/interfaces/TradingBot/IBotDecisionHelper.sol +41 -57
  168. package/contracts/interfaces/TradingBot/ILongYieldTradingBot.sol +24 -34
  169. package/contracts/interfaces/TradingBot/ITradingBotBase.sol +1 -3
  170. package/package.json +1 -1
  171. package/typechain-types/BotActionCallback.ts +40 -22
  172. package/typechain-types/BotActionHelper.ts +40 -22
  173. package/typechain-types/BotDecisionHelper.ts +221 -187
  174. package/typechain-types/IAnkrBNB.ts +150 -0
  175. package/typechain-types/IAnkrLiquidStaking.ts +253 -0
  176. package/typechain-types/IBotDecisionHelper.ts +142 -212
  177. package/typechain-types/ILongYieldTradingBot.ts +147 -230
  178. package/typechain-types/ISwETH.ts +123 -0
  179. package/typechain-types/ITradingBotBase.ts +14 -22
  180. package/typechain-types/LongYieldDecisionHelper.ts +598 -0
  181. package/typechain-types/LongYieldTradingBot.ts +191 -248
  182. package/typechain-types/PendleAnkrBNBSY.ts +1235 -0
  183. package/typechain-types/PendleAuraWstethAnkreth.ts +1511 -0
  184. package/typechain-types/PendleSwETH.ts +1216 -0
  185. package/typechain-types/PendleThenaSY.ts +153 -0
  186. package/typechain-types/PendleWbEthSY.ts +1229 -0
  187. package/typechain-types/ThenaLpHelper.ts +19 -0
  188. package/typechain-types/ThenaMath.ts +87 -0
  189. package/typechain-types/ThenaPreview.ts +19 -0
  190. package/typechain-types/TradingBotBase.ts +40 -22
  191. package/typechain-types/factories/BotActionCallback__factory.ts +31 -16
  192. package/typechain-types/factories/BotActionHelper__factory.ts +31 -16
  193. package/typechain-types/factories/BotDecisionHelper__factory.ts +490 -421
  194. package/typechain-types/factories/IAnkrBNB__factory.ts +74 -0
  195. package/typechain-types/factories/IAnkrLiquidStaking__factory.ts +123 -0
  196. package/typechain-types/factories/IBotDecisionHelper__factory.ts +540 -579
  197. package/typechain-types/factories/ILongYieldTradingBot__factory.ts +255 -324
  198. package/typechain-types/factories/ISwETH__factory.ts +53 -0
  199. package/typechain-types/factories/ITradingBotBase__factory.ts +6 -17
  200. package/typechain-types/factories/LongYieldDecisionHelper__factory.ts +1247 -0
  201. package/typechain-types/factories/LongYieldTradingBot__factory.ts +301 -393
  202. package/typechain-types/factories/PendleAnkrBNBSY__factory.ts +1100 -0
  203. package/typechain-types/factories/PendleAuraWstethAnkreth__factory.ts +1244 -0
  204. package/typechain-types/factories/PendleSwETH__factory.ts +1022 -0
  205. package/typechain-types/factories/PendleThenaSY__factory.ts +85 -1
  206. package/typechain-types/factories/PendleWbEthSY__factory.ts +1049 -0
  207. package/typechain-types/factories/PtAndLpToAsset__factory.ts +1 -1
  208. package/typechain-types/factories/ThenaLpHelper__factory.ts +13 -0
  209. package/typechain-types/factories/ThenaMath__factory.ts +36 -0
  210. package/typechain-types/factories/ThenaPreview__factory.ts +14 -1
  211. package/typechain-types/factories/TradingBotBase__factory.ts +31 -16
  212. package/typechain-types/hardhat.d.ts +4 -40
  213. package/typechain-types/index.ts +2 -10
  214. package/build/artifacts/contracts/core/TradingBot/BotDecisionHelper.sol/BotDecisionHelper.dbg.json +0 -4
  215. package/build/artifacts/contracts/core/TradingBot/BotDecisionHelper.sol/BotDecisionHelper.json +0 -1070
  216. package/contracts/core/TradingBot/BotDecisionHelper.sol +0 -306
@@ -40,22 +40,6 @@ const _abi = [
40
40
  name: "BotBinarySearchFail",
41
41
  type: "error",
42
42
  },
43
- {
44
- inputs: [
45
- {
46
- internalType: "uint256",
47
- name: "action",
48
- type: "uint256",
49
- },
50
- {
51
- internalType: "uint256",
52
- name: "guessMin",
53
- type: "uint256",
54
- },
55
- ],
56
- name: "BotBinarySearchGuessMinInvalid",
57
- type: "error",
58
- },
59
43
  {
60
44
  inputs: [
61
45
  {
@@ -163,202 +147,33 @@ const _abi = [
163
147
  type: "error",
164
148
  },
165
149
  {
166
- inputs: [
167
- {
168
- components: [
169
- {
170
- internalType: "uint256",
171
- name: "lpBalance",
172
- type: "uint256",
173
- },
174
- {
175
- internalType: "uint256",
176
- name: "ytBalance",
177
- type: "uint256",
178
- },
179
- {
180
- internalType: "uint256",
181
- name: "syBalance",
182
- type: "uint256",
183
- },
184
- ],
185
- internalType: "struct BotState",
186
- name: "botState",
187
- type: "tuple",
188
- },
189
- {
190
- components: [
191
- {
192
- internalType: "enum StrategyFlag",
193
- name: "iyFlag",
194
- type: "uint8",
195
- },
196
- {
197
- internalType: "enum StrategyFlag",
198
- name: "syRatioFlag",
199
- type: "uint8",
200
- },
201
- ],
202
- internalType: "struct StrategyState",
203
- name: "currentState",
204
- type: "tuple",
205
- },
206
- ],
207
- name: "actionToTake",
150
+ inputs: [],
151
+ name: "INF",
208
152
  outputs: [
209
153
  {
210
- internalType: "enum ActionType",
154
+ internalType: "uint256",
211
155
  name: "",
212
- type: "uint8",
156
+ type: "uint256",
213
157
  },
214
158
  ],
215
- stateMutability: "pure",
159
+ stateMutability: "view",
216
160
  type: "function",
217
161
  },
218
162
  {
219
- inputs: [
220
- {
221
- components: [
222
- {
223
- internalType: "uint256",
224
- name: "lpBalance",
225
- type: "uint256",
226
- },
227
- {
228
- internalType: "uint256",
229
- name: "ytBalance",
230
- type: "uint256",
231
- },
232
- {
233
- internalType: "uint256",
234
- name: "syBalance",
235
- type: "uint256",
236
- },
237
- ],
238
- internalType: "struct BotState",
239
- name: "bot",
240
- type: "tuple",
241
- },
242
- {
243
- components: [
244
- {
245
- components: [
246
- {
247
- internalType: "int256",
248
- name: "totalPt",
249
- type: "int256",
250
- },
251
- {
252
- internalType: "int256",
253
- name: "totalSy",
254
- type: "int256",
255
- },
256
- {
257
- internalType: "int256",
258
- name: "totalLp",
259
- type: "int256",
260
- },
261
- {
262
- internalType: "address",
263
- name: "treasury",
264
- type: "address",
265
- },
266
- {
267
- internalType: "int256",
268
- name: "scalarRoot",
269
- type: "int256",
270
- },
271
- {
272
- internalType: "uint256",
273
- name: "expiry",
274
- type: "uint256",
275
- },
276
- {
277
- internalType: "uint256",
278
- name: "lnFeeRateRoot",
279
- type: "uint256",
280
- },
281
- {
282
- internalType: "uint256",
283
- name: "reserveFeePercent",
284
- type: "uint256",
285
- },
286
- {
287
- internalType: "uint256",
288
- name: "lastLnImpliedRate",
289
- type: "uint256",
290
- },
291
- ],
292
- internalType: "struct MarketState",
293
- name: "state",
294
- type: "tuple",
295
- },
296
- {
297
- internalType: "PYIndex",
298
- name: "index",
299
- type: "uint256",
300
- },
301
- {
302
- internalType: "uint256",
303
- name: "blockTime",
304
- type: "uint256",
305
- },
306
- ],
307
- internalType: "struct MarketExtState",
308
- name: "marketExt",
309
- type: "tuple",
310
- },
311
- ],
312
- name: "botExtStats",
163
+ inputs: [],
164
+ name: "MINIMAL_EPS",
313
165
  outputs: [
314
166
  {
315
167
  internalType: "uint256",
316
- name: "tvlInSy",
317
- type: "uint256",
318
- },
319
- {
320
- internalType: "uint256",
321
- name: "iy",
322
- type: "uint256",
323
- },
324
- {
325
- internalType: "uint256",
326
- name: "currentSyRatio",
327
- type: "uint256",
328
- },
329
- {
330
- internalType: "uint256",
331
- name: "currentYtPtRatio",
168
+ name: "",
332
169
  type: "uint256",
333
170
  },
334
171
  ],
335
- stateMutability: "pure",
172
+ stateMutability: "view",
336
173
  type: "function",
337
174
  },
338
175
  {
339
176
  inputs: [
340
- {
341
- components: [
342
- {
343
- internalType: "uint256",
344
- name: "lpBalance",
345
- type: "uint256",
346
- },
347
- {
348
- internalType: "uint256",
349
- name: "ytBalance",
350
- type: "uint256",
351
- },
352
- {
353
- internalType: "uint256",
354
- name: "syBalance",
355
- type: "uint256",
356
- },
357
- ],
358
- internalType: "struct BotState",
359
- name: "botData",
360
- type: "tuple",
361
- },
362
177
  {
363
178
  components: [
364
179
  {
@@ -425,7 +240,7 @@ const _abi = [
425
240
  },
426
241
  ],
427
242
  internalType: "struct MarketExtState",
428
- name: "marketExtData",
243
+ name: "marketExt",
429
244
  type: "tuple",
430
245
  },
431
246
  {
@@ -467,17 +282,23 @@ const _abi = [
467
282
  },
468
283
  ],
469
284
  internalType: "struct ApproxParams",
470
- name: "swapApproxParams",
285
+ name: "intParams",
471
286
  type: "tuple",
472
287
  },
473
288
  ],
474
- name: "previewAction",
289
+ name: "_searchForIntParam",
475
290
  outputs: [
476
291
  {
477
- internalType: "bool",
478
- name: "success",
479
- type: "bool",
292
+ internalType: "uint256",
293
+ name: "",
294
+ type: "uint256",
480
295
  },
296
+ ],
297
+ stateMutability: "pure",
298
+ type: "function",
299
+ },
300
+ {
301
+ inputs: [
481
302
  {
482
303
  components: [
483
304
  {
@@ -495,9 +316,14 @@ const _abi = [
495
316
  name: "syBalance",
496
317
  type: "uint256",
497
318
  },
319
+ {
320
+ internalType: "uint256",
321
+ name: "buyBins",
322
+ type: "uint256",
323
+ },
498
324
  ],
499
325
  internalType: "struct BotState",
500
- name: "bot",
326
+ name: "botState",
501
327
  type: "tuple",
502
328
  },
503
329
  {
@@ -570,220 +396,222 @@ const _abi = [
570
396
  type: "tuple",
571
397
  },
572
398
  ],
399
+ name: "botExtStats",
400
+ outputs: [
401
+ {
402
+ internalType: "uint256",
403
+ name: "tvlInSy",
404
+ type: "uint256",
405
+ },
406
+ {
407
+ internalType: "uint256",
408
+ name: "iy",
409
+ type: "uint256",
410
+ },
411
+ {
412
+ internalType: "uint256",
413
+ name: "currentSyRatio",
414
+ type: "uint256",
415
+ },
416
+ {
417
+ internalType: "uint256",
418
+ name: "currentYtPtRatio",
419
+ type: "uint256",
420
+ },
421
+ ],
573
422
  stateMutability: "pure",
574
423
  type: "function",
575
424
  },
576
425
  {
577
426
  inputs: [
427
+ {
428
+ internalType: "address",
429
+ name: "botAddress",
430
+ type: "address",
431
+ },
432
+ ],
433
+ name: "getActionDetails",
434
+ outputs: [
578
435
  {
579
436
  components: [
580
437
  {
581
- internalType: "uint256",
582
- name: "lpBalance",
583
- type: "uint256",
438
+ internalType: "enum ActionType",
439
+ name: "action",
440
+ type: "uint8",
441
+ },
442
+ {
443
+ internalType: "int256",
444
+ name: "currentBin",
445
+ type: "int256",
584
446
  },
585
447
  {
586
448
  internalType: "uint256",
587
- name: "ytBalance",
449
+ name: "guessBotParams",
588
450
  type: "uint256",
589
451
  },
590
452
  {
591
453
  internalType: "uint256",
592
- name: "syBalance",
454
+ name: "guessIntParams",
593
455
  type: "uint256",
594
456
  },
595
457
  ],
596
- internalType: "struct BotState",
597
- name: "bot",
458
+ internalType: "struct IBotDecisionHelper.ActionToTakeResult",
459
+ name: "res",
598
460
  type: "tuple",
599
461
  },
462
+ ],
463
+ stateMutability: "nonpayable",
464
+ type: "function",
465
+ },
466
+ {
467
+ inputs: [
600
468
  {
601
469
  components: [
602
470
  {
603
471
  components: [
604
472
  {
605
- internalType: "int256",
606
- name: "totalPt",
607
- type: "int256",
473
+ internalType: "uint256",
474
+ name: "lpBalance",
475
+ type: "uint256",
608
476
  },
609
477
  {
610
- internalType: "int256",
611
- name: "totalSy",
612
- type: "int256",
478
+ internalType: "uint256",
479
+ name: "ytBalance",
480
+ type: "uint256",
613
481
  },
614
482
  {
615
- internalType: "int256",
616
- name: "totalLp",
617
- type: "int256",
483
+ internalType: "uint256",
484
+ name: "syBalance",
485
+ type: "uint256",
618
486
  },
619
487
  {
620
- internalType: "address",
621
- name: "treasury",
622
- type: "address",
488
+ internalType: "uint256",
489
+ name: "buyBins",
490
+ type: "uint256",
623
491
  },
492
+ ],
493
+ internalType: "struct BotState",
494
+ name: "botState",
495
+ type: "tuple",
496
+ },
497
+ {
498
+ components: [
624
499
  {
625
- internalType: "int256",
626
- name: "scalarRoot",
627
- type: "int256",
500
+ components: [
501
+ {
502
+ internalType: "int256",
503
+ name: "totalPt",
504
+ type: "int256",
505
+ },
506
+ {
507
+ internalType: "int256",
508
+ name: "totalSy",
509
+ type: "int256",
510
+ },
511
+ {
512
+ internalType: "int256",
513
+ name: "totalLp",
514
+ type: "int256",
515
+ },
516
+ {
517
+ internalType: "address",
518
+ name: "treasury",
519
+ type: "address",
520
+ },
521
+ {
522
+ internalType: "int256",
523
+ name: "scalarRoot",
524
+ type: "int256",
525
+ },
526
+ {
527
+ internalType: "uint256",
528
+ name: "expiry",
529
+ type: "uint256",
530
+ },
531
+ {
532
+ internalType: "uint256",
533
+ name: "lnFeeRateRoot",
534
+ type: "uint256",
535
+ },
536
+ {
537
+ internalType: "uint256",
538
+ name: "reserveFeePercent",
539
+ type: "uint256",
540
+ },
541
+ {
542
+ internalType: "uint256",
543
+ name: "lastLnImpliedRate",
544
+ type: "uint256",
545
+ },
546
+ ],
547
+ internalType: "struct MarketState",
548
+ name: "state",
549
+ type: "tuple",
550
+ },
551
+ {
552
+ internalType: "PYIndex",
553
+ name: "index",
554
+ type: "uint256",
628
555
  },
629
556
  {
630
557
  internalType: "uint256",
631
- name: "expiry",
558
+ name: "blockTime",
632
559
  type: "uint256",
633
560
  },
561
+ ],
562
+ internalType: "struct MarketExtState",
563
+ name: "marketExt",
564
+ type: "tuple",
565
+ },
566
+ {
567
+ components: [
634
568
  {
635
569
  internalType: "uint256",
636
- name: "lnFeeRateRoot",
570
+ name: "buyYtIy",
637
571
  type: "uint256",
638
572
  },
639
573
  {
640
574
  internalType: "uint256",
641
- name: "reserveFeePercent",
575
+ name: "sellYtIy",
642
576
  type: "uint256",
643
577
  },
644
578
  {
645
579
  internalType: "uint256",
646
- name: "lastLnImpliedRate",
580
+ name: "targetSyRatio",
581
+ type: "uint256",
582
+ },
583
+ {
584
+ internalType: "uint256",
585
+ name: "maxSyRatio",
586
+ type: "uint256",
587
+ },
588
+ {
589
+ internalType: "uint256",
590
+ name: "minYtPtRatio",
591
+ type: "uint256",
592
+ },
593
+ {
594
+ internalType: "uint256",
595
+ name: "numOfBins",
647
596
  type: "uint256",
648
597
  },
649
598
  ],
650
- internalType: "struct MarketState",
651
- name: "state",
599
+ internalType: "struct LongTradingSpecs",
600
+ name: "specs",
652
601
  type: "tuple",
653
602
  },
654
- {
655
- internalType: "PYIndex",
656
- name: "index",
657
- type: "uint256",
658
- },
659
- {
660
- internalType: "uint256",
661
- name: "blockTime",
662
- type: "uint256",
663
- },
664
- ],
665
- internalType: "struct MarketExtState",
666
- name: "marketExt",
667
- type: "tuple",
668
- },
669
- {
670
- components: [
671
- {
672
- internalType: "uint256",
673
- name: "lowerIyLimit",
674
- type: "uint256",
675
- },
676
- {
677
- internalType: "uint256",
678
- name: "upperIyLimit",
679
- type: "uint256",
680
- },
681
- {
682
- internalType: "uint256",
683
- name: "floatingSyRatioLimit",
684
- type: "uint256",
685
- },
686
- {
687
- internalType: "uint256",
688
- name: "floatingSyRatioTarget",
689
- type: "uint256",
690
- },
691
- {
692
- internalType: "uint256",
693
- name: "ytPtRatioLimit",
694
- type: "uint256",
695
- },
696
- {
697
- internalType: "uint256",
698
- name: "ytPtRatioTarget",
699
- type: "uint256",
700
- },
701
603
  ],
702
- internalType: "struct LongTradingSpecs",
703
- name: "specs",
704
- type: "tuple",
705
- },
706
- {
707
- internalType: "enum ActionType",
708
- name: "action",
709
- type: "uint8",
710
- },
711
- {
712
- components: [
713
- {
714
- internalType: "uint256",
715
- name: "guessMin",
716
- type: "uint256",
717
- },
718
- {
719
- internalType: "uint256",
720
- name: "guessMax",
721
- type: "uint256",
722
- },
723
- {
724
- internalType: "uint256",
725
- name: "guessOffchain",
726
- type: "uint256",
727
- },
728
- {
729
- internalType: "uint256",
730
- name: "maxIteration",
731
- type: "uint256",
732
- },
733
- {
734
- internalType: "uint256",
735
- name: "eps",
736
- type: "uint256",
737
- },
738
- ],
739
- internalType: "struct ApproxParams",
740
- name: "botParams",
741
- type: "tuple",
742
- },
743
- {
744
- components: [
745
- {
746
- internalType: "uint256",
747
- name: "guessMin",
748
- type: "uint256",
749
- },
750
- {
751
- internalType: "uint256",
752
- name: "guessMax",
753
- type: "uint256",
754
- },
755
- {
756
- internalType: "uint256",
757
- name: "guessOffchain",
758
- type: "uint256",
759
- },
760
- {
761
- internalType: "uint256",
762
- name: "maxIteration",
763
- type: "uint256",
764
- },
765
- {
766
- internalType: "uint256",
767
- name: "eps",
768
- type: "uint256",
769
- },
770
- ],
771
- internalType: "struct ApproxParams",
772
- name: "intParams",
604
+ internalType: "struct StrategyData",
605
+ name: "strategyData",
773
606
  type: "tuple",
774
607
  },
775
608
  ],
776
- name: "searchForBotParam",
609
+ name: "getCurrentBin",
777
610
  outputs: [
778
611
  {
779
- internalType: "uint256",
780
- name: "",
781
- type: "uint256",
782
- },
783
- {
784
- internalType: "enum IBotDecisionHelper.RebalanceResult",
612
+ internalType: "int256",
785
613
  name: "",
786
- type: "uint8",
614
+ type: "int256",
787
615
  },
788
616
  ],
789
617
  stateMutability: "pure",
@@ -796,68 +624,139 @@ const _abi = [
796
624
  {
797
625
  components: [
798
626
  {
799
- internalType: "int256",
800
- name: "totalPt",
801
- type: "int256",
627
+ internalType: "uint256",
628
+ name: "lpBalance",
629
+ type: "uint256",
802
630
  },
803
631
  {
804
- internalType: "int256",
805
- name: "totalSy",
806
- type: "int256",
632
+ internalType: "uint256",
633
+ name: "ytBalance",
634
+ type: "uint256",
807
635
  },
808
636
  {
809
- internalType: "int256",
810
- name: "totalLp",
811
- type: "int256",
637
+ internalType: "uint256",
638
+ name: "syBalance",
639
+ type: "uint256",
812
640
  },
813
641
  {
814
- internalType: "address",
815
- name: "treasury",
816
- type: "address",
642
+ internalType: "uint256",
643
+ name: "buyBins",
644
+ type: "uint256",
817
645
  },
646
+ ],
647
+ internalType: "struct BotState",
648
+ name: "botState",
649
+ type: "tuple",
650
+ },
651
+ {
652
+ components: [
818
653
  {
819
- internalType: "int256",
820
- name: "scalarRoot",
821
- type: "int256",
654
+ components: [
655
+ {
656
+ internalType: "int256",
657
+ name: "totalPt",
658
+ type: "int256",
659
+ },
660
+ {
661
+ internalType: "int256",
662
+ name: "totalSy",
663
+ type: "int256",
664
+ },
665
+ {
666
+ internalType: "int256",
667
+ name: "totalLp",
668
+ type: "int256",
669
+ },
670
+ {
671
+ internalType: "address",
672
+ name: "treasury",
673
+ type: "address",
674
+ },
675
+ {
676
+ internalType: "int256",
677
+ name: "scalarRoot",
678
+ type: "int256",
679
+ },
680
+ {
681
+ internalType: "uint256",
682
+ name: "expiry",
683
+ type: "uint256",
684
+ },
685
+ {
686
+ internalType: "uint256",
687
+ name: "lnFeeRateRoot",
688
+ type: "uint256",
689
+ },
690
+ {
691
+ internalType: "uint256",
692
+ name: "reserveFeePercent",
693
+ type: "uint256",
694
+ },
695
+ {
696
+ internalType: "uint256",
697
+ name: "lastLnImpliedRate",
698
+ type: "uint256",
699
+ },
700
+ ],
701
+ internalType: "struct MarketState",
702
+ name: "state",
703
+ type: "tuple",
704
+ },
705
+ {
706
+ internalType: "PYIndex",
707
+ name: "index",
708
+ type: "uint256",
822
709
  },
823
710
  {
824
711
  internalType: "uint256",
825
- name: "expiry",
712
+ name: "blockTime",
826
713
  type: "uint256",
827
714
  },
715
+ ],
716
+ internalType: "struct MarketExtState",
717
+ name: "marketExt",
718
+ type: "tuple",
719
+ },
720
+ {
721
+ components: [
828
722
  {
829
723
  internalType: "uint256",
830
- name: "lnFeeRateRoot",
724
+ name: "buyYtIy",
831
725
  type: "uint256",
832
726
  },
833
727
  {
834
728
  internalType: "uint256",
835
- name: "reserveFeePercent",
729
+ name: "sellYtIy",
836
730
  type: "uint256",
837
731
  },
838
732
  {
839
733
  internalType: "uint256",
840
- name: "lastLnImpliedRate",
734
+ name: "targetSyRatio",
735
+ type: "uint256",
736
+ },
737
+ {
738
+ internalType: "uint256",
739
+ name: "maxSyRatio",
740
+ type: "uint256",
741
+ },
742
+ {
743
+ internalType: "uint256",
744
+ name: "minYtPtRatio",
745
+ type: "uint256",
746
+ },
747
+ {
748
+ internalType: "uint256",
749
+ name: "numOfBins",
841
750
  type: "uint256",
842
751
  },
843
752
  ],
844
- internalType: "struct MarketState",
845
- name: "state",
753
+ internalType: "struct LongTradingSpecs",
754
+ name: "specs",
846
755
  type: "tuple",
847
756
  },
848
- {
849
- internalType: "PYIndex",
850
- name: "index",
851
- type: "uint256",
852
- },
853
- {
854
- internalType: "uint256",
855
- name: "blockTime",
856
- type: "uint256",
857
- },
858
757
  ],
859
- internalType: "struct MarketExtState",
860
- name: "marketExt",
758
+ internalType: "struct StrategyData",
759
+ name: "strategyData",
861
760
  type: "tuple",
862
761
  },
863
762
  {
@@ -899,23 +798,17 @@ const _abi = [
899
798
  },
900
799
  ],
901
800
  internalType: "struct ApproxParams",
902
- name: "intParams",
801
+ name: "swapApproxParams",
903
802
  type: "tuple",
904
803
  },
905
804
  ],
906
- name: "searchForIntParam",
805
+ name: "previewAction",
907
806
  outputs: [
908
807
  {
909
- internalType: "uint256",
910
- name: "",
911
- type: "uint256",
808
+ internalType: "bool",
809
+ name: "success",
810
+ type: "bool",
912
811
  },
913
- ],
914
- stateMutability: "pure",
915
- type: "function",
916
- },
917
- {
918
- inputs: [
919
812
  {
920
813
  components: [
921
814
  {
@@ -933,6 +826,11 @@ const _abi = [
933
826
  name: "syBalance",
934
827
  type: "uint256",
935
828
  },
829
+ {
830
+ internalType: "uint256",
831
+ name: "buyBins",
832
+ type: "uint256",
833
+ },
936
834
  ],
937
835
  internalType: "struct BotState",
938
836
  name: "bot",
@@ -1007,71 +905,242 @@ const _abi = [
1007
905
  name: "marketExt",
1008
906
  type: "tuple",
1009
907
  },
908
+ ],
909
+ stateMutability: "pure",
910
+ type: "function",
911
+ },
912
+ {
913
+ inputs: [
1010
914
  {
1011
915
  components: [
1012
916
  {
1013
- internalType: "uint256",
1014
- name: "lowerIyLimit",
1015
- type: "uint256",
917
+ components: [
918
+ {
919
+ internalType: "uint256",
920
+ name: "lpBalance",
921
+ type: "uint256",
922
+ },
923
+ {
924
+ internalType: "uint256",
925
+ name: "ytBalance",
926
+ type: "uint256",
927
+ },
928
+ {
929
+ internalType: "uint256",
930
+ name: "syBalance",
931
+ type: "uint256",
932
+ },
933
+ {
934
+ internalType: "uint256",
935
+ name: "buyBins",
936
+ type: "uint256",
937
+ },
938
+ ],
939
+ internalType: "struct BotState",
940
+ name: "botState",
941
+ type: "tuple",
1016
942
  },
943
+ {
944
+ components: [
945
+ {
946
+ components: [
947
+ {
948
+ internalType: "int256",
949
+ name: "totalPt",
950
+ type: "int256",
951
+ },
952
+ {
953
+ internalType: "int256",
954
+ name: "totalSy",
955
+ type: "int256",
956
+ },
957
+ {
958
+ internalType: "int256",
959
+ name: "totalLp",
960
+ type: "int256",
961
+ },
962
+ {
963
+ internalType: "address",
964
+ name: "treasury",
965
+ type: "address",
966
+ },
967
+ {
968
+ internalType: "int256",
969
+ name: "scalarRoot",
970
+ type: "int256",
971
+ },
972
+ {
973
+ internalType: "uint256",
974
+ name: "expiry",
975
+ type: "uint256",
976
+ },
977
+ {
978
+ internalType: "uint256",
979
+ name: "lnFeeRateRoot",
980
+ type: "uint256",
981
+ },
982
+ {
983
+ internalType: "uint256",
984
+ name: "reserveFeePercent",
985
+ type: "uint256",
986
+ },
987
+ {
988
+ internalType: "uint256",
989
+ name: "lastLnImpliedRate",
990
+ type: "uint256",
991
+ },
992
+ ],
993
+ internalType: "struct MarketState",
994
+ name: "state",
995
+ type: "tuple",
996
+ },
997
+ {
998
+ internalType: "PYIndex",
999
+ name: "index",
1000
+ type: "uint256",
1001
+ },
1002
+ {
1003
+ internalType: "uint256",
1004
+ name: "blockTime",
1005
+ type: "uint256",
1006
+ },
1007
+ ],
1008
+ internalType: "struct MarketExtState",
1009
+ name: "marketExt",
1010
+ type: "tuple",
1011
+ },
1012
+ {
1013
+ components: [
1014
+ {
1015
+ internalType: "uint256",
1016
+ name: "buyYtIy",
1017
+ type: "uint256",
1018
+ },
1019
+ {
1020
+ internalType: "uint256",
1021
+ name: "sellYtIy",
1022
+ type: "uint256",
1023
+ },
1024
+ {
1025
+ internalType: "uint256",
1026
+ name: "targetSyRatio",
1027
+ type: "uint256",
1028
+ },
1029
+ {
1030
+ internalType: "uint256",
1031
+ name: "maxSyRatio",
1032
+ type: "uint256",
1033
+ },
1034
+ {
1035
+ internalType: "uint256",
1036
+ name: "minYtPtRatio",
1037
+ type: "uint256",
1038
+ },
1039
+ {
1040
+ internalType: "uint256",
1041
+ name: "numOfBins",
1042
+ type: "uint256",
1043
+ },
1044
+ ],
1045
+ internalType: "struct LongTradingSpecs",
1046
+ name: "specs",
1047
+ type: "tuple",
1048
+ },
1049
+ ],
1050
+ internalType: "struct StrategyData",
1051
+ name: "strategyData",
1052
+ type: "tuple",
1053
+ },
1054
+ {
1055
+ internalType: "enum ActionType",
1056
+ name: "action",
1057
+ type: "uint8",
1058
+ },
1059
+ {
1060
+ internalType: "uint256",
1061
+ name: "targetIy",
1062
+ type: "uint256",
1063
+ },
1064
+ {
1065
+ components: [
1017
1066
  {
1018
1067
  internalType: "uint256",
1019
- name: "upperIyLimit",
1068
+ name: "guessMin",
1020
1069
  type: "uint256",
1021
1070
  },
1022
1071
  {
1023
1072
  internalType: "uint256",
1024
- name: "floatingSyRatioLimit",
1073
+ name: "guessMax",
1025
1074
  type: "uint256",
1026
1075
  },
1027
1076
  {
1028
1077
  internalType: "uint256",
1029
- name: "floatingSyRatioTarget",
1078
+ name: "guessOffchain",
1030
1079
  type: "uint256",
1031
1080
  },
1032
1081
  {
1033
1082
  internalType: "uint256",
1034
- name: "ytPtRatioLimit",
1083
+ name: "maxIteration",
1035
1084
  type: "uint256",
1036
1085
  },
1037
1086
  {
1038
1087
  internalType: "uint256",
1039
- name: "ytPtRatioTarget",
1088
+ name: "eps",
1040
1089
  type: "uint256",
1041
1090
  },
1042
1091
  ],
1043
- internalType: "struct LongTradingSpecs",
1044
- name: "specs",
1092
+ internalType: "struct ApproxParams",
1093
+ name: "botParams",
1045
1094
  type: "tuple",
1046
1095
  },
1047
- ],
1048
- name: "strategyState",
1049
- outputs: [
1050
1096
  {
1051
1097
  components: [
1052
1098
  {
1053
- internalType: "enum StrategyFlag",
1054
- name: "iyFlag",
1055
- type: "uint8",
1099
+ internalType: "uint256",
1100
+ name: "guessMin",
1101
+ type: "uint256",
1056
1102
  },
1057
1103
  {
1058
- internalType: "enum StrategyFlag",
1059
- name: "syRatioFlag",
1060
- type: "uint8",
1104
+ internalType: "uint256",
1105
+ name: "guessMax",
1106
+ type: "uint256",
1107
+ },
1108
+ {
1109
+ internalType: "uint256",
1110
+ name: "guessOffchain",
1111
+ type: "uint256",
1112
+ },
1113
+ {
1114
+ internalType: "uint256",
1115
+ name: "maxIteration",
1116
+ type: "uint256",
1117
+ },
1118
+ {
1119
+ internalType: "uint256",
1120
+ name: "eps",
1121
+ type: "uint256",
1061
1122
  },
1062
1123
  ],
1063
- internalType: "struct StrategyState",
1064
- name: "currentState",
1124
+ internalType: "struct ApproxParams",
1125
+ name: "intParams",
1065
1126
  type: "tuple",
1066
1127
  },
1067
1128
  ],
1129
+ name: "searchForBotParam",
1130
+ outputs: [
1131
+ {
1132
+ internalType: "uint256",
1133
+ name: "",
1134
+ type: "uint256",
1135
+ },
1136
+ ],
1068
1137
  stateMutability: "pure",
1069
1138
  type: "function",
1070
1139
  },
1071
1140
  ];
1072
1141
 
1073
1142
  const _bytecode =
1074
- "0x608060405234801561001057600080fd5b506135e2806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c8063124fdedb1461006757806333cace2a1461013e578063675ea12b1461015e578063896d88d31461017f578063914185af1461019f578063b3a332eb146101c0575b600080fd5b61007a6100753660046130c5565b6101f3565b6040516101359392919060006101e0820190508415158252835160208301526020840151604083015260408401516060830152825180516080840152602081015160a0840152604081015160c084015260018060a01b0360608201511660e08401526080810151610100818186015260a083015161012086015260c083015161014086015260e08301516101608601528083015161018086015250505060208301516101a083015260408301516101c0830152949350505050565b60405180910390f35b61015161014c366004613139565b6102e7565b60405161013591906131df565b61017161016c3660046131f9565b610407565b604051908152602001610135565b61019261018d3660046132d3565b61044f565b604051610135919061332b565b6101b26101ad366004613358565b6104f6565b6040516101359291906133d6565b6101d36101ce3660046133f3565b610802565b604080519485526020850193909352918301526060820152608001610135565b60006101fd612e30565b610205612e51565b61020e88610876565b9150610219876108a2565b9050600086600581111561022f5761022f6131c9565b036102465761023f8282876108e0565b92506102dc565b600186600581111561025a5761025a6131c9565b0361026a5761023f82828761093e565b600286600581111561027e5761027e6131c9565b0361028e5761023f8282876109b1565b60038660058111156102a2576102a26131c9565b036102b25761023f828287610a00565b60048660058111156102c6576102c66131c9565b036102d75761023f82828787610a3b565b600092505b955095509592505050565b60006001825160028111156102fe576102fe6131c9565b036103555760028260200151600281111561031b5761031b6131c9565b0361033c57826040015160000361033457506005610401565b506000610401565b825160000361034d57506005610401565b506004610401565b60008251600281111561036a5761036a6131c9565b036103b057600282602001516002811115610387576103876131c9565b036103a85782604001516000036103a057506005610401565b506001610401565b506005610401565b6002826020015160028111156103c8576103c86131c9565b036103e95782604001516000036103e157506005610401565b506002610401565b82602001516000036103fd57506005610401565b5060035b92915050565b6000600484600581111561041d5761041d6131c9565b036104435760006104398484610432896108a2565b9190610a71565b9250610447915050565b5060005b949350505050565b604080518082019091526000808252602082015260008060006104728787610802565b9350935093505084600001518310156104a4578360015b9081600281111561049c5761049c6131c9565b9052506104cc565b8285602001511080156104ba5750846080015181115b156104c757836002610489565b600084525b84604001518211156104e457600260208501526104ec565b600060208501525b5050509392505050565b600080600060405180608001604052808a815260200189815260200188815260200187600581111561052a5761052a6131c9565b90526040860151909150156105c45760006105618660800151670de0b6b3a7640000610556919061343f565b604088015190610b0e565b9050600161057483886040015188610b31565b6002811115610585576105856131c9565b1480156105ad5750600261059a838388610b31565b60028111156105ab576105ab6131c9565b145b156105c25750505050604082015160016107f7565b505b60006105d18a8a89610b99565b905080866020015111156105e757602086018190525b60208601518651111561063257866005811115610606576106066131c9565b8651602088015160405163f25ccea360e01b815261062993929190600401613452565b60405180910390fd5b600261064383886020015188610b31565b6002811115610654576106546131c9565b036106695750505050602082015160026107f7565b50600061067b82876000015187610b31565b90506000816002811115610691576106916131c9565b036106c5578660058111156106a8576106a86131c9565b8651604051630cf4fb5360e31b8152610629929190600401613468565b60018160028111156106d9576106d96131c9565b036106ed57505083519150600190506107f7565b5060005b85606001518110156107dd576000600287600001518860200151610715919061343f565b61071f919061348c565b875161072b91906134a0565b9050600261073a848389610b31565b600281111561074b5761074b6131c9565b0361075857808752610760565b602087018190525b610777876000015188602001518960800151610c54565b156107cc57600061078d84896000015189610b31565b600281111561079e5761079e6131c9565b036107bc5786516107b0848289610b31565b945094505050506107f7565b60208701516107b0848289610b31565b506107d6816134b3565b90506106f1565b5060405163fef33c9d60e01b815260040160405180910390fd5b965096945050505050565b60008080806108118686610c87565b935061081c85610d60565b604087015190935061082e9085610dad565b915060006108498760000151610843886108a2565b90610dd3565b91505080156108665760208701516108619082610dad565b61086a565b6000195b91505092959194509250565b61087e612e30565b50604080516060810182528251815260208084015190820152918101519082015290565b6108aa612e51565b60405180606001604052806108c28460000151610e8a565b81526020018360200151815260200183604001518152509050919050565b6000806108ed8484610f07565b90508460400151811115610905576000915050610937565b8085604001818151610917919061343f565b90525060208501805184919061092e9083906134a0565b90525060019150505b9392505050565b6000836040015182111561095457506000610937565b6000806109618585610f57565b915091508386604001818151610977919061343f565b90525085518290879061098b9083906134a0565b9052506020860180518291906109a29083906134a0565b90525060019695505050505050565b600080806109bf8585610fe3565b9150915085604001518111156109da57600092505050610937565b80866040018181516109ec919061343f565b9052508551829087906109a29083906134a0565b60008080610a0e8585611066565b915091508560200151811115610a2957600092505050610937565b80866020018181516109ec919061343f565b8351600090831115610a4f57506000610447565b6000610a5c858585610a71565b509050838660000181815161098b919061343f565b600080600080610a818787610dd3565b915091506000610a9e83896020015161116a90919063ffffffff16565b90506000610aac82846134a0565b90506000610ad28a60200151838c60400151610ac78c611176565b8e51939291906111ea565b5060208c015160408d01518d51929950929350610af0928990611300565b5050508083610aff91906134a0565b96505050505050935093915050565b600080610b1b83856134cc565b9050670de0b6b3a7640000815b04949350505050565b600080600080610b5087600001518860200151896060015189896101f3565b92509250925082610b675760009350505050610937565b610b7b828289604001518a60600151611351565b15610b8c5760019350505050610937565b5060029695505050505050565b600080826005811115610bae57610bae6131c9565b03610bc357610bbc8361149d565b9050610937565b6001826005811115610bd757610bd76131c9565b03610be757506040830151610937565b6002826005811115610bfb57610bfb6131c9565b03610c0957610bbc836114d8565b6003826005811115610c1d57610c1d6131c9565b03610c2b57610bbc836114d8565b6004826005811115610c3f57610c3f6131c9565b03610c4c57508251610937565b506000610937565b60008284111580156104475750610c7c83610c7784670de0b6b3a764000061343f565b610b0e565b841015949350505050565b600080610c93836108a2565b9050600080610caf866000015184610dd390919063ffffffff16565b915091506000828760400151610cc591906134a0565b905086602001518211610d1357610cdc84836114fe565b610ce690826134a0565b9050610d02828860200151610cfb919061343f565b8590611510565b610d0c90826134a0565b9050610d56565b6020870151610d239085906114fe565b610d2d90826134a0565b9050610d49876020015183610d42919061343f565b859061156b565b610d5390826134a0565b90505b9695505050505050565b6000670de0b6b3a7640000610da3610d948460400151856000015160a00151610d89919061343f565b6301e1338090610dad565b610d9d8561158f565b906115dc565b610401919061343f565b600080610dc2670de0b6b3a7640000856134cc565b9050828181610b2857610b28613476565b6000806000610de184611785565b85516040810151602090910151919250600091610dfe90846134e3565b610e089190613513565b865160408101519051919250600091610e2190856134e3565b610e2b9190613513565b875160400151909150610e3e908461179f565b875160400152865151610e51908261179f565b875152865160200151610e64908361179f565b875160200152610e73826117e6565b610e7c826117e6565b945094505050509250929050565b610e92612e78565b60405180610120016040528083600001518152602001836020015181526020018360400151815260200183606001516001600160a01b03168152602001836080015181526020018360a0015181526020018360c0015181526020018360e0015181526020018361010001518152509050919050565b6020820151604083015183516000928392610f259291908690611300565b505090506000610f428486602001516117f590919063ffffffff16565b9050610f4e8183611801565b95945050505050565b6000806000610f7b610f708660000151602001516117e6565b60208701519061116a565b855151610f87906117e6565b610f9191906134a0565b855151610f9d906117e6565b610fa790866134cc565b610fb1919061348c565b6020860151909150610fc3908261116a565b9150610fd985610fd3838761343f565b84611818565b9250509250929050565b600080600061100b856020015185876040015188600001516119ee909392919063ffffffff16565b505085515190915060009061101f906117e6565b86516020015161102e906117e6565b61103890876134cc565b611042919061348c565b905061104f868287611818565b935061105b81836134a0565b925050509250929050565b600080600061108e856020015185876040015188600001516119ee909392919063ffffffff16565b5050602086015190915060006110a482846134cc565b6110b6670de0b6b3a7640000886134cc565b6110c0919061343f565b8751519091506000906110d2906117e6565b836110e48a60000151602001516117e6565b6110ee91906134cc565b6110f8919061348c565b61110a90670de0b6b3a76400006134a0565b90506000611118828461348c565b9050611124818961343f565b9550600061113f878b60200151611a1c90919063ffffffff16565b9050600061114d878361343f565b905061115a8b8285611818565b9850505050505050509250929050565b60006109378383611a28565b6111a86040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060a001604052808360000151815260200183602001518152602001836040015181526020018360600151815260200183608001518152509050919050565b60008080806111fa898988611a47565b9050846040015160000361123c5784516112149088611b41565b8552602085015161122e906112298b84611b57565b611bdb565b602086015261123c85611bea565b60005b85606001518110156112e65760006112578783611c38565b90506000806112688d868e86611ca4565b509092509050600061127a8d8461116a565b90506000611288828661343f565b90508c81116112bf576112a0818e8d60800151610c54565b156112b7575097509195509093506102dc92505050565b848b526112d0565b6112ca60018661343f565b60208c01525b5050505050806112df906134b3565b905061123f565b50604051637d388ed960e11b815260040160405180910390fd5b60008060008060008061131d8a8a6113178b611cd5565b8a611cec565b92509250925061132c836117e6565b9550611337826117e6565b9450611342816117e6565b93505050509450945094915050565b60008060028460200151856000015161136a91906134a0565b611374919061348c565b905060008060006113858989610802565b91955093509150600090508660058111156113a2576113a26131c9565b036113c55783831015806113ba575086606001518211155b945050505050610447565b60018660058111156113d9576113d96131c9565b036113f1578660600151821115945050505050610447565b6002866005811115611405576114056131c9565b0361143657838311158061141d575086606001518211155b806113ba57508660a00151811115945050505050610447565b600386600581111561144a5761144a6131c9565b0361146c5783831115806113ba57508660a00151811115945050505050610447565b6004866005811115611480576114806131c9565b0361149057505010159050610447565b6001945050505050610447565b805160208201516040830151600092600a926114c3926114be918391611a47565b611b57565b6114ce9060096134cc565b610401919061348c565b602081015160408201518251600092610401926114f6929190611a47565b835151611d7f565b60208201516000906109379083611a1c565b602082015160408301518351600092839261152e92919086906119ee565b50509050600061154b828660200151611e1e90919063ffffffff16565b90506000611559828661343f565b6020870151909150610d569082611a1c565b602082015160408301518351600092611585928590611300565b5090949350505050565b60208101516040820151825160009283926115ab929190611a47565b905060006115d18460000151600001518360200151846000015185604001516000611e2b565b9050610447816117e6565b6000816000036115f55750670de0b6b3a7640000610401565b8260000361160557506000610401565b600160ff1b831061164a5760405162461bcd60e51b815260206004820152600f60248201526e78206f7574206f6620626f756e647360881b6044820152606401610629565b82770bce5086492111aea88f4bb1ca6bcf584181ea8059f7653283106116a45760405162461bcd60e51b815260206004820152600f60248201526e79206f7574206f6620626f756e647360881b6044820152606401610629565b826000670c7d713b49da0000831380156116c55750670f43fc2c04ee000083125b156116fc5760006116d584611edc565b9050670de0b6b3a764000080820784020583670de0b6b3a76400008305020191505061170a565b8161170684611ffb565b0290505b670de0b6b3a76400009005680238fd42c5cf03ffff198112801590611738575068070c1cc73b00c800008113155b61177c5760405162461bcd60e51b815260206004820152601560248201527470726f64756374206f7574206f6620626f756e647360581b6044820152606401610629565b610d568161239e565b60006001600160ff1b0382111561179b57600080fd5b5090565b6000818312156117dc5760405162461bcd60e51b81526020600482015260086024820152676e6567617469766560c01b6044820152606401610629565b6109378284613541565b60008082121561179b57600080fd5b600061093783836127b3565b600081831015611812576000610937565b50900390565b825160a001516040840151600091116118725760405162461bcd60e51b815260206004820152601c60248201527b13585c9ad95d115e1d131a588e88195e1c1a5c9959081b585c9ad95d60221b6044820152606401610629565b8351604001516000126118be5760405162461bcd60e51b815260206004820152601460248201527304d61726b65744578744c69623a204c50203c20360641b6044820152606401610629565b60006118c984611785565b905060006118d684611785565b90506000806000808960000151600001518a6000015160400151866118fb91906134e3565b6119059190613513565b8a51602081015160409091015191925060009161192290896134e3565b61192c9190613513565b905080821215611967578a51604081015160209091015192955086945085926119569084906134e3565b6119609190613513565b9250611990565b8a516040810151905191955087935085916119839083906134e3565b61198d9190613513565b93505b828b600001516020018181516119a69190613568565b9052508a5180518591906119bb908390613568565b9052508a5160400180518691906119d3908390613568565b9052506119df856117e6565b9b9a5050505050505050505050565b600080600080600080611a058a8a6113178b611785565b92509250925061132c611a17846127df565b6117e6565b600061093783836127ed565b6000670de0b6b3a7640000611a3d84846134cc565b610937919061348c565b611a726040518060800160405280600081526020016000815260200160008152602001600081525090565b60a08401518210611a965760405163b2094b5960e01b815260040160405180910390fd5b6000828560a00151611aa8919061343f565b9050611ab48582612802565b82526020850151611ac6908590612863565b602083015284511580611adb57506020820151155b15611b02578451602083015160405163b1c4aefb60e01b8152610629929190600401613468565b611b208560000151866101000151846020015185600001518561289a565b604083015260c0850151611b34908261291b565b6060830152509392505050565b6000818311611b505781610937565b5090919050565b60008060009050600060018460200151611b71919061343f565b90505b808214611bd35760006002611b8983856134a0565b611b949060016134a0565b611b9e919061348c565b90506000611bb18688600001518461294f565b1215611bc957611bc260018261343f565b9150611bcd565b8092505b50611b74565b509392505050565b6000818310611b505781610937565b602081015181511180611c085750670de0b6b3a76400008160800151115b15611c3557805160208201516080830151604051632cc06bc160e21b815261062993929190600401613452565b50565b600081158015611c4b5750604083015115155b15611c5b57506040820151610401565b6020830151835111611c8b5760208301518351600291611c7a916134a0565b611c84919061348c565b9050610401565b604051637d388ed960e11b815260040160405180910390fd5b60008080808080611cc28989611cb98a613590565b8d929190612a41565b919c909b50909950975050505050505050565b6000611ce082611785565b610401906000196134e3565b6000806000611cff8760a0015185101590565b15611d1d5760405163b2094b5960e01b815260040160405180910390fd5b86518512611d43578651604051632185509b60e21b815261062991908790600401613468565b6000611d50888887611a47565b9050611d5e88828989612a41565b91955093509150611d748882898988878b612b95565b509450945094915050565b600080611dac611da7856000015186604001518760600151611da19190613541565b90612c27565b61239e565b90506000611dcc611dc5670de0b6b3a764000084613568565b8390612c4a565b90506000611dea866020015186611de39190613568565b8390612c27565b90506000611df88287613541565b90506103e8611e09826103e76134cc565b611e13919061348c565b979650505050505050565b6000826104478184612c70565b600080611e38878461179f565b90506000611e49611dc5888a613568565b9050670d529ae9e8600000811315611e805780670d529ae9e8600000604051637e34684f60e11b8152600401610629929190613468565b6000611e8b82612c88565b905085611e988289612c4a565b611ea29190613568565b9350670de0b6b3a7640000841215611ed05760405163329e322960e21b815260048101859052602401610629565b50505095945050505050565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff1985010281611f1d57611f1d613476565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a764000082121561203c57612033826a0c097ce7bc90715b34b9f160241b8161202d5761202d613476565b05611ffb565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b83126120875772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b83126120be576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312612106576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312612141576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf850831261217857693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e283126121af57690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d0383126121e45768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb41746121110831261220f57680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312612244576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f17757889379378312612279576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b28660383126122ad576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac83126122e1576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d63100000808603028161230a5761230a613476565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6000680238fd42c5cf03ffff1982121580156123c3575068070c1cc73b00c800008213155b6124025760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b6044820152606401610629565b600082121561243a576124178260000361239e565b6a0c097ce7bc90715b34b9f160241b8161243357612433613476565b0592915050565b60006806f05b59d3b2000000831261247857506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b6124ae565b6803782dace9d900000083126124aa57506803782dace9d8ffffff19909101906b1425982cf597cd205cef73806124ae565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac6200000084126124fe5768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d631000000841261253a576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b18800000841261257457682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c40000084126125ae576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac620000084126125e757680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d6310000084126126205768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b18800008412612659576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126126925768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b6000826001816127cb670de0b6b3a7640000866134cc565b6127d591906134a0565b611a3d919061343f565b6000610401826000196134e3565b600082611a3d670de0b6b3a7640000846134cc565b600061280d82611785565b61282461281f6201518061016d6134cc565b611785565b846080015161283391906134e3565b61283d9190613513565b90506000811361040157604051630e520c3b60e11b815260048101829052602401610629565b60008060008312612875576001612879565b6000195b905061289061281f8561288b86612cdb565b611a28565b61044790826134e3565b6000806128a7868461291b565b9050670de0b6b3a76400008112156128d55760405163329e322960e21b815260048101829052602401610629565b60006128eb6128e4878a613568565b8990612c4a565b905060006128f882612c88565b90506129048187612c4a565b61290e9084613541565b9998505050505050505050565b60008061292d6201518061016d6134cc565b61293784866134cc565b612941919061348c565b9050610447611da782611785565b6000808285602001516129629190613541565b905060006129708585613568565b90506000821380156129825750600081135b6129c35760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081c1d151bd3585c9ad95d60721b6044820152606401610629565b60006129f16129d284846134e3565b60208901516129e19089613568565b6129eb90886134e3565b90612c4a565b90506000612a07612a028486612c4a565b612cf2565b8851909150600090612a2290670de0b6b3a764000090612c4a565b9050612a3281611da18486613541565b896040015161290e9190613541565b600080600080612a648860000151886020015189600001518a6040015189611e2b565b90506000612a7a612a758784612c4a565b6127df565b60608901519091506000871315612ae9576000612a978483612c4a565b9050670de0b6b3a7640000811215612ac55760405163329e322960e21b815260048101829052602401610629565b612ae1612ada83670de0b6b3a7640000613541565b8490612c27565b915050612b16565b612b1381612aff81670de0b6b3a7640000613541565b612b0990856134e3565b612a759190613513565b90505b60006064612b278c60e00151611785565b612b3190846134e3565b612b3b9190613513565b90506000612b498385613541565b905060008112612b6257612b5d8a82612d83565b612b6c565b612b6c8a82612db0565b9750612b788a84612d83565b9650612b848a83612d83565b955050505050509450945094915050565b6000818860a00151612ba7919061343f565b8851909150612bb6908661179f565b8852612bd0612bc58486613568565b60208a01519061179f565b602089018190528851612bf591612be8908990612863565b895160408b015185612ddd565b6101008901819052600003612c1d57604051635534d70f60e11b815260040160405180910390fd5b5050505050505050565b600080612c3483856134e3565b9050670de0b6b3a7640000815b05949350505050565b600080612c5f670de0b6b3a7640000856134e3565b9050828181612c4157612c41613476565b6000670de0b6b3a76400006001816127cb86866134cc565b6000670de0b6b3a76400008203612cb25760405163a9c8b14d60e01b815260040160405180910390fd5b6000612cd0612cc984670de0b6b3a7640000613541565b8490612c4a565b905061093781612cf2565b600080821361179b57612ced82613590565b610401565b6000808213612d335760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b6044820152606401610629565b670c7d713b49da000082138015612d515750670f43fc2c04ee000082125b15612d7557670de0b6b3a7640000612d6883611edc565b8161243357612433613476565b61040182611ffb565b919050565b60008060008312612d95576001612d99565b6000195b905061289061281f85612dab86612cdb565b6127ed565b60008060008312612dc2576001612dc6565b6000195b905061289061281f85612dd886612cdb565b6127b3565b600080612dee878787876000611e2b565b90506000612dfe611a1783612cf2565b905083612e106201518061016d6134cc565b612e1a90836134cc565b612e24919061348c565b98975050505050505050565b60405180606001604052806000815260200160008152602001600081525090565b6040518060600160405280612e64612e78565b815260200160008152602001600081525090565b60405180610120016040528060008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051606081016001600160401b0381118282101715612efd57634e487b7160e01b600052604160045260246000fd5b60405290565b60405161012081016001600160401b0381118282101715612efd57634e487b7160e01b600052604160045260246000fd5b600060608284031215612f4657600080fd5b612f4e612ecd565b905081358152602082013560208201526040820135604082015292915050565b80356001600160a01b0381168114612d7e57600080fd5b6000818303610160811215612f9957600080fd5b612fa1612ecd565b915061012080821215612fb357600080fd5b612fbb612f03565b9150833582526020840135602083015260408401356040830152612fe160608501612f6e565b60608301526080840135608083015260a084013560a083015260c084013560c083015260e084013560e08301526101008085013581840152508183528084013560208401525050610140820135604082015292915050565b803560068110612d7e57600080fd5b600060a0828403121561305a57600080fd5b60405160a081016001600160401b038111828210171561308a57634e487b7160e01b600052604160045260246000fd5b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201525092915050565b60008060008060006102a086880312156130de57600080fd5b6130e88787612f34565b94506130f78760608801612f85565b93506131066101c08701613039565b92506101e0860135915061311e876102008801613048565b90509295509295909350565b803560038110612d7e57600080fd5b60008082840360a081121561314d57600080fd5b6131578585612f34565b92506040605f198201121561316b57600080fd5b50604080519081016001600160401b038111828210171561319c57634e487b7160e01b600052604160045260246000fd5b6040526131ab6060850161312a565b81526131b96080850161312a565b6020820152809150509250929050565b634e487b7160e01b600052602160045260246000fd5b60208101600683106131f3576131f36131c9565b91905290565b600080600080610240858703121561321057600080fd5b61321a8686612f85565b93506132296101608601613039565b92506101808501359150613241866101a08701613048565b905092959194509250565b600060c0828403121561325e57600080fd5b60405160c081016001600160401b038111828210171561328e57634e487b7160e01b600052604160045260246000fd5b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201525092915050565b600080600061028084860312156132e957600080fd5b6132f38585612f34565b92506133028560608601612f85565b9150613312856101c0860161324c565b90509250925092565b60038110611c3557611c356131c9565b8151604082019061333b8161331b565b8252602083015161334b8161331b565b8060208401525092915050565b6000806000806000806103e0878903121561337257600080fd5b61337c8888612f34565b955061338b8860608901612f85565b945061339b886101c0890161324c565b93506133aa6102808801613039565b92506133ba886102a08901613048565b91506133ca886103408901613048565b90509295509295509295565b828152604081016133e68361331b565b8260208301529392505050565b6000806101c0838503121561340757600080fd5b6134118484612f34565b91506134208460608501612f85565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561040157610401613429565b9283526020830191909152604082015260600190565b918252602082015260400190565b634e487b7160e01b600052601260045260246000fd5b60008261349b5761349b613476565b500490565b8082018082111561040157610401613429565b6000600182016134c5576134c5613429565b5060010190565b808202811582820484141761040157610401613429565b80820260008212600160ff1b841416156134ff576134ff613429565b818105831482151761040157610401613429565b60008261352257613522613476565b600160ff1b82146000198414161561353c5761353c613429565b500590565b818103600083128015838313168383128216171561356157613561613429565b5092915050565b808201828112600083128015821682158216171561358857613588613429565b505092915050565b6000600160ff1b82016135a5576135a5613429565b506000039056fea2646970667358221220ac9ca2b8ff0c6b372d5d03bdc3a20671c07c3a53f062c1972d206973a5bf6cb864736f6c63430008110033";
1143
+ "0x608060405234801561001057600080fd5b506135d4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100785760003560e01c80631cd7e2011461007d578063329fea081461015f5780638e7274461461018057806397491860146101a05780639d2a679f146101d3578063ac4c7e84146101dc578063c2d38e62146101e9578063d8b88a1a146101fc575b600080fd5b61009061008b366004613079565b61020f565b604051610156939291906000610200820190508415158252835160208301526020840151604083015260408401516060830152606084015160808301528251805160a0840152602081015160c0840152604081015160e0840152606081015161010060018060a01b03821681860152608083015161012086015260a083015161014086015260c083015161016086015260e0830151610180860152808301516101a086015250505060208301516101c083015260408301516101e0830152949350505050565b60405180910390f35b61017261016d3660046130cc565b61029c565b604051908152602001610156565b61019361018e366004613114565b6102e4565b6040516101569190613147565b6101b36101ae366004613194565b610485565b604080519485526020850193909352918301526060820152608001610156565b61017260001981565b610172655af3107a400081565b6101726101f73660046131ca565b6104f9565b61017261020a366004613230565b6106f1565b6000610219612c97565b610221612cbf565b865161022c90610718565b915061023b8760200151610758565b9050600086600281111561025157610251613131565b0361026857610261828287610796565b9250610292565b600186600281111561027c5761027c613131565b0361028d57610261828287876107f6565b600092505b9450945094915050565b600060018460028111156102b2576102b2613131565b036102d85760006102ce84846102c789610758565b9190610852565b92506102dc915050565b5060005b949350505050565b610310604080516080810190915280600081526020016000815260200160008152602001600081525090565b6000826001600160a01b031663eb983ce56040518163ffffffff1660e01b81526004016102a0604051808303816000875af1158015610353573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061037791906132b0565b9050600061038882602001516108ef565b905061039d826000015183604001518361093c565b602084018190526000036103b657505060028152919050565b600080846020015112156103f25760018452825180516020860151606090920151604086015160a001516103eb939190610949565b9050610426565b6000808552610400846109e9565b9050610422818660200151866000015160600151876040015160a00151610949565b9150505b61045a838560000151610446866000015187604001518960200151610acd565b61044f85610b21565b6101f7600019610b21565b60408501819052602084015185516104779261016d600019610b21565b606085015250919392505050565b60008080806104948686610b61565b935061049f856108ef565b60408701519093506104b19085610c3a565b915060006104cc87600001516104c688610758565b90610c69565b91505080156104e95760208701516104e49082610c3a565b6104ed565b6000195b91505092959194509250565b600080604051806060016040528088815260200187600281111561051f5761051f613131565b815260200186905260408501519091501561056c57600161054a828660400151876080015187610d20565b600281111561055b5761055b613131565b0361056c57505060408201516106e8565b60006105818860000151896020015189610db3565b9050808560200151111561059757602085018190525b6020850151855111156105e2578660028111156105b6576105b6613131565b8551602087015160405163f25ccea360e01b81526105d9939291906004016133de565b60405180910390fd5b5060026105f9828660200151876080015187610d20565b600281111561060a5761060a613131565b1461061b57505060208201516106e8565b60005b84606001518110156106ce576000600286600001518760200151610642919061340a565b61064c9190613433565b86516106589190613447565b9050600061066c8483896080015189610d20565b9050600181600281111561068257610682613131565b03610692575092506106e8915050565b60008160028111156106a6576106a6613131565b036106b3578187526106bb565b602087018290525b5050806106c79061345a565b905061061e565b5060405163fef33c9d60e01b815260040160405180910390fd5b95945050505050565b60006107128260000151836040015161070d85602001516108ef565b61093c565b92915050565b610720612c97565b604051806080016040528083600001518152602001836020015181526020018360400151815260200183606001518152509050919050565b610760612cbf565b60405180606001604052806107788460000151610e06565b81526020018360200151815260200183604001518152509050919050565b600080806107a48585610e83565b9150915085602001518111156107bf576000925050506107ef565b80866020018181516107d1919061340a565b9052508551829087906107e5908390613447565b9052506001925050505b9392505050565b835160009083111561080a575060006102dc565b6000610817858585610852565b509050838660000181815161082c919061340a565b905250602086018051829190610843908390613447565b90525060019695505050505050565b6000806000806108628787610c69565b91509150600061087f838960200151610f8790919063ffffffff16565b9050600061088d8284613447565b905060006108b38a60200151838c604001516108a88c610f93565b8e5193929190610fdd565b5060208c015160408d01518d519299509293506108d19289906110fe565b50505080836108e09190613447565b96505050505050935093915050565b6000670de0b6b3a76400006109326109238460400151856000015160a00151610918919061340a565b6301e1338090610c3a565b61092c8561114f565b9061119c565b610712919061340a565b60006102dc838584611345565b60008360000361095b5761095b613473565b600080851261097f5783610970846002613489565b61097a919061340a565b610981565b835b9050600081670de0b6b3a76400006109988861135a565b6109a29190613489565b6109ac9190613433565b90506000670de0b6b3a76400006109c78361092c8184613447565b6109d1919061340a565b90506109dd8882611375565b98975050505050505050565b6000806109fd836000015160200151610b21565b90506000610a0c600019610b21565b90505b8151602083015114610ac5576000600283600001518460200151610a33919061340a565b610a3d9190613433565b8351610a499190613447565b90506000806000610a5d886000868861020f565b92509250925082610a8257610a7360018561340a565b602087015250610a0f92505050565b6000610a8e8383610485565b93505050508860400151608001518110610aaa57848752610abb565b610ab560018661340a565b60208801525b5050505050610a0f565b505192915050565b600081600003610adf57610adf613473565b6000610aeb8584611393565b90506000831215610b1357610b0b610b04826001613447565b85906113da565b9150506107ef565b610b0b610b0460018361340a565b610b29612ce6565b6040518060a0016040528060008152602001838152602001600081526020016101008152602001655af3107a40008152509050919050565b600080610b6d83610758565b9050600080610b89866000015184610c6990919063ffffffff16565b915091506000828760400151610b9f9190613447565b905086602001518211610bed57610bb6848361143e565b610bc09082613447565b9050610bdc828860200151610bd5919061340a565b8590611450565b610be69082613447565b9050610c30565b6020870151610bfd90859061143e565b610c079082613447565b9050610c23876020015183610c1c919061340a565b85906114ab565b610c2d9082613447565b90505b9695505050505050565b600080610c4f670de0b6b3a764000085613489565b9050828181610c6057610c6061341d565b04949350505050565b6000806000610c77846114cf565b85516040810151602090910151919250600091610c9490846134a0565b610c9e91906134d0565b865160408101519051919250600091610cb790856134a0565b610cc191906134d0565b875160400151909150610cd490846114e5565b875160400152865151610ce790826114e5565b875152865160200151610cfa90836114e5565b875160200152610d098261152c565b610d128261152c565b945094505050509250929050565b6000806000610d3987600001518860200151888761020f565b925050915081610d4e576002925050506102dc565b6000610d59826108ef565b9050600088602001516002811115610d7357610d73613131565b03610da457610d878189604001518861153b565b15610d9857600193505050506102dc565b600293505050506102dc565b610d878189604001518861156e565b600080826002811115610dc857610dc8613131565b03610ddd57610dd68361159c565b90506107ef565b6001826002811115610df157610df1613131565b03610dfe575082516107ef565b5060006107ef565b610e0e612d15565b60405180610120016040528083600001518152602001836020015181526020018360400151815260200183606001516001600160a01b03168152602001836080015181526020018360a0015181526020018360c0015181526020018360e0015181526020018361010001518152509050919050565b6000806000610eab856020015185876040015188600001516115c2909392919063ffffffff16565b505060208601519091506000610ec18284613489565b610ed3670de0b6b3a764000088613489565b610edd919061340a565b875151909150600090610eef9061152c565b83610f018a600001516020015161152c565b610f0b9190613489565b610f159190613433565b610f2790670de0b6b3a7640000613447565b90506000610f358284613433565b9050610f41818961340a565b95506000610f5c878b602001516115eb90919063ffffffff16565b90506000610f6a878361340a565b9050610f778b82856115f7565b9850505050505050509250929050565b60006107ef83836117cd565b610f9b612ce6565b6040518060a001604052808360000151815260200183602001518152602001836040015181526020018360600151815260200183608001518152509050919050565b6000808080610fed8989886117ec565b9050846040015160000361102f57845161100790886118ed565b855260208501516110219061101c8b84611903565b611987565b602086015261102f85611996565b60005b85606001518110156110d957600061104a87836119e4565b905060008061105b8d868e86611a50565b509092509050600061106d8d84610f87565b9050600061107b828661340a565b90508c81116110b257611093818e8d6080015161156e565b156110aa575097509195509093506110f392505050565b848b526110c3565b6110bd60018661340a565b60208c01525b5050505050806110d29061345a565b9050611032565b50604051637d388ed960e11b815260040160405180910390fd5b955095509592505050565b60008060008060008061111b8a8a6111158b611a81565b8a611a98565b92509250925061112a8361152c565b95506111358261152c565b94506111408161152c565b93505050509450945094915050565b602081015160408201518251600092839261116b9291906117ec565b905060006111918460000151600001518360200151846000015185604001516000611b33565b90506102dc8161152c565b6000816000036111b55750670de0b6b3a7640000610712565b826000036111c557506000610712565b600160ff1b831061120a5760405162461bcd60e51b815260206004820152600f60248201526e78206f7574206f6620626f756e647360881b60448201526064016105d9565b82770bce5086492111aea88f4bb1ca6bcf584181ea8059f7653283106112645760405162461bcd60e51b815260206004820152600f60248201526e79206f7574206f6620626f756e647360881b60448201526064016105d9565b826000670c7d713b49da0000831380156112855750670f43fc2c04ee000083125b156112bc57600061129584611bf0565b9050670de0b6b3a764000080820784020583670de0b6b3a7640000830502019150506112ca565b816112c684611d0f565b0290505b670de0b6b3a76400009005680238fd42c5cf03ffff1981128015906112f8575068070c1cc73b00c800008113155b61133c5760405162461bcd60e51b815260206004820152601560248201527470726f64756374206f7574206f6620626f756e647360581b60448201526064016105d9565b610c30816120b2565b60006102dc8361135586856124c7565b61252c565b60008082136113715761136c826134fe565b610712565b5090565b6000806113828385613489565b9050670de0b6b3a764000081610c60565b6000816000036113a5576113a5613473565b600182126113bb57816113b78161351a565b9250505b6107ef6113cb84606001516114cf565b6113d59084613532565b61152c565b600081158015906113fa575060a08301516113f6906002613489565b8214155b61140657611406613473565b600061141184612563565b905061141e600282613433565b6114288483613489565b85516114349190613447565b6102dc9190613447565b60208201516000906107ef90836115eb565b602082015160408301518351600092839261146e92919086906115c2565b50509050600061148b82866020015161259490919063ffffffff16565b90506000611499828661340a565b6020870151909150610c3090826115eb565b6020820151604083015183516000926114c59285906110fe565b5090949350505050565b60006001600160ff1b0382111561137157600080fd5b6000818312156115225760405162461bcd60e51b81526020600482015260086024820152676e6567617469766560c01b60448201526064016105d9565b6107ef828461355a565b60008082121561137157600080fd5b60008284101580156102dc57506115638361155e84670de0b6b3a7640000613447565b611375565b909311159392505050565b60008284111580156102dc57506115918361155e84670de0b6b3a764000061340a565b909310159392505050565b602081015160408201518251600092610712926115ba9291906117ec565b8351516125a1565b6000806000806000806115d98a8a6111158b6114cf565b92509250925061112a6113d584612639565b60006107ef8383612647565b825160a001516040840151600091116116515760405162461bcd60e51b815260206004820152601c60248201527b13585c9ad95d115e1d131a588e88195e1c1a5c9959081b585c9ad95d60221b60448201526064016105d9565b83516040015160001261169d5760405162461bcd60e51b815260206004820152601460248201527304d61726b65744578744c69623a204c50203c20360641b60448201526064016105d9565b60006116a8846114cf565b905060006116b5846114cf565b90506000806000808960000151600001518a6000015160400151866116da91906134a0565b6116e491906134d0565b8a51602081015160409091015191925060009161170190896134a0565b61170b91906134d0565b905080821215611746578a51604081015160209091015192955086945085926117359084906134a0565b61173f91906134d0565b925061176f565b8a516040810151905191955087935085916117629083906134a0565b61176c91906134d0565b93505b828b600001516020018181516117859190613532565b9052508a51805185919061179a908390613532565b9052508a5160400180518691906117b2908390613532565b9052506117be8561152c565b9b9a5050505050505050505050565b6000670de0b6b3a76400006117e28484613489565b6107ef9190613433565b6118176040518060800160405280600081526020016000815260200160008152602001600081525090565b60a0840151821061183b5760405163b2094b5960e01b815260040160405180910390fd5b6000828560a0015161184d919061340a565b9050611859858261265c565b8252602085015161186b9085906126bd565b60208301528451158061188057506020820151155b156118ae578451602083015160405163b1c4aefb60e01b8152600481019290925260248201526044016105d9565b6118cc856000015186610100015184602001518560000151856126f4565b604083015260c08501516118e09082612775565b6060830152509392505050565b60008183116118fc57816107ef565b5090919050565b6000806000905060006001846020015161191d919061340a565b90505b80821461197f57600060026119358385613447565b611940906001613447565b61194a9190613433565b9050600061195d868860000151846127a9565b12156119755761196e60018261340a565b9150611979565b8092505b50611920565b509392505050565b60008183106118fc57816107ef565b6020810151815111806119b45750670de0b6b3a76400008160800151115b156119e157805160208201516080830151604051632cc06bc160e21b81526105d9939291906004016133de565b50565b6000811580156119f75750604083015115155b15611a0757506040820151610712565b6020830151835111611a375760208301518351600291611a2691613447565b611a309190613433565b9050610712565b604051637d388ed960e11b815260040160405180910390fd5b60008080808080611a6e8989611a658a6134fe565b8d92919061289b565b919c909b50909950975050505050505050565b6000611a8c826114cf565b610712906000196134a0565b6000806000611aab8760a0015185101590565b15611ac95760405163b2094b5960e01b815260040160405180910390fd5b86518512611af7578651604051632185509b60e21b81526004810191909152602481018690526044016105d9565b6000611b048888876117ec565b9050611b128882898961289b565b91955093509150611b288882898988878b6129ef565b509450945094915050565b600080611b4087846114e5565b90506000611b58611b51888a613532565b8390612a81565b9050670d529ae9e8600000811315611b9457604051637e34684f60e11b815260048101829052670d529ae9e860000060248201526044016105d9565b6000611b9f82612ab0565b905085611bac8289612a81565b611bb69190613532565b9350670de0b6b3a7640000841215611be45760405163329e322960e21b8152600481018590526024016105d9565b50505095945050505050565b670de0b6b3a7640000026000806a0c097ce7bc90715b34b9f160241b808401906ec097ce7bc90715b34b9f0fffffffff1985010281611c3157611c3161341d565b05905060006a0c097ce7bc90715b34b9f160241b82800205905081806a0c097ce7bc90715b34b9f160241b81840205915060038205016a0c097ce7bc90715b34b9f160241b82840205915060058205016a0c097ce7bc90715b34b9f160241b82840205915060078205016a0c097ce7bc90715b34b9f160241b82840205915060098205016a0c097ce7bc90715b34b9f160241b828402059150600b8205016a0c097ce7bc90715b34b9f160241b828402059150600d8205016a0c097ce7bc90715b34b9f160241b828402059150600f82050160020295945050505050565b6000670de0b6b3a7640000821215611d5057611d47826a0c097ce7bc90715b34b9f160241b81611d4157611d4161341d565b05611d0f565b60000392915050565b6000775803bcc5cb9634ba4cfb2213f784019318ed4dcb6017880f60361b8312611d9b5772195e54c5dd42177f53a27172fa9ec63026282760241b830592506806f05b59d3b2000000015b6f8bcc0026baae9e45e470190267a230cf60191b8312611dd2576b1425982cf597cd205cef7380830592506803782dace9d9000000015b606492830292026e01855144814a7ff805980ff00840008312611e1a576e01855144814a7ff805980ff008400068056bc75e2d63100000840205925068ad78ebc5ac62000000015b6b02df0ab5a80a22c61ab5a7008312611e55576b02df0ab5a80a22c61ab5a70068056bc75e2d6310000084020592506856bc75e2d631000000015b693f1fce3da636ea5cf8508312611e8c57693f1fce3da636ea5cf85068056bc75e2d631000008402059250682b5e3af16b18800000015b690127fa27722cc06cc5e28312611ec357690127fa27722cc06cc5e268056bc75e2d6310000084020592506815af1d78b58c400000015b68280e60114edb805d038312611ef85768280e60114edb805d0368056bc75e2d631000008402059250680ad78ebc5ac6200000015b680ebc5fb417461211108312611f2357680ebc5fb4174612111068056bc75e2d631000009384020592015b6808f00f760a4b2db55d8312611f58576808f00f760a4b2db55d68056bc75e2d6310000084020592506802b5e3af16b1880000015b6806f5f17757889379378312611f8d576806f5f177578893793768056bc75e2d63100000840205925068015af1d78b58c40000015b6806248f33704b2866038312611fc1576806248f33704b28660368056bc75e2d63100000840205925067ad78ebc5ac620000015b6805c548670b9510e7ac8312611ff5576805c548670b9510e7ac68056bc75e2d6310000084020592506756bc75e2d6310000015b600068056bc75e2d63100000840168056bc75e2d63100000808603028161201e5761201e61341d565b059050600068056bc75e2d63100000828002059050818068056bc75e2d63100000818402059150600382050168056bc75e2d63100000828402059150600582050168056bc75e2d63100000828402059150600782050168056bc75e2d63100000828402059150600982050168056bc75e2d63100000828402059150600b820501600202606485820105979650505050505050565b6000680238fd42c5cf03ffff1982121580156120d7575068070c1cc73b00c800008213155b6121165760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a5908195e1c1bdb995b9d60821b60448201526064016105d9565b600082121561214e5761212b826000036120b2565b6a0c097ce7bc90715b34b9f160241b816121475761214761341d565b0592915050565b60006806f05b59d3b2000000831261218c57506806f05b59d3b1ffffff199091019072195e54c5dd42177f53a27172fa9ec63026282760241b6121c2565b6803782dace9d900000083126121be57506803782dace9d8ffffff19909101906b1425982cf597cd205cef73806121c2565b5060015b6064929092029168056bc75e2d6310000068ad78ebc5ac6200000084126122125768ad78ebc5ac61ffffff199093019268056bc75e2d631000006e01855144814a7ff805980ff008400082020590505b6856bc75e2d631000000841261224e576856bc75e2d630ffffff199093019268056bc75e2d631000006b02df0ab5a80a22c61ab5a70082020590505b682b5e3af16b18800000841261228857682b5e3af16b187fffff199093019268056bc75e2d63100000693f1fce3da636ea5cf85082020590505b6815af1d78b58c40000084126122c2576815af1d78b58c3fffff199093019268056bc75e2d63100000690127fa27722cc06cc5e282020590505b680ad78ebc5ac620000084126122fb57680ad78ebc5ac61fffff199093019268056bc75e2d6310000068280e60114edb805d0382020590505b68056bc75e2d6310000084126123345768056bc75e2d630fffff199093019268056bc75e2d63100000680ebc5fb4174612111082020590505b6802b5e3af16b1880000841261236d576802b5e3af16b187ffff199093019268056bc75e2d631000006808f00f760a4b2db55d82020590505b68015af1d78b58c4000084126123a65768015af1d78b58c3ffff199093019268056bc75e2d631000006806f5f177578893793782020590505b68056bc75e2d631000008481019085906002908280020505918201919050600368056bc75e2d631000008783020505918201919050600468056bc75e2d631000008783020505918201919050600568056bc75e2d631000008783020505918201919050600668056bc75e2d631000008783020505918201919050600768056bc75e2d631000008783020505918201919050600868056bc75e2d631000008783020505918201919050600968056bc75e2d631000008783020505918201919050600a68056bc75e2d631000008783020505918201919050600b68056bc75e2d631000008783020505918201919050600c68056bc75e2d631000008783020505918201919050606468056bc75e2d63100000848402058502059695505050505050565b81516000908210156124db57506000610712565b82602001518211156125025760a08301516124f7906002613489565b611a30906001613447565b61250b83612563565b8351612517908461340a565b6125219190613433565b6107ef906001613447565b60008061253c84606001516114cf565b612545846114cf565b61254f919061355a565b9050600181126107ef57806106e881613581565b60008160a00151600283600001518460200151612580919061340a565b61258a9190613433565b6107129190613489565b6000826102dc8184612b03565b6000806125ce6125c98560000151866040015187606001516125c3919061355a565b90612b2f565b6120b2565b905060006125e7611b51670de0b6b3a764000084613532565b905060006126058660200151866125fe9190613532565b8390612b2f565b90506000612613828761355a565b90506103e8612624826103e7613489565b61262e9190613433565b979650505050505050565b6000610712826000196134a0565b6000826117e2670de0b6b3a764000084613489565b6000612667826114cf565b61267e6126796201518061016d613489565b6114cf565b846080015161268d91906134a0565b61269791906134d0565b90506000811361071257604051630e520c3b60e11b8152600481018290526024016105d9565b600080600083126126cf5760016126d3565b6000195b90506126ea612679856126e58661135a565b6117cd565b6102dc90826134a0565b6000806127018684612775565b9050670de0b6b3a764000081121561272f5760405163329e322960e21b8152600481018290526024016105d9565b600061274561273e878a613532565b8990612a81565b9050600061275282612ab0565b905061275e8187612a81565b612768908461355a565b9998505050505050505050565b6000806127876201518061016d613489565b6127918486613489565b61279b9190613433565b90506102dc6125c9826114cf565b6000808285602001516127bc919061355a565b905060006127ca8585613532565b90506000821380156127dc5750600081135b61281d5760405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a59081c1d151bd3585c9ad95d60721b60448201526064016105d9565b600061284b61282c84846134a0565b602089015161283b9089613532565b61284590886134a0565b90612a81565b9050600061286161285c8486612a81565b612b4d565b885190915060009061287c90670de0b6b3a764000090612a81565b905061288c816125c3848661355a565b8960400151612768919061355a565b6000806000806128be8860000151886020015189600001518a6040015189611b33565b905060006128d46128cf8784612a81565b612639565b606089015190915060008713156129435760006128f18483612a81565b9050670de0b6b3a764000081121561291f5760405163329e322960e21b8152600481018290526024016105d9565b61293b61293483670de0b6b3a764000061355a565b8490612b2f565b915050612970565b61296d8161295981670de0b6b3a764000061355a565b61296390856134a0565b6128cf91906134d0565b90505b600060646129818c60e001516114cf565b61298b90846134a0565b61299591906134d0565b905060006129a3838561355a565b9050600081126129bc576129b78a82612bde565b6129c6565b6129c68a82612c0b565b97506129d28a84612bde565b96506129de8a83612bde565b955050505050509450945094915050565b6000818860a00151612a01919061340a565b8851909150612a1090866114e5565b8852612a2a612a1f8486613532565b60208a0151906114e5565b602089018190528851612a4f91612a429089906126bd565b895160408b015185612c38565b6101008901819052600003612a7757604051635534d70f60e11b815260040160405180910390fd5b5050505050505050565b600080612a96670de0b6b3a7640000856134a0565b9050828181612aa757612aa761341d565b05949350505050565b6000670de0b6b3a76400008203612ada5760405163a9c8b14d60e01b815260040160405180910390fd5b6000612af8612af184670de0b6b3a764000061355a565b8490612a81565b90506107ef81612b4d565b6000670de0b6b3a7640000600181612b1b8686613489565b612b259190613447565b6117e2919061340a565b600080612b3c83856134a0565b9050670de0b6b3a764000081612aa7565b6000808213612b8e5760405162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b60448201526064016105d9565b670c7d713b49da000082138015612bac5750670f43fc2c04ee000082125b15612bd057670de0b6b3a7640000612bc383611bf0565b816121475761214761341d565b61071282611d0f565b919050565b60008060008312612bf0576001612bf4565b6000195b90506126ea61267985612c068661135a565b612647565b60008060008312612c1d576001612c21565b6000195b90506126ea61267985612c338661135a565b612c7f565b600080612c49878787876000611b33565b90506000612c596113d583612b4d565b905083612c6b6201518061016d613489565b612c759083613489565b6109dd9190613433565b600082600181612b1b670de0b6b3a764000086613489565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b6040518060600160405280612cd2612d15565b815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b60405180610120016040528060008152602001600081526020016000815260200160006001600160a01b0316815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051608081016001600160401b0381118282101715612d9a57634e487b7160e01b600052604160045260246000fd5b60405290565b604051606081016001600160401b0381118282101715612d9a57634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b0381118282101715612d9a57634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b0381118282101715612d9a57634e487b7160e01b600052604160045260246000fd5b600060808284031215612e4357600080fd5b612e4b612d6a565b90508135815260208201356020820152604082013560408201526060820135606082015292915050565b6001600160a01b03811681146119e157600080fd5b8035612bd981612e75565b6000818303610160811215612ea957600080fd5b612eb1612da0565b915061012080821215612ec357600080fd5b612ecb612dd0565b9150833582526020840135602083015260408401356040830152612ef160608501612e8a565b60608301526080840135608083015260a084013560a083015260c084013560c083015260e084013560e08301526101008085013581840152508183528084013560208401525050610140820135604082015292915050565b60008183036102a0811215612f5d57600080fd5b612f65612da0565b9150612f718484612e31565b8252612f808460808501612e95565b602083015260c06101df1982011215612f9857600080fd5b50612fa1612e01565b6101e08301358152610200830135602082015261022083013560408201526102408301356060820152610260830135608082015261028083013560a08201528060408301525092915050565b803560038110612bd957600080fd5b600060a0828403121561300e57600080fd5b60405160a081016001600160401b038111828210171561303e57634e487b7160e01b600052604160045260246000fd5b806040525080915082358152602083013560208201526040830135604082015260608301356060820152608083013560808201525092915050565b600080600080610380858703121561309057600080fd5b61309a8686612f49565b93506130a96102a08601612fed565b92506102c085013591506130c1866102e08701612ffc565b905092959194509250565b60008060008061024085870312156130e357600080fd5b6130ed8686612e95565b93506130fc6101608601612fed565b925061018085013591506130c1866101a08701612ffc565b60006020828403121561312657600080fd5b81356107ef81612e75565b634e487b7160e01b600052602160045260246000fd5b815160808201906003811061316c57634e487b7160e01b600052602160045260246000fd5b8083525060208301516020830152604083015160408301526060830151606083015292915050565b6000806101e083850312156131a857600080fd5b6131b28484612e31565b91506131c18460808501612e95565b90509250929050565b600080600080600061042086880312156131e357600080fd5b6131ed8787612f49565b94506131fc6102a08701612fed565b93506102c08601359250613214876102e08801612ffc565b9150613224876103808801612ffc565b90509295509295909350565b60006102a0828403121561324357600080fd5b6107ef8383612f49565b8051612bd981612e75565b600060c0828403121561326a57600080fd5b613272612e01565b9050815181526020820151602082015260408201516040820152606082015160608201526080820151608082015260a082015160a082015292915050565b60008183036102a08112156132c457600080fd5b6132cc612da0565b60808212156132da57600080fd5b6132e2612d6a565b8451815260208501516020820152604085015160408201526060850151606082015280825250607f19820191506101608083121561331f57600080fd5b613327612da0565b6101208085121561333757600080fd5b61333f612dd0565b94506080870151855260a0870151602086015260c0870151604086015261336860e0880161324d565b60608601526101008088015160808701528188015160a087015261014088015160c08701528388015160e08701526101808801518187015250508381526101a086015160208201526101c0860151604082015280602084015250506133d1856101e08601613258565b6040820152949350505050565b9283526020830191909152604082015260600190565b634e487b7160e01b600052601160045260246000fd5b81810381811115610712576107126133f4565b634e487b7160e01b600052601260045260246000fd5b6000826134425761344261341d565b500490565b80820180821115610712576107126133f4565b60006001820161346c5761346c6133f4565b5060010190565b634e487b7160e01b600052600160045260246000fd5b8082028115828204841417610712576107126133f4565b80820260008212600160ff1b841416156134bc576134bc6133f4565b8181058314821517610712576107126133f4565b6000826134df576134df61341d565b600160ff1b8214600019841416156134f9576134f96133f4565b500590565b6000600160ff1b8201613513576135136133f4565b5060000390565b60006001600160ff1b01820161346c5761346c6133f4565b8082018281126000831280158216821582161715613552576135526133f4565b505092915050565b818103600083128015838313168383128216171561357a5761357a6133f4565b5092915050565b6000600160ff1b8201613596576135966133f4565b50600019019056fea26469706673582212206b14e8332aa1741158eb23a791a6e1d3a2e1b3ac6096d642d49b11fe8a5a00b764736f6c63430008110033";
1075
1144
 
1076
1145
  type BotDecisionHelperConstructorParams =
1077
1146
  | [signer?: Signer]