@pendle/core-v2 0.7.1-beta → 0.8.0-beta

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 (294) hide show
  1. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.dbg.json +1 -1
  2. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol/PendleAaveV3SCY.json +33 -17
  3. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.dbg.json +1 -1
  4. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/AaveV3/WadRayMath.sol/WadRayMath.json +2 -2
  5. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.dbg.json +1 -1
  6. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol/PendleQiTokenHelper.json +2 -2
  7. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.dbg.json +1 -1
  8. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol/PendleQiTokenSCY.json +33 -17
  9. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.dbg.json +1 -1
  10. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol/PendleERC4626SCY.json +33 -17
  11. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.dbg.json +1 -1
  12. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol/PendleWstEthSCY.json +33 -17
  13. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.dbg.json +1 -1
  14. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol/PendleYearnVaultSCY.json +33 -17
  15. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.dbg.json +1 -1
  16. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBase.sol/SCYBase.json +31 -15
  17. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.dbg.json +1 -1
  18. package/build/artifacts/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol/SCYBaseWithRewards.json +31 -15
  19. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerReceiverUpg.sol/CelerReceiverUpg.dbg.json +1 -1
  20. package/build/artifacts/contracts/core/LiquidityMining/CelerAbstracts/CelerSenderUpg.sol/CelerSenderUpg.dbg.json +1 -1
  21. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol/PendleGaugeControllerBaseUpg.dbg.json +1 -1
  22. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchainUpg.dbg.json +1 -1
  23. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerMainchain.sol/PendleGaugeControllerMainchainUpg.json +2 -2
  24. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechainUpg.dbg.json +1 -1
  25. package/build/artifacts/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerSidechain.sol/PendleGaugeControllerSidechainUpg.json +2 -2
  26. package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.dbg.json +1 -1
  27. package/build/artifacts/contracts/core/LiquidityMining/PendleGauge.sol/PendleGauge.json +0 -26
  28. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.dbg.json +1 -1
  29. package/build/artifacts/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol/PendleVotingControllerUpg.json +2 -2
  30. package/build/artifacts/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol/VotingControllerStorageUpg.dbg.json +1 -1
  31. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.dbg.json +1 -1
  32. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol/VotingEscrowPendleMainchain.json +2 -2
  33. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.dbg.json +1 -1
  34. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol/VotingEscrowPendleSidechain.json +2 -2
  35. package/build/artifacts/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol/VotingEscrowTokenBase.dbg.json +1 -1
  36. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.dbg.json +1 -1
  37. package/build/artifacts/contracts/core/Market/PendleMarket.sol/PendleMarket.json +125 -111
  38. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.dbg.json +1 -1
  39. package/build/artifacts/contracts/core/Market/PendleMarketFactory.sol/PendleMarketFactory.json +2 -2
  40. package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.dbg.json +1 -1
  41. package/build/artifacts/contracts/core/PendleERC20.sol/PendleERC20.json +2 -2
  42. package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.dbg.json +1 -1
  43. package/build/artifacts/contracts/core/PendleERC20Permit.sol/PendleERC20Permit.json +2 -2
  44. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.dbg.json +1 -1
  45. package/build/artifacts/contracts/core/PendleRouter.sol/PendleRouter.json +2 -2
  46. package/build/artifacts/contracts/core/YieldContracts/InterestManagerYT.sol/InterestManagerYT.dbg.json +1 -1
  47. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.dbg.json +1 -1
  48. package/build/artifacts/contracts/core/YieldContracts/PendlePrincipalToken.sol/PendlePrincipalToken.json +77 -2
  49. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.dbg.json +1 -1
  50. package/build/artifacts/contracts/core/YieldContracts/PendleYieldContractFactory.sol/PendleYieldContractFactory.json +51 -20
  51. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.dbg.json +1 -1
  52. package/build/artifacts/contracts/core/YieldContracts/PendleYieldToken.sol/PendleYieldToken.json +72 -93
  53. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.dbg.json +1 -1
  54. package/build/artifacts/contracts/core/actions/ActionCallback.sol/ActionCallback.json +2 -2
  55. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.dbg.json +1 -1
  56. package/build/artifacts/contracts/core/actions/ActionCore.sol/ActionCore.json +3 -3
  57. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.dbg.json +1 -1
  58. package/build/artifacts/contracts/core/actions/ActionYT.sol/ActionYT.json +2 -2
  59. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPTBase.sol/ActionSCYAndPTBase.dbg.json +1 -1
  60. package/build/artifacts/contracts/core/actions/base/ActionSCYAndPYBase.sol/ActionSCYAndPYBase.dbg.json +1 -1
  61. package/build/artifacts/contracts/core/actions/base/ActionSCYAndYTBase.sol/ActionSCYAndYTBase.dbg.json +1 -1
  62. package/build/artifacts/contracts/core/actions/base/CallbackHelper.sol/CallbackHelper.dbg.json +1 -1
  63. package/build/artifacts/contracts/interfaces/IAToken.sol/IAToken.dbg.json +1 -1
  64. package/build/artifacts/contracts/interfaces/IAavePool.sol/IAavePool.dbg.json +1 -1
  65. package/build/artifacts/contracts/interfaces/IAaveRewardsController.sol/IAaveRewardsController.dbg.json +1 -1
  66. package/build/artifacts/contracts/interfaces/IBenQiComptroller.sol/IBenQiComptroller.dbg.json +1 -1
  67. package/build/artifacts/contracts/interfaces/IBenQiInterestRateModel.sol/IBenQiInterestRateModel.dbg.json +1 -1
  68. package/build/artifacts/contracts/interfaces/ICelerMessageBus.sol/ICelerMessageBus.dbg.json +1 -1
  69. package/build/artifacts/contracts/interfaces/ICelerMessageReceiverApp.sol/ICelerMessageReceiverApp.dbg.json +1 -1
  70. package/build/artifacts/contracts/interfaces/IERC4626.sol/IERC4626.dbg.json +1 -1
  71. package/build/artifacts/contracts/interfaces/IJoePair.sol/IJoePair.dbg.json +1 -1
  72. package/build/artifacts/contracts/interfaces/IJoeRouter01.sol/IJoeRouter01.dbg.json +1 -1
  73. package/build/artifacts/contracts/interfaces/IJoeRouter02.sol/IJoeRouter02.dbg.json +1 -1
  74. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.dbg.json +1 -1
  75. package/build/artifacts/contracts/interfaces/IPActionCore.sol/IPActionCore.json +1 -1
  76. package/build/artifacts/contracts/interfaces/IPActionYT.sol/IPActionYT.dbg.json +1 -1
  77. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.dbg.json +1 -1
  78. package/build/artifacts/contracts/interfaces/IPAllAction.sol/IPAllAction.json +1 -1
  79. package/build/artifacts/contracts/interfaces/IPGaugeController.sol/IPGaugeController.dbg.json +1 -1
  80. package/build/artifacts/contracts/interfaces/IPGaugeControllerMainchain.sol/IPGaugeControllerMainchain.dbg.json +1 -1
  81. package/build/artifacts/contracts/interfaces/IPGovernanceManager.sol/IPGovernanceManager.dbg.json +1 -1
  82. package/build/artifacts/contracts/interfaces/IPInterestManagerYT.sol/IPInterestManagerYT.dbg.json +1 -1
  83. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.dbg.json +1 -1
  84. package/build/artifacts/contracts/interfaces/IPMarket.sol/IPMarket.json +48 -83
  85. package/build/artifacts/contracts/interfaces/IPMarketFactory.sol/IPMarketFactory.dbg.json +1 -1
  86. package/build/artifacts/contracts/interfaces/IPMarketSwapCallback.sol/IPMarketSwapCallback.dbg.json +1 -1
  87. package/build/artifacts/contracts/interfaces/IPPermissionsV2Upg.sol/IPermissionsV2Upg.dbg.json +1 -1
  88. package/build/artifacts/contracts/interfaces/IPPrincipalToken.sol/IPPrincipalToken.dbg.json +1 -1
  89. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.dbg.json +1 -1
  90. package/build/artifacts/contracts/interfaces/IPRouterStatic.sol/IPRouterStatic.json +20 -15
  91. package/build/artifacts/contracts/interfaces/IPVeToken.sol/IPVeToken.dbg.json +1 -1
  92. package/build/artifacts/contracts/interfaces/IPVotingController.sol/IPVotingController.dbg.json +1 -1
  93. package/build/artifacts/contracts/interfaces/IPVotingEscrow.sol/IPVotingEscrow.dbg.json +1 -1
  94. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.dbg.json +1 -1
  95. package/build/artifacts/contracts/interfaces/IPYieldContractFactory.sol/IPYieldContractFactory.json +30 -4
  96. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.dbg.json +1 -1
  97. package/build/artifacts/contracts/interfaces/IPYieldToken.sol/IPYieldToken.json +8 -92
  98. package/build/artifacts/contracts/interfaces/IQiAvax.sol/IQiAvax.dbg.json +1 -1
  99. package/build/artifacts/contracts/interfaces/IQiErc20.sol/IQiErc20.dbg.json +1 -1
  100. package/build/artifacts/contracts/interfaces/IQiToken.sol/IQiToken.dbg.json +1 -1
  101. package/build/artifacts/contracts/interfaces/IREDACTEDStaking.sol/IREDACTEDStaking.dbg.json +1 -1
  102. package/build/artifacts/contracts/interfaces/IRewardManager.sol/IRewardManager.dbg.json +1 -1
  103. package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.dbg.json +1 -1
  104. package/build/artifacts/contracts/interfaces/ISuperComposableYield.sol/ISuperComposableYield.json +31 -2
  105. package/build/artifacts/contracts/interfaces/IWETH.sol/IWETH.dbg.json +1 -1
  106. package/build/artifacts/contracts/interfaces/IWXBTRFLY.sol/IWXBTRFLY.dbg.json +1 -1
  107. package/build/artifacts/contracts/interfaces/IWstETH.sol/IWstETH.dbg.json +1 -1
  108. package/build/artifacts/contracts/interfaces/IYearnVault.sol/IYearnVault.dbg.json +1 -1
  109. package/build/artifacts/contracts/libraries/RewardManager.sol/RewardManager.dbg.json +1 -1
  110. package/build/artifacts/contracts/libraries/RewardManagerAbstract.sol/RewardManagerAbstract.dbg.json +1 -1
  111. package/build/artifacts/contracts/libraries/SCY/SCYIndex.sol/SCYIndexLib.dbg.json +1 -1
  112. package/build/artifacts/contracts/libraries/SCY/SCYIndex.sol/SCYIndexLib.json +2 -2
  113. package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.dbg.json +1 -1
  114. package/build/artifacts/contracts/libraries/SCY/SCYUtils.sol/SCYUtils.json +2 -2
  115. package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.dbg.json +1 -1
  116. package/build/artifacts/contracts/libraries/VeBalanceLib.sol/VeBalanceLib.json +2 -2
  117. package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.dbg.json +1 -1
  118. package/build/artifacts/contracts/libraries/VeHistoryLib.sol/Checkpoints.json +2 -2
  119. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.dbg.json +1 -1
  120. package/build/artifacts/contracts/libraries/helpers/ArrayLib.sol/ArrayLib.json +2 -2
  121. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.dbg.json +1 -1
  122. package/build/artifacts/contracts/libraries/helpers/ExpiryUtilsLib.sol/ExpiryUtils.json +2 -2
  123. package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.dbg.json +1 -1
  124. package/build/artifacts/contracts/libraries/helpers/MiniHelpers.sol/MiniHelpers.json +2 -2
  125. package/build/artifacts/contracts/libraries/helpers/SSTORE2Deployer.sol/SSTORE2Deployer.dbg.json +1 -1
  126. package/build/artifacts/contracts/libraries/helpers/SSTORE2Deployer.sol/SSTORE2Deployer.json +2 -2
  127. package/build/artifacts/contracts/libraries/helpers/TokenHelper.sol/TokenHelper.dbg.json +1 -1
  128. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.dbg.json +1 -1
  129. package/build/artifacts/contracts/libraries/math/LogExpMath.sol/LogExpMath.json +2 -2
  130. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.dbg.json +1 -1
  131. package/build/artifacts/contracts/libraries/math/MarketApproxLib.sol/MarketApproxLib.json +2 -2
  132. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.dbg.json +1 -1
  133. package/build/artifacts/contracts/libraries/math/MarketMathCore.sol/MarketMathCore.json +2 -2
  134. package/build/artifacts/contracts/libraries/math/Math.sol/Math.dbg.json +1 -1
  135. package/build/artifacts/contracts/libraries/math/Math.sol/Math.json +2 -2
  136. package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.dbg.json +1 -1
  137. package/build/artifacts/contracts/libraries/math/WeekMath.sol/WeekMath.json +2 -2
  138. package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.dbg.json +1 -1
  139. package/build/artifacts/contracts/libraries/solmate/SSTORE2.sol/SSTORE2.json +2 -2
  140. package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.dbg.json +1 -1
  141. package/build/artifacts/contracts/libraries/traderjoe/JoeLibrary.sol/JoeLibrary.json +2 -2
  142. package/build/artifacts/contracts/libraries/traderjoe/PendleJoeSwapHelperUpg.sol/PendleJoeSwapHelperUpg.dbg.json +1 -1
  143. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.dbg.json +1 -1
  144. package/build/artifacts/contracts/offchain-helpers/RouterStatic.sol/RouterStatic.json +166 -13
  145. package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.dbg.json +1 -1
  146. package/build/artifacts/contracts/periphery/PendleGovernanceManager.sol/PendleGovernanceManager.json +2 -2
  147. package/build/artifacts/contracts/periphery/PermissionsV2Upg.sol/PermissionsV2Upg.dbg.json +1 -1
  148. package/contracts/SuperComposableYield/SCY-implementations/AaveV3/PendleAaveV3SCY.sol +16 -12
  149. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenHelper.sol +3 -3
  150. package/contracts/SuperComposableYield/SCY-implementations/BenQi/PendleQiTokenSCY.sol +20 -0
  151. package/contracts/SuperComposableYield/SCY-implementations/PendleERC4626SCY.sol +20 -0
  152. package/contracts/SuperComposableYield/SCY-implementations/PendleWstEthSCY.sol +20 -0
  153. package/contracts/SuperComposableYield/SCY-implementations/PendleYearnVaultScy.sol +29 -2
  154. package/contracts/SuperComposableYield/base-implementations/SCYBase.sol +63 -41
  155. package/contracts/SuperComposableYield/base-implementations/SCYBaseWithRewards.sol +0 -7
  156. package/contracts/core/LiquidityMining/GaugeController/PendleGaugeControllerBaseUpg.sol +1 -1
  157. package/contracts/core/LiquidityMining/PendleGauge.sol +24 -8
  158. package/contracts/core/LiquidityMining/VotingController/PendleVotingControllerUpg.sol +47 -96
  159. package/contracts/core/LiquidityMining/VotingController/VotingControllerStorageUpg.sol +86 -73
  160. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleMainchain.sol +17 -16
  161. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowPendleSidechain.sol +1 -1
  162. package/contracts/core/LiquidityMining/VotingEscrow/VotingEscrowTokenBase.sol +3 -4
  163. package/contracts/core/Market/PendleMarket.sol +32 -62
  164. package/contracts/core/PendleRouter.sol +1 -1
  165. package/contracts/core/YieldContracts/InterestManagerYT.sol +11 -8
  166. package/contracts/core/YieldContracts/PendlePrincipalToken.sol +3 -3
  167. package/contracts/core/YieldContracts/PendleYieldContractFactory.sol +18 -12
  168. package/contracts/core/YieldContracts/PendleYieldToken.sol +167 -140
  169. package/contracts/core/actions/ActionCallback.sol +11 -10
  170. package/contracts/core/actions/ActionCore.sol +84 -22
  171. package/contracts/core/actions/ActionYT.sol +33 -15
  172. package/contracts/core/actions/base/ActionSCYAndPTBase.sol +4 -15
  173. package/contracts/core/actions/base/ActionSCYAndPYBase.sol +20 -50
  174. package/contracts/core/actions/base/ActionSCYAndYTBase.sol +2 -12
  175. package/contracts/interfaces/IPActionCore.sol +72 -1
  176. package/contracts/interfaces/IPActionYT.sol +15 -0
  177. package/contracts/interfaces/IPMarket.sol +7 -26
  178. package/contracts/interfaces/IPRouterStatic.sol +67 -47
  179. package/contracts/interfaces/IPVeToken.sol +0 -2
  180. package/contracts/interfaces/IPVotingEscrow.sol +1 -1
  181. package/contracts/interfaces/IPYieldContractFactory.sol +6 -2
  182. package/contracts/interfaces/IPYieldToken.sol +21 -11
  183. package/contracts/interfaces/ISuperComposableYield.sol +22 -28
  184. package/contracts/interfaces/IYearnVault.sol +8 -0
  185. package/contracts/libraries/RewardManager.sol +9 -6
  186. package/contracts/libraries/RewardManagerAbstract.sol +6 -8
  187. package/contracts/libraries/SCY/SCYIndex.sol +10 -0
  188. package/contracts/libraries/VeBalanceLib.sol +0 -1
  189. package/contracts/libraries/helpers/ArrayLib.sol +11 -0
  190. package/contracts/libraries/helpers/TokenHelper.sol +6 -5
  191. package/contracts/libraries/math/MarketApproxLib.sol +91 -36
  192. package/contracts/libraries/math/Math.sol +2 -4
  193. package/contracts/offchain-helpers/RouterStatic.sol +144 -115
  194. package/deployments/43113-core.json +11 -9
  195. package/deployments/43113-markets/benqi-market-0xF3150c14F776c50C9D397054d38979c7B77FC41D.json +7 -0
  196. package/deployments/80001-core.json +10 -8
  197. package/deployments/80001-markets/benqi-market-0x150b6eb90Bf636eC0c4328d13d1e1d4adDBAF904.json +7 -0
  198. package/package.json +2 -2
  199. package/typechain-types/ActionCore.ts +8 -8
  200. package/typechain-types/CelerReceiver.ts +267 -0
  201. package/typechain-types/CelerSender.ts +164 -0
  202. package/typechain-types/IPActionCore.ts +8 -8
  203. package/typechain-types/IPAllAction.ts +8 -8
  204. package/typechain-types/IPMarket.ts +66 -109
  205. package/typechain-types/IPRouterStatic.ts +64 -41
  206. package/typechain-types/IPVotingEscrowController.ts +154 -0
  207. package/typechain-types/IPYieldContractFactory.ts +34 -0
  208. package/typechain-types/IPYieldToken.ts +12 -112
  209. package/typechain-types/ISuperComposableYield.ts +54 -10
  210. package/typechain-types/PendleAaveV3SCY.ts +54 -29
  211. package/typechain-types/PendleBtrflyScy.ts +56 -58
  212. package/typechain-types/PendleERC4626SCY.ts +54 -29
  213. package/typechain-types/PendleGauge.ts +0 -32
  214. package/typechain-types/PendleGaugeController.ts +282 -0
  215. package/typechain-types/PendleGaugeControllerMainchain.ts +346 -0
  216. package/typechain-types/PendleGaugeControllerSidechain.ts +460 -0
  217. package/typechain-types/PendleJoeLpSCY.ts +56 -58
  218. package/typechain-types/PendleMarket.ts +169 -140
  219. package/typechain-types/PendlePrincipalToken.ts +104 -0
  220. package/typechain-types/PendleQiTokenSCY.ts +54 -29
  221. package/typechain-types/PendleVotingController.ts +865 -0
  222. package/typechain-types/PendleWstEthSCY.ts +54 -29
  223. package/typechain-types/PendleYearnVaultSCY.ts +54 -29
  224. package/typechain-types/PendleYieldContractFactory.ts +66 -19
  225. package/typechain-types/PendleYieldToken.ts +122 -158
  226. package/typechain-types/RouterStatic.ts +297 -24
  227. package/typechain-types/SCYBase.ts +54 -29
  228. package/typechain-types/SCYBaseWithRewards.ts +54 -29
  229. package/typechain-types/VotingControllerStorage.ts +410 -0
  230. package/typechain-types/VotingEscrowController.ts +154 -0
  231. package/typechain-types/VotingEscrowToken.ts +335 -0
  232. package/typechain-types/factories/ActionCallback__factory.ts +1 -1
  233. package/typechain-types/factories/ActionCore__factory.ts +2 -2
  234. package/typechain-types/factories/ActionYT__factory.ts +1 -1
  235. package/typechain-types/factories/CelerReceiver__factory.ts +140 -0
  236. package/typechain-types/factories/CelerSender__factory.ts +67 -0
  237. package/typechain-types/factories/ERC20__factory.ts +1 -1
  238. package/typechain-types/factories/IPActionCore__factory.ts +1 -1
  239. package/typechain-types/factories/IPAllAction__factory.ts +1 -1
  240. package/typechain-types/factories/IPMarket__factory.ts +48 -83
  241. package/typechain-types/factories/IPRouterStatic__factory.ts +20 -15
  242. package/typechain-types/factories/IPVotingEscrowController__factory.ts +80 -0
  243. package/typechain-types/factories/IPYieldContractFactory__factory.ts +30 -4
  244. package/typechain-types/factories/IPYieldToken__factory.ts +6 -90
  245. package/typechain-types/factories/ISuperComposableYield__factory.ts +31 -2
  246. package/typechain-types/factories/PendleAaveV3SCY__factory.ts +32 -16
  247. package/typechain-types/factories/PendleBtrflyScy__factory.ts +52 -28
  248. package/typechain-types/factories/PendleERC20Permit__factory.ts +1 -1
  249. package/typechain-types/factories/PendleERC20__factory.ts +1 -1
  250. package/typechain-types/factories/PendleERC4626SCY__factory.ts +32 -16
  251. package/typechain-types/factories/PendleGaugeControllerMainchainUpg__factory.ts +1 -1
  252. package/typechain-types/factories/PendleGaugeControllerMainchain__factory.ts +269 -0
  253. package/typechain-types/factories/PendleGaugeControllerSidechainUpg__factory.ts +1 -1
  254. package/typechain-types/factories/PendleGaugeControllerSidechain__factory.ts +328 -0
  255. package/typechain-types/factories/PendleGaugeController__factory.ts +149 -0
  256. package/typechain-types/factories/PendleGauge__factory.ts +0 -26
  257. package/typechain-types/factories/PendleGovernanceManager__factory.ts +1 -1
  258. package/typechain-types/factories/PendleJoeLpSCY__factory.ts +34 -28
  259. package/typechain-types/factories/PendleMarketFactory__factory.ts +1 -1
  260. package/typechain-types/factories/PendleMarket__factory.ts +124 -110
  261. package/typechain-types/factories/PendlePrincipalToken__factory.ts +76 -1
  262. package/typechain-types/factories/PendleQiTokenHelper__factory.ts +1 -1
  263. package/typechain-types/factories/PendleQiTokenSCY__factory.ts +32 -16
  264. package/typechain-types/factories/PendleRouter__factory.ts +1 -1
  265. package/typechain-types/factories/PendleVotingControllerUpg__factory.ts +1 -1
  266. package/typechain-types/factories/PendleVotingController__factory.ts +584 -0
  267. package/typechain-types/factories/PendleWstEthSCY__factory.ts +32 -16
  268. package/typechain-types/factories/PendleYearnVaultSCY__factory.ts +32 -16
  269. package/typechain-types/factories/PendleYieldContractFactory__factory.ts +54 -19
  270. package/typechain-types/factories/PendleYieldToken__factory.ts +70 -91
  271. package/typechain-types/factories/RouterStatic__factory.ts +165 -12
  272. package/typechain-types/factories/SCYBaseWithRewards__factory.ts +31 -15
  273. package/typechain-types/factories/SCYBase__factory.ts +31 -15
  274. package/typechain-types/factories/VotingControllerStorage__factory.ts +298 -0
  275. package/typechain-types/factories/VotingEscrowController__factory.ts +80 -0
  276. package/typechain-types/factories/VotingEscrowPendleMainchain__factory.ts +1 -1
  277. package/typechain-types/factories/VotingEscrowPendleSidechain__factory.ts +1 -1
  278. package/typechain-types/factories/VotingEscrowToken__factory.ts +225 -0
  279. package/typechain-types/hardhat.d.ts +0 -27
  280. package/typechain-types/index.ts +0 -6
  281. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol/PendleBtrflyScy.dbg.json +0 -4
  282. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol/PendleBtrflyScy.json +0 -635
  283. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol/PendleJoeLpSCY.dbg.json +0 -4
  284. package/build/artifacts/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol/PendleJoeLpSCY.json +0 -653
  285. package/build/artifacts/contracts/interfaces/IPMarketAddRemoveCallback.sol/IPMarketAddRemoveCallback.dbg.json +0 -4
  286. package/build/artifacts/contracts/interfaces/IPMarketAddRemoveCallback.sol/IPMarketAddRemoveCallback.json +0 -67
  287. package/build/artifacts/contracts/libraries/solmate/Bytes32AddressLib.sol/Bytes32AddressLib.dbg.json +0 -4
  288. package/build/artifacts/contracts/libraries/solmate/Bytes32AddressLib.sol/Bytes32AddressLib.json +0 -10
  289. package/contracts/SuperComposableYield/SCY-implementations/PendleBtrflySCY.sol +0 -123
  290. package/contracts/SuperComposableYield/SCY-implementations/PendleJoeLpSCY.sol +0 -245
  291. package/contracts/interfaces/IPMarketAddRemoveCallback.sol +0 -18
  292. package/contracts/libraries/solmate/Bytes32AddressLib.sol +0 -14
  293. package/deployments/43113-markets/benqi-market.json +0 -7
  294. package/deployments/80001-markets/benqi-market.json +0 -7
