@gooddollar/goodprotocol 2.0.13 → 2.0.14-beta.0

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 (489) hide show
  1. package/artifacts/abis/DistributionBridgeMock.min.json +1 -1
  2. package/artifacts/abis/DistributionHelper.min.json +1 -1
  3. package/artifacts/abis/DistributionHelperTest.min.json +1 -1
  4. package/artifacts/abis/DistributionHelperTestHelper.min.json +1 -1
  5. package/artifacts/abis/GasPriceMockOracle.min.json +1 -1
  6. package/artifacts/abis/GoodCompoundStakingTest.min.json +1 -1
  7. package/artifacts/abis/GoodReserveCDai.min.json +1 -1
  8. package/artifacts/abis/IFeesFormula.min.json +1 -1
  9. package/artifacts/abis/ISuperGoodDollar.min.json +1 -1
  10. package/artifacts/abis/ISuperToken.min.json +1 -0
  11. package/artifacts/abis/MultichainFeeFormula.min.json +1 -0
  12. package/artifacts/abis/SuperGoodDollar.min.json +1 -1
  13. package/artifacts/abis/SuperToken.min.json +1 -1
  14. package/artifacts/abis/UBIScheme.min.json +1 -1
  15. package/artifacts/abis/UBISchemeV2.min.json +1 -1
  16. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  17. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  18. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  19. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  20. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  21. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  23. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  24. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  27. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  28. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  31. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  32. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  33. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +1 -1
  34. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  35. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  36. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  37. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  38. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  39. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  40. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  41. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  42. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  43. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  44. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  45. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
  46. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.json +2 -2
  47. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  48. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.json +2 -2
  49. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
  50. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.json +2 -2
  51. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  52. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +2 -2
  53. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  54. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +2 -2
  55. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  56. package/artifacts/contracts/governance/GReputation.sol/GReputation.json +2 -2
  57. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
  58. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +2 -2
  59. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +1 -1
  60. package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +1 -1
  61. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
  62. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  63. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.json +2 -2
  64. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  65. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  66. package/artifacts/contracts/governance/Reputation.sol/Reputation.json +2 -2
  67. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  68. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +2 -2
  69. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +1 -1
  70. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +2 -2
  71. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +1 -1
  72. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.json +2 -2
  73. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  74. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.json +2 -2
  75. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
  76. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.json +2 -2
  77. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  78. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.json +2 -2
  79. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
  80. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.json +2 -2
  81. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
  82. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.json +2 -2
  83. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
  84. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.json +2 -2
  85. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  86. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.json +2 -2
  87. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
  88. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.json +2 -2
  89. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  90. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.json +2 -2
  91. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
  92. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.json +122 -17
  93. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
  94. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.json +242 -17
  95. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
  96. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.json +256 -18
  97. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
  98. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.json +2 -2
  99. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +1 -1
  100. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.json +2 -2
  101. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
  102. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.json +15 -2
  103. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  104. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +6 -6
  105. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
  106. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.json +2 -2
  107. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  108. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +2 -2
  109. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +1 -1
  110. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.json +2 -2
  111. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  112. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.json +2 -2
  113. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  114. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.json +2 -2
  115. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
  116. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
  117. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.json +2 -2
  118. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  119. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  120. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.json +2 -2
  121. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  122. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
  123. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.dbg.json +1 -1
  124. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.json +2 -2
  125. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  126. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.json +2 -2
  127. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
  128. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.json +2 -2
  129. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  130. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.json +2 -2
  131. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  132. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.json +2 -2
  133. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  134. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +2 -2
  135. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  136. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +2 -2
  137. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  138. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.json +2 -2
  139. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  140. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.json +2 -2
  141. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  142. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.json +2 -2
  143. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  144. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.json +2 -2
  145. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  146. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.json +2 -2
  147. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  148. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.json +2 -2
  149. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  150. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.json +2 -2
  151. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  152. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.json +2 -2
  153. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  154. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.json +2 -2
  155. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  156. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.json +2 -2
  157. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  158. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +242 -17
  159. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  160. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +2 -2
  161. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  162. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +2 -2
  163. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  164. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  165. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +45 -19
  166. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  167. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.json +2 -2
  168. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  169. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.json +2 -2
  170. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  171. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +2 -2
  172. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  173. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +2 -2
  174. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  175. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  176. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  177. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +2 -2
  178. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  179. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  180. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  181. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.json +2 -2
  182. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  183. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +2 -2
  184. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  185. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +2 -2
  186. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  187. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +2 -2
  188. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  189. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +2 -2
  190. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  191. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +2 -2
  192. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  193. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +2 -2
  194. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  195. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.json +2 -2
  196. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
  197. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +1 -1
  198. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.json +2 -2
  199. package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +1 -1
  200. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +1 -1
  201. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +1 -1
  202. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.json +2 -2
  203. package/artifacts/contracts/token/IFeesFormula.sol/IFeesFormula.dbg.json +4 -0
  204. package/artifacts/contracts/token/{FeesFormula.sol → IFeesFormula.sol}/IFeesFormula.json +1 -1
  205. package/artifacts/contracts/token/MultichainFeeFormula.sol/MultichainFeeFormula.dbg.json +4 -0
  206. package/artifacts/contracts/token/MultichainFeeFormula.sol/MultichainFeeFormula.json +58 -0
  207. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +1 -1
  208. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +1 -1
  209. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +1 -1
  210. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +1 -1
  211. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.json +159 -5
  212. package/artifacts/contracts/token/superfluid/ISuperToken.sol/ISuperToken.dbg.json +4 -0
  213. package/artifacts/contracts/token/superfluid/ISuperToken.sol/ISuperToken.json +1609 -0
  214. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +1 -1
  215. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +233 -190
  216. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +1 -1
  217. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.json +198 -193
  218. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +1 -1
  219. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +1 -1
  220. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +1 -1
  221. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +1 -1
  222. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.json +2 -2
  223. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +1 -1
  224. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.json +2 -2
  225. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  226. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +20 -2
  227. package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.dbg.json +1 -1
  228. package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.json +20 -2
  229. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  230. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.json +2 -2
  231. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +1 -1
  232. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.json +2 -2
  233. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  234. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.json +2 -2
  235. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  236. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.json +2 -2
  237. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +1 -1
  238. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.json +2 -2
  239. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.dbg.json +1 -1
  240. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.json +2 -2
  241. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.dbg.json +1 -1
  242. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.json +2 -2
  243. package/artifacts/contracts/utils/BuyGDClone.sol/ISwapRouter.dbg.json +1 -1
  244. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  245. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.json +2 -2
  246. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  247. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.json +2 -2
  248. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  249. package/artifacts/contracts/utils/DSMath.sol/DSMath.json +2 -2
  250. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  251. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.json +2 -2
  252. package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.dbg.json +1 -1
  253. package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.json +2 -2
  254. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  255. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +2 -2
  256. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  257. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  258. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  259. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +2 -2
  260. package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.dbg.json +1 -1
  261. package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.json +2 -2
  262. package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
  263. package/artifacts/contracts/utils/MultiCall.sol/Multicall.json +2 -2
  264. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  265. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.json +2 -2
  266. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  267. package/artifacts/contracts/utils/NameService.sol/NameService.json +2 -2
  268. package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.dbg.json +1 -1
  269. package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.json +2 -2
  270. package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.dbg.json +1 -1
  271. package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.json +2 -2
  272. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  273. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  274. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.json +2 -2
  275. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  276. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.json +2 -2
  277. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  278. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.json +2 -2
  279. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  280. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.json +2 -2
  281. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  282. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.json +2 -2
  283. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  284. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.json +2 -2
  285. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  286. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.json +2 -2
  287. package/contracts/invite/InvitesFuseV2.sol +3 -2
  288. package/contracts/mocks/DistributionBridgeMock.sol +42 -15
  289. package/contracts/mocks/DistributionHelperTest.sol +6 -2
  290. package/contracts/mocks/FeesFormularMock.sol +14 -14
  291. package/contracts/mocks/GasPriceMockOracle.sol +7 -1
  292. package/contracts/reserve/DistributionHelper.sol +147 -23
  293. package/contracts/reserve/GoodReserveCDai.sol +39 -47
  294. package/contracts/staking/GoodFundManager.sol +18 -37
  295. package/contracts/token/GoodDollar.sol +11 -16
  296. package/contracts/token/MultichainFeeFormula.sol +34 -0
  297. package/contracts/token/superfluid/ConstantFlowNFTs.sol +3 -0
  298. package/contracts/token/superfluid/ISuperGoodDollar.sol +4 -5
  299. package/contracts/token/superfluid/ISuperToken.sol +464 -0
  300. package/contracts/token/superfluid/SuperGoodDollar.sol +408 -376
  301. package/contracts/token/superfluid/SuperToken.sol +144 -144
  302. package/contracts/ubi/UBIScheme.sol +9 -5
  303. package/contracts/ubi/UBISchemeV2.sol +6 -0
  304. package/contracts/utils/AdminWallet.sol +2 -1
  305. package/contracts/utils/AdminWalletFuse.sol +2 -1
  306. package/contracts/utils/BuyAndBridgeHelper.sol +13 -13
  307. package/contracts/utils/MultiCall.sol +8 -10
  308. package/dist/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +2 -2
  309. package/dist/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.json +233 -190
  310. package/dist/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.json +2 -2
  311. package/dist/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.json +2 -2
  312. package/hardhat.config.ts +46 -15
  313. package/package.json +7 -7
  314. package/releases/deploy-settings.json +3 -1
  315. package/releases/deployment.json +6 -2
  316. package/scripts/analytics/faucetStats.ts +19 -15
  317. package/scripts/fv.ts +305 -0
  318. package/scripts/multichain-deploy/1_basicdao-deploy.ts +18 -9
  319. package/scripts/multichain-deploy/helpers.ts +204 -64
  320. package/scripts/proposals/gip-15.ts +427 -0
  321. package/scripts/upgrades/multichain-formula-upgrade.ts +140 -0
  322. package/scripts/upgrades/restoreFunds.ts +91 -0
  323. package/scripts/upgrades/superfluid-nft-celo-gas-token.ts +159 -0
  324. package/scripts/utils.ts +15 -0
  325. package/test/helpers.ts +73 -10
  326. package/test/reserve/DistributionHelper.test.ts +183 -218
  327. package/test/reserve/GoodReserveCDai.distribution.test.ts +21 -144
  328. package/test/reserve/GoodReserveCDai.test.ts +98 -302
  329. package/test/staking/StakingRewards.test.ts +324 -936
  330. package/test/token/CeloGasToken.test.ts +108 -0
  331. package/test/token/SuperGoodDollar.test.ts +15 -6
  332. package/test/utils/AdminWallet.test.ts +97 -38
  333. package/test/utils/BuyAndBridgeHelper.test.ts +9 -33
  334. package/truffle-config.js +24 -6
  335. package/types/ConstantInflowNFT.ts +969 -0
  336. package/types/ConstantOutflowNFT.ts +1031 -0
  337. package/types/DistributionBridgeMock.ts +203 -70
  338. package/types/DistributionHelper.ts +325 -30
  339. package/types/DistributionHelperTest.ts +325 -30
  340. package/types/DistributionHelperTestHelper.ts +355 -35
  341. package/types/FlowNFTBase.ts +887 -0
  342. package/types/GasPriceMockOracle.ts +29 -0
  343. package/types/GoodReserveCDai.ts +79 -20
  344. package/types/IConstantFlowAgreementV1.ts +1391 -0
  345. package/types/IConstantInflowNFT.ts +772 -0
  346. package/types/IConstantOutflowNFT.ts +834 -0
  347. package/types/IERC721.ts +487 -0
  348. package/types/IERC721Metadata.ts +538 -0
  349. package/types/IFlowNFTBase.ts +711 -0
  350. package/types/IInstantDistributionAgreementV1.ts +1183 -0
  351. package/types/ILayerZeroFeeEstimator.ts +136 -0
  352. package/types/IMessagePassingBridge.ts +774 -0
  353. package/types/ISETH.ts +2668 -0
  354. package/types/ISETHCustom.ts +161 -0
  355. package/types/ISuperGoodDollar.ts +277 -25
  356. package/types/ISuperToken.ts +202 -346
  357. package/types/ISuperfluid.ts +7 -2
  358. package/types/ISuperfluidGovernance.ts +40 -5
  359. package/types/MultichainFeeFormula.ts +130 -0
  360. package/types/SuperGoodDollar.ts +383 -349
  361. package/types/SuperToken.ts +319 -344
  362. package/types/UBIScheme.ts +36 -0
  363. package/types/UBISchemeV2.ts +36 -0
  364. package/types/factories/AaveMock__factory.ts +1 -1
  365. package/types/factories/AaveStakingFactory__factory.ts +1 -1
  366. package/types/factories/AaveUSDMockOracle__factory.ts +1 -1
  367. package/types/factories/AdminWalletFuse__factory.ts +1 -1
  368. package/types/factories/AdminWallet__factory.ts +1 -1
  369. package/types/factories/BancorFormula__factory.ts +1 -1
  370. package/types/factories/BaseShareFieldV2__factory.ts +1 -1
  371. package/types/factories/BaseShareField__factory.ts +1 -1
  372. package/types/factories/BatUSDMockOracle__factory.ts +1 -1
  373. package/types/factories/BuyAndBridgeHelper__factory.ts +1 -1
  374. package/types/factories/BuyGDCloneFactory__factory.ts +1 -1
  375. package/types/factories/BuyGDClone__factory.ts +1 -1
  376. package/types/factories/CBATMock__factory.ts +1 -1
  377. package/types/factories/CDAILowWorthMock__factory.ts +1 -1
  378. package/types/factories/CDAIMock__factory.ts +1 -1
  379. package/types/factories/CDAINonMintableMock__factory.ts +1 -1
  380. package/types/factories/CDecimalsMock__factory.ts +1 -1
  381. package/types/factories/CSDTMock__factory.ts +1 -1
  382. package/types/factories/CUSDCMock__factory.ts +1 -1
  383. package/types/factories/ClaimersDistribution__factory.ts +1 -1
  384. package/types/factories/CompUSDMockOracle__factory.ts +1 -1
  385. package/types/factories/CompoundStakingFactory__factory.ts +1 -1
  386. package/types/factories/CompoundVotingMachine__factory.ts +1 -1
  387. package/types/factories/ConstantInflowNFT__factory.ts +758 -0
  388. package/types/factories/ConstantOutflowNFT__factory.ts +817 -0
  389. package/types/factories/DAIMock__factory.ts +1 -1
  390. package/types/factories/DAOContract__factory.ts +1 -1
  391. package/types/factories/DAOUpgradeableContract__factory.ts +1 -1
  392. package/types/factories/DaiEthPriceMockOracle__factory.ts +1 -1
  393. package/types/factories/DecimalsMock__factory.ts +1 -1
  394. package/types/factories/DistributionBridgeMock__factory.ts +121 -16
  395. package/types/factories/DistributionHelperTestHelper__factory.ts +255 -17
  396. package/types/factories/DistributionHelperTest__factory.ts +241 -16
  397. package/types/factories/DistributionHelper__factory.ts +241 -16
  398. package/types/factories/DonationsStaking__factory.ts +1 -1
  399. package/types/factories/ERC1967Proxy__factory.ts +1 -1
  400. package/types/factories/ERC20PresetMinterPauserUpgradeable__factory.ts +1 -1
  401. package/types/factories/ERC20Upgradeable__factory.ts +1 -1
  402. package/types/factories/EthUSDMockOracle__factory.ts +1 -1
  403. package/types/factories/EventsEmitter__factory.ts +1 -1
  404. package/types/factories/ExchangeHelper__factory.ts +1 -1
  405. package/types/factories/Faucet__factory.ts +1 -1
  406. package/types/factories/FeesFormulaMock__factory.ts +1 -1
  407. package/types/factories/FlowNFTBase__factory.ts +642 -0
  408. package/types/factories/FuseFaucetV2__factory.ts +1 -1
  409. package/types/factories/FuseFaucet__factory.ts +1 -1
  410. package/types/factories/FuseStakingV3__factory.ts +1 -1
  411. package/types/factories/GDFaucet__factory.ts +1 -1
  412. package/types/factories/GReputation__factory.ts +1 -1
  413. package/types/factories/GasPriceMockOracle__factory.ts +14 -1
  414. package/types/factories/GoodAaveStakingV2__factory.ts +1 -1
  415. package/types/factories/GoodAaveStaking__factory.ts +1 -1
  416. package/types/factories/GoodCompoundStakingTest__factory.ts +1 -1
  417. package/types/factories/GoodCompoundStakingV2__factory.ts +1 -1
  418. package/types/factories/GoodCompoundStaking__factory.ts +1 -1
  419. package/types/factories/GoodDollarMintBurnWrapper__factory.ts +1 -1
  420. package/types/factories/GoodDollarStakingMock__factory.ts +1 -1
  421. package/types/factories/GoodDollarStaking__factory.ts +1 -1
  422. package/types/factories/GoodDollar__factory.ts +1 -1
  423. package/types/factories/GoodFundManagerTest__factory.ts +1 -1
  424. package/types/factories/GoodFundManager__factory.ts +1 -1
  425. package/types/factories/GoodMarketMaker__factory.ts +1 -1
  426. package/types/factories/GoodReserveCDai__factory.ts +44 -18
  427. package/types/factories/GovernanceStaking__factory.ts +1 -1
  428. package/types/factories/IConstantFlowAgreementV1__factory.ts +1064 -0
  429. package/types/factories/IConstantInflowNFT__factory.ts +551 -0
  430. package/types/factories/IConstantOutflowNFT__factory.ts +614 -0
  431. package/types/factories/IERC721Metadata__factory.ts +356 -0
  432. package/types/factories/IERC721__factory.ts +308 -0
  433. package/types/factories/IFlowNFTBase__factory.ts +512 -0
  434. package/types/factories/IInstantDistributionAgreementV1__factory.ts +1015 -0
  435. package/types/factories/ILayerZeroFeeEstimator__factory.ts +79 -0
  436. package/types/factories/IMessagePassingBridge__factory.ts +446 -0
  437. package/types/factories/ISETHCustom__factory.ts +56 -0
  438. package/types/factories/ISETH__factory.ts +1866 -0
  439. package/types/factories/ISuperGoodDollar__factory.ts +159 -5
  440. package/types/factories/ISuperTokenFactory__factory.ts +5 -0
  441. package/types/factories/ISuperToken__factory.ts +130 -191
  442. package/types/factories/ISuperfluidGovernance__factory.ts +23 -5
  443. package/types/factories/ISuperfluid__factory.ts +10 -0
  444. package/types/factories/IdentityFix__factory.ts +1 -1
  445. package/types/factories/IdentityMock__factory.ts +1 -1
  446. package/types/factories/IdentityV2__factory.ts +1 -1
  447. package/types/factories/IncentiveControllerMock__factory.ts +1 -1
  448. package/types/factories/InvitesFuseV2__factory.ts +1 -1
  449. package/types/factories/InvitesV1__factory.ts +1 -1
  450. package/types/factories/InvitesV2__factory.ts +1 -1
  451. package/types/factories/LendingPoolMock__factory.ts +1 -1
  452. package/types/factories/Multicall__factory.ts +1 -1
  453. package/types/factories/MultichainBridgeHelper__factory.ts +1 -1
  454. package/types/factories/MultichainFeeFormula__factory.ts +113 -0
  455. package/types/factories/MultichainRouterMock__factory.ts +1 -1
  456. package/types/factories/NameService__factory.ts +1 -1
  457. package/types/factories/OneTimePaymentsV2__factory.ts +1 -1
  458. package/types/factories/OneTimePayments__factory.ts +1 -1
  459. package/types/factories/OverMintTesterRegularStake__factory.ts +1 -1
  460. package/types/factories/OverMintTester__factory.ts +1 -1
  461. package/types/factories/PayableMock__factory.ts +1 -1
  462. package/types/factories/ProtocolUpgradeFuseRecover__factory.ts +1 -1
  463. package/types/factories/ProtocolUpgradeFuse__factory.ts +1 -1
  464. package/types/factories/ProtocolUpgradeRecover__factory.ts +1 -1
  465. package/types/factories/ProtocolUpgrade__factory.ts +1 -1
  466. package/types/factories/ProxyFactory1967__factory.ts +1 -1
  467. package/types/factories/ReputationTestHelper__factory.ts +1 -1
  468. package/types/factories/Reputation__factory.ts +1 -1
  469. package/types/factories/SixteenDecimalsTokenMock__factory.ts +1 -1
  470. package/types/factories/StakersDistribution__factory.ts +1 -1
  471. package/types/factories/StakingMockFixedAPY__factory.ts +1 -1
  472. package/types/factories/SuperGoodDollar__factory.ts +230 -187
  473. package/types/factories/SuperToken__factory.ts +197 -192
  474. package/types/factories/SwapHelperTest__factory.ts +1 -1
  475. package/types/factories/TwentyDecimalsTokenMock__factory.ts +1 -1
  476. package/types/factories/UBISchemeV2__factory.ts +19 -1
  477. package/types/factories/UBIScheme__factory.ts +19 -1
  478. package/types/factories/USDCMock__factory.ts +1 -1
  479. package/types/factories/UUPSProxy__factory.ts +1 -1
  480. package/types/factories/UniswapV2SwapHelper__factory.ts +1 -1
  481. package/types/factories/UpgradableMock2__factory.ts +1 -1
  482. package/types/factories/UpgradableMock3__factory.ts +1 -1
  483. package/types/factories/UpgradableMock4__factory.ts +1 -1
  484. package/types/factories/UpgradableMock__factory.ts +1 -1
  485. package/types/hardhat.d.ts +166 -4
  486. package/types/index.ts +34 -4
  487. package/yarn.lock +1288 -719
  488. package/artifacts/contracts/token/FeesFormula.sol/IFeesFormula.dbg.json +0 -4
  489. /package/contracts/token/{FeesFormula.sol → IFeesFormula.sol} +0 -0
@@ -1400,7 +1400,7 @@ const _abi = [
1400
1400
  ];
1401
1401
 
1402
1402
  const _bytecode =
