@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
@@ -116,6 +116,19 @@ const _abi = [
116
116
  name: "SYZeroRedeem",
117
117
  type: "error",
118
118
  },
119
+ {
120
+ anonymous: false,
121
+ inputs: [
122
+ {
123
+ indexed: true,
124
+ internalType: "address",
125
+ name: "token",
126
+ type: "address",
127
+ },
128
+ ],
129
+ name: "AddExternalRewardToken",
130
+ type: "event",
131
+ },
119
132
  {
120
133
  anonymous: false,
121
134
  inputs: [
@@ -285,6 +298,19 @@ const _abi = [
285
298
  name: "Redeem",
286
299
  type: "event",
287
300
  },
301
+ {
302
+ anonymous: false,
303
+ inputs: [
304
+ {
305
+ indexed: false,
306
+ internalType: "uint256",
307
+ name: "newEps",
308
+ type: "uint256",
309
+ },
310
+ ],
311
+ name: "SetNewBinarySearchEps",
312
+ type: "event",
313
+ },
288
314
  {
289
315
  anonymous: false,
290
316
  inputs: [
@@ -368,6 +394,19 @@ const _abi = [
368
394
  stateMutability: "view",
369
395
  type: "function",
370
396
  },
397
+ {
398
+ inputs: [
399
+ {
400
+ internalType: "address",
401
+ name: "token",
402
+ type: "address",
403
+ },
404
+ ],
405
+ name: "addExternalRewardToken",
406
+ outputs: [],
407
+ stateMutability: "nonpayable",
408
+ type: "function",
409
+ },
371
410
  {
372
411
  inputs: [
373
412
  {
@@ -458,6 +497,19 @@ const _abi = [
458
497
  stateMutability: "view",
459
498
  type: "function",
460
499
  },
500
+ {
501
+ inputs: [],
502
+ name: "binarySearchEps",
503
+ outputs: [
504
+ {
505
+ internalType: "uint256",
506
+ name: "",
507
+ type: "uint256",
508
+ },
509
+ ],
510
+ stateMutability: "view",
511
+ type: "function",
512
+ },
461
513
  {
462
514
  inputs: [],
463
515
  name: "claimOwnership",
@@ -570,6 +622,25 @@ const _abi = [
570
622
  stateMutability: "view",
571
623
  type: "function",
572
624
  },
625
+ {
626
+ inputs: [
627
+ {
628
+ internalType: "uint256",
629
+ name: "",
630
+ type: "uint256",
631
+ },
632
+ ],
633
+ name: "externalRewardTokens",
634
+ outputs: [
635
+ {
636
+ internalType: "address",
637
+ name: "",
638
+ type: "address",
639
+ },
640
+ ],
641
+ stateMutability: "view",
642
+ type: "function",
643
+ },
573
644
  {
574
645
  inputs: [],
575
646
  name: "factory",
@@ -996,6 +1067,19 @@ const _abi = [
996
1067
  stateMutability: "view",
997
1068
  type: "function",
998
1069
  },
1070
+ {
1071
+ inputs: [
1072
+ {
1073
+ internalType: "uint256",
1074
+ name: "newEps",
1075
+ type: "uint256",
1076
+ },
1077
+ ],
1078
+ name: "setBinarySearchEps",
1079
+ outputs: [],
1080
+ stateMutability: "nonpayable",
1081
+ type: "function",
1082
+ },
999
1083
  {
1000
1084
  inputs: [],
1001
1085
  name: "symbol",
@@ -1180,7 +1264,7 @@ const _abi = [
1180
1264
  ];
1181
1265
 
1182
1266
  const _bytecode =
1183
- "0x6102e06040523480156200001257600080fd5b5060405162005b6838038062005b6883398101604081905262000035916200096f565b8787878282828b8b8b8585856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200007f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000a5919062000a57565b6040805180820190915260018152603160f81b602082015283908184846003620000d0848262000b12565b506004620000df838262000b12565b5060ff166080525050600280546001600160f81b0316600160f81b17905581516020808401919091208251918301919091206101008290526101208190524660c0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620001928184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b60a0523060e05261014052505050506001600160a01b038581166101605286811661018081905290851661024052604080516309047bdd60e01b815290519194506309047bdd935060048082019350602092918290030181865afa158015620001ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000225919062000bde565b15156101a081151581525050610180516001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000273573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000299919062000c02565b6001600160a01b03166101c0816001600160a01b031681525050610180516001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031b919062000c02565b6001600160a01b03166101e0816001600160a01b0316815250506101c0516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000377573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039d919062000a57565b620003aa90600a62000d37565b61020081815250506101e0516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041a919062000a57565b6200042790600a62000d37565b610220526101c051610240516200043f919062000602565b620004576101e051610240516200060260201b60201c565b6200046f61018051610240516200060260201b60201c565b50506038805460ff1916905550600754600160a81b900460ff1615808015620004a557506007546001600160a01b90910460ff16105b80620004dc5750620004c230620006d160201b620017bd1760201c565b158015620004dc5750600754600160a01b900460ff166001145b620005455760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6007805460ff60a01b1916600160a01b179055801562000573576007805460ff60a81b1916600160a81b1790555b6001600160a01b038216610260526200058b620006e0565b8015620005d4576007805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050506001600160a01b039586166102a0525050505091811661028052166102c0525062000db59350505050565b6001600160a01b03821662000615575050565b6200062960026001600160601b0362000d48565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526001600160601b03929092169184169063dd62ed3e90604401602060405180830381865afa15801562000683573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006a9919062000d7d565b1015620006cd57620006be8282600062000763565b620006cd828260001962000763565b5050565b6001600160a01b03163b151590565b600754600160a81b900460ff166200074f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016200053c565b600680546001600160a01b03191633179055565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b1790529151600092839290871691620007c1919062000d97565b6000604051808303816000865af19150503d806000811462000800576040519150601f19603f3d011682016040523d82523d6000602084013e62000805565b606091505b5091509150818015620008335750805115806200083357508080602001905181019062000833919062000bde565b620008705760405162461bcd60e51b815260206004820152600c60248201526b5361666520417070726f766560a01b60448201526064016200053c565b5050505050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620008aa57818101518382015260200162000890565b50506000910152565b600082601f830112620008c557600080fd5b81516001600160401b0380821115620008e257620008e262000877565b604051601f8301601f19908116603f011681019082821181831017156200090d576200090d62000877565b816040528381528660208588010111156200092757600080fd5b6200093a8460208301602089016200088d565b9695505050505050565b6001600160a01b03811681146200095a57600080fd5b50565b80516200096a8162000944565b919050565b600080600080600080600080610100898b0312156200098d57600080fd5b88516001600160401b0380821115620009a557600080fd5b620009b38c838d01620008b3565b995060208b0151915080821115620009ca57600080fd5b50620009d98b828c01620008b3565b9750506040890151620009ec8162000944565b60608a0151909650620009ff8162000944565b60808a015190955062000a128162000944565b60a08a015190945062000a258162000944565b60c08a015190935062000a388162000944565b915062000a4860e08a016200095d565b90509295985092959890939650565b60006020828403121562000a6a57600080fd5b815160ff8116811462000a7c57600080fd5b9392505050565b600181811c9082168062000a9857607f821691505b60208210810362000ab957634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000b0d57600081815260208120601f850160051c8101602086101562000ae85750805b601f850160051c820191505b8181101562000b095782815560010162000af4565b5050505b505050565b81516001600160401b0381111562000b2e5762000b2e62000877565b62000b468162000b3f845462000a83565b8462000abf565b602080601f83116001811462000b7e576000841562000b655750858301515b600019600386901b1c1916600185901b17855562000b09565b600085815260208120601f198616915b8281101562000baf5788860151825594840194600190910190840162000b8e565b508582101562000bce5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000bf157600080fd5b8151801515811462000a7c57600080fd5b60006020828403121562000c1557600080fd5b815162000a7c8162000944565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000c7957816000190482111562000c5d5762000c5d62000c22565b8085161562000c6b57918102915b93841c939080029062000c3d565b509250929050565b60008262000c925750600162000d31565b8162000ca15750600062000d31565b816001811462000cba576002811462000cc55762000ce5565b600191505062000d31565b60ff84111562000cd95762000cd962000c22565b50506001821b62000d31565b5060208310610133831016604e8410600b841016171562000d0a575081810a62000d31565b62000d16838362000c38565b806000190482111562000d2d5762000d2d62000c22565b0290505b92915050565b600062000a7c60ff84168362000c81565b60006001600160601b038381168062000d7157634e487b7160e01b600052601260045260246000fd5b92169190910492915050565b60006020828403121562000d9057600080fd5b5051919050565b6000825162000dab8184602087016200088d565b9190910192915050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c051614b8462000fe460003960008181610250015281816121ab015261228301526000818161041b01526119150152600081816106fd0152818161292b015281816129ac01528181612a3501528181612aa401528181612b2501528181612bad0152613177015260006105b301526000818161092e015281816134fd0152818161362201526137950152600081816106a50152613cc10152600081816106070152613c9b01526000818161082401528181610a6f015281816111b801528181612ccb0152818161340501528181613481015281816135ac015281816136fc0152613ce801526000818161036401528181610a1b0152818161117d01528181612c8f01528181612d080152818161336d015281816133c401528181613459015281816135840152818161369d01526136d6015260008181610300015281816134a9015281816135d40152818161375e0152613b4d01526000818161073101528181610ac3015281816111f401528181611295015281816112b6015281816119ba015281816120b7015281816121560152818161222e01528181613b280152613c040152600081816107bb0152613b8c01526000611e4901526000611e9801526000611e7301526000611dcc01526000611df601526000611e200152600061044f0152614b846000f3fe6080604052600436106102325760003560e01c80630390c8391461023e57806306fdde0314610288578063071bc3c9146102aa578063078dfbe7146102cc57806309047bdd146102ee578063095ea7b3146103325780630dfe168114610352578063128fced11461038657806318160ddd146103b357806320e8c565146103d6578063213cae63146102aa57806323b872dd146103e95780632ba14d6314610409578063313ce5671461043d5780633644e515146104835780633ba0b9a9146104985780633f4ba83a146104b35780634e71e0c8146104c85780635c975abb146104dd5780635cbadbe4146104f557806370a0823114610561578063769f8e5d1461058157806376d5de85146105a1578063784367d6146105d55780637bdd6b44146105f55780637ecebe00146106295780638456cb59146106495780638da5cb5b1461065e57806395d89b411461067e578063a28af8a414610693578063a40bee50146106c7578063a6f19c84146106eb578063a8aa1b311461071f578063a9059cbb14610753578063a9f8d18114610773578063b8f82b2614610789578063c45a0155146107a9578063c4f59f9b146107dd578063cbe52ae3146107f2578063d21220a714610812578063d505accf14610846578063da88ecb414610866578063dd62ed3e1461087b578063e30c39781461089b578063ea64a820146108bb578063ef5cfb8c146108fc578063f887ea401461091c578063f8b2f99114610950578063fa5a4f06146105d557600080fd5b3661023957005b600080fd5b34801561024a57600080fd5b506102727f000000000000000000000000000000000000000000000000000000000000000081565b60405161027f91906143ab565b60405180910390f35b34801561029457600080fd5b5061029d610965565b60405161027f91906143e3565b3480156102b657600080fd5b506102bf6109f7565b60405161027f919061445a565b3480156102d857600080fd5b506102ec6102e7366004614492565b610b18565b005b3480156102fa57600080fd5b506103227f000000000000000000000000000000000000000000000000000000000000000081565b604051901515815260200161027f565b34801561033e57600080fd5b5061032261034d3660046144db565b610c1e565b34801561035e57600080fd5b506102727f000000000000000000000000000000000000000000000000000000000000000081565b34801561039257600080fd5b506103a66103a1366004614505565b610c38565b60405161027f9190614550565b3480156103bf57600080fd5b506103c8610d44565b60405190815260200161027f565b6103c86103e4366004614563565b610d53565b3480156103f557600080fd5b506103226104043660046145a5565b610e9c565b34801561041557600080fd5b506102727f000000000000000000000000000000000000000000000000000000000000000081565b34801561044957600080fd5b506104717f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161027f565b34801561048f57600080fd5b506103c8610f1a565b3480156104a457600080fd5b50670de0b6b3a76400006103c8565b3480156104bf57600080fd5b506102ec610f29565b3480156104d457600080fd5b506102ec610f5d565b3480156104e957600080fd5b5060385460ff16610322565b34801561050157600080fd5b506105416105103660046145e1565b60396020908152600092835260408084209091529082529020546001600160801b0380821691600160801b90041682565b604080516001600160801b0393841681529290911660208301520161027f565b34801561056d57600080fd5b506103c861057c366004614505565b611009565b34801561058d57600080fd5b506103c861059c366004614614565b611024565b3480156105ad57600080fd5b506102727f000000000000000000000000000000000000000000000000000000000000000081565b3480156105e157600080fd5b506103226105f0366004614505565b611179565b34801561060157600080fd5b506103c87f000000000000000000000000000000000000000000000000000000000000000081565b34801561063557600080fd5b506103c8610644366004614505565b61122d565b34801561065557600080fd5b506102ec61124b565b34801561066a57600080fd5b50600654610272906001600160a01b031681565b34801561068a57600080fd5b5061029d61127d565b34801561069f57600080fd5b506103c87f000000000000000000000000000000000000000000000000000000000000000081565b3480156106d357600080fd5b506106dc61128c565b60405161027f93929190614685565b3480156106f757600080fd5b506102727f000000000000000000000000000000000000000000000000000000000000000081565b34801561072b57600080fd5b506102727f000000000000000000000000000000000000000000000000000000000000000081565b34801561075f57600080fd5b5061032261076e3660046144db565b611341565b34801561077f57600080fd5b506103c8603a5481565b34801561079557600080fd5b506103c86107a43660046144db565b6113b3565b3480156107b557600080fd5b506102727f000000000000000000000000000000000000000000000000000000000000000081565b3480156107e957600080fd5b506102bf6113ee565b3480156107fe57600080fd5b506103c861080d3660046144db565b6113f8565b34801561081e57600080fd5b506102727f000000000000000000000000000000000000000000000000000000000000000081565b34801561085257600080fd5b506102ec6108613660046146d6565b61142c565b34801561087257600080fd5b506103a6611590565b34801561088757600080fd5b506103c86108963660046145e1565b611661565b3480156108a757600080fd5b50600754610272906001600160a01b031681565b3480156108c757600080fd5b506105416108d6366004614505565b603b602052600090815260409020546001600160801b0380821691600160801b90041682565b34801561090857600080fd5b506103a6610917366004614505565b61168c565b34801561092857600080fd5b506102727f000000000000000000000000000000000000000000000000000000000000000081565b34801561095c57600080fd5b506103a661174b565b60606003805461097490614743565b80601f01602080910402602001604051908101604052809291908181526020018280546109a090614743565b80156109ed5780601f106109c2576101008083540402835291602001916109ed565b820191906000526020600020905b8154815290600101906020018083116109d057829003601f168201915b5050505050905090565b604080516003808252608082019092526060916020820183803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610a4d57610a4d61478d565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610aa157610aa161478d565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600281518110610af557610af561478d565b60200260200101906001600160a01b031690816001600160a01b03168152505090565b6006546001600160a01b03163314610b4b5760405162461bcd60e51b8152600401610b42906147a3565b60405180910390fd5b8115610bfd576001600160a01b038316151580610b655750805b610ba95760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606401610b42565b6006546040516001600160a01b03808616921690600080516020614b0f83398151915290600090a3600680546001600160a01b0385166001600160a01b031991821617909155600780549091169055505050565b600780546001600160a01b0319166001600160a01b0385161790555b505050565b600033610c2c8185856117cc565b60019150505b92915050565b60606000610c446118f1565b905080516001600160401b03811115610c5f57610c5f614777565b604051908082528060200260200182016040528015610c88578160200160208202803683370190505b50915060005b8151811015610d3d5760396000838381518110610cad57610cad61478d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060000160109054906101000a90046001600160801b03166001600160801b0316838281518110610d2a57610d2a61478d565b6020908102919091010152600101610c8e565b5050919050565b6002546001600160f81b031690565b600254600090600119600160f81b90910460ff1601610d845760405162461bcd60e51b8152600401610b42906147d8565b600280546001600160f81b0316600160f91b179055610da284611179565b610dc157836040516315d57ce360e31b8152600401610b4291906143ab565b82600003610de257604051630a907f2f60e41b815260040160405180910390fd5b610ded843385611947565b610df784846119ae565b905081811015610e1e578082604051635e38f95d60e11b8152600401610b4292919061480f565b610e288582611a0d565b836001600160a01b0316856001600160a01b0316336001600160a01b03167f5fe47ed6d4225326d3303476197d782ded5a4e9c14f479dc9ec4992af4e85d598685604051610e7792919061480f565b60405180910390a4600280546001600160f81b0316600160f81b179055949350505050565b600254600090600119600160f81b90910460ff1601610ecd5760405162461bcd60e51b8152600401610b42906147d8565b600280546001600160f81b0316600160f91b17905533610eee858285611b23565b610ef9858585611b9d565b6001915050600280546001600160f81b0316600160f81b1790559392505050565b6000610f24611dbf565b905090565b6006546001600160a01b03163314610f535760405162461bcd60e51b8152600401610b42906147a3565b610f5b611ee6565b565b6007546001600160a01b0316338114610fb85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152606401610b42565b6006546040516001600160a01b03808416921690600080516020614b0f83398151915290600090a3600680546001600160a01b039092166001600160a01b0319928316179055600780549091169055565b6001600160a01b031660009081526020819052604090205490565b600254600090600119600160f81b90910460ff16016110555760405162461bcd60e51b8152600401610b42906147d8565b600280546001600160f81b0316600160f91b17905561107384611179565b61109257836040516388a5056160e01b8152600401610b4291906143ab565b846000036110b35760405163c3d83b0760e01b815260040160405180910390fd5b81156110c8576110c33086611f32565b6110d2565b6110d23386611f32565b6110dd8685876120ab565b9050828110156111045780836040516305ff726560e51b8152600401610b4292919061480f565b836001600160a01b0316866001600160a01b0316336001600160a01b03167faee47cdf925cf525fdae94f9777ee5a06cac37e1c41220d0a8a89ed154f62d1c888560405161115392919061480f565b60405180910390a4600280546001600160f81b0316600160f81b17905595945050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614806111ec57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b80610c3257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161492915050565b6001600160a01b038116600090815260056020526040812054610c32565b6006546001600160a01b031633146112755760405162461bcd60e51b8152600401610b42906147a3565b610f5b612115565b60606004805461097490614743565b600080600060017f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611312573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611336919061481d565b925092509250909192565b600254600090600119600160f81b90910460ff16016113725760405162461bcd60e51b8152600401610b42906147d8565b600280546001600160f81b0316600160f91b17905533611393818585611b9d565b6001915050600280546001600160f81b0316600160f81b17905592915050565b60006113be83611179565b6113dd57826040516315d57ce360e31b8152600401610b4291906143ab565b6113e78383612152565b9392505050565b6060610f246118f1565b600061140383611179565b61142257826040516388a5056160e01b8152600401610b4291906143ab565b6113e7838361222a565b8342111561147c5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610b42565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886114ab8c6122ba565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000611506826122e2565b9050600061151682878787612330565b9050896001600160a01b0316816001600160a01b0316146115795760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610b42565b6115848a8a8a6117cc565b50505050505050505050565b6060600061159c6118f1565b905080516001600160401b038111156115b7576115b7614777565b6040519080825280602002602001820160405280156115e0578160200160208202803683370190505b50915060005b815181101561165c57603b60008383815181106116055761160561478d565b6020908102919091018101516001600160a01b031682528101919091526040016000205483516001600160801b03909116908490839081106116495761164961478d565b60209081029190910101526001016115e6565b505090565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600254606090600119600160f81b90910460ff16016116bd5760405162461bcd60e51b8152600401610b42906147d8565b600280546001600160f81b0316600160f91b1790556116db82612358565b6116e58283612366565b9050816001600160a01b03167f2193aa20a3717f5f4ac79482f4f553e5f0afe8f4e6ec3e3d1aa2e138adc4763f61171a6118f1565b8360405161172992919061483a565b60405180910390a2600280546001600160f81b0316600160f81b179055919050565b600254606090600119600160f81b90910460ff160161177c5760405162461bcd60e51b8152600401610b42906147d8565b600280546001600160f81b0316600160f91b17905561179961260e565b50506117a3611590565b9050600280546001600160f81b0316600160f81b17905590565b6001600160a01b03163b151590565b6001600160a01b03831661182e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b42565b6001600160a01b03821661188f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b42565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b604080516001808252818301909252606091602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610af557610af561478d565b6001600160a01b03831661199357803414610c195760405162461bcd60e51b815260206004820152600c60248201526b0cae8d040dad2e6dac2e8c6d60a31b6044820152606401610b42565b8015610c1957610c196001600160a01b0384168330846128a9565b60006119b8612914565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316036119f8575080611a05565b611a028383612afd565b90505b610c32612b23565b6001600160a01b038216611a635760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610b42565b611a6f60008383612c06565b611a7881612c18565b60028054600090611a939084906001600160f81b0316614875565b92506101000a8154816001600160f81b0302191690836001600160f81b0316021790555080600080846001600160a01b03166001600160a01b031681526020019081526020016000206000828254611aeb919061489c565b90915550506040518181526001600160a01b03831690600090600080516020614b2f8339815191529060200160405180910390a35050565b6000611b2f8484611661565b90506000198114611b975781811015611b8a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610b42565b611b9784848484036117cc565b50505050565b6001600160a01b038316611c015760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b42565b6001600160a01b038216611c635760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b42565b816001600160a01b0316836001600160a01b031603611cbe5760405162461bcd60e51b815260206004820152601760248201527622a92199181d103a3930b739b332b9103a379039b2b63360491b6044820152606401610b42565b611cc9838383612c06565b6001600160a01b03831660009081526020819052604090205481811015611d415760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b42565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611d7890849061489c565b92505081905550826001600160a01b0316846001600160a01b0316600080516020614b2f83398151915284604051611db291815260200190565b60405180910390a3611b97565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015611e1857507f000000000000000000000000000000000000000000000000000000000000000046145b15611e4257507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b611eee612c32565b6038805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b604051611f2891906143ab565b60405180910390a1565b6001600160a01b038216611f925760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610b42565b611f9e82600083612c06565b6001600160a01b038216600090815260208190526040902054818110156120125760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610b42565b6001600160a01b0383166000908152602081905260409020828203905561203882612c18565b600280546000906120539084906001600160f81b03166148af565b92506101000a8154816001600160f81b0302191690836001600160f81b0316021790555060006001600160a01b0316836001600160a01b0316600080516020614b2f833981519152846040516118e491815260200190565b60006120b5612914565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316036120f5575080612102565b6120ff8383612c7b565b90505b61210d838583612d37565b6113e7612b23565b61211d612dfb565b6038805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611f1b3390565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031603612194575080610c32565b604051635c7c159360e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b8f82b26906121e290869086906004016148cf565b602060405180830381865afa1580156121ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061222391906148e8565b9050610c32565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03160361226c575080610c32565b60405163cbe52ae360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbe52ae3906121e290869086906004016148cf565b6001600160a01b03811660009081526005602052604090208054600181018255905b50919050565b6000610c326122ef611dbf565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b600080600061234187878787612e41565b9150915061234e81612f24565b5095945050505050565b6123638160006130d5565b50565b606060006123726118f1565b905080516001600160401b0381111561238d5761238d614777565b6040519080825280602002602001820160405280156123b6578160200160208202803683370190505b50915060005b815181101561260657603960008383815181106123db576123db61478d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000866001600160a01b03166001600160a01b0316815260200190815260200160002060000160109054906101000a90046001600160801b03166001600160801b03168382815181106124585761245861478d565b6020026020010181815250508281815181106124765761247661478d565b60200260200101516000146125f45760006039600084848151811061249d5761249d61478d565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000876001600160a01b03166001600160a01b0316815260200190815260200160002060000160106101000a8154816001600160801b0302191690836001600160801b031602179055506125318382815181106125245761252461478d565b6020026020010151613155565b603b60008484815181106125475761254761478d565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060000160108282829054906101000a90046001600160801b03166125939190614901565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506125f48282815181106125cc576125cc61478d565b6020026020010151858584815181106125e7576125e761478d565b6020026020010151612d37565b806125fe81614921565b9150506123bc565b505092915050565b6060806126196118f1565b915081516001600160401b0381111561263457612634614777565b60405190808252806020026020018201604052801561265d578160200160208202803683370190505b509050815160000361266d579091565b43603a54146128215743603a55600061268461316b565b905061268e613175565b60005b835181101561281e5760008482815181106126ae576126ae61478d565b6020908102919091018101516001600160a01b0381166000908152603b90925260408220548751919350600160801b90046001600160801b03169061270c908890869081106126ff576126ff61478d565b60200260200101516131d0565b612716919061493a565b6001600160a01b0383166000908152603b60205260408120549192506001600160801b0390911690819003612749575060015b841561276657612759828661325a565b612763908261489c565b90505b61276f81613155565b6001600160a01b0384166000908152603b6020526040902080546001600160801b0319166001600160801b03929092169190911790556127ae82613155565b6001600160a01b0384166000908152603b6020526040902080546010906127e6908490600160801b90046001600160801b031661494d565b92506101000a8154816001600160801b0302191690836001600160801b031602179055505050508061281790614921565b9050612691565b50505b60005b82518110156128a457603b60008483815181106128435761284361478d565b6020908102919091018101516001600160a01b031682528101919091526040016000205482516001600160801b03909116908390839081106128875761288761478d565b60209081029190910101528061289c81614921565b915050612824565b509091565b6040516001600160a01b0380851660248301528316604482015260648101829052611b979085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613289565b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906129609030906004016143ab565b602060405180830381865afa15801561297d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a191906148e8565b6000036129aa57565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663caa6fea46040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2e919061496d565b15612aa2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663db2e21bc6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612a8e57600080fd5b505af1158015611b97573d6000803e3d6000fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663853828b66040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612a8e57600080fd5b6000806000612b0c858561335b565b91509150612b1a8282613442565b95945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663caa6fea46040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612b83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ba7919061496d565b610f5b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de5f62686040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612a8e57600080fd5b612c0e612dfb565b610c1983836130d5565b60006001600160f81b03821115612c2e57600080fd5b5090565b60385460ff16610f5b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610b42565b6000806000612c898461356d565b915091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603612d0357612cf07f000000000000000000000000000000000000000000000000000000000000000082613698565b612cfa908361489c565b92505050610c32565b612d2d7f000000000000000000000000000000000000000000000000000000000000000083613698565b612cfa908261489c565b80600003612d4457505050565b6001600160a01b038316612de7576000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612d9f576040519150601f19603f3d011682016040523d82523d6000602084013e612da4565b606091505b5050905080611b975760405162461bcd60e51b815260206004820152600f60248201526e195d1a081cd95b990819985a5b1959608a1b6044820152606401610b42565b610c196001600160a01b038416838361381d565b60385460ff1615610f5b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610b42565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115612e6e5750600090506003612f1b565b8460ff16601b14158015612e8657508460ff16601c14155b15612e975750600090506004612f1b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612eeb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116612f1457600060019250925050612f1b565b9150600090505b94509492505050565b6000816004811115612f3857612f3861466f565b03612f405750565b6001816004811115612f5457612f5461466f565b03612f9c5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606401610b42565b6002816004811115612fb057612fb061466f565b03612ffd5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610b42565b60038160048111156130115761301161466f565b036130695760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610b42565b600481600481111561307d5761307d61466f565b036123635760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610b42565b6000806130e061260e565b9150915081516000036130f35750505050565b6001600160a01b0384161580159061311457506001600160a01b0384163014155b156131245761312484838361383c565b6001600160a01b0383161580159061314557506001600160a01b0383163014155b15611b9757611b9783838361383c565b60006001600160801b03821115612c2e57600080fd5b6000610f24610d44565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633d18b9126040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612a8e57600080fd5b60006001600160a01b03821615613253576040516370a0823160e01b81526001600160a01b038316906370a082319061320d9030906004016143ab565b602060405180830381865afa15801561322a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061324e91906148e8565b610c32565b4792915050565b60008061326f670de0b6b3a76400008561498a565b9050828181613280576132806149a1565b04949350505050565b60006132de826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613abc9092919063ffffffff16565b805190915015610c1957808060200190518101906132fc919061496d565b610c195760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610b42565b600080600061336985613ad3565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316036133f15760006133b1828787613d47565b90506133bd818661493a565b93506133e97f000000000000000000000000000000000000000000000000000000000000000082613698565b92505061343a565b60006133fe828787613d47565b905061342a7f000000000000000000000000000000000000000000000000000000000000000082613698565b9350613436818661493a565b9250505b509250929050565b604051635a47ddc360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f0000000000000000000000000000000000000000000000000000000000000000151560448301526064820184905260848201839052600060a4830181905260c483018190523060e484015242610104840152917f000000000000000000000000000000000000000000000000000000000000000090911690635a47ddc390610124016060604051808303816000875af1158015613549573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1a91906149b7565b60405163037b79b160e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f0000000000000000000000000000000000000000000000000000000000000000151560448301526064820183905260006084830181905260a483018190523060c48401524260e48401529182917f00000000000000000000000000000000000000000000000000000000000000001690630dede6c4906101040160408051808303816000875af115801561366b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061368f91906149e5565b91509150915091565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316146136fa577f000000000000000000000000000000000000000000000000000000000000000061371c565b7f00000000000000000000000000000000000000000000000000000000000000005b90506000613729826131d0565b6040516313dcfc5960e01b815260048101869052600060248201526001600160a01b03878116604483015284811660648301527f0000000000000000000000000000000000000000000000000000000000000000151560848301523060a48301524260c48301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906313dcfc599060e4016000604051808303816000875af11580156137e0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138089190810190614a09565b5080613813836131d0565b612b1a919061493a565b610c198363a9059cbb60e01b84846040516024016128dd9291906148cf565b6001600160a01b0383161580159061385d57506001600160a01b0383163014155b61386957613869614aba565b600061387484613d6c565b905060005b8351811015613ab55760008482815181106138965761389661478d565b6020026020010151905060008483815181106138b4576138b461478d565b6020908102919091018101516001600160a01b038085166000908152603984526040808220928c168252919093528220549092506001600160801b0316908190036139505761390282613155565b6001600160a01b039384166000908152603960209081526040808320968c1683529590529390932080546001600160801b0319166001600160801b039094169390931790925550613aa59050565b81810361395f57505050613aa5565b600061396b828461493a565b905060006139798783613d77565b6001600160a01b038681166000908152603960209081526040808320938f16835292905290812054919250906139c0908390600160801b90046001600160801b031661489c565b905060405180604001604052806139d687613155565b6001600160801b031681526020016139ed83613155565b6001600160801b031681525060396000886001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816001600160801b0302191690836001600160801b031602179055509050505050505050505b613aae81614921565b9050613879565b5050505050565b6060613acb8484600085613d95565b949350505050565b613b1e6040518060e0016040528060006001600160a01b0316815260200160001515815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000151560208301819052604051632895a2f560e11b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000009091169063512b45ea90602401602060405180830381865afa158015613bd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bf991906148e8565b8160800181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613c60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c8491906149b7565b5060608301526040820152602081015115613ce6577f000000000000000000000000000000000000000000000000000000000000000060a08201527f000000000000000000000000000000000000000000000000000000000000000060c08201525b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603613d4257606081018051604083018051909252905260c08101805160a08301805190925290525b919050565b60008360200151613d6157613d5c8483613ec4565b613acb565b613acb848484613fc5565b6000610c3282611009565b600080613d84838561498a565b9050670de0b6b3a764000081613280565b606082471015613df65760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610b42565b613dff856117bd565b613e4b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b42565b600080866001600160a01b03168587604051613e679190614ad0565b60006040518083038185875af1925050503d8060008114613ea4576040519150601f19603f3d011682016040523d82523d6000602084013e613ea9565b606091505b5091509150613eb9828286614138565b979650505050505050565b6000806127108460400151612710806002613edf919061498a565b613ee9919061493a565b613ef3919061498a565b613efd9190614aec565b90506000613f0a82614171565b90506000856040015185613f3a88608001516127106001613f2b919061498a565b613f35919061493a565b614171565b613f4590600461498a565b613f4f919061498a565b613f59919061498a565b9050600083613f70613f6b848661489c565b61417d565b613f7a919061493a565b90506000613f9588608001516127106001613f2b919061498a565b613fa090600261498a565b905080613faf6127108461498a565b613fb99190614aec565b98975050505050505050565b600080613fd283866141e6565b90505b60208101518151101561412f5780516020820151600291613ff59161489c565b613fff9190614aec565b6040828101829052865190516378a051ad60e11b815260048101929092526001600160a01b038681166024840152169063f140a35a90604401602060405180830381865afa158015614055573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061407991906148e8565b8160c001818152505061409981604001518660400151876080015161434b565b8160600181815250508060c0015185606001516140b6919061493a565b608082015260408101516140ca908461493a565b60a0820152606081015160c08201516140e3919061498a565b81608001518260a001516140f7919061498a565b1015614118576001816040015161410e919061493a565b6020820152613fd5565b604081015161412890600161489c565b8152613fd5565b51949350505050565b606083156141475750816113e7565b8251156141575782518084602001fd5b8160405162461bcd60e51b8152600401610b4291906143e3565b6000610c32828061498a565b600060038211156141d85750806000614197600283614aec565b6141a290600161489c565b90505b818110156122dc579050806002816141bd8186614aec565b6141c7919061489c565b6141d19190614aec565b90506141a5565b8115613d4257506001919050565b6142266040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60006142438360a00151846040015161325a90919063ffffffff16565b905060006142628460c00151856060015161325a90919063ffffffff16565b905061427b8460a001518661325a90919063ffffffff16565b9450600061429361428c878561489c565b839061325a565b905060006142c86142a48480613d77565b6142ae8680613d77565b6142b8919061489c565b6142c28686613d77565b90613d77565b90506000826142db816142c28180613d77565b6142e5919061489c565b60a088015190915061430e90866143046142ff868661325a565b614378565b6142c2919061493a565b865260808701516143219061271061493a565b8651614330906127109061498a565b61433a9190614aec565b602087015250939695505050505050565b600061271061435a838661498a565b6143649190614aec565b61436e858561489c565b613acb919061493a565b6000806143848361417d565b61439290633b9aca0061498a565b905061439d8161417d565b6113e790633b9aca0061498a565b6001600160a01b0391909116815260200190565b60005b838110156143da5781810151838201526020016143c2565b50506000910152565b60208152600082518060208401526144028160408501602087016143bf565b601f01601f19169190910160400192915050565b600081518084526020808501945080840160005b8381101561444f5781516001600160a01b03168752958201959082019060010161442a565b509495945050505050565b6020815260006113e76020830184614416565b80356001600160a01b0381168114613d4257600080fd5b801515811461236357600080fd5b6000806000606084860312156144a757600080fd5b6144b08461446d565b925060208401356144c081614484565b915060408401356144d081614484565b809150509250925092565b600080604083850312156144ee57600080fd5b6144f78361446d565b946020939093013593505050565b60006020828403121561451757600080fd5b6113e78261446d565b600081518084526020808501945080840160005b8381101561444f57815187529582019590820190600101614534565b6020815260006113e76020830184614520565b6000806000806080858703121561457957600080fd5b6145828561446d565b93506145906020860161446d565b93969395505050506040820135916060013590565b6000806000606084860312156145ba57600080fd5b6145c38461446d565b92506145d16020850161446d565b9150604084013590509250925092565b600080604083850312156145f457600080fd5b6145fd8361446d565b915061460b6020840161446d565b90509250929050565b600080600080600060a0868803121561462c57600080fd5b6146358661446d565b94506020860135935061464a6040870161446d565b925060608601359150608086013561466181614484565b809150509295509295909350565b634e487b7160e01b600052602160045260246000fd5b60608101600285106146a757634e487b7160e01b600052602160045260246000fd5b9381526001600160a01b0392909216602083015260ff1660409091015290565b60ff8116811461236357600080fd5b600080600080600080600060e0888a0312156146f157600080fd5b6146fa8861446d565b96506147086020890161446d565b955060408801359450606088013593506080880135614726816146c7565b9699959850939692959460a0840135945060c09093013592915050565b600181811c9082168061475757607f821691505b6020821081036122dc57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b918252602082015260400190565b60006020828403121561482f57600080fd5b81516113e7816146c7565b60408152600061484d6040830185614416565b8281036020840152612b1a8185614520565b634e487b7160e01b600052601160045260246000fd5b6001600160f81b038181168382160190808211156148955761489561485f565b5092915050565b80820180821115610c3257610c3261485f565b6001600160f81b038281168282160390808211156148955761489561485f565b6001600160a01b03929092168252602082015260400190565b6000602082840312156148fa57600080fd5b5051919050565b6001600160801b038281168282160390808211156148955761489561485f565b6000600182016149335761493361485f565b5060010190565b81810381811115610c3257610c3261485f565b6001600160801b038181168382160190808211156148955761489561485f565b60006020828403121561497f57600080fd5b81516113e781614484565b8082028115828204841417610c3257610c3261485f565b634e487b7160e01b600052601260045260246000fd5b6000806000606084860312156149cc57600080fd5b8351925060208401519150604084015190509250925092565b600080604083850312156149f857600080fd5b505080516020909101519092909150565b60006020808385031215614a1c57600080fd5b82516001600160401b0380821115614a3357600080fd5b818501915085601f830112614a4757600080fd5b815181811115614a5957614a59614777565b8060051b604051601f19603f83011681018181108582111715614a7e57614a7e614777565b604052918252848201925083810185019188831115614a9c57600080fd5b938501935b82851015613fb957845184529385019392850192614aa1565b634e487b7160e01b600052600160045260246000fd5b60008251614ae28184602087016143bf565b9190910192915050565b600082614b0957634e487b7160e01b600052601260045260246000fd5b50049056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f2d288cf87aa2230d91b5573addac7e013bebcf67348b65e5cda34e1476968f164736f6c63430008110033";
1267
+ "0x6102e0604052655af3107a40006006553480156200001c57600080fd5b5060405162005f9638038062005f968339810160408190526200003f916200098a565b8787878282828b8b8b8585856001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000089573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000af919062000a72565b6040805180820190915260018152603160f81b602082015283908184846003620000da848262000b2d565b506004620000e9838262000b2d565b5060ff166080525050600280546001600160f81b0316600160f81b17905581516020808401919091208251918301919091206101008290526101208190524660c0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6200019c8184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b60a0523060e05261014052505050506001600160a01b038581166101605286811661018081905290851661024052604080516309047bdd60e01b815290519194506309047bdd935060048082019350602092918290030181865afa15801562000209573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200022f919062000bf9565b15156101a081151581525050610180516001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a3919062000c1d565b6001600160a01b03166101c0816001600160a01b031681525050610180516001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000325919062000c1d565b6001600160a01b03166101e0816001600160a01b0316815250506101c0516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000381573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a7919062000a72565b620003b490600a62000d52565b61020081815250506101e0516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000424919062000a72565b6200043190600a62000d52565b610220526101c051610240516200044991906200061d565b620004616101e051610240516200061d60201b60201c565b6200047961018051610240516200061d60201b60201c565b50506039805460ff1916905550600854600160a81b900460ff1615808015620004af57506008546001600160a01b90910460ff16105b80620004e65750620004cc30620006ec60201b62001a391760201c565b158015620004e65750600854600160a01b900460ff166001145b6200054f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6008805460ff60a01b1916600160a01b17905580156200057d576008805460ff60a81b1916600160a81b1790555b6001600160a01b0382166102605262000595620006fb565b8015620005de576008805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050506001600160a01b038581166102a0528681166102805284166102c052506200060f9150879050846200061d565b505050505050505062000dd0565b6001600160a01b03821662000630575050565b6200064460026001600160601b0362000d63565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526001600160601b03929092169184169063dd62ed3e90604401602060405180830381865afa1580156200069e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006c4919062000d98565b1015620006e857620006d9828260006200077e565b620006e882826000196200077e565b5050565b6001600160a01b03163b151590565b600854600160a81b900460ff166200076a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162000546565b600780546001600160a01b03191633179055565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b1790529151600092839290871691620007dc919062000db2565b6000604051808303816000865af19150503d80600081146200081b576040519150601f19603f3d011682016040523d82523d6000602084013e62000820565b606091505b50915091508180156200084e5750805115806200084e5750808060200190518101906200084e919062000bf9565b6200088b5760405162461bcd60e51b815260206004820152600c60248201526b5361666520417070726f766560a01b604482015260640162000546565b5050505050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620008c5578181015183820152602001620008ab565b50506000910152565b600082601f830112620008e057600080fd5b81516001600160401b0380821115620008fd57620008fd62000892565b604051601f8301601f19908116603f0116810190828211818310171562000928576200092862000892565b816040528381528660208588010111156200094257600080fd5b62000955846020830160208901620008a8565b9695505050505050565b6001600160a01b03811681146200097557600080fd5b50565b805162000985816200095f565b919050565b600080600080600080600080610100898b031215620009a857600080fd5b88516001600160401b0380821115620009c057600080fd5b620009ce8c838d01620008ce565b995060208b0151915080821115620009e557600080fd5b50620009f48b828c01620008ce565b975050604089015162000a07816200095f565b60608a015190965062000a1a816200095f565b60808a015190955062000a2d816200095f565b60a08a015190945062000a40816200095f565b60c08a015190935062000a53816200095f565b915062000a6360e08a0162000978565b90509295985092959890939650565b60006020828403121562000a8557600080fd5b815160ff8116811462000a9757600080fd5b9392505050565b600181811c9082168062000ab357607f821691505b60208210810362000ad457634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000b2857600081815260208120601f850160051c8101602086101562000b035750805b601f850160051c820191505b8181101562000b245782815560010162000b0f565b5050505b505050565b81516001600160401b0381111562000b495762000b4962000892565b62000b618162000b5a845462000a9e565b8462000ada565b602080601f83116001811462000b99576000841562000b805750858301515b600019600386901b1c1916600185901b17855562000b24565b600085815260208120601f198616915b8281101562000bca5788860151825594840194600190910190840162000ba9565b508582101562000be95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000c0c57600080fd5b8151801515811462000a9757600080fd5b60006020828403121562000c3057600080fd5b815162000a97816200095f565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000c9457816000190482111562000c785762000c7862000c3d565b8085161562000c8657918102915b93841c939080029062000c58565b509250929050565b60008262000cad5750600162000d4c565b8162000cbc5750600062000d4c565b816001811462000cd5576002811462000ce05762000d00565b600191505062000d4c565b60ff84111562000cf45762000cf462000c3d565b50506001821b62000d4c565b5060208310610133831016604e8410600b841016171562000d25575081810a62000d4c565b62000d31838362000c53565b806000190482111562000d485762000d4862000c3d565b0290505b92915050565b600062000a9760ff84168362000c9c565b60006001600160601b038381168062000d8c57634e487b7160e01b600052601260045260246000fd5b92169190910492915050565b60006020828403121562000dab57600080fd5b5051919050565b6000825162000dc6818460208701620008a8565b9190910192915050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e05161020051610220516102405161026051610280516102a0516102c051614f9762000fff6000396000818161027c01528181612555015261262d0152600081816104470152611bc301526000818161079f01528181612cd501528181612d5601528181612ddf01528181612e4e01528181612ecf01528181612f57015261351d015260006106350152600081816109d0015281816138a3015281816139c80152613b3b015260008181610747015261406701526000818161068901526140410152600081816108c601528181610b110152818161137b01528181613071015281816137ab015281816138270152818161395201528181613aa2015261408e01526000818161039001528181610abd0152818161134001528181613035015281816130ae015281816137130152818161376a015281816137ff0152818161392a01528181613a430152613a7c01526000818161032c0152818161384f0152818161397a01528181613b040152613ef30152600081816107d301528181610b65015281816113b7015281816115110152818161153201528181611d050152818161246101528181612500015281816125d801528181613ece0152613faa01526000818161085d0152613f3201526000612194015260006121e3015260006121be01526000612117015260006121410152600061216b0152600061047b0152614f976000f3fe60806040526004361061025e5760003560e01c80630390c8391461026a57806306fdde03146102b4578063071bc3c9146102d6578063078dfbe7146102f857806309047bdd1461031a578063095ea7b31461035e5780630dfe16811461037e578063128fced1146103b257806318160ddd146103df57806320e8c56514610402578063213cae63146102d657806323b872dd146104155780632ba14d6314610435578063313ce567146104695780633644e515146104af5780633ba0b9a9146104c45780633f4ba83a146104df578063427752c8146104f45780634e71e0c8146105145780634edc4295146105295780634f4f9ac2146105495780635c975abb1461055f5780635cbadbe41461057757806370a08231146105e3578063769f8e5d1461060357806376d5de8514610623578063784367d6146106575780637bdd6b44146106775780637ecebe00146106ab5780638456cb59146106cb5780638da5cb5b146106e057806395d89b411461070057806399250dcb14610715578063a28af8a414610735578063a40bee5014610769578063a6f19c841461078d578063a8aa1b31146107c1578063a9059cbb146107f5578063a9f8d18114610815578063b8f82b261461082b578063c45a01551461084b578063c4f59f9b1461087f578063cbe52ae314610894578063d21220a7146108b4578063d505accf146108e8578063da88ecb414610908578063dd62ed3e1461091d578063e30c39781461093d578063ea64a8201461095d578063ef5cfb8c1461099e578063f887ea40146109be578063f8b2f991146109f2578063fa5a4f061461065757600080fd5b3661026557005b600080fd5b34801561027657600080fd5b5061029e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516102ab91906147a5565b60405180910390f35b3480156102c057600080fd5b506102c9610a07565b6040516102ab91906147dd565b3480156102e257600080fd5b506102eb610a99565b6040516102ab9190614854565b34801561030457600080fd5b5061031861031336600461488c565b610bba565b005b34801561032657600080fd5b5061034e7f000000000000000000000000000000000000000000000000000000000000000081565b60405190151581526020016102ab565b34801561036a57600080fd5b5061034e6103793660046148d5565b610cc0565b34801561038a57600080fd5b5061029e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103be57600080fd5b506103d26103cd3660046148ff565b610cda565b6040516102ab919061494a565b3480156103eb57600080fd5b506103f4610de6565b6040519081526020016102ab565b6103f461041036600461495d565b610df5565b34801561042157600080fd5b5061034e61043036600461499f565b610f3e565b34801561044157600080fd5b5061029e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561047557600080fd5b5061049d7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016102ab565b3480156104bb57600080fd5b506103f4610fbc565b3480156104d057600080fd5b50670de0b6b3a76400006103f4565b3480156104eb57600080fd5b50610318610fcb565b34801561050057600080fd5b5061031861050f3660046148ff565b610fff565b34801561052057600080fd5b506103186110f6565b34801561053557600080fd5b5061029e6105443660046149db565b6111a2565b34801561055557600080fd5b506103f460065481565b34801561056b57600080fd5b5060395460ff1661034e565b34801561058357600080fd5b506105c36105923660046149f4565b603a6020908152600092835260408084209091529082529020546001600160801b0380821691600160801b90041682565b604080516001600160801b039384168152929091166020830152016102ab565b3480156105ef57600080fd5b506103f46105fe3660046148ff565b6111cc565b34801561060f57600080fd5b506103f461061e366004614a27565b6111e7565b34801561062f57600080fd5b5061029e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561066357600080fd5b5061034e6106723660046148ff565b61133c565b34801561068357600080fd5b506103f47f000000000000000000000000000000000000000000000000000000000000000081565b3480156106b757600080fd5b506103f46106c63660046148ff565b6113f0565b3480156106d757600080fd5b5061031861140e565b3480156106ec57600080fd5b5060075461029e906001600160a01b031681565b34801561070c57600080fd5b506102c9611440565b34801561072157600080fd5b506103186107303660046149db565b61144f565b34801561074157600080fd5b506103f47f000000000000000000000000000000000000000000000000000000000000000081565b34801561077557600080fd5b5061077e611508565b6040516102ab93929190614a98565b34801561079957600080fd5b5061029e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156107cd57600080fd5b5061029e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561080157600080fd5b5061034e6108103660046148d5565b6115bd565b34801561082157600080fd5b506103f4603b5481565b34801561083757600080fd5b506103f46108463660046148d5565b61162f565b34801561085757600080fd5b5061029e7f000000000000000000000000000000000000000000000000000000000000000081565b34801561088b57600080fd5b506102eb61166a565b3480156108a057600080fd5b506103f46108af3660046148d5565b611674565b3480156108c057600080fd5b5061029e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156108f457600080fd5b50610318610903366004614ae9565b6116a8565b34801561091457600080fd5b506103d261180c565b34801561092957600080fd5b506103f46109383660046149f4565b6118dd565b34801561094957600080fd5b5060085461029e906001600160a01b031681565b34801561096957600080fd5b506105c36109783660046148ff565b603c602052600090815260409020546001600160801b0380821691600160801b90041682565b3480156109aa57600080fd5b506103d26109b93660046148ff565b611908565b3480156109ca57600080fd5b5061029e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156109fe57600080fd5b506103d26119c7565b606060038054610a1690614b56565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4290614b56565b8015610a8f5780601f10610a6457610100808354040283529160200191610a8f565b820191906000526020600020905b815481529060010190602001808311610a7257829003601f168201915b5050505050905090565b604080516003808252608082019092526060916020820183803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610aef57610aef614ba0565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610b4357610b43614ba0565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600281518110610b9757610b97614ba0565b60200260200101906001600160a01b031690816001600160a01b03168152505090565b6007546001600160a01b03163314610bed5760405162461bcd60e51b8152600401610be490614bb6565b60405180910390fd5b8115610c9f576001600160a01b038316151580610c075750805b610c4b5760405162461bcd60e51b81526020600482015260156024820152744f776e61626c653a207a65726f206164647265737360581b6044820152606401610be4565b6007546040516001600160a01b03808616921690600080516020614f2283398151915290600090a3600780546001600160a01b0385166001600160a01b031991821617909155600880549091169055505050565b600880546001600160a01b0319166001600160a01b0385161790555b505050565b600033610cce818585611a48565b60019150505b92915050565b60606000610ce6611b6d565b905080516001600160401b03811115610d0157610d01614b8a565b604051908082528060200260200182016040528015610d2a578160200160208202803683370190505b50915060005b8151811015610ddf57603a6000838381518110610d4f57610d4f614ba0565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000856001600160a01b03166001600160a01b0316815260200190815260200160002060000160109054906101000a90046001600160801b03166001600160801b0316838281518110610dcc57610dcc614ba0565b6020908102919091010152600101610d30565b5050919050565b6002546001600160f81b031690565b600254600090600119600160f81b90910460ff1601610e265760405162461bcd60e51b8152600401610be490614beb565b600280546001600160f81b0316600160f91b179055610e448461133c565b610e6357836040516315d57ce360e31b8152600401610be491906147a5565b82600003610e8457604051630a907f2f60e41b815260040160405180910390fd5b610e8f843385611c92565b610e998484611cf9565b905081811015610ec0578082604051635e38f95d60e11b8152600401610be4929190614c22565b610eca8582611d58565b836001600160a01b0316856001600160a01b0316336001600160a01b03167f5fe47ed6d4225326d3303476197d782ded5a4e9c14f479dc9ec4992af4e85d598685604051610f19929190614c22565b60405180910390a4600280546001600160f81b0316600160f81b179055949350505050565b600254600090600119600160f81b90910460ff1601610f6f5760405162461bcd60e51b8152600401610be490614beb565b600280546001600160f81b0316600160f91b17905533610f90858285611e6e565b610f9b858585611ee8565b6001915050600280546001600160f81b0316600160f81b1790559392505050565b6000610fc661210a565b905090565b6007546001600160a01b03163314610ff55760405162461bcd60e51b8152600401610be490614bb6565b610ffd612231565b565b6007546001600160a01b031633146110295760405162461bcd60e51b8152600401610be490614bb6565b61103b81611035611b6d565b9061227d565b1561107e5760405162461bcd60e51b81526020600482015260136024820152721c995dd85c99151bdad95b88195e1a5cdd1959606a1b6044820152606401610be4565b603d805460018101825560009182527fece66cfdbd22e3f37d348a3d8e19074452862cd65fd4b9a11f0336d1ac6d1dc30180546001600160a01b0319166001600160a01b03841690811790915560405190917ff3c90e76a186c461bb92589c91db73b575fcf6118e23c2f1a231f34869068e9f91a250565b6008546001600160a01b03163381146111515760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e65726044820152606401610be4565b6007546040516001600160a01b03808416921690600080516020614f2283398151915290600090a3600780546001600160a01b039092166001600160a01b0319928316179055600880549091169055565b603d81815481106111b257600080fd5b6000918252602090912001546001600160a01b0316905081565b6001600160a01b031660009081526020819052604090205490565b600254600090600119600160f81b90910460ff16016112185760405162461bcd60e51b8152600401610be490614beb565b600280546001600160f81b0316600160f91b1790556112368461133c565b61125557836040516388a5056160e01b8152600401610be491906147a5565b846000036112765760405163c3d83b0760e01b815260040160405180910390fd5b811561128b5761128630866122dc565b611295565b61129533866122dc565b6112a0868587612455565b9050828110156112c75780836040516305ff726560e51b8152600401610be4929190614c22565b836001600160a01b0316866001600160a01b0316336001600160a01b03167faee47cdf925cf525fdae94f9777ee5a06cac37e1c41220d0a8a89ed154f62d1c8885604051611316929190614c22565b60405180910390a4600280546001600160f81b0316600160f81b17905595945050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614806113af57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316145b80610cd457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161492915050565b6001600160a01b038116600090815260056020526040812054610cd4565b6007546001600160a01b031633146114385760405162461bcd60e51b8152600401610be490614bb6565b610ffd6124bf565b606060048054610a1690614b56565b6007546001600160a01b031633146114795760405162461bcd60e51b8152600401610be490614bb6565b6000811180156114905750670de0b6b3a764000081105b6114cd5760405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964206e657745707360901b6044820152606401610be4565b60068190556040518181527fdd8491b44629319e629d15aba51a5e794b8a79ece23ea4a76b4db8f5630815479060200160405180910390a150565b600080600060017f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801561158e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b29190614c30565b925092509250909192565b600254600090600119600160f81b90910460ff16016115ee5760405162461bcd60e51b8152600401610be490614beb565b600280546001600160f81b0316600160f91b1790553361160f818585611ee8565b6001915050600280546001600160f81b0316600160f81b17905592915050565b600061163a8361133c565b61165957826040516315d57ce360e31b8152600401610be491906147a5565b61166383836124fc565b9392505050565b6060610fc6611b6d565b600061167f8361133c565b61169e57826040516388a5056160e01b8152600401610be491906147a5565b61166383836125d4565b834211156116f85760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610be4565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886117278c612664565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006117828261268c565b90506000611792828787876126da565b9050896001600160a01b0316816001600160a01b0316146117f55760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610be4565b6118008a8a8a611a48565b50505050505050505050565b60606000611818611b6d565b905080516001600160401b0381111561183357611833614b8a565b60405190808252806020026020018201604052801561185c578160200160208202803683370190505b50915060005b81518110156118d857603c600083838151811061188157611881614ba0565b6020908102919091018101516001600160a01b031682528101919091526040016000205483516001600160801b03909116908490839081106118c5576118c5614ba0565b6020908102919091010152600101611862565b505090565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600254606090600119600160f81b90910460ff16016119395760405162461bcd60e51b8152600401610be490614beb565b600280546001600160f81b0316600160f91b17905561195782612702565b6119618283612710565b9050816001600160a01b03167f2193aa20a3717f5f4ac79482f4f553e5f0afe8f4e6ec3e3d1aa2e138adc4763f611996611b6d565b836040516119a5929190614c4d565b60405180910390a2600280546001600160f81b0316600160f81b179055919050565b600254606090600119600160f81b90910460ff16016119f85760405162461bcd60e51b8152600401610be490614beb565b600280546001600160f81b0316600160f91b179055611a156129b8565b5050611a1f61180c565b9050600280546001600160f81b0316600160f81b17905590565b6001600160a01b03163b151590565b6001600160a01b038316611aaa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610be4565b6001600160a01b038216611b0b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610be4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b603d54606090611b7e906001614c88565b6001600160401b03811115611b9557611b95614b8a565b604051908082528060200260200182016040528015611bbe578160200160208202803683370190505b5090507f000000000000000000000000000000000000000000000000000000000000000081600081518110611bf557611bf5614ba0565b6001600160a01b039092166020928302919091019091015260015b8151811015611c8e57603d611c26600183614c9b565b81548110611c3657611c36614ba0565b9060005260206000200160009054906101000a90046001600160a01b0316828281518110611c6657611c66614ba0565b6001600160a01b0390921660209283029190910190910152611c8781614cae565b9050611c10565b5090565b6001600160a01b038316611cde57803414610cbb5760405162461bcd60e51b815260206004820152600c60248201526b0cae8d040dad2e6dac2e8c6d60a31b6044820152606401610be4565b8015610cbb57610cbb6001600160a01b038416833084612c53565b6000611d03612cbe565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031603611d43575080611d50565b611d4d8383612ea7565b90505b610cd4612ecd565b6001600160a01b038216611dae5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610be4565b611dba60008383612fb0565b611dc381612fc2565b60028054600090611dde9084906001600160f81b0316614cc7565b92506101000a8154816001600160f81b0302191690836001600160f81b0316021790555080600080846001600160a01b03166001600160a01b031681526020019081526020016000206000828254611e369190614c88565b90915550506040518181526001600160a01b03831690600090600080516020614f428339815191529060200160405180910390a35050565b6000611e7a84846118dd565b90506000198114611ee25781811015611ed55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610be4565b611ee28484848403611a48565b50505050565b6001600160a01b038316611f4c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610be4565b6001600160a01b038216611fae5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610be4565b816001600160a01b0316836001600160a01b0316036120095760405162461bcd60e51b815260206004820152601760248201527622a92199181d103a3930b739b332b9103a379039b2b63360491b6044820152606401610be4565b612014838383612fb0565b6001600160a01b0383166000908152602081905260409020548181101561208c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610be4565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906120c3908490614c88565b92505081905550826001600160a01b0316846001600160a01b0316600080516020614f42833981519152846040516120fd91815260200190565b60405180910390a3611ee2565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561216357507f000000000000000000000000000000000000000000000000000000000000000046145b1561218d57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b612239612fd8565b6039805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405161227391906147a5565b60405180910390a1565b8151600090815b818110156122d157836001600160a01b03168582815181106122a8576122a8614ba0565b60200260200101516001600160a01b0316036122c957600192505050610cd4565b600101612284565b506000949350505050565b6001600160a01b03821661233c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610be4565b61234882600083612fb0565b6001600160a01b038216600090815260208190526040902054818110156123bc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610be4565b6001600160a01b038316600090815260208190526040902082820390556123e282612fc2565b600280546000906123fd9084906001600160f81b0316614cee565b92506101000a8154816001600160f81b0302191690836001600160f81b0316021790555060006001600160a01b0316836001600160a01b0316600080516020614f4283398151915284604051611b6091815260200190565b600061245f612cbe565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03160361249f5750806124ac565b6124a98383613021565b90505b6124b78385836130dd565b611663612ecd565b6124c76131a1565b6039805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586122663390565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03160361253e575080610cd4565b604051635c7c159360e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b8f82b269061258c9086908690600401614d0e565b602060405180830381865afa1580156125a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125cd9190614d27565b9050610cd4565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031603612616575080610cd4565b60405163cbe52ae360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cbe52ae39061258c9086908690600401614d0e565b6001600160a01b03811660009081526005602052604090208054600181018255905b50919050565b6000610cd461269961210a565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006126eb878787876131e7565b915091506126f8816132ca565b5095945050505050565b61270d81600061347b565b50565b6060600061271c611b6d565b905080516001600160401b0381111561273757612737614b8a565b604051908082528060200260200182016040528015612760578160200160208202803683370190505b50915060005b81518110156129b057603a600083838151811061278557612785614ba0565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000866001600160a01b03166001600160a01b0316815260200190815260200160002060000160109054906101000a90046001600160801b03166001600160801b031683828151811061280257612802614ba0565b60200260200101818152505082818151811061282057612820614ba0565b602002602001015160001461299e576000603a600084848151811061284757612847614ba0565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206000876001600160a01b03166001600160a01b0316815260200190815260200160002060000160106101000a8154816001600160801b0302191690836001600160801b031602179055506128db8382815181106128ce576128ce614ba0565b60200260200101516134fb565b603c60008484815181106128f1576128f1614ba0565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060000160108282829054906101000a90046001600160801b031661293d9190614d40565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555061299e82828151811061297657612976614ba0565b60200260200101518585848151811061299157612991614ba0565b60200260200101516130dd565b806129a881614cae565b915050612766565b505092915050565b6060806129c3611b6d565b915081516001600160401b038111156129de576129de614b8a565b604051908082528060200260200182016040528015612a07578160200160208202803683370190505b5090508151600003612a17579091565b43603b5414612bcb5743603b556000612a2e613511565b9050612a3861351b565b60005b8351811015612bc8576000848281518110612a5857612a58614ba0565b6020908102919091018101516001600160a01b0381166000908152603c90925260408220548751919350600160801b90046001600160801b031690612ab690889086908110612aa957612aa9614ba0565b6020026020010151613576565b612ac09190614c9b565b6001600160a01b0383166000908152603c60205260408120549192506001600160801b0390911690819003612af3575060015b8415612b1057612b038286613600565b612b0d9082614c88565b90505b612b19816134fb565b6001600160a01b0384166000908152603c6020526040902080546001600160801b0319166001600160801b0392909216919091179055612b58826134fb565b6001600160a01b0384166000908152603c602052604090208054601090612b90908490600160801b90046001600160801b0316614d60565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555050505080612bc190614cae565b9050612a3b565b50505b60005b8251811015612c4e57603c6000848381518110612bed57612bed614ba0565b6020908102919091018101516001600160a01b031682528101919091526040016000205482516001600160801b0390911690839083908110612c3157612c31614ba0565b602090810291909101015280612c4681614cae565b915050612bce565b509091565b6040516001600160a01b0380851660248301528316604482015260648101829052611ee29085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261362f565b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190612d0a9030906004016147a5565b602060405180830381865afa158015612d27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d4b9190614d27565b600003612d5457565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663caa6fea46040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612db4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dd89190614d80565b15612e4c577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663db2e21bc6040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612e3857600080fd5b505af1158015611ee2573d6000803e3d6000fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663853828b66040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612e3857600080fd5b6000806000612eb68585613701565b91509150612ec482826137e8565b95945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663caa6fea46040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f519190614d80565b610ffd577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663de5f62686040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612e3857600080fd5b612fb86131a1565b610cbb838361347b565b60006001600160f81b03821115611c8e57600080fd5b60395460ff16610ffd5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610be4565b600080600061302f84613913565b915091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316036130a9576130967f000000000000000000000000000000000000000000000000000000000000000082613a3e565b6130a09083614c88565b92505050610cd4565b6130d37f000000000000000000000000000000000000000000000000000000000000000083613a3e565b6130a09082614c88565b806000036130ea57505050565b6001600160a01b03831661318d576000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613145576040519150601f19603f3d011682016040523d82523d6000602084013e61314a565b606091505b5050905080611ee25760405162461bcd60e51b815260206004820152600f60248201526e195d1a081cd95b990819985a5b1959608a1b6044820152606401610be4565b610cbb6001600160a01b0384168383613bc3565b60395460ff1615610ffd5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610be4565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383111561321457506000905060036132c1565b8460ff16601b1415801561322c57508460ff16601c14155b1561323d57506000905060046132c1565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613291573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166132ba576000600192509250506132c1565b9150600090505b94509492505050565b60008160048111156132de576132de614a82565b036132e65750565b60018160048111156132fa576132fa614a82565b036133425760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606401610be4565b600281600481111561335657613356614a82565b036133a35760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610be4565b60038160048111156133b7576133b7614a82565b0361340f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610be4565b600481600481111561342357613423614a82565b0361270d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610be4565b6000806134866129b8565b9150915081516000036134995750505050565b6001600160a01b038416158015906134ba57506001600160a01b0384163014155b156134ca576134ca848383613be2565b6001600160a01b038316158015906134eb57506001600160a01b0383163014155b15611ee257611ee2838383613be2565b60006001600160801b03821115611c8e57600080fd5b6000610fc6610de6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633d18b9126040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612e3857600080fd5b60006001600160a01b038216156135f9576040516370a0823160e01b81526001600160a01b038316906370a08231906135b39030906004016147a5565b602060405180830381865afa1580156135d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135f49190614d27565b610cd4565b4792915050565b600080613615670de0b6b3a764000085614d9d565b905082818161362657613626614db4565b04949350505050565b6000613684826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613e629092919063ffffffff16565b805190915015610cbb57808060200190518101906136a29190614d80565b610cbb5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610be4565b600080600061370f85613e79565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b0316036137975760006137578287876140ed565b90506137638186614c9b565b935061378f7f000000000000000000000000000000000000000000000000000000000000000082613a3e565b9250506137e0565b60006137a48287876140ed565b90506137d07f000000000000000000000000000000000000000000000000000000000000000082613a3e565b93506137dc8186614c9b565b9250505b509250929050565b604051635a47ddc360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f0000000000000000000000000000000000000000000000000000000000000000151560448301526064820184905260848201839052600060a4830181905260c483018190523060e484015242610104840152917f000000000000000000000000000000000000000000000000000000000000000090911690635a47ddc390610124016060604051808303816000875af11580156138ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ec49190614dca565b60405163037b79b160e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f0000000000000000000000000000000000000000000000000000000000000000811660248301527f0000000000000000000000000000000000000000000000000000000000000000151560448301526064820183905260006084830181905260a483018190523060c48401524260e48401529182917f00000000000000000000000000000000000000000000000000000000000000001690630dede6c4906101040160408051808303816000875af1158015613a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a359190614df8565b91509150915091565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614613aa0577f0000000000000000000000000000000000000000000000000000000000000000613ac2565b7f00000000000000000000000000000000000000000000000000000000000000005b90506000613acf82613576565b6040516313dcfc5960e01b815260048101869052600060248201526001600160a01b03878116604483015284811660648301527f0000000000000000000000000000000000000000000000000000000000000000151560848301523060a48301524260c48301529192507f0000000000000000000000000000000000000000000000000000000000000000909116906313dcfc599060e4016000604051808303816000875af1158015613b86573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613bae9190810190614e1c565b5080613bb983613576565b612ec49190614c9b565b610cbb8363a9059cbb60e01b8484604051602401612c87929190614d0e565b6001600160a01b03831615801590613c0357506001600160a01b0383163014155b613c0f57613c0f614ecd565b6000613c1a84614112565b905060005b8351811015613e5b576000848281518110613c3c57613c3c614ba0565b602002602001015190506000848381518110613c5a57613c5a614ba0565b6020908102919091018101516001600160a01b038085166000908152603a84526040808220928c168252919093528220549092506001600160801b031690819003613cf657613ca8826134fb565b6001600160a01b039384166000908152603a60209081526040808320968c1683529590529390932080546001600160801b0319166001600160801b039094169390931790925550613e4b9050565b818103613d0557505050613e4b565b6000613d118284614c9b565b90506000613d1f878361411d565b6001600160a01b038681166000908152603a60209081526040808320938f1683529290529081205491925090613d66908390600160801b90046001600160801b0316614c88565b90506040518060400160405280613d7c876134fb565b6001600160801b03168152602001613d93836134fb565b6001600160801b0316815250603a6000886001600160a01b03166001600160a01b0316815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816001600160801b0302191690836001600160801b031602179055509050505050505050505b613e5481614cae565b9050613c1f565b5050505050565b6060613e71848460008561413b565b949350505050565b613ec46040518060e0016040528060006001600160a01b0316815260200160001515815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000000000000000000000000000000000000000000000151560208301819052604051632895a2f560e11b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000009091169063512b45ea90602401602060405180830381865afa158015613f7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f9f9190614d27565b8160800181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015614006573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061402a9190614dca565b506060830152604082015260208101511561408c577f000000000000000000000000000000000000000000000000000000000000000060a08201527f000000000000000000000000000000000000000000000000000000000000000060c08201525b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036140e857606081018051604083018051909252905260c08101805160a08301805190925290525b919050565b6000836020015161410757614102848361426a565b613e71565b613e7184848461436b565b6000610cd4826111cc565b60008061412a8385614d9d565b9050670de0b6b3a764000081613626565b60608247101561419c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610be4565b6141a585611a39565b6141f15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610be4565b600080866001600160a01b0316858760405161420d9190614ee3565b60006040518083038185875af1925050503d806000811461424a576040519150601f19603f3d011682016040523d82523d6000602084013e61424f565b606091505b509150915061425f8282866144ea565b979650505050505050565b60008061271084604001516127108060026142859190614d9d565b61428f9190614c9b565b6142999190614d9d565b6142a39190614eff565b905060006142b082614523565b905060008560400151856142e0886080015161271060016142d19190614d9d565b6142db9190614c9b565b614523565b6142eb906004614d9d565b6142f59190614d9d565b6142ff9190614d9d565b90506000836143166143118486614c88565b61452f565b6143209190614c9b565b9050600061433b886080015161271060016142d19190614d9d565b614346906002614d9d565b90508061435561271084614d9d565b61435f9190614eff565b98975050505050505050565b6000806143788386614598565b90505b614390816000015182602001516006546146fd565b6144e157805160208201516002916143a791614c88565b6143b19190614eff565b6040828101829052865190516378a051ad60e11b815260048101929092526001600160a01b038681166024840152169063f140a35a90604401602060405180830381865afa158015614407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061442b9190614d27565b8160c001818152505061444b816040015186604001518760800151614745565b8160600181815250508060c0015185606001516144689190614c9b565b6080820152604081015161447c9084614c9b565b60a0820152606081015160c08201516144959190614d9d565b81608001518260a001516144a99190614d9d565b10156144ca57600181604001516144c09190614c9b565b602082015261437b565b60408101516144da906001614c88565b815261437b565b51949350505050565b606083156144f9575081611663565b8251156145095782518084602001fd5b8160405162461bcd60e51b8152600401610be491906147dd565b6000610cd48280614d9d565b6000600382111561458a5750806000614549600283614eff565b614554906001614c88565b90505b818110156126865790508060028161456f8186614eff565b6145799190614c88565b6145839190614eff565b9050614557565b81156140e857506001919050565b6145d86040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60006145f58360a00151846040015161360090919063ffffffff16565b905060006146148460c00151856060015161360090919063ffffffff16565b905061462d8460a001518661360090919063ffffffff16565b9450600061464561463e8785614c88565b8390613600565b9050600061467a614656848061411d565b614660868061411d565b61466a9190614c88565b614674868661411d565b9061411d565b905060008261468d81614674818061411d565b6146979190614c88565b60a08801519091506146c090866146b66146b18686613600565b614772565b6146749190614c9b565b865260808701516146d390612710614c9b565b86516146e29061271090614d9d565b6146ec9190614eff565b602087015250939695505050505050565b60008361471b8461471685670de0b6b3a7640000614c9b565b61411d565b11158015613e71575061473a8361471684670de0b6b3a7640000614c88565b909311159392505050565b60006127106147548386614d9d565b61475e9190614eff565b6147688585614c88565b613e719190614c9b565b60008061477e8361452f565b61478c90633b9aca00614d9d565b90506147978161452f565b61166390633b9aca00614d9d565b6001600160a01b0391909116815260200190565b60005b838110156147d45781810151838201526020016147bc565b50506000910152565b60208152600082518060208401526147fc8160408501602087016147b9565b601f01601f19169190910160400192915050565b600081518084526020808501945080840160005b838110156148495781516001600160a01b031687529582019590820190600101614824565b509495945050505050565b6020815260006116636020830184614810565b80356001600160a01b03811681146140e857600080fd5b801515811461270d57600080fd5b6000806000606084860312156148a157600080fd5b6148aa84614867565b925060208401356148ba8161487e565b915060408401356148ca8161487e565b809150509250925092565b600080604083850312156148e857600080fd5b6148f183614867565b946020939093013593505050565b60006020828403121561491157600080fd5b61166382614867565b600081518084526020808501945080840160005b838110156148495781518752958201959082019060010161492e565b602081526000611663602083018461491a565b6000806000806080858703121561497357600080fd5b61497c85614867565b935061498a60208601614867565b93969395505050506040820135916060013590565b6000806000606084860312156149b457600080fd5b6149bd84614867565b92506149cb60208501614867565b9150604084013590509250925092565b6000602082840312156149ed57600080fd5b5035919050565b60008060408385031215614a0757600080fd5b614a1083614867565b9150614a1e60208401614867565b90509250929050565b600080600080600060a08688031215614a3f57600080fd5b614a4886614867565b945060208601359350614a5d60408701614867565b9250606086013591506080860135614a748161487e565b809150509295509295909350565b634e487b7160e01b600052602160045260246000fd5b6060810160028510614aba57634e487b7160e01b600052602160045260246000fd5b9381526001600160a01b0392909216602083015260ff1660409091015290565b60ff8116811461270d57600080fd5b600080600080600080600060e0888a031215614b0457600080fd5b614b0d88614867565b9650614b1b60208901614867565b955060408801359450606088013593506080880135614b3981614ada565b9699959850939692959460a0840135945060c09093013592915050565b600181811c90821680614b6a57607f821691505b60208210810361268657634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b918252602082015260400190565b600060208284031215614c4257600080fd5b815161166381614ada565b604081526000614c606040830185614810565b8281036020840152612ec4818561491a565b634e487b7160e01b600052601160045260246000fd5b80820180821115610cd457610cd4614c72565b81810381811115610cd457610cd4614c72565b600060018201614cc057614cc0614c72565b5060010190565b6001600160f81b03818116838216019080821115614ce757614ce7614c72565b5092915050565b6001600160f81b03828116828216039080821115614ce757614ce7614c72565b6001600160a01b03929092168252602082015260400190565b600060208284031215614d3957600080fd5b5051919050565b6001600160801b03828116828216039080821115614ce757614ce7614c72565b6001600160801b03818116838216019080821115614ce757614ce7614c72565b600060208284031215614d9257600080fd5b81516116638161487e565b8082028115828204841417610cd457610cd4614c72565b634e487b7160e01b600052601260045260246000fd5b600080600060608486031215614ddf57600080fd5b8351925060208401519150604084015190509250925092565b60008060408385031215614e0b57600080fd5b505080516020909101519092909150565b60006020808385031215614e2f57600080fd5b82516001600160401b0380821115614e4657600080fd5b818501915085601f830112614e5a57600080fd5b815181811115614e6c57614e6c614b8a565b8060051b604051601f19603f83011681018181108582111715614e9157614e91614b8a565b604052918252848201925083810185019188831115614eaf57600080fd5b938501935b8285101561435f57845184529385019392850192614eb4565b634e487b7160e01b600052600160045260246000fd5b60008251614ef58184602087016147b9565b9190910192915050565b600082614f1c57634e487b7160e01b600052601260045260246000fd5b50049056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b770069821a3872c0bc34fc8e6758c02c2c2a5c7c37a511540c83dd5ebb413b464736f6c63430008110033";
1184
1268
 
1185
1269
  type PendleThenaSYConstructorParams =
1186
1270
  | [signer?: Signer]