@pendle/core-v2 5.2.1-beta-1 → 5.2.2

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 (258) hide show
  1. package/build/artifacts/contracts/core/StandardizedYield/implementations/Lombard/PendleLBTCBaseSY.sol/PendleLBTCBaseSY.dbg.json +4 -0
  2. package/build/artifacts/contracts/core/StandardizedYield/implementations/Lombard/PendleLBTCBaseSY.sol/PendleLBTCBaseSY.json +1111 -0
  3. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiqV3.sol/IPActionAddRemoveLiqV3.dbg.json +1 -1
  4. package/build/artifacts/contracts/interfaces/IPActionAddRemoveLiqV3.sol/IPActionAddRemoveLiqV3.json +0 -196
  5. package/build/artifacts/contracts/interfaces/IPActionCallbackV3.sol/IPActionCallbackV3.dbg.json +1 -1
  6. package/build/artifacts/contracts/interfaces/IPActionMarketAuxStatic.sol/IPActionMarketAuxStatic.dbg.json +1 -1
  7. package/build/artifacts/contracts/interfaces/IPActionMiscV3.sol/IPActionMiscV3.dbg.json +1 -1
  8. package/build/artifacts/contracts/interfaces/IPActionMiscV3.sol/IPActionMiscV3.json +78 -196
  9. package/build/artifacts/contracts/interfaces/IPActionSimple.sol/IPActionSimple.dbg.json +1 -1
  10. package/build/artifacts/contracts/interfaces/IPActionSimple.sol/IPActionSimple.json +0 -196
  11. package/build/artifacts/contracts/interfaces/IPActionStorageStatic.sol/IPActionStorageStatic.dbg.json +1 -1
  12. package/build/artifacts/contracts/interfaces/IPActionStorageStatic.sol/IPActionStorageStatic.json +0 -196
  13. package/build/artifacts/contracts/interfaces/IPActionStorageV4.sol/IPActionStorageV4.dbg.json +1 -1
  14. package/build/artifacts/contracts/interfaces/IPActionStorageV4.sol/IPActionStorageV4.json +0 -196
  15. package/build/artifacts/contracts/interfaces/IPActionSwapPTV3.sol/IPActionSwapPTV3.dbg.json +1 -1
  16. package/build/artifacts/contracts/interfaces/IPActionSwapPTV3.sol/IPActionSwapPTV3.json +0 -196
  17. package/build/artifacts/contracts/interfaces/IPActionSwapYTV3.sol/IPActionSwapYTV3.dbg.json +1 -1
  18. package/build/artifacts/contracts/interfaces/IPActionSwapYTV3.sol/IPActionSwapYTV3.json +0 -196
  19. package/build/artifacts/contracts/interfaces/IPAllActionV3.sol/IPAllActionV3.dbg.json +1 -1
  20. package/build/artifacts/contracts/interfaces/IPAllActionV3.sol/IPAllActionV3.json +16 -1188
  21. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionAddRemoveLiqV3Events.dbg.json +1 -1
  22. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionMiscV3Events.dbg.json +1 -1
  23. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionStorageEvents.dbg.json +1 -1
  24. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionSwapPTV3Events.dbg.json +1 -1
  25. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionSwapYTV3Events.dbg.json +1 -1
  26. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPAllEventsV3.dbg.json +1 -1
  27. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPAllEventsV3.json +0 -196
  28. package/build/artifacts/contracts/interfaces/IPChainlinkOracle.sol/IPChainlinkOracle.dbg.json +4 -0
  29. package/build/artifacts/contracts/interfaces/IPChainlinkOracle.sol/IPChainlinkOracle.json +122 -0
  30. package/build/artifacts/contracts/interfaces/IPChainlinkOracleFactory.sol/IPChainlinkOracleFactory.dbg.json +4 -0
  31. package/build/artifacts/contracts/interfaces/IPChainlinkOracleFactory.sol/IPChainlinkOracleFactory.json +91 -0
  32. package/build/artifacts/contracts/interfaces/IPChainlinkOracleWithQuote.sol/IPChainlinkOracleWithQuote.dbg.json +4 -0
  33. package/build/artifacts/contracts/interfaces/IPChainlinkOracleWithQuote.sol/IPChainlinkOracleWithQuote.json +262 -0
  34. package/build/artifacts/contracts/interfaces/IPLimitRouter.sol/IPLimitOrderType.dbg.json +1 -1
  35. package/build/artifacts/contracts/interfaces/IPLimitRouter.sol/IPLimitRouter.dbg.json +1 -1
  36. package/build/artifacts/contracts/interfaces/IPLimitRouter.sol/IPLimitRouter.json +96 -0
  37. package/build/artifacts/contracts/interfaces/IPLimitRouter.sol/IPLimitRouterCallback.dbg.json +1 -1
  38. package/build/artifacts/contracts/interfaces/IPPYLpOracle.sol/IPPYLpOracle.dbg.json +1 -1
  39. package/build/artifacts/contracts/interfaces/IPPYLpOracle.sol/IPPYLpOracle.json +13 -0
  40. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  41. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.json +0 -196
  42. package/build/artifacts/contracts/interfaces/Lombard/ILBTCMinterBase.sol/ILBTCMinterBase.dbg.json +4 -0
  43. package/build/artifacts/contracts/interfaces/Lombard/ILBTCMinterBase.sol/ILBTCMinterBase.json +63 -0
  44. package/build/artifacts/contracts/limit/LimitMathCore.sol/LimitMathCore.dbg.json +1 -1
  45. package/build/artifacts/contracts/limit/LimitMathCore.sol/LimitMathCore.json +2 -2
  46. package/build/artifacts/contracts/limit/LimitRouterBase.sol/LimitRouterBase.dbg.json +1 -1
  47. package/build/artifacts/contracts/limit/PendleLimitRouter.sol/PendleLimitRouter.dbg.json +1 -1
  48. package/build/artifacts/contracts/limit/PendleLimitRouter.sol/PendleLimitRouter.json +2 -2
  49. package/build/artifacts/contracts/offchain-helpers/LimitBackendHelper.sol/LimitBackendHelper.dbg.json +1 -1
  50. package/build/artifacts/contracts/offchain-helpers/LimitBackendHelper.sol/LimitBackendHelper.json +2 -2
  51. package/build/artifacts/contracts/offchain-helpers/PendlePoolDeployHelper.sol/PendlePoolDeployHelper.dbg.json +1 -1
  52. package/build/artifacts/contracts/offchain-helpers/PendlePoolDeployHelper.sol/PendlePoolDeployHelper.json +2 -2
  53. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.dbg.json +1 -1
  54. package/build/artifacts/contracts/offchain-helpers/router-static/PendleRouterStatic.sol/PendleRouterStatic.json +2 -2
  55. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.dbg.json +1 -1
  56. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionInfoStatic.sol/ActionInfoStatic.json +2 -2
  57. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.dbg.json +1 -1
  58. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketAuxStatic.sol/ActionMarketAuxStatic.json +2 -2
  59. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.dbg.json +1 -1
  60. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMarketCoreStatic.sol/ActionMarketCoreStatic.json +2 -2
  61. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.dbg.json +1 -1
  62. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionMintRedeemStatic.sol/ActionMintRedeemStatic.json +2 -2
  63. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.dbg.json +1 -1
  64. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionStorageStatic.sol/ActionStorageStatic.json +2 -198
  65. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.dbg.json +1 -1
  66. package/build/artifacts/contracts/offchain-helpers/router-static/base/ActionVePendleStatic.sol/ActionVePendleStatic.json +2 -2
  67. package/build/artifacts/contracts/offchain-helpers/router-static/base/StorageLayout.sol/StorageLayout.dbg.json +1 -1
  68. package/build/artifacts/contracts/oracles/PtYtLpOracle/PendleLpOracleLib.sol/PendleLpOracleLib.dbg.json +4 -0
  69. package/build/artifacts/contracts/oracles/{PendleLpOracleLib.sol → PtYtLpOracle/PendleLpOracleLib.sol}/PendleLpOracleLib.json +3 -3
  70. package/build/artifacts/contracts/oracles/PtYtLpOracle/PendlePYLpOracle.sol/PendlePYLpOracle.dbg.json +4 -0
  71. package/build/artifacts/contracts/oracles/{PendlePYLpOracle.sol → PtYtLpOracle/PendlePYLpOracle.sol}/PendlePYLpOracle.json +3 -3
  72. package/build/artifacts/contracts/oracles/PtYtLpOracle/PendlePYOracleLib.sol/PendlePYOracleLib.dbg.json +4 -0
  73. package/build/artifacts/contracts/oracles/{PendlePYOracleLib.sol → PtYtLpOracle/PendlePYOracleLib.sol}/PendlePYOracleLib.json +3 -3
  74. package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracle.sol/PendleChainlinkOracle.dbg.json +4 -0
  75. package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracle.sol/PendleChainlinkOracle.json +226 -0
  76. package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleFactory.sol/PendleChainlinkOracleFactory.dbg.json +4 -0
  77. package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleFactory.sol/PendleChainlinkOracleFactory.json +343 -0
  78. package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleWithQuote.sol/PendleChainlinkOracleWithQuote.dbg.json +4 -0
  79. package/build/artifacts/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleWithQuote.sol/PendleChainlinkOracleWithQuote.json +257 -0
  80. package/build/artifacts/contracts/oracles/PtYtLpOracle/samples/BoringLpGlpOracle.sol/BoringLpGlpOracle.dbg.json +4 -0
  81. package/build/artifacts/contracts/oracles/{samples → PtYtLpOracle/samples}/BoringLpGlpOracle.sol/BoringLpGlpOracle.json +3 -3
  82. package/build/artifacts/contracts/oracles/PtYtLpOracle/samples/BoringLpSeller.sol/BoringLpSeller.dbg.json +4 -0
  83. package/build/artifacts/contracts/oracles/{samples → PtYtLpOracle/samples}/BoringLpSeller.sol/BoringLpSeller.json +1 -1
  84. package/build/artifacts/contracts/oracles/PtYtLpOracle/samples/BoringPYUsdChainlinkAssetOracle.sol/BoringPYUsdChainlinkAssetOracle.dbg.json +4 -0
  85. package/build/artifacts/contracts/oracles/{samples → PtYtLpOracle/samples}/BoringPYUsdChainlinkAssetOracle.sol/BoringPYUsdChainlinkAssetOracle.json +3 -3
  86. package/build/artifacts/contracts/oracles/PtYtLpOracle/samples/BoringPYUsdChainlinkSYOracle.sol/BoringPYUsdChainlinkSYOracle.dbg.json +4 -0
  87. package/build/artifacts/contracts/oracles/{samples → PtYtLpOracle/samples}/BoringPYUsdChainlinkSYOracle.sol/BoringPYUsdChainlinkSYOracle.json +3 -3
  88. package/build/artifacts/contracts/oracles/PtYtLpOracle/samples/BoringPtSeller.sol/BoringPtSeller.dbg.json +4 -0
  89. package/build/artifacts/contracts/oracles/{samples → PtYtLpOracle/samples}/BoringPtSeller.sol/BoringPtSeller.json +1 -1
  90. package/build/artifacts/contracts/oracles/internal/PendleBoringOneracle.sol/PendleBoringOneracle.dbg.json +4 -0
  91. package/build/artifacts/contracts/oracles/{PendleBoringOneracle.sol → internal/PendleBoringOneracle.sol}/PendleBoringOneracle.json +3 -3
  92. package/build/artifacts/contracts/oracles/internal/PendleBoringSolvBTCOneracle.sol/PendleBoringSolvBTCOneracle.dbg.json +4 -0
  93. package/build/artifacts/contracts/oracles/{PendleBoringSolvBTCOneracle.sol → internal/PendleBoringSolvBTCOneracle.sol}/PendleBoringSolvBTCOneracle.json +3 -3
  94. package/build/artifacts/contracts/oracles/internal/PendleRedStoneRateOracleAdapter.sol/PendleRedStoneRateOracleAdapter.dbg.json +4 -0
  95. package/build/artifacts/contracts/oracles/{PendleRedStoneRateOracleAdapter.sol → internal/PendleRedStoneRateOracleAdapter.sol}/PendleRedStoneRateOracleAdapter.json +3 -3
  96. package/build/artifacts/contracts/oracles/internal/PendleSparkLinearDiscountOracle.sol/PTExpiry.dbg.json +4 -0
  97. package/build/artifacts/contracts/oracles/{PendleSparkLinearDiscountOracle.sol → internal/PendleSparkLinearDiscountOracle.sol}/PTExpiry.json +1 -1
  98. package/build/artifacts/contracts/oracles/internal/PendleSparkLinearDiscountOracle.sol/PendleSparkLinearDiscountOracle.dbg.json +4 -0
  99. package/build/artifacts/contracts/oracles/{PendleSparkLinearDiscountOracle.sol → internal/PendleSparkLinearDiscountOracle.sol}/PendleSparkLinearDiscountOracle.json +3 -3
  100. package/build/artifacts/contracts/router/ActionAddRemoveLiqV3.sol/ActionAddRemoveLiqV3.dbg.json +1 -1
  101. package/build/artifacts/contracts/router/ActionAddRemoveLiqV3.sol/ActionAddRemoveLiqV3.json +2 -198
  102. package/build/artifacts/contracts/router/ActionCallbackV3.sol/ActionCallbackV3.dbg.json +1 -1
  103. package/build/artifacts/contracts/router/ActionCallbackV3.sol/ActionCallbackV3.json +2 -2
  104. package/build/artifacts/contracts/router/ActionMiscV3.sol/ActionMiscV3.dbg.json +1 -1
  105. package/build/artifacts/contracts/router/ActionMiscV3.sol/ActionMiscV3.json +80 -198
  106. package/build/artifacts/contracts/router/ActionSimple.sol/ActionSimple.dbg.json +1 -1
  107. package/build/artifacts/contracts/router/ActionSimple.sol/ActionSimple.json +2 -198
  108. package/build/artifacts/contracts/router/ActionStorageV4.sol/ActionStorageV4.dbg.json +1 -1
  109. package/build/artifacts/contracts/router/ActionStorageV4.sol/ActionStorageV4.json +2 -198
  110. package/build/artifacts/contracts/router/ActionSwapPTV3.sol/ActionSwapPTV3.dbg.json +1 -1
  111. package/build/artifacts/contracts/router/ActionSwapPTV3.sol/ActionSwapPTV3.json +2 -198
  112. package/build/artifacts/contracts/router/ActionSwapYTV3.sol/ActionSwapYTV3.dbg.json +1 -1
  113. package/build/artifacts/contracts/router/ActionSwapYTV3.sol/ActionSwapYTV3.json +2 -198
  114. package/build/artifacts/contracts/router/PendleRouterV4.sol/PendleRouterV4.dbg.json +1 -1
  115. package/build/artifacts/contracts/router/PendleRouterV4.sol/PendleRouterV4.json +2 -2
  116. package/build/artifacts/contracts/router/Reflector.sol/Reflector.dbg.json +1 -1
  117. package/build/artifacts/contracts/router/Reflector.sol/Reflector.json +2 -2
  118. package/build/artifacts/contracts/router/base/ActionBase.sol/ActionBase.dbg.json +1 -1
  119. package/build/artifacts/contracts/router/base/ActionDelegateBase.sol/ActionDelegateBase.dbg.json +1 -1
  120. package/build/artifacts/contracts/router/base/ActionDelegateBase.sol/ActionDelegateBase.json +2 -2
  121. package/build/artifacts/contracts/router/math/ApproxStateLib.sol/ApproxStateLib.dbg.json +1 -1
  122. package/build/artifacts/contracts/router/math/ApproxStateLib.sol/ApproxStateLib.json +2 -2
  123. package/build/artifacts/contracts/router/math/MarketApproxLib.sol/MarketApproxPtInLib.dbg.json +1 -1
  124. package/build/artifacts/contracts/router/math/MarketApproxLib.sol/MarketApproxPtInLib.json +2 -2
  125. package/build/artifacts/contracts/router/math/MarketApproxLib.sol/MarketApproxPtOutLib.dbg.json +1 -1
  126. package/build/artifacts/contracts/router/math/MarketApproxLib.sol/MarketApproxPtOutLib.json +2 -2
  127. package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtInLibOnchain.dbg.json +1 -1
  128. package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtInLibOnchain.json +2 -2
  129. package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtOutLibOnchain.dbg.json +1 -1
  130. package/build/artifacts/contracts/router/math/MarketApproxLibOnchain.sol/MarketApproxPtOutLibOnchain.json +2 -2
  131. package/contracts/core/StandardizedYield/implementations/Lombard/PendleLBTCBaseSY.sol +121 -0
  132. package/contracts/interfaces/IPActionAddRemoveLiqV3.sol +6 -6
  133. package/contracts/interfaces/IPActionMiscV3.sol +8 -2
  134. package/contracts/interfaces/IPActionSwapPTV3.sol +4 -4
  135. package/contracts/interfaces/IPActionSwapYTV3.sol +4 -4
  136. package/contracts/interfaces/IPAllActionTypeV3.sol +0 -4
  137. package/contracts/interfaces/IPAllActionV3.sol +1 -3
  138. package/contracts/interfaces/IPAllEventsV3.sol +1 -44
  139. package/contracts/interfaces/IPChainlinkOracle.sol +11 -0
  140. package/contracts/interfaces/IPChainlinkOracleFactory.sol +22 -0
  141. package/contracts/interfaces/IPChainlinkOracleWithQuote.sol +8 -0
  142. package/contracts/interfaces/IPLimitRouter.sol +22 -12
  143. package/contracts/interfaces/IPPYLpOracle.sol +3 -4
  144. package/contracts/interfaces/Lombard/ILBTCMinterBase.sol +12 -0
  145. package/contracts/oracles/{PendlePYLpOracle.sol → PtYtLpOracle/PendlePYLpOracle.sol} +2 -2
  146. package/contracts/oracles/{PendlePYOracleLib.sol → PtYtLpOracle/PendlePYOracleLib.sol} +2 -2
  147. package/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracle.sol +134 -0
  148. package/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleFactory.sol +121 -0
  149. package/contracts/oracles/PtYtLpOracle/chainlink/PendleChainlinkOracleWithQuote.sol +50 -0
  150. package/contracts/oracles/{samples → PtYtLpOracle/samples}/BoringLpGlpOracle.sol +3 -3
  151. package/contracts/oracles/{samples → PtYtLpOracle/samples}/BoringLpSeller.sol +1 -1
  152. package/contracts/oracles/{samples → PtYtLpOracle/samples}/BoringPYUsdChainlinkAssetOracle.sol +3 -3
  153. package/contracts/oracles/{samples → PtYtLpOracle/samples}/BoringPYUsdChainlinkSYOracle.sol +3 -3
  154. package/contracts/oracles/{samples → PtYtLpOracle/samples}/BoringPtSeller.sol +1 -1
  155. package/contracts/oracles/{PendleBoringOneracle.sol → internal/PendleBoringOneracle.sol} +2 -2
  156. package/contracts/oracles/{PendleBoringSolvBTCOneracle.sol → internal/PendleBoringSolvBTCOneracle.sol} +2 -2
  157. package/contracts/oracles/{PendleRedStoneRateOracleAdapter.sol → internal/PendleRedStoneRateOracleAdapter.sol} +3 -3
  158. package/contracts/router/ActionAddRemoveLiqV3.sol +9 -9
  159. package/contracts/router/ActionMiscV3.sol +17 -3
  160. package/contracts/router/ActionSwapPTV3.sol +4 -4
  161. package/contracts/router/ActionSwapYTV3.sol +4 -4
  162. package/contracts/router/base/ActionBase.sol +12 -35
  163. package/contracts/router/base/ActionDelegateBase.sol +1 -1
  164. package/deployments/1-core.json +1 -1
  165. package/deployments/1-markets/MORPHO-PWBTC-JUN2025.json +14 -0
  166. package/deployments/8453-markets/CBETH-BASE-DEC2025.json +14 -0
  167. package/deployments/8453-markets/LBTC-BASE-MAY2025.json +14 -0
  168. package/package.json +1 -1
  169. package/typechain-types/ActionAddRemoveLiqV3.ts +0 -148
  170. package/typechain-types/ActionMiscV3.ts +44 -148
  171. package/typechain-types/ActionSimple.ts +0 -148
  172. package/typechain-types/ActionStorageStatic.ts +0 -148
  173. package/typechain-types/ActionStorageV4.ts +0 -148
  174. package/typechain-types/ActionSwapPTV3.ts +0 -148
  175. package/typechain-types/ActionSwapYTV3.ts +0 -148
  176. package/typechain-types/ILBTCMinterBase.ts +159 -0
  177. package/typechain-types/IPActionAddRemoveLiqV3.ts +0 -148
  178. package/typechain-types/IPActionMiscV3.ts +44 -148
  179. package/typechain-types/IPActionSimple.ts +0 -148
  180. package/typechain-types/IPActionStorageStatic.ts +0 -148
  181. package/typechain-types/IPActionStorageV4.ts +0 -148
  182. package/typechain-types/IPActionSwapPTV3.ts +0 -148
  183. package/typechain-types/IPActionSwapYTV3.ts +0 -148
  184. package/typechain-types/IPAllActionV3.ts +20 -390
  185. package/typechain-types/IPAllEventsV3.ts +0 -148
  186. package/typechain-types/IPLimitRouter.ts +36 -0
  187. package/typechain-types/IPPYLpOracle.ts +21 -0
  188. package/typechain-types/IPRouterStatic.ts +0 -148
  189. package/typechain-types/PendleLBTCBaseSY.ts +1470 -0
  190. package/typechain-types/factories/ActionAddRemoveLiqV3__factory.ts +1 -197
  191. package/typechain-types/factories/ActionCallbackV3__factory.ts +1 -1
  192. package/typechain-types/factories/ActionInfoStatic__factory.ts +1 -1
  193. package/typechain-types/factories/ActionMarketAuxStatic__factory.ts +1 -1
  194. package/typechain-types/factories/ActionMarketCoreStatic__factory.ts +1 -1
  195. package/typechain-types/factories/ActionMintRedeemStatic__factory.ts +1 -1
  196. package/typechain-types/factories/ActionMiscV3__factory.ts +79 -197
  197. package/typechain-types/factories/ActionSimple__factory.ts +1 -197
  198. package/typechain-types/factories/ActionStorageStatic__factory.ts +1 -197
  199. package/typechain-types/factories/ActionStorageV4__factory.ts +1 -197
  200. package/typechain-types/factories/ActionSwapPTV3__factory.ts +1 -197
  201. package/typechain-types/factories/ActionSwapYTV3__factory.ts +1 -197
  202. package/typechain-types/factories/ActionVePendleStatic__factory.ts +1 -1
  203. package/typechain-types/factories/BoringLpGlpOracle__factory.ts +1 -1
  204. package/typechain-types/factories/BoringPYUsdChainlinkAssetOracle__factory.ts +1 -1
  205. package/typechain-types/factories/BoringPYUsdChainlinkSYOracle__factory.ts +1 -1
  206. package/typechain-types/factories/ILBTCMinterBase__factory.ts +78 -0
  207. package/typechain-types/factories/IPActionAddRemoveLiqV3__factory.ts +0 -196
  208. package/typechain-types/factories/IPActionMiscV3__factory.ts +78 -196
  209. package/typechain-types/factories/IPActionSimple__factory.ts +0 -196
  210. package/typechain-types/factories/IPActionStorageStatic__factory.ts +0 -196
  211. package/typechain-types/factories/IPActionStorageV4__factory.ts +0 -196
  212. package/typechain-types/factories/IPActionSwapPTV3__factory.ts +0 -196
  213. package/typechain-types/factories/IPActionSwapYTV3__factory.ts +0 -196
  214. package/typechain-types/factories/IPAllActionV3__factory.ts +16 -1188
  215. package/typechain-types/factories/IPAllEventsV3__factory.ts +0 -196
  216. package/typechain-types/factories/IPLimitRouter__factory.ts +96 -0
  217. package/typechain-types/factories/IPPYLpOracle__factory.ts +13 -0
  218. package/typechain-types/factories/IPRouterStatic__factory.ts +0 -196
  219. package/typechain-types/factories/LimitBackendHelper__factory.ts +1 -1
  220. package/typechain-types/factories/PendleBoringOneracle__factory.ts +1 -1
  221. package/typechain-types/factories/PendleBoringSolvBTCOneracle__factory.ts +1 -1
  222. package/typechain-types/factories/PendleChainlinkOracleFactory__factory.ts +1 -1
  223. package/typechain-types/factories/PendleChainlinkOracleWithQuote__factory.ts +1 -49
  224. package/typechain-types/factories/PendleChainlinkOracle__factory.ts +1 -49
  225. package/typechain-types/factories/PendleLBTCBaseSY__factory.ts +1164 -0
  226. package/typechain-types/factories/PendleLimitRouter__factory.ts +1 -1
  227. package/typechain-types/factories/PendlePYLpOracle__factory.ts +1 -1
  228. package/typechain-types/factories/PendlePoolDeployHelper__factory.ts +1 -1
  229. package/typechain-types/factories/PendleRedStoneRateOracleAdapter__factory.ts +1 -1
  230. package/typechain-types/factories/PendleRouterStatic__factory.ts +1 -1
  231. package/typechain-types/factories/PendleRouterV4__factory.ts +1 -1
  232. package/typechain-types/factories/PendleSparkLinearDiscountOracle__factory.ts +1 -1
  233. package/typechain-types/factories/Reflector__factory.ts +1 -1
  234. package/typechain-types/hardhat.d.ts +180 -27
  235. package/typechain-types/index.ts +18 -8
  236. package/build/artifacts/contracts/interfaces/IPActionSwapLimitV3.sol/IPActionSwapLimitV3.dbg.json +0 -4
  237. package/build/artifacts/contracts/interfaces/IPActionSwapLimitV3.sol/IPActionSwapLimitV3.json +0 -2638
  238. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionSwapLimitV3Events.dbg.json +0 -4
  239. package/build/artifacts/contracts/interfaces/IPAllEventsV3.sol/IPActionSwapLimitV3Events.json +0 -207
  240. package/build/artifacts/contracts/oracles/PendleBoringOneracle.sol/PendleBoringOneracle.dbg.json +0 -4
  241. package/build/artifacts/contracts/oracles/PendleBoringSolvBTCOneracle.sol/PendleBoringSolvBTCOneracle.dbg.json +0 -4
  242. package/build/artifacts/contracts/oracles/PendleLpOracleLib.sol/PendleLpOracleLib.dbg.json +0 -4
  243. package/build/artifacts/contracts/oracles/PendlePYLpOracle.sol/PendlePYLpOracle.dbg.json +0 -4
  244. package/build/artifacts/contracts/oracles/PendlePYOracleLib.sol/PendlePYOracleLib.dbg.json +0 -4
  245. package/build/artifacts/contracts/oracles/PendleRedStoneRateOracleAdapter.sol/PendleRedStoneRateOracleAdapter.dbg.json +0 -4
  246. package/build/artifacts/contracts/oracles/PendleSparkLinearDiscountOracle.sol/PTExpiry.dbg.json +0 -4
  247. package/build/artifacts/contracts/oracles/PendleSparkLinearDiscountOracle.sol/PendleSparkLinearDiscountOracle.dbg.json +0 -4
  248. package/build/artifacts/contracts/oracles/samples/BoringLpGlpOracle.sol/BoringLpGlpOracle.dbg.json +0 -4
  249. package/build/artifacts/contracts/oracles/samples/BoringLpSeller.sol/BoringLpSeller.dbg.json +0 -4
  250. package/build/artifacts/contracts/oracles/samples/BoringPYUsdChainlinkAssetOracle.sol/BoringPYUsdChainlinkAssetOracle.dbg.json +0 -4
  251. package/build/artifacts/contracts/oracles/samples/BoringPYUsdChainlinkSYOracle.sol/BoringPYUsdChainlinkSYOracle.dbg.json +0 -4
  252. package/build/artifacts/contracts/oracles/samples/BoringPtSeller.sol/BoringPtSeller.dbg.json +0 -4
  253. package/build/artifacts/contracts/router/ActionSwapLimitV3.sol/ActionSwapLimitV3.dbg.json +0 -4
  254. package/build/artifacts/contracts/router/ActionSwapLimitV3.sol/ActionSwapLimitV3.json +0 -2638
  255. package/contracts/interfaces/IPActionSwapLimitV3.sol +0 -42
  256. package/contracts/router/ActionSwapLimitV3.sol +0 -126
  257. /package/contracts/oracles/{PendleLpOracleLib.sol → PtYtLpOracle/PendleLpOracleLib.sol} +0 -0
  258. /package/contracts/oracles/{PendleSparkLinearDiscountOracle.sol → internal/PendleSparkLinearDiscountOracle.sol} +0 -0