@@ -6,14 +6,19 @@
6
6
  {
7
7
  "inputs": [
8
8
  {
9
- "internalType": "uint256",
9
+ "internalType": "uint96",
10
10
  "name": "_expiryDivisor",
11
- "type": "uint256"
11
+ "type": "uint96"
12
12
  },
13
13
  {
14
- "internalType": "uint256",
14
+ "internalType": "uint128",
15
15
  "name": "_interestFeeRate",
16
- "type": "uint256"
16
+ "type": "uint128"
17
+ },
18
+ {
19
+ "internalType": "uint128",
20
+ "name": "_rewardFeeRate",
21
+ "type": "uint128"
17
22
  },
18
23
  {
19
24
  "internalType": "address",
@@ -86,6 +91,19 @@
86
91
  "name": "SetInterestFeeRate",
87
92
  "type": "event"
88
93
  },
94
+ {
95
+ "anonymous": false,
96
+ "inputs": [
97
+ {
98
+ "indexed": false,
99
+ "internalType": "uint256",
100
+ "name": "newInterestFeeRate",
101
+ "type": "uint256"
102
+ }
103
+ ],
104
+ "name": "SetRewardFeeRate",
105
+ "type": "event"
106
+ },
89
107
  {
90
108
  "anonymous": false,
91
109
  "inputs": [
@@ -133,9 +151,9 @@
133
151
  "name": "expiryDivisor",
134
152
  "outputs": [
135
153
  {
136
- "internalType": "uint256",
154
+ "internalType": "uint96",
137
155
  "name": "",
138
- "type": "uint256"
156
+ "type": "uint96"
139
157
  }
140
158
  ],
141
159
  "stateMutability": "view",
@@ -220,9 +238,9 @@
220
238
  "name": "interestFeeRate",
221
239
  "outputs": [
222
240
  {
223
- "internalType": "uint256",
241
+ "internalType": "uint128",
224
242
  "name": "",
225
- "type": "uint256"
243
+ "type": "uint128"
226
244
  }
227
245
  ],
228
246
  "stateMutability": "view",
@@ -268,12 +286,12 @@
268
286
  },
269
287
  {
270
288
  "inputs": [],
271
- "name": "numContractDeployed",
289
+ "name": "pendleYtCreationCodePointer",
272
290
  "outputs": [
273
291
  {
274
- "internalType": "uint256",
292
+ "internalType": "address",
275
293
  "name": "",
276
- "type": "uint256"
294
+ "type": "address"
277
295
  }
278
296
  ],
279
297
  "stateMutability": "view",
@@ -281,12 +299,12 @@
281
299
  },
282
300
  {
283
301
  "inputs": [],
284
- "name": "pendleYtCreationCodePointer",
302
+ "name": "rewardFeeRate",
285
303
  "outputs": [
286
304
  {
287
- "internalType": "address",
305
+ "internalType": "uint128",
288
306
  "name": "",
289
- "type": "address"
307
+ "type": "uint128"
290
308
  }
291
309
  ],
292
310
  "stateMutability": "view",
@@ -295,9 +313,9 @@
295
313
  {
296
314
  "inputs": [
297
315
  {
298
- "internalType": "uint256",
316
+ "internalType": "uint96",
299
317
  "name": "newExpiryDivisor",
300
- "type": "uint256"
318
+ "type": "uint96"
301
319
  }
302
320
  ],
303
321
  "name": "setExpiryDivisor",
@@ -308,9 +326,9 @@
308
326
  {
309
327
  "inputs": [
310
328
  {
311
- "internalType": "uint256",
329
+ "internalType": "uint128",
312
330
  "name": "newInterestFeeRate",
313
- "type": "uint256"
331
+ "type": "uint128"
314
332
  }
315
333
  ],
316
334
  "name": "setInterestFeeRate",
@@ -318,6 +336,19 @@
318
336
  "stateMutability": "nonpayable",
319
337
  "type": "function"
320
338
  },
339
+ {
340
+ "inputs": [
341
+ {
342
+ "internalType": "uint128",
343
+ "name": "newInterestFeeRate",
344
+ "type": "uint128"
345
+ }
346
+ ],
347
+ "name": "setRewardFeeRate",
348
+ "outputs": [],
349
+ "stateMutability": "nonpayable",
350
+ "type": "function"
351
+ },
321
352
  {
322
353
  "inputs": [
323
354
  {
@@ -345,8 +376,8 @@
345
376
  "type": "function"
346
377
  }
347
378
  ],
348
- "bytecode": "0x60a06040523480156200001157600080fd5b50604051620035ab380380620035ab833981016040819052620000349162000352565b806001600160a01b038116620000805760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064015b60405180910390fd5b6001600160a01b03166080526200009784620000ce565b620000a28362000186565b620000ad82620001f9565b60688054906000620000bf836200039d565b91905055505050505062000413565b620000d8620002c7565b6001600160a01b0316336001600160a01b0316146200010b5760405162461bcd60e51b81526004016200007790620003c5565b806000036200014a5760405162461bcd60e51b815260206004820152600a6024820152697a65726f2076616c756560b01b604482015260640162000077565b60658190556040518181527fdaf60f79a59eb1d8c1748ab26dc83c44f364ce8c1fc497ec2df45d9538a1aa11906020015b60405180910390a150565b62000190620002c7565b6001600160a01b0316336001600160a01b031614620001c35760405162461bcd60e51b81526004016200007790620003c5565b60668190556040518181527fa9d618683ded3ac7317e1717ad10e9e3b92041092a8e97ceb038c699cc54d640906020016200017b565b62000203620002c7565b6001600160a01b0316336001600160a01b031614620002365760405162461bcd60e51b81526004016200007790620003c5565b6001600160a01b0381166200027d5760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015260640162000077565b606780546001600160a01b0319166001600160a01b0383169081179091556040517fcb7ef3e545f5cdb893f5c568ba710fe08f336375a2d9fd66e161033f8fc09ef390600090a250565b60006080516001600160a01b0316635aa6e6756040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200030a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003309190620003ee565b905090565b80516001600160a01b03811681146200034d57600080fd5b919050565b600080600080608085870312156200036957600080fd5b8451935060208501519250620003826040860162000335565b9150620003926060860162000335565b905092959194509250565b600060018201620003be57634e487b7160e01b600052601160045260246000fd5b5060010190565b6020808252600f908201526e4f4e4c595f474f5645524e414e434560881b604082015260600190565b6000602082840312156200040157600080fd5b6200040c8262000335565b9392505050565b608051613175620004366000396000818161026c0152610c8401526131756000f3fe60806040523480156200001157600080fd5b5060043610620000d65760003560e01c806318b7373d14620000db578063439fab91146200011657806361d027b3146200012f57806371846aa814620001525780637497395814620001785780637d379a48146200018f57806387efe5a714620001a65780638c9f796214620001dd578063a18248c91462000214578063af64d741146200024c578063d2e6d1c31462000266578063d58e111f146200028e578063dd86fea114620002a7578063e9e5f3cf14620002b1578063f0f4426014620002bb575b600080fd5b62000101620000ec36600462001757565b606b6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6200012d62000127366004620017f1565b620002d2565b005b60675462000143906001600160a01b031681565b6040516200010d919062001878565b620001016200016336600462001757565b606c6020526000908152604090205460ff1681565b6200012d620001893660046200188c565b620003c7565b6200012d620001a03660046200188c565b6200047f565b62000143620001b7366004620018a6565b60696020908152600092835260408084209091529082529020546001600160a01b031681565b62000143620001ee366004620018a6565b606a6020908152600092835260408084209091529082529020546001600160a01b031681565b6200022b62000225366004620018d5565b620004f2565b604080516001600160a01b039384168152929091166020830152016200010d565b60645462000143906201000090046001600160a01b031681565b620001437f000000000000000000000000000000000000000000000000000000000000000081565b6200029860685481565b6040519081526020016200010d565b6200029860665481565b6200029860655481565b6200012d620002cc36600462001757565b62000b5f565b606454610100900460ff16620002ef5760645460ff1615620002f3565b303b155b6200035c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b606454610100900460ff161580156200037f576064805461ffff19166101011790555b6200038a8262000c2d565b606460026101000a8154816001600160a01b0302191690836001600160a01b031602179055508015620003c3576064805461ff00191690555b5050565b620003d162000c80565b6001600160a01b0316336001600160a01b031614620004045760405162461bcd60e51b815260040162000353906200191b565b80600003620004435760405162461bcd60e51b815260206004820152600a6024820152697a65726f2076616c756560b01b604482015260640162000353565b60658190556040518181527fdaf60f79a59eb1d8c1748ab26dc83c44f364ce8c1fc497ec2df45d9538a1aa11906020015b60405180910390a150565b6200048962000c80565b6001600160a01b0316336001600160a01b031614620004bc5760405162461bcd60e51b815260040162000353906200191b565b60668190556040518181527fa9d618683ded3ac7317e1717ad10e9e3b92041092a8e97ceb038c699cc54d6409060200162000474565b60008063ffffffff831642106200054b5760405162461bcd60e51b815260206004820152601c60248201527b657870697279206d75737420626520696e207468652066757475726560201b604482015260640162000353565b606554620005609063ffffffff85166200195a565b15620005ad5760405162461bcd60e51b815260206004820152601b60248201527a36bab9ba1031329036bab63a34b836329037b3103234bb34b9b7b960291b604482015260640162000353565b6001600160a01b03848116600090815260696020908152604080832063ffffffff8816845290915290205416156200061d5760405162461bcd60e51b8152602060048201526012602482015271141508185b1c9958591e48195e1a5cdd195960721b604482015260640162000353565b60008490506000816001600160a01b031663a40bee506040518163ffffffff1660e01b8152600401606060405180830381865afa15801562000663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000689919062001971565b925050506200085d60405180602001620006a39062001730565b6020820181038252601f19601f820116604052506000801b8862000776866001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620006ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000729919081019062001a00565b8a63ffffffff16604051806040016040528060018152602001600160fd1b81525060405180604001604052806002815260200161141560f21b81525062000d0c909392919063ffffffff16565b62000830876001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007e3919081019062001a00565b8b63ffffffff16604051806040016040528060018152602001602d60f81b81525060405180604001604052806002815260200161141560f21b81525062000d0c909392919063ffffffff16565b868b6040516020016200084895949392919062001aa4565b60405160208183030381529060405262000d4c565b935062000a21606460029054906101000a90046001600160a01b03166000801b888762000939876001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620008c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008ec919081019062001a00565b8b63ffffffff16604051806040016040528060018152602001600160fd1b81525060405180604001604052806002815260200161165560f21b81525062000d0c909392919063ffffffff16565b620009f3886001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200097c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620009a6919081019062001a00565b8c63ffffffff16604051806040016040528060018152602001602d60f81b81525060405180604001604052806002815260200161165560f21b81525062000d0c909392919063ffffffff16565b878c60405160200162000a0c9695949392919062001b00565b60405160208183030381529060405262000d8c565b60405163189acdbd60e31b81529093506001600160a01b0385169063c4d66de89062000a5290869060040162001878565b600060405180830381600087803b15801562000a6d57600080fd5b505af115801562000a82573d6000803e3d6000fd5b505050506001600160a01b03868116600081815260696020908152604080832063ffffffff8b1680855290835281842080548b88166001600160a01b03199182168117909255868652606a855283862083875285528386208054988c169890911688179055808552606b8452828520805460ff199081166001908117909255888752606c86529584902080549096161790945581519384529183019490945292810192909252907f7c10d2914fa2900a53b0058359f4d5581f2b83982b0964c38c182079e884ba2f9060600160405180910390a250509250929050565b62000b6962000c80565b6001600160a01b0316336001600160a01b03161462000b9c5760405162461bcd60e51b815260040162000353906200191b565b6001600160a01b03811662000be35760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015260640162000353565b606780546001600160a01b0319166001600160a01b0383169081179091556040517fcb7ef3e545f5cdb893f5c568ba710fe08f336375a2d9fd66e161033f8fc09ef390600090a250565b60008082511162000c6f5760405162461bcd60e51b815260206004820152600b60248201526a0f4cae4de40d8cadccee8d60ab1b604482015260640162000353565b62000c7a8262000dad565b92915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635aa6e6756040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000ce1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d07919062001b65565b905090565b60608482858462000d1d8762000e58565b60405160200162000d3395949392919062001b85565b6040516020818303038152906040529050949350505050565b600080848360405160200162000d6492919062001bfa565b604051602081830303815290604052905062000d836000858362000ed6565b95945050505050565b600062000da562000d9d8562000fdd565b848462000d4c565b949350505050565b6000808260405160200162000dc3919062001c2d565b604051602081830303815290604052905060008160405160200162000de9919062001c55565b60405160208183030381529060405290508051602082016000f092506001600160a01b03831662000e515760405162461bcd60e51b81526020600482015260116024820152701111541313d65351539517d19052531151607a1b604482015260640162000353565b5050919050565b6060600062000e678362001002565b9050600062000e7d826040015160ff16620011b7565b9050600062000e8c83620012f1565b9050600062000ea3846000015161ffff16620011b7565b905082828260405160200162000ebc9392919062001c8b565b604051602081830303815290604052945050505050919050565b6000808447101562000f2b5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640162000353565b825160000362000f7e5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640162000353565b8383516020850187f590506001600160a01b03811662000da55760405162461bcd60e51b8152602060048201526019602482015278437265617465323a204661696c6564206f6e206465706c6f7960381b604482015260640162000353565b606062000c7a82600162000ffc816001600160a01b0384163b62001cea565b6200147b565b604080516060810182526000808252602082018190529181018290529080806200102c856200149e565b61ffff1684526200103f6107b2620015b7565b8451620010509061ffff16620015b7565b6200105c919062001cea565b91506200106e826301e2850062001d04565b6200107a908462001d26565b9250816107b2856000015162001091919062001d41565b61ffff16620010a1919062001cea565b620010b1906301e1338062001d04565b620010bd908462001d26565b92506000600191505b600c8260ff16116200113c57620010e282866000015162001608565b620010f49060ff166201518062001d04565b90508562001103858362001d26565b1115620011195760ff821660208601526200113c565b62001125818562001d26565b935081620011338162001d67565b925050620010c6565b600191505b620011558560200151866000015162001608565b60ff168260ff1611620011ae578562001172856201518062001d26565b1115620011885760ff82166040860152620011ae565b62001197620151808562001d26565b935081620011a58162001d67565b92505062001141565b50505050919050565b606081600003620011df5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156200120f5780620011f68162001d89565b9150620012079050600a8362001da5565b9150620011e3565b6000816001600160401b038111156200122c576200122c6200177e565b6040519080825280601f01601f19166020018201604052801562001257576020820181803683370190505b50905060006200126960018462001cea565b90505b8515620012e85762001280600a876200195a565b6200128d90603062001d26565b60f81b828281518110620012a557620012a562001dbc565b60200101906001600160f81b031916908160001a9053508015620012d35780620012cf8162001dd2565b9150505b620012e0600a8762001da5565b95506200126c565b50949350505050565b604080516101c08101825260036101808201818152622520a760e91b6101a0840152825282518084018452818152622322a160e91b60208281019190915280840191909152835180850185528281526226a0a960e91b8183015283850152835180850185528281526220a82960e91b8183015260608481019190915284518086018652838152624d415960e81b8184015260808501528451808601865283815262252aa760e91b8184015260a0850152845180860186528381526212955360ea1b8184015260c0850152845180860186528381526241554760e81b8184015260e0850152845180860186528381526205345560ec1b81840152610100850152845180860186528381526213d0d560ea1b8184015261012085015284518086018652838152622727ab60e91b8184015261014085015284518086019095529184526244454360e81b84820152610160830193909352918301518190620014599060019062001dec565b60ff16600c81106200146f576200146f62001dbc565b60200201519392505050565b60408051603f8301601f19168101909152818152818360208301863c9392505050565b6000808080620014b36301e133808662001da5565b620014c1906107b262001d26565b9150620014d06107b2620015b7565b620014df8361ffff16620015b7565b620014eb919062001cea565b9050620014fd816301e2850062001d04565b62001509908462001d26565b9250806200151a6107b28462001d41565b61ffff166200152a919062001cea565b6200153a906301e1338062001d04565b62001546908462001d26565b92505b84831115620015af57620015696200156360018462001d41565b620016e0565b1562001587576200157f6301e285008462001cea565b92506200159a565b620015976301e133808462001cea565b92505b620015a760018362001d41565b915062001549565b509392505050565b6000620015c660018362001cea565b9150620015d66101908362001da5565b620015e360648462001da5565b620015f060048562001da5565b620015fc919062001cea565b62000c7a919062001d26565b60008260ff16600114806200162057508260ff166003145b806200162f57508260ff166005145b806200163e57508260ff166007145b806200164d57508260ff166008145b806200165c57508260ff16600a145b806200166b57508260ff16600c145b156200167a5750601f62000c7a565b8260ff16600414806200169057508260ff166006145b806200169f57508260ff166009145b80620016ae57508260ff16600b145b15620016bd5750601e62000c7a565b620016c882620016e0565b15620016d75750601d62000c7a565b50601c92915050565b6000620016ef60048362001e12565b61ffff161580156200171057506200170960648362001e12565b61ffff1615155b8062000c7a5750620017256101908362001e12565b61ffff161592915050565b6113098062001e3783390190565b6001600160a01b03811681146200175457600080fd5b50565b6000602082840312156200176a57600080fd5b813562001777816200173e565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620017bf57620017bf6200177e565b604052919050565b60006001600160401b03821115620017e357620017e36200177e565b50601f01601f191660200190565b6000602082840312156200180457600080fd5b81356001600160401b038111156200181b57600080fd5b8201601f810184136200182d57600080fd5b8035620018446200183e82620017c7565b62001794565b8181528560208385010111156200185a57600080fd5b81602084016020830137600091810160200191909152949350505050565b6001600160a01b0391909116815260200190565b6000602082840312156200189f57600080fd5b5035919050565b60008060408385031215620018ba57600080fd5b8235620018c7816200173e565b946020939093013593505050565b60008060408385031215620018e957600080fd5b8235620018f6816200173e565b9150602083013563ffffffff811681146200191057600080fd5b809150509250929050565b6020808252600f908201526e4f4e4c595f474f5645524e414e434560881b604082015260600190565b634e487b7160e01b600052601260045260246000fd5b6000826200196c576200196c62001944565b500690565b6000806000606084860312156200198757600080fd5b8351600281106200199757600080fd5b6020850151909350620019aa816200173e565b604085015190925060ff81168114620019c257600080fd5b809150509250925092565b60005b83811015620019ea578181015183820152602001620019d0565b83811115620019fa576000848401525b50505050565b60006020828403121562001a1357600080fd5b81516001600160401b0381111562001a2a57600080fd5b8201601f8101841362001a3c57600080fd5b805162001a4d6200183e82620017c7565b81815285602083850101111562001a6357600080fd5b62000d83826020830160208601620019cd565b6000815180845262001a90816020860160208601620019cd565b601f01601f19169290920160200192915050565b6001600160a01b038616815260a06020820181905260009062001aca9083018762001a76565b828103604084015262001ade818762001a76565b91505060ff8416606083015263ffffffff831660808301529695505050505050565b6001600160a01b0387811682528616602082015260c06040820181905260009062001b2e9083018762001a76565b828103606084015262001b42818762001a76565b91505060ff8416608083015263ffffffff831660a0830152979650505050505050565b60006020828403121562001b7857600080fd5b815162001777816200173e565b6000865162001b99818460208b01620019cd565b86519083019062001baf818360208b01620019cd565b865191019062001bc4818360208a01620019cd565b855191019062001bd9818360208901620019cd565b845191019062001bee818360208801620019cd565b01979650505050505050565b6000835162001c0e818460208801620019cd565b83519083019062001c24818360208801620019cd565b01949350505050565b600081526000825162001c48816001850160208701620019cd565b9190910160010192915050565b6a600b5981380380925939f360a81b8152815160009062001c7e81600b850160208701620019cd565b91909101600b0192915050565b6000845162001c9f818460208901620019cd565b84519083019062001cb5818360208901620019cd565b845191019062001cca818360208801620019cd565b0195945050505050565b634e487b7160e01b600052601160045260246000fd5b60008282101562001cff5762001cff62001cd4565b500390565b600081600019048311821515161562001d215762001d2162001cd4565b500290565b6000821982111562001d3c5762001d3c62001cd4565b500190565b600061ffff8381169083168181101562001d5f5762001d5f62001cd4565b039392505050565b600060ff821660ff810362001d805762001d8062001cd4565b60010192915050565b60006001820162001d9e5762001d9e62001cd4565b5060010190565b60008262001db75762001db762001944565b500490565b634e487b7160e01b600052603260045260246000fd5b60008162001de45762001de462001cd4565b506000190190565b600060ff821660ff84168082101562001e095762001e0962001cd4565b90039392505050565b600061ffff8084168062001e2a5762001e2a62001944565b9216919091069291505056fe6101006040523480156200001257600080fd5b50604051620013093803806200130983398101604081905262000035916200015e565b83838360036200004684826200029d565b5060046200005583826200029d565b5060ff166080525050600280546001600160f81b0316600160f81b1790556001600160a01b0390941660a05250505060e0523360c05262000369565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000b957600080fd5b81516001600160401b0380821115620000d657620000d662000091565b604051601f8301601f19908116603f0116810190828211818310171562000101576200010162000091565b816040528381526020925086838588010111156200011e57600080fd5b600091505b8382101562000142578582018301518183018401529082019062000123565b83821115620001545760008385830101525b9695505050505050565b600080600080600060a086880312156200017757600080fd5b85516001600160a01b03811681146200018f57600080fd5b60208701519095506001600160401b0380821115620001ad57600080fd5b620001bb89838a01620000a7565b95506040880151915080821115620001d257600080fd5b50620001e188828901620000a7565b935050606086015160ff81168114620001f957600080fd5b80925050608086015190509295509295909350565b600181811c908216806200022357607f821691505b6020821081036200024457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200029857600081815260208120601f850160051c81016020861015620002735750805b601f850160051c820191505b8181101562000294578281556001016200027f565b5050505b505050565b81516001600160401b03811115620002b957620002b962000091565b620002d181620002ca84546200020e565b846200024a565b602080601f831160018114620003095760008415620002f05750858301515b600019600386901b1c1916600185901b17855562000294565b600085815260208120601f198616915b828110156200033a5788860151825594840194600190910190840162000319565b5085821015620003595787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e051610f58620003b16000396000818161016601526102c701526000818161027a01526105c2015260006101cb015260006101920152610f586000f3fe608060405234801561001057600080fd5b50600436106100db5760003560e01c806306fdde03146100e0578063095ea7b3146100fe57806312a31dcc1461012157806318160ddd1461013657806323b872dd146101515780632f13b60c14610164578063313ce5671461018d57806347bfac62146101c657806370a0823114610205578063781c18db1461022e57806395d89b4114610247578063a9059cbb1461024f578063b64761f914610262578063c45a015514610275578063c4d66de81461029c578063dd62ed3e146102af578063e184c9be146102c2575b600080fd5b6100e86102e9565b6040516100f59190610cc3565b60405180910390f35b61011161010c366004610d34565b61037b565b60405190151581526020016100f5565b61013461012f366004610d34565b610393565b005b6002546001600160f81b03165b6040519081526020016100f5565b61011161015f366004610d5e565b6103da565b7f0000000000000000000000000000000000000000000000000000000000000000421015610111565b6101b47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100f5565b6101ed7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100f5565b610143610213366004610d9a565b6001600160a01b031660009081526020819052604090205490565b6005546101ed906201000090046001600160a01b031681565b6100e8610458565b61011161025d366004610d34565b610467565b610134610270366004610d34565b6104d9565b6101ed7f000000000000000000000000000000000000000000000000000000000000000081565b6101346102aa366004610d9a565b610513565b6101436102bd366004610dbc565b610655565b6101437f000000000000000000000000000000000000000000000000000000000000000081565b6060600380546102f890610def565b80601f016020809104026020016040519081016040528092919081815260200182805461032490610def565b80156103715780601f1061034657610100808354040283529160200191610371565b820191906000526020600020905b81548152906001019060200180831161035457829003601f168201915b5050505050905090565b600033610389818585610680565b5060019392505050565b6005546201000090046001600160a01b031633146103cc5760405162461bcd60e51b81526004016103c390610e29565b60405180910390fd5b6103d682826107a5565b5050565b600254600090600119600160f81b90910460ff160161040b5760405162461bcd60e51b81526004016103c390610e4a565b600280546001600160f81b0316600160f91b1790553361042c8582856108af565b610437858585610929565b6001915050600280546001600160f81b0316600160f81b1790559392505050565b6060600480546102f890610def565b600254600090600119600160f81b90910460ff16016104985760405162461bcd60e51b81526004016103c390610e4a565b600280546001600160f81b0316600160f91b179055336104b9818585610929565b6001915050600280546001600160f81b0316600160f81b17905592915050565b6005546201000090046001600160a01b031633146105095760405162461bcd60e51b81526004016103c390610e29565b6103d68282610b40565b600554610100900460ff1661052e5760055460ff1615610532565b303b155b6105955760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103c3565b600554610100900460ff161580156105b7576005805461ffff19166101011790555b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461061e5760405162461bcd60e51b815260206004820152600c60248201526b4f4e4c595f464143544f525960a01b60448201526064016103c3565b6005805462010000600160b01b031916620100006001600160a01b0385160217905580156103d6576005805461ff00191690555050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166106e25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103c3565b6001600160a01b0382166107435760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103c3565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0382166107fb5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103c3565b61080481610cad565b6002805460009061081f9084906001600160f81b0316610e97565b92506101000a8154816001600160f81b0302191690836001600160f81b0316021790555080600080846001600160a01b03166001600160a01b0316815260200190815260200160002060008282546108779190610ec2565b90915550506040518181526001600160a01b03831690600090600080516020610f038339815191529060200160405180910390a35050565b60006108bb8484610655565b9050600019811461092357818110156109165760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103c3565b6109238484848403610680565b50505050565b6001600160a01b03831661098d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103c3565b6001600160a01b0382166109ef5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103c3565b816001600160a01b0316836001600160a01b031603610a4a5760405162461bcd60e51b815260206004820152601760248201527622a92199181d103a3930b739b332b9103a379039b2b63360491b60448201526064016103c3565b6001600160a01b03831660009081526020819052604090205481811015610ac25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103c3565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610af9908490610ec2565b92505081905550826001600160a01b0316846001600160a01b0316600080516020610f0383398151915284604051610b3391815260200190565b60405180910390a3610923565b6001600160a01b038216610ba05760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103c3565b6001600160a01b03821660009081526020819052604090205481811015610c145760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103c3565b6001600160a01b03831660009081526020819052604090208282039055610c3a82610cad565b60028054600090610c559084906001600160f81b0316610eda565b92506101000a8154816001600160f81b0302191690836001600160f81b0316021790555060006001600160a01b0316836001600160a01b0316600080516020610f038339815191528460405161079891815260200190565b6000600160f81b8210610cbf57600080fd5b5090565b600060208083528351808285015260005b81811015610cf057858101830151858201604001528201610cd4565b81811115610d02576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610d2f57600080fd5b919050565b60008060408385031215610d4757600080fd5b610d5083610d18565b946020939093013593505050565b600080600060608486031215610d7357600080fd5b610d7c84610d18565b9250610d8a60208501610d18565b9150604084013590509250925092565b600060208284031215610dac57600080fd5b610db582610d18565b9392505050565b60008060408385031215610dcf57600080fd5b610dd883610d18565b9150610de660208401610d18565b90509250929050565b600181811c90821680610e0357607f821691505b602082108103610e2357634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526007908201526613d3931657d65560ca1b604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001600160f81b03828116848216808303821115610eb957610eb9610e81565b01949350505050565b60008219821115610ed557610ed5610e81565b500190565b60006001600160f81b0383811690831681811015610efa57610efa610e81565b03939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f35402327244b52e6d97630361a9002d179f2c37a217c1ca64cae720df30f51464736f6c634300080f0033a2646970667358221220ddf0d0325223798f3b6c129d58c1693edadfeb8772d9b884184a6e19b1bbe5f464736f6c634300080f0033",
349
- "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620000d65760003560e01c806318b7373d14620000db578063439fab91146200011657806361d027b3146200012f57806371846aa814620001525780637497395814620001785780637d379a48146200018f57806387efe5a714620001a65780638c9f796214620001dd578063a18248c91462000214578063af64d741146200024c578063d2e6d1c31462000266578063d58e111f146200028e578063dd86fea114620002a7578063e9e5f3cf14620002b1578063f0f4426014620002bb575b600080fd5b62000101620000ec36600462001757565b606b6020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6200012d62000127366004620017f1565b620002d2565b005b60675462000143906001600160a01b031681565b6040516200010d919062001878565b620001016200016336600462001757565b606c6020526000908152604090205460ff1681565b6200012d620001893660046200188c565b620003c7565b6200012d620001a03660046200188c565b6200047f565b62000143620001b7366004620018a6565b60696020908152600092835260408084209091529082529020546001600160a01b031681565b62000143620001ee366004620018a6565b606a6020908152600092835260408084209091529082529020546001600160a01b031681565b6200022b62000225366004620018d5565b620004f2565b604080516001600160a01b039384168152929091166020830152016200010d565b60645462000143906201000090046001600160a01b031681565b620001437f000000000000000000000000000000000000000000000000000000000000000081565b6200029860685481565b6040519081526020016200010d565b6200029860665481565b6200029860655481565b6200012d620002cc36600462001757565b62000b5f565b606454610100900460ff16620002ef5760645460ff1615620002f3565b303b155b6200035c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b606454610100900460ff161580156200037f576064805461ffff19166101011790555b6200038a8262000c2d565b606460026101000a8154816001600160a01b0302191690836001600160a01b031602179055508015620003c3576064805461ff00191690555b5050565b620003d162000c80565b6001600160a01b0316336001600160a01b031614620004045760405162461bcd60e51b815260040162000353906200191b565b80600003620004435760405162461bcd60e51b815260206004820152600a6024820152697a65726f2076616c756560b01b604482015260640162000353565b60658190556040518181527fdaf60f79a59eb1d8c1748ab26dc83c44f364ce8c1fc497ec2df45d9538a1aa11906020015b60405180910390a150565b6200048962000c80565b6001600160a01b0316336001600160a01b031614620004bc5760405162461bcd60e51b815260040162000353906200191b565b60668190556040518181527fa9d618683ded3ac7317e1717ad10e9e3b92041092a8e97ceb038c699cc54d6409060200162000474565b60008063ffffffff831642106200054b5760405162461bcd60e51b815260206004820152601c60248201527b657870697279206d75737420626520696e207468652066757475726560201b604482015260640162000353565b606554620005609063ffffffff85166200195a565b15620005ad5760405162461bcd60e51b815260206004820152601b60248201527a36bab9ba1031329036bab63a34b836329037b3103234bb34b9b7b960291b604482015260640162000353565b6001600160a01b03848116600090815260696020908152604080832063ffffffff8816845290915290205416156200061d5760405162461bcd60e51b8152602060048201526012602482015271141508185b1c9958591e48195e1a5cdd195960721b604482015260640162000353565b60008490506000816001600160a01b031663a40bee506040518163ffffffff1660e01b8152600401606060405180830381865afa15801562000663573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000689919062001971565b925050506200085d60405180602001620006a39062001730565b6020820181038252601f19601f820116604052506000801b8862000776866001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620006ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000729919081019062001a00565b8a63ffffffff16604051806040016040528060018152602001600160fd1b81525060405180604001604052806002815260200161141560f21b81525062000d0c909392919063ffffffff16565b62000830876001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007e3919081019062001a00565b8b63ffffffff16604051806040016040528060018152602001602d60f81b81525060405180604001604052806002815260200161141560f21b81525062000d0c909392919063ffffffff16565b868b6040516020016200084895949392919062001aa4565b60405160208183030381529060405262000d4c565b935062000a21606460029054906101000a90046001600160a01b03166000801b888762000939876001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620008c2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008ec919081019062001a00565b8b63ffffffff16604051806040016040528060018152602001600160fd1b81525060405180604001604052806002815260200161165560f21b81525062000d0c909392919063ffffffff16565b620009f3886001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156200097c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620009a6919081019062001a00565b8c63ffffffff16604051806040016040528060018152602001602d60f81b81525060405180604001604052806002815260200161165560f21b81525062000d0c909392919063ffffffff16565b878c60405160200162000a0c9695949392919062001b00565b60405160208183030381529060405262000d8c565b60405163189acdbd60e31b81529093506001600160a01b0385169063c4d66de89062000a5290869060040162001878565b600060405180830381600087803b15801562000a6d57600080fd5b505af115801562000a82573d6000803e3d6000fd5b505050506001600160a01b03868116600081815260696020908152604080832063ffffffff8b1680855290835281842080548b88166001600160a01b03199182168117909255868652606a855283862083875285528386208054988c169890911688179055808552606b8452828520805460ff199081166001908117909255888752606c86529584902080549096161790945581519384529183019490945292810192909252907f7c10d2914fa2900a53b0058359f4d5581f2b83982b0964c38c182079e884ba2f9060600160405180910390a250509250929050565b62000b6962000c80565b6001600160a01b0316336001600160a01b03161462000b9c5760405162461bcd60e51b815260040162000353906200191b565b6001600160a01b03811662000be35760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015260640162000353565b606780546001600160a01b0319166001600160a01b0383169081179091556040517fcb7ef3e545f5cdb893f5c568ba710fe08f336375a2d9fd66e161033f8fc09ef390600090a250565b60008082511162000c6f5760405162461bcd60e51b815260206004820152600b60248201526a0f4cae4de40d8cadccee8d60ab1b604482015260640162000353565b62000c7a8262000dad565b92915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635aa6e6756040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000ce1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d07919062001b65565b905090565b60608482858462000d1d8762000e58565b60405160200162000d3395949392919062001b85565b6040516020818303038152906040529050949350505050565b600080848360405160200162000d6492919062001bfa565b604051602081830303815290604052905062000d836000858362000ed6565b95945050505050565b600062000da562000d9d8562000fdd565b848462000d4c565b949350505050565b6000808260405160200162000dc3919062001c2d565b604051602081830303815290604052905060008160405160200162000de9919062001c55565b60405160208183030381529060405290508051602082016000f092506001600160a01b03831662000e515760405162461bcd60e51b81526020600482015260116024820152701111541313d65351539517d19052531151607a1b604482015260640162000353565b5050919050565b6060600062000e678362001002565b9050600062000e7d826040015160ff16620011b7565b9050600062000e8c83620012f1565b9050600062000ea3846000015161ffff16620011b7565b905082828260405160200162000ebc9392919062001c8b565b604051602081830303815290604052945050505050919050565b6000808447101562000f2b5760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640162000353565b825160000362000f7e5760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640162000353565b8383516020850187f590506001600160a01b03811662000da55760405162461bcd60e51b8152602060048201526019602482015278437265617465323a204661696c6564206f6e206465706c6f7960381b604482015260640162000353565b606062000c7a82600162000ffc816001600160a01b0384163b62001cea565b6200147b565b604080516060810182526000808252602082018190529181018290529080806200102c856200149e565b61ffff1684526200103f6107b2620015b7565b8451620010509061ffff16620015b7565b6200105c919062001cea565b91506200106e826301e2850062001d04565b6200107a908462001d26565b9250816107b2856000015162001091919062001d41565b61ffff16620010a1919062001cea565b620010b1906301e1338062001d04565b620010bd908462001d26565b92506000600191505b600c8260ff16116200113c57620010e282866000015162001608565b620010f49060ff166201518062001d04565b90508562001103858362001d26565b1115620011195760ff821660208601526200113c565b62001125818562001d26565b935081620011338162001d67565b925050620010c6565b600191505b620011558560200151866000015162001608565b60ff168260ff1611620011ae578562001172856201518062001d26565b1115620011885760ff82166040860152620011ae565b62001197620151808562001d26565b935081620011a58162001d67565b92505062001141565b50505050919050565b606081600003620011df5750506040805180820190915260018152600360fc1b602082015290565b8160005b81156200120f5780620011f68162001d89565b9150620012079050600a8362001da5565b9150620011e3565b6000816001600160401b038111156200122c576200122c6200177e565b6040519080825280601f01601f19166020018201604052801562001257576020820181803683370190505b50905060006200126960018462001cea565b90505b8515620012e85762001280600a876200195a565b6200128d90603062001d26565b60f81b828281518110620012a557620012a562001dbc565b60200101906001600160f81b031916908160001a9053508015620012d35780620012cf8162001dd2565b9150505b620012e0600a8762001da5565b95506200126c565b50949350505050565b604080516101c08101825260036101808201818152622520a760e91b6101a0840152825282518084018452818152622322a160e91b60208281019190915280840191909152835180850185528281526226a0a960e91b8183015283850152835180850185528281526220a82960e91b8183015260608481019190915284518086018652838152624d415960e81b8184015260808501528451808601865283815262252aa760e91b8184015260a0850152845180860186528381526212955360ea1b8184015260c0850152845180860186528381526241554760e81b8184015260e0850152845180860186528381526205345560ec1b81840152610100850152845180860186528381526213d0d560ea1b8184015261012085015284518086018652838152622727ab60e91b8184015261014085015284518086019095529184526244454360e81b84820152610160830193909352918301518190620014599060019062001dec565b60ff16600c81106200146f576200146f62001dbc565b60200201519392505050565b60408051603f8301601f19168101909152818152818360208301863c9392505050565b6000808080620014b36301e133808662001da5565b620014c1906107b262001d26565b9150620014d06107b2620015b7565b620014df8361ffff16620015b7565b620014eb919062001cea565b9050620014fd816301e2850062001d04565b62001509908462001d26565b9250806200151a6107b28462001d41565b61ffff166200152a919062001cea565b6200153a906301e1338062001d04565b62001546908462001d26565b92505b84831115620015af57620015696200156360018462001d41565b620016e0565b1562001587576200157f6301e285008462001cea565b92506200159a565b620015976301e133808462001cea565b92505b620015a760018362001d41565b915062001549565b509392505050565b6000620015c660018362001cea565b9150620015d66101908362001da5565b620015e360648462001da5565b620015f060048562001da5565b620015fc919062001cea565b62000c7a919062001d26565b60008260ff16600114806200162057508260ff166003145b806200162f57508260ff166005145b806200163e57508260ff166007145b806200164d57508260ff166008145b806200165c57508260ff16600a145b806200166b57508260ff16600c145b156200167a5750601f62000c7a565b8260ff16600414806200169057508260ff166006145b806200169f57508260ff166009145b80620016ae57508260ff16600b145b15620016bd5750601e62000c7a565b620016c882620016e0565b15620016d75750601d62000c7a565b50601c92915050565b6000620016ef60048362001e12565b61ffff161580156200171057506200170960648362001e12565b61ffff1615155b8062000c7a5750620017256101908362001e12565b61ffff161592915050565b6113098062001e3783390190565b6001600160a01b03811681146200175457600080fd5b50565b6000602082840312156200176a57600080fd5b813562001777816200173e565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620017bf57620017bf6200177e565b604052919050565b60006001600160401b03821115620017e357620017e36200177e565b50601f01601f191660200190565b6000602082840312156200180457600080fd5b81356001600160401b038111156200181b57600080fd5b8201601f810184136200182d57600080fd5b8035620018446200183e82620017c7565b62001794565b8181528560208385010111156200185a57600080fd5b81602084016020830137600091810160200191909152949350505050565b6001600160a01b0391909116815260200190565b6000602082840312156200189f57600080fd5b5035919050565b60008060408385031215620018ba57600080fd5b8235620018c7816200173e565b946020939093013593505050565b60008060408385031215620018e957600080fd5b8235620018f6816200173e565b9150602083013563ffffffff811681146200191057600080fd5b809150509250929050565b6020808252600f908201526e4f4e4c595f474f5645524e414e434560881b604082015260600190565b634e487b7160e01b600052601260045260246000fd5b6000826200196c576200196c62001944565b500690565b6000806000606084860312156200198757600080fd5b8351600281106200199757600080fd5b6020850151909350620019aa816200173e565b604085015190925060ff81168114620019c257600080fd5b809150509250925092565b60005b83811015620019ea578181015183820152602001620019d0565b83811115620019fa576000848401525b50505050565b60006020828403121562001a1357600080fd5b81516001600160401b0381111562001a2a57600080fd5b8201601f8101841362001a3c57600080fd5b805162001a4d6200183e82620017c7565b81815285602083850101111562001a6357600080fd5b62000d83826020830160208601620019cd565b6000815180845262001a90816020860160208601620019cd565b601f01601f19169290920160200192915050565b6001600160a01b038616815260a06020820181905260009062001aca9083018762001a76565b828103604084015262001ade818762001a76565b91505060ff8416606083015263ffffffff831660808301529695505050505050565b6001600160a01b0387811682528616602082015260c06040820181905260009062001b2e9083018762001a76565b828103606084015262001b42818762001a76565b91505060ff8416608083015263ffffffff831660a0830152979650505050505050565b60006020828403121562001b7857600080fd5b815162001777816200173e565b6000865162001b99818460208b01620019cd565b86519083019062001baf818360208b01620019cd565b865191019062001bc4818360208a01620019cd565b855191019062001bd9818360208901620019cd565b845191019062001bee818360208801620019cd565b01979650505050505050565b6000835162001c0e818460208801620019cd565b83519083019062001c24818360208801620019cd565b01949350505050565b600081526000825162001c48816001850160208701620019cd565b9190910160010192915050565b6a600b5981380380925939f360a81b8152815160009062001c7e81600b850160208701620019cd565b91909101600b0192915050565b6000845162001c9f818460208901620019cd565b84519083019062001cb5818360208901620019cd565b845191019062001cca818360208801620019cd565b0195945050505050565b634e487b7160e01b600052601160045260246000fd5b60008282101562001cff5762001cff62001cd4565b500390565b600081600019048311821515161562001d215762001d2162001cd4565b500290565b6000821982111562001d3c5762001d3c62001cd4565b500190565b600061ffff8381169083168181101562001d5f5762001d5f62001cd4565b039392505050565b600060ff821660ff810362001d805762001d8062001cd4565b60010192915050565b60006001820162001d9e5762001d9e62001cd4565b5060010190565b60008262001db75762001db762001944565b500490565b634e487b7160e01b600052603260045260246000fd5b60008162001de45762001de462001cd4565b506000190190565b600060ff821660ff84168082101562001e095762001e0962001cd4565b90039392505050565b600061ffff8084168062001e2a5762001e2a62001944565b9216919091069291505056fe6101006040523480156200001257600080fd5b50604051620013093803806200130983398101604081905262000035916200015e565b83838360036200004684826200029d565b5060046200005583826200029d565b5060ff166080525050600280546001600160f81b0316600160f81b1790556001600160a01b0390941660a05250505060e0523360c05262000369565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620000b957600080fd5b81516001600160401b0380821115620000d657620000d662000091565b604051601f8301601f19908116603f0116810190828211818310171562000101576200010162000091565b816040528381526020925086838588010111156200011e57600080fd5b600091505b8382101562000142578582018301518183018401529082019062000123565b83821115620001545760008385830101525b9695505050505050565b600080600080600060a086880312156200017757600080fd5b85516001600160a01b03811681146200018f57600080fd5b60208701519095506001600160401b0380821115620001ad57600080fd5b620001bb89838a01620000a7565b95506040880151915080821115620001d257600080fd5b50620001e188828901620000a7565b935050606086015160ff81168114620001f957600080fd5b80925050608086015190509295509295909350565b600181811c908216806200022357607f821691505b6020821081036200024457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200029857600081815260208120601f850160051c81016020861015620002735750805b601f850160051c820191505b8181101562000294578281556001016200027f565b5050505b505050565b81516001600160401b03811115620002b957620002b962000091565b620002d181620002ca84546200020e565b846200024a565b602080601f831160018114620003095760008415620002f05750858301515b600019600386901b1c1916600185901b17855562000294565b600085815260208120601f198616915b828110156200033a5788860151825594840194600190910190840162000319565b5085821015620003595787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e051610f58620003b16000396000818161016601526102c701526000818161027a01526105c2015260006101cb015260006101920152610f586000f3fe608060405234801561001057600080fd5b50600436106100db5760003560e01c806306fdde03146100e0578063095ea7b3146100fe57806312a31dcc1461012157806318160ddd1461013657806323b872dd146101515780632f13b60c14610164578063313ce5671461018d57806347bfac62146101c657806370a0823114610205578063781c18db1461022e57806395d89b4114610247578063a9059cbb1461024f578063b64761f914610262578063c45a015514610275578063c4d66de81461029c578063dd62ed3e146102af578063e184c9be146102c2575b600080fd5b6100e86102e9565b6040516100f59190610cc3565b60405180910390f35b61011161010c366004610d34565b61037b565b60405190151581526020016100f5565b61013461012f366004610d34565b610393565b005b6002546001600160f81b03165b6040519081526020016100f5565b61011161015f366004610d5e565b6103da565b7f0000000000000000000000000000000000000000000000000000000000000000421015610111565b6101b47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100f5565b6101ed7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100f5565b610143610213366004610d9a565b6001600160a01b031660009081526020819052604090205490565b6005546101ed906201000090046001600160a01b031681565b6100e8610458565b61011161025d366004610d34565b610467565b610134610270366004610d34565b6104d9565b6101ed7f000000000000000000000000000000000000000000000000000000000000000081565b6101346102aa366004610d9a565b610513565b6101436102bd366004610dbc565b610655565b6101437f000000000000000000000000000000000000000000000000000000000000000081565b6060600380546102f890610def565b80601f016020809104026020016040519081016040528092919081815260200182805461032490610def565b80156103715780601f1061034657610100808354040283529160200191610371565b820191906000526020600020905b81548152906001019060200180831161035457829003601f168201915b5050505050905090565b600033610389818585610680565b5060019392505050565b6005546201000090046001600160a01b031633146103cc5760405162461bcd60e51b81526004016103c390610e29565b60405180910390fd5b6103d682826107a5565b5050565b600254600090600119600160f81b90910460ff160161040b5760405162461bcd60e51b81526004016103c390610e4a565b600280546001600160f81b0316600160f91b1790553361042c8582856108af565b610437858585610929565b6001915050600280546001600160f81b0316600160f81b1790559392505050565b6060600480546102f890610def565b600254600090600119600160f81b90910460ff16016104985760405162461bcd60e51b81526004016103c390610e4a565b600280546001600160f81b0316600160f91b179055336104b9818585610929565b6001915050600280546001600160f81b0316600160f81b17905592915050565b6005546201000090046001600160a01b031633146105095760405162461bcd60e51b81526004016103c390610e29565b6103d68282610b40565b600554610100900460ff1661052e5760055460ff1615610532565b303b155b6105955760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103c3565b600554610100900460ff161580156105b7576005805461ffff19166101011790555b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461061e5760405162461bcd60e51b815260206004820152600c60248201526b4f4e4c595f464143544f525960a01b60448201526064016103c3565b6005805462010000600160b01b031916620100006001600160a01b0385160217905580156103d6576005805461ff00191690555050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166106e25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103c3565b6001600160a01b0382166107435760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103c3565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0382166107fb5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103c3565b61080481610cad565b6002805460009061081f9084906001600160f81b0316610e97565b92506101000a8154816001600160f81b0302191690836001600160f81b0316021790555080600080846001600160a01b03166001600160a01b0316815260200190815260200160002060008282546108779190610ec2565b90915550506040518181526001600160a01b03831690600090600080516020610f038339815191529060200160405180910390a35050565b60006108bb8484610655565b9050600019811461092357818110156109165760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103c3565b6109238484848403610680565b50505050565b6001600160a01b03831661098d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103c3565b6001600160a01b0382166109ef5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103c3565b816001600160a01b0316836001600160a01b031603610a4a5760405162461bcd60e51b815260206004820152601760248201527622a92199181d103a3930b739b332b9103a379039b2b63360491b60448201526064016103c3565b6001600160a01b03831660009081526020819052604090205481811015610ac25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103c3565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610af9908490610ec2565b92505081905550826001600160a01b0316846001600160a01b0316600080516020610f0383398151915284604051610b3391815260200190565b60405180910390a3610923565b6001600160a01b038216610ba05760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103c3565b6001600160a01b03821660009081526020819052604090205481811015610c145760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103c3565b6001600160a01b03831660009081526020819052604090208282039055610c3a82610cad565b60028054600090610c559084906001600160f81b0316610eda565b92506101000a8154816001600160f81b0302191690836001600160f81b0316021790555060006001600160a01b0316836001600160a01b0316600080516020610f038339815191528460405161079891815260200190565b6000600160f81b8210610cbf57600080fd5b5090565b600060208083528351808285015260005b81811015610cf057858101830151858201604001528201610cd4565b81811115610d02576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610d2f57600080fd5b919050565b60008060408385031215610d4757600080fd5b610d5083610d18565b946020939093013593505050565b600080600060608486031215610d7357600080fd5b610d7c84610d18565b9250610d8a60208501610d18565b9150604084013590509250925092565b600060208284031215610dac57600080fd5b610db582610d18565b9392505050565b60008060408385031215610dcf57600080fd5b610dd883610d18565b9150610de660208401610d18565b90509250929050565b600181811c90821680610e0357607f821691505b602082108103610e2357634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526007908201526613d3931657d65560ca1b604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001600160f81b03828116848216808303821115610eb957610eb9610e81565b01949350505050565b60008219821115610ed557610ed5610e81565b500190565b60006001600160f81b0383811690831681811015610efa57610efa610e81565b03939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f35402327244b52e6d97630361a9002d179f2c37a217c1ca64cae720df30f51464736f6c634300080f0033a2646970667358221220ddf0d0325223798f3b6c129d58c1693edadfeb8772d9b884184a6e19b1bbe5f464736f6c634300080f0033",
379
+ "bytecode": "0x60a06040523480156200001157600080fd5b50604051620047ed380380620047ed833981016040819052620000349162000490565b806001600160a01b038116620000805760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b60448201526064015b60405180910390fd5b6001600160a01b03166080526200009785620000c3565b620000a284620001c6565b620000ad8362000262565b620000b882620002fe565b505050505062000532565b620000cd620003ed565b6001600160a01b0316336001600160a01b031614620001215760405162461bcd60e51b815260206004820152600f60248201526e4f4e4c595f474f5645524e414e434560881b604482015260640162000077565b806001600160601b0316600003620001695760405162461bcd60e51b815260206004820152600a6024820152697a65726f2076616c756560b01b604482015260640162000077565b606680546001600160a01b0316600160a01b6001600160601b038416908102919091179091556040519081527fdaf60f79a59eb1d8c1748ab26dc83c44f364ce8c1fc497ec2df45d9538a1aa11906020015b60405180910390a150565b620001d0620003ed565b6001600160a01b0316336001600160a01b031614620002245760405162461bcd60e51b815260206004820152600f60248201526e4f4e4c595f474f5645524e414e434560881b604482015260640162000077565b606580546001600160801b0319166001600160801b038316908117909155604051908152600080516020620047cd83398151915290602001620001bb565b6200026c620003ed565b6001600160a01b0316336001600160a01b031614620002c05760405162461bcd60e51b815260206004820152600f60248201526e4f4e4c595f474f5645524e414e434560881b604482015260640162000077565b606580546001600160801b03908116600160801b91841691820217909155604051908152600080516020620047cd83398151915290602001620001bb565b62000308620003ed565b6001600160a01b0316336001600160a01b0316146200035c5760405162461bcd60e51b815260206004820152600f60248201526e4f4e4c595f474f5645524e414e434560881b604482015260640162000077565b6001600160a01b038116620003a35760405162461bcd60e51b815260206004820152600c60248201526b7a65726f206164647265737360a01b604482015260640162000077565b606680546001600160a01b0319166001600160a01b0383169081179091556040517fcb7ef3e545f5cdb893f5c568ba710fe08f336375a2d9fd66e161033f8fc09ef390600090a250565b60006080516001600160a01b0316635aa6e6756040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000430573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045691906200050d565b905090565b80516001600160801b03811681146200047357600080fd5b919050565b80516001600160a01b03811681146200047357600080fd5b600080600080600060a08688031215620004a957600080fd5b85516001600160601b0381168114620004c157600080fd5b9450620004d1602087016200045b565b9350620004e1604087016200045b565b9250620004f16060870162000478565b9150620005016080870162000478565b90509295509295909350565b6000602082840312156200052057600080fd5b6200052b8262000478565b9392505050565b60805161427862000555600039600081816102cc015261115301526142786000f3fe60806040523480156200001157600080fd5b5060043610620001155760003560e01c80638c9f796211620000a3578063dd86fea1116200006e578063dd86fea114620002ee578063e9e5f3cf146200032d578063f0f44260146200037c578063f5de2d1f146200039357600080fd5b80638c9f7962146200023d578063a18248c91462000274578063af64d74114620002ac578063d2e6d1c314620002c657600080fd5b806361d027b311620000e457806361d027b3146200019c57806371846aa814620001c95780637d39cabf14620001ef57806387efe5a7146200020657600080fd5b806318b7373d146200011a578063439fab91146200015557806344601d69146200016e578063586007bc1462000185575b600080fd5b620001406200012b36600462001da3565b60696020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6200016c6200016636600462001e3f565b620003c4565b005b6200016c6200017f36600462001ec7565b62000502565b6200016c6200019636600462001efb565b620005d9565b606654620001b0906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b62000140620001da36600462001da3565b606a6020526000908152604090205460ff1681565b6200016c6200020036600462001ec7565b62000712565b620001b06200021736600462001f2b565b60676020908152600092835260408084209091529082529020546001600160a01b031681565b620001b06200024e36600462001f2b565b60686020908152600092835260408084209091529082529020546001600160a01b031681565b6200028b6200028536600462001f5a565b620007ee565b604080516001600160a01b039384168152929091166020830152016200014c565b606454620001b0906201000090046001600160a01b031681565b620001b07f000000000000000000000000000000000000000000000000000000000000000081565b6065546200030b906fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff90911681526020016200014c565b6066546200035e907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1681565b6040516bffffffffffffffffffffffff90911681526020016200014c565b6200016c6200038d36600462001da3565b62000fc4565b6065546200030b9070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681565b606454610100900460ff16620003e15760645460ff1615620003e5565b303b155b6200045d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b606454610100900460ff161580156200049d57606480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b620004a882620010ea565b606460026101000a8154816001600160a01b0302191690836001600160a01b031602179055508015620004fe57606480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b6200050c6200114f565b6001600160a01b0316336001600160a01b0316146200056e5760405162461bcd60e51b815260206004820152600f60248201527f4f4e4c595f474f5645524e414e43450000000000000000000000000000000000604482015260640162000454565b606580546fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000918416918202179091556040519081527fa9d618683ded3ac7317e1717ad10e9e3b92041092a8e97ceb038c699cc54d640906020015b60405180910390a150565b620005e36200114f565b6001600160a01b0316336001600160a01b031614620006455760405162461bcd60e51b815260206004820152600f60248201527f4f4e4c595f474f5645524e414e43450000000000000000000000000000000000604482015260640162000454565b806bffffffffffffffffffffffff16600003620006a55760405162461bcd60e51b815260206004820152600a60248201527f7a65726f2076616c756500000000000000000000000000000000000000000000604482015260640162000454565b606680546001600160a01b0316740100000000000000000000000000000000000000006bffffffffffffffffffffffff8416908102919091179091556040519081527fdaf60f79a59eb1d8c1748ab26dc83c44f364ce8c1fc497ec2df45d9538a1aa1190602001620005ce565b6200071c6200114f565b6001600160a01b0316336001600160a01b0316146200077e5760405162461bcd60e51b815260206004820152600f60248201527f4f4e4c595f474f5645524e414e43450000000000000000000000000000000000604482015260640162000454565b606580547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff83169081179091556040519081527fa9d618683ded3ac7317e1717ad10e9e3b92041092a8e97ceb038c699cc54d64090602001620005ce565b60008063ffffffff83164210620008485760405162461bcd60e51b815260206004820152601c60248201527f657870697279206d75737420626520696e207468652066757475726500000000604482015260640162000454565b60665462000883907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1663ffffffff851662001fb6565b6bffffffffffffffffffffffff1615620008e05760405162461bcd60e51b815260206004820152601b60248201527f6d757374206265206d756c7469706c65206f662064697669736f720000000000604482015260640162000454565b6001600160a01b03848116600090815260676020908152604080832063ffffffff8816845290915290205416156200095b5760405162461bcd60e51b815260206004820152601260248201527f505420616c726561647920657869737465640000000000000000000000000000604482015260640162000454565b60008490506000816001600160a01b031663a40bee506040518163ffffffff1660e01b8152600401606060405180830381865afa158015620009a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009c7919062001fe4565b9250505062000c0960405180602001620009e19062001d7c565b6020820181038252601f19601f820116604052506000801b8862000aeb866001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000a3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a67919081019062002073565b8a63ffffffff166040518060400160405280600181526020017f20000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f5054000000000000000000000000000000000000000000000000000000000000815250620011db909392919063ffffffff16565b62000bdc876001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000b2e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000b58919081019062002073565b8b63ffffffff166040518060400160405280600181526020017f2d000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f5054000000000000000000000000000000000000000000000000000000000000815250620011db909392919063ffffffff16565b868b60405160200162000bf495949392919062002118565b6040516020818303038152906040526200121b565b935062000e3b606460029054906101000a90046001600160a01b03166000801b888762000d1c876001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000c6e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000c98919081019062002073565b8b63ffffffff166040518060400160405280600181526020017f20000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f5954000000000000000000000000000000000000000000000000000000000000815250620011db909392919063ffffffff16565b62000e0d886001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000d5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000d89919081019062002073565b8c63ffffffff166040518060400160405280600181526020017f2d000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f5954000000000000000000000000000000000000000000000000000000000000815250620011db909392919063ffffffff16565b878c60405160200162000e269695949392919062002172565b6040516020818303038152906040526200125b565b6040517fc4d66de80000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301529194509085169063c4d66de890602401600060405180830381600087803b15801562000e9c57600080fd5b505af115801562000eb1573d6000803e3d6000fd5b505050506001600160a01b03868116600081815260676020908152604080832063ffffffff8b1680855290835281842080548b88167fffffffffffffffffffffffff000000000000000000000000000000000000000091821681179092558686526068855283862083875285528386208054988c1698909116881790558085526069845282852080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009081166001908117909255888752606a86529584902080549096161790945581519384529183019490945292810192909252907f7c10d2914fa2900a53b0058359f4d5581f2b83982b0964c38c182079e884ba2f9060600160405180910390a250509250929050565b62000fce6200114f565b6001600160a01b0316336001600160a01b031614620010305760405162461bcd60e51b815260206004820152600f60248201527f4f4e4c595f474f5645524e414e43450000000000000000000000000000000000604482015260640162000454565b6001600160a01b038116620010885760405162461bcd60e51b815260206004820152600c60248201527f7a65726f20616464726573730000000000000000000000000000000000000000604482015260640162000454565b606680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517fcb7ef3e545f5cdb893f5c568ba710fe08f336375a2d9fd66e161033f8fc09ef390600090a250565b6000808251116200113e5760405162461bcd60e51b815260206004820152600b60248201527f7a65726f206c656e677468000000000000000000000000000000000000000000604482015260640162000454565b62001149826200127c565b92915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635aa6e6756040518163ffffffff1660e01b8152600401602060405180830381865afa158015620011b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011d69190620021d7565b905090565b606084828584620011ec8762001333565b60405160200162001202959493929190620021f7565b6040516020818303038152906040529050949350505050565b6000808483604051602001620012339291906200226c565b60405160208183030381529060405290506200125260008583620013b1565b95945050505050565b6000620012746200126c85620014bc565b84846200121b565b949350505050565b600080826040516020016200129291906200229f565b6040516020818303038152906040529050600081604051602001620012b89190620022c7565b60405160208183030381529060405290508051602082016000f092506001600160a01b0383166200132c5760405162461bcd60e51b815260206004820152601160248201527f4445504c4f594d454e545f4641494c4544000000000000000000000000000000604482015260640162000454565b5050919050565b606060006200134283620014e1565b9050600062001358826040015160ff1662001696565b90506000620013678362001805565b905060006200137e846000015161ffff1662001696565b905082828260405160200162001397939291906200230e565b604051602081830303815290604052945050505050919050565b60008084471015620014065760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640162000454565b8251600003620014595760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640162000454565b8383516020850187f590506001600160a01b038116620012745760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640162000454565b606062001149826001620014db816001600160a01b0384163b6200236d565b62001ac7565b604080516060810182526000808252602082018190529181018290529080806200150b8562001aea565b61ffff1684526200151e6107b262001c03565b84516200152f9061ffff1662001c03565b6200153b91906200236d565b91506200154d826301e2850062002387565b620015599084620023a9565b9250816107b28560000151620015709190620023c4565b61ffff166200158091906200236d565b62001590906301e1338062002387565b6200159c9084620023a9565b92506000600191505b600c8260ff16116200161b57620015c182866000015162001c54565b620015d39060ff166201518062002387565b905085620015e28583620023a9565b1115620015f85760ff821660208601526200161b565b620016048185620023a9565b9350816200161281620023ea565b925050620015a5565b600191505b620016348560200151866000015162001c54565b60ff168260ff16116200168d5785620016518562015180620023a9565b1115620016675760ff821660408601526200168d565b620016766201518085620023a9565b9350816200168481620023ea565b92505062001620565b50505050919050565b606081600003620016da57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156200170a5780620016f1816200240c565b9150620017029050600a8362002429565b9150620016de565b60008167ffffffffffffffff81111562001728576200172862001dca565b6040519080825280601f01601f19166020018201604052801562001753576020820181803683370190505b5090506000620017656001846200236d565b90505b8515620017fc576200177c600a8762002440565b62001789906030620023a9565b60f81b828281518110620017a157620017a162002457565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508015620017e75780620017e3816200246d565b9150505b620017f4600a8762002429565b955062001768565b50949350505050565b604080516101c081018252600361018082018181527f4a414e00000000000000000000000000000000000000000000000000000000006101a08401528252825180840184528181527f464542000000000000000000000000000000000000000000000000000000000060208281019190915280840191909152835180850185528281527f4d415200000000000000000000000000000000000000000000000000000000008183015283850152835180850185528281527f415052000000000000000000000000000000000000000000000000000000000081830152606084810191909152845180860186528381527f4d41590000000000000000000000000000000000000000000000000000000000818401526080850152845180860186528381527f4a554e00000000000000000000000000000000000000000000000000000000008184015260a0850152845180860186528381527f4a554c00000000000000000000000000000000000000000000000000000000008184015260c0850152845180860186528381527f41554700000000000000000000000000000000000000000000000000000000008184015260e0850152845180860186528381527f534550000000000000000000000000000000000000000000000000000000000081840152610100850152845180860186528381527f4f4354000000000000000000000000000000000000000000000000000000000081840152610120850152845180860186528381527f4e4f5600000000000000000000000000000000000000000000000000000000008184015261014085015284518086019095529184527f44454300000000000000000000000000000000000000000000000000000000008482015261016083019390935291830151819062001aa59060019062002487565b60ff16600c811062001abb5762001abb62002457565b60200201519392505050565b60408051603f8301601f19168101909152818152818360208301863c9392505050565b600080808062001aff6301e133808662002429565b62001b0d906107b2620023a9565b915062001b1c6107b262001c03565b62001b2b8361ffff1662001c03565b62001b3791906200236d565b905062001b49816301e2850062002387565b62001b559084620023a9565b92508062001b666107b284620023c4565b61ffff1662001b7691906200236d565b62001b86906301e1338062002387565b62001b929084620023a9565b92505b8483111562001bfb5762001bb562001baf600184620023c4565b62001d2c565b1562001bd35762001bcb6301e28500846200236d565b925062001be6565b62001be36301e13380846200236d565b92505b62001bf3600183620023c4565b915062001b95565b509392505050565b600062001c126001836200236d565b915062001c226101908362002429565b62001c2f60648462002429565b62001c3c60048562002429565b62001c4891906200236d565b620011499190620023a9565b60008260ff166001148062001c6c57508260ff166003145b8062001c7b57508260ff166005145b8062001c8a57508260ff166007145b8062001c9957508260ff166008145b8062001ca857508260ff16600a145b8062001cb757508260ff16600c145b1562001cc65750601f62001149565b8260ff166004148062001cdc57508260ff166006145b8062001ceb57508260ff166009145b8062001cfa57508260ff16600b145b1562001d095750601e62001149565b62001d148262001d2c565b1562001d235750601d62001149565b50601c92915050565b600062001d3b600483620024ad565b61ffff1615801562001d5c575062001d55606483620024ad565b61ffff1615155b8062001149575062001d7161019083620024ad565b61ffff161592915050565b611d7d80620024c683390190565b6001600160a01b038116811462001da057600080fd5b50565b60006020828403121562001db657600080fd5b813562001dc38162001d8a565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562001e0c5762001e0c62001dca565b604052919050565b600067ffffffffffffffff82111562001e315762001e3162001dca565b50601f01601f191660200190565b60006020828403121562001e5257600080fd5b813567ffffffffffffffff81111562001e6a57600080fd5b8201601f8101841362001e7c57600080fd5b803562001e9362001e8d8262001e14565b62001de0565b81815285602083850101111562001ea957600080fd5b81602084016020830137600091810160200191909152949350505050565b60006020828403121562001eda57600080fd5b81356fffffffffffffffffffffffffffffffff8116811462001dc357600080fd5b60006020828403121562001f0e57600080fd5b81356bffffffffffffffffffffffff8116811462001dc357600080fd5b6000806040838503121562001f3f57600080fd5b823562001f4c8162001d8a565b946020939093013593505050565b6000806040838503121562001f6e57600080fd5b823562001f7b8162001d8a565b9150602083013563ffffffff8116811462001f9557600080fd5b809150509250929050565b634e487b7160e01b600052601260045260246000fd5b60006bffffffffffffffffffffffff8084168062001fd85762001fd862001fa0565b92169190910692915050565b60008060006060848603121562001ffa57600080fd5b8351600281106200200a57600080fd5b60208501519093506200201d8162001d8a565b604085015190925060ff811681146200203557600080fd5b809150509250925092565b60005b838110156200205d57818101518382015260200162002043565b838111156200206d576000848401525b50505050565b6000602082840312156200208657600080fd5b815167ffffffffffffffff8111156200209e57600080fd5b8201601f81018413620020b057600080fd5b8051620020c162001e8d8262001e14565b818152856020838501011115620020d757600080fd5b6200125282602083016020860162002040565b600081518084526200210481602086016020860162002040565b601f01601f19169290920160200192915050565b6001600160a01b038616815260a0602082015260006200213c60a0830187620020ea565b8281036040840152620021508187620020ea565b91505060ff8416606083015263ffffffff831660808301529695505050505050565b60006001600160a01b03808916835280881660208401525060c06040830152620021a060c0830187620020ea565b8281036060840152620021b48187620020ea565b91505060ff8416608083015263ffffffff831660a0830152979650505050505050565b600060208284031215620021ea57600080fd5b815162001dc38162001d8a565b600086516200220b818460208b0162002040565b86519083019062002221818360208b0162002040565b865191019062002236818360208a0162002040565b85519101906200224b81836020890162002040565b84519101906200226081836020880162002040565b01979650505050505050565b600083516200228081846020880162002040565b8351908301906200229681836020880162002040565b01949350505050565b6000815260008251620022ba81600185016020870162002040565b9190910160010192915050565b7f600b5981380380925939f30000000000000000000000000000000000000000008152600082516200230181600b85016020870162002040565b91909101600b0192915050565b600084516200232281846020890162002040565b8451908301906200233881836020890162002040565b84519101906200234d81836020880162002040565b0195945050505050565b634e487b7160e01b600052601160045260246000fd5b60008282101562002382576200238262002357565b500390565b6000816000190483118215151615620023a457620023a462002357565b500290565b60008219821115620023bf57620023bf62002357565b500190565b600061ffff83811690831681811015620023e257620023e262002357565b039392505050565b600060ff821660ff810362002403576200240362002357565b60010192915050565b6000600019820362002422576200242262002357565b5060010190565b6000826200243b576200243b62001fa0565b500490565b60008262002452576200245262001fa0565b500690565b634e487b7160e01b600052603260045260246000fd5b6000816200247f576200247f62002357565b506000190190565b600060ff821660ff841680821015620024a457620024a462002357565b90039392505050565b600061ffff8084168062001fd85762001fd862001fa056fe6101e06040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610160523480156200003757600080fd5b5060405162001d7d38038062001d7d8339810160408190526200005a9162000306565b83838382604051806040016040528060018152602001603160f81b815250848460805182600390805190602001906200009592919062000193565b508151620000ab90600490602085019062000193565b5060ff166080525050600280546001600160f81b0316600160f81b17905581516020808401919091208251918301919091206101008290526101208190524660c0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6200015e8184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b60a0523060e05261014052505050506001600160a01b03979097166101805250506101c0525050336101a05250620003f29050565b828054620001a190620003b6565b90600052602060002090601f016020900481019282620001c5576000855562000210565b82601f10620001e057805160ff191683800117855562000210565b8280016001018555821562000210579182015b8281111562000210578251825591602001919060010190620001f3565b506200021e92915062000222565b5090565b5b808211156200021e576000815560010162000223565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200026157600080fd5b81516001600160401b03808211156200027e576200027e62000239565b604051601f8301601f19908116603f01168101908282118183101715620002a957620002a962000239565b81604052838152602092508683858801011115620002c657600080fd5b600091505b83821015620002ea5785820183015181830184015290820190620002cb565b83821115620002fc5760008385830101525b9695505050505050565b600080600080600060a086880312156200031f57600080fd5b85516001600160a01b03811681146200033757600080fd5b60208701519095506001600160401b03808211156200035557600080fd5b6200036389838a016200024f565b955060408801519150808211156200037a57600080fd5b5062000389888289016200024f565b935050606086015160ff81168114620003a157600080fd5b80925050608086015190509295509295909350565b600181811c90821680620003cb57607f821691505b602082108103620003ec57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516118f662000487600039600081816101f701526103ac01526000818161032601526107f6015260006102640152600061092101526000611058015260006110a70152600061108201526000610fdb015260006110050152600061102f0152600061022301526118f66000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c8063781c18db116100cd578063c45a015511610081578063d505accf11610066578063d505accf1461035b578063dd62ed3e1461036e578063e184c9be146103a757600080fd5b8063c45a015514610321578063c4d66de81461034857600080fd5b806395d89b41116100b257806395d89b41146102f3578063a9059cbb146102fb578063b64761f91461030e57600080fd5b8063781c18db146102c75780637ecebe00146102e057600080fd5b80632f13b60c116101245780633644e515116101095780633644e5151461025757806347bfac621461025f57806370a082311461029e57600080fd5b80632f13b60c146101f5578063313ce5671461021e57600080fd5b806312a31dcc1161015557806312a31dcc146101b257806318160ddd146101c757806323b872dd146101e257600080fd5b806306fdde0314610171578063095ea7b31461018f575b600080fd5b6101796103ce565b6040516101869190611656565b60405180910390f35b6101a261019d3660046116c7565b610460565b6040519015158152602001610186565b6101c56101c03660046116c7565b610478565b005b6002546001600160f81b03165b604051908152602001610186565b6101a26101f03660046116f1565b6104eb565b7f00000000000000000000000000000000000000000000000000000000000000004210156101a2565b6102457f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610186565b6101d46105ba565b6102867f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610186565b6101d46102ac36600461172d565b6001600160a01b031660009081526020819052604090205490565b600654610286906201000090046001600160a01b031681565b6101d46102ee36600461172d565b6105c4565b6101796105e4565b6101a26103093660046116c7565b6105f3565b6101c561031c3660046116c7565b6106b1565b6102867f000000000000000000000000000000000000000000000000000000000000000081565b6101c561035636600461172d565b61071b565b6101c561036936600461174f565b6108cd565b6101d461037c3660046117c2565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101d47f000000000000000000000000000000000000000000000000000000000000000081565b6060600380546103dd906117f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610409906117f5565b80156104565780601f1061042b57610100808354040283529160200191610456565b820191906000526020600020905b81548152906001019060200180831161043957829003601f168201915b5050505050905090565b60003361046e818585610a31565b5060019392505050565b6006546201000090046001600160a01b031633146104dd5760405162461bcd60e51b815260206004820152600760248201527f4f4e4c595f59540000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6104e78282610b8a565b5050565b600254600090600119600160f81b90910460ff160161054c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104d4565b600280546001600160f81b03167f020000000000000000000000000000000000000000000000000000000000000017905533610589858285610ca6565b610594858585610d56565b6001915050600280546001600160f81b0316600160f81b1790559392505050565b905090565b60006105b5610fce565b6001600160a01b0381166000908152600560205260408120545b92915050565b6060600480546103dd906117f5565b600254600090600119600160f81b90910460ff16016106545760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104d4565b600280546001600160f81b03167f020000000000000000000000000000000000000000000000000000000000000017905533610691818585610d56565b6001915050600280546001600160f81b0316600160f81b17905592915050565b6006546201000090046001600160a01b031633146107115760405162461bcd60e51b815260206004820152600760248201527f4f4e4c595f59540000000000000000000000000000000000000000000000000060448201526064016104d4565b6104e782826110f5565b600654610100900460ff166107365760065460ff161561073a565b303b155b6107ac5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016104d4565b600654610100900460ff161580156107eb57600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108635760405162461bcd60e51b815260206004820152600c60248201527f4f4e4c595f464143544f5259000000000000000000000000000000000000000060448201526064016104d4565b600680547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16620100006001600160a01b0385160217905580156104e757600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b8342111561091d5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016104d4565b60007f000000000000000000000000000000000000000000000000000000000000000088888861094c8c6112ab565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109a7826112d3565b905060006109b78287878761133c565b9050896001600160a01b0316816001600160a01b031614610a1a5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016104d4565b610a258a8a8a610a31565b50505050505050505050565b6001600160a01b038316610aac5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104d4565b6001600160a01b038216610b285760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104d4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038216610be05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d4565b610be981611364565b60028054600090610c049084906001600160f81b031661183f565b92506101000a8154816001600160f81b0302191690836001600160f81b0316021790555080600080846001600160a01b03166001600160a01b031681526020019081526020016000206000828254610c5c919061186a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610d505781811015610d435760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d4565b610d508484848403610a31565b50505050565b6001600160a01b038316610dd25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104d4565b6001600160a01b038216610e4e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104d4565b816001600160a01b0316836001600160a01b031603610eaf5760405162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e7366657220746f2073656c6600000000000000000060448201526064016104d4565b6001600160a01b03831660009081526020819052604090205481811015610f3e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104d4565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610f7590849061186a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fc191815260200190565b60405180910390a3610d50565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561102757507f000000000000000000000000000000000000000000000000000000000000000046145b1561105157507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6001600160a01b0382166111715760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104d4565b6001600160a01b038216600090815260208190526040902054818110156112005760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104d4565b6001600160a01b0383166000908152602081905260409020828203905561122682611364565b600280546000906112419084906001600160f81b0316611882565b92506101000a8154816001600160f81b0302191690836001600160f81b0316021790555060006001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b7d91815260200190565b6001600160a01b03811660009081526005602052604090208054600181018255905b50919050565b60006105de6112e0610fce565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b600080600061134d8787878761137a565b9150915061135a81611467565b5095945050505050565b6000600160f81b821061137657600080fd5b5090565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156113b1575060009050600361145e565b8460ff16601b141580156113c957508460ff16601c14155b156113da575060009050600461145e565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561142e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166114575760006001925092505061145e565b9150600090505b94509492505050565b600081600481111561147b5761147b6118aa565b036114835750565b6001816004811115611497576114976118aa565b036114e45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016104d4565b60028160048111156114f8576114f86118aa565b036115455760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016104d4565b6003816004811115611559576115596118aa565b036115cc5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016104d4565b60048160048111156115e0576115e06118aa565b036116535760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016104d4565b50565b600060208083528351808285015260005b8181101561168357858101830151858201604001528201611667565b81811115611695576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146116c257600080fd5b919050565b600080604083850312156116da57600080fd5b6116e3836116ab565b946020939093013593505050565b60008060006060848603121561170657600080fd5b61170f846116ab565b925061171d602085016116ab565b9150604084013590509250925092565b60006020828403121561173f57600080fd5b611748826116ab565b9392505050565b600080600080600080600060e0888a03121561176a57600080fd5b611773886116ab565b9650611781602089016116ab565b95506040880135945060608801359350608088013560ff811681146117a557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156117d557600080fd5b6117de836116ab565b91506117ec602084016116ab565b90509250929050565b600181811c9082168061180957607f821691505b6020821081036112cd57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001600160f81b0380831681851680830382111561186157611861611829565b01949350505050565b6000821982111561187d5761187d611829565b500190565b60006001600160f81b03838116908316818110156118a2576118a2611829565b039392505050565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220f9b1501a3af57b9fa1e43e2c45ed0625f7a6322228ba738316cc86ebd209817564736f6c634300080d0033a264697066735822122086ba6c6217067261b43b6ec3ae4bd11830d65167ca6b7b40eb3add7b3debaa5964736f6c634300080d0033a9d618683ded3ac7317e1717ad10e9e3b92041092a8e97ceb038c699cc54d640",
380
+ "deployedBytecode": "0x60806040523480156200001157600080fd5b5060043610620001155760003560e01c80638c9f796211620000a3578063dd86fea1116200006e578063dd86fea114620002ee578063e9e5f3cf146200032d578063f0f44260146200037c578063f5de2d1f146200039357600080fd5b80638c9f7962146200023d578063a18248c91462000274578063af64d74114620002ac578063d2e6d1c314620002c657600080fd5b806361d027b311620000e457806361d027b3146200019c57806371846aa814620001c95780637d39cabf14620001ef57806387efe5a7146200020657600080fd5b806318b7373d146200011a578063439fab91146200015557806344601d69146200016e578063586007bc1462000185575b600080fd5b620001406200012b36600462001da3565b60696020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6200016c6200016636600462001e3f565b620003c4565b005b6200016c6200017f36600462001ec7565b62000502565b6200016c6200019636600462001efb565b620005d9565b606654620001b0906001600160a01b031681565b6040516001600160a01b0390911681526020016200014c565b62000140620001da36600462001da3565b606a6020526000908152604090205460ff1681565b6200016c6200020036600462001ec7565b62000712565b620001b06200021736600462001f2b565b60676020908152600092835260408084209091529082529020546001600160a01b031681565b620001b06200024e36600462001f2b565b60686020908152600092835260408084209091529082529020546001600160a01b031681565b6200028b6200028536600462001f5a565b620007ee565b604080516001600160a01b039384168152929091166020830152016200014c565b606454620001b0906201000090046001600160a01b031681565b620001b07f000000000000000000000000000000000000000000000000000000000000000081565b6065546200030b906fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff90911681526020016200014c565b6066546200035e907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1681565b6040516bffffffffffffffffffffffff90911681526020016200014c565b6200016c6200038d36600462001da3565b62000fc4565b6065546200030b9070010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681565b606454610100900460ff16620003e15760645460ff1615620003e5565b303b155b6200045d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b606454610100900460ff161580156200049d57606480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b620004a882620010ea565b606460026101000a8154816001600160a01b0302191690836001600160a01b031602179055508015620004fe57606480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b6200050c6200114f565b6001600160a01b0316336001600160a01b0316146200056e5760405162461bcd60e51b815260206004820152600f60248201527f4f4e4c595f474f5645524e414e43450000000000000000000000000000000000604482015260640162000454565b606580546fffffffffffffffffffffffffffffffff908116700100000000000000000000000000000000918416918202179091556040519081527fa9d618683ded3ac7317e1717ad10e9e3b92041092a8e97ceb038c699cc54d640906020015b60405180910390a150565b620005e36200114f565b6001600160a01b0316336001600160a01b031614620006455760405162461bcd60e51b815260206004820152600f60248201527f4f4e4c595f474f5645524e414e43450000000000000000000000000000000000604482015260640162000454565b806bffffffffffffffffffffffff16600003620006a55760405162461bcd60e51b815260206004820152600a60248201527f7a65726f2076616c756500000000000000000000000000000000000000000000604482015260640162000454565b606680546001600160a01b0316740100000000000000000000000000000000000000006bffffffffffffffffffffffff8416908102919091179091556040519081527fdaf60f79a59eb1d8c1748ab26dc83c44f364ce8c1fc497ec2df45d9538a1aa1190602001620005ce565b6200071c6200114f565b6001600160a01b0316336001600160a01b0316146200077e5760405162461bcd60e51b815260206004820152600f60248201527f4f4e4c595f474f5645524e414e43450000000000000000000000000000000000604482015260640162000454565b606580547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff83169081179091556040519081527fa9d618683ded3ac7317e1717ad10e9e3b92041092a8e97ceb038c699cc54d64090602001620005ce565b60008063ffffffff83164210620008485760405162461bcd60e51b815260206004820152601c60248201527f657870697279206d75737420626520696e207468652066757475726500000000604482015260640162000454565b60665462000883907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1663ffffffff851662001fb6565b6bffffffffffffffffffffffff1615620008e05760405162461bcd60e51b815260206004820152601b60248201527f6d757374206265206d756c7469706c65206f662064697669736f720000000000604482015260640162000454565b6001600160a01b03848116600090815260676020908152604080832063ffffffff8816845290915290205416156200095b5760405162461bcd60e51b815260206004820152601260248201527f505420616c726561647920657869737465640000000000000000000000000000604482015260640162000454565b60008490506000816001600160a01b031663a40bee506040518163ffffffff1660e01b8152600401606060405180830381865afa158015620009a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620009c7919062001fe4565b9250505062000c0960405180602001620009e19062001d7c565b6020820181038252601f19601f820116604052506000801b8862000aeb866001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000a3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a67919081019062002073565b8a63ffffffff166040518060400160405280600181526020017f20000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f5054000000000000000000000000000000000000000000000000000000000000815250620011db909392919063ffffffff16565b62000bdc876001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000b2e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000b58919081019062002073565b8b63ffffffff166040518060400160405280600181526020017f2d000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f5054000000000000000000000000000000000000000000000000000000000000815250620011db909392919063ffffffff16565b868b60405160200162000bf495949392919062002118565b6040516020818303038152906040526200121b565b935062000e3b606460029054906101000a90046001600160a01b03166000801b888762000d1c876001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000c6e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000c98919081019062002073565b8b63ffffffff166040518060400160405280600181526020017f20000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f5954000000000000000000000000000000000000000000000000000000000000815250620011db909392919063ffffffff16565b62000e0d886001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000d5f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000d89919081019062002073565b8c63ffffffff166040518060400160405280600181526020017f2d000000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f5954000000000000000000000000000000000000000000000000000000000000815250620011db909392919063ffffffff16565b878c60405160200162000e269695949392919062002172565b6040516020818303038152906040526200125b565b6040517fc4d66de80000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301529194509085169063c4d66de890602401600060405180830381600087803b15801562000e9c57600080fd5b505af115801562000eb1573d6000803e3d6000fd5b505050506001600160a01b03868116600081815260676020908152604080832063ffffffff8b1680855290835281842080548b88167fffffffffffffffffffffffff000000000000000000000000000000000000000091821681179092558686526068855283862083875285528386208054988c1698909116881790558085526069845282852080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff009081166001908117909255888752606a86529584902080549096161790945581519384529183019490945292810192909252907f7c10d2914fa2900a53b0058359f4d5581f2b83982b0964c38c182079e884ba2f9060600160405180910390a250509250929050565b62000fce6200114f565b6001600160a01b0316336001600160a01b031614620010305760405162461bcd60e51b815260206004820152600f60248201527f4f4e4c595f474f5645524e414e43450000000000000000000000000000000000604482015260640162000454565b6001600160a01b038116620010885760405162461bcd60e51b815260206004820152600c60248201527f7a65726f20616464726573730000000000000000000000000000000000000000604482015260640162000454565b606680547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517fcb7ef3e545f5cdb893f5c568ba710fe08f336375a2d9fd66e161033f8fc09ef390600090a250565b6000808251116200113e5760405162461bcd60e51b815260206004820152600b60248201527f7a65726f206c656e677468000000000000000000000000000000000000000000604482015260640162000454565b62001149826200127c565b92915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635aa6e6756040518163ffffffff1660e01b8152600401602060405180830381865afa158015620011b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011d69190620021d7565b905090565b606084828584620011ec8762001333565b60405160200162001202959493929190620021f7565b6040516020818303038152906040529050949350505050565b6000808483604051602001620012339291906200226c565b60405160208183030381529060405290506200125260008583620013b1565b95945050505050565b6000620012746200126c85620014bc565b84846200121b565b949350505050565b600080826040516020016200129291906200229f565b6040516020818303038152906040529050600081604051602001620012b89190620022c7565b60405160208183030381529060405290508051602082016000f092506001600160a01b0383166200132c5760405162461bcd60e51b815260206004820152601160248201527f4445504c4f594d454e545f4641494c4544000000000000000000000000000000604482015260640162000454565b5050919050565b606060006200134283620014e1565b9050600062001358826040015160ff1662001696565b90506000620013678362001805565b905060006200137e846000015161ffff1662001696565b905082828260405160200162001397939291906200230e565b604051602081830303815290604052945050505050919050565b60008084471015620014065760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e6365000000604482015260640162000454565b8251600003620014595760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f604482015260640162000454565b8383516020850187f590506001600160a01b038116620012745760405162461bcd60e51b815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f7900000000000000604482015260640162000454565b606062001149826001620014db816001600160a01b0384163b6200236d565b62001ac7565b604080516060810182526000808252602082018190529181018290529080806200150b8562001aea565b61ffff1684526200151e6107b262001c03565b84516200152f9061ffff1662001c03565b6200153b91906200236d565b91506200154d826301e2850062002387565b620015599084620023a9565b9250816107b28560000151620015709190620023c4565b61ffff166200158091906200236d565b62001590906301e1338062002387565b6200159c9084620023a9565b92506000600191505b600c8260ff16116200161b57620015c182866000015162001c54565b620015d39060ff166201518062002387565b905085620015e28583620023a9565b1115620015f85760ff821660208601526200161b565b620016048185620023a9565b9350816200161281620023ea565b925050620015a5565b600191505b620016348560200151866000015162001c54565b60ff168260ff16116200168d5785620016518562015180620023a9565b1115620016675760ff821660408601526200168d565b620016766201518085620023a9565b9350816200168481620023ea565b92505062001620565b50505050919050565b606081600003620016da57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b81156200170a5780620016f1816200240c565b9150620017029050600a8362002429565b9150620016de565b60008167ffffffffffffffff81111562001728576200172862001dca565b6040519080825280601f01601f19166020018201604052801562001753576020820181803683370190505b5090506000620017656001846200236d565b90505b8515620017fc576200177c600a8762002440565b62001789906030620023a9565b60f81b828281518110620017a157620017a162002457565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508015620017e75780620017e3816200246d565b9150505b620017f4600a8762002429565b955062001768565b50949350505050565b604080516101c081018252600361018082018181527f4a414e00000000000000000000000000000000000000000000000000000000006101a08401528252825180840184528181527f464542000000000000000000000000000000000000000000000000000000000060208281019190915280840191909152835180850185528281527f4d415200000000000000000000000000000000000000000000000000000000008183015283850152835180850185528281527f415052000000000000000000000000000000000000000000000000000000000081830152606084810191909152845180860186528381527f4d41590000000000000000000000000000000000000000000000000000000000818401526080850152845180860186528381527f4a554e00000000000000000000000000000000000000000000000000000000008184015260a0850152845180860186528381527f4a554c00000000000000000000000000000000000000000000000000000000008184015260c0850152845180860186528381527f41554700000000000000000000000000000000000000000000000000000000008184015260e0850152845180860186528381527f534550000000000000000000000000000000000000000000000000000000000081840152610100850152845180860186528381527f4f4354000000000000000000000000000000000000000000000000000000000081840152610120850152845180860186528381527f4e4f5600000000000000000000000000000000000000000000000000000000008184015261014085015284518086019095529184527f44454300000000000000000000000000000000000000000000000000000000008482015261016083019390935291830151819062001aa59060019062002487565b60ff16600c811062001abb5762001abb62002457565b60200201519392505050565b60408051603f8301601f19168101909152818152818360208301863c9392505050565b600080808062001aff6301e133808662002429565b62001b0d906107b2620023a9565b915062001b1c6107b262001c03565b62001b2b8361ffff1662001c03565b62001b3791906200236d565b905062001b49816301e2850062002387565b62001b559084620023a9565b92508062001b666107b284620023c4565b61ffff1662001b7691906200236d565b62001b86906301e1338062002387565b62001b929084620023a9565b92505b8483111562001bfb5762001bb562001baf600184620023c4565b62001d2c565b1562001bd35762001bcb6301e28500846200236d565b925062001be6565b62001be36301e13380846200236d565b92505b62001bf3600183620023c4565b915062001b95565b509392505050565b600062001c126001836200236d565b915062001c226101908362002429565b62001c2f60648462002429565b62001c3c60048562002429565b62001c4891906200236d565b620011499190620023a9565b60008260ff166001148062001c6c57508260ff166003145b8062001c7b57508260ff166005145b8062001c8a57508260ff166007145b8062001c9957508260ff166008145b8062001ca857508260ff16600a145b8062001cb757508260ff16600c145b1562001cc65750601f62001149565b8260ff166004148062001cdc57508260ff166006145b8062001ceb57508260ff166009145b8062001cfa57508260ff16600b145b1562001d095750601e62001149565b62001d148262001d2c565b1562001d235750601d62001149565b50601c92915050565b600062001d3b600483620024ad565b61ffff1615801562001d5c575062001d55606483620024ad565b61ffff1615155b8062001149575062001d7161019083620024ad565b61ffff161592915050565b611d7d80620024c683390190565b6001600160a01b038116811462001da057600080fd5b50565b60006020828403121562001db657600080fd5b813562001dc38162001d8a565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562001e0c5762001e0c62001dca565b604052919050565b600067ffffffffffffffff82111562001e315762001e3162001dca565b50601f01601f191660200190565b60006020828403121562001e5257600080fd5b813567ffffffffffffffff81111562001e6a57600080fd5b8201601f8101841362001e7c57600080fd5b803562001e9362001e8d8262001e14565b62001de0565b81815285602083850101111562001ea957600080fd5b81602084016020830137600091810160200191909152949350505050565b60006020828403121562001eda57600080fd5b81356fffffffffffffffffffffffffffffffff8116811462001dc357600080fd5b60006020828403121562001f0e57600080fd5b81356bffffffffffffffffffffffff8116811462001dc357600080fd5b6000806040838503121562001f3f57600080fd5b823562001f4c8162001d8a565b946020939093013593505050565b6000806040838503121562001f6e57600080fd5b823562001f7b8162001d8a565b9150602083013563ffffffff8116811462001f9557600080fd5b809150509250929050565b634e487b7160e01b600052601260045260246000fd5b60006bffffffffffffffffffffffff8084168062001fd85762001fd862001fa0565b92169190910692915050565b60008060006060848603121562001ffa57600080fd5b8351600281106200200a57600080fd5b60208501519093506200201d8162001d8a565b604085015190925060ff811681146200203557600080fd5b809150509250925092565b60005b838110156200205d57818101518382015260200162002043565b838111156200206d576000848401525b50505050565b6000602082840312156200208657600080fd5b815167ffffffffffffffff8111156200209e57600080fd5b8201601f81018413620020b057600080fd5b8051620020c162001e8d8262001e14565b818152856020838501011115620020d757600080fd5b6200125282602083016020860162002040565b600081518084526200210481602086016020860162002040565b601f01601f19169290920160200192915050565b6001600160a01b038616815260a0602082015260006200213c60a0830187620020ea565b8281036040840152620021508187620020ea565b91505060ff8416606083015263ffffffff831660808301529695505050505050565b60006001600160a01b03808916835280881660208401525060c06040830152620021a060c0830187620020ea565b8281036060840152620021b48187620020ea565b91505060ff8416608083015263ffffffff831660a0830152979650505050505050565b600060208284031215620021ea57600080fd5b815162001dc38162001d8a565b600086516200220b818460208b0162002040565b86519083019062002221818360208b0162002040565b865191019062002236818360208a0162002040565b85519101906200224b81836020890162002040565b84519101906200226081836020880162002040565b01979650505050505050565b600083516200228081846020880162002040565b8351908301906200229681836020880162002040565b01949350505050565b6000815260008251620022ba81600185016020870162002040565b9190910160010192915050565b7f600b5981380380925939f30000000000000000000000000000000000000000008152600082516200230181600b85016020870162002040565b91909101600b0192915050565b600084516200232281846020890162002040565b8451908301906200233881836020890162002040565b84519101906200234d81836020880162002040565b0195945050505050565b634e487b7160e01b600052601160045260246000fd5b60008282101562002382576200238262002357565b500390565b6000816000190483118215151615620023a457620023a462002357565b500290565b60008219821115620023bf57620023bf62002357565b500190565b600061ffff83811690831681811015620023e257620023e262002357565b039392505050565b600060ff821660ff810362002403576200240362002357565b60010192915050565b6000600019820362002422576200242262002357565b5060010190565b6000826200243b576200243b62001fa0565b500490565b60008262002452576200245262001fa0565b500690565b634e487b7160e01b600052603260045260246000fd5b6000816200247f576200247f62002357565b506000190190565b600060ff821660ff841680821015620024a457620024a462002357565b90039392505050565b600061ffff8084168062001fd85762001fd862001fa056fe6101e06040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610160523480156200003757600080fd5b5060405162001d7d38038062001d7d8339810160408190526200005a9162000306565b83838382604051806040016040528060018152602001603160f81b815250848460805182600390805190602001906200009592919062000193565b508151620000ab90600490602085019062000193565b5060ff166080525050600280546001600160f81b0316600160f81b17905581516020808401919091208251918301919091206101008290526101208190524660c0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6200015e8184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b60a0523060e05261014052505050506001600160a01b03979097166101805250506101c0525050336101a05250620003f29050565b828054620001a190620003b6565b90600052602060002090601f016020900481019282620001c5576000855562000210565b82601f10620001e057805160ff191683800117855562000210565b8280016001018555821562000210579182015b8281111562000210578251825591602001919060010190620001f3565b506200021e92915062000222565b5090565b5b808211156200021e576000815560010162000223565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200026157600080fd5b81516001600160401b03808211156200027e576200027e62000239565b604051601f8301601f19908116603f01168101908282118183101715620002a957620002a962000239565b81604052838152602092508683858801011115620002c657600080fd5b600091505b83821015620002ea5785820183015181830184015290820190620002cb565b83821115620002fc5760008385830101525b9695505050505050565b600080600080600060a086880312156200031f57600080fd5b85516001600160a01b03811681146200033757600080fd5b60208701519095506001600160401b03808211156200035557600080fd5b6200036389838a016200024f565b955060408801519150808211156200037a57600080fd5b5062000389888289016200024f565b935050606086015160ff81168114620003a157600080fd5b80925050608086015190509295509295909350565b600181811c90821680620003cb57607f821691505b602082108103620003ec57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516118f662000487600039600081816101f701526103ac01526000818161032601526107f6015260006102640152600061092101526000611058015260006110a70152600061108201526000610fdb015260006110050152600061102f0152600061022301526118f66000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c8063781c18db116100cd578063c45a015511610081578063d505accf11610066578063d505accf1461035b578063dd62ed3e1461036e578063e184c9be146103a757600080fd5b8063c45a015514610321578063c4d66de81461034857600080fd5b806395d89b41116100b257806395d89b41146102f3578063a9059cbb146102fb578063b64761f91461030e57600080fd5b8063781c18db146102c75780637ecebe00146102e057600080fd5b80632f13b60c116101245780633644e515116101095780633644e5151461025757806347bfac621461025f57806370a082311461029e57600080fd5b80632f13b60c146101f5578063313ce5671461021e57600080fd5b806312a31dcc1161015557806312a31dcc146101b257806318160ddd146101c757806323b872dd146101e257600080fd5b806306fdde0314610171578063095ea7b31461018f575b600080fd5b6101796103ce565b6040516101869190611656565b60405180910390f35b6101a261019d3660046116c7565b610460565b6040519015158152602001610186565b6101c56101c03660046116c7565b610478565b005b6002546001600160f81b03165b604051908152602001610186565b6101a26101f03660046116f1565b6104eb565b7f00000000000000000000000000000000000000000000000000000000000000004210156101a2565b6102457f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610186565b6101d46105ba565b6102867f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610186565b6101d46102ac36600461172d565b6001600160a01b031660009081526020819052604090205490565b600654610286906201000090046001600160a01b031681565b6101d46102ee36600461172d565b6105c4565b6101796105e4565b6101a26103093660046116c7565b6105f3565b6101c561031c3660046116c7565b6106b1565b6102867f000000000000000000000000000000000000000000000000000000000000000081565b6101c561035636600461172d565b61071b565b6101c561036936600461174f565b6108cd565b6101d461037c3660046117c2565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6101d47f000000000000000000000000000000000000000000000000000000000000000081565b6060600380546103dd906117f5565b80601f0160208091040260200160405190810160405280929190818152602001828054610409906117f5565b80156104565780601f1061042b57610100808354040283529160200191610456565b820191906000526020600020905b81548152906001019060200180831161043957829003601f168201915b5050505050905090565b60003361046e818585610a31565b5060019392505050565b6006546201000090046001600160a01b031633146104dd5760405162461bcd60e51b815260206004820152600760248201527f4f4e4c595f59540000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6104e78282610b8a565b5050565b600254600090600119600160f81b90910460ff160161054c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104d4565b600280546001600160f81b03167f020000000000000000000000000000000000000000000000000000000000000017905533610589858285610ca6565b610594858585610d56565b6001915050600280546001600160f81b0316600160f81b1790559392505050565b905090565b60006105b5610fce565b6001600160a01b0381166000908152600560205260408120545b92915050565b6060600480546103dd906117f5565b600254600090600119600160f81b90910460ff16016106545760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104d4565b600280546001600160f81b03167f020000000000000000000000000000000000000000000000000000000000000017905533610691818585610d56565b6001915050600280546001600160f81b0316600160f81b17905592915050565b6006546201000090046001600160a01b031633146107115760405162461bcd60e51b815260206004820152600760248201527f4f4e4c595f59540000000000000000000000000000000000000000000000000060448201526064016104d4565b6104e782826110f5565b600654610100900460ff166107365760065460ff161561073a565b303b155b6107ac5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016104d4565b600654610100900460ff161580156107eb57600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108635760405162461bcd60e51b815260206004820152600c60248201527f4f4e4c595f464143544f5259000000000000000000000000000000000000000060448201526064016104d4565b600680547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16620100006001600160a01b0385160217905580156104e757600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b8342111561091d5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016104d4565b60007f000000000000000000000000000000000000000000000000000000000000000088888861094c8c6112ab565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006109a7826112d3565b905060006109b78287878761133c565b9050896001600160a01b0316816001600160a01b031614610a1a5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016104d4565b610a258a8a8a610a31565b50505050505050505050565b6001600160a01b038316610aac5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104d4565b6001600160a01b038216610b285760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104d4565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038216610be05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d4565b610be981611364565b60028054600090610c049084906001600160f81b031661183f565b92506101000a8154816001600160f81b0302191690836001600160f81b0316021790555080600080846001600160a01b03166001600160a01b031681526020019081526020016000206000828254610c5c919061186a565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610d505781811015610d435760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d4565b610d508484848403610a31565b50505050565b6001600160a01b038316610dd25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104d4565b6001600160a01b038216610e4e5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104d4565b816001600160a01b0316836001600160a01b031603610eaf5760405162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e7366657220746f2073656c6600000000000000000060448201526064016104d4565b6001600160a01b03831660009081526020819052604090205481811015610f3e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104d4565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610f7590849061186a565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610fc191815260200190565b60405180910390a3610d50565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561102757507f000000000000000000000000000000000000000000000000000000000000000046145b1561105157507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b6001600160a01b0382166111715760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104d4565b6001600160a01b038216600090815260208190526040902054818110156112005760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104d4565b6001600160a01b0383166000908152602081905260409020828203905561122682611364565b600280546000906112419084906001600160f81b0316611882565b92506101000a8154816001600160f81b0302191690836001600160f81b0316021790555060006001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b7d91815260200190565b6001600160a01b03811660009081526005602052604090208054600181018255905b50919050565b60006105de6112e0610fce565b836040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b600080600061134d8787878761137a565b9150915061135a81611467565b5095945050505050565b6000600160f81b821061137657600080fd5b5090565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156113b1575060009050600361145e565b8460ff16601b141580156113c957508460ff16601c14155b156113da575060009050600461145e565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561142e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166114575760006001925092505061145e565b9150600090505b94509492505050565b600081600481111561147b5761147b6118aa565b036114835750565b6001816004811115611497576114976118aa565b036114e45760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016104d4565b60028160048111156114f8576114f86118aa565b036115455760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016104d4565b6003816004811115611559576115596118aa565b036115cc5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016104d4565b60048160048111156115e0576115e06118aa565b036116535760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016104d4565b50565b600060208083528351808285015260005b8181101561168357858101830151858201604001528201611667565b81811115611695576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146116c257600080fd5b919050565b600080604083850312156116da57600080fd5b6116e3836116ab565b946020939093013593505050565b60008060006060848603121561170657600080fd5b61170f846116ab565b925061171d602085016116ab565b9150604084013590509250925092565b60006020828403121561173f57600080fd5b611748826116ab565b9392505050565b600080600080600080600060e0888a03121561176a57600080fd5b611773886116ab565b9650611781602089016116ab565b95506040880135945060608801359350608088013560ff811681146117a557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156117d557600080fd5b6117de836116ab565b91506117ec602084016116ab565b90509250929050565b600181811c9082168061180957607f821691505b6020821081036112cd57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001600160f81b0380831681851680830382111561186157611861611829565b01949350505050565b6000821982111561187d5761187d611829565b500190565b60006001600160f81b03838116908316818110156118a2576118a2611829565b039392505050565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220f9b1501a3af57b9fa1e43e2c45ed0625f7a6322228ba738316cc86ebd209817564736f6c634300080d0033a264697066735822122086ba6c6217067261b43b6ec3ae4bd11830d65167ca6b7b40eb3add7b3debaa5964736f6c634300080d0033",
350
381
  "linkReferences": {},
351
382
  "deployedLinkReferences": {}
352
383
  }
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../../build-info/879ec58d72562fa1c0aef384949c6d3c.json"
3
+ "buildInfo": "../../../../build-info/e23516cf79859ddf49794b9fff76abac.json"
4
4
  }