@gooddollar/goodprotocol 2.0.2 → 2.0.3

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 (187) hide show
  1. package/artifacts/abis/AdminWalletFuse.min.json +1 -1
  2. package/artifacts/abis/Faucet.min.json +1 -1
  3. package/artifacts/abis/FuseFaucetV2.min.json +1 -1
  4. package/artifacts/abis/GoodDollarMintBurnWrapper.min.json +1 -1
  5. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  6. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  7. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  8. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  9. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  10. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  11. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  12. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  13. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  14. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  15. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  16. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  17. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  18. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  19. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  20. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  21. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +1 -1
  23. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  24. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  27. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  28. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  31. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  32. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  33. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  34. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
  35. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.json +43 -17
  36. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  37. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
  38. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.json +55 -17
  39. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  40. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  41. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  42. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
  43. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +1 -1
  44. package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +1 -1
  45. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
  46. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  47. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  48. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  49. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  50. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +1 -1
  51. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.json +2 -2
  52. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +1 -1
  53. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  54. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
  55. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  56. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  57. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  58. package/artifacts/contracts/mocks/DistributionBridgeMock.sol/DistributionBridgeMock.dbg.json +1 -1
  59. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTest.dbg.json +1 -1
  60. package/artifacts/contracts/mocks/DistributionHelperTest.sol/DistributionHelperTestHelper.dbg.json +1 -1
  61. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +1 -1
  62. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  63. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
  64. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  65. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +1 -1
  66. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  67. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  68. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
  69. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
  70. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  71. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  72. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  73. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  74. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
  75. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  76. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  77. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  78. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  79. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  80. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  81. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  82. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  83. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  84. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  85. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  86. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  87. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  88. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  89. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  90. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  91. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  92. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  93. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  94. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  95. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  96. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  97. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  98. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +2 -2
  99. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  100. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  101. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  102. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  103. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  104. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  105. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  106. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  107. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  108. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  109. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  110. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  111. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  112. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
  113. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +1 -1
  114. package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +1 -1
  115. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +1 -1
  116. package/artifacts/contracts/token/FeesFormula.sol/IFeesFormula.dbg.json +1 -1
  117. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +1 -1
  118. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +1 -1
  119. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +1 -1
  120. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +1 -1
  121. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +1 -1
  122. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +1 -1
  123. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +1 -1
  124. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +1 -1
  125. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +1 -1
  126. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  127. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +2 -2
  128. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  129. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +1 -1
  130. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.json +28 -2
  131. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  132. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  133. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +1 -1
  134. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  135. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  136. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  137. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  138. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  139. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +2 -9
  140. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  141. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  142. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  143. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +2 -2
  144. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  145. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  146. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  147. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  148. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  149. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  150. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  151. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  152. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  153. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  154. package/contracts/fuseFaucet/Faucet.sol +19 -10
  155. package/contracts/fuseFaucet/FuseFaucetV2.sol +36 -13
  156. package/contracts/identity/IdentityV2.sol +9 -4
  157. package/contracts/ubi/UBIScheme.sol +1 -1
  158. package/contracts/utils/AdminWalletFuse.sol +8 -0
  159. package/contracts/utils/GoodDollarMintBurnWrapper.sol +1 -19
  160. package/hardhat.config.ts +17 -42
  161. package/package.json +1 -1
  162. package/releases/deploy-settings.json +3 -3
  163. package/releases/deployment.json +11 -3
  164. package/scripts/multichain-deploy/2_helpers-deploy.ts +64 -68
  165. package/scripts/multichain-deploy/4_ubi-deploy.ts +19 -35
  166. package/scripts/multichain-deploy/helpers.ts +2 -2
  167. package/scripts/multichain-deploy/multichainWrapper-deploy.ts +7 -4
  168. package/scripts/upgradeToV3/v3-fuse-multichain.ts +117 -0
  169. package/scripts/upgrades/celo-defi-ubi-deploy.ts +15 -2
  170. package/scripts/upgrades/identity-upgrade.ts +28 -11
  171. package/test/faucet/Faucet.test.ts +4 -3
  172. package/test/faucet/FuseFaucet.test.ts +5 -4
  173. package/test/ubi/UBISchemeCycle.test.ts +20 -58
  174. package/test/utils/GoodDollarMintBurnWrapper.test.ts +66 -224
  175. package/types/AdminWalletFuse.ts +38 -0
  176. package/types/Faucet.ts +61 -32
  177. package/types/FuseFaucetV2.ts +101 -34
  178. package/types/GoodDollarMintBurnWrapper.ts +0 -27
  179. package/types/factories/AdminWalletFuse__factory.ts +27 -1
  180. package/types/factories/Faucet__factory.ts +42 -16
  181. package/types/factories/FuseFaucetV2__factory.ts +54 -16
  182. package/types/factories/FuseStakingV3__factory.ts +1 -1
  183. package/types/factories/GoodDollarMintBurnWrapper__factory.ts +1 -8
  184. package/types/factories/IdentityV2__factory.ts +1 -1
  185. package/types/factories/UBIScheme__factory.ts +1 -1
  186. package/scripts/multichain-deploy/v3-fix.ts +0 -120
  187. package/scripts/multichain-deploy/v3-upgrade.ts +0 -219
@@ -1243,13 +1243,6 @@ const _abi = [
1243
1243
  stateMutability: "view",
1244
1244
  type: "function",
1245
1245
  },