@@ -1190,202 +1190,6 @@ const _abi = [
1190
1190
  name: "SelectorToFacetSet",
1191
1191
  type: "event",
1192
1192
  },
1193
- {
1194
- anonymous: false,
1195
- inputs: [
1196
- {
1197
- indexed: true,
1198
- internalType: "address",
1199
- name: "caller",
1200
- type: "address",
1201
- },
1202
- {
1203
- indexed: true,
1204
- internalType: "address",
1205
- name: "market",
1206
- type: "address",
1207
- },
1208
- {
1209
- indexed: true,
1210
- internalType: "address",
1211
- name: "receiver",
1212
- type: "address",
1213
- },
1214
- {
1215
- indexed: false,
1216
- internalType: "uint256",
1217
- name: "maxPtIn",
1218
- type: "uint256",
1219
- },
1220
- {
1221
- indexed: false,
1222
- internalType: "uint256",
1223
- name: "netSyOut",
1224
- type: "uint256",
1225
- },
1226
- {
1227
- indexed: false,
1228
- internalType: "uint256",
1229
- name: "netPtReturned",
1230
- type: "uint256",
1231
- },
1232
- ],
1233
- name: "SwapMaxPtForSyLimitOnly",
1234
- type: "event",
1235
- },
1236
- {
1237
- anonymous: false,
1238
- inputs: [
1239
- {
1240
- indexed: true,
1241
- internalType: "address",
1242
- name: "caller",
1243
- type: "address",
1244
- },
1245
- {
1246
- indexed: true,
1247
- internalType: "address",
1248
- name: "market",
1249
- type: "address",
1250
- },
1251
- {
1252
- indexed: true,
1253
- internalType: "address",
1254
- name: "token",
1255
- type: "address",
1256
- },
1257
- {
1258
- indexed: false,
1259
- internalType: "address",
1260
- name: "receiver",
1261
- type: "address",
1262
- },
1263
- {
1264
- indexed: false,
1265
- internalType: "uint256",
1266
- name: "maxPtIn",
1267
- type: "uint256",
1268
- },
1269
- {
1270
- indexed: false,
1271
- internalType: "uint256",
1272
- name: "netTokenOut",
1273
- type: "uint256",
1274
- },
1275
- {
1276
- indexed: false,
1277
- internalType: "uint256",
1278
- name: "netSyInterm",
1279
- type: "uint256",
1280
- },
1281
- {
1282
- indexed: false,
1283
- internalType: "uint256",
1284
- name: "netPtReturned",
1285
- type: "uint256",
1286
- },
1287
- ],
1288
- name: "SwapMaxPtForTokenLimitOnly",
1289
- type: "event",
1290
- },
1291
- {
1292
- anonymous: false,
1293
- inputs: [
1294
- {
1295
- indexed: true,
1296
- internalType: "address",
1297
- name: "caller",
1298
- type: "address",
1299
- },
1300
- {
1301
- indexed: true,
1302
- internalType: "address",
1303
- name: "market",
1304
- type: "address",
1305
- },
1306
- {
1307
- indexed: true,
1308
- internalType: "address",
1309
- name: "receiver",
1310
- type: "address",
1311
- },
1312
- {
1313
- indexed: false,
1314
- internalType: "uint256",
1315
- name: "maxSyIn",
1316
- type: "uint256",
1317
- },
1318
- {
1319
- indexed: false,
1320
- internalType: "uint256",
1321
- name: "netYtOut",
1322
- type: "uint256",
1323
- },
1324
- {
1325
- indexed: false,
1326
- internalType: "uint256",
1327
- name: "netSyReturned",
1328
- type: "uint256",
1329
- },
1330
- ],
1331
- name: "SwapMaxSyForYtLimitOnly",
1332
- type: "event",
1333
- },
1334
- {
1335
- anonymous: false,
1336
- inputs: [
1337
- {
1338
- indexed: true,
1339
- internalType: "address",
1340
- name: "caller",
1341
- type: "address",
1342
- },
1343
- {
1344
- indexed: true,
1345
- internalType: "address",
1346
- name: "market",
1347
- type: "address",
1348
- },
1349
- {
1350
- indexed: true,
1351
- internalType: "address",
1352
- name: "token",
1353
- type: "address",
1354
- },
1355
- {
1356
- indexed: false,
1357
- internalType: "address",
1358
- name: "receiver",
1359
- type: "address",
1360
- },
1361
- {
1362
- indexed: false,
1363
- internalType: "uint256",
1364
- name: "maxTokenIn",
1365
- type: "uint256",
1366
- },
1367
- {
1368
- indexed: false,
1369
- internalType: "uint256",
1370
- name: "netYtOut",
1371
- type: "uint256",
1372
- },
1373
- {
1374
- indexed: false,
1375
- internalType: "uint256",
1376
- name: "netSyInterm",
1377
- type: "uint256",
1378
- },
1379
- {
1380
- indexed: false,
1381
- internalType: "uint256",
1382
- name: "netSyReturned",
1383
- type: "uint256",
1384
- },
1385
- ],
1386
- name: "SwapMaxTokenForYtLimitOnly",
1387
- type: "event",
1388
- },
1389
1193
  {
1390
1194
  anonymous: false,
1391
1195
  inputs: [
@@ -3068,6 +2872,84 @@ const _abi = [
3068
2872
  stateMutability: "payable",
3069
2873
  type: "function",
3070
2874
  },
2875
+ {
2876
+ inputs: [
2877
+ {
2878
+ internalType: "address",
2879
+ name: "receiver",
2880
+ type: "address",
2881
+ },
2882
+ {
2883
+ internalType: "uint256",
2884
+ name: "minTokenOut",
2885
+ type: "uint256",
2886
+ },
2887
+ {
2888
+ components: [
2889
+ {
2890
+ internalType: "address",
2891
+ name: "tokenIn",
2892
+ type: "address",
2893
+ },
2894
+ {
2895
+ internalType: "uint256",
2896
+ name: "netTokenIn",
2897
+ type: "uint256",
2898
+ },
2899
+ {
2900
+ internalType: "address",
2901
+ name: "tokenMintSy",
2902
+ type: "address",
2903
+ },
2904
+ {
2905
+ internalType: "address",
2906
+ name: "pendleSwap",
2907
+ type: "address",
2908
+ },
2909
+ {
2910
+ components: [
2911
+ {
2912
+ internalType: "enum SwapType",
2913
+ name: "swapType",
2914
+ type: "uint8",
2915
+ },
2916
+ {
2917
+ internalType: "address",
2918
+ name: "extRouter",
2919
+ type: "address",
2920
+ },
2921
+ {
2922
+ internalType: "bytes",
2923
+ name: "extCalldata",
2924
+ type: "bytes",
2925
+ },
2926
+ {
2927
+ internalType: "bool",
2928
+ name: "needScale",
2929
+ type: "bool",
2930
+ },
2931
+ ],
2932
+ internalType: "struct SwapData",
2933
+ name: "swapData",
2934
+ type: "tuple",
2935
+ },
2936
+ ],
2937
+ internalType: "struct TokenInput",
2938
+ name: "inp",
2939
+ type: "tuple",
2940
+ },
2941
+ ],
2942
+ name: "swapTokenToToken",
2943
+ outputs: [
2944
+ {
2945
+ internalType: "uint256",
2946
+ name: "netTokenOut",
2947
+ type: "uint256",
2948
+ },
2949
+ ],
2950
+ stateMutability: "payable",
2951
+ type: "function",
2952
+ },
3071
2953
  {
3072
2954
  inputs: [
3073
2955
  {
@@ -3237,7 +3119,7 @@ const _abi = [
3237
3119
  ];
3238
3120
 
3239
3121
  const _bytecode =
3240
- "0x6080806040523461001757615fba90816200001d8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80630741a803146101375780631a8631b2146101325780632d8f9d8d1461012d5780632e071dc614610128578063339748cb14610123578063339a55721461011e57806347f1de221461011957806360fc8466146101145780637036e0521461010f5780638354a5e51461010a5780639fa02c8614610105578063a373cf1a14610100578063a89eba4a146100fb578063bd61951d146100f6578063c2d6d65d146100f1578063d0f42385146100ec578063f06a07a0146100e75763f7e375e8146100e257600080fd5b61247c565b612340565b61215f565b61208a565b611f97565b611e5d565b611d54565b611b85565b6116a5565b61159b565b6110ff565b610d7d565b610b12565b6108d4565b610799565b610671565b610335565b6101fb565b9181601f8401121561016d5782359167ffffffffffffffff831161016d576020808501948460051b01011161016d57565b600080fd5b73ffffffffffffffffffffffffffffffffffffffff81160361016d57565b6064359061019d82610172565b565b90815180825260208080930193019160005b8281106101bf575050505090565b8351855293810193928101926001016101b1565b90916101ea6101f89360408452604084019061019f565b91602081840391015261019f565b90565b3461016d5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5767ffffffffffffffff60043581811161016d5761024b90369060040161013c565b91906024359082821161016d573660238301121561016d57816004013583811161016d5736602460a083028501011161016d5760443584811161016d5761029690369060040161013c565b9161029f610190565b9360843596871161016d576102c8976102be602498369060040161013c565b989097019161273a565b906102d8604051928392836101d3565b0390f35b359061019d82610172565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc608091011261016d5760043561031d81610172565b9060243561032a81610172565b906044359060643590565b3461016d57610343366102e7565b909273ffffffffffffffffffffffffffffffffffffffff9384841692604051947fafd27bf50000000000000000000000000000000000000000000000000000000086526020958681600481895afa91821561050157849160009361051b575b5081610506575b50506040517fdb74aa1500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482018190526024820152905085816044816000895af1958615610501576000966104d2575b5050841061046f577f52e05e4badd3463bad837f42fe3ba58c739d1b3081cff9bb6eb02a24034d455d6102d8956040519316928061045c8733958360209093929193604081019481520152565b0390a46040519081529081906020820190565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f536c6970706167653a20494e53554646494349454e545f50545f59545f4f55546044820152606490fd5b0390fd5b6104f2929650803d106104fa575b6104ea81836105ca565b81019061352e565b93388061040f565b503d6104e0565b612cfc565b610513928933911661517b565b3882816103a9565b61053c919350883d8a11610543575b61053481836105ca565b810190612ce7565b91386103a2565b503d61052a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff82111761059557604052565b61054a565b6060810190811067ffffffffffffffff82111761059557604052565b67ffffffffffffffff811161059557604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761059557604052565b6040519061019d82610579565b60405190610180820182811067ffffffffffffffff82111761059557604052565b6040519060a0820182811067ffffffffffffffff82111761059557604052565b67ffffffffffffffff81116105955760051b60200190565b3461016d576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5760043567ffffffffffffffff811161016d573660238201121561016d578060040135906106cd82610659565b916106db60405193846105ca565b8083526024602084019160051b8301019136831161016d57602401905b82821061070a5761070884612d7c565b005b848091833561071881610172565b8152019101906106f8565b908160a091031261016d5790565b9060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261016d5760043561076881610172565b9160243561077581610172565b91604435916064359067ffffffffffffffff821161016d576101f891600401610723565b60206107f36107a736610731565b8094916107ba60808396959601836134d4565b356107c481611254565b6107cd81613a69565b8061086757506107dc82612e6c565b6107ec8884013580923390613f79565b8585614a4a565b927f71c7a44161eb32e4640f6c8f0586db5f1d2e03306e2c63bb2e0f7cd0a8fc690c81359361082185610172565b6040805173ffffffffffffffffffffffffffffffffffffffff9586168152938801356020850152830186905283169390921691339180606081015b0390a4604051908152f35b80610873600392613a69565b036108b55761088182612e6c565b6108918884013580923390613f79565b6108b08161089e85612e6c565b6108aa60408701612e6c565b906148da565b6107ec565b6108be82614764565b6108b060408301356108cf81610172565b614871565b3461016d576108e2366102e7565b91929073ffffffffffffffffffffffffffffffffffffffff91828516916040938451967fd94073d40000000000000000000000000000000000000000000000000000000088526020978881600481895afa80156105015782859161095293600091610af5575b5085339116614743565b85517f2f13b60c0000000000000000000000000000000000000000000000000000000081528881600481895afa8015610501578491600091610ac8575b5015610ab6575b505084517fbcb7ea5d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201529587876024816000895af196871561050157600097610a97575b508610610a3957845191825260208201869052919091169033907f31af33f80f4b396e3d4e42b38ecd3e022883a9bf689fd63f47afbe1d389cb6e790604090a451908152f35b84517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f536c6970706167653a20494e53554646494349454e545f53595f4f55540000006044820152606490fd5b610aaf919750883d8a116104fa576104ea81836105ca565b95386109f3565b610ac1913387614743565b3882610996565b610ae891508a3d8c11610aee575b610ae081836105ca565b810190612d67565b3861098f565b503d610ad6565b610b0c91508c8d3d106105435761053481836105ca565b38610948565b3461016d57610b2036610731565b929190600060808501610b3b610b3682886134d4565b613aa2565b610b4481613a69565b80610c4757505050610b5884828486614afe565b925b60208501358410610be8577fcd34b6ac7e4b72ab30845649aef2f4fd41945ae2dc08f625be69738bbd0f9aa96020953593610b9485610172565b73ffffffffffffffffffffffffffffffffffffffff9061085c87836040519485941698169633968460409194939273ffffffffffffffffffffffffffffffffffffffff606083019616825260208201520152565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f536c6970706167653a20494e53554646494349454e545f544f4b454e5f4f55546044820152606490fd5b80610c53600392613a69565b03610c98575050610c6684828430614afe565b92610c8084610c7760408801612e6c565b6108aa88612e6c565b610c938482610c8e88612e6c565b614c37565b610b5a565b60608601610cd8610cbf610cbf610cb98a888a610cb488612e6c565b614afe565b93612e6c565b73ffffffffffffffffffffffffffffffffffffffff1690565b90610cef610ce860408a01612e6c565b93896134d4565b92823b15610d79576040517f2bdb823c0000000000000000000000000000000000000000000000000000000081529493859392849286928492610d359260048501613bac565b03925af1801561050157610d60575b50610d516108cf85612e6c565b92610c938482610c8e88612e6c565b80610d6d610d73926105b6565b80613b57565b38610d44565b8480fd5b3461016d57610d8b36610731565b909273ffffffffffffffffffffffffffffffffffffffff938484169060409283517fafd27bf50000000000000000000000000000000000000000000000000000000081526020968782600481885afa91821561050157600092610fe3575b5085517fd94073d40000000000000000000000000000000000000000000000000000000081528881600481895afa801561050157828691610e3693600091610fc6575b508c339116614743565b85517f2f13b60c0000000000000000000000000000000000000000000000000000000081528881600481895afa8015610501578591600091610fa9575b5015610f97575b505084517fbcb7ea5d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015287816024816000895af197881561050157600098610f78575b505060018710610a39578697610f13876102d898997f5f2e0499a3b6a21fd5e1fac44ac47c9aa7c3afa39076d67162a4993411d496da9486613c80565b9735610f1e81610172565b610f5f8a8a895194859416973397859094939260609273ffffffffffffffffffffffffffffffffffffffff6080840197168352602083015260408201520152565b0390a45191825260208201929092529081906040820190565b610f8f929850803d106104fa576104ea81836105ca565b953880610ed6565b610fa2913387614743565b3883610e7a565b610fc091508a3d8c11610aee57610ae081836105ca565b38610e73565b610fdd91508c8d3d106105435761053481836105ca565b38610e2c565b610ffb919250883d8a116105435761053481836105ca565b9038610de9565b60005b8381106110155750506000910152565b8181015183820152602001611005565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f60209361106181518092818752878088019101611002565b0116010190565b6020808201908083528351809252604092604081018260408560051b8401019601946000925b85841061109f575050505050505090565b9091929394959685806110ee837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0866001960301885286838d5180511515845201519181858201520190611025565b99019401940192959493919061108e565b6020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5760043567ffffffffffffffff811161016d5761114a90369060040161013c565b9161115483610659565b92604061116460405195866105ca565b8185527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061119183610659565b01906000908460005b84811061123257505050505060005b8181106111be57604051806102d88782611068565b806112006111fb6111de6111d5600195878a612e76565b87810190612eb6565b91906111f36111ee86898c612e76565b612f07565b9236916112a3565b613e0a565b61121261120b61060b565b9215158352565b858201526112208288612d49565b5261122b8187612d49565b50016111a9565b825161123d81610579565b84815260608382015282828b01015201859061119a565b6004111561016d57565b359061019d82611254565b67ffffffffffffffff811161059557601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b9291926112af82611269565b916112bd60405193846105ca565b82948184528183011161016d578281602093846000960137010152565b9080601f8301121561016d578160206101f8933591016112a3565b9080601f8301121561016d5781359160209161131084610659565b93604092611320845196876105ca565b818652848087019260051b8201019383851161016d57858201925b85841061134c575050505050505090565b67ffffffffffffffff843581811161016d5784019160607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908082868b03011261016d5785519161139c8361059a565b8b86013585811161016d578601906101808091838d03011261016d576113c0610618565b8d8301358152888301358e8201528383013589820152916080916113e583830161125e565b8585015260a0926113f78484016102dc565b9085015260c0926114098484016102dc565b9085015260e09261141b8484016102dc565b908501526101009261142e8484016102dc565b9085015261012092838301359085015261014092838301359085015261016092838301359085015281013587811161016d578e8d9161146e9301016112da565b9082015282528585013593841161016d57846114918a8d809897819801016112da565b8584015201358582015281520193019261133b565b91909160a08184031261016d576114bb610639565b926114c5826102dc565b845260208201356020850152604082013567ffffffffffffffff9081811161016d57826114f39185016112f5565b6040860152606083013581811161016d57826115109185016112f5565b6060860152608083013590811161016d5761152b92016112da565b6080830152565b91602061019d92949361014081019581520190805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e083015261010080910151910152565b3461016d5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d576004356115d681610172565b6024356115e281610172565b67ffffffffffffffff9160a43583811161016d57611604903690600401610723565b9060c43593841161016d576116206116329436906004016114a6565b92608435916064359160443591612f68565b906102d860405192839283611532565b61019d90929192610120810193805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e083015261010080910151910152565b3461016d5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d576004356116e081610172565b6024356116ec81610172565b6044359160843560c43567ffffffffffffffff811161016d576117139036906004016114a6565b9061171c612f11565b50611725612f11565b9373ffffffffffffffffffffffffffffffffffffffff9081811693604051917f2c8ce6bc000000000000000000000000000000000000000000000000000000008352606083600481895afa92831561050157600093600091600091611aea575b5086611a35575b8a611a23575b6117a86064356117a38d8d51613eb2565b614d5c565b9a60408b019b808d5280611923575b50918a9161180d6102d89d60806117ff6117f77f5d98132a999dd75863cdd284a57d3eb44c9b14d38240d22576dea4f09a73626e9c9b9a99988851613eb2565b835190613ec4565b950194855251606435613ec4565b60a08d018181528451919791156118cb57505050611854945061183f61183961183586615458565b1590565b84615b53565b9030878316036118b6575b5050519088614ffc565b60e088015260c08701525b611894611883611878602089015160608a015190613eb2565b60c089015190613eb2565b8061010089015260a435111561341f565b604051941693806118a787339583611532565b0390a460405191829182611642565b6118c4918784519216614c37565b388061184a565b9193509150856118e1575b50505050505061185f565b61190661190e966118fd6118f761183589615458565b86615474565b338a8716614743565b51928a614da0565b60e088015260c08701523880808080806118d6565b9160206119a3898f6119529061194960009884989e889e9d9c9b999e1680958a16614c37565b51823381614743565b6040517fbcb7ea5d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8f16600482015295869283919082906024820190565b03925af1928315610501576102d89d60806117ff8f967f5d98132a999dd75863cdd284a57d3eb44c9b14d38240d22576dea4f09a73626e9c6117f79161180d96600091611a04575b5060608a01529698999a9b9c505050509d5050916117b7565b611a1d915060203d6020116104fa576104ea81836105ca565b386119eb565b611a308b33888516613f79565b611792565b611a418784338b614743565b604080517ff6b911bc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b16600482015230602482015260448101899052908160648160008d5af1801561050157600091600091611ab9575b508b5260208b015261178c565b9050611add915060403d604011611ae3575b611ad581836105ca565b810190613e6d565b38611aac565b503d611acb565b915050611b1091935060603d606011611b19575b611b0881836105ca565b810190613e3a565b91939138611785565b503d611afe565b9181601f8401121561016d5782359167ffffffffffffffff831161016d576020838186019501011161016d57565b91611b7790611b696101f89593606086526060860190611025565b908482036020860152611025565b916040818403910152611025565b60807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57600435611bbb81610172565b67ffffffffffffffff9060243582811161016d57611bdd903690600401611b20565b92909160443582811161016d57611bf8903690600401611b20565b93906064359084821161016d57611c2b611c19611c26933690600401611b20565b93909460609936916112a3565b613dd4565b96809150611d01575b505073ffffffffffffffffffffffffffffffffffffffff9392611c5e600093611c9c9336916112a3565b836040519687809581947fef409363000000000000000000000000000000000000000000000000000000008352602060048401526024830190611025565b0393165af191821561050157600092611cc2575b50506102d89060405193849384611b4e565b3d8084833e611cd181836105ca565b810192602082850312611cfe578151928311611cfe575091611cf7916102d89301613ed1565b9038611cb0565b80fd5b611c9c929750600093611d33611c2673ffffffffffffffffffffffffffffffffffffffff989794611c5e9436916112a3565b9050989350935081949550611c34565b9060206101f892818152019061019f565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57600435611d8a81610172565b67ffffffffffffffff60243581811161016d57611dab90369060040161013c565b92909160443590811161016d57611dc690369060040161013c565b611dcf85613485565b9460005b818110611e28575060005b818110611df357604051806102d88982611d43565b80611e1786611e05600194868b613507565b611e1084888a61351e565b3590613ff5565b611e21828a612d49565b5201611dde565b80611e57611e39600193858a613507565b35611e4381610172565b611e4e83878961351e565b35903390613f79565b01611dd3565b60a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57600435611e9381610172565b60243590611ea082610172565b60443567ffffffffffffffff811161016d57611f5291611ec66020923690600401610723565b93611ede60643595611ed787610172565b8280613aac565b6040517f769f8e5d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101829052958316604487015260848035606488015260019087015294938492839160009190839060a4820190565b0393165af190811561050157600091611f78575b50604080519182526020820192909252f35b611f91915060203d6020116104fa576104ea81836105ca565b38611f66565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d57600435611fcd81610172565b60243567ffffffffffffffff811161016d57600091611ff183923690600401611b20565b90816040519283928337810184815203915af461200c61353d565b906104ce6040519283927f1934afc800000000000000000000000000000000000000000000000000000000845215156004840152604060248401526044830190611025565b61019d9092919260a081019360808091805184526020810151602085015260408101516040850152606081015160608501520151910152565b3461016d5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d576102d86004356120c881610172565b6024356120d481610172565b606435916120e061356d565b506120ef8360443584846141d4565b9390506121046084356080860151101561341f565b7f19ded113217988ae612547683a5154518a667a51ba409520760f26303a8a6f5873ffffffffffffffffffffffffffffffffffffffff8060405194169416928061215087339583612301565b0390a460405191829182612051565b61216836610731565b92909173ffffffffffffffffffffffffffffffffffffffff9384821692604051927fafd27bf50000000000000000000000000000000000000000000000000000000084526020938481600481895afa8015610501576121d19285926000926122e2575b50613aac565b6040517fdb74aa1500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201819052602482015290969095848760448160008a5af1968715610501576000976122c3575b50861061046f577f3193c546cf854c6a4c63afa03b04d35e4242c2761af34a4093fc5daa88dd5308916122af888861226e87612e6c565b9360405195869516983398013590859094939260609273ffffffffffffffffffffffffffffffffffffffff6080840197168352602083015260408201520152565b0390a4604080519182526020820192909252f35b6122db919750853d87116104fa576104ea81836105ca565b9538612237565b6122fa919250873d89116105435761053481836105ca565b90386121cb565b91602061019d92949360c08101958152019060808091805184526020810151602085015260408101516040850152606081015160608501520151910152565b3461016d5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5760043561237b81610172565b6024359061238882610172565b6064359160843567ffffffffffffffff811161016d576123ac903690600401610723565b916123b561356d565b50826123c48560443585614414565b956123ee73ffffffffffffffffffffffffffffffffffffffff9384938460808b0151911687613c80565b9535906123fa82610172565b82604051951685526020850152856040850152612442606085018860808091805184526020810151602085015260408101516040850152606081015160608501520151910152565b169216907f6a5433209d35fd4b489a9e43d2bc02e9d1a24430d39be6fff13b4bb52a72a7e06101003392a46102d860405192839283612301565b3461016d5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016d5760048035906124b982610172565b67ffffffffffffffff60243581811161016d576124d9903690840161013c565b93909160443581811161016d576124f3903690860161013c565b909160643590811161016d5761250c903690870161013c565b94909660005b8181106126985750505060005b8181106125e25750505060005b82811061253557005b61254e610cbf610cbf61254984878a61351e565b612e6c565b90600060405180937f9262187b0000000000000000000000000000000000000000000000000000000082528183816125a5898c830191909173ffffffffffffffffffffffffffffffffffffffff6020820193169052565b03925af1918215610501576001926125bf575b500161252c565b6125db903d806000833e6125d381836105ca565b81019061360a565b50386125b8565b806000856125fd610cbf610cbf61254961265c97898b61351e565b89836040518097819582947f7d24da4d0000000000000000000000000000000000000000000000000000000084528301604060019193929373ffffffffffffffffffffffffffffffffffffffff60608201951681528260208201520152565b03925af191821561050157600192612676575b500161251f565b612692903d806000833e61268a81836105ca565b810190613630565b5061266f565b806000876126b3610cbf610cbf61254961270597898b61351e565b8b836040518097819582947fef5cfb8c000000000000000000000000000000000000000000000000000000008452830191909173ffffffffffffffffffffffffffffffffffffffff6020820193169052565b03925af19182156105015760019261271f575b5001612512565b612733903d806000833e6125d381836105ca565b5038612718565b909192939495989698606098801560001461275d5750506101f8969798506136f2565b9391949297985094989561277084613485565b9761277a85613485565b9560005b828110612bef5750505061279183613485565b9960005b848110612a78575060005b82811061295c5750505060005b83811061292f575060005b8281106128095750505060005b8181106127d55750505050509190565b806127f8856127e7600194868a613507565b6127f18488612d49565b5190614166565b6128028289612d49565b52016127c5565b612813818b612d49565b51156129275761282a610cbf6125498386866136e2565b9060405180927fafd27bf500000000000000000000000000000000000000000000000000000000825281600460209384935afa908115610501578988888f96899089956000976128e2575b50509184939173ffffffffffffffffffffffffffffffffffffffff60806128c68a876128c0606060019f846128d09f9e9c6128b3826128ba94612d49565b519d6136e2565b01612e6c565b996136e2565b013596169261457d565b6128da828d612d49565b525b016127b8565b88809850839a8897959383839a989694903d10612920575b61290481836105ca565b810161290f91612ce7565b99509a939550508193959650612875565b503d6128fa565b6001906128dc565b80612956612943612549600194888c613507565b61294d8389612d49565b51903390613f79565b016127ad565b80612970610cbf612549600094878761351e565b6040908151938480927fc4f59f9b00000000000000000000000000000000000000000000000000000000825260049384915afa93841561050157600094612a4a575b50612a0760009283926129cc610cbf612549888c8c61351e565b91517f9262187b0000000000000000000000000000000000000000000000000000000081523391810191825294859384928391602090910190565b03925af18015610501576001938a8a8e612a2995600095612a2f575b506144d3565b016127a0565b612a4391953d8091833e6125d381836105ca565b9338612a23565b600092612a6e612a07928594973d8091833e612a6681836105ca565b81019061365e565b95925092506129b2565b80612a8c610cbf61254960009489896136e2565b8683612b08612aa76020612aa187868d6136e2565b01612f07565b93612aba8a612aa18860409788936136e2565b84517f7d24da4d000000000000000000000000000000000000000000000000000000008152336004808301919091529615156024820152901515604482015296879283919082906064820190565b03925af1938415610501578f6000918296612bc9575b5084612b2991612d49565b52612b3981612aa1858b8b6136e2565b612b4a575b50506001915001612795565b600090612b5e610cbf612549868c8c6136e2565b9051928380927fc4f59f9b0000000000000000000000000000000000000000000000000000000082525afa928315610501576001938a8a8e612ba795600094612bae57506144d3565b3880612b3e565b612bc291943d8091833e612a6681836105ca565b9238612a23565b612b29919650612be49086933d8091833e61268a81836105ca565b929092969150612b1e565b80612c03610cbf612549600094878761351e565b6040908151938480927fc4f59f9b00000000000000000000000000000000000000000000000000000000825260049384915afa93841561050157600094612cc1575b50612c9a6000928392612c5f610cbf612549888c8c61351e565b91517fef5cfb8c0000000000000000000000000000000000000000000000000000000081523391810191825294859384928391602090910190565b03925af18015610501576001938b8b8f612cbb95600095612a2f57506144d3565b0161277e565b600092612cdd612c9a928594973d8091833e612a6681836105ca565b9592509250612c45565b9081602091031261016d57516101f881610172565b6040513d6000823e3d90fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b805115612d445760200190565b612d08565b8051821015612d445760209160051b010190565b8015150361016d57565b9081602091031261016d57516101f881612d5d565b906000805b8351811015612e6657612db7610cbf610cbf612d9d8488612d49565b5173ffffffffffffffffffffffffffffffffffffffff1690565b90612e2d612dc8612d9d8388612d49565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526000604482015292602091829185918290889082906064820190565b03925af192831561050157600193612e48575b505001612d81565b81612e5e92903d10610aee57610ae081836105ca565b503880612e40565b50509050565b356101f881610172565b9190811015612d445760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18136030182121561016d570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561016d570180359067ffffffffffffffff821161016d5760200191813603831361016d57565b356101f881612d5d565b60405190610120820182811067ffffffffffffffff82111761059557604052816101006000918281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201520152565b929195969496939093612f79612f11565b50612f82612f11565b90604051907f2c8ce6bc00000000000000000000000000000000000000000000000000000000825260608260048173ffffffffffffffffffffffffffffffffffffffff8b165afa918215610501576000996000916000946133f7575b50888b8780613324575b505050806132fe575b8a613001886117a3848951613eb2565b806040880152806131f5575b50509173ffffffffffffffffffffffffffffffffffffffff9661315c949261305d61304a61303f89978c9b9a51613eb2565b604088015190613ec4565b9260808701938452604087015190613ec4565b60a0860181815283519195911561319e5750506130a1935061308a61308461183585615458565b8c615b53565b903089831603613189575b50505189878d16614ffc565b60e083015260c08201525b6130e28a6130d16130c66020850151606086015190613eb2565b60c085015190613eb2565b8061010085015286849c1689613c80565b9935926130ee84610172565b846040519716875260208701528960408701526060860190805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e083015261010080910151910152565b169216907fe2e505a9d93e4a8a524a95c07024bbe068fa9972f10bb08f51fd0d0c4e11834a6101803392a4565b613197918984519216614c37565b3880613095565b91509150836131b1575b505050506130ac565b6131d66131e2946131cd6131c761183587615458565b85615474565b338b8616614743565b51908c8b898216614da0565b60e083015260c0820152388080806131a8565b73ffffffffffffffffffffffffffffffffffffffff8085999896949a936132296020948a988461328e9c1694859116614c37565b6132396040890151833381614743565b6000604051809a819582947fbcb7ea5d000000000000000000000000000000000000000000000000000000008452166004830191909173ffffffffffffffffffffffffffffffffffffffff6020820193169052565b03925af19687156105015761305d61304a61303f73ffffffffffffffffffffffffffffffffffffffff9b8c9b61315c9a6000916132df575b5060608a01529597999a5050505092948c91985061300d565b6132f8915060203d6020116104fa576104ea81836105ca565b386132c6565b61331f813373ffffffffffffffffffffffffffffffffffffffff8516613f79565b612ff1565b8260409261334d836133b0963373ffffffffffffffffffffffffffffffffffffffff8216614743565b83517ff6b911bc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015230602482015260448101939093529193849283916000919083906064820190565b0393165af18015610501576000916000916133d6575b5086526020860152888b87612fe8565b90506133f1915060403d604011611ae357611ad581836105ca565b386133c6565b9150925061341591995060603d606011611b1957611b0881836105ca565b9199919238612fde565b1561342657565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f536c6970706167653a20494e53554646494349454e545f53595f4f55540000006044820152606490fd5b9061348f82610659565b61349c60405191826105ca565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06134ca8294610659565b0190602036910137565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818136030182121561016d570190565b90821015612d44576101f89160051b8101906134d4565b9190811015612d445760051b0190565b9081602091031261016d575190565b3d15613568573d9061354e82611269565b9161355c60405193846105ca565b82523d6000602084013e565b606090565b6040519060a0820182811067ffffffffffffffff8211176105955760405260006080838281528260208201528260408201528260608201520152565b9080601f8301121561016d578151906020916135c481610659565b936135d260405195866105ca565b81855260208086019260051b82010192831161016d57602001905b8282106135fb575050505090565b815181529083019083016135ed565b9060208282031261016d57815167ffffffffffffffff811161016d576101f892016135a9565b91909160408184031261016d57805192602082015167ffffffffffffffff811161016d576101f892016135a9565b602090818184031261016d5780519067ffffffffffffffff821161016d57019180601f8401121561016d57825161369481610659565b936136a260405195866105ca565b818552838086019260051b82010192831161016d578301905b8282106136c9575050505090565b83809183516136d781610172565b8152019101906136bb565b9190811015612d445760a0020190565b95949291909561370183613485565b9660005b8181106139eb5750505060005b8281106137a95750505060005b81811061372b57505050565b61373c610cbf61254983858761351e565b6040517f9262187b00000000000000000000000000000000000000000000000000000000815233600482015291906000908390602490829084905af19182156105015760019261378e575b500161371f565b6137a2903d806000833e6125d381836105ca565b5038613787565b6137ba610cbf6125498386866136e2565b906020916137cd83612aa18488886136e2565b906000806138346040936137e685612aa1898d8d6136e2565b85517f7d24da4d000000000000000000000000000000000000000000000000000000008152336004808301919091529715156024820152901515604482015293849283919082906064820190565b03925af1908115610501576000916139d1575b5080156139c55790829185613863610cbf612549888c8c6136e2565b8351948580927fafd27bf50000000000000000000000000000000000000000000000000000000082525afa92831561050157869373ffffffffffffffffffffffffffffffffffffffff916000916139a8575b5016906138c481833381614743565b6138cf868a8a6136e2565b6060016138db90612e6c565b906138e7878b8b6136e2565b608001359351958694859384937f769f8e5d000000000000000000000000000000000000000000000000000000008552339385019361395d949093608092959460019460a084019773ffffffffffffffffffffffffffffffffffffffff8093168552602085015216604083015260608201520152565b03915a90600091f19081156105015760019360009261398b575b5050613983828a612d49565b525b01613712565b6139a19250803d106104fa576104ea81836105ca565b3880613977565b6139bf9150853d87116105435761053481836105ca565b386138b5565b50505060019150613985565b6139e4913d8091833e61268a81836105ca565b5038613847565b6139fc610cbf61254983858761351e565b6040517fef5cfb8c00000000000000000000000000000000000000000000000000000000815233600482015291906000908390602490829084905af191821561050157600192613a4e575b5001613705565b613a62903d806000833e6125d381836105ca565b5038613a47565b60041115613a7357565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b356101f881611254565b6101f89291613abe60808401846134d4565b35613ac881611254565b613ad181613a69565b80613af75750613ae083612e6c565b613af1602085013580923390613f79565b91614992565b80613b03600392613a69565b03613b3d578235613b1381610172565b613af160208501358092613b28823383613f79565b613b3181610172565b6108aa60408801612e6c565b613b4683614764565b613af160408401356108cf81610172565b600091031261016d57565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b359061019d82612d5d565b9173ffffffffffffffffffffffffffffffffffffffff80921683526020830152606060408301528235613bde81611254565b613be781613a69565b60608301526020830135613bfa81610172565b16608082015260408201357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18336030181121561016d5782019060208235920167ffffffffffffffff831161016d57823603811361016d57613c796060613c7260c0936101f896608060a088015260e0870191613b62565b9501613ba1565b1515910152565b93929360808501613c94610b3682886134d4565b613c9d81613a69565b80613cbe575050602092613cb2928692614ba9565b925b01358210610be857565b80613ccf6003929895969498613a69565b03613d0f5750613ce682613d0a9260209530614ba9565b8095613d0182613cf860408701612e6c565b6108aa87612e6c565b610c8e84612e6c565b613cb4565b90610cbf610cbf613d3185613d37946060820198613d2c8a612e6c565b614ba9565b95612e6c565b613d4d613d4660408501612e6c565b92846134d4565b90803b1561016d57613d939460008094604051978895869485937f2bdb823c00000000000000000000000000000000000000000000000000000000855260048501613bac565b03925af191821561050157602092613dc1575b50613d0a613db66108cf83612e6c565b8095610c8e84612e6c565b80610d6d613dce926105b6565b38613da6565b60008091602081519101305af490613dea61353d565b90821580613e02575b613df957565b50805190602001fd5b506001613df3565b60008091602081519101305af491613e2061353d565b9183159081613e31575b50613df957565b90501538613e2a565b9081606091031261016d578051613e5081610172565b9160406020830151613e6181610172565b9201516101f881610172565b919082604091031261016d576020825192015190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b91908201809211613ebf57565b613e83565b91908203918211613ebf57565b81601f8201121561016d578051613ee781611269565b92613ef560405194856105ca565b8184526020828401011161016d576101f89160208085019101611002565b3403613f1b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f657468206d69736d6174636800000000000000000000000000000000000000006044820152fd5b90919073ffffffffffffffffffffffffffffffffffffffff1680613fa2575090503403613f1b57565b81613fad575b505050565b61019d92309161517b565b15613fbf57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b15610be857565b929160608401600361400a610b3683886134d4565b61401381613a69565b61401e811515613fb8565b61402781613a69565b0361406b575050826140648261405061019d94614045602098612e6c565b6108aa898701612e6c565b9485925b6128ba6040820135851015613fee565b3390614c37565b61408561407f6060612aa1848996996134d4565b15613fb8565b6140b08373ffffffffffffffffffffffffffffffffffffffff6140a785612e6c565b97168097614c37565b60208201906140c16108cf83612e6c565b956140d56140ce85612e6c565b92856134d4565b90803b1561016d5761411b9560008094604051988995869485937f2bdb823c00000000000000000000000000000000000000000000000000000000855260048501613bac565b03925af1908115610501576020956141466108cf61414b9361019d9761406496614153575b50612e6c565b613ec4565b948592614054565b80610d6d614160926105b6565b38614140565b929160608401600361417b610b3683886134d4565b61418481613a69565b61418f811515613fb8565b61419881613a69565b036141b6575050826140648261405061019d94614045602098612e6c565b61408560016141cc6060612aa1858a979a6134d4565b151514613fb8565b9093916141df61356d565b9373ffffffffffffffffffffffffffffffffffffffff92838716916040908151907f2c8ce6bc000000000000000000000000000000000000000000000000000000008252606082600481885afa94851561050157600080936000976143ec575b509a8261431c575b5050506142bd9392916142698660009381602099614304575b50508a51613eb2565b818a0152519586809581947fbcb7ea5d0000000000000000000000000000000000000000000000000000000083526004830191909173ffffffffffffffffffffffffffffffffffffffff6020820193169052565b0393165af180156105015761152b916000916142e5575b508060608501526020840151613eb2565b6142fe915060203d6020116104fa576104ea81836105ca565b386142d4565b614315918b8916908c339116614743565b3881614260565b918492916143338261439896999897943384614743565b89600084518097819582947ff6b911bc0000000000000000000000000000000000000000000000000000000084528c168b6004850160409194939294606082019573ffffffffffffffffffffffffffffffffffffffff80921683521660208201520152565b03925af18015610501576020966142bd9660009461426993869187916143cd575b508d52898d01529350968294959650614247565b90506143e69150853d8711611ae357611ad581836105ca565b386143b9565b9196505061440a91925060603d606011611b1957611b0881836105ca565b959092913861423f565b92909161441f61356d565b9273ffffffffffffffffffffffffffffffffffffffff9182861695604080517f2c8ce6bc0000000000000000000000000000000000000000000000000000000081526060816004818c5afa938415610501576000996000926000966144aa575b50878b16948261431c575050506142bd93929161426986600093816020996143045750508a51613eb2565b919a5094506144c8915060603d606011611b1957611b0881836105ca565b91999091943861447f565b919294939460005b81518110156145745761450f73ffffffffffffffffffffffffffffffffffffffff6145068385612d49565b511684866151e3565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821461456b576145418189612d49565b5161454c8388612d49565b51908101809111613ebf5761456360019388612d49565b525b016144db565b60019150614565565b50505050509050565b92946145b29173ffffffffffffffffffffffffffffffffffffffff8294979998969916946145ad8a873381614743565b6151e3565b957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff87146146a3576040517f769f8e5d000000000000000000000000000000000000000000000000000000008152306004820152602481019190915273ffffffffffffffffffffffffffffffffffffffff919091166044820152606481019290925260016084830152909390602090859060a49082906000905af19384156105015760009461467e575b5061467b906146758561466f8386612d49565b51613eb2565b92612d49565b52565b61467b91945061469c9060203d6020116104fa576104ea81836105ca565b939061465c565b6040517f769f8e5d000000000000000000000000000000000000000000000000000000008152336004820152602481019190915273ffffffffffffffffffffffffffffffffffffffff9190911660448201526064810192909252600160848301529293509160209150829060a49082906000905af19081156105015760009161472a575090565b6101f8915060203d6020116104fa576104ea81836105ca565b92919082614752575b50505050565b61475b9361517b565b3880808061474c565b73ffffffffffffffffffffffffffffffffffffffff61478282612e6c565b16614844576147946020820135613f13565b6147a6610cbf610cbf60608401612e6c565b6147b2610cbf83612e6c565b61483c576020820135905b6147c683612e6c565b906147d460808501856134d4565b93813b1561016d5760009360209161481e604051978896879586947f2bdb823c00000000000000000000000000000000000000000000000000000000865201359060048501613bac565b03925af180156105015761482f5750565b80610d6d61019d926105b6565b6000906147bd565b61486c614853610cbf83612e6c565b61485f60608401612e6c565b6020840135913390614743565b614794565b73ffffffffffffffffffffffffffffffffffffffff168061489157504790565b6020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa9081156105015760009161472a575090565b73ffffffffffffffffffffffffffffffffffffffff919082168061493f575016803b1561016d576000906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af180156105015761482f5750565b915050803b1561016d576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815260048101929092526000908290602490829084905af180156105015761482f5750565b60849060406020949501356149a681610172565b73ffffffffffffffffffffffffffffffffffffffff8094818316978815600014614a3f576149e881945b6149d981610172565b6149e3848261525a565b610172565b60405198899788967f20e8c5650000000000000000000000000000000000000000000000000000000088521660048701526024860152604485015260006064850152165af19081156105015760009161472a575090565b6149e86000946149d0565b60209360406084939496013590614a6082610172565b73ffffffffffffffffffffffffffffffffffffffff948591828416988915600014614af357614a9e81955b614a9481610172565b6149e3858261525a565b604051998a9889977f20e8c565000000000000000000000000000000000000000000000000000000008952166004880152602487015260448601526064850152165af19081156105015760009161472a575090565b614a9e600095614a8b565b60a49060006040936020959673ffffffffffffffffffffffffffffffffffffffff958691828416938a80614b97575b50500135614b3a81610172565b60405198899788967f769f8e5d0000000000000000000000000000000000000000000000000000000088521660048701526024860152166044840152816064840152600160848401525af19081156105015760009161472a575090565b614ba291338761517b565b388a614b2d565b60a49060006020949560409473ffffffffffffffffffffffffffffffffffffffff809681930135614bd981610172565b604051998a9889977f769f8e5d000000000000000000000000000000000000000000000000000000008952166004880152602487015216604485015282606485015260016084850152165af19081156105015760009161472a575090565b8215613fa85773ffffffffffffffffffffffffffffffffffffffff1680614cd05750600080809381935af1614c6a61353d565b5015614c7257565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6574682073656e64206661696c656400000000000000000000000000000000006044820152fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff9092166024830152604482019290925261019d91614d5782606481015b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018452836105ca565b615b5e565b9080821015614d69575090565b905090565b6101f8939273ffffffffffffffffffffffffffffffffffffffff60609316825260208201528160408201520190611025565b95939160009660009684600191614db961183582615458565b614f8c575b5050614dcc575b5050505050565b73ffffffffffffffffffffffffffffffffffffffff979496919293959780931660409788517f70a082310000000000000000000000000000000000000000000000000000000091828252602097888380614e46896004830191909173ffffffffffffffffffffffffffffffffffffffff6020820193169052565b0381885afa978815610501578c93600099614f6d575b5080614e688489615b16565b9385519d8e95869485937f5b709f1700000000000000000000000000000000000000000000000000000000855216916004840192614ea593614d6e565b0392165a90600091f197881561050157614efd988795614ecd92600092614f4c575b50613eb2565b985180988194829383526004830191909173ffffffffffffffffffffffffffffffffffffffff6020820193169052565b03915afa801561050157614f2494614f1e93600092614f2f575b5050613ec4565b90613eb2565b913880808080614dc5565b614f459250803d106104fa576104ea81836105ca565b3880614f17565b614f649192508c8d3d10611ae357611ad581836105ca565b90509038614ec7565b614f859199508a3d8c116104fa576104ea81836105ca565b9738614e5c565b929950975050614fb791935073ffffffffffffffffffffffffffffffffffffffff851696878961585c565b949298919785919899809615614dbe5781614fd192614c37565b3880614dbe565b604051600081526020810181811067ffffffffffffffff8211176105955760405290565b90939160009460009473ffffffffffffffffffffffffffffffffffffffff9182811693604051927f2c8ce6bc000000000000000000000000000000000000000000000000000000008452606084600481895afa93841561050157600094615157575b50819460019461507061183584615458565b61511c575b505050505061508357505050565b916040916150ce949596936000615098614fd8565b938551978895869485937f29910b1100000000000000000000000000000000000000000000000000000000855260048501614d6e565b03925af18015610501576101f8926000906000926150f8575b506150f29192613eb2565b93613eb2565b6150f29250615116915060403d604011611ae357611ad581836105ca565b916150e7565b929950929950925061513293501695868561585c565b9197909690839083615146575b8080615075565b61514f92614c37565b38808061513f565b61517191945060603d606011611b1957611b0881836105ca565b509050923861505e565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff9283166024820152929091166044830152606482019290925261019d91614d578260848101614d2b565b919060005b81811061521757505050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90565b615222818386613507565b3561522c81610172565b73ffffffffffffffffffffffffffffffffffffffff808516911614615253576001016151e8565b9250505090565b919073ffffffffffffffffffffffffffffffffffffffff8316928315612e66576040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff831660248201526020948590829060449082905afa8015610501576b7fffffffffffffffffffffff9160009161543b575b50106152f85750509050565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000085820190815273ffffffffffffffffffffffffffffffffffffffff841660248301526000604483018190529182919061538081606481015b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826105ca565b519082855af161538e61353d565b8161540b575b50156153ad576153a5929350615c7e565b803880612e66565b606484604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152600c60248201527f5361666520417070726f766500000000000000000000000000000000000000006044820152fd5b80518015925086908315615423575b50505038615394565b6154339350820181019101612d67565b38858161541a565b6154529150863d88116104fa576104ea81836105ca565b386152ec565b604081015151159081615469575090565b606091500151511590565b9015610cbf57503090565b9081602091031261016d57604051906020820182811067ffffffffffffffff8211176105955760405251815290565b9060808282031261016d57815192602083015192604081015192606082015167ffffffffffffffff811161016d576101f89201613ed1565b9061467b82613a69565b929493919460a09560a085019260a08652805180945260c09360c087019060c08160051b890101956020809401926000915b83831061559c5750505050506101f896975061558e93929161555b9187019073ffffffffffffffffffffffffffffffffffffffff169052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60408601528482036060860152611025565b916080818403910152611025565b909192939785808e837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408f60019603018752858d51926156f76156e7606092865190848752815185880152888201516080908189015261560e604097889788860151858c0152850151908a01906154e6565b8201519061563660e092838a019073ffffffffffffffffffffffffffffffffffffffff169052565b8201519161565f61010093848a019073ffffffffffffffffffffffffffffffffffffffff169052565b8c8101519161568961012093848b019073ffffffffffffffffffffffffffffffffffffffff169052565b810151926156b261014094858b019073ffffffffffffffffffffffffffffffffffffffff169052565b8101519161016092838a01528101519261018093848a01528101516101a08901520151906101c08701526101e0860190611025565b8686015185820388870152611025565b9301519101529a019301930191939290615522565b93909195949260a09660a086019360a08752805180955260c09460c088019060c08160051b8a0101966020809401926000915b83831061578b5750505050506101f897985061558e949392916157799188019073ffffffffffffffffffffffffffffffffffffffff169052565b60408601528482036060860152611025565b909192939885808f838f8e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4088926001980301895251926157fe6156e7606092865190848752815185880152888201516080908189015261560e604097889788860151858c0152850151908a01906154e6565b9301519101529b01930193019193929061573f565b516101f881613a69565b60808101959490936060939261583281613a69565b855273ffffffffffffffffffffffffffffffffffffffff8093166020860152604085015216910152565b919390936000936000809460808301908151805180615af2575b5050835173ffffffffffffffffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff998a841693879b6040880192835151615a43575b5050505060608501805180516158e5575b5050505050509060206158e092015190615ea1565b841190565b92858c9b9698979a9c9361597d615951979461592360a0615906869a612d37565b5151015173ffffffffffffffffffffffffffffffffffffffff1690565b98899561593d60606159358551612d37565b515101615813565b92519451986040519b8c946020860161581d565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018952886105ca565b6159b6604051978896879586947f6122b173000000000000000000000000000000000000000000000000000000008652600486016154f0565b03925af180156105015784602093615a02936158e097928094615a0e575b50506159f66159ef8487806159fc9697518301019101613e6d565b9092613eb2565b99613ec4565b98613eb2565b949192388080806158cb565b6159ef94506159fc93506159f691615a37913d8091833e615a2f81836105ca565b8101906154ae565b969250905093506159d4565b859d50899c508795949b5090615a5a92911661525a565b51615a9d8951615a68614fd8565b906040519c8d9586957f6122b1730000000000000000000000000000000000000000000000000000000087526004870161570c565b038183855af197881561050157828398849a615acb575b50615ac0909886613ec4565b9896388080806158ba565b9050615ac09950615ae79198503d8085833e615a2f81836105ca565b509990989190615ab4565b81602080615b0793615b0f950101910161547f565b518686615df4565b3880615876565b9190604051608081019080821067ffffffffffffffff83111761059557606091604052818152602081019482368737600182965260408201520152565b90156101f857503090565b604051615bc99173ffffffffffffffffffffffffffffffffffffffff16615b8482610579565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af1615bc361353d565b91615eb8565b805190828215928315615c66575b50505015615be25750565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b615c769350820181019101612d67565b388281615bd7565b6040517f095ea7b3000000000000000000000000000000000000000000000000000000006020820190815273ffffffffffffffffffffffffffffffffffffffff90931660248201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60448201526000928392918390615d018160648101615354565b51925af1615d0d61353d565b81615d79575b5015615d1b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5361666520417070726f766500000000000000000000000000000000000000006044820152fd5b8051801592508215615d8e575b505038615d13565b615da19250602080918301019101612d67565b3880615d86565b81810292918115918404141715613ebf57565b8115615dc5570490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b90919283831015615e9b5760005b6040808401908682518051851015615e4d5784615e3d8493615e388b849897615e3060019b615e4498612d49565b510151615da8565b615dbb565b9351612d49565b51015201615e02565b5050505050909160005b6060840180518051831015615e92579160019181615e8781615e3d8b615e388a60609a615e306040988992612d49565b510152019050615e57565b50505050915050565b92505050565b670de0b6b3a764000091615eb491615da8565b0490565b91929015615f335750815115615ecc575090565b3b15615ed55790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015615f465750805190602001fd5b6104ce906040519182917f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152602483019061102556fea264697066735822122024c5cfb30cc241c1c3bf5a3dca0b75a77f2fbe4ff0be1092d2f98e69b01e53e964736f6c63430008170033";
3122
+ "0x6080806040523461001757615f4990816200001d8239f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80630741a803146101475780631a8631b2146101425780632d8f9d8d1461013d5780632e071dc614610138578063339748cb14610133578063339a55721461012e57806347f1de22146101295780635d3e105c1461012457806360fc84661461011f5780637036e0521461011a5780638354a5e5146101155780639fa02c8614610110578063a373cf1a1461010b578063a89eba4a14610106578063bd61951d14610101578063c2d6d65d146100fc578063d0f42385146100f7578063f06a07a0146100f25763f7e375e8146100ed57600080fd5b6121ea565b6120ae565b611ecd565b611df8565b611d05565b611bcb565b611ac2565b6118f3565b611413565b611309565b61114b565b610fb5565b610d30565b610ac5565b610887565b61074c565b610624565b610345565b61020b565b9181601f8401121561017d5782359167ffffffffffffffff831161017d576020808501948460051b01011161017d57565b600080fd5b73ffffffffffffffffffffffffffffffffffffffff81160361017d57565b606435906101ad82610182565b565b90815180825260208080930193019160005b8281106101cf575050505090565b8351855293810193928101926001016101c1565b90916101fa610208936040845260408401906101af565b9160208184039101526101af565b90565b3461017d5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017d5767ffffffffffffffff60043581811161017d5761025b90369060040161014c565b91906024359082821161017d573660238301121561017d57816004013583811161017d5736602460a083028501011161017d5760443584811161017d576102a690369060040161014c565b916102af6101a0565b9360843596871161017d576102d8976102ce602498369060040161014c565b98909701916124a8565b906102e8604051928392836101e3565b0390f35b35906101ad82610182565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc608091011261017d5760043561032d81610182565b9060243561033a81610182565b906044359060643590565b3461017d57610353366102f7565b909273ffffffffffffffffffffffffffffffffffffffff9384841692604051947fafd27bf50000000000000000000000000000000000000000000000000000000086526020958681600481895afa91821561051157849160009361052b575b5081610516575b50506040517fdb74aa1500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482018190526024820152905085816044816000895af1958615610511576000966104e2575b5050841061047f577f52e05e4badd3463bad837f42fe3ba58c739d1b3081cff9bb6eb02a24034d455d6102e8956040519316928061046c8733958360209093929193604081019481520152565b0390a46040519081529081906020820190565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f536c6970706167653a20494e53554646494349454e545f50545f59545f4f55546044820152606490fd5b0390fd5b610502929650803d1061050a575b6104fa81836105be565b810190613300565b93388061041f565b503d6104f0565b612a6a565b6105239289339116614f6b565b3882816103b9565b61054c919350883d8a11610553575b61054481836105be565b810190612a55565b91386103b2565b503d61053a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040810190811067ffffffffffffffff8211176105a557604052565b61055a565b67ffffffffffffffff81116105a557604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176105a557604052565b604051906101ad82610589565b67ffffffffffffffff81116105a55760051b60200190565b3461017d576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017d5760043567ffffffffffffffff811161017d573660238201121561017d578060040135906106808261060c565b9161068e60405193846105be565b8083526024602084019160051b8301019136831161017d57602401905b8282106106bd576106bb84612add565b005b84809183356106cb81610182565b8152019101906106ab565b908160a091031261017d5790565b9060807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc83011261017d5760043561071b81610182565b9160243561072881610182565b91604435916064359067ffffffffffffffff821161017d57610208916004016106d6565b60206107a661075a366106e4565b80949161076d60808396959601836132a6565b356107778161383b565b61078081613845565b8061081a575061078f82612bcd565b61079f8884013580923390614017565b858561495f565b927f71c7a44161eb32e4640f6c8f0586db5f1d2e03306e2c63bb2e0f7cd0a8fc690c8135936107d485610182565b6040805173ffffffffffffffffffffffffffffffffffffffff9586168152938801356020850152830186905283169390921691339180606081015b0390a4604051908152f35b80610826600392613845565b036108685761083482612bcd565b6108448884013580923390614017565b6108638161085185612bcd565b61085d60408701612bcd565b906147ef565b61079f565b61087182613bb9565b610863604083013561088281610182565b613cc6565b3461017d57610895366102f7565b91929073ffffffffffffffffffffffffffffffffffffffff91828516916040938451967fd94073d40000000000000000000000000000000000000000000000000000000088526020978881600481895afa80156105115782859161090593600091610aa8575b50853391166147ce565b85517f2f13b60c0000000000000000000000000000000000000000000000000000000081528881600481895afa8015610511578491600091610a7b575b5015610a69575b505084517fbcb7ea5d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201529587876024816000895af196871561051157600097610a4a575b5086106109ec57845191825260208201869052919091169033907f31af33f80f4b396e3d4e42b38ecd3e022883a9bf689fd63f47afbe1d389cb6e790604090a451908152f35b84517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f536c6970706167653a20494e53554646494349454e545f53595f4f55540000006044820152606490fd5b610a62919750883d8a1161050a576104fa81836105be565b95386109a6565b610a749133876147ce565b3882610949565b610a9b91508a3d8c11610aa1575b610a9381836105be565b810190612ac8565b38610942565b503d610a89565b610abf91508c8d3d106105535761054481836105be565b386108fb565b3461017d57610ad3366106e4565b929190600060808501610aee610ae982886132a6565b61387e565b610af781613845565b80610bfa57505050610b0b84828486614a13565b925b60208501358410610b9b577fcd34b6ac7e4b72ab30845649aef2f4fd41945ae2dc08f625be69738bbd0f9aa96020953593610b4785610182565b73ffffffffffffffffffffffffffffffffffffffff9061080f87836040519485941698169633968460409194939273ffffffffffffffffffffffffffffffffffffffff606083019616825260208201520152565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f536c6970706167653a20494e53554646494349454e545f544f4b454e5f4f55546044820152606490fd5b80610c06600392613845565b03610c4b575050610c1984828430614a13565b92610c3384610c2a60408801612bcd565b61085d88612bcd565b610c468482610c4188612bcd565b613d48565b610b0d565b60608601610c8b610c72610c72610c6c8a888a610c6788612bcd565b614a13565b93612bcd565b73ffffffffffffffffffffffffffffffffffffffff1690565b90610ca2610c9b60408a01612bcd565b93896132a6565b92823b15610d2c576040517f2bdb823c0000000000000000000000000000000000000000000000000000000081529493859392849286928492610ce892600485016139d8565b03925af1801561051157610d13575b50610d0461088285612bcd565b92610c468482610c4188612bcd565b80610d20610d26926105aa565b80613933565b38610cf7565b8480fd5b3461017d57610d3e366106e4565b909273ffffffffffffffffffffffffffffffffffffffff938484169060409283517fafd27bf50000000000000000000000000000000000000000000000000000000081526020968782600481885afa91821561051157600092610f96575b5085517fd94073d40000000000000000000000000000000000000000000000000000000081528881600481895afa801561051157828691610de993600091610f79575b508c3391166147ce565b85517f2f13b60c0000000000000000000000000000000000000000000000000000000081528881600481895afa8015610511578591600091610f5c575b5015610f4a575b505084517fbcb7ea5d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015287816024816000895af197881561051157600098610f2b575b5050600187106109ec578697610ec6876102e898997f5f2e0499a3b6a21fd5e1fac44ac47c9aa7c3afa39076d67162a4993411d496da9486613a65565b9735610ed181610182565b610f128a8a895194859416973397859094939260609273ffffffffffffffffffffffffffffffffffffffff6080840197168352602083015260408201520152565b0390a45191825260208201929092529081906040820190565b610f42929850803d1061050a576104fa81836105be565b953880610e89565b610f559133876147ce565b3883610e2d565b610f7391508a3d8c11610aa157610a9381836105be565b38610e26565b610f9091508c8d3d106105535761054481836105be565b38610ddf565b610fae919250883d8a116105535761054481836105be565b9038610d9c565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017d57600435610feb81610182565b60443567ffffffffffffffff811161017d5761100d60409136906004016106d6565b61101681613bb9565b01359061102282610182565b61102b82613cc6565b906024358210610b9b57816110469184610c41602096610182565b604051908152f35b60005b8381106110615750506000910152565b8181015183820152602001611051565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936110ad8151809281875287808801910161104e565b0116010190565b6020808201908083528351809252604092604081018260408560051b8401019601946000925b8584106110eb575050505050505090565b90919293949596858061113a837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0866001960301885286838d5180511515845201519181858201520190611071565b9901940194019295949391906110da565b6020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017d5760043567ffffffffffffffff811161017d5761119690369060040161014c565b916111a08361060c565b9260406111b060405195866105be565b8185527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe06111dd8361060c565b01906000908460005b84811061127e57505050505060005b81811061120a57604051806102e887826110b4565b8061124c61124761122a611221600195878a612bd7565b87810190612c17565b919061123f61123a86898c612bd7565b612c68565b923691612cac565b613ea8565b61125e6112576105ff565b9215158352565b8582015261126c8288612aa5565b526112778187612aa5565b50016111f5565b825161128981610589565b84815260608382015282828b0101520185906111e6565b9160206101ad92949361014081019581520190805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e083015261010080910151910152565b3461017d5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017d5760043561134481610182565b60243561135081610182565b67ffffffffffffffff9160a43583811161017d576113729036906004016106d6565b9060c43593841161017d5761138e6113a09436906004016106d6565b92608435916064359160443591612d3a565b906102e8604051928392836112a0565b6101ad90929192610120810193805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e083015261010080910151910152565b3461017d5760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017d5760043561144e81610182565b60243561145a81610182565b6044359160843560c43567ffffffffffffffff811161017d576114819036906004016106d6565b9061148a612ce3565b50611493612ce3565b9373ffffffffffffffffffffffffffffffffffffffff9081811693604051917f2c8ce6bc000000000000000000000000000000000000000000000000000000008352606083600481895afa92831561051157600093600091600091611858575b50866117a3575b8a611791575b6115166064356115118d8d51613f50565b614b4c565b9a60408b019b808d5280611691575b50918a9161157b6102e89d608061156d6115657f5d98132a999dd75863cdd284a57d3eb44c9b14d38240d22576dea4f09a73626e9c9b9a99988851613f50565b835190613f62565b950194855251606435613f62565b60a08d01818152845191979115611639575050506115c294506115ad6115a76115a3866153bc565b1590565b84615cf4565b903087831603611624575b5050519088614dec565b60e088015260c08701525b6116026115f16115e6602089015160608a015190613f50565b60c089015190613f50565b8061010089015260a43511156131f1565b60405194169380611615873395836112a0565b0390a4604051918291826113b0565b611632918784519216613d48565b38806115b8565b91935091508561164f575b5050505050506115cd565b61167461167c9661166b6116656115a3896153bc565b866153eb565b338a87166147ce565b51928a614b90565b60e088015260c0870152388080808080611644565b916020611711898f6116c0906116b760009884989e889e9d9c9b999e1680958a16613d48565b518233816147ce565b6040517fbcb7ea5d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8f16600482015295869283919082906024820190565b03925af1928315610511576102e89d608061156d8f967f5d98132a999dd75863cdd284a57d3eb44c9b14d38240d22576dea4f09a73626e9c6115659161157b96600091611772575b5060608a01529698999a9b9c505050509d505091611525565b61178b915060203d60201161050a576104fa81836105be565b38611759565b61179e8b33888516614017565b611500565b6117af8784338b6147ce565b604080517ff6b911bc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b16600482015230602482015260448101899052908160648160008d5af1801561051157600091600091611827575b508b5260208b01526114fa565b905061184b915060403d604011611851575b61184381836105be565b810190613f0b565b3861181a565b503d611839565b91505061187e91935060603d606011611887575b61187681836105be565b810190613ed8565b919391386114f3565b503d61186c565b9181601f8401121561017d5782359167ffffffffffffffff831161017d576020838186019501011161017d57565b916118e5906118d76102089593606086526060860190611071565b908482036020860152611071565b916040818403910152611071565b60807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017d5760043561192981610182565b67ffffffffffffffff9060243582811161017d5761194b90369060040161188e565b92909160443582811161017d5761196690369060040161188e565b93906064359084821161017d5761199961198761199493369060040161188e565b9390946060993691612cac565b613e72565b96809150611a6f575b505073ffffffffffffffffffffffffffffffffffffffff93926119cc600093611a0a933691612cac565b836040519687809581947fef409363000000000000000000000000000000000000000000000000000000008352602060048401526024830190611071565b0393165af191821561051157600092611a30575b50506102e890604051938493846118bc565b3d8084833e611a3f81836105be565b810192602082850312611a6c578151928311611a6c575091611a65916102e89301613f6f565b9038611a1e565b80fd5b611a0a929750600093611aa161199473ffffffffffffffffffffffffffffffffffffffff9897946119cc943691612cac565b90509893509350819495506119a2565b9060206102089281815201906101af565b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017d57600435611af881610182565b67ffffffffffffffff60243581811161017d57611b1990369060040161014c565b92909160443590811161017d57611b3490369060040161014c565b611b3d85613257565b9460005b818110611b96575060005b818110611b6157604051806102e88982611ab1565b80611b8586611b73600194868b6132d9565b611b7e84888a6132f0565b3590614092565b611b8f828a612aa5565b5201611b4c565b80611bc5611ba7600193858a6132d9565b35611bb181610182565b611bbc8387896132f0565b35903390614017565b01611b41565b60a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017d57600435611c0181610182565b60243590611c0e82610182565b60443567ffffffffffffffff811161017d57611cc091611c3460209236906004016106d6565b93611c4c60643595611c4587610182565b8280613888565b6040517f769f8e5d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff938416600482015260248101829052958316604487015260848035606488015260019087015294938492839160009190839060a4820190565b0393165af190811561051157600091611ce6575b50604080519182526020820192909252f35b611cff915060203d60201161050a576104fa81836105be565b38611cd4565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017d57600435611d3b81610182565b60243567ffffffffffffffff811161017d57600091611d5f8392369060040161188e565b90816040519283928337810184815203915af4611d7a61330f565b906104de6040519283927f1934afc800000000000000000000000000000000000000000000000000000000845215156004840152604060248401526044830190611071565b6101ad9092919260a081019360808091805184526020810151602085015260408101516040850152606081015160608501520151910152565b3461017d5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017d576102e8600435611e3681610182565b602435611e4281610182565b60643591611e4e61333f565b50611e5d836044358484614271565b939050611e72608435608086015110156131f1565b7f19ded113217988ae612547683a5154518a667a51ba409520760f26303a8a6f5873ffffffffffffffffffffffffffffffffffffffff80604051941694169280611ebe8733958361206f565b0390a460405191829182611dbf565b611ed6366106e4565b92909173ffffffffffffffffffffffffffffffffffffffff9384821692604051927fafd27bf50000000000000000000000000000000000000000000000000000000084526020938481600481895afa801561051157611f3f928592600092612050575b50613888565b6040517fdb74aa1500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201819052602482015290969095848760448160008a5af196871561051157600097612031575b50861061047f577f3193c546cf854c6a4c63afa03b04d35e4242c2761af34a4093fc5daa88dd53089161201d8888611fdc87612bcd565b9360405195869516983398013590859094939260609273ffffffffffffffffffffffffffffffffffffffff6080840197168352602083015260408201520152565b0390a4604080519182526020820192909252f35b612049919750853d871161050a576104fa81836105be565b9538611fa5565b612068919250873d89116105535761054481836105be565b9038611f39565b9160206101ad92949360c08101958152019060808091805184526020810151602085015260408101516040850152606081015160608501520151910152565b3461017d5760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017d576004356120e981610182565b602435906120f682610182565b6064359160843567ffffffffffffffff811161017d5761211a9036906004016106d6565b9161212361333f565b508261213285604435856144b8565b9561215c73ffffffffffffffffffffffffffffffffffffffff9384938460808b0151911687613a65565b95359061216882610182565b826040519516855260208501528560408501526121b0606085018860808091805184526020810151602085015260408101516040850152606081015160608501520151910152565b169216907f6a5433209d35fd4b489a9e43d2bc02e9d1a24430d39be6fff13b4bb52a72a7e06101003392a46102e86040519283928361206f565b3461017d5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017d57600480359061222782610182565b67ffffffffffffffff60243581811161017d57612247903690840161014c565b93909160443581811161017d57612261903690860161014c565b909160643590811161017d5761227a903690870161014c565b94909660005b8181106124065750505060005b8181106123505750505060005b8281106122a357005b6122bc610c72610c726122b784878a6132f0565b612bcd565b90600060405180937f9262187b000000000000000000000000000000000000000000000000000000008252818381612313898c830191909173ffffffffffffffffffffffffffffffffffffffff6020820193169052565b03925af19182156105115760019261232d575b500161229a565b612349903d806000833e61234181836105be565b8101906133dc565b5038612326565b8060008561236b610c72610c726122b76123ca97898b6132f0565b89836040518097819582947f7d24da4d0000000000000000000000000000000000000000000000000000000084528301604060019193929373ffffffffffffffffffffffffffffffffffffffff60608201951681528260208201520152565b03925af1918215610511576001926123e4575b500161228d565b612400903d806000833e6123f881836105be565b810190613402565b506123dd565b80600087612421610c72610c726122b761247397898b6132f0565b8b836040518097819582947fef5cfb8c000000000000000000000000000000000000000000000000000000008452830191909173ffffffffffffffffffffffffffffffffffffffff6020820193169052565b03925af19182156105115760019261248d575b5001612280565b6124a1903d806000833e61234181836105be565b5038612486565b90919293949598969860609880156000146124cb575050610208969798506134c4565b939194929798509498956124de84613257565b976124e885613257565b9560005b82811061295d575050506124ff83613257565b9960005b8481106127e6575060005b8281106126ca5750505060005b83811061269d575060005b8281106125775750505060005b8181106125435750505050509190565b8061256685612555600194868a6132d9565b61255f8488612aa5565b5190614203565b6125708289612aa5565b5201612533565b612581818b612aa5565b511561269557612598610c726122b78386866134b4565b9060405180927fafd27bf500000000000000000000000000000000000000000000000000000000825281600460209384935afa908115610511578988888f9689908995600097612650575b50509184939173ffffffffffffffffffffffffffffffffffffffff60806126348a8761262e606060019f8461263e9f9e9c6126218261262894612aa5565b519d6134b4565b01612bcd565b996134b4565b0135961692614621565b612648828d612aa5565b525b01612526565b88809850839a8897959383839a989694903d1061268e575b61267281836105be565b810161267d91612a55565b99509a9395505081939596506125e3565b503d612668565b60019061264a565b806126c46126b16122b7600194888c6132d9565b6126bb8389612aa5565b51903390614017565b0161251b565b806126de610c726122b760009487876132f0565b6040908151938480927fc4f59f9b00000000000000000000000000000000000000000000000000000000825260049384915afa938415610511576000946127b8575b50612775600092839261273a610c726122b7888c8c6132f0565b91517f9262187b0000000000000000000000000000000000000000000000000000000081523391810191825294859384928391602090910190565b03925af18015610511576001938a8a8e6127979560009561279d575b50614577565b0161250e565b6127b191953d8091833e61234181836105be565b9338612791565b6000926127dc612775928594973d8091833e6127d481836105be565b810190613430565b9592509250612720565b806127fa610c726122b760009489896134b4565b8683612876612815602061280f87868d6134b4565b01612c68565b936128288a61280f8860409788936134b4565b84517f7d24da4d000000000000000000000000000000000000000000000000000000008152336004808301919091529615156024820152901515604482015296879283919082906064820190565b03925af1938415610511578f6000918296612937575b508461289791612aa5565b526128a78161280f858b8b6134b4565b6128b8575b50506001915001612503565b6000906128cc610c726122b7868c8c6134b4565b9051928380927fc4f59f9b0000000000000000000000000000000000000000000000000000000082525afa928315610511576001938a8a8e6129159560009461291c5750614577565b38806128ac565b61293091943d8091833e6127d481836105be565b9238612791565b6128979196506129529086933d8091833e6123f881836105be565b92909296915061288c565b80612971610c726122b760009487876132f0565b6040908151938480927fc4f59f9b00000000000000000000000000000000000000000000000000000000825260049384915afa93841561051157600094612a2f575b50612a0860009283926129cd610c726122b7888c8c6132f0565b91517fef5cfb8c0000000000000000000000000000000000000000000000000000000081523391810191825294859384928391602090910190565b03925af18015610511576001938b8b8f612a299560009561279d5750614577565b016124ec565b600092612a4b612a08928594973d8091833e6127d481836105be565b95925092506129b3565b9081602091031261017d575161020881610182565b6040513d6000823e3d90fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b8051821015612ab95760209160051b010190565b612a76565b8015150361017d57565b9081602091031261017d575161020881612abe565b906000805b8351811015612bc757612b18610c72610c72612afe8488612aa5565b5173ffffffffffffffffffffffffffffffffffffffff1690565b90612b8e612b29612afe8388612aa5565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526000604482015292602091829185918290889082906064820190565b03925af192831561051157600193612ba9575b505001612ae2565b81612bbf92903d10610aa157610a9381836105be565b503880612ba1565b50509050565b3561020881610182565b9190811015612ab95760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18136030182121561017d570190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561017d570180359067ffffffffffffffff821161017d5760200191813603831361017d57565b3561020881612abe565b67ffffffffffffffff81116105a557601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b929192612cb882612c72565b91612cc660405193846105be565b82948184528183011161017d578281602093846000960137010152565b60405190610120820182811067ffffffffffffffff8211176105a557604052816101006000918281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e08201520152565b929195969496939093612d4b612ce3565b50612d54612ce3565b90604051907f2c8ce6bc00000000000000000000000000000000000000000000000000000000825260608260048173ffffffffffffffffffffffffffffffffffffffff8b165afa918215610511576000996000916000946131c9575b50888b87806130f6575b505050806130d0575b8a612dd388611511848951613f50565b80604088015280612fc7575b50509173ffffffffffffffffffffffffffffffffffffffff96612f2e9492612e2f612e1c612e1189978c9b9a51613f50565b604088015190613f62565b9260808701938452604087015190613f62565b60a08601818152835191959115612f70575050612e739350612e5c612e566115a3856153bc565b8c615cf4565b903089831603612f5b575b50505189878d16614dec565b60e083015260c08201525b612eb48a612ea3612e986020850151606086015190613f50565b60c085015190613f50565b8061010085015286849c1689613a65565b993592612ec084610182565b846040519716875260208701528960408701526060860190805182526020810151602083015260408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e083015261010080910151910152565b169216907fe2e505a9d93e4a8a524a95c07024bbe068fa9972f10bb08f51fd0d0c4e11834a6101803392a4565b612f69918984519216613d48565b3880612e67565b9150915083612f83575b50505050612e7e565b612fa8612fb494612f9f612f996115a3876153bc565b856153eb565b338b86166147ce565b51908c8b898216614b90565b60e083015260c082015238808080612f7a565b73ffffffffffffffffffffffffffffffffffffffff8085999896949a93612ffb6020948a98846130609c1694859116613d48565b61300b60408901518333816147ce565b6000604051809a819582947fbcb7ea5d000000000000000000000000000000000000000000000000000000008452166004830191909173ffffffffffffffffffffffffffffffffffffffff6020820193169052565b03925af196871561051157612e2f612e1c612e1173ffffffffffffffffffffffffffffffffffffffff9b8c9b612f2e9a6000916130b1575b5060608a01529597999a5050505092948c919850612ddf565b6130ca915060203d60201161050a576104fa81836105be565b38613098565b6130f1813373ffffffffffffffffffffffffffffffffffffffff8516614017565b612dc3565b8260409261311f83613182963373ffffffffffffffffffffffffffffffffffffffff82166147ce565b83517ff6b911bc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015230602482015260448101939093529193849283916000919083906064820190565b0393165af18015610511576000916000916131a8575b5086526020860152888b87612dba565b90506131c3915060403d6040116118515761184381836105be565b38613198565b915092506131e791995060603d6060116118875761187681836105be565b9199919238612db0565b156131f857565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f536c6970706167653a20494e53554646494349454e545f53595f4f55540000006044820152606490fd5b906132618261060c565b61326e60405191826105be565b8281527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe061329c829461060c565b0190602036910137565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818136030182121561017d570190565b90821015612ab9576102089160051b8101906132a6565b9190811015612ab95760051b0190565b9081602091031261017d575190565b3d1561333a573d9061332082612c72565b9161332e60405193846105be565b82523d6000602084013e565b606090565b6040519060a0820182811067ffffffffffffffff8211176105a55760405260006080838281528260208201528260408201528260608201520152565b9080601f8301121561017d578151906020916133968161060c565b936133a460405195866105be565b81855260208086019260051b82010192831161017d57602001905b8282106133cd575050505090565b815181529083019083016133bf565b9060208282031261017d57815167ffffffffffffffff811161017d57610208920161337b565b91909160408184031261017d57805192602082015167ffffffffffffffff811161017d57610208920161337b565b602090818184031261017d5780519067ffffffffffffffff821161017d57019180601f8401121561017d5782516134668161060c565b9361347460405195866105be565b818552838086019260051b82010192831161017d578301905b82821061349b575050505090565b83809183516134a981610182565b81520191019061348d565b9190811015612ab95760a0020190565b9594929190956134d383613257565b9660005b8181106137bd5750505060005b82811061357b5750505060005b8181106134fd57505050565b61350e610c726122b78385876132f0565b6040517f9262187b00000000000000000000000000000000000000000000000000000000815233600482015291906000908390602490829084905af191821561051157600192613560575b50016134f1565b613574903d806000833e61234181836105be565b5038613559565b61358c610c726122b78386866134b4565b9060209161359f8361280f8488886134b4565b906000806136066040936135b88561280f898d8d6134b4565b85517f7d24da4d000000000000000000000000000000000000000000000000000000008152336004808301919091529715156024820152901515604482015293849283919082906064820190565b03925af1908115610511576000916137a3575b5080156137975790829185613635610c726122b7888c8c6134b4565b8351948580927fafd27bf50000000000000000000000000000000000000000000000000000000082525afa92831561051157869373ffffffffffffffffffffffffffffffffffffffff9160009161377a575b501690613696818333816147ce565b6136a1868a8a6134b4565b6060016136ad90612bcd565b906136b9878b8b6134b4565b608001359351958694859384937f769f8e5d000000000000000000000000000000000000000000000000000000008552339385019361372f949093608092959460019460a084019773ffffffffffffffffffffffffffffffffffffffff8093168552602085015216604083015260608201520152565b03915a90600091f19081156105115760019360009261375d575b5050613755828a612aa5565b525b016134e4565b6137739250803d1061050a576104fa81836105be565b3880613749565b6137919150853d87116105535761054481836105be565b38613687565b50505060019150613757565b6137b6913d8091833e6123f881836105be565b5038613619565b6137ce610c726122b78385876132f0565b6040517fef5cfb8c00000000000000000000000000000000000000000000000000000000815233600482015291906000908390602490829084905af191821561051157600192613820575b50016134d7565b613834903d806000833e61234181836105be565b5038613819565b6004111561017d57565b6004111561384f57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b356102088161383b565b610208929161389a60808401846132a6565b356138a48161383b565b6138ad81613845565b806138d357506138bc83612bcd565b6138cd602085013580923390614017565b916148a7565b806138df600392613845565b036139195782356138ef81610182565b6138cd60208501358092613904823383614017565b61390d81610182565b61085d60408801612bcd565b61392283613bb9565b6138cd604084013561088281610182565b600091031261017d57565b35906101ad8261383b565b90357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18236030181121561017d57016020813591019167ffffffffffffffff821161017d57813603831361017d57565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0938186528686013760008582860101520116010190565b9173ffffffffffffffffffffffffffffffffffffffff80921683526020830152606060408301528235613a0a8161383b565b613a1381613845565b60608301526020830135613a2681610182565b16608082015260c06060613a51613a406040860186613949565b608060a087015260e0860191613999565b930135613a5d81612abe565b151591015290565b93929360808501613a79610ae982886132a6565b613a8281613845565b80613aa3575050602092613a97928692614abe565b925b01358210610b9b57565b80613ab46003929895969498613845565b03613af45750613acb82613aef9260209530614abe565b8095613ae682613add60408701612bcd565b61085d87612bcd565b610c4184612bcd565b613a99565b90610c72610c72613b1685613b1c946060820198613b118a612bcd565b614abe565b95612bcd565b613b32613b2b60408501612bcd565b92846132a6565b90803b1561017d57613b789460008094604051978895869485937f2bdb823c000000000000000000000000000000000000000000000000000000008552600485016139d8565b03925af191821561051157602092613ba6575b50613aef613b9b61088283612bcd565b8095610c4184612bcd565b80610d20613bb3926105aa565b38613b8b565b73ffffffffffffffffffffffffffffffffffffffff613bd782612bcd565b16613c9957613be96020820135613fb1565b613bfb610c72610c7260608401612bcd565b613c07610c7283612bcd565b613c91576020820135905b613c1b83612bcd565b90613c2960808501856132a6565b93813b1561017d57600093602091613c73604051978896879586947f2bdb823c000000000000000000000000000000000000000000000000000000008652013590600485016139d8565b03925af1801561051157613c845750565b80610d206101ad926105aa565b600090613c12565b613cc1613ca8610c7283612bcd565b613cb460608401612bcd565b60208401359133906147ce565b613be9565b73ffffffffffffffffffffffffffffffffffffffff1680613ce657504790565b6020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa90811561051157600091613d2f575090565b610208915060203d60201161050a576104fa81836105be565b8215613e6d5773ffffffffffffffffffffffffffffffffffffffff1680613de15750600080809381935af1613d7b61330f565b5015613d8357565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f6574682073656e64206661696c656400000000000000000000000000000000006044820152fd5b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff909216602483015260448201929092526101ad91613e6882606481015b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018452836105be565b615248565b505050565b60008091602081519101305af490613e8861330f565b90821580613ea0575b613e9757565b50805190602001fd5b506001613e91565b60008091602081519101305af491613ebe61330f565b9183159081613ecf575b50613e9757565b90501538613ec8565b9081606091031261017d578051613eee81610182565b9160406020830151613eff81610182565b92015161020881610182565b919082604091031261017d576020825192015190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b91908201809211613f5d57565b613f21565b91908203918211613f5d57565b81601f8201121561017d578051613f8581612c72565b92613f9360405194856105be565b8184526020828401011161017d57610208916020808501910161104e565b3403613fb957565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f657468206d69736d6174636800000000000000000000000000000000000000006044820152fd5b90919073ffffffffffffffffffffffffffffffffffffffff1680614040575090503403613fb957565b8161404a57505050565b6101ad923091614f6b565b1561405c57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b15610b9b57565b92916060840160036140a7610ae983886132a6565b6140b081613845565b6140bb811515614055565b6140c481613845565b0361410857505082614101826140ed6101ad946140e2602098612bcd565b61085d898701612bcd565b9485925b612628604082013585101561408b565b3390613d48565b61412261411c606061280f848996996132a6565b15614055565b61414d8373ffffffffffffffffffffffffffffffffffffffff61414485612bcd565b97168097613d48565b602082019061415e61088283612bcd565b9561417261416b85612bcd565b92856132a6565b90803b1561017d576141b89560008094604051988995869485937f2bdb823c000000000000000000000000000000000000000000000000000000008552600485016139d8565b03925af1908115610511576020956141e36108826141e8936101ad97614101966141f0575b50612bcd565b613f62565b9485926140f1565b80610d206141fd926105aa565b386141dd565b9291606084016003614218610ae983886132a6565b61422181613845565b61422c811515614055565b61423581613845565b0361425357505082614101826140ed6101ad946140e2602098612bcd565b6141226001614269606061280f858a979a6132a6565b151514614055565b90939161427c61333f565b9373ffffffffffffffffffffffffffffffffffffffff92838716916040908151907f2c8ce6bc000000000000000000000000000000000000000000000000000000008252606082600481885afa9485156105115760008093600097614490575b509a826143c0575b50505061435a93929161430686600093816020996143a8575b50508a51613f50565b818a0152519586809581947fbcb7ea5d0000000000000000000000000000000000000000000000000000000083526004830191909173ffffffffffffffffffffffffffffffffffffffff6020820193169052565b0393165af180156105115761438291600091614389575b508060608501526020840151613f50565b6080830152565b6143a2915060203d60201161050a576104fa81836105be565b38614371565b6143b9918b8916908c3391166147ce565b38816142fd565b918492916143d78261443c969998979433846147ce565b89600084518097819582947ff6b911bc0000000000000000000000000000000000000000000000000000000084528c168b6004850160409194939294606082019573ffffffffffffffffffffffffffffffffffffffff80921683521660208201520152565b03925af180156105115760209661435a966000946143069386918791614471575b508d52898d015293509682949596506142e4565b905061448a9150853d87116118515761184381836105be565b3861445d565b919650506144ae91925060603d6060116118875761187681836105be565b95909291386142dc565b9290916144c361333f565b9273ffffffffffffffffffffffffffffffffffffffff9182861695604080517f2c8ce6bc0000000000000000000000000000000000000000000000000000000081526060816004818c5afa9384156105115760009960009260009661454e575b50878b1694826143c05750505061435a93929161430686600093816020996143a85750508a51613f50565b919a50945061456c915060603d6060116118875761187681836105be565b919990919438614523565b919294939460005b8151811015614618576145b373ffffffffffffffffffffffffffffffffffffffff6145aa8385612aa5565b51168486614fd3565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821461460f576145e58189612aa5565b516145f08388612aa5565b51908101809111613f5d5761460760019388612aa5565b525b0161457f565b60019150614609565b50505050509050565b92946146569173ffffffffffffffffffffffffffffffffffffffff8294979998969916946146518a8733816147ce565b614fd3565b957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8714614747576040517f769f8e5d000000000000000000000000000000000000000000000000000000008152306004820152602481019190915273ffffffffffffffffffffffffffffffffffffffff919091166044820152606481019290925260016084830152909390602090859060a49082906000905af193841561051157600094614722575b5061471f90614719856147138386612aa5565b51613f50565b92612aa5565b52565b61471f9194506147409060203d60201161050a576104fa81836105be565b9390614700565b6040517f769f8e5d000000000000000000000000000000000000000000000000000000008152336004820152602481019190915273ffffffffffffffffffffffffffffffffffffffff9190911660448201526064810192909252600160848301529293509160209150829060a49082906000905af190811561051157600091613d2f575090565b929190826147dd575b50505050565b6147e693614f6b565b388080806147d7565b73ffffffffffffffffffffffffffffffffffffffff9190821680614854575016803b1561017d576000906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af1801561051157613c845750565b915050803b1561017d576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815260048101929092526000908290602490829084905af1801561051157613c845750565b60849060406020949501356148bb81610182565b73ffffffffffffffffffffffffffffffffffffffff8094818316978815600014614954576148fd81945b6148ee81610182565b6148f8848261504a565b610182565b60405198899788967f20e8c5650000000000000000000000000000000000000000000000000000000088521660048701526024860152604485015260006064850152165af190811561051157600091613d2f575090565b6148fd6000946148e5565b6020936040608493949601359061497582610182565b73ffffffffffffffffffffffffffffffffffffffff948591828416988915600014614a08576149b381955b6149a981610182565b6148f8858261504a565b604051998a9889977f20e8c565000000000000000000000000000000000000000000000000000000008952166004880152602487015260448601526064850152165af190811561051157600091613d2f575090565b6149b36000956149a0565b60a49060006040936020959673ffffffffffffffffffffffffffffffffffffffff958691828416938a80614aac575b50500135614a4f81610182565b60405198899788967f769f8e5d0000000000000000000000000000000000000000000000000000000088521660048701526024860152166044840152816064840152600160848401525af190811561051157600091613d2f575090565b614ab7913387614f6b565b388a614a42565b60a49060006020949560409473ffffffffffffffffffffffffffffffffffffffff809681930135614aee81610182565b604051998a9889977f769f8e5d000000000000000000000000000000000000000000000000000000008952166004880152602487015216604485015282606485015260016084850152165af190811561051157600091613d2f575090565b9080821015614b59575090565b905090565b610208939273ffffffffffffffffffffffffffffffffffffffff60609316825260208201528160408201520190611071565b95939160009660009684600191614ba96115a3826153bc565b614d7c575b5050614bbc575b5050505050565b73ffffffffffffffffffffffffffffffffffffffff979496919293959780931660409788517f70a082310000000000000000000000000000000000000000000000000000000091828252602097888380614c36896004830191909173ffffffffffffffffffffffffffffffffffffffff6020820193169052565b0381885afa978815610511578c93600099614d5d575b5080614c588489615cb7565b9385519d8e95869485937f5b709f1700000000000000000000000000000000000000000000000000000000855216916004840192614c9593614b5e565b0392165a90600091f197881561051157614ced988795614cbd92600092614d3c575b50613f50565b985180988194829383526004830191909173ffffffffffffffffffffffffffffffffffffffff6020820193169052565b03915afa801561051157614d1494614d0e93600092614d1f575b5050613f62565b90613f50565b913880808080614bb5565b614d359250803d1061050a576104fa81836105be565b3880614d07565b614d549192508c8d3d106118515761184381836105be565b90509038614cb7565b614d759199508a3d8c1161050a576104fa81836105be565b9738614c4c565b929950975050614da791935073ffffffffffffffffffffffffffffffffffffffff8516968789615a13565b949298919785919899809615614bae5781614dc192613d48565b3880614bae565b604051600081526020810181811067ffffffffffffffff8211176105a55760405290565b90939160009460009473ffffffffffffffffffffffffffffffffffffffff9182811693604051927f2c8ce6bc000000000000000000000000000000000000000000000000000000008452606084600481895afa93841561051157600094614f47575b508194600194614e606115a3846153bc565b614f0c575b5050505050614e7357505050565b91604091614ebe949596936000614e88614dc8565b938551978895869485937f29910b1100000000000000000000000000000000000000000000000000000000855260048501614b5e565b03925af180156105115761020892600090600092614ee8575b50614ee29192613f50565b93613f50565b614ee29250614f06915060403d6040116118515761184381836105be565b91614ed7565b9299509299509250614f22935016958685615a13565b9197909690839083614f36575b8080614e65565b614f3f92613d48565b388080614f2f565b614f6191945060603d6060116118875761187681836105be565b5090509238614e4e565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000602082015273ffffffffffffffffffffffffffffffffffffffff928316602482015292909116604483015260648201929092526101ad91613e688260848101613e3c565b919060005b81811061500757505050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90565b6150128183866132d9565b3561501c81610182565b73ffffffffffffffffffffffffffffffffffffffff80851691161461504357600101614fd8565b9250505090565b919073ffffffffffffffffffffffffffffffffffffffff8316928315612bc7576040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff831660248201526020948590829060449082905afa8015610511576b7fffffffffffffffffffffff9160009161522b575b50106150e85750509050565b6040517f095ea7b30000000000000000000000000000000000000000000000000000000085820190815273ffffffffffffffffffffffffffffffffffffffff841660248301526000604483018190529182919061517081606481015b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826105be565b519082855af161517e61330f565b816151fb575b501561519d57615195929350615cff565b803880612bc7565b606484604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152600c60248201527f5361666520417070726f766500000000000000000000000000000000000000006044820152fd5b80518015925086908315615213575b50505038615184565b6152239350820181019101612ac8565b38858161520a565b6152429150863d881161050a576104fa81836105be565b386150dc565b6040516152b39173ffffffffffffffffffffffffffffffffffffffff1661526e82610589565b6000806020958685527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656487860152868151910182855af16152ad61330f565b91615e47565b805190828215928315615350575b505050156152cc5750565b608490604051907f08c379a00000000000000000000000000000000000000000000000000000000082526004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b6153609350820181019101612ac8565b3882816152c1565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18136030182121561017d570180359067ffffffffffffffff821161017d57602001918160051b3603831361017d57565b6153c96040820182615368565b90501590816153d6575090565b6153e591506060810190615368565b90501590565b9015610c7257503090565b9060808282031261017d57815192602083015192604081015192606082015167ffffffffffffffff811161017d576102089201613f6f565b9061471f82613845565b9594929093919360a0948060a0890160a08a525260c09560c089019260c08360051b8b01019781946000925b8584106154e1575050505050505091859493916154a06154d394602061020899019073ffffffffffffffffffffffffffffffffffffffff169052565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60408701528583036060870152613999565b916080818403910152611071565b909192939495997fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408d82030183528a357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181121561017d57820160609080357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe818236030181121561017d578101928281528335838201526020938493608091858101358385015260409283928d848401359087015282016155a59061393e565b8b86016155b19161542e565b81016155bc906102ec565b9060e0918286016155e19173ffffffffffffffffffffffffffffffffffffffff169052565b6155ec818e016102ec565b610100908187016156119173ffffffffffffffffffffffffffffffffffffffff169052565b61561c828d016102ec565b92610120938488016156429173ffffffffffffffffffffffffffffffffffffffff169052565b820161564d906102ec565b610140908188016156729173ffffffffffffffffffffffffffffffffffffffff169052565b610160918301358288015261018093830135848801528201356101a0870152810161569c91613949565b90916101c08601526101e08501906156b392613999565b6156bf85870186613949565b858303888701526156d09291613999565b9301359101529b0196959460010193920190615464565b959391979694929060a0988060a0890160a08a525260c09960c089019260c08360051b8b01019b81946000925b8584106157625750505050505050916154d39391615750610208989994602089019073ffffffffffffffffffffffffffffffffffffffff169052565b60408701528583036060870152613999565b9091929394959d8e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408e8303018452357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18336030181121561017d57820160609080357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe818236030181121561017d578101928281528335838201526020938493608091858101358385015260409283928d848401359087015282016158269061393e565b8b86016158329161542e565b810161583d906102ec565b9060e0918286016158629173ffffffffffffffffffffffffffffffffffffffff169052565b61586d818e016102ec565b610100908187016158929173ffffffffffffffffffffffffffffffffffffffff169052565b61589d828d016102ec565b92610120938488016158c39173ffffffffffffffffffffffffffffffffffffffff169052565b82016158ce906102ec565b610140908188016158f39173ffffffffffffffffffffffffffffffffffffffff169052565b610160918301358288015261018093830135848801528201356101a0870152810161591d91613949565b90916101c08601526101e085019061593492613999565b61594085870186613949565b858303888701526159519291613999565b9301359101529f0196959460010193920190615714565b9015612ab9578035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18136030182121561017d570190565b9035907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe818136030182121561017d570190565b6080810195949093606093926159e981613845565b855273ffffffffffffffffffffffffffffffffffffffff8093166020860152604085015216910152565b9193909360009360008094615a2a610c7284612bcd565b90849860408501615a3b8187615368565b9050615bca575b50506060840190615a538286615368565b9050615a72575b50505050906020615a6d92013590615e29565b841190565b8998939594979992615af68773ffffffffffffffffffffffffffffffffffffffff8b615b3e87615b0897615abe60a0612628615ab8615ab28a9e89615368565b90615968565b806159a1565b988992613e3c615ae9615ae26060615adc615ab8615ab2878d615368565b0161387e565b9288615368565b9a90976080810190612c17565b94909e604051968794602086016159d4565b6040519a8b998a9889967f6122b17300000000000000000000000000000000000000000000000000000000885260048801615438565b0393165af180156105115784602093615b8b93615a6d97928094615b95575b5050615b7f615b78848780615b859697518301019101613f0b565b9092613f50565b99613f62565b98613f50565b9491923880615a5a565b615b789450615b859350615b7f91615bbe913d8091833e615bb681836105be565b8101906153f6565b96925090509350615b5d565b84995084939a5082985091869273ffffffffffffffffffffffffffffffffffffffff9283615bf789612bcd565b911690615c039161504a565b615c0d9087615368565b909a90615c1d6080890189612c17565b615c289d919d614dc8565b906040519e8f98899788967f6122b1730000000000000000000000000000000000000000000000000000000088526004880196615c64976156e7565b03928c165af1968715610511578182978399615c90575b50615c87909785613f62565b97953880615a42565b9050615c879850615cac9197503d8084833e615bb681836105be565b509890979190615c7b565b9190604051608081019080821067ffffffffffffffff8311176105a557606091604052818152602081019482368737600182965260408201520152565b901561020857503090565b6040517f095ea7b3000000000000000000000000000000000000000000000000000000006020820190815273ffffffffffffffffffffffffffffffffffffffff90931660248201527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60448201526000928392918390615d828160648101615144565b51925af1615d8e61330f565b81615dfa575b5015615d9c57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5361666520417070726f766500000000000000000000000000000000000000006044820152fd5b8051801592508215615e0f575b505038615d94565b615e229250602080918301019101612ac8565b3880615e07565b818102918183041490151715613f5d57670de0b6b3a7640000900490565b91929015615ec25750815115615e5b575090565b3b15615e645790565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b825190915015615ed55750805190602001fd5b6104de906040519182917f08c379a000000000000000000000000000000000000000000000000000000000835260206004840152602483019061107156fea26469706673582212208c22218b7b4a2141a0c5a456031bc04cb63f554cdda35517c2c70c9183c2fbff64736f6c63430008170033";
3241
3123
 
3242
3124
  type ActionMiscV3ConstructorParams =
3243
3125
  | [signer?: Signer]