1403
- "0x60806040523480156200001157600080fd5b5060405162004ee338038062004ee3833981016040819052620000349162000944565b6040518060400160405280600a815260200169472420536176696e677360b01b815250604051806040016040528060048152602001631cdd91c960e21b815250816003908162000085919062000a52565b50600462000094828262000a52565b50506001607355506074805460ff19169055603c63ffffffff82161115620001025760405162461bcd60e51b815260206004820152601c60248201527f6d61782074776f206d6f6e74687320756e74696c207570677261646500000000604482015260640160405180910390fd5b6200010d836200022e565b620001188462000283565b607b80546001600160801b0319166001600160801b03841617905560408054905163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa15801562000197573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bd919062000b1e565b607a80546001600160a01b03929092166001600160a01b0319909216919091179055306000908152600a6020526040812055607b80546001600160801b03428116600160801b029116179055607c805463ffffffff90921663ffffffff199092169190911790555062000b8c915050565b62000238620002ab565b62000260816001600160801b0316670de0b6b3a7640000620002d560201b62001b391760201c565b607980546001600160801b0319166001600160801b039290921691909117905550565b604080546001600160a01b0319166001600160a01b038316179055620002a86200031c565b50565b620002b562000449565b607755607580546001600160801b031916436001600160801b0316179055565b600081600003620002e557600080fd5b6000620002f38484620004d6565b905060016001607f1b036001600160801b03821611156200031357600080fd5b90505b92915050565b60408054905163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa15801562000380573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a6919062000b1e565b603e80546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa15801562000401573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000427919062000b1e565b603f80546001600160a01b0319166001600160a01b0392909216919091179055565b60775460009015806200046657506075546001600160801b031643145b1562000473575060775490565b607554600090620004ac9062000493906001600160801b03164362000b3e565b607954600f0b9062000654602090811b62001b7a17901c565b9050620004d060756002015482600f0b620008a160201b62001d931790919060201c565b91505090565b600081600003620004e657600080fd5b60006001600160c01b038411620005165782604085901b816200050d576200050d62000b60565b0490506200063f565b60c084811c640100000000811062000530576020918201911c5b62010000811062000543576010918201911c5b610100811062000555576008918201911c5b6010811062000566576004918201911c5b6004811062000577576002918201911c5b6002811062000587576001820191505b60bf820360018603901c6001018260ff0387901b81620005ab57620005ab62000b60565b0492506001600160801b03831115620005c357600080fd5b608085901c83026001600160801b038616840260c088901c604089901b82811015620005f0576001820391505b608084901b9290038281101562000608576001820391505b829003608084901c821462000621576200062162000b76565b88818162000633576200063362000b60565b04870196505050505050505b6001600160801b038111156200031357600080fd5b600080600084600f0b1280156200066e5750826001166001145b905060008085600f0b1262000684578462000689565b846000035b6001600160801b03169050600160801b6801000000000000000082116200072b57603f82901b91505b841562000722576001851615620006c9578102607f1c5b908002607f1c906002851615620006e0578102607f1c5b908002607f1c906004851615620006f7578102607f1c5b908002607f1c9060088516156200070e578102607f1c5b60049490941c93908002607f1c90620006b2565b60401c62000857565b603f6c010000000000000000000000008310156200074f5760209290921b91601f19015b600160701b831015620007685760109290921b91600f19015b600160781b831015620007815760089290921b91600719015b6001607c1b8310156200079a5760049290921b91600319015b6001607e1b831015620007b35760029290921b91600119015b6001607f1b831015620007cc5760019290921b91600019015b60005b86156200083f5760408210620007e457600080fd5b60018716156200080c57918302607f1c918101600160801b8311156200080c57600192831c92015b928002607f1c9260019190911b90600160801b84106200083257600193841c9391909101905b600187901c9650620007cf565b604081106200084d57600080fd5b6040039190911c90505b6000836200086657816200086b565b816000035b905060016001607f1b031981128015906200088d575060016001607f1b038113155b6200089757600080fd5b9695505050505050565b600081600003620008b55750600062000316565b600083600f0b1215620008c757600080fd5b600f83900b6001600160801b038316810260401c90608084901c026001600160c01b03811115620008f757600080fd5b60401b81198111156200090957600080fd5b019392505050565b6001600160a01b0381168114620002a857600080fd5b80516001600160801b03811681146200093f57600080fd5b919050565b600080600080608085870312156200095b57600080fd5b8451620009688162000911565b9350620009786020860162000927565b9250620009886040860162000927565b9150606085015163ffffffff81168114620009a257600080fd5b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620009d857607f821691505b602082108103620009f957634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000a4d57600081815260208120601f850160051c8101602086101562000a285750805b601f850160051c820191505b8181101562000a495782815560010162000a34565b5050505b505050565b81516001600160401b0381111562000a6e5762000a6e620009ad565b62000a868162000a7f8454620009c3565b84620009ff565b602080601f83116001811462000abe576000841562000aa55750858301515b600019600386901b1c1916600185901b17855562000a49565b600085815260208120601f198616915b8281101562000aef5788860151825594840194600190910190840162000ace565b508582101562000b0e5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000b3157600080fd5b8151620003138162000911565b818103818111156200031657634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b6143478062000b9c6000396000f3fe608060405234801561001057600080fd5b50600436106102b35760003560e01c80628cc262146102b857806306fdde03146102de578063095ea7b3146102f35780630c1cd7f31461031657806318160ddd146103335780631b3c90a81461033b57806320f902ae14610345578063213b329e1461036a57806322022a291461037257806322dec37b1461037a57806323b872dd1461039a57806325d5971f146103ad5780632e42a896146103c0578063313ce5671461044557806331903da1146104545780633659cfe61461047457806336de95f614610487578063395093511461049a578063399080ec146104ad5780633d9a12cc146104c05780633e6326fc146104d35780634162169f146104f357806347b3e7e8146105065780634f1db7f614610526578063576ce9fd146105395780635aef7de61461054c5780635c975abb1461055f5780635fc5e0201461056a5780636eb629841461058657806370a0823114610599578063777d6641146105ac5780637bcbb9ff146105cc578063846141b3146105df57806387269729146105ff57806395d89b4114610607578063a457c2d71461060f578063a4c0ed3614610622578063a694fc3a14610635578063a9059cbb14610648578063aa3258211461065b578063aaf5eb681461056a578063aba78c161461066e578063b20b9979146106c2578063b811540e146106d5578063b86543ba146106e8578063bf8e9b6e146106fb578063c671062914610703578063c7b8981c14610716578063ceb8b01c1461071e578063cf09e0d014610726578063d55ec69714610740578063d80528ae14610748578063d853365f146107a7578063dd62ed3e146107b0578063e087788e146107c3578063e1758bd8146107d6578063ebe91644146107de578063f5eb42dc146108bf578063fc0c546a146108d2578063fea6f4f5146108e5575b600080fd5b6102cb6102c6366004613c2e565b6108f8565b6040519081526020015b60405180910390f35b6102e661096a565b6040516102d59190613c9b565b610306610301366004613cae565b6109fc565b60405190151581526020016102d5565b61031e610a16565b604080519283526020830191909152016102d5565b6002546102cb565b610343610a47565b005b607c546103559063ffffffff1681565b60405163ffffffff90911681526020016102d5565b6102cb610b6e565b6102cb610b97565b6102cb610388366004613c2e565b60076020526000908152604090205481565b6103066103a8366004613cda565b610ba7565b61031e6103bb366004613d1b565b610bcb565b6104126103ce366004613d34565b600b602090815260009283526040808420909152908252902080546001909101546001600160801b0380831692600160801b90819004821692808316929190041684565b604080516001600160801b03958616815293851660208501529184169183019190915290911660608201526080016102d5565b604051601281526020016102d5565b6102cb610462366004613c2e565b60086020526000908152604090205481565b610343610482366004613c2e565b610c87565b6102cb610495366004613c2e565b610ece565b6103066104a8366004613cae565b610eff565b61031e6104bb366004613c2e565b610f21565b6102cb6104ce366004613d6d565b610f37565b6040546104e6906001600160a01b031681565b6040516102d59190613db7565b603e546104e6906001600160a01b031681565b6102cb610514366004613c2e565b600a6020526000908152604090205481565b61031e610534366004613d34565b61102b565b6102cb610547366004613c2e565b61106e565b603f546104e6906001600160a01b031681565b60745460ff16610306565b610579670de0b6b3a764000081565b6040516102d59190613dcb565b610343610594366004613d1b565b611092565b6102cb6105a7366004613c2e565b6110c9565b6079546105b990600f0b81565b604051600f9190910b81526020016102d5565b6102cb6105da366004613c2e565b6110e4565b6102cb6105ed366004613c2e565b60096020526000908152604090205481565b6102cb6110ff565b6102e661115e565b61030661061d366004613cae565b61116d565b610306610630366004613ddf565b6111e8565b610343610643366004613d1b565b611243565b610306610656366004613cae565b611337565b6102cb610669366004613c2e565b611345565b6106a261067c366004613c2e565b6078602052600090815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b039384168152929091166020830152016102d5565b6103436106d0366004613e7e565b611361565b6102cb6106e3366004613d1b565b6113d7565b607b54610579906001600160801b031681565b61031e611415565b61031e610711366004613c2e565b6114b0565b61031e6114d2565b6102cb6114f7565b607b5461057990600160801b90046001600160801b031681565b61034361153b565b607554607654607754610772926001600160801b0380821693600160801b90920481169291169084565b6040516102d594939291906001600160801b039485168152928416602084015292166040820152606081019190915260800190565b61057961271081565b6102cb6107be366004613d34565b611a19565b6103436107d1366004613e7e565b611a44565b6104e6611a6e565b61087c6107ec366004613c2e565b60408051608081018252600080825260208201819052918101829052606081019190915250306000908152600b602090815260408083206001600160a01b0394909416835292815290829020825160808101845281546001600160801b038082168352600160801b9182900481169483019490945260019092015480841694820194909452920416606082015290565b6040516102d5919081516001600160801b039081168252602080840151821690830152604080840151821690830152606092830151169181019190915260800190565b6102cb6108cd366004613c2e565b611af6565b607a546104e6906001600160a01b031681565b6103436108f3366004613ea7565b611b01565b60008061090483611af6565b905060006109106110ff565b9050600061091d8561106e565b905081811161092c578061092e565b815b9050670de0b6b3a76400006109438483613ef2565b61094d8585613ef2565b6109579190613f11565b6109619190613f3a565b95945050505050565b60606003805461097990613f4e565b80601f01602080910402602001604051908101604052809291908181526020018280546109a590613f4e565b80156109f25780601f106109c7576101008083540402835291602001916109f2565b820191906000526020600020905b8154815290600101906020018083116109d557829003601f168201915b5050505050905090565b600033610a0a818585611dfe565b60019150505b92915050565b306000908152600a6020526040812054607954909190610a4190600f0b670de0b6b3a7640000611d93565b90509091565b60408054905163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa158015610aaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ace9190613f88565b603e80546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa158015610b28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4c9190613f88565b603f80546001600160a01b0319166001600160a01b0392909216919091179055565b607b54600090610b8990600c906001600160801b0316613fa5565b6001600160801b0316905090565b6000610ba260025490565b905090565b600033610bb5858285611f22565b610bc0858585611f9c565b506001949350505050565b600080610bd6612094565b6000610be133611af6565b9050600080610bf13333886120ed565b92975090955090925090506000610c0733611af6565b610c119085613f11565b9050337fb4445b5ca5d925c0bf5fb70a192f888574bff35d4da72ff1c5dae14df544310c82610c408587613fcb565b60408051928352602083019190915281018a9052606081018990526080810188905260a0810185905260c00160405180910390a250505050610c826001607355565b915091565b610c8f612094565b6000610c9a33611af6565b905060008111610cc55760405162461bcd60e51b8152600401610cbc90613fde565b60405180910390fd5b603e54603f54604051639be2faed60e01b81526001600160a01b0392831692639be2faed92610cfc92879290911690600401614002565b602060405180830381865afa158015610d19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3d919061401c565b610d845760405162461bcd60e51b81526020600482015260186024820152776e6f742044414f20617070726f766564207570677261646560401b6044820152606401610cbc565b600080600080610d953387876120ed565b9350935093509350828214610de55760405162461bcd60e51b8152602060048201526016602482015275756e61626c6520746f206d696e74207265776172647360501b6044820152606401610cbc565b60006001600160a01b03871663753e88e533610e018786613fcb565b6040518363ffffffff1660e01b8152600401610e1e929190614039565b6020604051808303816000875af1158015610e3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e619190614052565b9050337f9812190ad3df6de1c4b9a4acfdb8a7d84070af20c1fffd053968b2f3c2260416610e8f8585613fcb565b60408051918252602082018a90528101889052606081018790526080810184905260a00160405180910390a2505050505050610ecb6001607355565b50565b6000670de0b6b3a7640000610ee283611af6565b610eeb8461106e565b610ef59190613ef2565b610a109190613f3a565b600033610a0a818585610f128383611a19565b610f1c9190613fcb565b611dfe565b600080610f2e308461102b565b91509150915091565b6001600160a01b038085166000818152600b602090815260408083209486168352938152838220845160808101865281546001600160801b038082168352600160801b91829004811683860152600190930154808416838901520490911660608201529282526005905291822054829015611021576000610fb9888888612209565b91505082604001516001600160801b0316915082602001516001600160801b0316676765c793fa10079d601b1b8285600001516001600160801b0316610fff9190613ef2565b6110099190613f3a565b6110139190613f11565b61101d9083613fcb565b9150505b9695505050505050565b6001600160a01b039182166000818152600b60209081526040808320949095168252928352838120549181526005909252919020546001600160801b0390911691565b6001600160a01b03166000908152607860205260409020546001600160801b031690565b61109a612301565b6110a430826123c6565b6040518181526000805160206142d2833981519152906020015b60405180910390a150565b6001600160a01b031660009081526020819052604090205490565b6001600160a01b031660009081526006602052604090205490565b60008061110a612404565b9050611114610b97565b1561115557670de0b6b3a764000061112a610b97565b6111349190613ef2565b611146670de0b6b3a764000083613ef2565b6111509190613f3a565b611158565b60005b91505090565b60606004805461097990613f4e565b6000338161117b8286611a19565b9050838110156111db5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610cbc565b610bc08286868403611dfe565b607a546000906001600160a01b031633146112395760405162461bcd60e51b81526020600482015260116024820152703ab739bab83837b93a32b2103a37b5b2b760791b6044820152606401610cbc565b610bc0858561246a565b607a546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561129a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112be919061401c565b61132d5760405162461bcd60e51b815260206004820152603a60248201527f7472616e7366657246726f6d206661696c65642c206d616b652073757265207960448201527937ba9030b8383937bb32b2103a37b5b2b7103a3930b739b332b960311b6064820152608401610cbc565b610ecb338261246a565b600033610a0a818585611f9c565b6000670de0b6b3a764000061135983611af6565b610eeb6110ff565b611369612301565b611372816124eb565b607954607b54612ee09161139e9161139691600f0b906001600160801b0316611b7a565b612710611d93565b106113a857600080fd5b7f5e47ff33a7f14c29b3d9d622df796f19d1af1adf178ff7e266844cc8362457c0816040516110be9190613dcb565b6000610a106113e46110ff565b6127106113f9670de0b6b3a764000086613ef2565b6114039190613ef2565b61140d9190613f3a565b612710612531565b600080611421306110e4565b915061142c60025490565b156114a957670de0b6b3a764000061144360025490565b61144d9190613ef2565b607554670de0b6b3a764000090611475908290600160801b90046001600160801b031661406b565b6001600160801b0316611486612404565b6114909190613f11565b61149a9190613ef2565b6114a49190613f3a565b610a41565b5090600090565b6000806114c03060004386610f37565b91506114cb836108f8565b9050915091565b60008060006114e36106e3336108f8565b90506114ee81610bcb565b92509250509091565b60755460009061152090670de0b6b3a764000090600160801b90046001600160801b031661406b565b6001600160801b0316611531612404565b610ba29190613f11565b607c546115519063ffffffff166201518061409a565b607b546115749163ffffffff1690600160801b90046001600160801b03166140bd565b6001600160801b0316421180156115fe5750603e54603f54604051639be2faed60e01b81526001600160a01b0392831692639be2faed926115bd92309290911690600401614002565b602060405180830381865afa1580156115da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fe919061401c565b6116475760405162461bcd60e51b815260206004820152601a6024820152796e6f7420646561646c696e65206f72206e6f7420736368656d6560301b6044820152606401610cbc565b61165b3066d3c21bcecceda160191b6123c6565b60405166d3c21bcecceda160191b81526000805160206142d28339815191529060200160405180910390a160408054905163bf40fac160e01b81526000916001600160a01b03169063bf40fac1906116b590600401614103565b602060405180830381865afa1580156116d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f69190613f88565b905060006001600160a01b0382161561188457816001600160a01b031663c7b8981c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611749573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176d9190614052565b50603e54604051600060248201526001600160a01b039091169063d1b7089a90849060440160408051601f198184030181529181526020820180516001600160e01b03166363b13cd160e11b179052603f54905160e085901b6001600160e01b03191681526117ed9392916001600160a01b031690600090600401614115565b6000604051808303816000875af115801561180c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611834919081019061415f565b509050806118845760405162461bcd60e51b815260206004820181905260248201527f63616c6c696e67207365744d6f6e74686c7952657761726473206661696c65646044820152606401610cbc565b603e546040805490516001600160a01b039283169263d1b7089a9216906118af903090602401614221565b60408051601f198184030181529181526020820180516001600160e01b0316639b2ea4bd60e01b179052603f54905160e085901b6001600160e01b031916815261190a9392916001600160a01b031690600090600401614115565b6000604051808303816000875af1158015611929573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611951919081019061415f565b5090508061199d5760405162461bcd60e51b815260206004820152601960248201527818d85b1b1a5b99c81cd95d1059191c995cdcc819985a5b1959603a1b6044820152606401610cbc565b603e54603f54604051636c525b1360e01b81526001600160a01b0392831692636c525b13926119d192911690600401613db7565b6020604051808303816000875af11580156119f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a14919061401c565b505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b611a4c612301565b607b80546001600160801b0319166001600160801b0392909216919091179055565b60408054905163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015611ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba29190613f88565b6000610a10826110c9565b611b09612554565b611b11612301565b8115611b2457611b1f61257c565b611b2c565b611b2c6125d0565b611b3581611361565b5050565b600081600003611b4857600080fd5b6000611b548484612609565b905060016001607f1b036001600160801b0382161115611b7357600080fd5b9392505050565b600080600084600f0b128015611b935750826001166001145b905060008085600f0b12611ba75784611bac565b846000035b6001600160801b03169050600160801b600160401b8211611c4157603f82901b91505b8415611c39576001851615611be4578102607f1c5b908002607f1c906002851615611bfa578102607f1c5b908002607f1c906004851615611c10578102607f1c5b908002607f1c906008851615611c26578102607f1c5b60049490941c93908002607f1c90611bcf565b60401c611d57565b603f600160601b831015611c5b5760209290921b91601f19015b600160701b831015611c735760109290921b91600f19015b600160781b831015611c8b5760089290921b91600719015b6001607c1b831015611ca35760049290921b91600319015b6001607e1b831015611cbb5760029290921b91600119015b6001607f1b831015611cd35760019290921b91600019015b60005b8615611d405760408210611ce957600080fd5b6001871615611d0f57918302607f1c918101600160801b831115611d0f57600192831c92015b928002607f1c9260019190911b90600160801b8410611d3457600193841c9391909101905b600187901c9650611cd6565b60408110611d4d57600080fd5b6040039190911c90505b600083611d645781611d69565b816000035b905060016001607f1b03198112801590611d8a575060016001607f1b038113155b61102157600080fd5b600081600003611da557506000610a10565b600083600f0b1215611db657600080fd5b600f83900b6001600160801b038316810260401c90608084901c026001600160c01b03811115611de557600080fd5b60401b8119811115611df657600080fd5b019392505050565b6001600160a01b038316611e605760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cbc565b6001600160a01b038216611ec15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cbc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000611f2e8484611a19565b90506000198114611f965781811015611f895760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610cbc565b611f968484848403611dfe565b50505050565b611faa30848360004361276d565b50611fb930838360004361280a565b506000611fc5836110c9565b9050611fd18282613fcb565b6001600160a01b038516600090815260786020526040902054611ffe9084906001600160801b0316613ef2565b6001600160a01b03851660009081526078602052604090205461202b9084906001600160801b0316613ef2565b6120359190613fcb565b61203f9190613f3a565b6001600160a01b038416600090815260786020526040902080546001600160801b0319166001600160801b039290921691909117905561207e8461287d565b506120888361287d565b50611f96848484612b35565b6002607354036120e65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610cbc565b6002607355565b6000808080841561211f576121028786612cc7565b9350905061211430888760004361276d565b5061211f878661305b565b6121288761287d565b9350821561213e5761213b87878561317b565b91505b801561220057607a5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906121769089908590600401614039565b6020604051808303816000875af1158015612195573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b9919061401c565b6122005760405162461bcd60e51b81526020600482015260186024820152771dda5d1a191c985dc81d1c985b9cd9995c8819985a5b195960421b6044820152606401610cbc565b93509350935093565b6001600160a01b03831660009081526006602090815260408083205460099092529091205490838210801561223e5750834310155b612248578161224a565b835b9150600083431161225b574361225d565b835b90508481108061226d5750838310155b1561227857506122f9565b60006122848483613f11565b6001600160a01b0388166000908152600a6020526040812054919250906122ab9083613ef2565b6001600160a01b0389166000908152600560205260409020549091506122dc82676765c793fa10079d601b1b613ef2565b6122e69190613f3a565b6122f09085613fcb565b93508294505050505b935093915050565b603e5460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de69160048083019260209291908290030181865afa15801561234a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236e9190613f88565b6001600160a01b0316146123c45760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f646044820152606401610cbc565b565b6123d28260004361336c565b6123da610b6e565b6123e49082613f3a565b6001600160a01b039092166000908152600a602052604090209190915550565b607754600090158061242057506075546001600160801b031643145b1561242c575060775490565b60755460009061245590612449906001600160801b031643613f11565b607954600f0b90611b7a565b60775490915061115890600f83900b90611d93565b6124726133e9565b600061247e838361342f565b905061248a8382613656565b61249830848360004361280a565b506124a28361287d565b50826001600160a01b03167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d836040516124de91815260200190565b60405180910390a2505050565b6124f3612554565b61250e816001600160801b0316670de0b6b3a7640000611b39565b607980546001600160801b0319166001600160801b039290921691909117905550565b60008160016125408286613fcb565b61254a9190613f11565b611b739190613f3a565b61255c612404565b607755607580546001600160801b031916436001600160801b0316179055565b6125846133e9565b6074805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586125b93390565b6040516125c69190613db7565b60405180910390a1565b6125d8613703565b6074805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336125b9565b60008160000361261857600080fd5b60006001600160c01b0384116126435782604085901b8161263b5761263b613f24565b049050612759565b60c084811c600160201b811061265b576020918201911c5b62010000811061266d576010918201911c5b610100811061267e576008918201911c5b6010811061268e576004918201911c5b6004811061269e576002918201911c5b600281106126ad576001820191505b60bf820360018603901c6001018260ff0387901b816126ce576126ce613f24565b0492506001600160801b038311156126e557600080fd5b608085901c83026001600160801b038616840260c088901c604089901b82811015612711576001820391505b608084901b92900382811015612728576001820391505b829003608084901c821461273e5761273e61424d565b88818161274d5761274d613f24565b04870196505050505050505b6001600160801b03811115611b7357600080fd5b600061277a86848461336c565b6001600160a01b038087166000908152600b60209081526040808320938916835292905220546127c190879087906127bc9088906001600160801b0316613f11565b61374c565b6001600160a01b0386166000908152600560205260409020546127e5908590613f11565b6001600160a01b03871660009081526005602052604090205550600195945050505050565b600061281786848461336c565b6001600160a01b038087166000908152600b602090815260408083209389168352929052205461285990879087906127bc9088906001600160801b0316613fcb565b6001600160a01b0386166000908152600560205260409020546127e5908590613fcb565b60408054905163bf40fac160e01b815260009130916001600160a01b039091169063bf40fac1906128b090600401614103565b602060405180830381865afa1580156128cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f19190613f88565b6001600160a01b03161480612a00575060408054905163bf40fac160e01b81526001600160a01b039091169063bf40fac19061292f90600401614263565b602060405180830381865afa15801561294c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129709190613f88565b604051632474521560e21b81527f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a660048201523060248201526001600160a01b0391909116906391d1485490604401602060405180830381865afa1580156129dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a00919061401c565b15612b3057612a1230836000436138c8565b90508015612b305760408054905163bf40fac160e01b81526001600160a01b039091169063bf40fac190612a4890600401614263565b602060405180830381865afa158015612a65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a899190613f88565b6001600160a01b03166340c10f1983836040518363ffffffff1660e01b8152600401612ab6929190614039565b6020604051808303816000875af1158015612ad5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af99190614052565b5060405181815233907f43848d0574703c28d68ae8958e0571521618f60c4bcacfb094cff2156eaae0f19060200160405180910390a25b919050565b6001600160a01b038316612b995760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cbc565b6001600160a01b038216612bfb5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cbc565b6001600160a01b03831660009081526020819052604090205481811015612c735760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610cbc565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290926000805160206142f2833981519152910160405180910390a3611f96565b600080612cd2612554565b6000612cdd85611af6565b9050600084118015612cef5750808411155b612d0b5760405162461bcd60e51b8152600401610cbc90613fde565b6000670de0b6b3a764000085612d1f6110ff565b612d299190613ef2565b612d339190613f3a565b90506000612d40876108f8565b905081811015612d505780612d52565b815b9350838211612d62576000612d6c565b612d6c8483613f11565b607554909550600160801b90046001600160801b0316851115612dce57607554600090612da990600160801b90046001600160801b031687613f11565b9050612db58186613fcb565b607554600160801b90046001600160801b031696509450505b60008211612e1e5760405162461bcd60e51b815260206004820152601f60248201527f6d696e207368617265732077697468647261772076616c75653a2031206764006044820152606401610cbc565b612e30670de0b6b3a764000083613ef2565b60778054600090612e42908490613f11565b909155505060758054869190601090612e6c908490600160801b90046001600160801b0316614287565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555083607560010160008282829054906101000a90046001600160801b0316612eb791906140bd565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b038916600090815260786020526040902080548793509091601091612f0c918591600160801b9004166140bd565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550600086612f3b610b97565b612f459190613f11565b905060008115612f8657612f61670de0b6b3a764000083613ef2565b607754612f7790670de0b6b3a764000090613ef2565b612f819190613f3a565b612f89565b60005b90506000871180612f9957508286145b80612fa2575081155b15612fdd576001600160a01b038916600090815260786020526040902080546001600160801b0319166001600160801b03831617905561304f565b612fe78886613f11565b670de0b6b3a7640000612ffa8886613f11565b6130049190613ef2565b61300e9190613f3a565b6130189082613f11565b6001600160a01b038a16600090815260786020526040902080546001600160801b0319166001600160801b03929092169190911790555b50505050509250929050565b6001600160a01b0382166130bb5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610cbc565b6001600160a01b0382166000908152602081905260409020548181101561312f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610cbc565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192916000805160206142f2833981519152910160405180910390a3505050565b60408054905163bf40fac160e01b815260009182916001600160a01b039091169063bf40fac1906131ae906004016142a7565b602060405180830381865afa1580156131cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ef9190613f88565b90506001600160a01b038116156132e75760408054905163bf40fac160e01b81526001600160a01b039091169063bf40fac19061322e906004016142a7565b602060405180830381865afa15801561324b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326f9190613f88565b6001600160a01b03166317eebf2185856040518363ffffffff1660e01b815260040161329c929190614039565b6020604051808303816000875af19250505080156132d7575060408051601f3d908101601f191682019092526132d491810190614052565b60015b6132e457600091506132e7565b91505b82821015613364576000613304866132ff8587613f11565b6139fd565b905061331430878360004361280a565b5061331f8682613656565b60408051858152602081018590526001600160a01b038816917ebf1ad6dc928dba623a6fa0f94a5a7066d3a4ea1fba064b71e9afe629b6fa1f910160405180910390a2505b509392505050565b6001600160a01b03831660009081526005602052604081205490036133a95750506001600160a01b03166000908152600960205260409020439055565b6000806133b7858585612209565b6001600160a01b0390961660009081526006602090815260408083209890985560099052959095209490945550505050565b60745460ff16156123c45760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610cbc565b6000613439612554565b6000821161347a5760405162461bcd60e51b815260206004820152600e60248201526d043616e6e6f74207374616b6520360941b6044820152606401610cbc565b6000613484610b97565b1161349a5761349561271083613ef2565b6134be565b6134a26110ff565b6134b4670de0b6b3a764000084613ef2565b6134be9190613f3a565b90506000811161350a5760405162461bcd60e51b81526020600482015260176024820152766d696e207374616b65203120736861726520707269636560481b6044820152606401610cbc565b61351383611af6565b1561358c578061352284611af6565b61352c9190613fcb565b6135346110ff565b61353e9083613ef2565b6001600160a01b0385166000908152607860205260409020546001600160801b031661356986611af6565b6135739190613ef2565b61357d9190613fcb565b6135879190613f3a565b6135a9565b8061359f670de0b6b3a764000084613ef2565b6135a99190613f3a565b6001600160a01b038416600090815260786020526040902080546001600160801b0319166001600160801b039283161790556075805484926010916135f7918591600160801b9004166140bd565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550670de0b6b3a76400006001600160801b0316826136389190613ef2565b6077805460009061364a908490613fcb565b90915550909392505050565b6001600160a01b0382166136ac5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610cbc565b80600260008282546136be9190613fcb565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481526000805160206142f2833981519152910160405180910390a35050565b60745460ff166123c45760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610cbc565b6001600160a01b038084166000908152600b6020908152604080832093861683529290522080546001600160801b0316156138585780546001600160a01b03851660009081526006602052604081205490916001600160801b03600160801b8204811692676765c793fa10079d601b1b926137c79216613ef2565b6137d19190613f3a565b6137db9190613f11565b60018301549091506137f79082906001600160801b03166140bd565b6001830180546001600160801b0319166001600160801b03929092169190911790556001600160a01b03851660009081526008602052604090205461383d908290613fcb565b6001600160a01b038616600090815260086020526040902055505b80546001600160801b0319166001600160801b0383161781556001600160a01b038416600090815260066020526040902054676765c793fa10079d601b1b906138a19084613ef2565b6138ab9190613f3a565b81546001600160801b03918216600160801b029116179055505050565b60006138d585848461336c565b6001600160a01b038086166000908152600b602090815260408083209388168352929052205461391190869086906001600160801b031661374c565b6001600160a01b038581166000908152600b6020908152604080832093881683529290522060010180546001600160801b038082169283929091601091613961918591600160801b9004166140bd565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b038881166000818152600b60209081526040808320948c16835293815283822060010180546001600160801b0319169055918152600790915220546139d1925090831690613fcb565b6001600160a01b0387166000908152600760205260409020556001600160801b03169050949350505050565b600081600003613a0f57506000610a10565b6000613a19610b97565b11613a2f57613a2a61271083613ef2565b613a53565b613a376110ff565b613a49670de0b6b3a764000084613ef2565b613a539190613f3a565b607680549192508391600090613a739084906001600160801b0316614287565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550670de0b6b3a76400006001600160801b031682613ab49190613ef2565b60778054600090613ac6908490613fcb565b90915550506001600160a01b03831660009081526078602052604090208054839190601090613b06908490600160801b90046001600160801b0316614287565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b03851660009081526078602052604090205416159050610a1057600081613b5385611af6565b613b5d9190613fcb565b613b6f670de0b6b3a764000085613ef2565b613b799190613f3a565b6001600160a01b0385166000908152607860205260409020549091506001600160801b0316811015613bd7576001600160a01b038416600090815260786020526040902054613bd29082906001600160801b0316613f11565b613bda565b60005b6001600160a01b038516600090815260786020526040902080546001600160801b03929092166001600160801b03199092169190911790555092915050565b6001600160a01b0381168114610ecb57600080fd5b600060208284031215613c4057600080fd5b8135611b7381613c19565b60005b83811015613c66578181015183820152602001613c4e565b50506000910152565b60008151808452613c87816020860160208601613c4b565b601f01601f19169290920160200192915050565b602081526000611b736020830184613c6f565b60008060408385031215613cc157600080fd5b8235613ccc81613c19565b946020939093013593505050565b600080600060608486031215613cef57600080fd5b8335613cfa81613c19565b92506020840135613d0a81613c19565b929592945050506040919091013590565b600060208284031215613d2d57600080fd5b5035919050565b60008060408385031215613d4757600080fd5b8235613d5281613c19565b91506020830135613d6281613c19565b809150509250929050565b60008060008060808587031215613d8357600080fd5b8435613d8e81613c19565b935060208501359250604085013591506060850135613dac81613c19565b939692955090935050565b6001600160a01b0391909116815260200190565b6001600160801b0391909116815260200190565b60008060008060608587031215613df557600080fd5b8435613e0081613c19565b93506020850135925060408501356001600160401b0380821115613e2357600080fd5b818701915087601f830112613e3757600080fd5b813581811115613e4657600080fd5b886020828501011115613e5857600080fd5b95989497505060200194505050565b80356001600160801b0381168114612b3057600080fd5b600060208284031215613e9057600080fd5b611b7382613e67565b8015158114610ecb57600080fd5b60008060408385031215613eba57600080fd5b8235613ec581613e99565b9150613ed360208401613e67565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615613f0c57613f0c613edc565b500290565b81810381811115610a1057610a10613edc565b634e487b7160e01b600052601260045260246000fd5b600082613f4957613f49613f24565b500490565b600181811c90821680613f6257607f821691505b602082108103613f8257634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215613f9a57600080fd5b8151611b7381613c19565b60006001600160801b0383811680613fbf57613fbf613f24565b92169190910492915050565b80820180821115610a1057610a10613edc565b6020808252600a90820152696e6f2062616c616e636560b01b604082015260600190565b6001600160a01b0392831681529116602082015260400190565b60006020828403121561402e57600080fd5b8151611b7381613e99565b6001600160a01b03929092168252602082015260400190565b60006020828403121561406457600080fd5b5051919050565b60006001600160801b038281168482168115158284048211161561409157614091613edc565b02949350505050565b600063ffffffff8083168185168183048111821515161561409157614091613edc565b6001600160801b038181168382160190808211156140dd576140dd613edc565b5092915050565b600c81526b4744414f5f5354414b494e4760a01b602082015260400190565b602081526000610a10602083016140e4565b600060018060a01b038087168352608060208401526141376080840187613c6f565b94166040830152506060015292915050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561417257600080fd5b825161417d81613e99565b60208401519092506001600160401b038082111561419a57600080fd5b818501915085601f8301126141ae57600080fd5b8151818111156141c0576141c0614149565b604051601f8201601f19908116603f011681019083821181831017156141e8576141e8614149565b8160405282815288602084870101111561420157600080fd5b614212836020830160208801613c4b565b80955050505050509250929050565b604081526000614233604083016140e4565b6001600160a01b0393909316602092909201919091525090565b634e487b7160e01b600052600160045260246000fd5b6020808252600a90820152692922a82aaa20aa24a7a760b11b604082015260600190565b6001600160801b038281168282160390808211156140dd576140dd613edc565b60208082526010908201526f26a4a72a212aa9272faba920a82822a960811b60408201526060019056fe1bda1e84e6af3f7391d288a491b734032ae9ea89ad3ebbc213d352456ab51a2bddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c792e249b8031dbddcb1045615d9a1f1bdd435422dd5cb3eb167d71ab160b58864736f6c63430008100033";
1403
+ "0x60806040523480156200001157600080fd5b5060405162004eb038038062004eb0833981016040819052620000349162000920565b6040518060400160405280600a815260200169472420536176696e677360b01b815250604051806040016040528060048152602001631cdd91c960e21b815250816003908162000085919062000a2e565b50600462000094828262000a2e565b50506001607355506074805460ff19169055603c63ffffffff82161115620001025760405162461bcd60e51b815260206004820152601c60248201527f6d61782074776f206d6f6e74687320756e74696c207570677261646500000000604482015260640160405180910390fd5b6200010d836200022e565b620001188462000278565b607b80546001600160801b0319166001600160801b03841617905560408054905163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa15801562000197573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001bd919062000afa565b607a80546001600160a01b03929092166001600160a01b0319909216919091179055306000908152600a6020526040812055607b80546001600160801b03428116600160801b029116179055607c805463ffffffff90921663ffffffff199092169190911790555062000b68915050565b62000238620002a0565b620002556001600160801b038216670de0b6b3a7640000620002ca565b607980546001600160801b0319166001600160801b039290921691909117905550565b604080546001600160a01b0319166001600160a01b0383161790556200029d62000311565b50565b620002aa6200043e565b607755607580546001600160801b031916436001600160801b0316179055565b600081600003620002da57600080fd5b6000620002e88484620004b2565b905060016001607f1b036001600160801b03821611156200030857600080fd5b90505b92915050565b60408054905163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa15801562000375573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039b919062000afa565b603e80546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa158015620003f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041c919062000afa565b603f80546001600160a01b0319166001600160a01b0392909216919091179055565b60775460009015806200045b57506075546001600160801b031643145b1562000468575060775490565b607554600090620004959062000488906001600160801b03164362000b1a565b607954600f0b9062000630565b607754909150620004ac90600f83900b906200087d565b91505090565b600081600003620004c257600080fd5b60006001600160c01b038411620004f25782604085901b81620004e957620004e962000b3c565b0490506200061b565b60c084811c64010000000081106200050c576020918201911c5b6201000081106200051f576010918201911c5b610100811062000531576008918201911c5b6010811062000542576004918201911c5b6004811062000553576002918201911c5b6002811062000563576001820191505b60bf820360018603901c6001018260ff0387901b8162000587576200058762000b3c565b0492506001600160801b038311156200059f57600080fd5b608085901c83026001600160801b038616840260c088901c604089901b82811015620005cc576001820391505b608084901b92900382811015620005e4576001820391505b829003608084901c8214620005fd57620005fd62000b52565b8881816200060f576200060f62000b3c565b04870196505050505050505b6001600160801b038111156200030857600080fd5b600080600084600f0b1280156200064a5750826001166001145b905060008085600f0b1262000660578462000665565b846000035b6001600160801b03169050600160801b6801000000000000000082116200070757603f82901b91505b8415620006fe576001851615620006a5578102607f1c5b908002607f1c906002851615620006bc578102607f1c5b908002607f1c906004851615620006d3578102607f1c5b908002607f1c906008851615620006ea578102607f1c5b60049490941c93908002607f1c906200068e565b60401c62000833565b603f6c010000000000000000000000008310156200072b5760209290921b91601f19015b600160701b831015620007445760109290921b91600f19015b600160781b8310156200075d5760089290921b91600719015b6001607c1b831015620007765760049290921b91600319015b6001607e1b8310156200078f5760029290921b91600119015b6001607f1b831015620007a85760019290921b91600019015b60005b86156200081b5760408210620007c057600080fd5b6001871615620007e857918302607f1c918101600160801b831115620007e857600192831c92015b928002607f1c9260019190911b90600160801b84106200080e57600193841c9391909101905b600187901c9650620007ab565b604081106200082957600080fd5b6040039190911c90505b60008362000842578162000847565b816000035b905060016001607f1b0319811280159062000869575060016001607f1b038113155b6200087357600080fd5b9695505050505050565b60008160000362000891575060006200030b565b600083600f0b1215620008a357600080fd5b600f83900b6001600160801b038316810260401c90608084901c026001600160c01b03811115620008d357600080fd5b60401b8119811115620008e557600080fd5b019392505050565b6001600160a01b03811681146200029d57600080fd5b80516001600160801b03811681146200091b57600080fd5b919050565b600080600080608085870312156200093757600080fd5b84516200094481620008ed565b9350620009546020860162000903565b9250620009646040860162000903565b9150606085015163ffffffff811681146200097e57600080fd5b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620009b457607f821691505b602082108103620009d557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000a2957600081815260208120601f850160051c8101602086101562000a045750805b601f850160051c820191505b8181101562000a255782815560010162000a10565b5050505b505050565b81516001600160401b0381111562000a4a5762000a4a62000989565b62000a628162000a5b84546200099f565b84620009db565b602080601f83116001811462000a9a576000841562000a815750858301515b600019600386901b1c1916600185901b17855562000a25565b600085815260208120601f198616915b8281101562000acb5788860151825594840194600190910190840162000aaa565b508582101562000aea5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121562000b0d57600080fd5b81516200030881620008ed565b818103818111156200030b57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b6143388062000b786000396000f3fe608060405234801561001057600080fd5b50600436106102b35760003560e01c80628cc262146102b857806306fdde03146102de578063095ea7b3146102f35780630c1cd7f31461031657806318160ddd146103335780631b3c90a81461033b57806320f902ae14610345578063213b329e1461036a57806322022a291461037257806322dec37b1461037a57806323b872dd1461039a57806325d5971f146103ad5780632e42a896146103c0578063313ce5671461044557806331903da1146104545780633659cfe61461047457806336de95f614610487578063395093511461049a578063399080ec146104ad5780633d9a12cc146104c05780633e6326fc146104d35780634162169f146104f357806347b3e7e8146105065780634f1db7f614610526578063576ce9fd146105395780635aef7de61461054c5780635c975abb1461055f5780635fc5e0201461056a5780636eb629841461058657806370a0823114610599578063777d6641146105ac5780637bcbb9ff146105cc578063846141b3146105df57806387269729146105ff57806395d89b4114610607578063a457c2d71461060f578063a4c0ed3614610622578063a694fc3a14610635578063a9059cbb14610648578063aa3258211461065b578063aaf5eb681461056a578063aba78c161461066e578063b20b9979146106c2578063b811540e146106d5578063b86543ba146106e8578063bf8e9b6e146106fb578063c671062914610703578063c7b8981c14610716578063ceb8b01c1461071e578063cf09e0d014610726578063d55ec69714610740578063d80528ae14610748578063d853365f146107a7578063dd62ed3e146107b0578063e087788e146107c3578063e1758bd8146107d6578063ebe91644146107de578063f5eb42dc146108bf578063fc0c546a146108d2578063fea6f4f5146108e5575b600080fd5b6102cb6102c6366004613c2e565b6108f8565b6040519081526020015b60405180910390f35b6102e661096a565b6040516102d59190613c9b565b610306610301366004613cae565b6109fc565b60405190151581526020016102d5565b61031e610a16565b604080519283526020830191909152016102d5565b6002546102cb565b610343610a47565b005b607c546103559063ffffffff1681565b60405163ffffffff90911681526020016102d5565b6102cb610b6e565b6102cb610b97565b6102cb610388366004613c2e565b60076020526000908152604090205481565b6103066103a8366004613cda565b610ba7565b61031e6103bb366004613d1b565b610bcb565b6104126103ce366004613d34565b600b602090815260009283526040808420909152908252902080546001909101546001600160801b0380831692600160801b90819004821692808316929190041684565b604080516001600160801b03958616815293851660208501529184169183019190915290911660608201526080016102d5565b604051601281526020016102d5565b6102cb610462366004613c2e565b60086020526000908152604090205481565b610343610482366004613c2e565b610c87565b6102cb610495366004613c2e565b610ece565b6103066104a8366004613cae565b610eff565b61031e6104bb366004613c2e565b610f21565b6102cb6104ce366004613d6d565b610f37565b6040546104e6906001600160a01b031681565b6040516102d59190613db7565b603e546104e6906001600160a01b031681565b6102cb610514366004613c2e565b600a6020526000908152604090205481565b61031e610534366004613d34565b61102b565b6102cb610547366004613c2e565b61106e565b603f546104e6906001600160a01b031681565b60745460ff16610306565b610579670de0b6b3a764000081565b6040516102d59190613dcb565b610343610594366004613d1b565b611092565b6102cb6105a7366004613c2e565b6110c9565b6079546105b990600f0b81565b604051600f9190910b81526020016102d5565b6102cb6105da366004613c2e565b6110e4565b6102cb6105ed366004613c2e565b60096020526000908152604090205481565b6102cb6110ff565b6102e661115e565b61030661061d366004613cae565b61116d565b610306610630366004613ddf565b6111e8565b610343610643366004613d1b565b611243565b610306610656366004613cae565b611337565b6102cb610669366004613c2e565b611345565b6106a261067c366004613c2e565b6078602052600090815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b039384168152929091166020830152016102d5565b6103436106d0366004613e7e565b611361565b6102cb6106e3366004613d1b565b6113d7565b607b54610579906001600160801b031681565b61031e611415565b61031e610711366004613c2e565b6114b0565b61031e6114d2565b6102cb6114f7565b607b5461057990600160801b90046001600160801b031681565b61034361153b565b607554607654607754610772926001600160801b0380821693600160801b90920481169291169084565b6040516102d594939291906001600160801b039485168152928416602084015292166040820152606081019190915260800190565b61057961271081565b6102cb6107be366004613d34565b611a19565b6103436107d1366004613e7e565b611a44565b6104e6611a6e565b61087c6107ec366004613c2e565b60408051608081018252600080825260208201819052918101829052606081019190915250306000908152600b602090815260408083206001600160a01b0394909416835292815290829020825160808101845281546001600160801b038082168352600160801b9182900481169483019490945260019092015480841694820194909452920416606082015290565b6040516102d5919081516001600160801b039081168252602080840151821690830152604080840151821690830152606092830151169181019190915260800190565b6102cb6108cd366004613c2e565b611af6565b607a546104e6906001600160a01b031681565b6103436108f3366004613ea7565b611b01565b60008061090483611af6565b905060006109106110ff565b9050600061091d8561106e565b905081811161092c578061092e565b815b9050670de0b6b3a76400006109438483613ef2565b61094d8585613ef2565b6109579190613f09565b6109619190613f32565b95945050505050565b60606003805461097990613f46565b80601f01602080910402602001604051908101604052809291908181526020018280546109a590613f46565b80156109f25780601f106109c7576101008083540402835291602001916109f2565b820191906000526020600020905b8154815290600101906020018083116109d557829003601f168201915b5050505050905090565b600033610a0a818585611b39565b60019150505b92915050565b306000908152600a6020526040812054607954909190610a4190600f0b670de0b6b3a7640000611c5d565b90509091565b60408054905163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa158015610aaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ace9190613f80565b603e80546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa158015610b28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4c9190613f80565b603f80546001600160a01b0319166001600160a01b0392909216919091179055565b607b54600090610b8990600c906001600160801b0316613f9d565b6001600160801b0316905090565b6000610ba260025490565b905090565b600033610bb5858285611cc8565b610bc0858585611d42565b506001949350505050565b600080610bd6611e3a565b6000610be133611af6565b9050600080610bf1333388611e93565b92975090955090925090506000610c0733611af6565b610c119085613f09565b9050337fb4445b5ca5d925c0bf5fb70a192f888574bff35d4da72ff1c5dae14df544310c82610c408587613fc3565b60408051928352602083019190915281018a9052606081018990526080810188905260a0810185905260c00160405180910390a250505050610c826001607355565b915091565b610c8f611e3a565b6000610c9a33611af6565b905060008111610cc55760405162461bcd60e51b8152600401610cbc90613fd6565b60405180910390fd5b603e54603f54604051639be2faed60e01b81526001600160a01b0392831692639be2faed92610cfc92879290911690600401613ffa565b602060405180830381865afa158015610d19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3d9190614014565b610d845760405162461bcd60e51b81526020600482015260186024820152776e6f742044414f20617070726f766564207570677261646560401b6044820152606401610cbc565b600080600080610d95338787611e93565b9350935093509350828214610de55760405162461bcd60e51b8152602060048201526016602482015275756e61626c6520746f206d696e74207265776172647360501b6044820152606401610cbc565b60006001600160a01b03871663753e88e533610e018786613fc3565b6040518363ffffffff1660e01b8152600401610e1e929190614031565b6020604051808303816000875af1158015610e3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e61919061404a565b9050337f9812190ad3df6de1c4b9a4acfdb8a7d84070af20c1fffd053968b2f3c2260416610e8f8585613fc3565b60408051918252602082018a90528101889052606081018790526080810184905260a00160405180910390a2505050505050610ecb6001607355565b50565b6000670de0b6b3a7640000610ee283611af6565b610eeb8461106e565b610ef59190613ef2565b610a109190613f32565b600033610a0a818585610f128383611a19565b610f1c9190613fc3565b611b39565b600080610f2e308461102b565b91509150915091565b6001600160a01b038085166000818152600b602090815260408083209486168352938152838220845160808101865281546001600160801b038082168352600160801b91829004811683860152600190930154808416838901520490911660608201529282526005905291822054829015611021576000610fb9888888611faf565b91505082604001516001600160801b0316915082602001516001600160801b0316676765c793fa10079d601b1b8285600001516001600160801b0316610fff9190613ef2565b6110099190613f32565b6110139190613f09565b61101d9083613fc3565b9150505b9695505050505050565b6001600160a01b039182166000818152600b60209081526040808320949095168252928352838120549181526005909252919020546001600160801b0390911691565b6001600160a01b03166000908152607860205260409020546001600160801b031690565b61109a6120a7565b6110a4308261216c565b6040518181526000805160206142c3833981519152906020015b60405180910390a150565b6001600160a01b031660009081526020819052604090205490565b6001600160a01b031660009081526006602052604090205490565b60008061110a6121aa565b9050611114610b97565b1561115557670de0b6b3a764000061112a610b97565b6111349190613ef2565b611146670de0b6b3a764000083613ef2565b6111509190613f32565b611158565b60005b91505090565b60606004805461097990613f46565b6000338161117b8286611a19565b9050838110156111db5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610cbc565b610bc08286868403611b39565b607a546000906001600160a01b031633146112395760405162461bcd60e51b81526020600482015260116024820152703ab739bab83837b93a32b2103a37b5b2b760791b6044820152606401610cbc565b610bc08585612210565b607a546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561129a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112be9190614014565b61132d5760405162461bcd60e51b815260206004820152603a60248201527f7472616e7366657246726f6d206661696c65642c206d616b652073757265207960448201527937ba9030b8383937bb32b2103a37b5b2b7103a3930b739b332b960311b6064820152608401610cbc565b610ecb3382612210565b600033610a0a818585611d42565b6000670de0b6b3a764000061135983611af6565b610eeb6110ff565b6113696120a7565b61137281612291565b607954607b54612ee09161139e9161139691600f0b906001600160801b03166122d7565b612710611c5d565b106113a857600080fd5b7f5e47ff33a7f14c29b3d9d622df796f19d1af1adf178ff7e266844cc8362457c0816040516110be9190613dcb565b6000610a106113e46110ff565b6127106113f9670de0b6b3a764000086613ef2565b6114039190613ef2565b61140d9190613f32565b6127106124f0565b600080611421306110e4565b915061142c60025490565b156114a957670de0b6b3a764000061144360025490565b61144d9190613ef2565b607554670de0b6b3a764000090611475908290600160801b90046001600160801b0316614063565b6001600160801b03166114866121aa565b6114909190613f09565b61149a9190613ef2565b6114a49190613f32565b610a41565b5090600090565b6000806114c03060004386610f37565b91506114cb836108f8565b9050915091565b60008060006114e36106e3336108f8565b90506114ee81610bcb565b92509250509091565b60755460009061152090670de0b6b3a764000090600160801b90046001600160801b0316614063565b6001600160801b03166115316121aa565b610ba29190613f09565b607c546115519063ffffffff166201518061408e565b607b546115749163ffffffff1690600160801b90046001600160801b03166140ae565b6001600160801b0316421180156115fe5750603e54603f54604051639be2faed60e01b81526001600160a01b0392831692639be2faed926115bd92309290911690600401613ffa565b602060405180830381865afa1580156115da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fe9190614014565b6116475760405162461bcd60e51b815260206004820152601a6024820152796e6f7420646561646c696e65206f72206e6f7420736368656d6560301b6044820152606401610cbc565b61165b3066d3c21bcecceda160191b61216c565b60405166d3c21bcecceda160191b81526000805160206142c38339815191529060200160405180910390a160408054905163bf40fac160e01b81526000916001600160a01b03169063bf40fac1906116b5906004016140f4565b602060405180830381865afa1580156116d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116f69190613f80565b905060006001600160a01b0382161561188457816001600160a01b031663c7b8981c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611749573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176d919061404a565b50603e54604051600060248201526001600160a01b039091169063d1b7089a90849060440160408051601f198184030181529181526020820180516001600160e01b03166363b13cd160e11b179052603f54905160e085901b6001600160e01b03191681526117ed9392916001600160a01b031690600090600401614106565b6000604051808303816000875af115801561180c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118349190810190614150565b509050806118845760405162461bcd60e51b815260206004820181905260248201527f63616c6c696e67207365744d6f6e74686c7952657761726473206661696c65646044820152606401610cbc565b603e546040805490516001600160a01b039283169263d1b7089a9216906118af903090602401614212565b60408051601f198184030181529181526020820180516001600160e01b0316639b2ea4bd60e01b179052603f54905160e085901b6001600160e01b031916815261190a9392916001600160a01b031690600090600401614106565b6000604051808303816000875af1158015611929573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119519190810190614150565b5090508061199d5760405162461bcd60e51b815260206004820152601960248201527818d85b1b1a5b99c81cd95d1059191c995cdcc819985a5b1959603a1b6044820152606401610cbc565b603e54603f54604051636c525b1360e01b81526001600160a01b0392831692636c525b13926119d192911690600401613db7565b6020604051808303816000875af11580156119f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a149190614014565b505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b611a4c6120a7565b607b80546001600160801b0319166001600160801b0392909216919091179055565b60408054905163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015611ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba29190613f80565b6000610a10826110c9565b611b0961251a565b611b116120a7565b8115611b2457611b1f612542565b611b2c565b611b2c612596565b611b3581611361565b5050565b6001600160a01b038316611b9b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cbc565b6001600160a01b038216611bfc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cbc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600081600003611c6f57506000610a10565b600083600f0b1215611c8057600080fd5b600f83900b6001600160801b038316810260401c90608084901c026001600160c01b03811115611caf57600080fd5b60401b8119811115611cc057600080fd5b019392505050565b6000611cd48484611a19565b90506000198114611d3c5781811015611d2f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610cbc565b611d3c8484848403611b39565b50505050565b611d503084836000436125cf565b50611d5f30838360004361266c565b506000611d6b836110c9565b9050611d778282613fc3565b6001600160a01b038516600090815260786020526040902054611da49084906001600160801b0316613ef2565b6001600160a01b038516600090815260786020526040902054611dd19084906001600160801b0316613ef2565b611ddb9190613fc3565b611de59190613f32565b6001600160a01b038416600090815260786020526040902080546001600160801b0319166001600160801b0392909216919091179055611e24846126df565b50611e2e836126df565b50611d3c848484612997565b600260735403611e8c5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610cbc565b6002607355565b60008080808415611ec557611ea88786612b29565b93509050611eba3088876000436125cf565b50611ec58786612ebd565b611ece876126df565b93508215611ee457611ee1878785612fdd565b91505b8015611fa657607a5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90611f1c9089908590600401614031565b6020604051808303816000875af1158015611f3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f5f9190614014565b611fa65760405162461bcd60e51b81526020600482015260186024820152771dda5d1a191c985dc81d1c985b9cd9995c8819985a5b195960421b6044820152606401610cbc565b93509350935093565b6001600160a01b038316600090815260066020908152604080832054600990925290912054908382108015611fe45750834310155b611fee5781611ff0565b835b915060008343116120015743612003565b835b9050848110806120135750838310155b1561201e575061209f565b600061202a8483613f09565b6001600160a01b0388166000908152600a6020526040812054919250906120519083613ef2565b6001600160a01b03891660009081526005602052604090205490915061208282676765c793fa10079d601b1b613ef2565b61208c9190613f32565b6120969085613fc3565b93508294505050505b935093915050565b603e5460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de69160048083019260209291908290030181865afa1580156120f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121149190613f80565b6001600160a01b03161461216a5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f646044820152606401610cbc565b565b612178826000436131ce565b612180610b6e565b61218a9082613f32565b6001600160a01b039092166000908152600a602052604090209190915550565b60775460009015806121c657506075546001600160801b031643145b156121d2575060775490565b6075546000906121fb906121ef906001600160801b031643613f09565b607954600f0b906122d7565b60775490915061115890600f83900b90611c5d565b61221861324b565b60006122248383613291565b905061223083826134b8565b61223e30848360004361266c565b50612248836126df565b50826001600160a01b03167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d8360405161228491815260200190565b60405180910390a2505050565b61229961251a565b6122b4816001600160801b0316670de0b6b3a7640000613565565b607980546001600160801b0319166001600160801b039290921691909117905550565b600080600084600f0b1280156122f05750826001166001145b905060008085600f0b126123045784612309565b846000035b6001600160801b03169050600160801b600160401b821161239e57603f82901b91505b8415612396576001851615612341578102607f1c5b908002607f1c906002851615612357578102607f1c5b908002607f1c90600485161561236d578102607f1c5b908002607f1c906008851615612383578102607f1c5b60049490941c93908002607f1c9061232c565b60401c6124b4565b603f600160601b8310156123b85760209290921b91601f19015b600160701b8310156123d05760109290921b91600f19015b600160781b8310156123e85760089290921b91600719015b6001607c1b8310156124005760049290921b91600319015b6001607e1b8310156124185760029290921b91600119015b6001607f1b8310156124305760019290921b91600019015b60005b861561249d576040821061244657600080fd5b600187161561246c57918302607f1c918101600160801b83111561246c57600192831c92015b928002607f1c9260019190911b90600160801b841061249157600193841c9391909101905b600187901c9650612433565b604081106124aa57600080fd5b6040039190911c90505b6000836124c157816124c6565b816000035b905060016001607f1b031981128015906124e7575060016001607f1b038113155b61102157600080fd5b60008160016124ff8286613fc3565b6125099190613f09565b6125139190613f32565b9392505050565b6125226121aa565b607755607580546001600160801b031916436001600160801b0316179055565b61254a61324b565b6074805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861257f3390565b60405161258c9190613db7565b60405180910390a1565b61259e61359f565b6074805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa3361257f565b60006125dc8684846131ce565b6001600160a01b038087166000908152600b6020908152604080832093891683529290522054612623908790879061261e9088906001600160801b0316613f09565b6135e8565b6001600160a01b038616600090815260056020526040902054612647908590613f09565b6001600160a01b03871660009081526005602052604090205550600195945050505050565b60006126798684846131ce565b6001600160a01b038087166000908152600b60209081526040808320938916835292905220546126bb908790879061261e9088906001600160801b0316613fc3565b6001600160a01b038616600090815260056020526040902054612647908590613fc3565b60408054905163bf40fac160e01b815260009130916001600160a01b039091169063bf40fac190612712906004016140f4565b602060405180830381865afa15801561272f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127539190613f80565b6001600160a01b03161480612862575060408054905163bf40fac160e01b81526001600160a01b039091169063bf40fac1906127919060040161423e565b602060405180830381865afa1580156127ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d29190613f80565b604051632474521560e21b81527f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a660048201523060248201526001600160a01b0391909116906391d1485490604401602060405180830381865afa15801561283e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128629190614014565b15612992576128743083600043613764565b905080156129925760408054905163bf40fac160e01b81526001600160a01b039091169063bf40fac1906128aa9060040161423e565b602060405180830381865afa1580156128c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128eb9190613f80565b6001600160a01b03166340c10f1983836040518363ffffffff1660e01b8152600401612918929190614031565b6020604051808303816000875af1158015612937573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295b919061404a565b5060405181815233907f43848d0574703c28d68ae8958e0571521618f60c4bcacfb094cff2156eaae0f19060200160405180910390a25b919050565b6001600160a01b0383166129fb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cbc565b6001600160a01b038216612a5d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cbc565b6001600160a01b03831660009081526020819052604090205481811015612ad55760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610cbc565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290926000805160206142e3833981519152910160405180910390a3611d3c565b600080612b3461251a565b6000612b3f85611af6565b9050600084118015612b515750808411155b612b6d5760405162461bcd60e51b8152600401610cbc90613fd6565b6000670de0b6b3a764000085612b816110ff565b612b8b9190613ef2565b612b959190613f32565b90506000612ba2876108f8565b905081811015612bb25780612bb4565b815b9350838211612bc4576000612bce565b612bce8483613f09565b607554909550600160801b90046001600160801b0316851115612c3057607554600090612c0b90600160801b90046001600160801b031687613f09565b9050612c178186613fc3565b607554600160801b90046001600160801b031696509450505b60008211612c805760405162461bcd60e51b815260206004820152601f60248201527f6d696e207368617265732077697468647261772076616c75653a2031206764006044820152606401610cbc565b612c92670de0b6b3a764000083613ef2565b60778054600090612ca4908490613f09565b909155505060758054869190601090612cce908490600160801b90046001600160801b0316614262565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555083607560010160008282829054906101000a90046001600160801b0316612d1991906140ae565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b038916600090815260786020526040902080548793509091601091612d6e918591600160801b9004166140ae565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550600086612d9d610b97565b612da79190613f09565b905060008115612de857612dc3670de0b6b3a764000083613ef2565b607754612dd990670de0b6b3a764000090613ef2565b612de39190613f32565b612deb565b60005b90506000871180612dfb57508286145b80612e04575081155b15612e3f576001600160a01b038916600090815260786020526040902080546001600160801b0319166001600160801b038316179055612eb1565b612e498886613f09565b670de0b6b3a7640000612e5c8886613f09565b612e669190613ef2565b612e709190613f32565b612e7a9082613f09565b6001600160a01b038a16600090815260786020526040902080546001600160801b0319166001600160801b03929092169190911790555b50505050509250929050565b6001600160a01b038216612f1d5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610cbc565b6001600160a01b03821660009081526020819052604090205481811015612f915760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610cbc565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192916000805160206142e3833981519152910160405180910390a3505050565b60408054905163bf40fac160e01b815260009182916001600160a01b039091169063bf40fac19061301090600401614282565b602060405180830381865afa15801561302d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130519190613f80565b90506001600160a01b038116156131495760408054905163bf40fac160e01b81526001600160a01b039091169063bf40fac19061309090600401614282565b602060405180830381865afa1580156130ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130d19190613f80565b6001600160a01b03166317eebf2185856040518363ffffffff1660e01b81526004016130fe929190614031565b6020604051808303816000875af1925050508015613139575060408051601f3d908101601f191682019092526131369181019061404a565b60015b6131465760009150613149565b91505b828210156131c6576000613166866131618587613f09565b613899565b905061317630878360004361266c565b5061318186826134b8565b60408051858152602081018590526001600160a01b038816917ebf1ad6dc928dba623a6fa0f94a5a7066d3a4ea1fba064b71e9afe629b6fa1f910160405180910390a2505b509392505050565b6001600160a01b038316600090815260056020526040812054900361320b5750506001600160a01b03166000908152600960205260409020439055565b600080613219858585611faf565b6001600160a01b0390961660009081526006602090815260408083209890985560099052959095209490945550505050565b60745460ff161561216a5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610cbc565b600061329b61251a565b600082116132dc5760405162461bcd60e51b815260206004820152600e60248201526d043616e6e6f74207374616b6520360941b6044820152606401610cbc565b60006132e6610b97565b116132fc576132f761271083613ef2565b613320565b6133046110ff565b613316670de0b6b3a764000084613ef2565b6133209190613f32565b90506000811161336c5760405162461bcd60e51b81526020600482015260176024820152766d696e207374616b65203120736861726520707269636560481b6044820152606401610cbc565b61337583611af6565b156133ee578061338484611af6565b61338e9190613fc3565b6133966110ff565b6133a09083613ef2565b6001600160a01b0385166000908152607860205260409020546001600160801b03166133cb86611af6565b6133d59190613ef2565b6133df9190613fc3565b6133e99190613f32565b61340b565b80613401670de0b6b3a764000084613ef2565b61340b9190613f32565b6001600160a01b038416600090815260786020526040902080546001600160801b0319166001600160801b03928316179055607580548492601091613459918591600160801b9004166140ae565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550670de0b6b3a76400006001600160801b03168261349a9190613ef2565b607780546000906134ac908490613fc3565b90915550909392505050565b6001600160a01b03821661350e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610cbc565b80600260008282546135209190613fc3565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481526000805160206142e3833981519152910160405180910390a35050565b60008160000361357457600080fd5b60006135808484613ab5565b905060016001607f1b036001600160801b038216111561251357600080fd5b60745460ff1661216a5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610cbc565b6001600160a01b038084166000908152600b6020908152604080832093861683529290522080546001600160801b0316156136f45780546001600160a01b03851660009081526006602052604081205490916001600160801b03600160801b8204811692676765c793fa10079d601b1b926136639216613ef2565b61366d9190613f32565b6136779190613f09565b60018301549091506136939082906001600160801b03166140ae565b6001830180546001600160801b0319166001600160801b03929092169190911790556001600160a01b0385166000908152600860205260409020546136d9908290613fc3565b6001600160a01b038616600090815260086020526040902055505b80546001600160801b0319166001600160801b0383161781556001600160a01b038416600090815260066020526040902054676765c793fa10079d601b1b9061373d9084613ef2565b6137479190613f32565b81546001600160801b03918216600160801b029116179055505050565b60006137718584846131ce565b6001600160a01b038086166000908152600b60209081526040808320938816835292905220546137ad90869086906001600160801b03166135e8565b6001600160a01b038581166000908152600b6020908152604080832093881683529290522060010180546001600160801b0380821692839290916010916137fd918591600160801b9004166140ae565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b038881166000818152600b60209081526040808320948c16835293815283822060010180546001600160801b03191690559181526007909152205461386d925090831690613fc3565b6001600160a01b0387166000908152600760205260409020556001600160801b03169050949350505050565b6000816000036138ab57506000610a10565b60006138b5610b97565b116138cb576138c661271083613ef2565b6138ef565b6138d36110ff565b6138e5670de0b6b3a764000084613ef2565b6138ef9190613f32565b60768054919250839160009061390f9084906001600160801b0316614262565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550670de0b6b3a76400006001600160801b0316826139509190613ef2565b60778054600090613962908490613fc3565b90915550506001600160a01b038316600090815260786020526040902080548391906010906139a2908490600160801b90046001600160801b0316614262565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b03851660009081526078602052604090205416159050610a10576000816139ef85611af6565b6139f99190613fc3565b613a0b670de0b6b3a764000085613ef2565b613a159190613f32565b6001600160a01b0385166000908152607860205260409020549091506001600160801b0316811015613a73576001600160a01b038416600090815260786020526040902054613a6e9082906001600160801b0316613f09565b613a76565b60005b6001600160a01b038516600090815260786020526040902080546001600160801b03929092166001600160801b03199092169190911790555092915050565b600081600003613ac457600080fd5b60006001600160c01b038411613aef5782604085901b81613ae757613ae7613f1c565b049050613c05565b60c084811c600160201b8110613b07576020918201911c5b620100008110613b19576010918201911c5b6101008110613b2a576008918201911c5b60108110613b3a576004918201911c5b60048110613b4a576002918201911c5b60028110613b59576001820191505b60bf820360018603901c6001018260ff0387901b81613b7a57613b7a613f1c565b0492506001600160801b03831115613b9157600080fd5b608085901c83026001600160801b038616840260c088901c604089901b82811015613bbd576001820391505b608084901b92900382811015613bd4576001820391505b829003608084901c8214613bea57613bea6142ac565b888181613bf957613bf9613f1c565b04870196505050505050505b6001600160801b0381111561251357600080fd5b6001600160a01b0381168114610ecb57600080fd5b600060208284031215613c4057600080fd5b813561251381613c19565b60005b83811015613c66578181015183820152602001613c4e565b50506000910152565b60008151808452613c87816020860160208601613c4b565b601f01601f19169290920160200192915050565b6020815260006125136020830184613c6f565b60008060408385031215613cc157600080fd5b8235613ccc81613c19565b946020939093013593505050565b600080600060608486031215613cef57600080fd5b8335613cfa81613c19565b92506020840135613d0a81613c19565b929592945050506040919091013590565b600060208284031215613d2d57600080fd5b5035919050565b60008060408385031215613d4757600080fd5b8235613d5281613c19565b91506020830135613d6281613c19565b809150509250929050565b60008060008060808587031215613d8357600080fd5b8435613d8e81613c19565b935060208501359250604085013591506060850135613dac81613c19565b939692955090935050565b6001600160a01b0391909116815260200190565b6001600160801b0391909116815260200190565b60008060008060608587031215613df557600080fd5b8435613e0081613c19565b93506020850135925060408501356001600160401b0380821115613e2357600080fd5b818701915087601f830112613e3757600080fd5b813581811115613e4657600080fd5b886020828501011115613e5857600080fd5b95989497505060200194505050565b80356001600160801b038116811461299257600080fd5b600060208284031215613e9057600080fd5b61251382613e67565b8015158114610ecb57600080fd5b60008060408385031215613eba57600080fd5b8235613ec581613e99565b9150613ed360208401613e67565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610a1057610a10613edc565b81810381811115610a1057610a10613edc565b634e487b7160e01b600052601260045260246000fd5b600082613f4157613f41613f1c565b500490565b600181811c90821680613f5a57607f821691505b602082108103613f7a57634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215613f9257600080fd5b815161251381613c19565b60006001600160801b0383811680613fb757613fb7613f1c565b92169190910492915050565b80820180821115610a1057610a10613edc565b6020808252600a90820152696e6f2062616c616e636560b01b604082015260600190565b6001600160a01b0392831681529116602082015260400190565b60006020828403121561402657600080fd5b815161251381613e99565b6001600160a01b03929092168252602082015260400190565b60006020828403121561405c57600080fd5b5051919050565b6001600160801b0381811683821602808216919082811461408657614086613edc565b505092915050565b63ffffffff81811683821602808216919082811461408657614086613edc565b6001600160801b038181168382160190808211156140ce576140ce613edc565b5092915050565b600c81526b4744414f5f5354414b494e4760a01b602082015260400190565b602081526000610a10602083016140d5565b600060018060a01b038087168352608060208401526141286080840187613c6f565b94166040830152506060015292915050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561416357600080fd5b825161416e81613e99565b60208401519092506001600160401b038082111561418b57600080fd5b818501915085601f83011261419f57600080fd5b8151818111156141b1576141b161413a565b604051601f8201601f19908116603f011681019083821181831017156141d9576141d961413a565b816040528281528860208487010111156141f257600080fd5b614203836020830160208801613c4b565b80955050505050509250929050565b604081526000614224604083016140d5565b6001600160a01b0393909316602092909201919091525090565b6020808252600a90820152692922a82aaa20aa24a7a760b11b604082015260600190565b6001600160801b038281168282160390808211156140ce576140ce613edc565b60208082526010908201526f26a4a72a212aa9272faba920a82822a960811b604082015260600190565b634e487b7160e01b600052600160045260246000fdfe1bda1e84e6af3f7391d288a491b734032ae9ea89ad3ebbc213d352456ab51a2bddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220049c683a7d744dde7a1f31efc31f4033550be56edada9325fa46b29caa32794064736f6c63430008130033";
1404
1404
 