1246
- {
1247
- inputs: [],
1248
- name: "upgradeSuperGoodDollar",
1249
- outputs: [],
1250
- stateMutability: "nonpayable",
1251
- type: "function",
1252
- },
1253
1246
  {
1254
1247
  inputs: [
1255
1248
  {
@@ -1284,7 +1277,7 @@ const _abi = [
1284
1277
  ];
1285
1278
 
1286
1279
  const _bytecode =
1287
- "0x60a06040523060805234801561001457600080fd5b506080516142f561004c600039600081816110c601528181611106015281816113c701528181611407015261147f01526142f56000f3fe60806040526004361061025a5760003560e01c806301ffc9a71461025f57806306fdde03146102945780630e15561a146102b657806317eebf21146102eb5780631b3c90a814610319578063248a9ca31461033057806324ea54f4146103505780632f2ff15d146103725780632f4dae9f1461039257806330d643b5146103b2578063313ce567146103e657806336568abe1461040d5780633659cfe61461042d5780633e6326fc1461044d57806340c10f191461047b5780634162169f1461049b578063485cc955146104bc5780634f1ef286146104dc5780634f31e2b5146104ef57806352d1902d1461051057806353e691a2146105255780635955b5921461053a5780635ad411611461055c5780635aef7de61461057c5780635c9302c91461059d578063673ea086146105be57806370a08231146105e65780638da5cb5b146106065780639010d07c1461061b57806391d148541461063b578063956092121461065b57806395d89b41146107335780639ac25d08146107485780639dc29fac1461075d5780639e9e46661461077d578063a19ff6801461079d578063a217fddf14610748578063a2309ff8146107bf578063a4c0ed36146107d6578063abccdb52146107f6578063b32ad1a614610816578063b5bfddea14610838578063ca15c8731461086c578063ca4fb87c1461088c578063d5391393146108ae578063d547741f146108d0578063d56b73a4146108f0578063e1758bd814610995578063e47cbcbe146109aa578063ed56531a146109c1578063f1755339146109e1578063fc0c546a14610a01578063fe2e98b914610a22575b600080fd5b34801561026b57600080fd5b5061027f61027a36600461390d565b610a44565b60405190151581526020015b60405180910390f35b3480156102a057600080fd5b506102a9610a6f565b60405161028b919061395b565b3480156102c257600080fd5b50610169546102de90600160801b90046001600160801b031681565b60405161028b919061398e565b3480156102f757600080fd5b5061030b6103063660046139b7565b610ae7565b60405190815260200161028b565b34801561032557600080fd5b5061032e610e03565b005b34801561033c57600080fd5b5061030b61034b3660046139e3565b610f2d565b34801561035c57600080fd5b5061030b6000805160206142a083398151915281565b34801561037e57600080fd5b5061032e61038d3660046139fc565b610f42565b34801561039e57600080fd5b5061032e6103ad3660046139e3565b610f63565b3480156103be57600080fd5b5061030b7f7a05a596cb0ce7fdea8a1e1ec73be300bdb35097c944ce1897202f7a13122eb281565b3480156103f257600080fd5b506103fb610fd3565b60405160ff909116815260200161028b565b34801561041957600080fd5b5061032e6104283660046139fc565b611042565b34801561043957600080fd5b5061032e610448366004613a2c565b6110bc565b34801561045957600080fd5b506101305461046e906001600160a01b031681565b60405161028b9190613a49565b34801561048757600080fd5b5061027f6104963660046139b7565b611184565b3480156104a757600080fd5b5061012e5461046e906001600160a01b031681565b3480156104c857600080fd5b5061032e6104d7366004613a5d565b6111f8565b61032e6104ea366004613b4e565b6113bd565b3480156104fb57600080fd5b50610169546102de906001600160801b031681565b34801561051c57600080fd5b5061030b611472565b34801561053157600080fd5b5061032e611520565b34801561054657600080fd5b5061030b60008051602061428083398151915281565b34801561056857600080fd5b5061032e610577366004613bc4565b6115e1565b34801561058857600080fd5b5061012f5461046e906001600160a01b031681565b3480156105a957600080fd5b50610168546102de906001600160801b031681565b3480156105ca57600080fd5b50610168546102de90600160801b90046001600160801b031681565b3480156105f257600080fd5b5061030b610601366004613a2c565b611671565b34801561061257600080fd5b5061046e6116e4565b34801561062757600080fd5b5061046e610636366004613c45565b6116ec565b34801561064757600080fd5b5061027f6106563660046139fc565b61170b565b34801561066757600080fd5b506106da610676366004613a2c565b610163602052600090815260409020805460018201546002830154600384015460048501546005909501549394929391926001600160801b0380831693600160801b93849004821693838316930482169163ffffffff821691600160201b90041689565b60408051998a5260208a0198909852968801959095526001600160801b0393841660608801529183166080870152821660a0860152811660c085015263ffffffff90911660e0840152166101008201526101200161028b565b34801561073f57600080fd5b506102a9611736565b34801561075457600080fd5b5061030b600081565b34801561076957600080fd5b5061027f6107783660046139b7565b611781565b34801561078957600080fd5b5061027f6107983660046139e3565b61183c565b3480156107a957600080fd5b5061030b60008051602061421983398151915281565b3480156107cb57600080fd5b5061030b6101655481565b3480156107e257600080fd5b5061027f6107f1366004613c67565b611851565b34801561080257600080fd5b5061032e610811366004613cbf565b6119e9565b34801561082257600080fd5b5061030b60008051602061415483398151915281565b34801561084457600080fd5b5061030b7f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b34801561087857600080fd5b5061030b6108873660046139e3565b611a5e565b34801561089857600080fd5b5061030b6000805160206141f983398151915281565b3480156108ba57600080fd5b5061030b60008051602061426083398151915281565b3480156108dc57600080fd5b5061032e6108eb3660046139fc565b611a75565b3480156108fc57600080fd5b5061095661090b366004613a2c565b61016a60205260009081526040902080546001820154600283015460038401546004909401549293919290916001600160801b0380821692600160801b909204169063ffffffff1686565b604080519687526020870195909552938501929092526001600160801b03908116606085015216608083015263ffffffff1660a082015260c00161028b565b3480156109a157600080fd5b5061046e611a91565b3480156109b657600080fd5b5061030b6101645481565b3480156109cd57600080fd5b5061032e6109dc3660046139e3565b611b1a565b3480156109ed57600080fd5b5061032e6109fc366004613d2b565b611b7f565b348015610a0d57600080fd5b506101665461046e906001600160a01b031681565b348015610a2e57600080fd5b5061030b60008051602061417483398151915281565b60006001600160e01b03198216635a05180f60e01b1480610a695750610a6982611c32565b92915050565b61016654604080516306fdde0360e01b815290516060926001600160a01b0316916306fdde039160048083019260009291908290030181865afa158015610aba573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ae29190810190613d54565b905090565b60006000805160206141f9833981519152610b0181611c67565b600080516020614174833981519152610b198161183c565b158015610b2d5750610b2b600061183c565b155b610b525760405162461bcd60e51b8152600401610b4990613dc1565b60405180910390fd5b610b5b33611c71565b33600090815261016360205260408120600301546001600160801b031615610bbb573360009081526101636020526040902060030154610bad906001600160801b03600160801b820481169116613e08565b6001600160801b0316610bbd565b845b610166546040516370a0823160e01b8152919250600091610c3d916001600160a01b0316906370a0823190610bf6903090600401613a49565b602060405180830381865afa158015610c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c379190613e28565b87611ee4565b90506000610c54610c4e8389613e41565b84611ee4565b9050610c608183613e54565b3360009081526101636020526040902060040180549197508791601090610c98908490600160801b90046001600160801b0316613e67565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508561016960108282829054906101000a90046001600160801b0316610ce19190613e67565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508061016960008282829054906101000a90046001600160801b0316610d2a9190613e67565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506000811115610d6157610d618882611efa565b8115610d7f5761016654610d7f906001600160a01b031689846122e0565b80600003610d8f57610d8f612336565b61016954604080513381526001600160a01b038b1660208201528082018a905260608101859052608081018490526001600160801b0390921660a0830152517fdea51570922020f525c1f30d8c1c57bd3cffe5632d70d13aaf8f8451388dbd959181900360c00190a1505050505092915050565b6101305460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa158015610e67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8b9190613e87565b61012e80546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa158015610ee6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0a9190613e87565b61012f80546001600160a01b0319166001600160a01b0392909216919091179055565b60009081526065602052604090206001015490565b610f4b82610f2d565b610f5481611c67565b610f5e8383612489565b505050565b604080518082019091526000805160206142a08339815191528152600060208201819052610f999082905b60200201513361170b565b80610faa5750610faa816001610f8e565b610fc65760405162461bcd60e51b8152600401610b4990613eba565b610fcf826124ab565b5050565b610166546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa15801561101e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae29190613ee0565b6001600160a01b03811633146110b25760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610b49565b610fcf8282612557565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036111045760405162461bcd60e51b8152600401610b4990613f03565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611136612579565b6001600160a01b03161461115c5760405162461bcd60e51b8152600401610b4990613f3d565b61116581612595565b604080516000808252602082019092526111819183919061259d565b50565b600060008051602061426083398151915261119e81611c67565b6111a733611c71565b6111b18484611efa565b7f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f03385856040516111e493929190613f77565b60405180910390a1600191505b5092915050565b600054610100900460ff16158080156112185750600054600160ff909116105b80611239575061122730612708565b158015611239575060005460ff166001145b61129c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b49565b6000805460ff1916600117905580156112bf576000805461ff0019166101001790555b6112c7612717565b6112d082612784565b6001600160a01b03831661131b5760405162461bcd60e51b81526020600482015260126024820152717a65726f2061646d696e206164647265737360701b6044820152606401610b49565b611323611a91565b61016680546001600160a01b0319166001600160a01b0392831617905561016880546001600160801b03166176a760881b17905561012f5461136891600091166127a8565b6113736000846127a8565b8015610f5e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036114055760405162461bcd60e51b8152600401610b4990613f03565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611437612579565b6001600160a01b03161461145d5760405162461bcd60e51b8152600401610b4990613f3d565b61146682612595565b610fcf8282600161259d565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461150d5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610b49565b506000805160206141b483398151915290565b600061152b81611c67565b61012f54730f5db7a64a6a64052693676ca898ec7f7a94ff4e9061155a906000906001600160a01b0316612557565b61156381612784565b61156b611a91565b61016680546001600160a01b0319166001600160a01b0392831617905561012f5461159991600091166127a8565b61016880546001600160801b03166107e960871b179055610fcf73f27ee99622c3c9b264583dacb2cce056e194494f60008080806af8277896582678ac0000006113886127b2565b60006115ec81611c67565b81156116275761160a6000805160206141f98339815191528a610f42565b6116226000805160206142608339815191528a611a75565b611657565b61163f6000805160206142608339815191528a610f42565b6116576000805160206141f98339815191528a611a75565b611666898989898989896127b2565b505050505050505050565b610166546040516370a0823160e01b81526000916001600160a01b0316906370a08231906116a3908590600401613a49565b602060405180830381865afa1580156116c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a699190613e28565b6000610ae281805b60008281526097602052604081206117049083612a54565b9392505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61016654604080516395d89b4160e01b815290516060926001600160a01b0316916395d89b419160048083019260009291908290030181865afa158015610aba573d6000803e3d6000fd5b600060008051602061426083398151915261179b81611c67565b6000805160206142808339815191526117b38161183c565b1580156117c757506117c5600061183c565b155b6117e35760405162461bcd60e51b8152600401610b4990613dc1565b6117ec33611c71565b6117f68585612a60565b7f6ab368f832c266c8eb942b84fbcaa20aedc24a699d2a05fae2568028733b1d0933868660405161182993929190613f77565b60405180910390a1506001949350505050565b600090815260c9602052604090205460ff1690565b610166546000906001600160a01b0316331461186c57600080fd5b600080838060200190518101906118839190613f9b565b91509150806000036118c65760405162461bcd60e51b815260206004820152600c60248201526b1e995c9bc818da185a5b925960a21b6044820152606401610b49565b6001600160a01b0382166118da57856118dc565b815b6101305460405163bf40fac160e01b815260206004820152601160248201527026aaa62a24a1a420a4a72fa927aaaa22a960791b60448201529193506001600160a01b03169063bf40fac190606401602060405180830381865afa158015611948573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196c9190613e87565b60405163241dc2df60e01b81523060048201526001600160a01b0384811660248301526044820188905260648201849052919091169063241dc2df90608401600060405180830381600087803b1580156119c557600080fd5b505af11580156119d9573d6000803e3d6000fd5b5060019998505050505050505050565b604080518082019091526000805160206142a08339815191528152600060208201819052611a18908290610f8e565b80611a295750611a29816001610f8e565b611a455760405162461bcd60e51b8152600401610b4990613eba565b611a54888888888888886127b2565b5050505050505050565b6000818152609760205260408120610a6990612d93565b611a7e82610f2d565b611a8781611c67565b610f5e8383612557565b6101305460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015611af6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae29190613e87565b604080518082019091526000805160206142a08339815191528152600060208201819052611b49908290610f8e565b80611b5a5750611b5a816001610f8e565b611b765760405162461bcd60e51b8152600401610b4990613eba565b610fcf82612d9d565b604080518082019091526000805160206142a08339815191528152600060208201819052611bae908290610f8e565b80611bbf5750611bbf816001610f8e565b611bdb5760405162461bcd60e51b8152600401610b4990613eba565b61016880546001600160801b03808516600160801b0291161790556040517f5497ec04d2873f2e2d376db2bb24e7e57851278c75fc1fcc9aab4db5fb70d22390611c2690849061398e565b60405180910390a15050565b60006001600160e01b03198216637965db0b60e01b1480610a6957506301ffc9a760e01b6001600160e01b0319831614610a69565b6111818133612e22565b6001600160a01b03811660009081526101636020526040812060040154611ca1906001600160801b031642613e41565b9050600061016660009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1d9190613e28565b61016854909150600160801b90046001600160801b03168210611e33576001600160a01b0383166000908152610163602052604090206005015461271090611d6b9063ffffffff1683613fc9565b611d759190613ffe565b6001600160a01b03841660009081526101636020908152604080832060030180546001600160801b0319166001600160801b03959095169490941790935561016a9052206004015461271090611dd19063ffffffff1683613fc9565b611ddb9190613ffe565b6001600160a01b038416600090815261016a6020908152604080832060030180546001600160801b03199081166001600160801b03968716179091556101639092529091206004018054909116429092169190911790555b611e3b612e7b565b6001600160a01b03831660009081526101636020526040902060050154610168546001600160801b03908116600160201b9092041614610f5e5750506001600160a01b0316600090815261016360208181526040808420600380820180546001600160801b0390811690915561016a855292909520909401805482169055610168549290915260059092018054600160201b600160a01b03191691909216600160201b02179055565b6000818310611ef35781611704565b5090919050565b600080516020614154833981519152611f128161183c565b158015611f265750611f24600061183c565b155b611f425760405162461bcd60e51b8152600401610b4990613dc1565b306001600160a01b03841603611f895760405162461bcd60e51b815260206004820152600c60248201526b36b4b73a103a379039b2b63360a11b6044820152606401610b49565b33600090815261016360205260409020541580611fb6575033600090815261016360205260409020548211155b611ff85760405162461bcd60e51b81526020600482015260136024820152721b5a5b9d195c881b585e08195e18d959591959606a1b6044820152606401610b49565b33600090815261016360205260409020600301546001600160801b0316158061206b5750336000908152610163602052604090206003015461204b908390600160801b90046001600160801b0316613e54565b33600090815261016360205260409020600301546001600160801b031610155b6120b35760405162461bcd60e51b81526020600482015260196024820152781b5a5b9d195c8819185a5b1e4818d85c08195e18d959591959603a1b6044820152606401610b49565b3360009081526101636020526040902060030180548391906010906120e9908490600160801b90046001600160801b0316613e67565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550816101636000336001600160a01b03166001600160a01b0316815260200190815260200160002060020160008282546121469190613e54565b909155505033600090815261016360205260409020600101541580612184575033600090815261016360205260409020600181015460029091015411155b6121a05760405162461bcd60e51b8152600401610b4990614012565b8161016560008282546121b39190613e54565b909155505033600090815261016a602052604090206002015482116122005733600090815261016a6020526040812060020180548492906121f5908490613e41565b909155506122159050565b33600090815261016a60205260408120600201555b61012e5461012f54604051633203f21960e11b8152600481018590526001600160a01b03868116602483015291821660448201526000929190911690636407e432906064016020604051808303816000875af1158015612279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229d919061403f565b9050806122da5760405162461bcd60e51b815260206004820152600b60248201526a1b5a5b9d0819985a5b195960aa1b6044820152606401610b49565b50505050565b610f5e8363a9059cbb60e01b84846040516024016122ff92919061405c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612eab565b61016954610166546040516370a0823160e01b81526000926123c4926001600160801b03909116916001600160a01b03909116906370a082319061237e903090600401613a49565b602060405180830381865afa15801561239b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123bf9190613e28565b611ee4565b905080156111815761016980548291906000906123eb9084906001600160801b0316613e08565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508061016560008282546124229190613e41565b909155505061016654604051630852cd8d60e31b8152600481018390526001600160a01b03909116906342966c6890602401600060405180830381600087803b15801561246e57600080fd5b505af1158015612482573d6000803e3d6000fd5b5050505050565b6124938282612f7d565b6000828152609760205260409020610f5e9082613003565b806124b58161183c565b806124c557506124c5600061183c565b61250f5760405162461bcd60e51b815260206004820152601b60248201527a14185d5cd8589b1950dbdb9d1c9bdb0e881b9bdd081c185d5cd959602a1b6044820152606401610b49565b600082815260c9602052604090819020805460ff19169055517fd05bfc2250abb0f8fd265a54c53a24359c5484af63cad2e4ce87c78ab751395a90611c269084815260200190565b6125618282613018565b6000828152609760205260409020610f5e908261307f565b6000805160206141b4833981519152546001600160a01b031690565b611181613094565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156125d057610f5e83613158565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561262a575060408051601f3d908101601f1916820190925261262791810190613e28565b60015b61268d5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610b49565b6000805160206141b483398151915281146126fc5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610b49565b50610f5e8383836131f2565b6001600160a01b03163b151590565b600054610100900460ff166127825760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610b49565b565b61013080546001600160a01b0319166001600160a01b038316179055611181610e03565b610fcf8282612489565b6001600160a01b03871660009081526101636020908152604080832061016a90925282206004820154919290916001600160801b03161515906128036000805160206141f98339815191528c61170b565b600185018b905589855560058501805463ffffffff191663ffffffff8b16908117909155600480870180546001600160801b031916426001600160801b031617905561016654604080516318160ddd60e01b81529051949550612710946001600160a01b03909216926318160ddd9282820192602092908290030181865afa158015612893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128b79190613e28565b6128c19190613fc9565b6128cb9190614075565b8460030160006101000a8154816001600160801b0302191690836001600160801b031602179055506127108563ffffffff1661016660009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612951573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129759190613e28565b61297f9190613fc9565b6129899190614075565b6003840180546001600160801b0319166001600160801b03929092169190911790556001830187905585835560048301805463ffffffff191663ffffffff878116918217909255604080516001600160a01b038f168152602081018e90529081018c9052918a1660608301526080820189905260a0820188905260c082015281151560e08201528215156101008201527f58c3ceb7d4f068706ddc92911fae8701fac2c91c60bcc1b56ec7a6f56001aa5e906101200160405180910390a15050505050505050505050565b60006117048383613217565b600080516020614219833981519152612a788161183c565b158015612a8c5750612a8a600061183c565b155b612aa85760405162461bcd60e51b8152600401610b4990613dc1565b33600090815261016a60205260409020541580612ad5575033600090815261016a60205260409020548211155b612b1c5760405162461bcd60e51b81526020600482015260186024820152771b5a5b9d195c88189d5c9b881b585e08195e18d95959195960421b6044820152606401610b49565b33600090815261016a60205260409020600301546001600160801b03161580612b8f575033600090815261016a6020526040902060030154612b6f908390600160801b90046001600160801b0316613e54565b33600090815261016a60205260409020600301546001600160801b031610155b612bdb5760405162461bcd60e51b815260206004820152601e60248201527f6d696e746572206275726e206461696c792063617020657863656564656400006044820152606401610b49565b33600090815261016a602052604090206003018054839190601090612c11908490600160801b90046001600160801b0316613e67565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508161016a6000336001600160a01b03166001600160a01b031681526020019081526020016000206002016000828254612c6e9190613e54565b909155505033600090815261016a60205260409020600101541580612cac575033600090815261016a60205260409020600181015460029091015411155b612cc85760405162461bcd60e51b8152600401610b4990614012565b816101655410612cf057816101656000828254612ce59190613e41565b90915550612cf79050565b6000610165555b33600090815261016360205260409020600201548211612d3f57336000908152610163602052604081206002018054849290612d34908490613e41565b90915550612d549050565b33600090815261016360205260408120600201555b306001600160a01b03841603612d7b5761016654610f5e906001600160a01b031683613241565b61016654610f5e906001600160a01b0316848461328e565b6000610a69825490565b80612da78161183c565b158015612dbb5750612db9600061183c565b155b612dd75760405162461bcd60e51b8152600401610b4990613dc1565b600082815260c9602052604090819020805460ff19166001179055517f0cb09dc71d57eeec2046f6854976717e4874a3cf2d6ddeddde337e5b6de6ba3190611c269084815260200190565b612e2c828261170b565b610fcf57612e39816132aa565b612e448360206132bc565b604051602001612e5592919061409b565b60408051601f198184030181529082905262461bcd60e51b8252610b499160040161395b565b612e886201518042613ffe565b61016880546001600160801b0319166001600160801b0392909216919091179055565b6000612f00826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166134579092919063ffffffff16565b805190915015610f5e5780806020019051810190612f1e919061403f565b610f5e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610b49565b612f87828261170b565b610fcf5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612fbf3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000611704836001600160a01b03841661346e565b613022828261170b565b15610fcf5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611704836001600160a01b0384166134bd565b61012e5460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de69160048083019260209291908290030181865afa1580156130de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131029190613e87565b6001600160a01b0316146127825760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f646044820152606401610b49565b61316181612708565b6131c35760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610b49565b6000805160206141b483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6131fb836135b0565b6000825111806132085750805b15610f5e576122da83836135f0565b600082600001828154811061322e5761322e613ea4565b9060005260206000200154905092915050565b610fcf826342966c688360405160240161325d91815260200190565b6040516020818303038152906040529060e01b6020820180516001600160e01b0383818316178352505050506136e2565b610f5e836379cc6790848460405160240161325d92919061405c565b6060610a696001600160a01b03831660145b606060006132cb836002613fc9565b6132d6906002613e54565b6001600160401b038111156132ed576132ed613a8b565b6040519080825280601f01601f191660200182016040528015613317576020820181803683370190505b509050600360fc1b8160008151811061333257613332613ea4565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061336157613361613ea4565b60200101906001600160f81b031916908160001a9053506000613385846002613fc9565b613390906001613e54565b90505b6001811115613408576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106133c4576133c4613ea4565b1a60f81b8282815181106133da576133da613ea4565b60200101906001600160f81b031916908160001a90535060049490941c936134018161410a565b9050613393565b5083156117045760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610b49565b6060613466848460008561377c565b949350505050565b60008181526001830160205260408120546134b557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a69565b506000610a69565b600081815260018301602052604081205480156135a65760006134e1600183613e41565b85549091506000906134f590600190613e41565b905081811461355a57600086600001828154811061351557613515613ea4565b906000526020600020015490508087600001848154811061353857613538613ea4565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061356b5761356b614121565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a69565b6000915050610a69565b6135b981613158565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606135fb83612708565b6136565760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610b49565b600080846001600160a01b0316846040516136719190614137565b600060405180830381855af49150503d80600081146136ac576040519150601f19603f3d011682016040523d82523d6000602084013e6136b1565b606091505b50915091506136d9828260405180606001604052806027815260200161423960279139613857565b95945050505050565b6000613712826040518060600160405280602581526020016141d4602591396001600160a01b0386169190613457565b805190915015610f5e5780806020019051810190613730919061403f565b610f5e5760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e4f7065726174696f6e3a20646964206e6f742073756363656564006044820152606401610b49565b6060824710156137dd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610b49565b600080866001600160a01b031685876040516137f99190614137565b60006040518083038185875af1925050503d8060008114613836576040519150601f19603f3d011682016040523d82523d6000602084013e61383b565b606091505b509150915061384c87838387613870565b979650505050505050565b60608315613866575081611704565b61170483836138e3565b606083156138dd5782516000036138d65761388a85612708565b6138d65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b49565b5081613466565b61346683835b8151156138f35781518083602001fd5b8060405162461bcd60e51b8152600401610b49919061395b565b60006020828403121561391f57600080fd5b81356001600160e01b03198116811461170457600080fd5b60005b8381101561395257818101518382015260200161393a565b50506000910152565b602081526000825180602084015261397a816040850160208701613937565b601f01601f19169190910160400192915050565b6001600160801b0391909116815260200190565b6001600160a01b038116811461118157600080fd5b600080604083850312156139ca57600080fd5b82356139d5816139a2565b946020939093013593505050565b6000602082840312156139f557600080fd5b5035919050565b60008060408385031215613a0f57600080fd5b823591506020830135613a21816139a2565b809150509250929050565b600060208284031215613a3e57600080fd5b8135611704816139a2565b6001600160a01b0391909116815260200190565b60008060408385031215613a7057600080fd5b8235613a7b816139a2565b91506020830135613a21816139a2565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715613ac957613ac9613a8b565b604052919050565b60006001600160401b03821115613aea57613aea613a8b565b50601f01601f191660200190565b600082601f830112613b0957600080fd5b8135613b1c613b1782613ad1565b613aa1565b818152846020838601011115613b3157600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215613b6157600080fd5b8235613b6c816139a2565b915060208301356001600160401b03811115613b8757600080fd5b613b9385828601613af8565b9150509250929050565b803563ffffffff81168114613bb157600080fd5b919050565b801515811461118157600080fd5b600080600080600080600080610100898b031215613be157600080fd5b8835613bec816139a2565b97506020890135965060408901359550613c0860608a01613b9d565b94506080890135935060a08901359250613c2460c08a01613b9d565b915060e0890135613c3481613bb6565b809150509295985092959890939650565b60008060408385031215613c5857600080fd5b50508035926020909101359150565b600080600060608486031215613c7c57600080fd5b8335613c87816139a2565b92506020840135915060408401356001600160401b03811115613ca957600080fd5b613cb586828701613af8565b9150509250925092565b600080600080600080600060e0888a031215613cda57600080fd5b8735613ce5816139a2565b96506020880135955060408801359450613d0160608901613b9d565b93506080880135925060a08801359150613d1d60c08901613b9d565b905092959891949750929550565b600060208284031215613d3d57600080fd5b81356001600160801b038116811461170457600080fd5b600060208284031215613d6657600080fd5b81516001600160401b03811115613d7c57600080fd5b8201601f81018413613d8d57600080fd5b8051613d9b613b1782613ad1565b818152856020838501011115613db057600080fd5b6136d9826020830160208601613937565b60208082526017908201527614185d5cd8589b1950dbdb9d1c9bdb0e881c185d5cd959604a1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6001600160801b038281168282160390808211156111f1576111f1613df2565b600060208284031215613e3a57600080fd5b5051919050565b81810381811115610a6957610a69613df2565b80820180821115610a6957610a69613df2565b6001600160801b038181168382160190808211156111f1576111f1613df2565b600060208284031215613e9957600080fd5b8151611704816139a2565b634e487b7160e01b600052603260045260246000fd5b6020808252600c908201526b726f6c65206d697373696e6760a01b604082015260600190565b600060208284031215613ef257600080fd5b815160ff8116811461170457600080fd5b6020808252602c9082015260008051602061419483398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602061419483398151915260408201526b6163746976652070726f787960a01b606082015260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60008060408385031215613fae57600080fd5b8251613fb9816139a2565b6020939093015192949293505050565b6000816000190483118215151615613fe357613fe3613df2565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261400d5761400d613fe8565b500490565b6020808252601390820152721b5a5b9d195c8818d85c08195e18d959591959606a1b604082015260600190565b60006020828403121561405157600080fd5b815161170481613bb6565b6001600160a01b03929092168252602082015260400190565b60006001600160801b038381168061408f5761408f613fe8565b92169190910492915050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b8152600083516140cd816017850160208801613937565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516140fe816028840160208801613937565b01602801949350505050565b60008161411957614119613df2565b506000190190565b634e487b7160e01b600052603160045260246000fd5b60008251614149818460208701613937565b919091019291505056feb2a18ae5d0b623b41098012c516d0bf4bef38c068c9e397da870c290888b19999604fa49b1cb3aa782c099225b9c340b6afeb802be5d4b3314ba27a14502cdfa46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546f6b656e4f7065726174696f6e3a206c6f772d6c6576656c2063616c6c206661696c65645407862f04286ebe607684514c14b7fffc750b6bf52ba44ea49569174845a5bd62d52416825983abd68b16e092b60c2eac31fd673bcce92494e063af530d9c30416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65649f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6b601d6a8ea5419a4251765936e52b2763485fede82d3c5dfd765cd67d30f4f2255435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a264697066735822122080fba124231a2b3040b17593b1b6f31533318c5ba4b4a2a90070bb60a841b13b64736f6c63430008100033";
1280
+ "0x60a06040523060805234801561001457600080fd5b5060805161421461004c600039600081816110a6015281816110e6015281816113a7015281816113e7015261145f01526142146000f3fe60806040526004361061024f5760003560e01c806301ffc9a71461025457806306fdde03146102895780630e15561a146102ab57806317eebf21146102e05780631b3c90a81461030e578063248a9ca31461032557806324ea54f4146103455780632f2ff15d146103675780632f4dae9f1461038757806330d643b5146103a7578063313ce567146103db57806336568abe146104025780633659cfe6146104225780633e6326fc1461044257806340c10f19146104705780634162169f14610490578063485cc955146104b15780634f1ef286146104d15780634f31e2b5146104e457806352d1902d146105055780635955b5921461051a5780635ad411611461053c5780635aef7de61461055c5780635c9302c91461057d578063673ea0861461059e57806370a08231146105c65780638da5cb5b146105e65780639010d07c146105fb57806391d148541461061b578063956092121461063b57806395d89b41146107135780639ac25d08146107285780639dc29fac1461073d5780639e9e46661461075d578063a19ff6801461077d578063a217fddf14610728578063a2309ff81461079f578063a4c0ed36146107b6578063abccdb52146107d6578063b32ad1a6146107f6578063b5bfddea14610818578063ca15c8731461084c578063ca4fb87c1461086c578063d53913931461088e578063d547741f146108b0578063d56b73a4146108d0578063e1758bd814610975578063e47cbcbe1461098a578063ed56531a146109a1578063f1755339146109c1578063fc0c546a146109e1578063fe2e98b914610a02575b600080fd5b34801561026057600080fd5b5061027461026f36600461382c565b610a24565b60405190151581526020015b60405180910390f35b34801561029557600080fd5b5061029e610a4f565b604051610280919061387a565b3480156102b757600080fd5b50610169546102d390600160801b90046001600160801b031681565b60405161028091906138ad565b3480156102ec57600080fd5b506103006102fb3660046138d6565b610ac7565b604051908152602001610280565b34801561031a57600080fd5b50610323610de3565b005b34801561033157600080fd5b50610300610340366004613902565b610f0d565b34801561035157600080fd5b506103006000805160206141bf83398151915281565b34801561037357600080fd5b5061032361038236600461391b565b610f22565b34801561039357600080fd5b506103236103a2366004613902565b610f43565b3480156103b357600080fd5b506103007f7a05a596cb0ce7fdea8a1e1ec73be300bdb35097c944ce1897202f7a13122eb281565b3480156103e757600080fd5b506103f0610fb3565b60405160ff9091168152602001610280565b34801561040e57600080fd5b5061032361041d36600461391b565b611022565b34801561042e57600080fd5b5061032361043d36600461394b565b61109c565b34801561044e57600080fd5b5061013054610463906001600160a01b031681565b6040516102809190613968565b34801561047c57600080fd5b5061027461048b3660046138d6565b611164565b34801561049c57600080fd5b5061012e54610463906001600160a01b031681565b3480156104bd57600080fd5b506103236104cc36600461397c565b6111d8565b6103236104df366004613a6d565b61139d565b3480156104f057600080fd5b50610169546102d3906001600160801b031681565b34801561051157600080fd5b50610300611452565b34801561052657600080fd5b5061030060008051602061419f83398151915281565b34801561054857600080fd5b50610323610557366004613ae3565b611500565b34801561056857600080fd5b5061012f54610463906001600160a01b031681565b34801561058957600080fd5b50610168546102d3906001600160801b031681565b3480156105aa57600080fd5b50610168546102d390600160801b90046001600160801b031681565b3480156105d257600080fd5b506103006105e136600461394b565b611590565b3480156105f257600080fd5b50610463611603565b34801561060757600080fd5b50610463610616366004613b64565b61160b565b34801561062757600080fd5b5061027461063636600461391b565b61162a565b34801561064757600080fd5b506106ba61065636600461394b565b610163602052600090815260409020805460018201546002830154600384015460048501546005909501549394929391926001600160801b0380831693600160801b93849004821693838316930482169163ffffffff821691600160201b90041689565b60408051998a5260208a0198909852968801959095526001600160801b0393841660608801529183166080870152821660a0860152811660c085015263ffffffff90911660e08401521661010082015261012001610280565b34801561071f57600080fd5b5061029e611655565b34801561073457600080fd5b50610300600081565b34801561074957600080fd5b506102746107583660046138d6565b6116a0565b34801561076957600080fd5b50610274610778366004613902565b61175b565b34801561078957600080fd5b5061030060008051602061413883398151915281565b3480156107ab57600080fd5b506103006101655481565b3480156107c257600080fd5b506102746107d1366004613b86565b611770565b3480156107e257600080fd5b506103236107f1366004613bde565b611908565b34801561080257600080fd5b5061030060008051602061407383398151915281565b34801561082457600080fd5b506103007f52ba824bfabc2bcfcdf7f0edbb486ebb05e1836c90e78047efeb949990f72e5f81565b34801561085857600080fd5b50610300610867366004613902565b61197d565b34801561087857600080fd5b5061030060008051602061411883398151915281565b34801561089a57600080fd5b5061030060008051602061417f83398151915281565b3480156108bc57600080fd5b506103236108cb36600461391b565b611994565b3480156108dc57600080fd5b506109366108eb36600461394b565b61016a60205260009081526040902080546001820154600283015460038401546004909401549293919290916001600160801b0380821692600160801b909204169063ffffffff1686565b604080519687526020870195909552938501929092526001600160801b03908116606085015216608083015263ffffffff1660a082015260c001610280565b34801561098157600080fd5b506104636119b0565b34801561099657600080fd5b506103006101645481565b3480156109ad57600080fd5b506103236109bc366004613902565b611a39565b3480156109cd57600080fd5b506103236109dc366004613c4a565b611a9e565b3480156109ed57600080fd5b5061016654610463906001600160a01b031681565b348015610a0e57600080fd5b5061030060008051602061409383398151915281565b60006001600160e01b03198216635a05180f60e01b1480610a495750610a4982611b51565b92915050565b61016654604080516306fdde0360e01b815290516060926001600160a01b0316916306fdde039160048083019260009291908290030181865afa158015610a9a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ac29190810190613c73565b905090565b6000600080516020614118833981519152610ae181611b86565b600080516020614093833981519152610af98161175b565b158015610b0d5750610b0b600061175b565b155b610b325760405162461bcd60e51b8152600401610b2990613ce0565b60405180910390fd5b610b3b33611b90565b33600090815261016360205260408120600301546001600160801b031615610b9b573360009081526101636020526040902060030154610b8d906001600160801b03600160801b820481169116613d27565b6001600160801b0316610b9d565b845b610166546040516370a0823160e01b8152919250600091610c1d916001600160a01b0316906370a0823190610bd6903090600401613968565b602060405180830381865afa158015610bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c179190613d47565b87611e03565b90506000610c34610c2e8389613d60565b84611e03565b9050610c408183613d73565b3360009081526101636020526040902060040180549197508791601090610c78908490600160801b90046001600160801b0316613d86565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508561016960108282829054906101000a90046001600160801b0316610cc19190613d86565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508061016960008282829054906101000a90046001600160801b0316610d0a9190613d86565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506000811115610d4157610d418882611e19565b8115610d5f5761016654610d5f906001600160a01b031689846121ff565b80600003610d6f57610d6f612255565b61016954604080513381526001600160a01b038b1660208201528082018a905260608101859052608081018490526001600160801b0390921660a0830152517fdea51570922020f525c1f30d8c1c57bd3cffe5632d70d13aaf8f8451388dbd959181900360c00190a1505050505092915050565b6101305460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa158015610e47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6b9190613da6565b61012e80546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa158015610ec6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eea9190613da6565b61012f80546001600160a01b0319166001600160a01b0392909216919091179055565b60009081526065602052604090206001015490565b610f2b82610f0d565b610f3481611b86565b610f3e83836123a8565b505050565b604080518082019091526000805160206141bf8339815191528152600060208201819052610f799082905b60200201513361162a565b80610f8a5750610f8a816001610f6e565b610fa65760405162461bcd60e51b8152600401610b2990613dd9565b610faf826123ca565b5050565b610166546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015610ffe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac29190613dff565b6001600160a01b03811633146110925760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610b29565b610faf8282612476565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036110e45760405162461bcd60e51b8152600401610b2990613e22565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611116612498565b6001600160a01b03161461113c5760405162461bcd60e51b8152600401610b2990613e5c565b611145816124b4565b60408051600080825260208201909252611161918391906124bc565b50565b600060008051602061417f83398151915261117e81611b86565b61118733611b90565b6111918484611e19565b7f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f03385856040516111c493929190613e96565b60405180910390a1600191505b5092915050565b600054610100900460ff16158080156111f85750600054600160ff909116105b80611219575061120730612627565b158015611219575060005460ff166001145b61127c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610b29565b6000805460ff19166001179055801561129f576000805461ff0019166101001790555b6112a7612636565b6112b0826126a3565b6001600160a01b0383166112fb5760405162461bcd60e51b81526020600482015260126024820152717a65726f2061646d696e206164647265737360701b6044820152606401610b29565b6113036119b0565b61016680546001600160a01b0319166001600160a01b0392831617905561016880546001600160801b031661127560871b17905561012f5461134891600091166126c7565b6113536000846126c7565b8015610f3e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036113e55760405162461bcd60e51b8152600401610b2990613e22565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611417612498565b6001600160a01b03161461143d5760405162461bcd60e51b8152600401610b2990613e5c565b611446826124b4565b610faf828260016124bc565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146114ed5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610b29565b506000805160206140d383398151915290565b600061150b81611b86565b8115611546576115296000805160206141188339815191528a610f22565b61154160008051602061417f8339815191528a611994565b611576565b61155e60008051602061417f8339815191528a610f22565b6115766000805160206141188339815191528a611994565b611585898989898989896126d1565b505050505050505050565b610166546040516370a0823160e01b81526000916001600160a01b0316906370a08231906115c2908590600401613968565b602060405180830381865afa1580156115df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a499190613d47565b6000610ac281805b60008281526097602052604081206116239083612973565b9392505050565b60009182526065602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61016654604080516395d89b4160e01b815290516060926001600160a01b0316916395d89b419160048083019260009291908290030181865afa158015610a9a573d6000803e3d6000fd5b600060008051602061417f8339815191526116ba81611b86565b60008051602061419f8339815191526116d28161175b565b1580156116e657506116e4600061175b565b155b6117025760405162461bcd60e51b8152600401610b2990613ce0565b61170b33611b90565b611715858561297f565b7f6ab368f832c266c8eb942b84fbcaa20aedc24a699d2a05fae2568028733b1d0933868660405161174893929190613e96565b60405180910390a1506001949350505050565b600090815260c9602052604090205460ff1690565b610166546000906001600160a01b0316331461178b57600080fd5b600080838060200190518101906117a29190613eba565b91509150806000036117e55760405162461bcd60e51b815260206004820152600c60248201526b1e995c9bc818da185a5b925960a21b6044820152606401610b29565b6001600160a01b0382166117f957856117fb565b815b6101305460405163bf40fac160e01b815260206004820152601160248201527026aaa62a24a1a420a4a72fa927aaaa22a960791b60448201529193506001600160a01b03169063bf40fac190606401602060405180830381865afa158015611867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188b9190613da6565b60405163241dc2df60e01b81523060048201526001600160a01b0384811660248301526044820188905260648201849052919091169063241dc2df90608401600060405180830381600087803b1580156118e457600080fd5b505af11580156118f8573d6000803e3d6000fd5b5060019998505050505050505050565b604080518082019091526000805160206141bf8339815191528152600060208201819052611937908290610f6e565b806119485750611948816001610f6e565b6119645760405162461bcd60e51b8152600401610b2990613dd9565b611973888888888888886126d1565b5050505050505050565b6000818152609760205260408120610a4990612cb2565b61199d82610f0d565b6119a681611b86565b610f3e8383612476565b6101305460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015611a15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac29190613da6565b604080518082019091526000805160206141bf8339815191528152600060208201819052611a68908290610f6e565b80611a795750611a79816001610f6e565b611a955760405162461bcd60e51b8152600401610b2990613dd9565b610faf82612cbc565b604080518082019091526000805160206141bf8339815191528152600060208201819052611acd908290610f6e565b80611ade5750611ade816001610f6e565b611afa5760405162461bcd60e51b8152600401610b2990613dd9565b61016880546001600160801b03808516600160801b0291161790556040517f5497ec04d2873f2e2d376db2bb24e7e57851278c75fc1fcc9aab4db5fb70d22390611b459084906138ad565b60405180910390a15050565b60006001600160e01b03198216637965db0b60e01b1480610a4957506301ffc9a760e01b6001600160e01b0319831614610a49565b6111618133612d41565b6001600160a01b03811660009081526101636020526040812060040154611bc0906001600160801b031642613d60565b9050600061016660009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c3c9190613d47565b61016854909150600160801b90046001600160801b03168210611d52576001600160a01b0383166000908152610163602052604090206005015461271090611c8a9063ffffffff1683613ee8565b611c949190613f1d565b6001600160a01b03841660009081526101636020908152604080832060030180546001600160801b0319166001600160801b03959095169490941790935561016a9052206004015461271090611cf09063ffffffff1683613ee8565b611cfa9190613f1d565b6001600160a01b038416600090815261016a6020908152604080832060030180546001600160801b03199081166001600160801b03968716179091556101639092529091206004018054909116429092169190911790555b611d5a612d9a565b6001600160a01b03831660009081526101636020526040902060050154610168546001600160801b03908116600160201b9092041614610f3e5750506001600160a01b0316600090815261016360208181526040808420600380820180546001600160801b0390811690915561016a855292909520909401805482169055610168549290915260059092018054600160201b600160a01b03191691909216600160201b02179055565b6000818310611e125781611623565b5090919050565b600080516020614073833981519152611e318161175b565b158015611e455750611e43600061175b565b155b611e615760405162461bcd60e51b8152600401610b2990613ce0565b306001600160a01b03841603611ea85760405162461bcd60e51b815260206004820152600c60248201526b36b4b73a103a379039b2b63360a11b6044820152606401610b29565b33600090815261016360205260409020541580611ed5575033600090815261016360205260409020548211155b611f175760405162461bcd60e51b81526020600482015260136024820152721b5a5b9d195c881b585e08195e18d959591959606a1b6044820152606401610b29565b33600090815261016360205260409020600301546001600160801b03161580611f8a57503360009081526101636020526040902060030154611f6a908390600160801b90046001600160801b0316613d73565b33600090815261016360205260409020600301546001600160801b031610155b611fd25760405162461bcd60e51b81526020600482015260196024820152781b5a5b9d195c8819185a5b1e4818d85c08195e18d959591959603a1b6044820152606401610b29565b336000908152610163602052604090206003018054839190601090612008908490600160801b90046001600160801b0316613d86565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550816101636000336001600160a01b03166001600160a01b0316815260200190815260200160002060020160008282546120659190613d73565b9091555050336000908152610163602052604090206001015415806120a3575033600090815261016360205260409020600181015460029091015411155b6120bf5760405162461bcd60e51b8152600401610b2990613f31565b8161016560008282546120d29190613d73565b909155505033600090815261016a6020526040902060020154821161211f5733600090815261016a602052604081206002018054849290612114908490613d60565b909155506121349050565b33600090815261016a60205260408120600201555b61012e5461012f54604051633203f21960e11b8152600481018590526001600160a01b03868116602483015291821660448201526000929190911690636407e432906064016020604051808303816000875af1158015612198573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bc9190613f5e565b9050806121f95760405162461bcd60e51b815260206004820152600b60248201526a1b5a5b9d0819985a5b195960aa1b6044820152606401610b29565b50505050565b610f3e8363a9059cbb60e01b848460405160240161221e929190613f7b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612dca565b61016954610166546040516370a0823160e01b81526000926122e3926001600160801b03909116916001600160a01b03909116906370a082319061229d903090600401613968565b602060405180830381865afa1580156122ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122de9190613d47565b611e03565b9050801561116157610169805482919060009061230a9084906001600160801b0316613d27565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508061016560008282546123419190613d60565b909155505061016654604051630852cd8d60e31b8152600481018390526001600160a01b03909116906342966c6890602401600060405180830381600087803b15801561238d57600080fd5b505af11580156123a1573d6000803e3d6000fd5b5050505050565b6123b28282612e9c565b6000828152609760205260409020610f3e9082612f22565b806123d48161175b565b806123e457506123e4600061175b565b61242e5760405162461bcd60e51b815260206004820152601b60248201527a14185d5cd8589b1950dbdb9d1c9bdb0e881b9bdd081c185d5cd959602a1b6044820152606401610b29565b600082815260c9602052604090819020805460ff19169055517fd05bfc2250abb0f8fd265a54c53a24359c5484af63cad2e4ce87c78ab751395a90611b459084815260200190565b6124808282612f37565b6000828152609760205260409020610f3e9082612f9e565b6000805160206140d3833981519152546001600160a01b031690565b611161612fb3565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156124ef57610f3e83613077565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612549575060408051601f3d908101601f1916820190925261254691810190613d47565b60015b6125ac5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610b29565b6000805160206140d3833981519152811461261b5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610b29565b50610f3e838383613111565b6001600160a01b03163b151590565b600054610100900460ff166126a15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610b29565b565b61013080546001600160a01b0319166001600160a01b038316179055611161610de3565b610faf82826123a8565b6001600160a01b03871660009081526101636020908152604080832061016a90925282206004820154919290916001600160801b03161515906127226000805160206141188339815191528c61162a565b600185018b905589855560058501805463ffffffff191663ffffffff8b16908117909155600480870180546001600160801b031916426001600160801b031617905561016654604080516318160ddd60e01b81529051949550612710946001600160a01b03909216926318160ddd9282820192602092908290030181865afa1580156127b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d69190613d47565b6127e09190613ee8565b6127ea9190613f94565b8460030160006101000a8154816001600160801b0302191690836001600160801b031602179055506127108563ffffffff1661016660009054906101000a90046001600160a01b03166001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612870573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128949190613d47565b61289e9190613ee8565b6128a89190613f94565b6003840180546001600160801b0319166001600160801b03929092169190911790556001830187905585835560048301805463ffffffff191663ffffffff878116918217909255604080516001600160a01b038f168152602081018e90529081018c9052918a1660608301526080820189905260a0820188905260c082015281151560e08201528215156101008201527f58c3ceb7d4f068706ddc92911fae8701fac2c91c60bcc1b56ec7a6f56001aa5e906101200160405180910390a15050505050505050505050565b60006116238383613136565b6000805160206141388339815191526129978161175b565b1580156129ab57506129a9600061175b565b155b6129c75760405162461bcd60e51b8152600401610b2990613ce0565b33600090815261016a602052604090205415806129f4575033600090815261016a60205260409020548211155b612a3b5760405162461bcd60e51b81526020600482015260186024820152771b5a5b9d195c88189d5c9b881b585e08195e18d95959195960421b6044820152606401610b29565b33600090815261016a60205260409020600301546001600160801b03161580612aae575033600090815261016a6020526040902060030154612a8e908390600160801b90046001600160801b0316613d73565b33600090815261016a60205260409020600301546001600160801b031610155b612afa5760405162461bcd60e51b815260206004820152601e60248201527f6d696e746572206275726e206461696c792063617020657863656564656400006044820152606401610b29565b33600090815261016a602052604090206003018054839190601090612b30908490600160801b90046001600160801b0316613d86565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508161016a6000336001600160a01b03166001600160a01b031681526020019081526020016000206002016000828254612b8d9190613d73565b909155505033600090815261016a60205260409020600101541580612bcb575033600090815261016a60205260409020600181015460029091015411155b612be75760405162461bcd60e51b8152600401610b2990613f31565b816101655410612c0f57816101656000828254612c049190613d60565b90915550612c169050565b6000610165555b33600090815261016360205260409020600201548211612c5e57336000908152610163602052604081206002018054849290612c53908490613d60565b90915550612c739050565b33600090815261016360205260408120600201555b306001600160a01b03841603612c9a5761016654610f3e906001600160a01b031683613160565b61016654610f3e906001600160a01b031684846131ad565b6000610a49825490565b80612cc68161175b565b158015612cda5750612cd8600061175b565b155b612cf65760405162461bcd60e51b8152600401610b2990613ce0565b600082815260c9602052604090819020805460ff19166001179055517f0cb09dc71d57eeec2046f6854976717e4874a3cf2d6ddeddde337e5b6de6ba3190611b459084815260200190565b612d4b828261162a565b610faf57612d58816131c9565b612d638360206131db565b604051602001612d74929190613fba565b60408051601f198184030181529082905262461bcd60e51b8252610b299160040161387a565b612da76201518042613f1d565b61016880546001600160801b0319166001600160801b0392909216919091179055565b6000612e1f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166133769092919063ffffffff16565b805190915015610f3e5780806020019051810190612e3d9190613f5e565b610f3e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610b29565b612ea6828261162a565b610faf5760008281526065602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612ede3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000611623836001600160a01b03841661338d565b612f41828261162a565b15610faf5760008281526065602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611623836001600160a01b0384166133dc565b61012e5460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de69160048083019260209291908290030181865afa158015612ffd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130219190613da6565b6001600160a01b0316146126a15760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f646044820152606401610b29565b61308081612627565b6130e25760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610b29565b6000805160206140d383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61311a836134cf565b6000825111806131275750805b15610f3e576121f9838361350f565b600082600001828154811061314d5761314d613dc3565b9060005260206000200154905092915050565b610faf826342966c688360405160240161317c91815260200190565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050613601565b610f3e836379cc6790848460405160240161317c929190613f7b565b6060610a496001600160a01b03831660145b606060006131ea836002613ee8565b6131f5906002613d73565b6001600160401b0381111561320c5761320c6139aa565b6040519080825280601f01601f191660200182016040528015613236576020820181803683370190505b509050600360fc1b8160008151811061325157613251613dc3565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061328057613280613dc3565b60200101906001600160f81b031916908160001a90535060006132a4846002613ee8565b6132af906001613d73565b90505b6001811115613327576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106132e3576132e3613dc3565b1a60f81b8282815181106132f9576132f9613dc3565b60200101906001600160f81b031916908160001a90535060049490941c9361332081614029565b90506132b2565b5083156116235760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610b29565b6060613385848460008561369b565b949350505050565b60008181526001830160205260408120546133d457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a49565b506000610a49565b600081815260018301602052604081205480156134c5576000613400600183613d60565b855490915060009061341490600190613d60565b905081811461347957600086600001828154811061343457613434613dc3565b906000526020600020015490508087600001848154811061345757613457613dc3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061348a5761348a614040565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a49565b6000915050610a49565b6134d881613077565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061351a83612627565b6135755760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610b29565b600080846001600160a01b0316846040516135909190614056565b600060405180830381855af49150503d80600081146135cb576040519150601f19603f3d011682016040523d82523d6000602084013e6135d0565b606091505b50915091506135f8828260405180606001604052806027815260200161415860279139613776565b95945050505050565b6000613631826040518060600160405280602581526020016140f3602591396001600160a01b0386169190613376565b805190915015610f3e578080602001905181019061364f9190613f5e565b610f3e5760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e4f7065726174696f6e3a20646964206e6f742073756363656564006044820152606401610b29565b6060824710156136fc5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610b29565b600080866001600160a01b031685876040516137189190614056565b60006040518083038185875af1925050503d8060008114613755576040519150601f19603f3d011682016040523d82523d6000602084013e61375a565b606091505b509150915061376b8783838761378f565b979650505050505050565b60608315613785575081611623565b6116238383613802565b606083156137fc5782516000036137f5576137a985612627565b6137f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b29565b5081613385565b61338583835b8151156138125781518083602001fd5b8060405162461bcd60e51b8152600401610b29919061387a565b60006020828403121561383e57600080fd5b81356001600160e01b03198116811461162357600080fd5b60005b83811015613871578181015183820152602001613859565b50506000910152565b6020815260008251806020840152613899816040850160208701613856565b601f01601f19169190910160400192915050565b6001600160801b0391909116815260200190565b6001600160a01b038116811461116157600080fd5b600080604083850312156138e957600080fd5b82356138f4816138c1565b946020939093013593505050565b60006020828403121561391457600080fd5b5035919050565b6000806040838503121561392e57600080fd5b823591506020830135613940816138c1565b809150509250929050565b60006020828403121561395d57600080fd5b8135611623816138c1565b6001600160a01b0391909116815260200190565b6000806040838503121561398f57600080fd5b823561399a816138c1565b91506020830135613940816138c1565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156139e8576139e86139aa565b604052919050565b60006001600160401b03821115613a0957613a096139aa565b50601f01601f191660200190565b600082601f830112613a2857600080fd5b8135613a3b613a36826139f0565b6139c0565b818152846020838601011115613a5057600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215613a8057600080fd5b8235613a8b816138c1565b915060208301356001600160401b03811115613aa657600080fd5b613ab285828601613a17565b9150509250929050565b803563ffffffff81168114613ad057600080fd5b919050565b801515811461116157600080fd5b600080600080600080600080610100898b031215613b0057600080fd5b8835613b0b816138c1565b97506020890135965060408901359550613b2760608a01613abc565b94506080890135935060a08901359250613b4360c08a01613abc565b915060e0890135613b5381613ad5565b809150509295985092959890939650565b60008060408385031215613b7757600080fd5b50508035926020909101359150565b600080600060608486031215613b9b57600080fd5b8335613ba6816138c1565b92506020840135915060408401356001600160401b03811115613bc857600080fd5b613bd486828701613a17565b9150509250925092565b600080600080600080600060e0888a031215613bf957600080fd5b8735613c04816138c1565b96506020880135955060408801359450613c2060608901613abc565b93506080880135925060a08801359150613c3c60c08901613abc565b905092959891949750929550565b600060208284031215613c5c57600080fd5b81356001600160801b038116811461162357600080fd5b600060208284031215613c8557600080fd5b81516001600160401b03811115613c9b57600080fd5b8201601f81018413613cac57600080fd5b8051613cba613a36826139f0565b818152856020838501011115613ccf57600080fd5b6135f8826020830160208601613856565b60208082526017908201527614185d5cd8589b1950dbdb9d1c9bdb0e881c185d5cd959604a1b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6001600160801b038281168282160390808211156111d1576111d1613d11565b600060208284031215613d5957600080fd5b5051919050565b81810381811115610a4957610a49613d11565b80820180821115610a4957610a49613d11565b6001600160801b038181168382160190808211156111d1576111d1613d11565b600060208284031215613db857600080fd5b8151611623816138c1565b634e487b7160e01b600052603260045260246000fd5b6020808252600c908201526b726f6c65206d697373696e6760a01b604082015260600190565b600060208284031215613e1157600080fd5b815160ff8116811461162357600080fd5b6020808252602c908201526000805160206140b383398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201526000805160206140b383398151915260408201526b6163746976652070726f787960a01b606082015260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60008060408385031215613ecd57600080fd5b8251613ed8816138c1565b6020939093015192949293505050565b6000816000190483118215151615613f0257613f02613d11565b500290565b634e487b7160e01b600052601260045260246000fd5b600082613f2c57613f2c613f07565b500490565b6020808252601390820152721b5a5b9d195c8818d85c08195e18d959591959606a1b604082015260600190565b600060208284031215613f7057600080fd5b815161162381613ad5565b6001600160a01b03929092168252602082015260400190565b60006001600160801b0383811680613fae57613fae613f07565b92169190910492915050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613fec816017850160208801613856565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835161401d816028840160208801613856565b01602801949350505050565b60008161403857614038613d11565b506000190190565b634e487b7160e01b600052603160045260246000fd5b60008251614068818460208701613856565b919091019291505056feb2a18ae5d0b623b41098012c516d0bf4bef38c068c9e397da870c290888b19999604fa49b1cb3aa782c099225b9c340b6afeb802be5d4b3314ba27a14502cdfa46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546f6b656e4f7065726174696f6e3a206c6f772d6c6576656c2063616c6c206661696c65645407862f04286ebe607684514c14b7fffc750b6bf52ba44ea49569174845a5bd62d52416825983abd68b16e092b60c2eac31fd673bcce92494e063af530d9c30416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c65649f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6b601d6a8ea5419a4251765936e52b2763485fede82d3c5dfd765cd67d30f4f2255435dd261a4b9b3364963f7738a7a662ad9c84396d64be3365284bb7f0a5041a26469706673582212202a898be1642b59978bccb0b9c939e855c39dbcf0966b7efcb1782110a065fe1c64736f6c63430008100033";
1288
1281
 
1289
1282
  type GoodDollarMintBurnWrapperConstructorParams =
1290
1283
  | [signer?: Signer]
@@ -1080,7 +1080,7 @@ const _abi = [
1080
1080
  ];
1081
1081
 
1082
1082
  const _bytecode =
1083
- "0x60a06040523060805234801561001457600080fd5b50608051613be261004c60003960008181610e0401528181610e4401528181611298015281816112d801526113500152613be26000f3fe6080604052600436106102445760003560e01c806301ffc9a71461024957806302329a291461027e57806308e0d29d146102a057806310154bad146102c0578063188efc16146102e05780631aaff63c146103005780631b027099146103305780631b3c90a8146103505780632236684414610365578063248a9ca314610379578063291d9549146103995780632b14dda8146103b95780632cec5330146103d95780632d0e9b46146103fb5780632f2ff15d1461042857806331b376e21461044857806336568abe1461045f5780633659cfe61461047f57806337a1a9871461049f5780633af32abf146104bf5780633e6326fc146104df5780634125f0f2146104ff5780634162169f14610520578063485cc955146105405780634f1ef2861461056057806352d1902d1461057357806354f9f7a3146105885780635aef7de6146105a85780635c975abb146105c85780635f539d69146105e1578063613200401461060157806367c759371461063857806391d148541461066f57806393ce7f001461068f578063a061922d146106af578063a217fddf146106cf578063b2a1de22146106e4578063b30f7e7f146106fb578063c375c2ef14610712578063c6a276c214610732578063c73cc4ae14610752578063d326281614610772578063d547741f14610792578063d6cd9473146107b2578063e1758bd8146107c7578063e1e360ba146107dc578063e63ab1e914610813578063e737031a14610835578063f653b81e14610855578063fe575a8714610886578063fff930d4146108a6575b600080fd5b34801561025557600080fd5b506102696102643660046131c1565b6108c6565b60405190151581526020015b60405180910390f35b34801561028a57600080fd5b5061029e6102993660046131f9565b6108fd565b005b3480156102ac57600080fd5b5061029e6102bb36600461322b565b61092f565b3480156102cc57600080fd5b5061029e6102db36600461322b565b6109ed565b3480156102ec57600080fd5b5061029e6102fb36600461322b565b610a17565b34801561030c57600080fd5b50610322600080516020613abf83398151915281565b604051908152602001610275565b34801561033c57600080fd5b5061029e61034b36600461330b565b610a88565b34801561035c57600080fd5b5061029e610ab8565b34801561037157600080fd5b506001610269565b34801561038557600080fd5b5061032261039436600461335a565b610bdf565b3480156103a557600080fd5b5061029e6103b436600461322b565b610bf4565b3480156103c557600080fd5b5061029e6103d436600461322b565b610c1d565b3480156103e557600080fd5b506103ee610ce2565b60405161027591906133c3565b34801561040757600080fd5b5061041b61041636600461322b565b610cfe565b60405161027591906133d6565b34801561043457600080fd5b5061029e6104433660046133ea565b610d64565b34801561045457600080fd5b506103226101985481565b34801561046b57600080fd5b5061029e61047a3660046133ea565b610d80565b34801561048b57600080fd5b5061029e61049a36600461322b565b610dfa565b3480156104ab57600080fd5b5061029e6104ba36600461322b565b610ec2565b3480156104cb57600080fd5b506102696104da36600461322b565b610f56565b3480156104eb57600080fd5b5060675461041b906001600160a01b031681565b34801561050b57600080fd5b5061019c5461041b906001600160a01b031681565b34801561052c57600080fd5b5060655461041b906001600160a01b031681565b34801561054c57600080fd5b5061029e61055b36600461341a565b611066565b61029e61056e36600461330b565b61128e565b34801561057f57600080fd5b50610322611343565b34801561059457600080fd5b506103ee6105a336600461322b565b6113f1565b3480156105b457600080fd5b5060665461041b906001600160a01b031681565b3480156105d457600080fd5b506101305460ff16610269565b3480156105ed57600080fd5b5061029e6105fc36600461322b565b611585565b34801561060d57600080fd5b5061041b61061c36600461322b565b61019b602052600090815260409020546001600160a01b031681565b34801561064457600080fd5b5061041b61065336600461335a565b61019a602052600090815260409020546001600160a01b031681565b34801561067b57600080fd5b5061026961068a3660046133ea565b61164e565b34801561069b57600080fd5b5061029e6106aa366004613448565b611679565b3480156106bb57600080fd5b506103226106ca36600461322b565b611888565b3480156106db57600080fd5b50610322600081565b3480156106f057600080fd5b506103226101965481565b34801561070757600080fd5b506103226101975481565b34801561071e57600080fd5b5061029e61072d36600461322b565b6118b5565b34801561073e57600080fd5b5061029e61074d36600461322b565b61198c565b34801561075e57600080fd5b5061026961076d36600461322b565b611a70565b34801561077e57600080fd5b5061029e61078d3660046134a0565b611b27565b34801561079e57600080fd5b5061029e6107ad3660046133ea565b611bce565b3480156107be57600080fd5b5061029e611bea565b3480156107d357600080fd5b5061041b611c22565b3480156107e857600080fd5b506103226107f736600461322b565b6001600160a01b03166000908152610199602052604090205490565b34801561081f57600080fd5b50610322600080516020613aff83398151915281565b34801561084157600080fd5b5061029e610850366004613524565b611caf565b34801561086157600080fd5b5061087561087036600461322b565b611d04565b604051610275959493929190613583565b34801561089257600080fd5b506102696108a136600461322b565b611dc0565b3480156108b257600080fd5b5061029e6108c136600461335a565b611e33565b60006001600160e01b03198216637965db0b60e01b14806108f757506301ffc9a760e01b6001600160e01b03198316145b92915050565b600080516020613aff83398151915261091581611e49565b811561092757610923611e53565b5050565b610923611ea8565b600080516020613abf83398151915261094781611e49565b61094f611ee2565b6001600160a01b0382166000908152610199602052604090206004015460ff166001146109975760405162461bcd60e51b815260040161098e906135bd565b60405180910390fd5b6001600160a01b03821660008181526101996020908152604091829020429081905591519182527fb2a82fce6d8c7a633efe9579f77b4edb96bfdf171a49bfc2ce666dc543a1f500910160405180910390a25050565b600080516020613abf833981519152610a0581611e49565b610a0d611ee2565b6109238246611f29565b600080516020613abf833981519152610a2f81611e49565b610a37611ee2565b6001600160a01b03821660008181526101996020526040808220600401805460ff191660ff179055517f44d5fe68b00f68950fb9c1ff0a61ef7f747b1a36359a7e3a7f3324db4b8789679190a25050565b600080516020613abf833981519152610aa081611e49565b610aa8611ee2565b610ab3838346612058565b505050565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa158015610b1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3f91906135e6565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa158015610b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbd91906135e6565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b600090815260fe602052604090206001015490565b600080516020613abf833981519152610c0c81611e49565b610c14611ee2565b610923826120f9565b6000610c2881611e49565b6067546001600160a01b031615610c775760405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161098e565b610c8082612353565b606654610c98906000906001600160a01b0316612376565b606654610cbd90600080516020613aff833981519152906001600160a01b0316612376565b60665461092390600080516020613abf833981519152906001600160a01b0316612376565b604051806080016040528060478152602001613b3f6047913981565b6000610d0982610f56565b15610d12575090565b6001600160a01b03808316600090815261019b6020526040902054610d379116610f56565b15610d5c57506001600160a01b03908116600090815261019b60205260409020541690565b506000919050565b610d6d82610bdf565b610d7681611e49565b610ab3838361237c565b6001600160a01b0381163314610df05760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161098e565b6109238282612402565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610e425760405162461bcd60e51b815260040161098e90613603565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e74612469565b6001600160a01b031614610e9a5760405162461bcd60e51b815260040161098e9061363d565b610ea381612485565b60408051600080825260208201909252610ebf9183919061248d565b50565b6001600160a01b03818116600090815261019b602052604090205416331480610ef35750336001600160a01b038216145b610f2e5760405162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015260640161098e565b6001600160a01b0316600090815261019b6020526040902080546001600160a01b0319169055565b6001600160a01b0381166000908152610199602052604081205481906201518090610f81904261368d565b610f8b91906136a0565b9050610198548111158015610fbf57506001600160a01b0383166000908152610199602052604090206004015460ff166001145b15610fcd5750600192915050565b61019c546001600160a01b03161561105d5761019c54604051633af32abf60e01b81526001600160a01b0390911690633af32abf906110109086906004016133d6565b602060405180830381865afa925050508015611049575060408051601f3d908101601f19168201909252611046918101906136c2565b60015b6110565750600092915050565b9392505050565b50600092915050565b600054610100900460ff16158080156110865750600054600160ff909116105b806110a75750611095306125f8565b1580156110a7575060005460ff166001145b61110a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161098e565b6000805460ff19166001179055801561112d576000805461ff0019166101001790555b611135612607565b61113d61262e565b611184604051806040016040528060088152602001674964656e7469747960c01b815250604051806040016040528060058152602001640312e302e360dc1b815250612662565b610447610198556066546111a3906000906001600160a01b0316612376565b6111ae600084612376565b6066546111d390600080516020613aff833981519152906001600160a01b0316612376565b6111eb600080516020613aff83398151915284612376565b611203600080516020613abf83398151915284612376565b60665461122890600080516020613abf833981519152906001600160a01b0316612376565b61019c80546001600160a01b0319166001600160a01b0384161790558015610ab3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036112d65760405162461bcd60e51b815260040161098e90613603565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611308612469565b6001600160a01b03161461132e5760405162461bcd60e51b815260040161098e9061363d565b61133782612485565b6109238282600161248d565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113de5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b606482015260840161098e565b50600080516020613b1f83398151915290565b6001600160a01b03811660009081526101996020526040902060020180546060919061141c906136df565b80601f0160208091040260200160405190810160405280929190818152602001828054611448906136df565b80156114955780601f1061146a57610100808354040283529160200191611495565b820191906000526020600020905b81548152906001019060200180831161147857829003601f168201915b50508351602080860191909120600081815261019a909252604090912054949550936001600160a01b0380881691160392506114d49150505750919050565b61019c546001600160a01b03161561156f5761019c546040516354f9f7a360e01b81526001600160a01b03909116906354f9f7a3906115179086906004016133d6565b600060405180830381865afa92505050801561155557506040513d6000823e601f3d908101601f191682016040526115529190810190613719565b60015b611056575050604080516020810190915260008152919050565b5050604080516020810190915260008152919050565b600080516020613abf83398151915261159d81611e49565b6115a5611ee2565b813b6115f35760405162461bcd60e51b815260206004820152601f60248201527f476976656e2061646472657373206973206e6f74206120636f6e747261637400604482015260640161098e565b6115fd8246611f29565b6001600160a01b03821660008181526101996020526040808220600401805460ff19166002179055517f89c66952b48f3e96bf1d8ba1b63189520fd988a6979b8b740bd5c5d8dc53e2059190a25050565b600091825260fe602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61168233610f56565b61169e5760405162461bcd60e51b815260040161098e906135bd565b6000811180156116ae5750438110155b6116ed5760405162461bcd60e51b815260206004820152601060248201526f696e76616c696420646561646c696e6560801b604482015260640161098e565b6116f683610f56565b158015611709575061170783611dc0565b155b6117475760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081858d8dbdd5b9d608a1b604482015260640161098e565b6001600160a01b03838116600090815261019b602052604090205416156117a45760405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e4818dbdb9b9958dd1959607a1b604482015260640161098e565b600061180e604051806080016040528060478152602001613b3f604791398051602091820120604080519283019190915233908201526001600160a01b03861660608201526080810184905260a001604051602081830303815290604052805190602001206126a5565b905061181b8482856126f3565b61185b5760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015260640161098e565b5050506001600160a01b0316600090815261019b6020526040902080546001600160a01b03191633179055565b6001600160a01b03811660009081526101996020526040902060030154806118b057466108f7565b919050565b600080516020613abf8339815191526118cd81611e49565b6118d5611ee2565b61019c546001600160a01b03161561194b5761019c5460405163c375c2ef60e01b81526001600160a01b039091169063c375c2ef906119189085906004016133d6565b600060405180830381600087803b15801561193257600080fd5b505af1158015611946573d6000803e3d6000fd5b505050505b611954826120f9565b6040516001600160a01b038316907f8d30d41865a0b811b9545d879520d2dde9f4cc49e4241f486ad9752bc904b56590600090a25050565b600080516020613abf8339815191526119a481611e49565b6119ac611ee2565b61019c546001600160a01b031615611a225761019c546040516363513b6160e11b81526001600160a01b039091169063c6a276c2906119ef9085906004016133d6565b600060405180830381600087803b158015611a0957600080fd5b505af1158015611a1d573d6000803e3d6000fd5b505050505b6001600160a01b03821660008181526101996020526040808220600401805460ff19169055517f1747ca720b1a174a464b6513ace29b1d3190b5f632b9f34147017c81425bfde89190a25050565b6001600160a01b0381166000908152610199602052604081206004015460ff16600203611a9f57506001919050565b61019c546001600160a01b031615610d5c5761019c5460405163639e625760e11b81526001600160a01b039091169063c73cc4ae90611ae29085906004016133d6565b602060405180830381865afa925050508015611b1b575060408051601f3d908101601f19168201909252611b18918101906136c2565b60015b6108f757506000919050565b336001600160a01b0384161480611b515750611b51600080516020613abf8339815191523361164e565b611b8e5760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd08185d5d1a1bdc9a5e995960921b604482015260640161098e565b610ab38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061283592505050565b611bd782610bdf565b611be081611e49565b610ab38383612402565b611bf2611ee2565b611bfb33610f56565b611c175760405162461bcd60e51b815260040161098e906135bd565b611c20336120f9565b565b60675460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015611c86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611caa91906135e6565b905090565b600080516020613abf833981519152611cc781611e49565b611ccf611ee2565b611cda858585612058565b8115611cfd576001600160a01b0385166000908152610199602052604090208290555b5050505050565b6101996020526000908152604090208054600182015460028301805492939192611d2d906136df565b80601f0160208091040260200160405190810160405280929190818152602001828054611d59906136df565b8015611da65780601f10611d7b57610100808354040283529160200191611da6565b820191906000526020600020905b815481529060010190602001808311611d8957829003601f168201915b50505050600383015460049093015491929160ff16905085565b6001600160a01b0381166000908152610199602052604081206004015460ff9081169003611df057506001919050565b61019c546001600160a01b031615610d5c5761019c5460405163fe575a8760e01b81526001600160a01b039091169063fe575a8790611ae29085906004016133d6565b611e3b611ee2565b611e43612ab5565b61019855565b610ebf8133612b78565b611e5b611ee2565b610130805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611e913390565b604051611e9e91906133d6565b60405180910390a1565b611eb0612bd1565b610130805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611e91565b6101305460ff1615611c205760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161098e565b6001600160a01b0382166000908152610199602052604090206004015460ff1615611f8b5760405162461bcd60e51b8152602060048201526012602482015271616c7265616479206861732073746174757360701b604482015260640161098e565b60016101966000828254611f9f9190613786565b90915550506001600160a01b03821660009081526101996020908152604080832060048101805460ff1916600190811790915542908201819055815560030184905561019b909152902080546001600160a01b0319169055612001823b151590565b15612020576001610197600082825461201a9190613786565b90915550505b6040516001600160a01b038316907fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f90600090a25050565b8151602080840191909120600081815261019a9092526040909120546001600160a01b03161561209a5760405162461bcd60e51b815260040161098e90613799565b6001600160a01b0384166000908152610199602052604090206002016120c08482613817565b50600081815261019a6020526040902080546001600160a01b0319166001600160a01b0386161790556120f38483611f29565b50505050565b6001600160a01b0381166000908152610199602052604090206004015460ff166001148061214657506001600160a01b0381166000908152610199602052604090206004015460ff166002145b156122e2576001610196600082825461215f919061368d565b9091555050803b151580156121775750600061019754115b156121965760016101976000828254612190919061368d565b90915550505b6001600160a01b03811660009081526101996020526040812060020180546121bd906136df565b80601f01602080910402602001604051908101604052809291908181526020018280546121e9906136df565b80156122365780601f1061220b57610100808354040283529160200191612236565b820191906000526020600020905b81548152906001019060200180831161221957829003601f168201915b505083516020808601919091206001600160a01b03881660009081526101999092526040822082815560018101839055959650949350915061227d90506002830182613173565b506000600382018190556004909101805460ff1916905581815261019a602052604080822080546001600160a01b0319169055516001600160a01b038516917f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b691a250505b61019c546001600160a01b031615610ebf5761019c5460405163291d954960e01b81526001600160a01b039091169063291d9549906123259084906004016133d6565b600060405180830381600087803b15801561233f57600080fd5b505af1158015611cfd573d6000803e3d6000fd5b606780546001600160a01b0319166001600160a01b038316179055610ebf610ab8565b61092382825b612386828261164e565b61092357600082815260fe602090815260408083206001600160a01b03851684529091529020805460ff191660011790556123be3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61240c828261164e565b1561092357600082815260fe602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600080516020613b1f833981519152546001600160a01b031690565b610ebf612ab5565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156124c057610ab383612c1b565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561251a575060408051601f3d908101601f19168201909252612517918101906138d6565b60015b61257d5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161098e565b600080516020613b1f83398151915281146125ec5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161098e565b50610ab3838383612cb5565b6001600160a01b03163b151590565b600054610100900460ff16611c205760405162461bcd60e51b815260040161098e906138ef565b600054610100900460ff166126555760405162461bcd60e51b815260040161098e906138ef565b610130805460ff19169055565b600054610100900460ff166126895760405162461bcd60e51b815260040161098e906138ef565b8151602092830120815191909201206101629190915561016355565b60006108f76126b2612cda565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006127028585612d57565b9092509050600081600481111561271b5761271b61393a565b1480156127395750856001600160a01b0316826001600160a01b0316145b1561274957600192505050611056565b600080876001600160a01b0316631626ba7e60e01b8888604051602401612771929190613950565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516127af9190613971565b600060405180830381855afa9150503d80600081146127ea576040519150601f19603f3d011682016040523d82523d6000602084013e6127ef565b606091505b5091509150818015612802575080516020145b801561282957508051630b135d3f60e11b9061282790830160209081019084016138d6565b145b98975050505050505050565b61283e82610f56565b61285a5760405162461bcd60e51b815260040161098e906135bd565b60008151116128975760405162461bcd60e51b815260206004820152600960248201526864696420656d70747960b81b604482015260640161098e565b8051602080830191909120600081815261019a9092526040909120546001600160a01b0316156128d95760405162461bcd60e51b815260040161098e90613799565b61019c546001600160a01b031615612a0b5761019c546040516367c7593760e01b8152600481018390526000916001600160a01b0316906367c7593790602401602060405180830381865afa925050508015612952575060408051601f3d908101601f1916820190925261294f918101906135e6565b60015b1561295a5790505b6001600160a01b03811615806129815750836001600160a01b0316816001600160a01b0316145b806129b257506001600160a01b03811660009081526101996020526040812060020180546129ae906136df565b9050115b612a095760405162461bcd60e51b815260206004820152602260248201527f44494420616c72656164792072656769737465726564206f6c644964656e7469604482015261747960f01b606482015260840161098e565b505b6001600160a01b038316600090815261019960205260408082209051612a34916002019061398d565b6040805191829003909120600081815261019a602090815283822080546001600160a01b03191690556001600160a01b0388168252610199905291909120909150600201612a828482613817565b5050600090815261019a6020526040902080546001600160a01b0319166001600160a01b03939093169290921790915550565b60655460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de69160048083019260209291908290030181865afa158015612afe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b2291906135e6565b6001600160a01b031614611c205760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f64604482015260640161098e565b612b82828261164e565b61092357612b8f81612d9c565b612b9a836020612dae565b604051602001612bab929190613a03565b60408051601f198184030181529082905262461bcd60e51b825261098e916004016133c3565b6101305460ff16611c205760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161098e565b612c24816125f8565b612c865760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161098e565b600080516020613b1f83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612cbe83612f49565b600082511180612ccb5750805b15610ab3576120f38383612f89565b6000611caa7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f612d0a6101625490565b610163546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6000808251604103612d8d5760208301516040840151606085015160001a612d818782858561307b565b94509450505050612d95565b506000905060025b9250929050565b60606108f76001600160a01b03831660145b60606000612dbd836002613a72565b612dc8906002613786565b6001600160401b03811115612ddf57612ddf613248565b6040519080825280601f01601f191660200182016040528015612e09576020820181803683370190505b509050600360fc1b81600081518110612e2457612e24613a91565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612e5357612e53613a91565b60200101906001600160f81b031916908160001a9053506000612e77846002613a72565b612e82906001613786565b90505b6001811115612efa576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612eb657612eb6613a91565b1a60f81b828281518110612ecc57612ecc613a91565b60200101906001600160f81b031916908160001a90535060049490941c93612ef381613aa7565b9050612e85565b5083156110565760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161098e565b612f5281612c1b565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060612f94836125f8565b612fef5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161098e565b600080846001600160a01b03168460405161300a9190613971565b600060405180830381855af49150503d8060008114613045576040519150601f19603f3d011682016040523d82523d6000602084013e61304a565b606091505b50915091506130728282604051806060016040528060278152602001613b8660279139613135565b95945050505050565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b038311156130a8575060009050600361312c565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156130fc573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166131255760006001925092505061312c565b9150600090505b94509492505050565b60608315613144575081611056565b61105683838151156131595781518083602001fd5b8060405162461bcd60e51b815260040161098e91906133c3565b50805461317f906136df565b6000825580601f1061318f575050565b601f016020900490600052602060002090810190610ebf91905b808211156131bd57600081556001016131a9565b5090565b6000602082840312156131d357600080fd5b81356001600160e01b03198116811461105657600080fd5b8015158114610ebf57600080fd5b60006020828403121561320b57600080fd5b8135611056816131eb565b6001600160a01b0381168114610ebf57600080fd5b60006020828403121561323d57600080fd5b813561105681613216565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561328657613286613248565b604052919050565b60006001600160401b038211156132a7576132a7613248565b50601f01601f191660200190565b600082601f8301126132c657600080fd5b81356132d96132d48261328e565b61325e565b8181528460208386010111156132ee57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561331e57600080fd5b823561332981613216565b915060208301356001600160401b0381111561334457600080fd5b613350858286016132b5565b9150509250929050565b60006020828403121561336c57600080fd5b5035919050565b60005b8381101561338e578181015183820152602001613376565b50506000910152565b600081518084526133af816020860160208601613373565b601f01601f19169290920160200192915050565b6020815260006110566020830184613397565b6001600160a01b0391909116815260200190565b600080604083850312156133fd57600080fd5b82359150602083013561340f81613216565b809150509250929050565b6000806040838503121561342d57600080fd5b823561343881613216565b9150602083013561340f81613216565b60008060006060848603121561345d57600080fd5b833561346881613216565b925060208401356001600160401b0381111561348357600080fd5b61348f868287016132b5565b925050604084013590509250925092565b6000806000604084860312156134b557600080fd5b83356134c081613216565b925060208401356001600160401b03808211156134dc57600080fd5b818601915086601f8301126134f057600080fd5b8135818111156134ff57600080fd5b87602082850101111561351157600080fd5b6020830194508093505050509250925092565b6000806000806080858703121561353a57600080fd5b843561354581613216565b935060208501356001600160401b0381111561356057600080fd5b61356c878288016132b5565b949794965050505060408301359260600135919050565b85815284602082015260a0604082015260006135a260a0830186613397565b905083606083015260ff831660808301529695505050505050565b6020808252600f908201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b604082015260600190565b6000602082840312156135f857600080fd5b815161105681613216565b6020808252602c90820152600080516020613adf83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020613adf83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b818103818111156108f7576108f7613677565b6000826136bd57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156136d457600080fd5b8151611056816131eb565b600181811c908216806136f357607f821691505b60208210810361371357634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561372b57600080fd5b81516001600160401b0381111561374157600080fd5b8201601f8101841361375257600080fd5b80516137606132d48261328e565b81815285602083850101111561377557600080fd5b613072826020830160208601613373565b808201808211156108f7576108f7613677565b60208082526016908201527511125108185b1c9958591e481c9959da5cdd195c995960521b604082015260600190565b601f821115610ab357600081815260208120601f850160051c810160208610156137f05750805b601f850160051c820191505b8181101561380f578281556001016137fc565b505050505050565b81516001600160401b0381111561383057613830613248565b6138448161383e84546136df565b846137c9565b602080601f83116001811461387957600084156138615750858301515b600019600386901b1c1916600185901b17855561380f565b600085815260208120601f198616915b828110156138a857888601518255948401946001909101908401613889565b50858210156138c65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156138e857600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b8281526040602082015260006139696040830184613397565b949350505050565b60008251613983818460208701613373565b9190910192915050565b600080835461399b816136df565b600182811680156139b357600181146139c8576139f7565b60ff19841687528215158302870194506139f7565b8760005260208060002060005b858110156139ee5781548a8201529084019082016139d5565b50505082870194505b50929695505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613a35816017850160208801613373565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613a66816028840160208801613373565b01602801949350505050565b6000816000190483118215151615613a8c57613a8c613677565b500290565b634e487b7160e01b600052603260045260246000fd5b600081613ab657613ab6613677565b50600019019056fe091941537c453917ef5b0c67f46f29060aca926ebd752fe441d5625e85c3a57646756e6374696f6e206d7573742062652063616c6c6564207468726f756768200b0f1f48172a2124d5545a38711e7e9d2e7a6c0b46b85cf1c1788e7a11ba5bf2360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc436f6e6e6563744964656e7469747928616464726573732077686974656c69737465642c6164647265737320636f6e6e65637465642c75696e7432353620646561646c696e6529416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d6561f0047f20000f85b1879398091adc0de028126bc09e8b4602ea84bbbedef64736f6c63430008100033";
1083
+ "0x60a06040523060805234801561001457600080fd5b50608051613d5361004c60003960008181610e0401528181610e4401528181611298015281816112d801526113500152613d536000f3fe6080604052600436106102445760003560e01c806301ffc9a71461024957806302329a291461027e57806308e0d29d146102a057806310154bad146102c0578063188efc16146102e05780631aaff63c146103005780631b027099146103305780631b3c90a8146103505780632236684414610365578063248a9ca314610379578063291d9549146103995780632b14dda8146103b95780632cec5330146103d95780632d0e9b46146103fb5780632f2ff15d1461042857806331b376e21461044857806336568abe1461045f5780633659cfe61461047f57806337a1a9871461049f5780633af32abf146104bf5780633e6326fc146104df5780634125f0f2146104ff5780634162169f14610520578063485cc955146105405780634f1ef2861461056057806352d1902d1461057357806354f9f7a3146105885780635aef7de6146105a85780635c975abb146105c85780635f539d69146105e1578063613200401461060157806367c759371461063857806391d148541461066f57806393ce7f001461068f578063a061922d146106af578063a217fddf146106cf578063b2a1de22146106e4578063b30f7e7f146106fb578063c375c2ef14610712578063c6a276c214610732578063c73cc4ae14610752578063d326281614610772578063d547741f14610792578063d6cd9473146107b2578063e1758bd8146107c7578063e1e360ba146107dc578063e63ab1e914610813578063e737031a14610835578063f653b81e14610855578063fe575a8714610886578063fff930d4146108a6575b600080fd5b34801561025557600080fd5b50610269610264366004613332565b6108c6565b60405190151581526020015b60405180910390f35b34801561028a57600080fd5b5061029e61029936600461336a565b6108fd565b005b3480156102ac57600080fd5b5061029e6102bb36600461339c565b61092f565b3480156102cc57600080fd5b5061029e6102db36600461339c565b6109ed565b3480156102ec57600080fd5b5061029e6102fb36600461339c565b610a17565b34801561030c57600080fd5b50610322600080516020613c3083398151915281565b604051908152602001610275565b34801561033c57600080fd5b5061029e61034b36600461347c565b610a88565b34801561035c57600080fd5b5061029e610ab8565b34801561037157600080fd5b506001610269565b34801561038557600080fd5b506103226103943660046134cb565b610bdf565b3480156103a557600080fd5b5061029e6103b436600461339c565b610bf4565b3480156103c557600080fd5b5061029e6103d436600461339c565b610c1d565b3480156103e557600080fd5b506103ee610ce2565b6040516102759190613534565b34801561040757600080fd5b5061041b61041636600461339c565b610cfe565b6040516102759190613547565b34801561043457600080fd5b5061029e61044336600461355b565b610d64565b34801561045457600080fd5b506103226101985481565b34801561046b57600080fd5b5061029e61047a36600461355b565b610d80565b34801561048b57600080fd5b5061029e61049a36600461339c565b610dfa565b3480156104ab57600080fd5b5061029e6104ba36600461339c565b610ec2565b3480156104cb57600080fd5b506102696104da36600461339c565b610f56565b3480156104eb57600080fd5b5060675461041b906001600160a01b031681565b34801561050b57600080fd5b5061019c5461041b906001600160a01b031681565b34801561052c57600080fd5b5060655461041b906001600160a01b031681565b34801561054c57600080fd5b5061029e61055b36600461358b565b611066565b61029e61056e36600461347c565b61128e565b34801561057f57600080fd5b50610322611343565b34801561059457600080fd5b506103ee6105a336600461339c565b6113f1565b3480156105b457600080fd5b5060665461041b906001600160a01b031681565b3480156105d457600080fd5b506101305460ff16610269565b3480156105ed57600080fd5b5061029e6105fc36600461339c565b611585565b34801561060d57600080fd5b5061041b61061c36600461339c565b61019b602052600090815260409020546001600160a01b031681565b34801561064457600080fd5b5061041b6106533660046134cb565b61019a602052600090815260409020546001600160a01b031681565b34801561067b57600080fd5b5061026961068a36600461355b565b61164e565b34801561069b57600080fd5b5061029e6106aa3660046135b9565b611679565b3480156106bb57600080fd5b506103226106ca36600461339c565b611888565b3480156106db57600080fd5b50610322600081565b3480156106f057600080fd5b506103226101965481565b34801561070757600080fd5b506103226101975481565b34801561071e57600080fd5b5061029e61072d36600461339c565b6118b5565b34801561073e57600080fd5b5061029e61074d36600461339c565b611a07565b34801561075e57600080fd5b5061026961076d36600461339c565b611b66565b34801561077e57600080fd5b5061029e61078d366004613611565b611c1d565b34801561079e57600080fd5b5061029e6107ad36600461355b565b611cc4565b3480156107be57600080fd5b5061029e611ce0565b3480156107d357600080fd5b5061041b611d18565b3480156107e857600080fd5b506103226107f736600461339c565b6001600160a01b03166000908152610199602052604090205490565b34801561081f57600080fd5b50610322600080516020613c7083398151915281565b34801561084157600080fd5b5061029e610850366004613695565b611da5565b34801561086157600080fd5b5061087561087036600461339c565b611dfa565b6040516102759594939291906136f4565b34801561089257600080fd5b506102696108a136600461339c565b611eb6565b3480156108b257600080fd5b5061029e6108c13660046134cb565b611f29565b60006001600160e01b03198216637965db0b60e01b14806108f757506301ffc9a760e01b6001600160e01b03198316145b92915050565b600080516020613c7083398151915261091581611f3f565b811561092757610923611f49565b5050565b610923611f9e565b600080516020613c3083398151915261094781611f3f565b61094f611fd8565b6001600160a01b0382166000908152610199602052604090206004015460ff166001146109975760405162461bcd60e51b815260040161098e9061372e565b60405180910390fd5b6001600160a01b03821660008181526101996020908152604091829020429081905591519182527fb2a82fce6d8c7a633efe9579f77b4edb96bfdf171a49bfc2ce666dc543a1f500910160405180910390a25050565b600080516020613c30833981519152610a0581611f3f565b610a0d611fd8565b610923824661201f565b600080516020613c30833981519152610a2f81611f3f565b610a37611fd8565b6001600160a01b03821660008181526101996020526040808220600401805460ff191660ff179055517f44d5fe68b00f68950fb9c1ff0a61ef7f747b1a36359a7e3a7f3324db4b8789679190a25050565b600080516020613c30833981519152610aa081611f3f565b610aa8611fd8565b610ab383834661214e565b505050565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa158015610b1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3f9190613757565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa158015610b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbd9190613757565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b600090815260fe602052604090206001015490565b600080516020613c30833981519152610c0c81611f3f565b610c14611fd8565b610923826121ef565b6000610c2881611f3f565b6067546001600160a01b031615610c775760405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b604482015260640161098e565b610c80826124c4565b606654610c98906000906001600160a01b03166124e7565b606654610cbd90600080516020613c70833981519152906001600160a01b03166124e7565b60665461092390600080516020613c30833981519152906001600160a01b03166124e7565b604051806080016040528060478152602001613cb06047913981565b6000610d0982610f56565b15610d12575090565b6001600160a01b03808316600090815261019b6020526040902054610d379116610f56565b15610d5c57506001600160a01b03908116600090815261019b60205260409020541690565b506000919050565b610d6d82610bdf565b610d7681611f3f565b610ab383836124ed565b6001600160a01b0381163314610df05760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161098e565b6109238282612573565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610e425760405162461bcd60e51b815260040161098e90613774565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610e746125da565b6001600160a01b031614610e9a5760405162461bcd60e51b815260040161098e906137ae565b610ea3816125f6565b60408051600080825260208201909252610ebf918391906125fe565b50565b6001600160a01b03818116600090815261019b602052604090205416331480610ef35750336001600160a01b038216145b610f2e5760405162461bcd60e51b815260206004820152600c60248201526b1d5b985d5d1a1bdc9a5e995960a21b604482015260640161098e565b6001600160a01b0316600090815261019b6020526040902080546001600160a01b0319169055565b6001600160a01b0381166000908152610199602052604081205481906201518090610f8190426137fe565b610f8b9190613811565b9050610198548111158015610fbf57506001600160a01b0383166000908152610199602052604090206004015460ff166001145b15610fcd5750600192915050565b61019c546001600160a01b03161561105d5761019c54604051633af32abf60e01b81526001600160a01b0390911690633af32abf90611010908690600401613547565b602060405180830381865afa925050508015611049575060408051601f3d908101601f1916820190925261104691810190613833565b60015b6110565750600092915050565b9392505050565b50600092915050565b600054610100900460ff16158080156110865750600054600160ff909116105b806110a7575061109530612769565b1580156110a7575060005460ff166001145b61110a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161098e565b6000805460ff19166001179055801561112d576000805461ff0019166101001790555b611135612778565b61113d61279f565b611184604051806040016040528060088152602001674964656e7469747960c01b815250604051806040016040528060058152602001640312e302e360dc1b8152506127d3565b610447610198556066546111a3906000906001600160a01b03166124e7565b6111ae6000846124e7565b6066546111d390600080516020613c70833981519152906001600160a01b03166124e7565b6111eb600080516020613c70833981519152846124e7565b611203600080516020613c30833981519152846124e7565b60665461122890600080516020613c30833981519152906001600160a01b03166124e7565b61019c80546001600160a01b0319166001600160a01b0384161790558015610ab3576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036112d65760405162461bcd60e51b815260040161098e90613774565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166113086125da565b6001600160a01b03161461132e5760405162461bcd60e51b815260040161098e906137ae565b611337826125f6565b610923828260016125fe565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113de5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b606482015260840161098e565b50600080516020613c9083398151915290565b6001600160a01b03811660009081526101996020526040902060020180546060919061141c90613850565b80601f016020809104026020016040519081016040528092919081815260200182805461144890613850565b80156114955780601f1061146a57610100808354040283529160200191611495565b820191906000526020600020905b81548152906001019060200180831161147857829003601f168201915b50508351602080860191909120600081815261019a909252604090912054949550936001600160a01b0380881691160392506114d49150505750919050565b61019c546001600160a01b03161561156f5761019c546040516354f9f7a360e01b81526001600160a01b03909116906354f9f7a390611517908690600401613547565b600060405180830381865afa92505050801561155557506040513d6000823e601f3d908101601f19168201604052611552919081019061388a565b60015b611056575050604080516020810190915260008152919050565b5050604080516020810190915260008152919050565b600080516020613c3083398151915261159d81611f3f565b6115a5611fd8565b813b6115f35760405162461bcd60e51b815260206004820152601f60248201527f476976656e2061646472657373206973206e6f74206120636f6e747261637400604482015260640161098e565b6115fd824661201f565b6001600160a01b03821660008181526101996020526040808220600401805460ff19166002179055517f89c66952b48f3e96bf1d8ba1b63189520fd988a6979b8b740bd5c5d8dc53e2059190a25050565b600091825260fe602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61168233610f56565b61169e5760405162461bcd60e51b815260040161098e9061372e565b6000811180156116ae5750438110155b6116ed5760405162461bcd60e51b815260206004820152601060248201526f696e76616c696420646561646c696e6560801b604482015260640161098e565b6116f683610f56565b158015611709575061170783611eb6565b155b6117475760405162461bcd60e51b815260206004820152600f60248201526e1a5b9d985b1a59081858d8dbdd5b9d608a1b604482015260640161098e565b6001600160a01b03838116600090815261019b602052604090205416156117a45760405162461bcd60e51b8152602060048201526011602482015270185b1c9958591e4818dbdb9b9958dd1959607a1b604482015260640161098e565b600061180e604051806080016040528060478152602001613cb0604791398051602091820120604080519283019190915233908201526001600160a01b03861660608201526080810184905260a00160405160208183030381529060405280519060200120612816565b905061181b848285612864565b61185b5760405162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015260640161098e565b5050506001600160a01b0316600090815261019b6020526040902080546001600160a01b03191633179055565b6001600160a01b03811660009081526101996020526040902060030154806118b057466108f7565b919050565b600080516020613c308339815191526118cd81611f3f565b6118d5611fd8565b61019c546001600160a01b03161580159061195d575061019c5460405163639e625760e11b81526001600160a01b039091169063c73cc4ae9061191c908590600401613547565b602060405180830381865afa158015611939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195d9190613833565b156119c65761019c5460405163c375c2ef60e01b81526001600160a01b039091169063c375c2ef90611993908590600401613547565b600060405180830381600087803b1580156119ad57600080fd5b505af11580156119c1573d6000803e3d6000fd5b505050505b6119cf826121ef565b6040516001600160a01b038316907f8d30d41865a0b811b9545d879520d2dde9f4cc49e4241f486ad9752bc904b56590600090a25050565b600080516020613c30833981519152611a1f81611f3f565b611a27611fd8565b61019c546001600160a01b031615801590611aaf575061019c5460405163fe575a8760e01b81526001600160a01b039091169063fe575a8790611a6e908590600401613547565b602060405180830381865afa158015611a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aaf9190613833565b15611b185761019c546040516363513b6160e11b81526001600160a01b039091169063c6a276c290611ae5908590600401613547565b600060405180830381600087803b158015611aff57600080fd5b505af1158015611b13573d6000803e3d6000fd5b505050505b6001600160a01b03821660008181526101996020526040808220600401805460ff19169055517f1747ca720b1a174a464b6513ace29b1d3190b5f632b9f34147017c81425bfde89190a25050565b6001600160a01b0381166000908152610199602052604081206004015460ff16600203611b9557506001919050565b61019c546001600160a01b031615610d5c5761019c5460405163639e625760e11b81526001600160a01b039091169063c73cc4ae90611bd8908590600401613547565b602060405180830381865afa925050508015611c11575060408051601f3d908101601f19168201909252611c0e91810190613833565b60015b6108f757506000919050565b336001600160a01b0384161480611c475750611c47600080516020613c308339815191523361164e565b611c845760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd08185d5d1a1bdc9a5e995960921b604482015260640161098e565b610ab38383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129a692505050565b611ccd82610bdf565b611cd681611f3f565b610ab38383612573565b611ce8611fd8565b611cf133610f56565b611d0d5760405162461bcd60e51b815260040161098e9061372e565b611d16336121ef565b565b60675460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015611d7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da09190613757565b905090565b600080516020613c30833981519152611dbd81611f3f565b611dc5611fd8565b611dd085858561214e565b8115611df3576001600160a01b0385166000908152610199602052604090208290555b5050505050565b6101996020526000908152604090208054600182015460028301805492939192611e2390613850565b80601f0160208091040260200160405190810160405280929190818152602001828054611e4f90613850565b8015611e9c5780601f10611e7157610100808354040283529160200191611e9c565b820191906000526020600020905b815481529060010190602001808311611e7f57829003601f168201915b50505050600383015460049093015491929160ff16905085565b6001600160a01b0381166000908152610199602052604081206004015460ff9081169003611ee657506001919050565b61019c546001600160a01b031615610d5c5761019c5460405163fe575a8760e01b81526001600160a01b039091169063fe575a8790611bd8908590600401613547565b611f31611fd8565b611f39612c26565b61019855565b610ebf8133612ce9565b611f51611fd8565b610130805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611f873390565b604051611f949190613547565b60405180910390a1565b611fa6612d42565b610130805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611f87565b6101305460ff1615611d165760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161098e565b6001600160a01b0382166000908152610199602052604090206004015460ff16156120815760405162461bcd60e51b8152602060048201526012602482015271616c7265616479206861732073746174757360701b604482015260640161098e565b6001610196600082825461209591906138f7565b90915550506001600160a01b03821660009081526101996020908152604080832060048101805460ff1916600190811790915542908201819055815560030184905561019b909152902080546001600160a01b03191690556120f7823b151590565b15612116576001610197600082825461211091906138f7565b90915550505b6040516001600160a01b038316907fee1504a83b6d4a361f4c1dc78ab59bfa30d6a3b6612c403e86bb01ef2984295f90600090a25050565b8151602080840191909120600081815261019a9092526040909120546001600160a01b0316156121905760405162461bcd60e51b815260040161098e9061390a565b6001600160a01b0384166000908152610199602052604090206002016121b68482613988565b50600081815261019a6020526040902080546001600160a01b0319166001600160a01b0386161790556121e9848361201f565b50505050565b6001600160a01b0381166000908152610199602052604090206004015460ff166001148061223c57506001600160a01b0381166000908152610199602052604090206004015460ff166002145b156123d8576001610196600082825461225591906137fe565b9091555050803b1515801561226d5750600061019754115b1561228c576001610197600082825461228691906137fe565b90915550505b6001600160a01b03811660009081526101996020526040812060020180546122b390613850565b80601f01602080910402602001604051908101604052809291908181526020018280546122df90613850565b801561232c5780601f106123015761010080835404028352916020019161232c565b820191906000526020600020905b81548152906001019060200180831161230f57829003601f168201915b505083516020808601919091206001600160a01b038816600090815261019990925260408220828155600181018390559596509493509150612373905060028301826132e4565b506000600382018190556004909101805460ff1916905581815261019a602052604080822080546001600160a01b0319169055516001600160a01b038516917f270d9b30cf5b0793bbfd54c9d5b94aeb49462b8148399000265144a8722da6b691a250505b61019c546001600160a01b031615801590612460575061019c54604051633af32abf60e01b81526001600160a01b0390911690633af32abf9061241f908490600401613547565b602060405180830381865afa15801561243c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124609190613833565b15610ebf5761019c5460405163291d954960e01b81526001600160a01b039091169063291d954990612496908490600401613547565b600060405180830381600087803b1580156124b057600080fd5b505af1158015611df3573d6000803e3d6000fd5b606780546001600160a01b0319166001600160a01b038316179055610ebf610ab8565b61092382825b6124f7828261164e565b61092357600082815260fe602090815260408083206001600160a01b03851684529091529020805460ff1916600117905561252f3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61257d828261164e565b1561092357600082815260fe602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600080516020613c90833981519152546001600160a01b031690565b610ebf612c26565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561263157610ab383612d8c565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561268b575060408051601f3d908101601f1916820190925261268891810190613a47565b60015b6126ee5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161098e565b600080516020613c90833981519152811461275d5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161098e565b50610ab3838383612e26565b6001600160a01b03163b151590565b600054610100900460ff16611d165760405162461bcd60e51b815260040161098e90613a60565b600054610100900460ff166127c65760405162461bcd60e51b815260040161098e90613a60565b610130805460ff19169055565b600054610100900460ff166127fa5760405162461bcd60e51b815260040161098e90613a60565b8151602092830120815191909201206101629190915561016355565b60006108f7612823612e4b565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006128738585612ec8565b9092509050600081600481111561288c5761288c613aab565b1480156128aa5750856001600160a01b0316826001600160a01b0316145b156128ba57600192505050611056565b600080876001600160a01b0316631626ba7e60e01b88886040516024016128e2929190613ac1565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516129209190613ae2565b600060405180830381855afa9150503d806000811461295b576040519150601f19603f3d011682016040523d82523d6000602084013e612960565b606091505b5091509150818015612973575080516020145b801561299a57508051630b135d3f60e11b906129989083016020908101908401613a47565b145b98975050505050505050565b6129af82610f56565b6129cb5760405162461bcd60e51b815260040161098e9061372e565b6000815111612a085760405162461bcd60e51b815260206004820152600960248201526864696420656d70747960b81b604482015260640161098e565b8051602080830191909120600081815261019a9092526040909120546001600160a01b031615612a4a5760405162461bcd60e51b815260040161098e9061390a565b61019c546001600160a01b031615612b7c5761019c546040516367c7593760e01b8152600481018390526000916001600160a01b0316906367c7593790602401602060405180830381865afa925050508015612ac3575060408051601f3d908101601f19168201909252612ac091810190613757565b60015b15612acb5790505b6001600160a01b0381161580612af25750836001600160a01b0316816001600160a01b0316145b80612b2357506001600160a01b0381166000908152610199602052604081206002018054612b1f90613850565b9050115b612b7a5760405162461bcd60e51b815260206004820152602260248201527f44494420616c72656164792072656769737465726564206f6c644964656e7469604482015261747960f01b606482015260840161098e565b505b6001600160a01b038316600090815261019960205260408082209051612ba59160020190613afe565b6040805191829003909120600081815261019a602090815283822080546001600160a01b03191690556001600160a01b0388168252610199905291909120909150600201612bf38482613988565b5050600090815261019a6020526040902080546001600160a01b0319166001600160a01b03939093169290921790915550565b60655460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de69160048083019260209291908290030181865afa158015612c6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c939190613757565b6001600160a01b031614611d165760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f64604482015260640161098e565b612cf3828261164e565b61092357612d0081612f0d565b612d0b836020612f1f565b604051602001612d1c929190613b74565b60408051601f198184030181529082905262461bcd60e51b825261098e91600401613534565b6101305460ff16611d165760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161098e565b612d9581612769565b612df75760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161098e565b600080516020613c9083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612e2f836130ba565b600082511180612e3c5750805b15610ab3576121e983836130fa565b6000611da07f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f612e7b6101625490565b610163546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6000808251604103612efe5760208301516040840151606085015160001a612ef2878285856131ec565b94509450505050612f06565b506000905060025b9250929050565b60606108f76001600160a01b03831660145b60606000612f2e836002613be3565b612f399060026138f7565b6001600160401b03811115612f5057612f506133b9565b6040519080825280601f01601f191660200182016040528015612f7a576020820181803683370190505b509050600360fc1b81600081518110612f9557612f95613c02565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612fc457612fc4613c02565b60200101906001600160f81b031916908160001a9053506000612fe8846002613be3565b612ff39060016138f7565b90505b600181111561306b576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061302757613027613c02565b1a60f81b82828151811061303d5761303d613c02565b60200101906001600160f81b031916908160001a90535060049490941c9361306481613c18565b9050612ff6565b5083156110565760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161098e565b6130c381612d8c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061310583612769565b6131605760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161098e565b600080846001600160a01b03168460405161317b9190613ae2565b600060405180830381855af49150503d80600081146131b6576040519150601f19603f3d011682016040523d82523d6000602084013e6131bb565b606091505b50915091506131e38282604051806060016040528060278152602001613cf7602791396132a6565b95945050505050565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115613219575060009050600361329d565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561326d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166132965760006001925092505061329d565b9150600090505b94509492505050565b606083156132b5575081611056565b61105683838151156132ca5781518083602001fd5b8060405162461bcd60e51b815260040161098e9190613534565b5080546132f090613850565b6000825580601f10613300575050565b601f016020900490600052602060002090810190610ebf91905b8082111561332e576000815560010161331a565b5090565b60006020828403121561334457600080fd5b81356001600160e01b03198116811461105657600080fd5b8015158114610ebf57600080fd5b60006020828403121561337c57600080fd5b81356110568161335c565b6001600160a01b0381168114610ebf57600080fd5b6000602082840312156133ae57600080fd5b813561105681613387565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156133f7576133f76133b9565b604052919050565b60006001600160401b03821115613418576134186133b9565b50601f01601f191660200190565b600082601f83011261343757600080fd5b813561344a613445826133ff565b6133cf565b81815284602083860101111561345f57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561348f57600080fd5b823561349a81613387565b915060208301356001600160401b038111156134b557600080fd5b6134c185828601613426565b9150509250929050565b6000602082840312156134dd57600080fd5b5035919050565b60005b838110156134ff5781810151838201526020016134e7565b50506000910152565b600081518084526135208160208601602086016134e4565b601f01601f19169290920160200192915050565b6020815260006110566020830184613508565b6001600160a01b0391909116815260200190565b6000806040838503121561356e57600080fd5b82359150602083013561358081613387565b809150509250929050565b6000806040838503121561359e57600080fd5b82356135a981613387565b9150602083013561358081613387565b6000806000606084860312156135ce57600080fd5b83356135d981613387565b925060208401356001600160401b038111156135f457600080fd5b61360086828701613426565b925050604084013590509250925092565b60008060006040848603121561362657600080fd5b833561363181613387565b925060208401356001600160401b038082111561364d57600080fd5b818601915086601f83011261366157600080fd5b81358181111561367057600080fd5b87602082850101111561368257600080fd5b6020830194508093505050509250925092565b600080600080608085870312156136ab57600080fd5b84356136b681613387565b935060208501356001600160401b038111156136d157600080fd5b6136dd87828801613426565b949794965050505060408301359260600135919050565b85815284602082015260a06040820152600061371360a0830186613508565b905083606083015260ff831660808301529695505050505050565b6020808252600f908201526e1b9bdd081dda1a5d195b1a5cdd1959608a1b604082015260600190565b60006020828403121561376957600080fd5b815161105681613387565b6020808252602c90820152600080516020613c5083398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020613c5083398151915260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b818103818111156108f7576108f76137e8565b60008261382e57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561384557600080fd5b81516110568161335c565b600181811c9082168061386457607f821691505b60208210810361388457634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561389c57600080fd5b81516001600160401b038111156138b257600080fd5b8201601f810184136138c357600080fd5b80516138d1613445826133ff565b8181528560208385010111156138e657600080fd5b6131e38260208301602086016134e4565b808201808211156108f7576108f76137e8565b60208082526016908201527511125108185b1c9958591e481c9959da5cdd195c995960521b604082015260600190565b601f821115610ab357600081815260208120601f850160051c810160208610156139615750805b601f850160051c820191505b818110156139805782815560010161396d565b505050505050565b81516001600160401b038111156139a1576139a16133b9565b6139b5816139af8454613850565b8461393a565b602080601f8311600181146139ea57600084156139d25750858301515b600019600386901b1c1916600185901b178555613980565b600085815260208120601f198616915b82811015613a19578886015182559484019460019091019084016139fa565b5085821015613a375787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215613a5957600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b828152604060208201526000613ada6040830184613508565b949350505050565b60008251613af48184602087016134e4565b9190910192915050565b6000808354613b0c81613850565b60018281168015613b245760018114613b3957613b68565b60ff1984168752821515830287019450613b68565b8760005260208060002060005b85811015613b5f5781548a820152908401908201613b46565b50505082870194505b50929695505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613ba68160178501602088016134e4565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613bd78160288401602088016134e4565b01602801949350505050565b6000816000190483118215151615613bfd57613bfd6137e8565b500290565b634e487b7160e01b600052603260045260246000fd5b600081613c2757613c276137e8565b50600019019056fe091941537c453917ef5b0c67f46f29060aca926ebd752fe441d5625e85c3a57646756e6374696f6e206d7573742062652063616c6c6564207468726f756768200b0f1f48172a2124d5545a38711e7e9d2e7a6c0b46b85cf1c1788e7a11ba5bf2360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc436f6e6e6563744964656e7469747928616464726573732077686974656c69737465642c6164647265737320636f6e6e65637465642c75696e7432353620646561646c696e6529416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207e34401eaf0b2332c276511ed491e7b7706b46a2b6d5ae33dbad053294efa32864736f6c63430008100033";
1084
1084
 
1085
1085
  type IdentityV2ConstructorParams =
1086
1086
  | [signer?: Signer]
@@ -985,7 +985,7 @@ const _abi = [
985
985
  ];
986
986
 
987
987
  const _bytecode =
988
- "0x60a06040523060805234801561001457600080fd5b50608051612c7661004c60003960008181610d6901528181610da9015281816111dd0152818161121d01526112990152612c766000f3fe60806040526004361061022e5760003560e01c8063013eba921461023357806302329a2914610273578063069786ea146102955780630ce82d67146102bf5780631248b101146102d45780631794bb3c1461030b5780631a787f2e1461032b5780631b3c90a81461034b5780631bbc644c146103605780631d8f5ea91461039057806322b45727146103a65780633659cfe6146103bc57806337658574146103dc5780633d84ceca146103f25780633e6326fc146104125780634162169f1461043f5780634202d2141461045f578063456ac1c21461047f5780634b4c7180146104995780634e71d92d146104b35780634f1ef286146104c85780635231e2f0146104db57806352d1902d1461050b578063560796d1146105205780635aef7de6146105715780635c9302c9146105915780635c975abb146105a757806373b2e80e146105c1578063741470ac146105e15780638081cbbd146105f75780638fd247d21461061757806398d6621b146106375780639dc2c0331461064c578063a21f698a14610662578063b656223d14610682578063ba07541014610698578063c033abf2146106ae578063c1337508146106c4578063c7713870146106e4578063c7a76adf146106f9578063cc054dfc14610719578063cef6360014610746578063d6a9f61814610766578063d7c4cbb814610786578063dddc36161461079c578063de1de3a0146107b1578063e1758bd8146107d1578063eac471a0146107e6578063eda4e6d6146107fc575b600080fd5b34801561023f57600080fd5b5061026061024e366004612651565b609b6020526000908152604090205481565b6040519081526020015b60405180910390f35b34801561027f57600080fd5b5061029361028e36600461267c565b610812565b005b3480156102a157600080fd5b506102aa61082d565b6040805192835260208301919091520161026a565b3480156102cb57600080fd5b5061026061086b565b3480156102e057600080fd5b506102aa6102ef366004612699565b609a602052600090815260409020600181015460029091015482565b34801561031757600080fd5b506102936103263660046126b2565b61088e565b34801561033757600080fd5b50610260610346366004612651565b610a81565b34801561035757600080fd5b50610293610ba9565b34801561036c57600080fd5b5061038061037b366004612651565b610cd0565b604051901515815260200161026a565b34801561039c57600080fd5b50610260609e5481565b3480156103b257600080fd5b5061026060a05481565b3480156103c857600080fd5b506102936103d7366004612651565b610d5f565b3480156103e857600080fd5b5061026060a95481565b3480156103fe57600080fd5b5061029361040d366004612699565b610e27565b34801561041e57600080fd5b50606754610432906001600160a01b031681565b60405161026a91906126f3565b34801561044b57600080fd5b50606554610432906001600160a01b031681565b34801561046b57600080fd5b5061038061047a366004612651565b610eca565b34801561048b57600080fd5b5060a3546103809060ff1681565b3480156104a557600080fd5b5060a8546103809060ff1681565b3480156104bf57600080fd5b50610380610f2c565b6102936104d6366004612774565b6111d3565b3480156104e757600080fd5b506103806104f6366004612651565b60ac6020526000908152604090205460ff1681565b34801561051757600080fd5b5061026061128c565b34801561052c57600080fd5b5061055a61053b366004612699565b60ab602052600090815260409020805460019091015460ff9091169082565b60408051921515835260208301919091520161026a565b34801561057d57600080fd5b50606654610432906001600160a01b031681565b34801561059d57600080fd5b50610260609c5481565b3480156105b357600080fd5b5060ae546103809060ff1681565b3480156105cd57600080fd5b506103806105dc366004612651565b61133a565b3480156105ed57600080fd5b5061026060a75481565b34801561060357600080fd5b5060aa54610432906001600160a01b031681565b34801561062357600080fd5b50610293610632366004612699565b611366565b34801561064357600080fd5b50610260611373565b34801561065857600080fd5b5061026060a55481565b34801561066e57600080fd5b5061038061067d366004612651565b61137e565b34801561068e57600080fd5b5061026060a25481565b3480156106a457600080fd5b5061026060a65481565b3480156106ba57600080fd5b50610260609f5481565b3480156106d057600080fd5b506102606106df366004612806565b6113a4565b3480156106f057600080fd5b506102606114f3565b34801561070557600080fd5b50610260610714366004612699565b6115d6565b34801561072557600080fd5b50610260610734366004612651565b60ad6020526000908152604090205481565b34801561075257600080fd5b50610260610761366004612699565b6115eb565b34801561077257600080fd5b5061029361078136600461267c565b611600565b34801561079257600080fd5b5061026060a15481565b3480156107a857600080fd5b5061029361161b565b3480156107bd57600080fd5b506102936107cc36600461267c565b61167a565b3480156107dd57600080fd5b506104326116c9565b3480156107f257600080fd5b5061026060a45481565b34801561080857600080fd5b50610260609d5481565b61081a611751565b60ae805460ff1916911515919091179055565b600080600062015180609d544261084491906128cd565b61084e91906128e0565b9050610859816115d6565b610862826115eb565b92509250509091565b60006201518060a6544261087f91906128cd565b61088991906128e0565b905090565b600054610100900460ff16158080156108ae5750600054600160ff909116105b806108cf57506108bd30611816565b1580156108cf575060005460ff166001145b6109375760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561095a576000805461ff0019166101001790555b600082116109aa5760405162461bcd60e51b815260206004820181905260248201527f4d617820696e61637469766520646179732063616e6e6f74206265207a65726f604482015260640161092e565b6109b384611825565b60a282905560aa80546001600160a01b0319166001600160a01b03851617905560a3805460ff19169055605a60a4556202d2a8609f556109f662015180426128e0565b610a039062015180612902565b610a0f9061a8c0612921565b609d81905560a65560a8805460ff19166001600160a01b03851615151790556103e860a9558015610a7b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b50505050565b6000609d54421015610a9557506000919050565b60a85460ff168015610acf5750610aab8261137e565b1580610acf57506001600160a01b038216600090815260ac602052604090205460ff165b15610b515760aa60009054906101000a90046001600160a01b03166001600160a01b031663830953ab6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4b9190612934565b92915050565b62015180609d5442610b6391906128cd565b610b6d91906128e0565b609c54148015610b7f57506000609e54115b15610ba157610b8d8261133a565b610b9957609e54610b4b565b600092915050565b610b4b6114f3565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c30919061294d565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa158015610c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cae919061294d565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b60ae5460009060ff16158015610ce857506000609d54115b8015610cf65750609d544210155b610d125760405162461bcd60e51b815260040161092e9061296a565b610d1b82611848565b610d545760405162461bcd60e51b815260206004820152600a6024820152690c6c2dc4ee840ccd2e6d60b31b604482015260640161092e565b610b4b82600161188c565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610da75760405162461bcd60e51b815260040161092e906129a1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610dd961193a565b6001600160a01b031614610dff5760405162461bcd60e51b815260040161092e906129db565b610e0881611956565b60408051600080825260208201909252610e249183919061195e565b50565b610e2f611751565b60008111610e895760405162461bcd60e51b815260206004820152602160248201527f6379636c65206d757374206265206174206c65617374203120646179206c6f6e6044820152606760f81b606482015260840161092e565b60a4819055600060a7556040518181527fa61e6cca2c12e2a0a493683acfe95b034f0f50d793434f4dfe3ba06ea201f344906020015b60405180910390a150565b6001600160a01b0381166000908152609b6020526040812054610eec8361137e565b15610f2357600062015180610f0183426128cd565b610f0b91906128e0565b905060a254811015610f21575060019392505050565b505b50600092915050565b60ae5460009060ff16158015610f4457506000609d54115b8015610f525750609d544210155b610f6e5760405162461bcd60e51b815260040161092e9061296a565b60675460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015610fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff4919061294d565b6001600160a01b0316632d0e9b46336040518263ffffffff1660e01b815260040161101f91906126f3565b602060405180830381865afa15801561103c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611060919061294d565b90506001600160a01b0381166110b55760405162461bcd60e51b815260206004820152601a60248201527915509254d8da195b594e881b9bdd081dda1a5d195b1a5cdd195960321b604482015260640161092e565b60006110c18233611ace565b60675460405163bf40fac160e01b815260206004820152600d60248201526c4744414f5f434c41494d45525360981b60448201529192506000916001600160a01b039091169063bf40fac190606401602060405180830381865afa15801561112d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611151919061294d565b905081801561116857506001600160a01b03811615155b156111cc5760405163748abee960e11b81526001600160a01b0382169063e9157dd2906111999086906004016126f3565b600060405180830381600087803b1580156111b357600080fd5b505af11580156111c7573d6000803e3d6000fd5b505050505b5091505090565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361121b5760405162461bcd60e51b815260040161092e906129a1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661124d61193a565b6001600160a01b0316146112735760405162461bcd60e51b815260040161092e906129db565b61127c82611956565b6112888282600161195e565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113275760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b606482015260840161092e565b50600080516020612bfa83398151915290565b609c546000908152609a602090815260408083206001600160a01b039094168352929052205460ff1690565b61136e611751565b60a055565b600061088933610a81565b6001600160a01b0381166000908152609b602052604081205415610b9957506001919050565b60ae5460009060ff161580156113bc57506000609d54115b80156113ca5750609d544210155b6113e65760405162461bcd60e51b815260040161092e9061296a565b6000805b83518210156114a557609f545a106114a55761141e84838151811061141157611411612a15565b6020026020010151611848565b156114955761144784838151811061143857611438612a15565b6020026020010151600061188c565b6114855760405162461bcd60e51b815260206004820152600f60248201526e199a5cda081a185cc819985a5b1959608a1b604482015260640161092e565b609e546114929082612921565b90505b61149e82612a2b565b91506113ea565b80156114b9576114b9333383600080611c19565b6040518281527f72b174db45b7e58932cb0c6bf37a7158f40424a078b07677d823cafdb3db540f9060200160405180910390a15092915050565b6000806114fe6116c9565b6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161152991906126f3565b602060405180830381865afa158015611546573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156a9190612934565b9050600060a55460a4548361157f91906128e0565b119050600060a5549050600060a75461159661086b565b1015806115a05750825b156115b55760a4546115b290856128e0565b91505b6115c360a05460a954611eb2565b6115cd90836128e0565b95945050505050565b6000908152609a602052604090206001015490565b6000908152609a602052604090206002015490565b611608611751565b60a8805460ff1916911515919091179055565b600062015180609d544261162f91906128cd565b61163991906128e0565b9050609c54811115610e2457609c8190556040518181527f67eb03bd555181f9dd23f546e4331ddfb8b4a7d0c8d261ba44e037f30ce894ea90602001610ebf565b611682611751565b60a3805460ff191682151590811790915560405160ff909116151581527f6cd9a0fd2e006be39a9918bf56c85cae1d4f4599474483ff18cb93355ebaaf8e90602001610ebf565b60675460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa15801561172d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610889919061294d565b60655460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de69160048083019260209291908290030181865afa15801561179a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117be919061294d565b6001600160a01b0316146118145760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f64604482015260640161092e565b565b6001600160a01b03163b151590565b606780546001600160a01b0319166001600160a01b038316179055610e24610ba9565b60006118538261137e565b8015611865575061186382610eca565b155b8015610b4b5750506001600160a01b0316600090815260ac602052604090205460ff161590565b6001600160a01b038216600090815260ac60205260408120805460ff19166001179055806118b8611ecb565b60a054909150156118dc57600160a060008282546118d691906128cd565b90915550505b82156118f0576118f0333383600080611c19565b6040518181526001600160a01b0385169033907f3c91d315d82534112f8ce552cb79133a14191077a2d715fd65cabd026fc27c749060200160405180910390a35060019392505050565b600080516020612bfa833981519152546001600160a01b031690565b610e24611751565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611996576119918361215d565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156119f0575060408051601f3d908101601f191682019092526119ed91810190612934565b60015b611a535760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161092e565b600080516020612bfa8339815191528114611ac25760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161092e565b506119918383836121f7565b600080611ad9611ecb565b9050611ae48461137e565b8015611b0957506001600160a01b038416600090815260ac602052604090205460ff16155b8015611b1b5750611b198461133a565b155b15611b3957611b2f84848360016000611c19565b6001915050610b4b565b611b428461137e565b1580611b6657506001600160a01b038416600090815260ac602052604090205460ff165b15611c0f57600160a06000828254611b7e9190612921565b90915550506001600160a01b038416600090815260ac60205260409020805460ff1916905560a85460ff1615611bc257611bbd84846000806001611c19565b611bd1565b611bd184848360016000611c19565b6040516001600160a01b038516907f2f9cfaa2a5c422dfab45f7d0da071f030fc2d3a7a1f0a255c028eff9b6d3d93690600090a26001915050610b4b565b5060009392505050565b8180611c225750805b15611cb0576001609a6000609c5481526020019081526020016000206001016000828254611c509190612921565b9091555050609c546000908152609a602090815260408083206001600160a01b03891684528252808320805460ff19166001908117909155609b835281842042905560ad9092528220805491929091611caa908490612921565b90915550505b8015611d8b5760aa54604051636bf2228d60e11b81526000916001600160a01b03169063d7e4451a90611ce79088906004016126f3565b6020604051808303816000875af1158015611d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2a9190612934565b905080609a6000609c5481526020019081526020016000206002016000828254611d549190612921565b90915550506040518181526001600160a01b03871690600080516020612bda8339815191529060200160405180910390a250611eab565b8115611de757609c546000908152609a602052604081206002018054859290611db5908490612921565b90915550506040518381526001600160a01b03861690600080516020612bda8339815191529060200160405180910390a25b6000611df16116c9565b60405163a9059cbb60e01b81529091506001600160a01b0382169063a9059cbb90611e229088908890600401612a44565b6020604051808303816000875af1158015611e41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e659190612a5d565b611ea95760405162461bcd60e51b815260206004820152601560248201527418db185a5b481d1c985b9cd9995c8819985a5b1959605a1b604482015260640161092e565b505b5050505050565b600081831015611ec25781611ec4565b825b9392505050565b6000611ed561161b565b60a154609c54141580611ee85750609e54155b15612156576000611ef76116c9565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611f2791906126f3565b602060405180830381865afa158015611f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f689190612934565b9050600060a55460a45483611f7d91906128e0565b11905060a754611f8b61086b565b101580611f955750805b1561209e5760a35460ff161561201d57611fad61221c565b6040516370a0823160e01b81526001600160a01b038416906370a0823190611fd99030906004016126f3565b602060405180830381865afa158015611ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201a9190612934565b91505b60a45461202a90836128e0565b60a55560a45460a75561203f610e10426128e0565b61204b90610e10612902565b60a655609c5460a45460a554604080519384526020840186905283019190915260608201527f83e0d535b9e84324e0a25922406398d6ff5f96d0c686204ee490e16d7670566f9060800160405180910390a15b609c5460a1819055600090815260ab6020526040902060a354815460ff191660ff90911615151781556001810183905560a05460a9546120de9190611eb2565b60a5546120eb91906128e0565b609e5560a05461210990612101906002906128e0565b60a954611eb2565b60a955609c54609e546040805192835260208301919091524382820152517f836fa39995340265746dfe9587d9fe5c5de35b7bce778afd9b124ce1cfeafdc49181900360600190a1505050505b50609e5490565b61216681611816565b6121c85760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161092e565b600080516020612bfa83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612200836124da565b60008251118061220d5750805b1561199157610a7b838361251a565b60006122266116c9565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161225691906126f3565b602060405180830381865afa158015612273573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122979190612934565b6066546040516370a0823160e01b81529192506000916001600160a01b03858116926370a08231926122cf92909116906004016126f3565b602060405180830381865afa1580156122ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123109190612934565b6065546040519192506001600160a01b03169063d1b7089a90859061233b9030908690602401612a44565b60408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052606654905160e085901b6001600160e01b03191681526123969392916001600160a01b031690600090600401612aca565b6000604051808303816000875af11580156123b5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123dd9190810190612afe565b50600090506123ec8284612921565b6040516370a0823160e01b81529091506001600160a01b038516906370a082319061241b9030906004016126f3565b602060405180830381865afa158015612438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245c9190612934565b81146124a45760405162461bcd60e51b8152602060048201526017602482015276111053c81d1c985b9cd9995c881a185cc819985a5b1959604a1b604482015260640161092e565b60408051848152602081018390527f3107ec7eaa50b775d2486c7a394472235804b6fe1c0d4b7bd1d79b09df60f2ba9101610a72565b6124e38161215d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061252583611816565b6125805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161092e565b600080846001600160a01b03168460405161259b9190612b8a565b600060405180830381855af49150503d80600081146125d6576040519150601f19603f3d011682016040523d82523d6000602084013e6125db565b606091505b50915091506115cd8282604051806060016040528060278152602001612c1a602791396060831561260d575081611ec4565b611ec483838151156126225781518083602001fd5b8060405162461bcd60e51b815260040161092e9190612ba6565b6001600160a01b0381168114610e2457600080fd5b60006020828403121561266357600080fd5b8135611ec48161263c565b8015158114610e2457600080fd5b60006020828403121561268e57600080fd5b8135611ec48161266e565b6000602082840312156126ab57600080fd5b5035919050565b6000806000606084860312156126c757600080fd5b83356126d28161263c565b925060208401356126e28161263c565b929592945050506040919091013590565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561274557612745612707565b604052919050565b60006001600160401b0382111561276657612766612707565b50601f01601f191660200190565b6000806040838503121561278757600080fd5b82356127928161263c565b915060208301356001600160401b038111156127ad57600080fd5b8301601f810185136127be57600080fd5b80356127d16127cc8261274d565b61271d565b8181528660208385010111156127e657600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000602080838503121561281957600080fd5b82356001600160401b038082111561283057600080fd5b818501915085601f83011261284457600080fd5b81358181111561285657612856612707565b8060051b915061286784830161271d565b818152918301840191848101908884111561288157600080fd5b938501935b838510156128ab578435925061289b8361263c565b8282529385019390850190612886565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b4b57610b4b6128b7565b6000826128fd57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561291c5761291c6128b7565b500290565b80820180821115610b4b57610b4b6128b7565b60006020828403121561294657600080fd5b5051919050565b60006020828403121561295f57600080fd5b8151611ec48161263c565b6020808252601e908201527f6e6f7420696e20706572696f6453746172746564206f72207061757365640000604082015260600190565b6020808252602c90820152600080516020612bba83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020612bba83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060018201612a3d57612a3d6128b7565b5060010190565b6001600160a01b03929092168252602082015260400190565b600060208284031215612a6f57600080fd5b8151611ec48161266e565b60005b83811015612a95578181015183820152602001612a7d565b50506000910152565b60008151808452612ab6816020860160208601612a7a565b601f01601f19169290920160200192915050565b600060018060a01b03808716835260806020840152612aec6080840187612a9e565b94166040830152506060015292915050565b60008060408385031215612b1157600080fd5b8251612b1c8161266e565b60208401519092506001600160401b03811115612b3857600080fd5b8301601f81018513612b4957600080fd5b8051612b576127cc8261274d565b818152866020838501011115612b6c57600080fd5b612b7d826020830160208601612a7a565b8093505050509250929050565b60008251612b9c818460208701612a7a565b9190910192915050565b602081526000611ec46020830184612a9e56fe46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682089ed24731df6b066e4c5186901fffdba18cd9a10f07494aff900bdee260d1304360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122094ab3ca5cab74bba9fe3636b3686cf16e3cab1565937d93ec4ff1e2bd8a9a99364736f6c63430008100033";
988
+ "0x60a06040523060805234801561001457600080fd5b50608051612c7661004c60003960008181610d6901528181610da9015281816111dd0152818161121d01526112990152612c766000f3fe60806040526004361061022e5760003560e01c8063013eba921461023357806302329a2914610273578063069786ea146102955780630ce82d67146102bf5780631248b101146102d45780631794bb3c1461030b5780631a787f2e1461032b5780631b3c90a81461034b5780631bbc644c146103605780631d8f5ea91461039057806322b45727146103a65780633659cfe6146103bc57806337658574146103dc5780633d84ceca146103f25780633e6326fc146104125780634162169f1461043f5780634202d2141461045f578063456ac1c21461047f5780634b4c7180146104995780634e71d92d146104b35780634f1ef286146104c85780635231e2f0146104db57806352d1902d1461050b578063560796d1146105205780635aef7de6146105715780635c9302c9146105915780635c975abb146105a757806373b2e80e146105c1578063741470ac146105e15780638081cbbd146105f75780638fd247d21461061757806398d6621b146106375780639dc2c0331461064c578063a21f698a14610662578063b656223d14610682578063ba07541014610698578063c033abf2146106ae578063c1337508146106c4578063c7713870146106e4578063c7a76adf146106f9578063cc054dfc14610719578063cef6360014610746578063d6a9f61814610766578063d7c4cbb814610786578063dddc36161461079c578063de1de3a0146107b1578063e1758bd8146107d1578063eac471a0146107e6578063eda4e6d6146107fc575b600080fd5b34801561023f57600080fd5b5061026061024e366004612651565b609b6020526000908152604090205481565b6040519081526020015b60405180910390f35b34801561027f57600080fd5b5061029361028e36600461267c565b610812565b005b3480156102a157600080fd5b506102aa61082d565b6040805192835260208301919091520161026a565b3480156102cb57600080fd5b5061026061086b565b3480156102e057600080fd5b506102aa6102ef366004612699565b609a602052600090815260409020600181015460029091015482565b34801561031757600080fd5b506102936103263660046126b2565b61088e565b34801561033757600080fd5b50610260610346366004612651565b610a81565b34801561035757600080fd5b50610293610ba9565b34801561036c57600080fd5b5061038061037b366004612651565b610cd0565b604051901515815260200161026a565b34801561039c57600080fd5b50610260609e5481565b3480156103b257600080fd5b5061026060a05481565b3480156103c857600080fd5b506102936103d7366004612651565b610d5f565b3480156103e857600080fd5b5061026060a95481565b3480156103fe57600080fd5b5061029361040d366004612699565b610e27565b34801561041e57600080fd5b50606754610432906001600160a01b031681565b60405161026a91906126f3565b34801561044b57600080fd5b50606554610432906001600160a01b031681565b34801561046b57600080fd5b5061038061047a366004612651565b610eca565b34801561048b57600080fd5b5060a3546103809060ff1681565b3480156104a557600080fd5b5060a8546103809060ff1681565b3480156104bf57600080fd5b50610380610f2c565b6102936104d6366004612774565b6111d3565b3480156104e757600080fd5b506103806104f6366004612651565b60ac6020526000908152604090205460ff1681565b34801561051757600080fd5b5061026061128c565b34801561052c57600080fd5b5061055a61053b366004612699565b60ab602052600090815260409020805460019091015460ff9091169082565b60408051921515835260208301919091520161026a565b34801561057d57600080fd5b50606654610432906001600160a01b031681565b34801561059d57600080fd5b50610260609c5481565b3480156105b357600080fd5b5060ae546103809060ff1681565b3480156105cd57600080fd5b506103806105dc366004612651565b61133a565b3480156105ed57600080fd5b5061026060a75481565b34801561060357600080fd5b5060aa54610432906001600160a01b031681565b34801561062357600080fd5b50610293610632366004612699565b611366565b34801561064357600080fd5b50610260611373565b34801561065857600080fd5b5061026060a55481565b34801561066e57600080fd5b5061038061067d366004612651565b61137e565b34801561068e57600080fd5b5061026060a25481565b3480156106a457600080fd5b5061026060a65481565b3480156106ba57600080fd5b50610260609f5481565b3480156106d057600080fd5b506102606106df366004612806565b6113a4565b3480156106f057600080fd5b506102606114f3565b34801561070557600080fd5b50610260610714366004612699565b6115d6565b34801561072557600080fd5b50610260610734366004612651565b60ad6020526000908152604090205481565b34801561075257600080fd5b50610260610761366004612699565b6115eb565b34801561077257600080fd5b5061029361078136600461267c565b611600565b34801561079257600080fd5b5061026060a15481565b3480156107a857600080fd5b5061029361161b565b3480156107bd57600080fd5b506102936107cc36600461267c565b61167a565b3480156107dd57600080fd5b506104326116c9565b3480156107f257600080fd5b5061026060a45481565b34801561080857600080fd5b50610260609d5481565b61081a611751565b60ae805460ff1916911515919091179055565b600080600062015180609d544261084491906128cd565b61084e91906128e0565b9050610859816115d6565b610862826115eb565b92509250509091565b60006201518060a6544261087f91906128cd565b61088991906128e0565b905090565b600054610100900460ff16158080156108ae5750600054600160ff909116105b806108cf57506108bd30611816565b1580156108cf575060005460ff166001145b6109375760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561095a576000805461ff0019166101001790555b600082116109aa5760405162461bcd60e51b815260206004820181905260248201527f4d617820696e61637469766520646179732063616e6e6f74206265207a65726f604482015260640161092e565b6109b384611825565b60a282905560aa80546001600160a01b0319166001600160a01b03851617905560a3805460ff19169055601e60a4556202d2a8609f556109f662015180426128e0565b610a039062015180612902565b610a0f9061a8c0612921565b609d81905560a65560a8805460ff19166001600160a01b03851615151790556103e860a9558015610a7b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a15b50505050565b6000609d54421015610a9557506000919050565b60a85460ff168015610acf5750610aab8261137e565b1580610acf57506001600160a01b038216600090815260ac602052604090205460ff165b15610b515760aa60009054906101000a90046001600160a01b03166001600160a01b031663830953ab6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4b9190612934565b92915050565b62015180609d5442610b6391906128cd565b610b6d91906128e0565b609c54148015610b7f57506000609e54115b15610ba157610b8d8261133a565b610b9957609e54610b4b565b600092915050565b610b4b6114f3565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa158015610c0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c30919061294d565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa158015610c8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cae919061294d565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b60ae5460009060ff16158015610ce857506000609d54115b8015610cf65750609d544210155b610d125760405162461bcd60e51b815260040161092e9061296a565b610d1b82611848565b610d545760405162461bcd60e51b815260206004820152600a6024820152690c6c2dc4ee840ccd2e6d60b31b604482015260640161092e565b610b4b82600161188c565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610da75760405162461bcd60e51b815260040161092e906129a1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610dd961193a565b6001600160a01b031614610dff5760405162461bcd60e51b815260040161092e906129db565b610e0881611956565b60408051600080825260208201909252610e249183919061195e565b50565b610e2f611751565b60008111610e895760405162461bcd60e51b815260206004820152602160248201527f6379636c65206d757374206265206174206c65617374203120646179206c6f6e6044820152606760f81b606482015260840161092e565b60a4819055600060a7556040518181527fa61e6cca2c12e2a0a493683acfe95b034f0f50d793434f4dfe3ba06ea201f344906020015b60405180910390a150565b6001600160a01b0381166000908152609b6020526040812054610eec8361137e565b15610f2357600062015180610f0183426128cd565b610f0b91906128e0565b905060a254811015610f21575060019392505050565b505b50600092915050565b60ae5460009060ff16158015610f4457506000609d54115b8015610f525750609d544210155b610f6e5760405162461bcd60e51b815260040161092e9061296a565b60675460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa158015610fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff4919061294d565b6001600160a01b0316632d0e9b46336040518263ffffffff1660e01b815260040161101f91906126f3565b602060405180830381865afa15801561103c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611060919061294d565b90506001600160a01b0381166110b55760405162461bcd60e51b815260206004820152601a60248201527915509254d8da195b594e881b9bdd081dda1a5d195b1a5cdd195960321b604482015260640161092e565b60006110c18233611ace565b60675460405163bf40fac160e01b815260206004820152600d60248201526c4744414f5f434c41494d45525360981b60448201529192506000916001600160a01b039091169063bf40fac190606401602060405180830381865afa15801561112d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611151919061294d565b905081801561116857506001600160a01b03811615155b156111cc5760405163748abee960e11b81526001600160a01b0382169063e9157dd2906111999086906004016126f3565b600060405180830381600087803b1580156111b357600080fd5b505af11580156111c7573d6000803e3d6000fd5b505050505b5091505090565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361121b5760405162461bcd60e51b815260040161092e906129a1565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661124d61193a565b6001600160a01b0316146112735760405162461bcd60e51b815260040161092e906129db565b61127c82611956565b6112888282600161195e565b5050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113275760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b606482015260840161092e565b50600080516020612bfa83398151915290565b609c546000908152609a602090815260408083206001600160a01b039094168352929052205460ff1690565b61136e611751565b60a055565b600061088933610a81565b6001600160a01b0381166000908152609b602052604081205415610b9957506001919050565b60ae5460009060ff161580156113bc57506000609d54115b80156113ca5750609d544210155b6113e65760405162461bcd60e51b815260040161092e9061296a565b6000805b83518210156114a557609f545a106114a55761141e84838151811061141157611411612a15565b6020026020010151611848565b156114955761144784838151811061143857611438612a15565b6020026020010151600061188c565b6114855760405162461bcd60e51b815260206004820152600f60248201526e199a5cda081a185cc819985a5b1959608a1b604482015260640161092e565b609e546114929082612921565b90505b61149e82612a2b565b91506113ea565b80156114b9576114b9333383600080611c19565b6040518281527f72b174db45b7e58932cb0c6bf37a7158f40424a078b07677d823cafdb3db540f9060200160405180910390a15092915050565b6000806114fe6116c9565b6001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161152991906126f3565b602060405180830381865afa158015611546573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061156a9190612934565b9050600060a55460a4548361157f91906128e0565b119050600060a5549050600060a75461159661086b565b1015806115a05750825b156115b55760a4546115b290856128e0565b91505b6115c360a05460a954611eb2565b6115cd90836128e0565b95945050505050565b6000908152609a602052604090206001015490565b6000908152609a602052604090206002015490565b611608611751565b60a8805460ff1916911515919091179055565b600062015180609d544261162f91906128cd565b61163991906128e0565b9050609c54811115610e2457609c8190556040518181527f67eb03bd555181f9dd23f546e4331ddfb8b4a7d0c8d261ba44e037f30ce894ea90602001610ebf565b611682611751565b60a3805460ff191682151590811790915560405160ff909116151581527f6cd9a0fd2e006be39a9918bf56c85cae1d4f4599474483ff18cb93355ebaaf8e90602001610ebf565b60675460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa15801561172d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610889919061294d565b60655460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de69160048083019260209291908290030181865afa15801561179a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117be919061294d565b6001600160a01b0316146118145760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f64604482015260640161092e565b565b6001600160a01b03163b151590565b606780546001600160a01b0319166001600160a01b038316179055610e24610ba9565b60006118538261137e565b8015611865575061186382610eca565b155b8015610b4b5750506001600160a01b0316600090815260ac602052604090205460ff161590565b6001600160a01b038216600090815260ac60205260408120805460ff19166001179055806118b8611ecb565b60a054909150156118dc57600160a060008282546118d691906128cd565b90915550505b82156118f0576118f0333383600080611c19565b6040518181526001600160a01b0385169033907f3c91d315d82534112f8ce552cb79133a14191077a2d715fd65cabd026fc27c749060200160405180910390a35060019392505050565b600080516020612bfa833981519152546001600160a01b031690565b610e24611751565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611996576119918361215d565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156119f0575060408051601f3d908101601f191682019092526119ed91810190612934565b60015b611a535760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161092e565b600080516020612bfa8339815191528114611ac25760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161092e565b506119918383836121f7565b600080611ad9611ecb565b9050611ae48461137e565b8015611b0957506001600160a01b038416600090815260ac602052604090205460ff16155b8015611b1b5750611b198461133a565b155b15611b3957611b2f84848360016000611c19565b6001915050610b4b565b611b428461137e565b1580611b6657506001600160a01b038416600090815260ac602052604090205460ff165b15611c0f57600160a06000828254611b7e9190612921565b90915550506001600160a01b038416600090815260ac60205260409020805460ff1916905560a85460ff1615611bc257611bbd84846000806001611c19565b611bd1565b611bd184848360016000611c19565b6040516001600160a01b038516907f2f9cfaa2a5c422dfab45f7d0da071f030fc2d3a7a1f0a255c028eff9b6d3d93690600090a26001915050610b4b565b5060009392505050565b8180611c225750805b15611cb0576001609a6000609c5481526020019081526020016000206001016000828254611c509190612921565b9091555050609c546000908152609a602090815260408083206001600160a01b03891684528252808320805460ff19166001908117909155609b835281842042905560ad9092528220805491929091611caa908490612921565b90915550505b8015611d8b5760aa54604051636bf2228d60e11b81526000916001600160a01b03169063d7e4451a90611ce79088906004016126f3565b6020604051808303816000875af1158015611d06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2a9190612934565b905080609a6000609c5481526020019081526020016000206002016000828254611d549190612921565b90915550506040518181526001600160a01b03871690600080516020612bda8339815191529060200160405180910390a250611eab565b8115611de757609c546000908152609a602052604081206002018054859290611db5908490612921565b90915550506040518381526001600160a01b03861690600080516020612bda8339815191529060200160405180910390a25b6000611df16116c9565b60405163a9059cbb60e01b81529091506001600160a01b0382169063a9059cbb90611e229088908890600401612a44565b6020604051808303816000875af1158015611e41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e659190612a5d565b611ea95760405162461bcd60e51b815260206004820152601560248201527418db185a5b481d1c985b9cd9995c8819985a5b1959605a1b604482015260640161092e565b505b5050505050565b600081831015611ec25781611ec4565b825b9392505050565b6000611ed561161b565b60a154609c54141580611ee85750609e54155b15612156576000611ef76116c9565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611f2791906126f3565b602060405180830381865afa158015611f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f689190612934565b9050600060a55460a45483611f7d91906128e0565b11905060a754611f8b61086b565b101580611f955750805b1561209e5760a35460ff161561201d57611fad61221c565b6040516370a0823160e01b81526001600160a01b038416906370a0823190611fd99030906004016126f3565b602060405180830381865afa158015611ff6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061201a9190612934565b91505b60a45461202a90836128e0565b60a55560a45460a75561203f610e10426128e0565b61204b90610e10612902565b60a655609c5460a45460a554604080519384526020840186905283019190915260608201527f83e0d535b9e84324e0a25922406398d6ff5f96d0c686204ee490e16d7670566f9060800160405180910390a15b609c5460a1819055600090815260ab6020526040902060a354815460ff191660ff90911615151781556001810183905560a05460a9546120de9190611eb2565b60a5546120eb91906128e0565b609e5560a05461210990612101906002906128e0565b60a954611eb2565b60a955609c54609e546040805192835260208301919091524382820152517f836fa39995340265746dfe9587d9fe5c5de35b7bce778afd9b124ce1cfeafdc49181900360600190a1505050505b50609e5490565b61216681611816565b6121c85760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161092e565b600080516020612bfa83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612200836124da565b60008251118061220d5750805b1561199157610a7b838361251a565b60006122266116c9565b90506000816001600160a01b03166370a08231306040518263ffffffff1660e01b815260040161225691906126f3565b602060405180830381865afa158015612273573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122979190612934565b6066546040516370a0823160e01b81529192506000916001600160a01b03858116926370a08231926122cf92909116906004016126f3565b602060405180830381865afa1580156122ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123109190612934565b6065546040519192506001600160a01b03169063d1b7089a90859061233b9030908690602401612a44565b60408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b179052606654905160e085901b6001600160e01b03191681526123969392916001600160a01b031690600090600401612aca565b6000604051808303816000875af11580156123b5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526123dd9190810190612afe565b50600090506123ec8284612921565b6040516370a0823160e01b81529091506001600160a01b038516906370a082319061241b9030906004016126f3565b602060405180830381865afa158015612438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061245c9190612934565b81146124a45760405162461bcd60e51b8152602060048201526017602482015276111053c81d1c985b9cd9995c881a185cc819985a5b1959604a1b604482015260640161092e565b60408051848152602081018390527f3107ec7eaa50b775d2486c7a394472235804b6fe1c0d4b7bd1d79b09df60f2ba9101610a72565b6124e38161215d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061252583611816565b6125805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161092e565b600080846001600160a01b03168460405161259b9190612b8a565b600060405180830381855af49150503d80600081146125d6576040519150601f19603f3d011682016040523d82523d6000602084013e6125db565b606091505b50915091506115cd8282604051806060016040528060278152602001612c1a602791396060831561260d575081611ec4565b611ec483838151156126225781518083602001fd5b8060405162461bcd60e51b815260040161092e9190612ba6565b6001600160a01b0381168114610e2457600080fd5b60006020828403121561266357600080fd5b8135611ec48161263c565b8015158114610e2457600080fd5b60006020828403121561268e57600080fd5b8135611ec48161266e565b6000602082840312156126ab57600080fd5b5035919050565b6000806000606084860312156126c757600080fd5b83356126d28161263c565b925060208401356126e28161263c565b929592945050506040919091013590565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561274557612745612707565b604052919050565b60006001600160401b0382111561276657612766612707565b50601f01601f191660200190565b6000806040838503121561278757600080fd5b82356127928161263c565b915060208301356001600160401b038111156127ad57600080fd5b8301601f810185136127be57600080fd5b80356127d16127cc8261274d565b61271d565b8181528660208385010111156127e657600080fd5b816020840160208301376000602083830101528093505050509250929050565b6000602080838503121561281957600080fd5b82356001600160401b038082111561283057600080fd5b818501915085601f83011261284457600080fd5b81358181111561285657612856612707565b8060051b915061286784830161271d565b818152918301840191848101908884111561288157600080fd5b938501935b838510156128ab578435925061289b8361263c565b8282529385019390850190612886565b98975050505050505050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b4b57610b4b6128b7565b6000826128fd57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561291c5761291c6128b7565b500290565b80820180821115610b4b57610b4b6128b7565b60006020828403121561294657600080fd5b5051919050565b60006020828403121561295f57600080fd5b8151611ec48161263c565b6020808252601e908201527f6e6f7420696e20706572696f6453746172746564206f72207061757365640000604082015260600190565b6020808252602c90820152600080516020612bba83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020612bba83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060018201612a3d57612a3d6128b7565b5060010190565b6001600160a01b03929092168252602082015260400190565b600060208284031215612a6f57600080fd5b8151611ec48161266e565b60005b83811015612a95578181015183820152602001612a7d565b50506000910152565b60008151808452612ab6816020860160208601612a7a565b601f01601f19169290920160200192915050565b600060018060a01b03808716835260806020840152612aec6080840187612a9e565b94166040830152506060015292915050565b60008060408385031215612b1157600080fd5b8251612b1c8161266e565b60208401519092506001600160401b03811115612b3857600080fd5b8301601f81018513612b4957600080fd5b8051612b576127cc8261274d565b818152866020838501011115612b6c57600080fd5b612b7d826020830160208601612a7a565b8093505050509250929050565b60008251612b9c818460208701612a7a565b9190910192915050565b602081526000611ec46020830184612a9e56fe46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682089ed24731df6b066e4c5186901fffdba18cd9a10f07494aff900bdee260d1304360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122060e348113a715c388299f6553a21dc518e0e7f813baf2528bd4222eb0243167864736f6c63430008100033";
989
989
 
990
990
  type UBISchemeConstructorParams =
991
991
  | [signer?: Signer]
@@ -1,120 +0,0 @@
1
- /***
2
- * This script will deploy a fixed goodfundmanager that doenst disable staking contracts if rewards=0
3
- * It will also then re submit the staking contracts
4
- */
5
-
6
- import { network, ethers } from "hardhat";
7
-
8
- import {
9
- executeViaGuardian,
10
- executeViaSafe
11
- } from "../multichain-deploy/helpers";
12
-
13
- import releaser from "../releaser";
14
- import dao from "../../releases/deployment.json";
15
- const { name: networkName } = network;
16
-
17
- export const deployMainnet = async () => {
18
- let [root, ...signers] = await ethers.getSigners();
19
-
20
- let executionMethod = networkName === "localhost" ? "guardians" : "safe";
21
-
22
- const networkKey =
23
- networkName === "localhost" ? "production-mainnet" : networkName;
24
- let release: { [key: string]: any } = dao[networkKey];
25
-
26
- let safeOwner = new ethers.Wallet(
27
- process.env.SAFEOWNER_PRIVATE_KEY || ethers.constants.HashZero,
28
- ethers.provider
29
- );
30
-
31
- //test with guardians safe on hardhat mainnet fork
32
- if (network.name === "localhost") {
33
- root = await ethers.getImpersonatedSigner(
34
- "0xE0c5daa7CC6F88d29505f702a53bb5E67600e7Ec"
35
- );
36
- await signers[0].sendTransaction({
37
- to: root.address,
38
- value: ethers.constants.WeiPerEther
39
- });
40
- }
41
-
42
- console.log("got signers:", {
43
- networkName,
44
- networkKey,
45
- root: root.address,
46
- safeOwner: safeOwner.address,
47
- balance: await ethers.provider
48
- .getBalance(root.address)
49
- .then(_ => _.toString())
50
- });
51
-
52
- console.log("deploying goodfundmanager implementation");
53
- const gfmImpl = await (
54
- await ethers.getContractFactory("GoodFundManager")
55
- ).deploy();
56
-
57
- const proposalContracts = [
58
- release.GoodFundManager, //Fundmanager -> upgrade to new version
59
- release.GoodFundManager, //Fundmanager -> set staking rewards compound to 0
60
- release.GoodFundManager //Fundmanager -> set staking rewards aave to 0
61
- ];
62
-
63
- const proposalEthValues = proposalContracts.map(_ => 0);
64
-
65
- const proposalFunctionSignatures = [
66
- "upgradeTo(address)",
67
- "setStakingReward(uint32,address,uint32,uint32,bool)",
68
- "setStakingReward(uint32,address,uint32,uint32,bool)"
69
- ];
70
-
71
- const proposalFunctionInputs = [
72
- ethers.utils.defaultAbiCoder.encode(["address"], [gfmImpl.address]), //upgradeTo(address)
73
- ethers.utils.defaultAbiCoder.encode(
74
- ["uint32", "address", "uint32", "uint32", "bool"],
75
- [
76
- "0",
77
- "0x7b7246c78e2f900d17646ff0cb2ec47d6ba10754",
78
- "14338692",
79
- "4294967295",
80
- false
81
- ]
82
- ), //setstakingrewards to 0
83
- ethers.utils.defaultAbiCoder.encode(
84
- ["uint32", "address", "uint32", "uint32", "bool"],
85
- [
86
- "0",
87
- "0x3ff2d8eb2573819a9ef7167d2ba6fd6d31b17f4f",
88
- "14338692",
89
- "4294967295",
90
- false
91
- ]
92
- ) //setstakingrewards to 0
93
- ];
94
-
95
- if (executionMethod === "safe") {
96
- return executeViaSafe(
97
- proposalContracts,
98
- proposalEthValues,
99
- proposalFunctionSignatures,
100
- proposalFunctionInputs,
101
- networkName === "localhost"
102
- ? "0xE0c5daa7CC6F88d29505f702a53bb5E67600e7Ec"
103
- : release.GuardiansSafe,
104
- safeOwner
105
- );
106
- } else {
107
- return executeViaGuardian(
108
- proposalContracts,
109
- proposalEthValues,
110
- proposalFunctionSignatures,
111
- proposalFunctionInputs,
112
- root
113
- );
114
- }
115
- };
116
-
117
- export const main = async () => {
118
- await deployMainnet().catch(console.log);
119
- };
120
- if (process.argv[1].includes("v3-fix")) main();