1405
1405
  type GoodDollarStakingConstructorParams =
1406
1406
  | [signer?: Signer]
@@ -1205,7 +1205,7 @@ const _abi = [
1205
1205
  ];
1206
1206
 
1207
1207
  const _bytecode =
1208
- "0x60a06040523060805234801561001457600080fd5b50608051613a8561004c60003960008181610a9601528181610ad601528181610ef701528181610f370152610faf0152613a856000f3fe60806040526004361061025a5760003560e01c806301ffc9a71461025f57806306fdde0314610294578063095ea7b3146102b657806318160ddd146102d657806323b872dd146102f6578063248a9ca3146103165780632c159a1a146103365780632f2ff15d14610364578063313ce56714610386578063355274ea146103a25780633644e515146103b957806336568abe146103ce5780633659cfe6146103ee57806339364fd71461040e57806339509351146104435780633f4ba83a146104635780634000aea01461047857806340c10f191461049857806342966c68146104b857806346904840146104d857806346fbf68e146104f95780634b75f54f146105195780634cd88b761461053a5780634f1ef2861461055a57806352d1902d1461056d5780635c975abb146105825780635d5bf1781461059b57806370a08231146105bb57806379cc6790146105db5780637ecebe00146105fb57806382dc1ec41461061b5780638456cb591461063b5780638da5cb5b146106505780639010d07c1461066557806391d148541461068557806395d89b41146106a5578063983b2d56146106ba57806398650275146106da578063a217fddf146106ef578063a457c2d714610704578063a9059cbb14610724578063aa271e1a14610744578063ca15c87314610764578063d505accf14610784578063d5391393146107a4578063d547741f146107c6578063d5a06d4c146107e6578063dd62ed3e14610806578063dea7f11214610826578063e63ab1e914610846578063e74b981b14610868578063ecc06c7614610888578063f2fde38b146108a8575b600080fd5b34801561026b57600080fd5b5061027f61027a366004612f6d565b6108c8565b60405190151581526020015b60405180910390f35b3480156102a057600080fd5b506102a96108f3565b60405161028b9190612fe7565b3480156102c257600080fd5b5061027f6102d136600461300f565b610986565b3480156102e257600080fd5b5061012f545b60405190815260200161028b565b34801561030257600080fd5b5061027f61031136600461303b565b61099e565b34801561032257600080fd5b506102e861033136600461307c565b6109c4565b34801561034257600080fd5b5061029054610357906001600160a01b031681565b60405161028b9190613095565b34801561037057600080fd5b5061038461037f3660046130a9565b6109d9565b005b34801561039257600080fd5b506040516002815260200161028b565b3480156103ae57600080fd5b506102e86102915481565b3480156103c557600080fd5b506102e86109fa565b3480156103da57600080fd5b506103846103e93660046130a9565b610a09565b3480156103fa57600080fd5b506103846104093660046130d9565b610a8c565b34801561041a57600080fd5b5061042e6104293660046130f6565b610b54565b6040805192835290151560208301520161028b565b34801561044f57600080fd5b5061027f61045e36600461300f565b610bda565b34801561046f57600080fd5b50610384610bfc565b34801561048457600080fd5b5061027f610493366004613138565b610c7a565b3480156104a457600080fd5b5061027f6104b336600461300f565b610d80565b3480156104c457600080fd5b506103846104d336600461307c565b610e07565b3480156104e457600080fd5b5061028e54610357906001600160a01b031681565b34801561050557600080fd5b5061027f6105143660046130d9565b610e11565b34801561052557600080fd5b5061028f54610357906001600160a01b031681565b34801561054657600080fd5b5061038461055536600461326b565b610e2b565b6103846105683660046132ce565b610eed565b34801561057957600080fd5b506102e8610fa2565b34801561058e57600080fd5b506101f85460ff1661027f565b3480156105a757600080fd5b506103846105b63660046130d9565b611050565b3480156105c757600080fd5b506102e86105d63660046130d9565b61109a565b3480156105e757600080fd5b506103846105f636600461300f565b6110b6565b34801561060757600080fd5b506102e86106163660046130d9565b6110cb565b34801561062757600080fd5b506103846106363660046130d9565b6110ea565b34801561064757600080fd5b50610384611102565b34801561065c57600080fd5b5061035761117c565b34801561067157600080fd5b50610357610680366004613327565b611184565b34801561069157600080fd5b5061027f6106a03660046130a9565b61119c565b3480156106b157600080fd5b506102a96111c7565b3480156106c657600080fd5b506103846106d53660046130d9565b6111d7565b3480156106e657600080fd5b506103846111ef565b3480156106fb57600080fd5b506102e8600081565b34801561071057600080fd5b5061027f61071f36600461300f565b611207565b34801561073057600080fd5b5061027f61073f36600461300f565b61128d565b34801561075057600080fd5b5061027f61075f3660046130d9565b6112af565b34801561077057600080fd5b506102e861077f36600461307c565b6112c9565b34801561079057600080fd5b5061038461079f366004613349565b6112e0565b3480156107b057600080fd5b506102e8600080516020613a1083398151915281565b3480156107d257600080fd5b506103846107e13660046130a9565b611444565b3480156107f257600080fd5b5061042e61080136600461307c565b611460565b34801561081257600080fd5b506102e86108213660046133c0565b6114e3565b34801561083257600080fd5b506103846108413660046133ee565b61150f565b34801561085257600080fd5b506102e86000805160206139c983398151915281565b34801561087457600080fd5b506103846108833660046130d9565b611675565b34801561089457600080fd5b506103846108a33660046130d9565b6116bf565b3480156108b457600080fd5b506103846108c33660046130d9565b611709565b60006001600160e01b03198216635a05180f60e01b14806108ed57506108ed82611746565b92915050565b60606101308054610903906134a7565b80601f016020809104026020016040519081016040528092919081815260200182805461092f906134a7565b801561097c5780601f106109515761010080835404028352916020019161097c565b820191906000526020600020905b81548152906001019060200180831161095f57829003601f168201915b5050505050905090565b60003361099481858561177b565b5060019392505050565b6000806109ac8585856118a0565b90506109b9858583611a13565b9150505b9392505050565b600090815260c9602052604090206001015490565b6109e2826109c4565b6109eb81611a2c565b6109f58383611a36565b505050565b6000610a04611a58565b905090565b6001600160a01b0381163314610a7e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610a888282611ad5565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ad45760405162461bcd60e51b8152600401610a75906134db565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b06611af7565b6001600160a01b031614610b2c5760405162461bcd60e51b8152600401610a7590613515565b610b3581611b13565b60408051600080825260208201909252610b5191839190611b3a565b50565b61028f54604051631eed540360e11b815260009182916001600160a01b0390911690633ddaa80690610b8e9088908890889060040161354f565b6040805180830381865afa158015610baa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bce9190613583565b91509150935093915050565b600033610994818585610bed83836114e3565b610bf791906135c5565b61177b565b610c146000805160206139c98339815191523361119c565b610c705760405162461bcd60e51b8152602060048201526039602482015260008051602061394983398151915260448201527876652070617573657220726f6c6520746f20756e706175736560381b6064820152608401610a75565b610c78611ca5565b565b600080610c883387876118a0565b90506000610c968783611cf2565b9050866001600160a01b0316336001600160a01b03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16848888604051610cdf939291906135d8565b60405180910390a3863b15610d7657610d2f878387878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d0092505050565b610d765760405162461bcd60e51b815260206004820152601860248201527710dbdb9d1c9858dd0819985b1b189858dac819985a5b195960421b6044820152606401610a75565b9695505050505050565b6102915460009015610dfd576102915482610d9b61012f5490565b610da591906135c5565b1115610dfd5760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f7420696e63726561736520737570706c79206265796f6e642063616044820152600760fc1b6064820152608401610a75565b6109bd8383611dbf565b610b513382611e45565b60006108ed6000805160206139c98339815191528361119c565b600054610100900460ff1615808015610e4b5750600054600160ff909116105b80610e6c5750610e5a30611f76565b158015610e6c575060005460ff166001145b610e885760405162461bcd60e51b8152600401610a759061360e565b6000805460ff191660011790558015610eab576000805461ff0019166101001790555b610eb58383611f85565b80156109f5576000805461ff0019169055604051600181526000805160206139a98339815191529060200160405180910390a1505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610f355760405162461bcd60e51b8152600401610a75906134db565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610f67611af7565b6001600160a01b031614610f8d5760405162461bcd60e51b8152600401610a7590613515565b610f9682611b13565b610a8882826001611b3a565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461103d5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610a75565b5060008051602061398983398151915290565b61105b60003361119c565b6110775760405162461bcd60e51b8152600401610a759061365c565b61029080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0316600090815261012d602052604090205490565b6110c182338361205a565b610a888282611e45565b6001600160a01b038116600090815261019360205260408120546108ed565b610b516000805160206139c9833981519152826109d9565b61111a6000805160206139c98339815191523361119c565b6111745760405162461bcd60e51b8152602060048201526037602482015260008051602061394983398151915260448201527676652070617573657220726f6c6520746f20706175736560481b6064820152608401610a75565b610c786120d4565b6000610a0481805b600082815260fb602052604081206109bd9083612112565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606101318054610903906134a7565b610b51600080516020613a10833981519152826109d9565b610c78600080516020613a1083398151915233610a09565b6000338161121582866114e3565b9050838110156112755760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a75565b611282828686840361177b565b506001949350505050565b60008061129b3385856118a0565b90506112a78482611cf2565b949350505050565b60006108ed600080516020613a108339815191528361119c565b600081815260fb602052604081206108ed9061211e565b834211156113305760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610a75565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861135f8c612128565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006113ba82612151565b905060006113ca8287878761219f565b9050896001600160a01b0316816001600160a01b03161461142d5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610a75565b6114388a8a8a61177b565b50505050505050505050565b61144d826109c4565b61145681611a2c565b6109f58383611ad5565b61028f54604051631eed540360e11b815260009182916001600160a01b0390911690633ddaa8069061149a9086908590819060040161354f565b6040805180830381865afa1580156114b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114da9190613583565b91509150915091565b6001600160a01b03918216600090815261012e6020908152604080832093909416825291909152205490565b600054610100900460ff161580801561152f5750600054600160ff909116105b80611550575061153e30611f76565b158015611550575060005460ff166001145b61156c5760405162461bcd60e51b8152600401610a759061360e565b6000805460ff19166001179055801561158f576000805461ff0019166101001790555b6115998888611f85565b61028e80546001600160a01b038086166001600160a01b031992831617909255610290805487841690831617905561028f8054928816929091169190911790556102918690556115e63390565b6001600160a01b0316826001600160a01b0316146116375761160782611709565b61161f600080516020613a1083398151915233610a09565b6116376000805160206139c983398151915233610a09565b801561166b576000805461ff0019169055604051600181526000805160206139a98339815191529060200160405180910390a15b5050505050505050565b61168060003361119c565b61169c5760405162461bcd60e51b8152600401610a759061365c565b61028e80546001600160a01b0319166001600160a01b0392909216919091179055565b6116ca60003361119c565b6116e65760405162461bcd60e51b8152600401610a759061365c565b61028f80546001600160a01b0319166001600160a01b0392909216919091179055565b61171460003361119c565b6117305760405162461bcd60e51b8152600401610a759061365c565b61173b6000826109d9565b610b51600033610a09565b60006001600160e01b03198216637965db0b60e01b14806108ed57506301ffc9a760e01b6001600160e01b03198316146108ed565b6001600160a01b0383166117dd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a75565b6001600160a01b03821661183e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a75565b6001600160a01b03838116600081815261012e602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008060006118b0848787610b54565b9150915060008211801561193357506102905460405163639e625760e11b81526001600160a01b039091169063c73cc4ae906118f0903390600401613095565b602060405180830381865afa15801561190d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611931919061367f565b155b15611a095780158061195657506119498661109a565b61195383866135c5565b11155b6119a25760405162461bcd60e51b815260206004820181905260248201527f4e6f7420656e6f7567682062616c616e636520746f20706179205458206665656044820152606401610a75565b336001600160a01b038716036119cf5761028e546119c9906001600160a01b031683611cf2565b506119ea565b61028e546119e89087906001600160a01b031684611a13565b505b806119fe576119f9828561369a565b611a00565b835b925050506109bd565b5091949350505050565b600033611a2185828561205a565b6112828585856121c7565b610b51813361236d565b611a4082826123c6565b600082815260fb602052604090206109f5908261244c565b6000610a047f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611a8861015f5490565b610160546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b611adf8282612461565b600082815260fb602052604090206109f590826124c8565b600080516020613989833981519152546001600160a01b031690565b611b1e60003361119c565b610b515760405162461bcd60e51b8152600401610a759061365c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611b6d576109f5836124dd565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611bc7575060408051601f3d908101601f19168201909252611bc4918101906136ad565b60015b611c2a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610a75565b6000805160206139898339815191528114611c995760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610a75565b506109f5838383612577565b611cad61259c565b6101f8805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b604051611ce89190613095565b60405180910390a1565b6000336109948185856121c7565b604051635260769b60e11b815260009084906001600160a01b0382169063a4c0ed3690611d35903390889088906004016136c6565b6020604051808303816000875af1158015611d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d78919061367f565b6112825760405162461bcd60e51b815260206004820152601860248201527710dbdb9d1c9858dd0811985b1b189858dac819985a5b195960421b6044820152606401610a75565b6000611dd9600080516020613a108339815191523361119c565b611e325760405162461bcd60e51b815260206004820152603660248201526000805160206139498339815191526044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b6064820152608401610a75565b611e3c83836125e6565b50600192915050565b6001600160a01b038216611ea55760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a75565b611eb1826000836126a3565b6001600160a01b038216600090815261012d602052604090205481811015611f265760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610a75565b6001600160a01b038316600081815261012d60209081526040808320868603905561012f8054879003905551858152919291600080516020613a30833981519152910160405180910390a3505050565b6001600160a01b03163b151590565b600054610100900460ff1615808015611fa55750600054600160ff909116105b80611fc65750611fb430611f76565b158015611fc6575060005460ff166001145b611fe25760405162461bcd60e51b8152600401610a759061360e565b6000805460ff191660011790558015612005576000805461ff0019166101001790555b61200d6126ae565b6120156126ae565b61201d6126ae565b6120256126ae565b61202f83836126d5565b6120376126ae565b61203f612717565b6120476126ae565b612051838361274b565b610eb583612806565b600061206684846114e3565b905060001981146120ce57818110156120c15760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610a75565b6120ce848484840361177b565b50505050565b6120dc61282d565b6101f8805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611cdb3390565b60006109bd8383612874565b60006108ed825490565b6001600160a01b0381166000908152610193602052604090208054600181018255905b50919050565b60006108ed61215e611a58565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006121b08787878761289e565b915091506121bd81612958565b5095945050505050565b6001600160a01b03831661222b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a75565b6001600160a01b03821661228d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a75565b6122988383836126a3565b6001600160a01b038316600090815261012d6020526040902054818110156123115760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a75565b6001600160a01b03808516600081815261012d60205260408082208686039055928616808252908390208054860190559151600080516020613a30833981519152906123609086815260200190565b60405180910390a36120ce565b612377828261119c565b610a885761238481612a9d565b61238f836020612aaf565b6040516020016123a09291906136ed565b60408051601f198184030181529082905262461bcd60e51b8252610a7591600401612fe7565b6123d0828261119c565b610a8857600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff191660011790556124083390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006109bd836001600160a01b038416612c4a565b61246b828261119c565b15610a8857600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006109bd836001600160a01b038416612c99565b6124e681611f76565b6125485760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610a75565b60008051602061398983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61258083612d8c565b60008251118061258d5750805b156109f5576120ce8383612dcc565b6101f85460ff16610c785760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610a75565b6001600160a01b03821661263c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610a75565b612648600083836126a3565b8061012f600082825461265b91906135c5565b90915550506001600160a01b038216600081815261012d6020908152604080832080548601905551848152600080516020613a30833981519152910160405180910390a35050565b6109f5838383612ebe565b600054610100900460ff16610c785760405162461bcd60e51b8152600401610a759061375c565b600054610100900460ff166126fc5760405162461bcd60e51b8152600401610a759061375c565b61013061270983826137f5565b506101316109f582826137f5565b600054610100900460ff1661273e5760405162461bcd60e51b8152600401610a759061375c565b6101f8805460ff19169055565b600054610100900460ff161580801561276b5750600054600160ff909116105b8061278c575061277a30611f76565b15801561278c575060005460ff166001145b6127a85760405162461bcd60e51b8152600401610a759061360e565b6000805460ff1916600117905580156127cb576000805461ff0019166101001790555b6127d6600033612f25565b6127ee600080516020613a1083398151915233612f25565b610eb56000805160206139c983398151915233612f25565b600054610100900460ff16610b515760405162461bcd60e51b8152600401610a759061375c565b6101f85460ff1615610c785760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610a75565b600082600001828154811061288b5761288b6138b4565b9060005260206000200154905092915050565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311156128cb575060009050600361294f565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561291f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166129485760006001925092505061294f565b9150600090505b94509492505050565b600081600481111561296c5761296c6138ca565b036129745750565b6001816004811115612988576129886138ca565b036129d05760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606401610a75565b60028160048111156129e4576129e46138ca565b03612a315760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610a75565b6003816004811115612a4557612a456138ca565b03610b515760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610a75565b60606108ed6001600160a01b03831660145b60606000612abe8360026138e0565b612ac99060026135c5565b6001600160401b03811115612ae057612ae06131c0565b6040519080825280601f01601f191660200182016040528015612b0a576020820181803683370190505b509050600360fc1b81600081518110612b2557612b256138b4565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612b5457612b546138b4565b60200101906001600160f81b031916908160001a9053506000612b788460026138e0565b612b839060016135c5565b90505b6001811115612bfb576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612bb757612bb76138b4565b1a60f81b828281518110612bcd57612bcd6138b4565b60200101906001600160f81b031916908160001a90535060049490941c93612bf4816138ff565b9050612b86565b5083156109bd5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610a75565b6000818152600183016020526040812054612c91575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556108ed565b5060006108ed565b60008181526001830160205260408120548015612d82576000612cbd60018361369a565b8554909150600090612cd19060019061369a565b9050818114612d36576000866000018281548110612cf157612cf16138b4565b9060005260206000200154905080876000018481548110612d1457612d146138b4565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612d4757612d47613916565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506108ed565b60009150506108ed565b612d95816124dd565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060612dd783611f76565b612e325760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610a75565b600080846001600160a01b031684604051612e4d919061392c565b600060405180830381855af49150503d8060008114612e88576040519150601f19603f3d011682016040523d82523d6000602084013e612e8d565b606091505b5091509150612eb582826040518060600160405280602781526020016139e960279139612f2f565b95945050505050565b6101f85460ff16156109f55760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608401610a75565b610a888282611a36565b60608315612f3e5750816109bd565b6109bd8383815115612f535781518083602001fd5b8060405162461bcd60e51b8152600401610a759190612fe7565b600060208284031215612f7f57600080fd5b81356001600160e01b0319811681146109bd57600080fd5b60005b83811015612fb2578181015183820152602001612f9a565b50506000910152565b60008151808452612fd3816020860160208601612f97565b601f01601f19169290920160200192915050565b6020815260006109bd6020830184612fbb565b6001600160a01b0381168114610b5157600080fd5b6000806040838503121561302257600080fd5b823561302d81612ffa565b946020939093013593505050565b60008060006060848603121561305057600080fd5b833561305b81612ffa565b9250602084013561306b81612ffa565b929592945050506040919091013590565b60006020828403121561308e57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b600080604083850312156130bc57600080fd5b8235915060208301356130ce81612ffa565b809150509250929050565b6000602082840312156130eb57600080fd5b81356109bd81612ffa565b60008060006060848603121561310b57600080fd5b83359250602084013561311d81612ffa565b9150604084013561312d81612ffa565b809150509250925092565b6000806000806060858703121561314e57600080fd5b843561315981612ffa565b93506020850135925060408501356001600160401b038082111561317c57600080fd5b818701915087601f83011261319057600080fd5b81358181111561319f57600080fd5b8860208285010111156131b157600080fd5b95989497505060200194505050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b03808411156131f0576131f06131c0565b604051601f8501601f19908116603f01168101908282118183101715613218576132186131c0565b8160405280935085815286868601111561323157600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261325c57600080fd5b6109bd838335602085016131d6565b6000806040838503121561327e57600080fd5b82356001600160401b038082111561329557600080fd5b6132a18683870161324b565b935060208501359150808211156132b757600080fd5b506132c48582860161324b565b9150509250929050565b600080604083850312156132e157600080fd5b82356132ec81612ffa565b915060208301356001600160401b0381111561330757600080fd5b8301601f8101851361331857600080fd5b6132c4858235602084016131d6565b6000806040838503121561333a57600080fd5b50508035926020909101359150565b600080600080600080600060e0888a03121561336457600080fd5b873561336f81612ffa565b9650602088013561337f81612ffa565b95506040880135945060608801359350608088013560ff811681146133a357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156133d357600080fd5b82356133de81612ffa565b915060208301356130ce81612ffa565b600080600080600080600060e0888a03121561340957600080fd5b87356001600160401b038082111561342057600080fd5b61342c8b838c0161324b565b985060208a013591508082111561344257600080fd5b5061344f8a828b0161324b565b96505060408801359450606088013561346781612ffa565b9350608088013561347781612ffa565b925060a088013561348781612ffa565b915060c088013561349781612ffa565b8091505092959891949750929550565b600181811c908216806134bb57607f821691505b60208210810361214b57634e487b7160e01b600052602260045260246000fd5b6020808252602c9082015260008051602061396983398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602061396983398151915260408201526b6163746976652070726f787960a01b606082015260800190565b9283526001600160a01b03918216602084015216604082015260600190565b8051801515811461357e57600080fd5b919050565b6000806040838503121561359657600080fd5b825191506135a66020840161356e565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108ed576108ed6135af565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b60006020828403121561369157600080fd5b6109bd8261356e565b818103818111156108ed576108ed6135af565b6000602082840312156136bf57600080fd5b5051919050565b60018060a01b0384168152826020820152606060408201526000612eb56060830184612fbb565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835161371f816017850160208801612f97565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613750816028840160208801612f97565b01602801949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b601f8211156109f557600081815260208120601f850160051c810160208610156137ce5750805b601f850160051c820191505b818110156137ed578281556001016137da565b505050505050565b81516001600160401b0381111561380e5761380e6131c0565b6138228161381c84546134a7565b846137a7565b602080601f831160018114613857576000841561383f5750858301515b600019600386901b1c1916600185901b1785556137ed565b600085815260208120601f198616915b8281101561388657888601518255948401946001909101908401613867565b50858210156138a45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b60008160001904831182151516156138fa576138fa6135af565b500290565b60008161390e5761390e6135af565b506000190190565b634e487b7160e01b600052603160045260246000fd5b6000825161393e818460208701612f97565b919091019291505056fe45524332305072657365744d696e7465725061757365723a206d75737420686146756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249865d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65649f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220bdf1d850bd5312b28042a43937b6509cc369b5a309702cf586264c77291fe4dc64736f6c63430008100033";
1208
+ "0x60a06040523060805234801561001457600080fd5b50608051613a7d61004c60003960008181610a9601528181610ad601528181610ef701528181610f370152610faf0152613a7d6000f3fe60806040526004361061025a5760003560e01c806301ffc9a71461025f57806306fdde0314610294578063095ea7b3146102b657806318160ddd146102d657806323b872dd146102f6578063248a9ca3146103165780632c159a1a146103365780632f2ff15d14610364578063313ce56714610386578063355274ea146103a25780633644e515146103b957806336568abe146103ce5780633659cfe6146103ee57806339364fd71461040e57806339509351146104435780633f4ba83a146104635780634000aea01461047857806340c10f191461049857806342966c68146104b857806346904840146104d857806346fbf68e146104f95780634b75f54f146105195780634cd88b761461053a5780634f1ef2861461055a57806352d1902d1461056d5780635c975abb146105825780635d5bf1781461059b57806370a08231146105bb57806379cc6790146105db5780637ecebe00146105fb57806382dc1ec41461061b5780638456cb591461063b5780638da5cb5b146106505780639010d07c1461066557806391d148541461068557806395d89b41146106a5578063983b2d56146106ba57806398650275146106da578063a217fddf146106ef578063a457c2d714610704578063a9059cbb14610724578063aa271e1a14610744578063ca15c87314610764578063d505accf14610784578063d5391393146107a4578063d547741f146107c6578063d5a06d4c146107e6578063dd62ed3e14610806578063dea7f11214610826578063e63ab1e914610846578063e74b981b14610868578063ecc06c7614610888578063f2fde38b146108a8575b600080fd5b34801561026b57600080fd5b5061027f61027a366004612f6d565b6108c8565b60405190151581526020015b60405180910390f35b3480156102a057600080fd5b506102a96108f3565b60405161028b9190612fe7565b3480156102c257600080fd5b5061027f6102d136600461300f565b610986565b3480156102e257600080fd5b5061012f545b60405190815260200161028b565b34801561030257600080fd5b5061027f61031136600461303b565b61099e565b34801561032257600080fd5b506102e861033136600461307c565b6109c4565b34801561034257600080fd5b5061029054610357906001600160a01b031681565b60405161028b9190613095565b34801561037057600080fd5b5061038461037f3660046130a9565b6109d9565b005b34801561039257600080fd5b506040516002815260200161028b565b3480156103ae57600080fd5b506102e86102915481565b3480156103c557600080fd5b506102e86109fa565b3480156103da57600080fd5b506103846103e93660046130a9565b610a09565b3480156103fa57600080fd5b506103846104093660046130d9565b610a8c565b34801561041a57600080fd5b5061042e6104293660046130f6565b610b54565b6040805192835290151560208301520161028b565b34801561044f57600080fd5b5061027f61045e36600461300f565b610bda565b34801561046f57600080fd5b50610384610bfc565b34801561048457600080fd5b5061027f610493366004613138565b610c7a565b3480156104a457600080fd5b5061027f6104b336600461300f565b610d80565b3480156104c457600080fd5b506103846104d336600461307c565b610e07565b3480156104e457600080fd5b5061028e54610357906001600160a01b031681565b34801561050557600080fd5b5061027f6105143660046130d9565b610e11565b34801561052557600080fd5b5061028f54610357906001600160a01b031681565b34801561054657600080fd5b5061038461055536600461326b565b610e2b565b6103846105683660046132ce565b610eed565b34801561057957600080fd5b506102e8610fa2565b34801561058e57600080fd5b506101f85460ff1661027f565b3480156105a757600080fd5b506103846105b63660046130d9565b611050565b3480156105c757600080fd5b506102e86105d63660046130d9565b61109a565b3480156105e757600080fd5b506103846105f636600461300f565b6110b6565b34801561060757600080fd5b506102e86106163660046130d9565b6110cb565b34801561062757600080fd5b506103846106363660046130d9565b6110ea565b34801561064757600080fd5b50610384611102565b34801561065c57600080fd5b5061035761117c565b34801561067157600080fd5b50610357610680366004613327565b611184565b34801561069157600080fd5b5061027f6106a03660046130a9565b61119c565b3480156106b157600080fd5b506102a96111c7565b3480156106c657600080fd5b506103846106d53660046130d9565b6111d7565b3480156106e657600080fd5b506103846111ef565b3480156106fb57600080fd5b506102e8600081565b34801561071057600080fd5b5061027f61071f36600461300f565b611207565b34801561073057600080fd5b5061027f61073f36600461300f565b61128d565b34801561075057600080fd5b5061027f61075f3660046130d9565b6112af565b34801561077057600080fd5b506102e861077f36600461307c565b6112c9565b34801561079057600080fd5b5061038461079f366004613349565b6112e0565b3480156107b057600080fd5b506102e8600080516020613a0883398151915281565b3480156107d257600080fd5b506103846107e13660046130a9565b611444565b3480156107f257600080fd5b5061042e61080136600461307c565b611460565b34801561081257600080fd5b506102e86108213660046133c0565b6114e3565b34801561083257600080fd5b506103846108413660046133ee565b61150f565b34801561085257600080fd5b506102e86000805160206139c183398151915281565b34801561087457600080fd5b506103846108833660046130d9565b611675565b34801561089457600080fd5b506103846108a33660046130d9565b6116bf565b3480156108b457600080fd5b506103846108c33660046130d9565b611709565b60006001600160e01b03198216635a05180f60e01b14806108ed57506108ed82611746565b92915050565b60606101308054610903906134a7565b80601f016020809104026020016040519081016040528092919081815260200182805461092f906134a7565b801561097c5780601f106109515761010080835404028352916020019161097c565b820191906000526020600020905b81548152906001019060200180831161095f57829003601f168201915b5050505050905090565b60003361099481858561177b565b5060019392505050565b6000806109ac8585856118a0565b90506109b9858583611a13565b9150505b9392505050565b600090815260c9602052604090206001015490565b6109e2826109c4565b6109eb81611a2c565b6109f58383611a36565b505050565b6000610a04611a58565b905090565b6001600160a01b0381163314610a7e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b610a888282611ad5565b5050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ad45760405162461bcd60e51b8152600401610a75906134db565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b06611af7565b6001600160a01b031614610b2c5760405162461bcd60e51b8152600401610a7590613515565b610b3581611b13565b60408051600080825260208201909252610b5191839190611b3a565b50565b61028f54604051631eed540360e11b815260009182916001600160a01b0390911690633ddaa80690610b8e9088908890889060040161354f565b6040805180830381865afa158015610baa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bce9190613583565b91509150935093915050565b600033610994818585610bed83836114e3565b610bf791906135c5565b61177b565b610c146000805160206139c18339815191523361119c565b610c705760405162461bcd60e51b8152602060048201526039602482015260008051602061394183398151915260448201527876652070617573657220726f6c6520746f20756e706175736560381b6064820152608401610a75565b610c78611ca5565b565b600080610c883387876118a0565b90506000610c968783611cf2565b9050866001600160a01b0316336001600160a01b03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16848888604051610cdf939291906135d8565b60405180910390a3863b15610d7657610d2f878387878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d0092505050565b610d765760405162461bcd60e51b815260206004820152601860248201527710dbdb9d1c9858dd0819985b1b189858dac819985a5b195960421b6044820152606401610a75565b9695505050505050565b6102915460009015610dfd576102915482610d9b61012f5490565b610da591906135c5565b1115610dfd5760405162461bcd60e51b815260206004820152602160248201527f43616e6e6f7420696e63726561736520737570706c79206265796f6e642063616044820152600760fc1b6064820152608401610a75565b6109bd8383611dbf565b610b513382611e45565b60006108ed6000805160206139c18339815191528361119c565b600054610100900460ff1615808015610e4b5750600054600160ff909116105b80610e6c5750610e5a30611f76565b158015610e6c575060005460ff166001145b610e885760405162461bcd60e51b8152600401610a759061360e565b6000805460ff191660011790558015610eab576000805461ff0019166101001790555b610eb58383611f85565b80156109f5576000805461ff0019169055604051600181526000805160206139a18339815191529060200160405180910390a1505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610f355760405162461bcd60e51b8152600401610a75906134db565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610f67611af7565b6001600160a01b031614610f8d5760405162461bcd60e51b8152600401610a7590613515565b610f9682611b13565b610a8882826001611b3a565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461103d5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610a75565b5060008051602061398183398151915290565b61105b60003361119c565b6110775760405162461bcd60e51b8152600401610a759061365c565b61029080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0316600090815261012d602052604090205490565b6110c182338361205a565b610a888282611e45565b6001600160a01b038116600090815261019360205260408120546108ed565b610b516000805160206139c1833981519152826109d9565b61111a6000805160206139c18339815191523361119c565b6111745760405162461bcd60e51b8152602060048201526037602482015260008051602061394183398151915260448201527676652070617573657220726f6c6520746f20706175736560481b6064820152608401610a75565b610c786120d4565b6000610a0481805b600082815260fb602052604081206109bd9083612112565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606101318054610903906134a7565b610b51600080516020613a08833981519152826109d9565b610c78600080516020613a0883398151915233610a09565b6000338161121582866114e3565b9050838110156112755760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a75565b611282828686840361177b565b506001949350505050565b60008061129b3385856118a0565b90506112a78482611cf2565b949350505050565b60006108ed600080516020613a088339815191528361119c565b600081815260fb602052604081206108ed9061211e565b834211156113305760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610a75565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861135f8c612128565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006113ba82612151565b905060006113ca8287878761219f565b9050896001600160a01b0316816001600160a01b03161461142d5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610a75565b6114388a8a8a61177b565b50505050505050505050565b61144d826109c4565b61145681611a2c565b6109f58383611ad5565b61028f54604051631eed540360e11b815260009182916001600160a01b0390911690633ddaa8069061149a9086908590819060040161354f565b6040805180830381865afa1580156114b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114da9190613583565b91509150915091565b6001600160a01b03918216600090815261012e6020908152604080832093909416825291909152205490565b600054610100900460ff161580801561152f5750600054600160ff909116105b80611550575061153e30611f76565b158015611550575060005460ff166001145b61156c5760405162461bcd60e51b8152600401610a759061360e565b6000805460ff19166001179055801561158f576000805461ff0019166101001790555b6115998888611f85565b61028e80546001600160a01b038086166001600160a01b031992831617909255610290805487841690831617905561028f8054928816929091169190911790556102918690556115e63390565b6001600160a01b0316826001600160a01b0316146116375761160782611709565b61161f600080516020613a0883398151915233610a09565b6116376000805160206139c183398151915233610a09565b801561166b576000805461ff0019169055604051600181526000805160206139a18339815191529060200160405180910390a15b5050505050505050565b61168060003361119c565b61169c5760405162461bcd60e51b8152600401610a759061365c565b61028e80546001600160a01b0319166001600160a01b0392909216919091179055565b6116ca60003361119c565b6116e65760405162461bcd60e51b8152600401610a759061365c565b61028f80546001600160a01b0319166001600160a01b0392909216919091179055565b61171460003361119c565b6117305760405162461bcd60e51b8152600401610a759061365c565b61173b6000826109d9565b610b51600033610a09565b60006001600160e01b03198216637965db0b60e01b14806108ed57506301ffc9a760e01b6001600160e01b03198316146108ed565b6001600160a01b0383166117dd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a75565b6001600160a01b03821661183e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a75565b6001600160a01b03838116600081815261012e602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008060006118b0848787610b54565b9150915060008211801561193357506102905460405163639e625760e11b81526001600160a01b039091169063c73cc4ae906118f0903390600401613095565b602060405180830381865afa15801561190d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611931919061367f565b155b15611a095780158061195657506119498661109a565b61195383866135c5565b11155b6119a25760405162461bcd60e51b815260206004820181905260248201527f4e6f7420656e6f7567682062616c616e636520746f20706179205458206665656044820152606401610a75565b336001600160a01b038716036119cf5761028e546119c9906001600160a01b031683611cf2565b506119ea565b61028e546119e89087906001600160a01b031684611a13565b505b806119fe576119f9828561369a565b611a00565b835b925050506109bd565b5091949350505050565b600033611a2185828561205a565b6112828585856121c7565b610b51813361236d565b611a4082826123c6565b600082815260fb602052604090206109f5908261244c565b6000610a047f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611a8861015f5490565b610160546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b611adf8282612461565b600082815260fb602052604090206109f590826124c8565b600080516020613981833981519152546001600160a01b031690565b611b1e60003361119c565b610b515760405162461bcd60e51b8152600401610a759061365c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611b6d576109f5836124dd565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611bc7575060408051601f3d908101601f19168201909252611bc4918101906136ad565b60015b611c2a5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610a75565b6000805160206139818339815191528114611c995760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610a75565b506109f5838383612577565b611cad61259c565b6101f8805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b604051611ce89190613095565b60405180910390a1565b6000336109948185856121c7565b604051635260769b60e11b815260009084906001600160a01b0382169063a4c0ed3690611d35903390889088906004016136c6565b6020604051808303816000875af1158015611d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d78919061367f565b6112825760405162461bcd60e51b815260206004820152601860248201527710dbdb9d1c9858dd0811985b1b189858dac819985a5b195960421b6044820152606401610a75565b6000611dd9600080516020613a088339815191523361119c565b611e325760405162461bcd60e51b815260206004820152603660248201526000805160206139418339815191526044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b6064820152608401610a75565b611e3c83836125e6565b50600192915050565b6001600160a01b038216611ea55760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a75565b611eb1826000836126a3565b6001600160a01b038216600090815261012d602052604090205481811015611f265760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610a75565b6001600160a01b038316600081815261012d60209081526040808320868603905561012f8054879003905551858152919291600080516020613a28833981519152910160405180910390a3505050565b6001600160a01b03163b151590565b600054610100900460ff1615808015611fa55750600054600160ff909116105b80611fc65750611fb430611f76565b158015611fc6575060005460ff166001145b611fe25760405162461bcd60e51b8152600401610a759061360e565b6000805460ff191660011790558015612005576000805461ff0019166101001790555b61200d6126ae565b6120156126ae565b61201d6126ae565b6120256126ae565b61202f83836126d5565b6120376126ae565b61203f612717565b6120476126ae565b612051838361274b565b610eb583612806565b600061206684846114e3565b905060001981146120ce57818110156120c15760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610a75565b6120ce848484840361177b565b50505050565b6120dc61282d565b6101f8805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611cdb3390565b60006109bd8383612874565b60006108ed825490565b6001600160a01b0381166000908152610193602052604090208054600181018255905b50919050565b60006108ed61215e611a58565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006121b08787878761289e565b915091506121bd81612958565b5095945050505050565b6001600160a01b03831661222b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a75565b6001600160a01b03821661228d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a75565b6122988383836126a3565b6001600160a01b038316600090815261012d6020526040902054818110156123115760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a75565b6001600160a01b03808516600081815261012d60205260408082208686039055928616808252908390208054860190559151600080516020613a28833981519152906123609086815260200190565b60405180910390a36120ce565b612377828261119c565b610a885761238481612a9d565b61238f836020612aaf565b6040516020016123a09291906136ed565b60408051601f198184030181529082905262461bcd60e51b8252610a7591600401612fe7565b6123d0828261119c565b610a8857600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff191660011790556124083390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006109bd836001600160a01b038416612c4a565b61246b828261119c565b15610a8857600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006109bd836001600160a01b038416612c99565b6124e681611f76565b6125485760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610a75565b60008051602061398183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61258083612d8c565b60008251118061258d5750805b156109f5576120ce8383612dcc565b6101f85460ff16610c785760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610a75565b6001600160a01b03821661263c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610a75565b612648600083836126a3565b8061012f600082825461265b91906135c5565b90915550506001600160a01b038216600081815261012d6020908152604080832080548601905551848152600080516020613a28833981519152910160405180910390a35050565b6109f5838383612ebe565b600054610100900460ff16610c785760405162461bcd60e51b8152600401610a759061375c565b600054610100900460ff166126fc5760405162461bcd60e51b8152600401610a759061375c565b61013061270983826137f5565b506101316109f582826137f5565b600054610100900460ff1661273e5760405162461bcd60e51b8152600401610a759061375c565b6101f8805460ff19169055565b600054610100900460ff161580801561276b5750600054600160ff909116105b8061278c575061277a30611f76565b15801561278c575060005460ff166001145b6127a85760405162461bcd60e51b8152600401610a759061360e565b6000805460ff1916600117905580156127cb576000805461ff0019166101001790555b6127d6600033612f25565b6127ee600080516020613a0883398151915233612f25565b610eb56000805160206139c183398151915233612f25565b600054610100900460ff16610b515760405162461bcd60e51b8152600401610a759061375c565b6101f85460ff1615610c785760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610a75565b600082600001828154811061288b5761288b6138b4565b9060005260206000200154905092915050565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311156128cb575060009050600361294f565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561291f573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166129485760006001925092505061294f565b9150600090505b94509492505050565b600081600481111561296c5761296c6138ca565b036129745750565b6001816004811115612988576129886138ca565b036129d05760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606401610a75565b60028160048111156129e4576129e46138ca565b03612a315760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610a75565b6003816004811115612a4557612a456138ca565b03610b515760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610a75565b60606108ed6001600160a01b03831660145b60606000612abe8360026138e0565b612ac99060026135c5565b6001600160401b03811115612ae057612ae06131c0565b6040519080825280601f01601f191660200182016040528015612b0a576020820181803683370190505b509050600360fc1b81600081518110612b2557612b256138b4565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612b5457612b546138b4565b60200101906001600160f81b031916908160001a9053506000612b788460026138e0565b612b839060016135c5565b90505b6001811115612bfb576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612bb757612bb76138b4565b1a60f81b828281518110612bcd57612bcd6138b4565b60200101906001600160f81b031916908160001a90535060049490941c93612bf4816138f7565b9050612b86565b5083156109bd5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610a75565b6000818152600183016020526040812054612c91575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556108ed565b5060006108ed565b60008181526001830160205260408120548015612d82576000612cbd60018361369a565b8554909150600090612cd19060019061369a565b9050818114612d36576000866000018281548110612cf157612cf16138b4565b9060005260206000200154905080876000018481548110612d1457612d146138b4565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080612d4757612d4761390e565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506108ed565b60009150506108ed565b612d95816124dd565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060612dd783611f76565b612e325760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610a75565b600080846001600160a01b031684604051612e4d9190613924565b600060405180830381855af49150503d8060008114612e88576040519150601f19603f3d011682016040523d82523d6000602084013e612e8d565b606091505b5091509150612eb582826040518060600160405280602781526020016139e160279139612f2f565b95945050505050565b6101f85460ff16156109f55760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b6064820152608401610a75565b610a888282611a36565b60608315612f3e5750816109bd565b6109bd8383815115612f535781518083602001fd5b8060405162461bcd60e51b8152600401610a759190612fe7565b600060208284031215612f7f57600080fd5b81356001600160e01b0319811681146109bd57600080fd5b60005b83811015612fb2578181015183820152602001612f9a565b50506000910152565b60008151808452612fd3816020860160208601612f97565b601f01601f19169290920160200192915050565b6020815260006109bd6020830184612fbb565b6001600160a01b0381168114610b5157600080fd5b6000806040838503121561302257600080fd5b823561302d81612ffa565b946020939093013593505050565b60008060006060848603121561305057600080fd5b833561305b81612ffa565b9250602084013561306b81612ffa565b929592945050506040919091013590565b60006020828403121561308e57600080fd5b5035919050565b6001600160a01b0391909116815260200190565b600080604083850312156130bc57600080fd5b8235915060208301356130ce81612ffa565b809150509250929050565b6000602082840312156130eb57600080fd5b81356109bd81612ffa565b60008060006060848603121561310b57600080fd5b83359250602084013561311d81612ffa565b9150604084013561312d81612ffa565b809150509250925092565b6000806000806060858703121561314e57600080fd5b843561315981612ffa565b93506020850135925060408501356001600160401b038082111561317c57600080fd5b818701915087601f83011261319057600080fd5b81358181111561319f57600080fd5b8860208285010111156131b157600080fd5b95989497505060200194505050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b03808411156131f0576131f06131c0565b604051601f8501601f19908116603f01168101908282118183101715613218576132186131c0565b8160405280935085815286868601111561323157600080fd5b858560208301376000602087830101525050509392505050565b600082601f83011261325c57600080fd5b6109bd838335602085016131d6565b6000806040838503121561327e57600080fd5b82356001600160401b038082111561329557600080fd5b6132a18683870161324b565b935060208501359150808211156132b757600080fd5b506132c48582860161324b565b9150509250929050565b600080604083850312156132e157600080fd5b82356132ec81612ffa565b915060208301356001600160401b0381111561330757600080fd5b8301601f8101851361331857600080fd5b6132c4858235602084016131d6565b6000806040838503121561333a57600080fd5b50508035926020909101359150565b600080600080600080600060e0888a03121561336457600080fd5b873561336f81612ffa565b9650602088013561337f81612ffa565b95506040880135945060608801359350608088013560ff811681146133a357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156133d357600080fd5b82356133de81612ffa565b915060208301356130ce81612ffa565b600080600080600080600060e0888a03121561340957600080fd5b87356001600160401b038082111561342057600080fd5b61342c8b838c0161324b565b985060208a013591508082111561344257600080fd5b5061344f8a828b0161324b565b96505060408801359450606088013561346781612ffa565b9350608088013561347781612ffa565b925060a088013561348781612ffa565b915060c088013561349781612ffa565b8091505092959891949750929550565b600181811c908216806134bb57607f821691505b60208210810361214b57634e487b7160e01b600052602260045260246000fd5b6020808252602c9082015260008051602061396183398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602061396183398151915260408201526b6163746976652070726f787960a01b606082015260800190565b9283526001600160a01b03918216602084015216604082015260600190565b8051801515811461357e57600080fd5b919050565b6000806040838503121561359657600080fd5b825191506135a66020840161356e565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108ed576108ed6135af565b83815260406020820152816040820152818360608301376000818301606090810191909152601f909201601f1916010192915050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b60006020828403121561369157600080fd5b6109bd8261356e565b818103818111156108ed576108ed6135af565b6000602082840312156136bf57600080fd5b5051919050565b60018060a01b0384168152826020820152606060408201526000612eb56060830184612fbb565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b81526000835161371f816017850160208801612f97565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613750816028840160208801612f97565b01602801949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b601f8211156109f557600081815260208120601f850160051c810160208610156137ce5750805b601f850160051c820191505b818110156137ed578281556001016137da565b505050505050565b81516001600160401b0381111561380e5761380e6131c0565b6138228161381c84546134a7565b846137a7565b602080601f831160018114613857576000841561383f5750858301515b600019600386901b1c1916600185901b1785556137ed565b600085815260208120601f198616915b8281101561388657888601518255948401946001909101908401613867565b50858210156138a45787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b80820281158282048414176108ed576108ed6135af565b600081613906576139066135af565b506000190190565b634e487b7160e01b600052603160045260246000fd5b60008251613936818460208701612f97565b919091019291505056fe45524332305072657365744d696e7465725061757365723a206d75737420686146756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249865d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65649f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212206ee59b7150e7d6b34136a7b3e929a8ab9c4efdd59296b906e1c90bc272c6498164736f6c63430008130033";
1209
1209
 
1210
1210
  type GoodDollarConstructorParams =
1211
1211
  | [signer?: Signer]
@@ -750,7 +750,7 @@ const _abi = [
750
750
  ];
751
751
 
752
752
  const _bytecode =
753
- "0x60a0604052306080523480156200001557600080fd5b506040516200396f3803806200396f833981016040819052620000389162000395565b600054610100900460ff1615808015620000595750600054600160ff909116105b8062000089575062000076306200011e60201b620023f31760201c565b15801562000089575060005460ff166001145b620000b15760405162461bcd60e51b8152600401620000a890620003bc565b60405180910390fd5b6000805460ff191660011790558015620000d5576000805461ff0019166101001790555b620000e0826200012d565b801562000116576000805461ff0019169055604051600181526000805160206200394f8339815191529060200160405180910390a15b50506200040a565b6001600160a01b03163b151590565b600054610100900460ff16158080156200014e5750600054600160ff909116105b806200017e57506200016b306200011e60201b620023f31760201c565b1580156200017e575060005460ff166001145b6200019d5760405162461bcd60e51b8152600401620000a890620003bc565b6000805460ff191660011790558015620001c1576000805461ff0019166101001790555b620001cc826200022a565b6203d090609d55624f1a00609e55609f8054620cf850609c5561ffff1916610704179055801562000226576000805461ff0019169055604051600181526000805160206200394f8339815191529060200160405180910390a15b5050565b606780546001600160a01b0319166001600160a01b0383161790556200024f62000252565b50565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa158015620002b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002dc919062000395565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa15801562000337573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200035d919062000395565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811681146200024f57600080fd5b600060208284031215620003a857600080fd5b8151620003b5816200037f565b9392505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60805161350d6200044260003960008181610b8c01528181610bd501528181610fb701528181610ff70152611073015261350d6000f3fe60806040526004361061015d5760003560e01c806308944514146101625780630e47dbd91461018457806312ce63d9146101a8578063195dc7cc146101be5780631b3c90a8146101ea57806324ccc1e7146101ff5780633659cfe6146102215780633e6326fc146102415780634162169f1461026e57806344fa76221461028e57806346382a6a146102ae5780634f1ef286146102dc57806352d1902d146102ef5780635aef7de61461030457806372d00e9f14610324578063791b6bc3146103445780637c6b63b4146103645780638aba4659146103845780639d89e9a4146103a4578063a25dc5f4146103c3578063aac7efb4146103d9578063b6eee2c9146103f9578063b7714ae214610419578063c4d66de814610439578063c81a2b5d14610459578063d02501441461046f578063e1758bd814610502578063e31bf13214610517578063f03b28901461052d578063f4a7a3951461054d575b600080fd5b34801561016e57600080fd5b5061018261017d366004612ad3565b610563565b005b34801561019057600080fd5b5060a0545b6040519081526020015b60405180910390f35b3480156101b457600080fd5b50610195609a5481565b3480156101ca57600080fd5b50609f546101d89060ff1681565b60405160ff909116815260200161019f565b3480156101f657600080fd5b506101826105b4565b34801561020b57600080fd5b506102146106db565b60405161019f9190612af6565b34801561022d57600080fd5b5061018261023c366004612b8e565b610b82565b34801561024d57600080fd5b50606754610261906001600160a01b031681565b60405161019f9190612bab565b34801561027a57600080fd5b50606554610261906001600160a01b031681565b34801561029a57600080fd5b506101956102a9366004612bcd565b610c53565b3480156102ba57600080fd5b506102ce6102c9366004612cda565b610f98565b60405161019f929190612d92565b6101826102ea366004612e16565b610fad565b3480156102fb57600080fd5b50610195611066565b34801561031057600080fd5b50606654610261906001600160a01b031681565b34801561033057600080fd5b5061026161033f366004612ebd565b611114565b34801561035057600080fd5b5061018261035f366004612ebd565b61113e565b34801561037057600080fd5b5061018261037f366004612eef565b61117b565b34801561039057600080fd5b5061018261039f366004612ebd565b6114dc565b3480156103b057600080fd5b50609f546101d890610100900460ff1681565b3480156103cf57600080fd5b50610195609d5481565b3480156103e557600080fd5b506101956103f4366004612ebd565b611519565b34801561040557600080fd5b50610182610414366004612f5a565b61163d565b34801561042557600080fd5b50610182610434366004612ebd565b611f92565b34801561044557600080fd5b50610182610454366004612b8e565b611fcf565b34801561046557600080fd5b50610195609c5481565b34801561047b57600080fd5b506104cc61048a366004612b8e565b60a16020526000908152604090205463ffffffff8116906001600160401b03600160201b8204811691600160601b81049091169060ff600160a01b9091041684565b6040805163ffffffff9590951685526001600160401b03938416602086015291909216908301521515606082015260800161019f565b34801561050e57600080fd5b5061026161210c565b34801561052357600080fd5b50610195609b5481565b34801561053957600080fd5b50610182610548366004612fdf565b612181565b34801561055957600080fd5b50610195609e5481565b61056b612402565b609f805460ff191660ff83169081179091556040519081527fceef3bba37867319344ac9cc91b1d2318daa822bae8d15118d84aedc1fbba330906020015b60405180910390a150565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa158015610617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063b919061300d565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa158015610695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b9919061300d565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b60a0546060906000906001600160401b038111156106fb576106fb612bfd565b604051908082528060200260200182016040528015610724578160200160208202803683370190505b5060a0549091506000906001600160401b0381111561074557610745612bfd565b60405190808252806020026020018201604052801561076e578160200160208202803683370190505b5060a0549091506000906001600160401b0381111561078f5761078f612bfd565b60405190808252806020026020018201604052801561080457816020015b6107f16040518060c0016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000151581525090565b8152602001906001900390816107ad5790505b5090506000805b60a0548112156109465760a081815481106108285761082861302a565b600091825260208220015460405163026c13ed60e21b81526004810192909252600160248301526001600160a01b0316906309b04fb49060440160a060405180830381865afa15801561087f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a39190613040565b955050841592506109349150505760a081815481106108c4576108c461302a565b9060005260206000200160009054906101000a90046001600160a01b03168582815181106108f4576108f461302a565b60200260200101906001600160a01b031690816001600160a01b031681525050818482815181106109275761092761302a565b6020026020010181815250505b8061093e81613096565b91505061080b565b609c5461095385876124c7565b6000806000600160a08054905061096a91906130b5565b94505b60008512610b745760006001600160a01b03168986815181106109925761099261302a565b60200260200101516001600160a01b031614610b5d578885815181106109ba576109ba61302a565b60200260200101516001600160a01b031663e660b53f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2391906130dc565b9250878581518110610a3757610a3761302a565b602002602001015182610a4a91906130f5565b9150610a5683856130f5565b9350609e54609a54610a6891906130f5565b421015610aa857610a7a600180610c53565b609f54610a8a919060ff16613108565b610a99836402540be400613108565b610aa39190613127565b610acc565b610ab3600180610c53565b610ac2836402540be400613108565b610acc9190613127565b90506040518060c001604052808a8781518110610aeb57610aeb61302a565b60200260200101516001600160a01b03168152602001898781518110610b1357610b1361302a565b60200260200101518152602001838152602001858152602001828152602001858310151515815250878681518110610b4d57610b4d61302a565b6020026020010181905250610b62565b610b74565b84610b6c81613149565b95505061096d565b509498975050505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610bd35760405162461bcd60e51b8152600401610bca90613166565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c056124eb565b6001600160a01b031614610c2b5760405162461bcd60e51b8152600401610bca906131a0565b610c3481612507565b60408051600080825260208201909252610c509183919061250f565b50565b60675460405163bf40fac160e01b815260206004820152601060248201526f4741535f50524943455f4f5241434c4560801b604482015260009182916001600160a01b039091169063bf40fac190606401602060405180830381865afa158015610cc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce5919061300d565b90506000816001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4b91906130dc565b60675460405163bf40fac160e01b815260206004820152600e60248201526d4441495f4554485f4f5241434c4560901b60448201529192506000916001600160a01b039091169063bf40fac190606401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc919061300d565b90506000816001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4291906130dc565b9050600081610e5985670de0b6b3a7640000613108565b610e639190613127565b90508615610e8157610e758882613108565b95505050505050610f92565b60675460405163bf40fac160e01b815289916001600160a01b03169063bf40fac190610eaf906004016131da565b602060405180830381865afa158015610ecc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef0919061300d565b6001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5191906130dc565b610f606402540be40084613127565b610f76906b204fce5e3e25026110000000613108565b610f809190613127565b610f8a9190613108565b955050505050505b92915050565b606080610fa584846124c7565b509192909150565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ff55760405162461bcd60e51b8152600401610bca90613166565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166110276124eb565b6001600160a01b03161461104d5760405162461bcd60e51b8152600401610bca906131a0565b61105682612507565b6110628282600161250f565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111015760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610bca565b5060008051602061347183398151915290565b60a0818154811061112457600080fd5b6000918252602090912001546001600160a01b0316905081565b611146612402565b609c8190556040518181527fcc09a90bef37a706a00b53dd3f515f9326b029e41271b4bb87777773962cbc60906020016105a9565b611183612402565b80806111af57506001600160a01b038416600090815260a16020526040902054600160a01b900460ff16155b6111f55760405162461bcd60e51b815260206004820152601760248201527663616e277420756e646f20626c61636b6c697374696e6760481b6044820152606401610bca565b600060405180608001604052808763ffffffff16815260200160008663ffffffff16116112225743611224565b855b63ffffffff166001600160401b0316815260200160008563ffffffff16116112505763ffffffff611252565b845b63ffffffff90811682528415156020928301526001600160a01b038816600090815260a18352604080822085518154958701519287015160608801511515600160a01b0260ff60a01b196001600160401b03928316600160601b0216600160601b600160a81b031995909216600160201b026001600160601b0319909816929096169190911795909517919091169390931791909117909155909150805b60a05460ff8216101561135257866001600160a01b031660a08260ff168154811061131d5761131d61302a565b6000918252602090912001546001600160a01b0316036113405760019150611352565b8061134a816131f8565b9150506112f0565b81801561135c5750835b156114165760a0805461137190600190613217565b815481106113815761138161302a565b60009182526020909120015460a080546001600160a01b039092169160ff84169081106113b0576113b061302a565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08054806113ef576113ef61322a565b600082815260209020810160001990810180546001600160a01b0319169055019055611473565b81158015611422575083155b156114735760a080546001810182556000919091527f78fdc8d422c49ced035a9edf18d00d3c6a8d81df210f3e5e448e045e77b41e880180546001600160a01b0319166001600160a01b0389161790555b6040805163ffffffff8a811682526001600160a01b038a1660208301528881168284015287166060820152851515608082015290517fcfeece178cde5fc0c509d31ec15ec2d996342bec5d9820be8aabbda11a21205b9181900360a00190a15050505050505050565b6114e4612402565b609d8190556040518181527f08deabc2cb3286b159d9350bf977350e1f31e39ae44075269082a800e9ee59de906020016105a9565b600080611527836000610c53565b60675460405163bf40fac160e01b81529192506000916001600160a01b039091169063bf40fac19061155b90600401613240565b602060405180830381865afa158015611578573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159c919061300d565b6001600160a01b0316639d1b464a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fd91906130dc565b90506a084595161401484a0000008161162184676765c793fa10079d601b1b613108565b61162b9190613127565b6116359190613127565b949350505050565b60005a60675460405163bf40fac160e01b81529192506000918291829182916001600160a01b03169063bf40fac190611678906004016131da565b602060405180830381865afa158015611695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b9919061300d565b60675460405163bf40fac160e01b815260206004820152600360248201526244414960e81b60448201529192506000916001600160a01b039091169063bf40fac190606401602060405180830381865afa15801561171b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173f919061300d565b60675460405163bf40fac160e01b81529192506001600160a01b03169063bf40fac19061176e90600401613240565b602060405180830381865afa15801561178b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117af919061300d565b92506000816001600160a01b03166370a08231856040518263ffffffff1660e01b81526004016117df9190612bab565b602060405180830381865afa1580156117fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061182091906130dc565b90506000836001600160a01b03166370a08231866040518263ffffffff1660e01b81526004016118509190612bab565b602060405180830381865afa15801561186d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189191906130dc565b905060006118a060018c613217565b90505b60008c8c838181106118b7576118b761302a565b90506020020160208101906118cc9190612b8e565b6001600160a01b031614611973578b8b828181106118ec576118ec61302a565b90506020020160208101906119019190612b8e565b6001600160a01b03166337455990876040518263ffffffff1660e01b815260040161192c9190612bab565b6060604051808303816000875af115801561194b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196f9190613261565b5050505b801561198b57806119838161328f565b9150506118a3565b50600082846001600160a01b03166370a08231886040518263ffffffff1660e01b81526004016119bb9190612bab565b602060405180830381865afa1580156119d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fc91906130dc565b611a069190613217565b604051631de778a560e01b815260048101829052602481018490526001600160a01b03878116604483015291925090871690631de778a59060640160408051808303816000875af1158015611a5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a83919061329e565b60675460405163bf40fac160e01b8152929a509098506000916001600160a01b039091169063bf40fac190611aba906004016132c2565b602060405180830381865afa158015611ad7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611afb919061300d565b90508815611cfe5760675460405163bf40fac160e01b815260206004820152600f60248201526e1094925111d157d0d3d395149050d5608a1b60448201526001600160a01b0383811692634000aea09291169063bf40fac190606401602060405180830381865afa158015611b74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b98919061300d565b60675460405163bf40fac160e01b815260206004820152600d60248201526c15509257d49150d25412515395609a1b60448201528d916001600160a01b03169063bf40fac190606401602060405180830381865afa158015611bfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c22919061300d565b604051602001611c45919060609190911b6001600160601b031916815260140190565b6040516020818303038152906040526040518463ffffffff1660e01b8152600401611c7293929190613336565b6020604051808303816000875af1158015611c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cb5919061335d565b611cfe5760405162461bcd60e51b815260206004820152601a6024820152791d589a48189c9a5919d9481d1c985b9cd9995c8819985a5b195960321b6044820152606401610bca565b50505050505060008515156000151503611f355760006064609d545a611d249089613217565b611d2e91906130f5565b611d3990606e613108565b611d439190613127565b9050611d4e81611519565b60675460405163bf40fac160e01b81529193506001600160a01b038086169263f8a9978f929091169063bf40fac190611d89906004016131da565b602060405180830381865afa158015611da6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dca919061300d565b33856040518463ffffffff1660e01b8152600401611dea9392919061337a565b600060405180830381600087803b158015611e0457600080fd5b505af1158015611e18573d6000803e3d6000fd5b505050506000611e335a611e2c9089613217565b6000610c53565b9050609e54609a54611e4591906130f5565b4210611eb45780851015611eaf5760405162461bcd60e51b815260206004820152603e60248201526000805160206134b883398151915260448201527f6265206c6172676572207468616e207370656e742067617320636f73747300006064820152608401610bca565b611f32565b609f54611ec590829060ff16613108565b851015611f325760405162461bcd60e51b815260206004820152604160248201526000805160206134b883398151915260448201527f626520696e7465726573744d756c7469706c69657220782067617320636f73746064820152607360f81b608482015260a401610bca565b50505b336001600160a01b03167fa152fd34a7e4c4c82eb0c0b0319d3913dc9189d62ae2fe75aef590f0e391a928838a8a878987604051611f789695949392919061339e565b60405180910390a2505042609a55505043609b5550505050565b611f9a612402565b609e8190556040518181527f28b3b60d9fa0f6edab793c2422ff4784f9381ff9d2062481d1254f732452bfbf906020016105a9565b600054610100900460ff1615808015611fef5750600054600160ff909116105b806120105750611ffe306123f3565b158015612010575060005460ff166001145b6120735760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610bca565b6000805460ff191660011790558015612096576000805461ff0019166101001790555b61209f8261267f565b6203d090609d55624f1a00609e55609f8054620cf850609c5561ffff19166107041790558015611062576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60675460405163bf40fac160e01b81526000916001600160a01b03169063bf40fac19061213b906004016132c2565b602060405180830381865afa158015612158573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217c919061300d565b905090565b33600090815260a160209081526040918290208251608081018452905463ffffffff81168252600160201b81046001600160401b03908116938301849052600160601b82041693820193909352600160a01b90920460ff161515606083015261222c5760405162461bcd60e51b815260206004820152601f60248201527f5374616b696e6720636f6e7472616374206e6f742072656769737465726564006044820152606401610bca565b80516020820151604080840151905163574c5c9360e01b81526001600160a01b038616600482015263ffffffff90931660248401526001600160401b039182166044840152166064820152600090339063574c5c93906084016020604051808303816000875af11580156122a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122c891906130dc565b90506000811180156122dc57506060820151155b156123ed5760675460405163bf40fac160e01b81526001600160a01b039091169063bf40fac19061230f90600401613240565b602060405180830381865afa15801561232c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612350919061300d565b6001600160a01b031663f8a9978f8585846040518463ffffffff1660e01b815260040161237f9392919061337a565b600060405180830381600087803b15801561239957600080fd5b505af11580156123ad573d6000803e3d6000fd5b505050507f5c4a97f844ad1dc8cad420327f32da9b4bd075bab26efa2ae5bd66f84d1fce073384836040516123e49392919061337a565b60405180910390a15b50505050565b6001600160a01b03163b151590565b60655460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de69160048083019260209291908290030181865afa15801561244b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061246f919061300d565b6001600160a01b0316146124c55760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f646044820152606401610bca565b565b6001825111156110625761106282826000600186516124e69190613217565b6126a2565b600080516020613471833981519152546001600160a01b031690565b610c50612402565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156125475761254283612898565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156125a1575060408051601f3d908101601f1916820190925261259e918101906130dc565b60015b6126045760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610bca565b60008051602061347183398151915281146126735760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610bca565b50612542838383612932565b606780546001600160a01b0319166001600160a01b038316179055610c506105b4565b808210156123ed5760008460026126b984866130f5565b6126c39190613127565b815181106126d3576126d361302a565b6020908102919091010151905082825b828783815181106126f6576126f661302a565b60200260200101511015612716578161270e8161340f565b9250506126e3565b828782815181106127295761272961302a565b6020026020010151111561274957806127418161328f565b915050612716565b8082101561285a578681815181106127635761276361302a565b602002602001015187838151811061277d5761277d61302a565b60200260200101518884815181106127975761279761302a565b602002602001018984815181106127b0576127b061302a565b60200260200101828152508281525050508581815181106127d3576127d361302a565b60200260200101518683815181106127ed576127ed61302a565b60200260200101518784815181106128075761280761302a565b602002602001018884815181106128205761282061302a565b6001600160a01b03938416602091820292909201015291169052816128448161340f565b92505080806128529061328f565b9150506126e3565b8085101561286e5761286e878787846126a2565b806128788161340f565b9150508381101561288f5761288f878783876126a2565b50505050505050565b6128a1816123f3565b6129035760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610bca565b60008051602061347183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61293b83612957565b6000825111806129485750805b15612542576123ed8383612997565b61296081612898565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606129a2836123f3565b6129fd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610bca565b600080846001600160a01b031684604051612a189190613421565b600060405180830381855af49150503d8060008114612a53576040519150601f19603f3d011682016040523d82523d6000602084013e612a58565b606091505b5091509150612a80828260405180606001604052806027815260200161349160279139612a89565b95945050505050565b60608315612a98575081612aa2565b612aa28383612aa9565b9392505050565b815115612ab95781518083602001fd5b8060405162461bcd60e51b8152600401610bca919061343d565b600060208284031215612ae557600080fd5b813560ff81168114612aa257600080fd5b602080825282518282018190526000919060409081850190868401855b82811015612b6c57815180516001600160a01b0316855286810151878601528581015186860152606080820151908601526080808201519086015260a09081015115159085015260c09093019290850190600101612b13565b5091979650505050505050565b6001600160a01b0381168114610c5057600080fd5b600060208284031215612ba057600080fd5b8135612aa281612b79565b6001600160a01b0391909116815260200190565b8015158114610c5057600080fd5b60008060408385031215612be057600080fd5b823591506020830135612bf281612bbf565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715612c3b57612c3b612bfd565b604052919050565b60006001600160401b03821115612c5c57612c5c612bfd565b5060051b60200190565b600082601f830112612c7757600080fd5b81356020612c8c612c8783612c43565b612c13565b82815260059290921b84018101918181019086841115612cab57600080fd5b8286015b84811015612ccf578035612cc281612b79565b8352918301918301612caf565b509695505050505050565b60008060408385031215612ced57600080fd5b82356001600160401b0380821115612d0457600080fd5b818501915085601f830112612d1857600080fd5b81356020612d28612c8783612c43565b82815260059290921b84018101918181019089841115612d4757600080fd5b948201945b83861015612d6557853582529482019490820190612d4c565b96505086013592505080821115612d7b57600080fd5b50612d8885828601612c66565b9150509250929050565b604080825283519082018190526000906020906060840190828701845b82811015612dcb57815184529284019290840190600101612daf565b5050508381038285015284518082528583019183019060005b81811015612e095783516001600160a01b031683529284019291840191600101612de4565b5090979650505050505050565b60008060408385031215612e2957600080fd5b8235612e3481612b79565b91506020838101356001600160401b0380821115612e5157600080fd5b818601915086601f830112612e6557600080fd5b813581811115612e7757612e77612bfd565b612e89601f8201601f19168501612c13565b91508082528784828501011115612e9f57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215612ecf57600080fd5b5035919050565b803563ffffffff81168114612eea57600080fd5b919050565b600080600080600060a08688031215612f0757600080fd5b612f1086612ed6565b94506020860135612f2081612b79565b9350612f2e60408701612ed6565b9250612f3c60608701612ed6565b91506080860135612f4c81612bbf565b809150509295509295909350565b600080600060408486031215612f6f57600080fd5b83356001600160401b0380821115612f8657600080fd5b818601915086601f830112612f9a57600080fd5b813581811115612fa957600080fd5b8760208260051b8501011115612fbe57600080fd5b60209283019550935050840135612fd481612bbf565b809150509250925092565b60008060408385031215612ff257600080fd5b8235612ffd81612b79565b91506020830135612bf281612b79565b60006020828403121561301f57600080fd5b8151612aa281612b79565b634e487b7160e01b600052603260045260246000fd5b600080600080600060a0868803121561305857600080fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b634e487b7160e01b600052601160045260246000fd5b60006001600160ff1b0182016130ae576130ae613080565b5060010190565b81810360008312801583831316838312821617156130d5576130d5613080565b5092915050565b6000602082840312156130ee57600080fd5b5051919050565b80820180821115610f9257610f92613080565b600081600019048311821515161561312257613122613080565b500290565b60008261314457634e487b7160e01b600052601260045260246000fd5b500490565b6000600160ff1b820161315e5761315e613080565b506000190190565b6020808252602c9082015260008051602061345183398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602061345183398151915260408201526b6163746976652070726f787960a01b606082015260800190565b6020808252600490820152634344414960e01b604082015260600190565b600060ff821660ff810361320e5761320e613080565b60010192915050565b81810381811115610f9257610f92613080565b634e487b7160e01b600052603160045260246000fd5b6020808252600790820152665245534552564560c81b604082015260600190565b60008060006060848603121561327657600080fd5b8351925060208401519150604084015190509250925092565b60008161315e5761315e613080565b600080604083850312156132b157600080fd5b505080516020909101519092909150565b6020808252600a908201526923a7a7a22227a62620a960b11b604082015260600190565b60005b838110156133015781810151838201526020016132e9565b50506000910152565b600081518084526133228160208601602086016132e6565b601f01601f19169290920160200192915050565b60018060a01b0384168152826020820152606060408201526000612a80606083018461330a565b60006020828403121561336f57600080fd5b8151612aa281612bbf565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03878116825260a06020808401829052908301879052600091889160c08501845b8a8110156133ed5784356133d981612b79565b8416825293820193908201906001016133c6565b5060408601989098525050505060608101929092526080909101529392505050565b6000600182016130ae576130ae613080565b600082516134338184602087016132e6565b9190910192915050565b602081526000612aa2602083018461330a56fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564436f6c6c656374656420696e7465726573742076616c75652073686f756c6420a264697066735822122083367986d61b99f5945dbf61624505557cd55aad1853afca76abaa0bfb595ef764736f6c634300081000337f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498";
753
+ "0x60a0604052306080523480156200001557600080fd5b506040516200362c3803806200362c83398101604081905262000038916200037f565b600054610100900460ff1615808015620000595750600054600160ff909116105b806200007e57506200006b3062000113565b1580156200007e575060005460ff166001145b620000a65760405162461bcd60e51b81526004016200009d90620003a6565b60405180910390fd5b6000805460ff191660011790558015620000ca576000805461ff0019166101001790555b620000d58262000122565b80156200010b576000805461ff0019169055604051600181526000805160206200360c8339815191529060200160405180910390a15b5050620003f4565b6001600160a01b03163b151590565b600054610100900460ff1615808015620001435750600054600160ff909116105b80620001685750620001553062000113565b15801562000168575060005460ff166001145b620001875760405162461bcd60e51b81526004016200009d90620003a6565b6000805460ff191660011790558015620001ab576000805461ff0019166101001790555b620001b68262000214565b6203d090609d55624f1a00609e55609f8054620cf850609c5561ffff1916610704179055801562000210576000805461ff0019169055604051600181526000805160206200360c8339815191529060200160405180910390a15b5050565b606780546001600160a01b0319166001600160a01b038316179055620002396200023c565b50565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa158015620002a0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002c691906200037f565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa15801562000321573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034791906200037f565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811681146200023957600080fd5b6000602082840312156200039257600080fd5b81516200039f8162000369565b9392505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6080516131e06200042c60003960008181610b8c01528181610bd501528181610fb701528181610ff7015261107301526131e06000f3fe60806040526004361061015d5760003560e01c806308944514146101625780630e47dbd91461018457806312ce63d9146101a8578063195dc7cc146101be5780631b3c90a8146101ea57806324ccc1e7146101ff5780633659cfe6146102215780633e6326fc146102415780634162169f1461026e57806344fa76221461028e57806346382a6a146102ae5780634f1ef286146102dc57806352d1902d146102ef5780635aef7de61461030457806372d00e9f14610324578063791b6bc3146103445780637c6b63b4146103645780638aba4659146103845780639d89e9a4146103a4578063a25dc5f4146103c3578063aac7efb4146103d9578063b6eee2c9146103f9578063b7714ae214610419578063c4d66de814610439578063c81a2b5d14610459578063d02501441461046f578063e1758bd814610502578063e31bf13214610517578063f03b28901461052d578063f4a7a3951461054d575b600080fd5b34801561016e57600080fd5b5061018261017d36600461283f565b610563565b005b34801561019057600080fd5b5060a0545b6040519081526020015b60405180910390f35b3480156101b457600080fd5b50610195609a5481565b3480156101ca57600080fd5b50609f546101d89060ff1681565b60405160ff909116815260200161019f565b3480156101f657600080fd5b506101826105b4565b34801561020b57600080fd5b506102146106db565b60405161019f9190612862565b34801561022d57600080fd5b5061018261023c3660046128fa565b610b82565b34801561024d57600080fd5b50606754610261906001600160a01b031681565b60405161019f9190612917565b34801561027a57600080fd5b50606554610261906001600160a01b031681565b34801561029a57600080fd5b506101956102a9366004612940565b610c53565b3480156102ba57600080fd5b506102ce6102c9366004612a49565b610f98565b60405161019f929190612b01565b6101826102ea366004612b85565b610fad565b3480156102fb57600080fd5b50610195611066565b34801561031057600080fd5b50606654610261906001600160a01b031681565b34801561033057600080fd5b5061026161033f366004612c2c565b611114565b34801561035057600080fd5b5061018261035f366004612c2c565b61113e565b34801561037057600080fd5b5061018261037f366004612c59565b61117b565b34801561039057600080fd5b5061018261039f366004612c2c565b6114dc565b3480156103b057600080fd5b50609f546101d890610100900460ff1681565b3480156103cf57600080fd5b50610195609d5481565b3480156103e557600080fd5b506101956103f4366004612c2c565b611519565b34801561040557600080fd5b50610182610414366004612cc0565b61163d565b34801561042557600080fd5b50610182610434366004612c2c565b611ce6565b34801561044557600080fd5b506101826104543660046128fa565b611d23565b34801561046557600080fd5b50610195609c5481565b34801561047b57600080fd5b506104cc61048a3660046128fa565b60a16020526000908152604090205463ffffffff8116906001600160401b03600160201b8204811691600160601b81049091169060ff600160a01b9091041684565b6040805163ffffffff9590951685526001600160401b03938416602086015291909216908301521515606082015260800161019f565b34801561050e57600080fd5b50610261611e60565b34801561052357600080fd5b50610195609b5481565b34801561053957600080fd5b50610182610548366004612d43565b611eed565b34801561055957600080fd5b50610195609e5481565b61056b61215f565b609f805460ff191660ff83169081179091556040519081527fceef3bba37867319344ac9cc91b1d2318daa822bae8d15118d84aedc1fbba330906020015b60405180910390a150565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa158015610617573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061063b9190612d7c565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa158015610695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b99190612d7c565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b60a0546060906000906001600160401b038111156106fb576106fb61296c565b604051908082528060200260200182016040528015610724578160200160208202803683370190505b5060a0549091506000906001600160401b038111156107455761074561296c565b60405190808252806020026020018201604052801561076e578160200160208202803683370190505b5060a0549091506000906001600160401b0381111561078f5761078f61296c565b60405190808252806020026020018201604052801561080457816020015b6107f16040518060c0016040528060006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000151581525090565b8152602001906001900390816107ad5790505b5090506000805b60a0548112156109465760a0818154811061082857610828612d99565b600091825260208220015460405163026c13ed60e21b81526004810192909252600160248301526001600160a01b0316906309b04fb49060440160a060405180830381865afa15801561087f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a39190612daf565b955050841592506109349150505760a081815481106108c4576108c4612d99565b9060005260206000200160009054906101000a90046001600160a01b03168582815181106108f4576108f4612d99565b60200260200101906001600160a01b031690816001600160a01b0316815250508184828151811061092757610927612d99565b6020026020010181815250505b8061093e81612e05565b91505061080b565b609c546109538587612224565b6000806000600160a08054905061096a9190612e24565b94505b60008512610b745760006001600160a01b031689868151811061099257610992612d99565b60200260200101516001600160a01b031614610b5d578885815181106109ba576109ba612d99565b60200260200101516001600160a01b031663e660b53f6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a239190612e4b565b9250878581518110610a3757610a37612d99565b602002602001015182610a4a9190612e64565b9150610a568385612e64565b9350609e54609a54610a689190612e64565b421015610aa857610a7a600180610c53565b609f54610a8a919060ff16612e77565b610a99836402540be400612e77565b610aa39190612e8e565b610acc565b610ab3600180610c53565b610ac2836402540be400612e77565b610acc9190612e8e565b90506040518060c001604052808a8781518110610aeb57610aeb612d99565b60200260200101516001600160a01b03168152602001898781518110610b1357610b13612d99565b60200260200101518152602001838152602001858152602001828152602001858310151515815250878681518110610b4d57610b4d612d99565b6020026020010181905250610b62565b610b74565b84610b6c81612eb0565b95505061096d565b509498975050505050505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610bd35760405162461bcd60e51b8152600401610bca90612ecd565b60405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c05612248565b6001600160a01b031614610c2b5760405162461bcd60e51b8152600401610bca90612f07565b610c3481612264565b60408051600080825260208201909252610c509183919061226c565b50565b60675460405163bf40fac160e01b815260206004820152601060248201526f4741535f50524943455f4f5241434c4560801b604482015260009182916001600160a01b039091169063bf40fac190606401602060405180830381865afa158015610cc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce59190612d7c565b90506000816001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4b9190612e4b565b60675460405163bf40fac160e01b815260206004820152600e60248201526d4441495f4554485f4f5241434c4560901b60448201529192506000916001600160a01b039091169063bf40fac190606401602060405180830381865afa158015610db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddc9190612d7c565b90506000816001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e429190612e4b565b9050600081610e5985670de0b6b3a7640000612e77565b610e639190612e8e565b90508615610e8157610e758882612e77565b95505050505050610f92565b60675460405163bf40fac160e01b815289916001600160a01b03169063bf40fac190610eaf90600401612f41565b602060405180830381865afa158015610ecc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef09190612d7c565b6001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f519190612e4b565b610f606402540be40084612e8e565b610f76906b204fce5e3e25026110000000612e77565b610f809190612e8e565b610f8a9190612e77565b955050505050505b92915050565b606080610fa58484612224565b509192909150565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610ff55760405162461bcd60e51b8152600401610bca90612ecd565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611027612248565b6001600160a01b03161461104d5760405162461bcd60e51b8152600401610bca90612f07565b61105682612264565b6110628282600161226c565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111015760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610bca565b5060008051602061316483398151915290565b60a0818154811061112457600080fd5b6000918252602090912001546001600160a01b0316905081565b61114661215f565b609c8190556040518181527fcc09a90bef37a706a00b53dd3f515f9326b029e41271b4bb87777773962cbc60906020016105a9565b61118361215f565b80806111af57506001600160a01b038416600090815260a16020526040902054600160a01b900460ff16155b6111f55760405162461bcd60e51b815260206004820152601760248201527663616e277420756e646f20626c61636b6c697374696e6760481b6044820152606401610bca565b600060405180608001604052808763ffffffff16815260200160008663ffffffff16116112225743611224565b855b63ffffffff166001600160401b0316815260200160008563ffffffff16116112505763ffffffff611252565b845b63ffffffff90811682528415156020928301526001600160a01b038816600090815260a18352604080822085518154958701519287015160608801511515600160a01b0260ff60a01b196001600160401b03928316600160601b0216600160601b600160a81b031995909216600160201b026001600160601b0319909816929096169190911795909517919091169390931791909117909155909150805b60a05460ff8216101561135257866001600160a01b031660a08260ff168154811061131d5761131d612d99565b6000918252602090912001546001600160a01b0316036113405760019150611352565b8061134a81612f5f565b9150506112f0565b81801561135c5750835b156114165760a0805461137190600190612f7e565b8154811061138157611381612d99565b60009182526020909120015460a080546001600160a01b039092169160ff84169081106113b0576113b0612d99565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08054806113ef576113ef612f91565b600082815260209020810160001990810180546001600160a01b0319169055019055611473565b81158015611422575083155b156114735760a080546001810182556000919091527f78fdc8d422c49ced035a9edf18d00d3c6a8d81df210f3e5e448e045e77b41e880180546001600160a01b0319166001600160a01b0389161790555b6040805163ffffffff8a811682526001600160a01b038a1660208301528881168284015287166060820152851515608082015290517fcfeece178cde5fc0c509d31ec15ec2d996342bec5d9820be8aabbda11a21205b9181900360a00190a15050505050505050565b6114e461215f565b609d8190556040518181527f08deabc2cb3286b159d9350bf977350e1f31e39ae44075269082a800e9ee59de906020016105a9565b600080611527836000610c53565b60675460405163bf40fac160e01b81529192506000916001600160a01b039091169063bf40fac19061155b90600401612fa7565b602060405180830381865afa158015611578573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061159c9190612d7c565b6001600160a01b0316639d1b464a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115fd9190612e4b565b90506a084595161401484a0000008161162184676765c793fa10079d601b1b612e77565b61162b9190612e8e565b6116359190612e8e565b949350505050565b60005a60675460405163bf40fac160e01b81529192506000918291829182916001600160a01b03169063bf40fac19061167890600401612f41565b602060405180830381865afa158015611695573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b99190612d7c565b60675460405163bf40fac160e01b815260206004820152600360248201526244414960e81b60448201529192506000916001600160a01b039091169063bf40fac190606401602060405180830381865afa15801561171b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173f9190612d7c565b60675460405163bf40fac160e01b81529192506001600160a01b03169063bf40fac19061176e90600401612fa7565b602060405180830381865afa15801561178b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117af9190612d7c565b92506000816001600160a01b03166370a08231856040518263ffffffff1660e01b81526004016117df9190612917565b602060405180830381865afa1580156117fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118209190612e4b565b90506000836001600160a01b03166370a08231866040518263ffffffff1660e01b81526004016118509190612917565b602060405180830381865afa15801561186d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118919190612e4b565b9050895b80156119915760008c8c6118aa600185612f7e565b8181106118b9576118b9612d99565b90506020020160208101906118ce91906128fa565b6001600160a01b03161461197f578b8b6118e9600184612f7e565b8181106118f8576118f8612d99565b905060200201602081019061190d91906128fa565b6001600160a01b03166337455990876040518263ffffffff1660e01b81526004016119389190612917565b6060604051808303816000875af1158015611957573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061197b9190612fc8565b5050505b8061198981612ff6565b915050611895565b50600082846001600160a01b03166370a08231886040518263ffffffff1660e01b81526004016119c19190612917565b602060405180830381865afa1580156119de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a029190612e4b565b611a0c9190612f7e565b604051631de778a560e01b815260048101829052602481018490526001600160a01b03878116604483015291925090871690631de778a59060640160408051808303816000875af1158015611a65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a899190613005565b90985096506000945050505086151582039050611c895760006064609d545a611ab29089612f7e565b611abc9190612e64565b611ac790606e612e77565b611ad19190612e8e565b9050611adc81611519565b60675460405163bf40fac160e01b81529193506001600160a01b038086169263f8a9978f929091169063bf40fac190611b1790600401612f41565b602060405180830381865afa158015611b34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b589190612d7c565b33856040518463ffffffff1660e01b8152600401611b7893929190613029565b600060405180830381600087803b158015611b9257600080fd5b505af1158015611ba6573d6000803e3d6000fd5b505050506000611bb7826000610c53565b9050609e54609a54611bc99190612e64565b4210611c165780851015611c115760405162461bcd60e51b815260206004820152600f60248201526e554249203c2067617320636f73747360881b6044820152606401610bca565b611c86565b609f54611c2790829060ff16612e77565b85101580611c455750609f54611c4190849060ff16612e77565b8610155b611c865760405162461bcd60e51b8152602060048201526012602482015271554249203c2020582a67617320636f73747360701b6044820152606401610bca565b50505b336001600160a01b03167fa152fd34a7e4c4c82eb0c0b0319d3913dc9189d62ae2fe75aef590f0e391a928838a8a878987604051611ccc9695949392919061304d565b60405180910390a2505042609a55505043609b5550505050565b611cee61215f565b609e8190556040518181527f28b3b60d9fa0f6edab793c2422ff4784f9381ff9d2062481d1254f732452bfbf906020016105a9565b600054610100900460ff1615808015611d435750600054600160ff909116105b80611d645750611d52306123dc565b158015611d64575060005460ff166001145b611dc75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610bca565b6000805460ff191660011790558015611dea576000805461ff0019166101001790555b611df3826123eb565b6203d090609d55624f1a00609e55609f8054620cf850609c5561ffff19166107041790558015611062576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60675460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015611ec4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ee89190612d7c565b905090565b33600090815260a160209081526040918290208251608081018452905463ffffffff81168252600160201b81046001600160401b03908116938301849052600160601b82041693820193909352600160a01b90920460ff1615156060830152611f985760405162461bcd60e51b815260206004820152601f60248201527f5374616b696e6720636f6e7472616374206e6f742072656769737465726564006044820152606401610bca565b80516020820151604080840151905163574c5c9360e01b81526001600160a01b038616600482015263ffffffff90931660248401526001600160401b039182166044840152166064820152600090339063574c5c93906084016020604051808303816000875af1158015612010573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120349190612e4b565b905060008111801561204857506060820151155b156121595760675460405163bf40fac160e01b81526001600160a01b039091169063bf40fac19061207b90600401612fa7565b602060405180830381865afa158015612098573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120bc9190612d7c565b6001600160a01b031663f8a9978f8585846040518463ffffffff1660e01b81526004016120eb93929190613029565b600060405180830381600087803b15801561210557600080fd5b505af1158015612119573d6000803e3d6000fd5b505050507f5c4a97f844ad1dc8cad420327f32da9b4bd075bab26efa2ae5bd66f84d1fce0733848360405161215093929190613029565b60405180910390a15b50505050565b60655460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de69160048083019260209291908290030181865afa1580156121a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cc9190612d7c565b6001600160a01b0316146122225760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f646044820152606401610bca565b565b6001825111156110625761106282826000600186516122439190612f7e565b61240e565b600080516020613164833981519152546001600160a01b031690565b610c5061215f565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156122a45761229f83612604565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156122fe575060408051601f3d908101601f191682019092526122fb91810190612e4b565b60015b6123615760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610bca565b60008051602061316483398151915281146123d05760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610bca565b5061229f83838361269e565b6001600160a01b03163b151590565b606780546001600160a01b0319166001600160a01b038316179055610c506105b4565b808210156121595760008460026124258486612e64565b61242f9190612e8e565b8151811061243f5761243f612d99565b6020908102919091010151905082825b8287838151811061246257612462612d99565b60200260200101511015612482578161247a816130be565b92505061244f565b8287828151811061249557612495612d99565b602002602001015111156124b557806124ad81612ff6565b915050612482565b808210156125c6578681815181106124cf576124cf612d99565b60200260200101518783815181106124e9576124e9612d99565b602002602001015188848151811061250357612503612d99565b6020026020010189848151811061251c5761251c612d99565b602002602001018281525082815250505085818151811061253f5761253f612d99565b602002602001015186838151811061255957612559612d99565b602002602001015187848151811061257357612573612d99565b6020026020010188848151811061258c5761258c612d99565b6001600160a01b03938416602091820292909201015291169052816125b0816130be565b92505080806125be90612ff6565b91505061244f565b808510156125da576125da8787878461240e565b806125e4816130be565b915050838110156125fb576125fb8787838761240e565b50505050505050565b61260d816123dc565b61266f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610bca565b60008051602061316483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6126a7836126c3565b6000825111806126b45750805b1561229f576121598383612703565b6126cc81612604565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061270e836123dc565b6127695760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610bca565b600080846001600160a01b03168460405161278491906130f4565b600060405180830381855af49150503d80600081146127bf576040519150601f19603f3d011682016040523d82523d6000602084013e6127c4565b606091505b50915091506127ec8282604051806060016040528060278152602001613184602791396127f5565b95945050505050565b6060831561280457508161280e565b61280e8383612815565b9392505050565b8151156128255781518083602001fd5b8060405162461bcd60e51b8152600401610bca9190613110565b60006020828403121561285157600080fd5b813560ff8116811461280e57600080fd5b602080825282518282018190526000919060409081850190868401855b828110156128d857815180516001600160a01b0316855286810151878601528581015186860152606080820151908601526080808201519086015260a09081015115159085015260c0909301929085019060010161287f565b5091979650505050505050565b6001600160a01b0381168114610c5057600080fd5b60006020828403121561290c57600080fd5b813561280e816128e5565b6001600160a01b0391909116815260200190565b8035801515811461293b57600080fd5b919050565b6000806040838503121561295357600080fd5b823591506129636020840161292b565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156129aa576129aa61296c565b604052919050565b60006001600160401b038211156129cb576129cb61296c565b5060051b60200190565b600082601f8301126129e657600080fd5b813560206129fb6129f6836129b2565b612982565b82815260059290921b84018101918181019086841115612a1a57600080fd5b8286015b84811015612a3e578035612a31816128e5565b8352918301918301612a1e565b509695505050505050565b60008060408385031215612a5c57600080fd5b82356001600160401b0380821115612a7357600080fd5b818501915085601f830112612a8757600080fd5b81356020612a976129f6836129b2565b82815260059290921b84018101918181019089841115612ab657600080fd5b948201945b83861015612ad457853582529482019490820190612abb565b96505086013592505080821115612aea57600080fd5b50612af7858286016129d5565b9150509250929050565b604080825283519082018190526000906020906060840190828701845b82811015612b3a57815184529284019290840190600101612b1e565b5050508381038285015284518082528583019183019060005b81811015612b785783516001600160a01b031683529284019291840191600101612b53565b5090979650505050505050565b60008060408385031215612b9857600080fd5b8235612ba3816128e5565b91506020838101356001600160401b0380821115612bc057600080fd5b818601915086601f830112612bd457600080fd5b813581811115612be657612be661296c565b612bf8601f8201601f19168501612982565b91508082528784828501011115612c0e57600080fd5b80848401858401376000848284010152508093505050509250929050565b600060208284031215612c3e57600080fd5b5035919050565b803563ffffffff8116811461293b57600080fd5b600080600080600060a08688031215612c7157600080fd5b612c7a86612c45565b94506020860135612c8a816128e5565b9350612c9860408701612c45565b9250612ca660608701612c45565b9150612cb46080870161292b565b90509295509295909350565b600080600060408486031215612cd557600080fd5b83356001600160401b0380821115612cec57600080fd5b818601915086601f830112612d0057600080fd5b813581811115612d0f57600080fd5b8760208260051b8501011115612d2457600080fd5b602092830195509350612d3a918601905061292b565b90509250925092565b60008060408385031215612d5657600080fd5b8235612d61816128e5565b91506020830135612d71816128e5565b809150509250929050565b600060208284031215612d8e57600080fd5b815161280e816128e5565b634e487b7160e01b600052603260045260246000fd5b600080600080600060a08688031215612dc757600080fd5b5050835160208501516040860151606087015160809097015192989197509594509092509050565b634e487b7160e01b600052601160045260246000fd5b60006001600160ff1b018201612e1d57612e1d612def565b5060010190565b8181036000831280158383131683831282161715612e4457612e44612def565b5092915050565b600060208284031215612e5d57600080fd5b5051919050565b80820180821115610f9257610f92612def565b8082028115828204841417610f9257610f92612def565b600082612eab57634e487b7160e01b600052601260045260246000fd5b500490565b6000600160ff1b8201612ec557612ec5612def565b506000190190565b6020808252602c9082015260008051602061314483398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602061314483398151915260408201526b6163746976652070726f787960a01b606082015260800190565b6020808252600490820152634344414960e01b604082015260600190565b600060ff821660ff8103612f7557612f75612def565b60010192915050565b81810381811115610f9257610f92612def565b634e487b7160e01b600052603160045260246000fd5b6020808252600790820152665245534552564560c81b604082015260600190565b600080600060608486031215612fdd57600080fd5b8351925060208401519150604084015190509250925092565b600081612ec557612ec5612def565b6000806040838503121561301857600080fd5b505080516020909101519092909150565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03878116825260a06020808401829052908301879052600091889160c08501845b8a81101561309c578435613088816128e5565b841682529382019390820190600101613075565b5060408601989098525050505060608101929092526080909101529392505050565b600060018201612e1d57612e1d612def565b60005b838110156130eb5781810151838201526020016130d3565b50506000910152565b600082516131068184602087016130d0565b9190910192915050565b602081526000825180602084015261312f8160408501602087016130d0565b601f01601f1916919091016040019291505056fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202440ea12b290611fe61a630ea90bc11cfc054ec85559428bc7ba798803fa079a64736f6c634300081300337f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498";
754
754
 
755
755
  type GoodFundManagerTestConstructorParams =
756
756
  | [signer?: Signer]