@gooddollar/goodprotocol 2.0.25-beta.1 → 2.0.25-beta.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 (182) hide show
  1. package/artifacts/abis/FuseStakingV3.min.json +1 -1
  2. package/artifacts/abis/InvitesV2.min.json +1 -1
  3. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  4. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  5. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  6. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  7. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  8. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  9. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  10. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  11. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  12. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  13. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  14. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  15. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  16. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  17. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  18. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  19. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  20. package/artifacts/contracts/Interfaces.sol/IIdentityV2.dbg.json +1 -1
  21. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +1 -1
  23. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  24. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  27. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  28. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  31. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  32. package/artifacts/contracts/fuseFaucet/Faucet.sol/Faucet.dbg.json +1 -1
  33. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  34. package/artifacts/contracts/fuseFaucet/FuseFaucetV2.sol/FuseFaucetV2.dbg.json +1 -1
  35. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  36. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  37. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  38. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +1 -1
  39. package/artifacts/contracts/governance/GoodDollarStaking.sol/IGovernanceStaking.dbg.json +1 -1
  40. package/artifacts/contracts/governance/GoodDollarStaking.sol/IStakingUpgrade.dbg.json +1 -1
  41. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +1 -1
  42. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  43. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  44. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  45. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  46. package/artifacts/contracts/identity/IdentityV2.sol/IdentityV2.dbg.json +1 -1
  47. package/artifacts/contracts/invite/InvitesFuseV2.sol/InvitesFuseV2.dbg.json +1 -1
  48. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  49. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.dbg.json +1 -1
  50. package/artifacts/contracts/invite/InvitesV2.sol/InvitesV2.json +15 -2
  51. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  52. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
  53. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
  54. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
  55. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  56. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.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/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
  62. package/artifacts/contracts/mocks/FeesFormularMock.sol/FeesFormulaMock.dbg.json +1 -1
  63. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
  64. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  65. package/artifacts/contracts/mocks/GoodDollarStakingMock.sol/GoodDollarStakingMock.dbg.json +1 -1
  66. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  67. package/artifacts/contracts/mocks/IdentityMock.sol/IdentityMock.dbg.json +1 -1
  68. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  69. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  70. package/artifacts/contracts/mocks/MultichainRouterMock.sol/IWrapper.dbg.json +1 -1
  71. package/artifacts/contracts/mocks/MultichainRouterMock.sol/MultichainRouterMock.dbg.json +1 -1
  72. package/artifacts/contracts/mocks/OverMintTester.sol/IGoodDollarStakingTest.dbg.json +1 -1
  73. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  74. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  75. package/artifacts/contracts/mocks/PayableMock.sol/PayableMock.dbg.json +1 -1
  76. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  77. package/artifacts/contracts/mocks/StakingMockFixedAPY.sol/StakingMockFixedAPY.dbg.json +1 -1
  78. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  79. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  80. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  81. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  82. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  83. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  84. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  85. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  86. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  87. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  88. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  89. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  90. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  91. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  92. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +1 -1
  93. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  94. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  95. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  96. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  97. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  98. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  99. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  100. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  101. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +7 -2
  102. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  103. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  104. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  105. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  106. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  107. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  108. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  109. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  110. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  111. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  112. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  113. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  114. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +1 -1
  115. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +1 -1
  116. package/artifacts/contracts/token/ERC20PresetMinterPauserUpgradeable.sol/ERC20PresetMinterPauserUpgradeable.dbg.json +1 -1
  117. package/artifacts/contracts/token/ERC677.sol/ERC677.dbg.json +1 -1
  118. package/artifacts/contracts/token/ERC677.sol/ERC677Receiver.dbg.json +1 -1
  119. package/artifacts/contracts/token/GoodDollar.sol/GoodDollar.dbg.json +1 -1
  120. package/artifacts/contracts/token/IFeesFormula.sol/IFeesFormula.dbg.json +1 -1
  121. package/artifacts/contracts/token/MultichainFeeFormula.sol/MultichainFeeFormula.dbg.json +1 -1
  122. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/ERC20Permit.dbg.json +1 -1
  123. package/artifacts/contracts/token/superfluid/ERC20Permit.sol/SelfApprove.dbg.json +1 -1
  124. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/IGoodDollarCustom.dbg.json +1 -1
  125. package/artifacts/contracts/token/superfluid/ISuperGoodDollar.sol/ISuperGoodDollar.dbg.json +1 -1
  126. package/artifacts/contracts/token/superfluid/ISuperToken.sol/ISuperToken.dbg.json +1 -1
  127. package/artifacts/contracts/token/superfluid/SuperGoodDollar.sol/SuperGoodDollar.dbg.json +1 -1
  128. package/artifacts/contracts/token/superfluid/SuperToken.sol/SuperToken.dbg.json +1 -1
  129. package/artifacts/contracts/token/superfluid/SuperfluidToken.sol/SuperfluidToken.dbg.json +1 -1
  130. package/artifacts/contracts/token/superfluid/UUPSProxiable.sol/UUPSProxiable.dbg.json +1 -1
  131. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/Proxy.dbg.json +1 -1
  132. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSProxy.dbg.json +1 -1
  133. package/artifacts/contracts/token/superfluid/UUPSProxy.sol/UUPSUtils.dbg.json +1 -1
  134. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  135. package/artifacts/contracts/ubi/UBISchemeV2.sol/UBISchemeV2.dbg.json +1 -1
  136. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +1 -1
  137. package/artifacts/contracts/utils/AdminWalletFuse.sol/AdminWalletFuse.dbg.json +1 -1
  138. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  139. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  140. package/artifacts/contracts/utils/BuyAndBridgeHelper.sol/BuyAndBridgeHelper.dbg.json +1 -1
  141. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDClone.dbg.json +1 -1
  142. package/artifacts/contracts/utils/BuyGDClone.sol/BuyGDCloneFactory.dbg.json +1 -1
  143. package/artifacts/contracts/utils/BuyGDClone.sol/DonateGDClone.dbg.json +1 -1
  144. package/artifacts/contracts/utils/BuyGDClone.sol/IQuoterV2.dbg.json +1 -1
  145. package/artifacts/contracts/utils/BuyGDClone.sol/ISwapRouter.dbg.json +1 -1
  146. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  147. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  148. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  149. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  150. package/artifacts/contracts/utils/GDFaucet.sol/GDFaucet.dbg.json +1 -1
  151. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +1 -1
  152. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +1 -1
  153. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +1 -1
  154. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +1 -1
  155. package/artifacts/contracts/utils/IdentityFix.sol/IdentityFix.dbg.json +1 -1
  156. package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
  157. package/artifacts/contracts/utils/MultichainBridgeHelper.sol/MultichainBridgeHelper.dbg.json +1 -1
  158. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  159. package/artifacts/contracts/utils/OneTimePayments.sol/OneTimePayments.dbg.json +1 -1
  160. package/artifacts/contracts/utils/OneTimePaymentsV2.sol/OneTimePaymentsV2.dbg.json +1 -1
  161. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  162. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  163. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  164. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  165. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  166. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  167. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  168. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  169. package/contracts/invite/InvitesV2.sol +41 -4
  170. package/contracts/staking/FuseStakingV3.sol +4 -2
  171. package/dist/test-sdk/deploySuperGoodDollar.js +1 -1
  172. package/package.json +3 -2
  173. package/scripts/analytics/activeWalletsStats.ts +51 -38
  174. package/scripts/analytics/checkBridgeBalances.ts +442 -0
  175. package/test/invite/InvitesV2.test.ts +139 -271
  176. package/test/staking/FuseStaking.test.ts +23 -54
  177. package/types/contracts/invite/InvitesV2.ts +32 -0
  178. package/types/contracts/staking/FuseStakingV3.sol/FuseStakingV3.ts +7 -2
  179. package/types/factories/contracts/invite/InvitesV2__factory.ts +14 -1
  180. package/types/factories/contracts/staking/FuseStakingV3.sol/FuseStakingV3__factory.ts +6 -1
  181. package/contracts/utils/.DS_Store +0 -0
  182. package/yarn.lock +0 -23715
@@ -12,12 +12,7 @@ describe("FuseStakingV3", () => {
12
12
  let founder, staker1, staker2;
13
13
  let signers;
14
14
 
15
- let uniswap: waffle.MockContract,
16
- uniswapFactory,
17
- uniswapPair,
18
- gdusdcPair,
19
- fusefusdPair,
20
- ubiMock;
15
+ let uniswap: waffle.MockContract, uniswapFactory, uniswapPair, gdusdcPair, fusefusdPair, ubiMock;
21
16
 
22
17
  const deployMocks = async () => {
23
18
  let u = await hre.artifacts.readArtifact("Uniswap");
@@ -35,24 +30,14 @@ describe("FuseStakingV3", () => {
35
30
  await uniswap.mock.WETH.returns(signers[3].address);
36
31
  await uniswapFactory.mock.getPair.returns(uniswapPair.address);
37
32
  await uniswapFactory.mock.getPair
38
- .withArgs(
39
- ethers.constants.AddressZero,
40
- "0x620fd5fa44BE6af63715Ef4E65DDFA0387aD13F5"
41
- )
33
+ .withArgs(ethers.constants.AddressZero, "0x620fd5fa44BE6af63715Ef4E65DDFA0387aD13F5")
42
34
  .returns(gdusdcPair.address);
43
35
 
44
36
  await uniswapFactory.mock.getPair
45
- .withArgs(
46
- signers[3].address,
47
- "0x249BE57637D8B013Ad64785404b24aeBaE9B098B"
48
- )
37
+ .withArgs(signers[3].address, "0x249BE57637D8B013Ad64785404b24aeBaE9B098B")
49
38
  .returns(fusefusdPair.address);
50
39
 
51
- await uniswapPair.mock.getReserves.returns(
52
- ethers.utils.parseEther("1000"),
53
- "100000",
54
- "0"
55
- );
40
+ await uniswapPair.mock.getReserves.returns(ethers.utils.parseEther("1000"), "100000", "0");
56
41
  await gdusdcPair.mock.getReserves.returns("4984886100", "10789000000", "0");
57
42
  await fusefusdPair.mock.getReserves.returns(
58
43
  ethers.utils.parseEther("10000"),
@@ -67,9 +52,7 @@ describe("FuseStakingV3", () => {
67
52
  await deployMocks();
68
53
 
69
54
  let network = networkConfig.name;
70
- staking = (await (
71
- await ethers.getContractFactory("FuseStakingV3")
72
- ).deploy()) as FuseStakingV3;
55
+ staking = (await (await ethers.getContractFactory("FuseStakingV3")).deploy()) as FuseStakingV3;
73
56
 
74
57
  await staking.initialize(uniswap.address, NULL_ADDRESS);
75
58
  await staking.setUBIScheme(ubiMock.address);
@@ -80,54 +63,42 @@ describe("FuseStakingV3", () => {
80
63
  });
81
64
 
82
65
  it("should calc quantity with slippage", async () => {
83
- const res = await staking[
84
- "calcMaxTokenWithPriceImpact(uint256,uint256,uint256)"
85
- ]("6917100025787759640000", "265724494", ethers.utils.parseEther("500"));
66
+ const res = await staking["calcMaxTokenWithPriceImpact(uint256,uint256,uint256)"](
67
+ "6917100025787759640000",
68
+ "265724494",
69
+ ethers.utils.parseEther("500")
70
+ );
86
71
 
87
72
  // const fuseQuantity = ethers.utils.formatEther(res);
88
73
  expect(res.maxToken).to.gt(0);
89
- expect(res.maxToken).to.equal(
90
- BigNumber.from("6917100025787759640000").mul(3).div(100)
91
- );
92
- expect(res.tokenOut).to.equal(7717004);
74
+ expect(res.maxToken).to.equal(BigNumber.from("6917100025787759640000").mul(6).div(1000));
75
+ expect(res.tokenOut).to.equal(1580111);
93
76
  });
94
77
 
95
78
  it("should calc quantity with uniswap mock", async () => {
96
- const res = await staking["calcMaxFuseWithPriceImpact(uint256)"](
97
- ethers.utils.parseEther("500")
98
- );
79
+ const res = await staking["calcMaxFuseWithPriceImpact(uint256)"](ethers.utils.parseEther("500"));
99
80
 
100
81
  // const fuseQuantity = ethers.utils.formatEther(res);
101
82
  expect(res.fuseAmount).to.gt(0);
102
- expect(res.fuseAmount).to.equal(ethers.utils.parseEther("30"));
83
+ expect(res.fuseAmount).to.equal(ethers.utils.parseEther("6"));
103
84
 
104
- await uniswapPair.mock.getReserves.returns(
105
- ethers.utils.parseEther("100"),
106
- "500000",
107
- "0"
108
- );
109
- const res2 = await staking["calcMaxFuseWithPriceImpact(uint256)"](
110
- ethers.utils.parseEther("500")
111
- );
85
+ await uniswapPair.mock.getReserves.returns(ethers.utils.parseEther("100"), "500000", "0");
86
+ const res2 = await staking["calcMaxFuseWithPriceImpact(uint256)"](ethers.utils.parseEther("500"));
112
87
 
113
- expect(res2.fuseAmount).to.equal(ethers.utils.parseEther("3"));
88
+ expect(res2.fuseAmount).to.equal(ethers.utils.parseEther("0.6"));
114
89
  });
115
90
 
116
91
  it("should calculate gd/usdc quantity with 0 price impact ", async () => {
117
- const res = await staking["calcMaxFuseUSDCWithPriceImpact(uint256)"](
118
- ethers.utils.parseEther("10")
119
- );
92
+ const res = await staking["calcMaxFuseUSDCWithPriceImpact(uint256)"](ethers.utils.parseEther("10"));
120
93
  //exchanging 10 fuse which are equal 2$ USDC should have no significant price impact on usdc/gd swap so we should be able to swap the whole 10
121
94
  expect(res.maxFuse).to.gt(0);
122
95
  expect(res.maxFuse).to.equal(ethers.utils.parseEther("10"));
123
96
  });
124
97
 
125
98
  it("should detect gd/usdc price impact", async () => {
126
- const res = await staking["calcMaxFuseUSDCWithPriceImpact(uint256)"](
127
- ethers.utils.parseEther("10000")
128
- );
99
+ const res = await staking["calcMaxFuseUSDCWithPriceImpact(uint256)"](ethers.utils.parseEther("10000"));
129
100
  expect(res.maxFuse).to.lt(ethers.utils.parseEther("10000"));
130
- expect(res.maxFuse).to.equal(ethers.utils.parseEther("1618.35")); //on fuse swap it was around 335$ on above gd/usdc reserves that reaches 3% impact, that means 335*5=1675fuse
101
+ expect(res.maxFuse).to.equal(ethers.utils.parseEther("323.67")); //on fuse swap it was around 335$ on above gd/usdc reserves that reaches 3% impact, that means 335*5=1675fuse
131
102
  });
132
103
 
133
104
  it("should match fuseswap and allow to exchange +-4600 fuse to G$", async () => {
@@ -141,10 +112,8 @@ describe("FuseStakingV3", () => {
141
112
  "0"
142
113
  );
143
114
 
144
- const res = await staking["calcMaxFuseUSDCWithPriceImpact(uint256)"](
145
- ethers.utils.parseEther("10000")
146
- );
147
- expect(res.maxFuse).to.lt(ethers.utils.parseEther("5000"));
148
- expect(res.maxFuse).to.gt(ethers.utils.parseEther("4500"));
115
+ const res = await staking["calcMaxFuseUSDCWithPriceImpact(uint256)"](ethers.utils.parseEther("10000"));
116
+ expect(res.maxFuse).to.lt(ethers.utils.parseEther("1000"));
117
+ expect(res.maxFuse).to.gt(ethers.utils.parseEther("450"));
149
118
  });
150
119
  });
@@ -51,6 +51,7 @@ export interface InvitesV2Interface extends utils.Interface {
51
51
  "owner()": FunctionFragment;
52
52
  "proxiableUUID()": FunctionFragment;
53
53
  "setActive(bool)": FunctionFragment;
54
+ "setCampaignCode(bytes32)": FunctionFragment;
54
55
  "setLevel(uint256,uint256,uint256,uint256)": FunctionFragment;
55
56
  "setLevelExpirationEnabled(bool)": FunctionFragment;
56
57
  "stats()": FunctionFragment;
@@ -85,6 +86,7 @@ export interface InvitesV2Interface extends utils.Interface {
85
86
  | "owner"
86
87
  | "proxiableUUID"
87
88
  | "setActive"
89
+ | "setCampaignCode"
88
90
  | "setLevel"
89
91
  | "setLevelExpirationEnabled"
90
92
  | "stats"
@@ -159,6 +161,10 @@ export interface InvitesV2Interface extends utils.Interface {
159
161
  values?: undefined
160
162
  ): string;
161
163
  encodeFunctionData(functionFragment: "setActive", values: [boolean]): string;
164
+ encodeFunctionData(
165
+ functionFragment: "setCampaignCode",
166
+ values: [BytesLike]
167
+ ): string;
162
168
  encodeFunctionData(
163
169
  functionFragment: "setLevel",
164
170
  values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish]
@@ -232,6 +238,10 @@ export interface InvitesV2Interface extends utils.Interface {
232
238
  data: BytesLike
233
239
  ): Result;
234
240
  decodeFunctionResult(functionFragment: "setActive", data: BytesLike): Result;
241
+ decodeFunctionResult(
242
+ functionFragment: "setCampaignCode",
243
+ data: BytesLike
244
+ ): Result;
235
245
  decodeFunctionResult(functionFragment: "setLevel", data: BytesLike): Result;
236
246
  decodeFunctionResult(
237
247
  functionFragment: "setLevelExpirationEnabled",
@@ -438,6 +448,11 @@ export interface InvitesV2 extends BaseContract {
438
448
  overrides?: Overrides & { from?: string }
439
449
  ): Promise<ContractTransaction>;
440
450
 
451
+ setCampaignCode(
452
+ _code: BytesLike,
453
+ overrides?: Overrides & { from?: string }
454
+ ): Promise<ContractTransaction>;
455
+
441
456
  setLevel(
442
457
  _lvl: BigNumberish,
443
458
  _toNext: BigNumberish,
@@ -585,6 +600,11 @@ export interface InvitesV2 extends BaseContract {
585
600
  overrides?: Overrides & { from?: string }
586
601
  ): Promise<ContractTransaction>;
587
602
 
603
+ setCampaignCode(
604
+ _code: BytesLike,
605
+ overrides?: Overrides & { from?: string }
606
+ ): Promise<ContractTransaction>;
607
+
588
608
  setLevel(
589
609
  _lvl: BigNumberish,
590
610
  _toNext: BigNumberish,
@@ -724,6 +744,8 @@ export interface InvitesV2 extends BaseContract {
724
744
 
725
745
  setActive(_active: boolean, overrides?: CallOverrides): Promise<void>;
726
746
 
747
+ setCampaignCode(_code: BytesLike, overrides?: CallOverrides): Promise<void>;
748
+
727
749
  setLevel(
728
750
  _lvl: BigNumberish,
729
751
  _toNext: BigNumberish,
@@ -910,6 +932,11 @@ export interface InvitesV2 extends BaseContract {
910
932
  overrides?: Overrides & { from?: string }
911
933
  ): Promise<BigNumber>;
912
934
 
935
+ setCampaignCode(
936
+ _code: BytesLike,
937
+ overrides?: Overrides & { from?: string }
938
+ ): Promise<BigNumber>;
939
+
913
940
  setLevel(
914
941
  _lvl: BigNumberish,
915
942
  _toNext: BigNumberish,
@@ -1027,6 +1054,11 @@ export interface InvitesV2 extends BaseContract {
1027
1054
  overrides?: Overrides & { from?: string }
1028
1055
  ): Promise<PopulatedTransaction>;
1029
1056
 
1057
+ setCampaignCode(
1058
+ _code: BytesLike,
1059
+ overrides?: Overrides & { from?: string }
1060
+ ): Promise<PopulatedTransaction>;
1061
+
1030
1062
  setLevel(
1031
1063
  _lvl: BigNumberish,
1032
1064
  _toNext: BigNumberish,
@@ -70,7 +70,7 @@ export interface FuseStakingV3Interface extends utils.Interface {
70
70
  "uniswap()": FunctionFragment;
71
71
  "uniswapFactory()": FunctionFragment;
72
72
  "uniswapPair()": FunctionFragment;
73
- "updateSettings(uint256,uint256)": FunctionFragment;
73
+ "updateSettings(uint256,uint256,uint256)": FunctionFragment;
74
74
  "upgrade()": FunctionFragment;
75
75
  "validators(uint256)": FunctionFragment;
76
76
  "withdraw(uint256)": FunctionFragment;
@@ -245,7 +245,7 @@ export interface FuseStakingV3Interface extends utils.Interface {
245
245
  ): string;
246
246
  encodeFunctionData(
247
247
  functionFragment: "updateSettings",
248
- values: [BigNumberish, BigNumberish]
248
+ values: [BigNumberish, BigNumberish, BigNumberish]
249
249
  ): string;
250
250
  encodeFunctionData(functionFragment: "upgrade", values?: undefined): string;
251
251
  encodeFunctionData(
@@ -608,6 +608,7 @@ export interface FuseStakingV3 extends BaseContract {
608
608
  updateSettings(
609
609
  _stakeBackRatio: BigNumberish,
610
610
  _communityPoolRatio: BigNumberish,
611
+ _maxSlippageRatio: BigNumberish,
611
612
  overrides?: Overrides & { from?: string }
612
613
  ): Promise<ContractTransaction>;
613
614
 
@@ -767,6 +768,7 @@ export interface FuseStakingV3 extends BaseContract {
767
768
  updateSettings(
768
769
  _stakeBackRatio: BigNumberish,
769
770
  _communityPoolRatio: BigNumberish,
771
+ _maxSlippageRatio: BigNumberish,
770
772
  overrides?: Overrides & { from?: string }
771
773
  ): Promise<ContractTransaction>;
772
774
 
@@ -905,6 +907,7 @@ export interface FuseStakingV3 extends BaseContract {
905
907
  updateSettings(
906
908
  _stakeBackRatio: BigNumberish,
907
909
  _communityPoolRatio: BigNumberish,
910
+ _maxSlippageRatio: BigNumberish,
908
911
  overrides?: CallOverrides
909
912
  ): Promise<void>;
910
913
 
@@ -1087,6 +1090,7 @@ export interface FuseStakingV3 extends BaseContract {
1087
1090
  updateSettings(
1088
1091
  _stakeBackRatio: BigNumberish,
1089
1092
  _communityPoolRatio: BigNumberish,
1093
+ _maxSlippageRatio: BigNumberish,
1090
1094
  overrides?: Overrides & { from?: string }
1091
1095
  ): Promise<BigNumber>;
1092
1096
 
@@ -1251,6 +1255,7 @@ export interface FuseStakingV3 extends BaseContract {
1251
1255
  updateSettings(
1252
1256
  _stakeBackRatio: BigNumberish,
1253
1257
  _communityPoolRatio: BigNumberish,
1258
+ _maxSlippageRatio: BigNumberish,
1254
1259
  overrides?: Overrides & { from?: string }
1255
1260
  ): Promise<PopulatedTransaction>;
1256
1261
 
@@ -464,6 +464,19 @@ const _abi = [
464
464
  stateMutability: "nonpayable",
465
465
  type: "function",
466
466
  },
467
+ {
468
+ inputs: [
469
+ {
470
+ internalType: "bytes32",
471
+ name: "_code",
472
+ type: "bytes32",
473
+ },
474
+ ],
475
+ name: "setCampaignCode",
476
+ outputs: [],
477
+ stateMutability: "nonpayable",
478
+ type: "function",
479
+ },
467
480
  {
468
481
  inputs: [
469
482
  {
@@ -641,7 +654,7 @@ const _abi = [
641
654
  ] as const;
642
655
 
643
656
  const _bytecode =
644
- "0x60a06040523060805234801561001457600080fd5b50608051612a1f61004c6000396000818161079f015281816107df015281816109c001528181610a000152610a7c0152612a1f6000f3fe60806040526004361061015d5760003560e01c806302fb0c5e14610162578063119e5bf3146101985780631b3c90a8146101c557806321132aad146101dc5780633659cfe6146101fc57806336afc6fa1461021c5780633e6326fc1461023157806341155d5e146102515780634162169f1461027f5780634f1ef2861461029f57806352d1902d146102b257806354fd4d50146102c75780635aef7de6146102f95780635b419a65146103195780636d619ef8146103395780638da5cb5b14610359578063a1df6fd314610379578063a87430ba14610393578063acec338a1461045b578063af6346b01461047b578063b2596a6714610490578063b6567cd5146104e7578063b9fb2d1814610507578063ba6f568014610527578063c350a1b51461055d578063d80528ae1461057d578063e1758bd81461059c578063e951a3aa146105b1578063e9881a5e146105de578063efbe1c1c146105fe575b600080fd5b34801561016e57600080fd5b50609e5461018390600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b3480156101a457600080fd5b50609e546101b8906001600160a01b031681565b60405161018f9190612349565b3480156101d157600080fd5b506101da610613565b005b3480156101e857600080fd5b506101da6101f736600461236b565b61073a565b34801561020857600080fd5b506101da61021736600461239d565b610795565b34801561022857600080fd5b506101b861085d565b34801561023d57600080fd5b506067546101b8906001600160a01b031681565b34801561025d57600080fd5b5061027161026c36600461239d565b6108e9565b60405190815260200161018f565b34801561028b57600080fd5b506065546101b8906001600160a01b031681565b6101da6102ad3660046123d0565b6109b6565b3480156102be57600080fd5b50610271610a6f565b3480156102d357600080fd5b50604080518082018252600381526219171960e91b6020820152905161018f91906124b7565b34801561030557600080fd5b506066546101b8906001600160a01b031681565b34801561032557600080fd5b506101da6103343660046124ea565b610b1d565b34801561034557600080fd5b5061018361035436600461239d565b610e12565b34801561036557600080fd5b50609d546101b8906001600160a01b031681565b34801561038557600080fd5b5060a7546101839060ff1681565b34801561039f57600080fd5b506104076103ae36600461239d565b609b60205260009081526040902080546001820154600283015460058401546006850154600786015460088701546009880154600a909801546001600160a01b0390971697959660ff9095169593949293919290919089565b604080516001600160a01b03909a168a5260208a0198909852951515968801969096526060870193909352608086019190915260a085015260c084015260e08301919091526101008201526101200161018f565b34801561046757600080fd5b506101da61047636600461236b565b611003565b34801561048757600080fd5b506101da611060565b34801561049c57600080fd5b506104cc6104ab36600461250c565b609c6020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161018f565b3480156104f357600080fd5b5061027161050236600461239d565b611263565b34801561051357600080fd5b506101da610522366004612525565b6112f5565b34801561053357600080fd5b506101b861054236600461250c565b609a602052600090815260409020546001600160a01b031681565b34801561056957600080fd5b506101da610578366004612557565b611354565b34801561058957600080fd5b50609f5460a05460a1546104cc92919083565b3480156105a857600080fd5b506101b8611472565b3480156105bd57600080fd5b506105d16105cc36600461239d565b6114a1565b60405161018f9190612599565b3480156105ea57600080fd5b506105d16105f936600461239d565b61168c565b34801561060a57600080fd5b506101da611705565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa158015610676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061069a91906125e6565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071891906125e6565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b609d546001600160a01b031633148061075d57506066546001600160a01b031633145b6107825760405162461bcd60e51b815260040161077990612603565b60405180910390fd5b60a7805460ff1916911515919091179055565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036107dd5760405162461bcd60e51b81526004016107799061264f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661080f611893565b6001600160a01b0316146108355760405162461bcd60e51b815260040161077990612689565b61083e816118af565b6040805160008082526020820190925261085a918391906118ee565b50565b60675460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac1906064015b602060405180830381865afa1580156108c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e491906125e6565b905090565b6001600160a01b0381166000908152609b602090815260408083206004018054825181850281018501909352808352849383018282801561095357602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610935575b505050505090506000805b82518110156109ae5761098983828151811061097c5761097c6126c3565b6020026020010151610e12565b1561099c5781610998816126ef565b9250505b806109a6816126ef565b91505061095e565b509392505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109fe5760405162461bcd60e51b81526004016107799061264f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a30611893565b6001600160a01b031614610a565760405162461bcd60e51b815260040161077990612689565b610a5f826118af565b610a6b828260016118ee565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b0a5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608401610779565b506000805160206129a383398151915290565b609e54600160a01b900460ff16610b465760405162461bcd60e51b815260040161077990612708565b6000828152609a60205260409020546001600160a01b03161580610b8057506000828152609a60205260409020546001600160a01b031633145b80610b9357506001600160a01b03821633145b610bdc5760405162461bcd60e51b815260206004820152601a602482015279696e7669746520636f646520616c726561647920696e2075736560301b6044820152606401610779565b808203610bfb5760405162461bcd60e51b81526004016107799061272c565b336000908152609b60209081526040808320848452609a9092529091205460018201546001600160a01b03909116901580610c51575081546001600160a01b0316158015610c5157506001600160a01b03811615155b610c935760405162461bcd60e51b81526020600482015260136024820152721d5cd95c88185b1c9958591e481a9bda5b9959606a1b6044820152606401610779565b6001820154600003610cd25760018201849055426006830181905560098301556000848152609a6020526040902080546001600160a01b031916331790555b6001600160a01b03811615610dbb57336001600160a01b03821603610d095760405162461bcd60e51b81526004016107799061272c565b81546001600160a01b0382166001600160a01b0319918216811784556000908152609b6020908152604082206003810180546001818101835591855283852001805486163390811790915560049092018054808301825590855292842090920180549094161790925560a18054909190610d84908490612751565b90915550506001600160a01b0381166000908152609b60209081526040808320600501548352609c909152902060010154600a8301555b610dc433610e12565b15610dd657610dd4336001611a59565b505b60405133906001600160a01b038316907fd8c638d8979e2ba5dba1f0d66246ee4b1c54b838f0e0a2b601365345eb23b05190600090a350505050565b6001600160a01b038082166000908152609b6020908152604080832054909316808352838320600501548352609c9091529181206002015460a754919291839060ff1615156001148015610e665750600082115b8015610eb157506001600160a01b038084166000908152609b60205260408082206006015492881682529020600901546201518091610ea491612764565b610eae9190612777565b82105b90506001600160a01b03831615801590610ee757506001600160a01b0385166000908152609b602052604090206002015460ff16155b8015610f625750610ef661085d565b6001600160a01b0316633af32abf866040518263ffffffff1660e01b8152600401610f219190612349565b602060405180830381865afa158015610f3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f629190612799565b8015610fdd5750610f7161085d565b6001600160a01b0316633af32abf846040518263ffffffff1660e01b8152600401610f9c9190612349565b602060405180830381865afa158015610fb9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fdd9190612799565b8015610ff0575046610fee86611efb565b145b8015610ffa575080155b95945050505050565b609d546001600160a01b031633148061102657506066546001600160a01b031633145b6110425760405162461bcd60e51b815260040161077990612603565b609e8054911515600160a01b0260ff60a01b19909216919091179055565b609e54600160a01b900460ff166110895760405162461bcd60e51b815260040161077990612708565b336000908152609b6020526040812060040180549091905b80156111e2576202d2a85a106111e2576000836110bf600184612764565b815481106110cf576110cf6126c3565b6000918252602090912001546001600160a01b031690506110ef81610e12565b156111cf57620493e05a101561110557506111e2565b611110816000611a59565b61111a9084612751565b8454909350849061112d90600190612764565b8154811061113d5761113d6126c3565b6000918252602090912001546001600160a01b03168461115e600185612764565b8154811061116e5761116e6126c3565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550838054806111ac576111ac6127b6565b600082815260209020810160001990810180546001600160a01b03191690550190555b50806111da816127cc565b9150506110a1565b508015610a6b57609e5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061121b90339085906004016127e3565b6020604051808303816000875af115801561123a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125e9190612799565b505050565b609e54600090600160a01b900460ff1661128f5760405162461bcd60e51b815260040161077990612708565b61129882610e12565b6112e45760405162461bcd60e51b815260206004820181905260248201527f75736572206e6f7420656c6c6967626c6520666f7220626f756e7479207965746044820152606401610779565b6112ef826001611a59565b92915050565b609d546001600160a01b031633148061131857506066546001600160a01b031633145b6113345760405162461bcd60e51b815260040161077990612603565b6000938452609c6020526040909320918255600282019290925560010155565b600054610100900460ff16158080156113745750600054600160ff909116105b80611395575061138330611fc5565b158015611395575060005460ff166001145b6113f85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610779565b6000805460ff19166001179055801561141b576000805461ff0019166101001790555b611426848484611fd4565b801561146c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60675460405163bf40fac160e01b81526000916001600160a01b03169063bf40fac1906108a3906004016127fc565b6001600160a01b0381166000908152609b6020908152604080832060040180548251818502810185019093528083526060949383018282801561150d57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116114ef575b5050505050905060008060005b835181101561158757609b6000858381518110611539576115396126c3565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff166115755781611571816126ef565b9250505b8061157f816126ef565b91505061151a565b506000816001600160401b038111156115a2576115a26123ba565b6040519080825280602002602001820160405280156115cb578160200160208202803683370190505b50905060005b845181101561168257609b60008683815181106115f0576115f06126c3565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff1661167057848181518110611630576116306126c3565b602002602001015182858151811061164a5761164a6126c3565b6001600160a01b03909216602092830291909101909101528361166c816126ef565b9450505b8061167a816126ef565b9150506115d1565b5095945050505050565b6001600160a01b0381166000908152609b60209081526040918290206003018054835181840281018401909452808452606093928301828280156116f957602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116db575b50505050509050919050565b609d546001600160a01b031633148061172857506066546001600160a01b031633145b6117445760405162461bcd60e51b815260040161077990612603565b609e54600160a01b900460ff1661176d5760405162461bcd60e51b815260040161077990612708565b609e546040516370a0823160e01b81526000916001600160a01b0316906370a082319061179e903090600401612349565b602060405180830381865afa1580156117bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117df9190612820565b609e5460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb9061181290339085906004016127e3565b6020604051808303816000875af1158015611831573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118559190612799565b5060405133904780156108fc02916000818181858888f19350505050158015611882573d6000803e3d6000fd5b5050609e805460ff60a01b19169055565b6000805160206129a3833981519152546001600160a01b031690565b609d546001600160a01b03163314806118d257506066546001600160a01b031633145b61085a5760405162461bcd60e51b815260040161077990612603565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156119215761125e836120f9565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561197b575060408051601f3d908101601f1916820190925261197891810190612820565b60015b6119de5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610779565b6000805160206129a38339815191528114611a4d5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610779565b5061125e838383612193565b6001600160a01b038281166000908152609b60209081526040808320805460099091015494168084528184206005908101548552609c8452828520835160808101855281548152600182015495810195909552600281015485850152835160a081019485905295969295929487949093919260608501929160038501919082845b815481526020019060010190808311611ada57505050919092525050506001600160a01b0387166000908152609b60205260408120600a0154919250819003611bc457609e546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015611b67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8b9190612839565b611b9690600a612940565b905063649afa808411611bb457611baf816101f461294f565b611bc0565b611bc0816103e861294f565b9150505b80826020015111611bd55780611bdb565b81602001515b90506000808360400151118015611c0c57506001600160a01b0385166000908152609b602052604090206006015484115b8015611c4f57506001600160a01b0385166000908152609b60205260409020600601546201518090611c3e9086612764565b611c489190612777565b8360400151105b6001600160a01b03808a166000908152609b6020526040808220600201805460ff191660019081179091559289168252812060070180549394509192611c96908490612751565b90915550506001600160a01b0385166000908152609b602052604081206008018054849290611cc6908490612751565b9091555050609f805460019190600090611ce1908490612751565b909155505060a08054839190600090611cfb908490612751565b9091555050825160009015801590611d2f575083516001600160a01b0387166000908152609b602052604090206007015410155b8015611d39575081155b15611d92576001600160a01b0386166000908152609b60205260408120600501805460019290611d6a908490612751565b9091555050506001600160a01b0385166000908152609b602052604090204260069091015560015b8715611e0f57609e5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90611dca90899087906004016127e3565b6020604051808303816000875af1158015611de9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e0d9190612799565b505b609e546001600160a01b031663a9059cbb8a611e2c600287612777565b6040518363ffffffff1660e01b8152600401611e499291906127e3565b6020604051808303816000875af1158015611e68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8c9190612799565b506001600160a01b038681166000818152609b602090815260409182902060050154825188815291820152841515818301529051928c16927f6081787cd1bd02ab1576c52f03e8710d792d460e7881c3155d77d23893f3768b9181900360600190a35090979650505050505050565b6000806000611f0861085d565b6001600160a01b031684604051602401611f229190612349565b60408051601f198184030181529181526020820180516001600160e01b031663a061922d60e01b17905251611f579190612966565b600060405180830381855afa9150503d8060008114611f92576040519150601f19603f3d011682016040523d82523d6000602084013e611f97565b606091505b509092509050811515600003611fb157465b949350505050565b80806020019051810190611fa99190612820565b6001600160a01b03163b151590565b611fdd836121b8565b609d80546001600160a01b038084166001600160a01b031990921691909117909155609e805460ff60a01b1916600160a01b17905560008052609c6020527f21d5695aeb71770b4b420e85352fe1a012fa06ae92de02f7ee513765e0afa02483905560675460405163bf40fac160e01b81527f21d5695aeb71770b4b420e85352fe1a012fa06ae92de02f7ee513765e0afa02392919091169063bf40fac190612088906004016127fc565b602060405180830381865afa1580156120a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c991906125e6565b609e80546001600160a01b0319166001600160a01b0392909216919091179055505060a7805460ff191690555050565b61210281611fc5565b6121645760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610779565b6000805160206129a383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61219c836121db565b6000825111806121a95750805b1561125e5761146c838361221b565b606780546001600160a01b0319166001600160a01b03831617905561085a610613565b6121e4816120f9565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606061222683611fc5565b6122815760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610779565b600080846001600160a01b03168460405161229c9190612966565b600060405180830381855af49150503d80600081146122d7576040519150601f19603f3d011682016040523d82523d6000602084013e6122dc565b606091505b5091509150610ffa82826040518060600160405280602781526020016129c3602791396060831561230e575081612318565b612318838361231f565b9392505050565b81511561232f5781518083602001fd5b8060405162461bcd60e51b815260040161077991906124b7565b6001600160a01b0391909116815260200190565b801515811461085a57600080fd5b60006020828403121561237d57600080fd5b81356123188161235d565b6001600160a01b038116811461085a57600080fd5b6000602082840312156123af57600080fd5b813561231881612388565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156123e357600080fd5b82356123ee81612388565b915060208301356001600160401b038082111561240a57600080fd5b818501915085601f83011261241e57600080fd5b813581811115612430576124306123ba565b604051601f8201601f19908116603f01168101908382118183101715612458576124586123ba565b8160405282815288602084870101111561247157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156124ae578181015183820152602001612496565b50506000910152565b60208152600082518060208401526124d6816040850160208701612493565b601f01601f19169190910160400192915050565b600080604083850312156124fd57600080fd5b50508035926020909101359150565b60006020828403121561251e57600080fd5b5035919050565b6000806000806080858703121561253b57600080fd5b5050823594602084013594506040840135936060013592509050565b60008060006060848603121561256c57600080fd5b833561257781612388565b925060208401359150604084013561258e81612388565b809150509250925092565b6020808252825182820181905260009190848201906040850190845b818110156125da5783516001600160a01b0316835292840192918401916001016125b5565b50909695505050505050565b6000602082840312156125f857600080fd5b815161231881612388565b6020808252602c908201527f4f6e6c79206f776e6572206f72206176617461722063616e20706572666f726d60408201526b103a3434b99030b1ba34b7b760a11b606082015260800190565b6020808252602c9082015260008051602061298383398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602061298383398151915260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201612701576127016126d9565b5060010190565b6020808252600a90820152696e6f742061637469766560b01b604082015260600190565b6020808252600b908201526a73656c6620696e7669746560a81b604082015260600190565b808201808211156112ef576112ef6126d9565b818103818111156112ef576112ef6126d9565b60008261279457634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156127ab57600080fd5b81516123188161235d565b634e487b7160e01b600052603160045260246000fd5b6000816127db576127db6126d9565b506000190190565b6001600160a01b03929092168252602082015260400190565b6020808252600a908201526923a7a7a22227a62620a960b11b604082015260600190565b60006020828403121561283257600080fd5b5051919050565b60006020828403121561284b57600080fd5b815160ff8116811461231857600080fd5b600181815b8085111561289757816000190482111561287d5761287d6126d9565b8085161561288a57918102915b93841c9390800290612861565b509250929050565b6000826128ae575060016112ef565b816128bb575060006112ef565b81600181146128d157600281146128db576128f7565b60019150506112ef565b60ff8411156128ec576128ec6126d9565b50506001821b6112ef565b5060208310610133831016604e8410600b841016171561291a575081810a6112ef565b612924838361285c565b8060001904821115612938576129386126d9565b029392505050565b600061231860ff84168361289f565b80820281158282048414176112ef576112ef6126d9565b60008251612978818460208701612493565b919091019291505056fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d2acfabbb7ef4e6e812626a4272e82a5553f58312fd9493b49654c4822d89a5364736f6c63430008130033";
657
+ "0x60a06040523060805234801561001457600080fd5b50608051612d5361004c600039600081816107ca0152818161080a015281816109eb01528181610a2b0152610aa70152612d536000f3fe6080604052600436106101685760003560e01c806302fb0c5e1461016d578063119e5bf3146101a35780631b3c90a8146101d057806321132aad146101e75780633659cfe61461020757806336afc6fa146102275780633e6326fc1461023c57806341155d5e1461025c5780634162169f1461028a5780634f1ef286146102aa57806352d1902d146102bd57806354fd4d50146102d25780635aef7de6146103045780635b419a65146103245780636d619ef8146103445780638da5cb5b14610364578063a1df6fd314610384578063a87430ba1461039e578063acec338a14610466578063af6346b014610486578063b2596a671461049b578063b6567cd5146104f2578063b9fb2d1814610512578063ba6f568014610532578063c350a1b514610568578063d80528ae14610588578063e1758bd8146105a7578063e951a3aa146105bc578063e9881a5e146105e9578063efbe1c1c14610609578063f14b86491461061e575b600080fd5b34801561017957600080fd5b50609e5461018e90600160a01b900460ff1681565b60405190151581526020015b60405180910390f35b3480156101af57600080fd5b50609e546101c3906001600160a01b031681565b60405161019a9190612625565b3480156101dc57600080fd5b506101e561063e565b005b3480156101f357600080fd5b506101e5610202366004612647565b610765565b34801561021357600080fd5b506101e5610222366004612679565b6107c0565b34801561023357600080fd5b506101c3610888565b34801561024857600080fd5b506067546101c3906001600160a01b031681565b34801561026857600080fd5b5061027c610277366004612679565b610914565b60405190815260200161019a565b34801561029657600080fd5b506065546101c3906001600160a01b031681565b6101e56102b83660046126ac565b6109e1565b3480156102c957600080fd5b5061027c610a9a565b3480156102de57600080fd5b506040805180820182526003815262322e3360e81b6020820152905161019a9190612793565b34801561031057600080fd5b506066546101c3906001600160a01b031681565b34801561033057600080fd5b506101e561033f3660046127c6565b610b48565b34801561035057600080fd5b5061018e61035f366004612679565b610ec4565b34801561037057600080fd5b50609d546101c3906001600160a01b031681565b34801561039057600080fd5b5060a75461018e9060ff1681565b3480156103aa57600080fd5b506104126103b9366004612679565b609b60205260009081526040902080546001820154600283015460058401546006850154600786015460088701546009880154600a909801546001600160a01b0390971697959660ff9095169593949293919290919089565b604080516001600160a01b03909a168a5260208a0198909852951515968801969096526060870193909352608086019190915260a085015260c084015260e08301919091526101008201526101200161019a565b34801561047257600080fd5b506101e5610481366004612647565b6110b5565b34801561049257600080fd5b506101e5611112565b3480156104a757600080fd5b506104d76104b63660046127e8565b609c6020526000908152604090208054600182015460029092015490919083565b6040805193845260208401929092529082015260600161019a565b3480156104fe57600080fd5b5061027c61050d366004612679565b611315565b34801561051e57600080fd5b506101e561052d366004612801565b6113a7565b34801561053e57600080fd5b506101c361054d3660046127e8565b609a602052600090815260409020546001600160a01b031681565b34801561057457600080fd5b506101e5610583366004612833565b611406565b34801561059457600080fd5b50609f5460a05460a1546104d792919083565b3480156105b357600080fd5b506101c3611524565b3480156105c857600080fd5b506105dc6105d7366004612679565b611553565b60405161019a9190612875565b3480156105f557600080fd5b506105dc610604366004612679565b61173e565b34801561061557600080fd5b506101e56117b7565b34801561062a57600080fd5b506101e56106393660046127e8565b611945565b60675460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac190606401602060405180830381865afa1580156106a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c591906128c2565b606580546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de6916004808201926020929091908290030181865afa15801561071f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074391906128c2565b606680546001600160a01b0319166001600160a01b0392909216919091179055565b609d546001600160a01b031633148061078857506066546001600160a01b031633145b6107ad5760405162461bcd60e51b81526004016107a4906128df565b60405180910390fd5b60a7805460ff1916911515919091179055565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036108085760405162461bcd60e51b81526004016107a49061292b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661083a611989565b6001600160a01b0316146108605760405162461bcd60e51b81526004016107a490612965565b610869816119a5565b60408051600080825260208201909252610885918391906119e4565b50565b60675460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac1906064015b602060405180830381865afa1580156108eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090f91906128c2565b905090565b6001600160a01b0381166000908152609b602090815260408083206004018054825181850281018501909352808352849383018282801561097e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610960575b505050505090506000805b82518110156109d9576109b48382815181106109a7576109a761299f565b6020026020010151610ec4565b156109c757816109c3816129cb565b9250505b806109d1816129cb565b915050610989565b509392505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610a295760405162461bcd60e51b81526004016107a49061292b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a5b611989565b6001600160a01b031614610a815760405162461bcd60e51b81526004016107a490612965565b610a8a826119a5565b610a96828260016119e4565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b355760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b60648201526084016107a4565b50600080516020612cd783398151915290565b609e54600160a01b900460ff16610b715760405162461bcd60e51b81526004016107a4906129e4565b6000828152609a60205260409020546001600160a01b03161580610bab57506000828152609a60205260409020546001600160a01b031633145b80610bbe57506001600160a01b03821633145b610c075760405162461bcd60e51b815260206004820152601a602482015279696e7669746520636f646520616c726561647920696e2075736560301b60448201526064016107a4565b808203610c265760405162461bcd60e51b81526004016107a490612a08565b336000908152609b60209081526040808320848452609a9092529091205460028201546001600160a01b039091169060ff16158015610ca4575060018201541580610c8c575081546001600160a01b0316158015610c8c57506001600160a01b03811615155b80610ca4575060a85415801590610ca457508260a854145b610ce65760405162461bcd60e51b81526020600482015260136024820152721d5cd95c88185b1c9958591e481a9bda5b9959606a1b60448201526064016107a4565b6001820154600003610d255760018201849055426006830181905560098301556000848152609a6020526040902080546001600160a01b031916331790555b6001600160a01b03811615610e0e57336001600160a01b03821603610d5c5760405162461bcd60e51b81526004016107a490612a08565b81546001600160a01b0382166001600160a01b0319918216811784556000908152609b6020908152604082206003810180546001818101835591855283852001805486163390811790915560049092018054808301825590855292842090920180549094161790925560a18054909190610dd7908490612a2d565b90915550506001600160a01b0381166000908152609b60209081526040808320600501548352609c909152902060010154600a8301555b60a85483148015610e20575060a85415155b15610e6d576001609f6002016000828254610e3b9190612a2d565b909155505060008052609c602052600080516020612c9783398151915254600a830155610e6733611b4f565b50610e88565b610e7633610ec4565b15610e8857610e86336001611d5d565b505b60405133906001600160a01b038316907fd8c638d8979e2ba5dba1f0d66246ee4b1c54b838f0e0a2b601365345eb23b05190600090a350505050565b6001600160a01b038082166000908152609b6020908152604080832054909316808352838320600501548352609c9091529181206002015460a754919291839060ff1615156001148015610f185750600082115b8015610f6357506001600160a01b038084166000908152609b60205260408082206006015492881682529020600901546201518091610f5691612a40565b610f609190612a53565b82105b90506001600160a01b03831615801590610f9957506001600160a01b0385166000908152609b602052604090206002015460ff16155b80156110145750610fa8610888565b6001600160a01b0316633af32abf866040518263ffffffff1660e01b8152600401610fd39190612625565b602060405180830381865afa158015610ff0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110149190612a75565b801561108f5750611023610888565b6001600160a01b0316633af32abf846040518263ffffffff1660e01b815260040161104e9190612625565b602060405180830381865afa15801561106b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108f9190612a75565b80156110a25750466110a0866121e9565b145b80156110ac575080155b95945050505050565b609d546001600160a01b03163314806110d857506066546001600160a01b031633145b6110f45760405162461bcd60e51b81526004016107a4906128df565b609e8054911515600160a01b0260ff60a01b19909216919091179055565b609e54600160a01b900460ff1661113b5760405162461bcd60e51b81526004016107a4906129e4565b336000908152609b6020526040812060040180549091905b8015611294576202d2a85a1061129457600083611171600184612a40565b815481106111815761118161299f565b6000918252602090912001546001600160a01b031690506111a181610ec4565b1561128157620493e05a10156111b75750611294565b6111c2816000611d5d565b6111cc9084612a2d565b845490935084906111df90600190612a40565b815481106111ef576111ef61299f565b6000918252602090912001546001600160a01b031684611210600185612a40565b815481106112205761122061299f565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508380548061125e5761125e612a92565b600082815260209020810160001990810180546001600160a01b03191690550190555b508061128c81612aa8565b915050611153565b508015610a9657609e5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906112cd9033908590600401612abf565b6020604051808303816000875af11580156112ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113109190612a75565b505050565b609e54600090600160a01b900460ff166113415760405162461bcd60e51b81526004016107a4906129e4565b61134a82610ec4565b6113965760405162461bcd60e51b815260206004820181905260248201527f75736572206e6f7420656c6c6967626c6520666f7220626f756e74792079657460448201526064016107a4565b6113a1826001611d5d565b92915050565b609d546001600160a01b03163314806113ca57506066546001600160a01b031633145b6113e65760405162461bcd60e51b81526004016107a4906128df565b6000938452609c6020526040909320918255600282019290925560010155565b600054610100900460ff16158080156114265750600054600160ff909116105b806114475750611435306122b3565b158015611447575060005460ff166001145b6114aa5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107a4565b6000805460ff1916600117905580156114cd576000805461ff0019166101001790555b6114d88484846122c2565b801561151e576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60675460405163bf40fac160e01b81526000916001600160a01b03169063bf40fac1906108ce90600401612ad8565b6001600160a01b0381166000908152609b602090815260408083206004018054825181850281018501909352808352606094938301828280156115bf57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116115a1575b5050505050905060008060005b835181101561163957609b60008583815181106115eb576115eb61299f565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff166116275781611623816129cb565b9250505b80611631816129cb565b9150506115cc565b506000816001600160401b0381111561165457611654612696565b60405190808252806020026020018201604052801561167d578160200160208202803683370190505b50905060005b845181101561173457609b60008683815181106116a2576116a261299f565b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff16611722578481815181106116e2576116e261299f565b60200260200101518285815181106116fc576116fc61299f565b6001600160a01b03909216602092830291909101909101528361171e816129cb565b9450505b8061172c816129cb565b915050611683565b5095945050505050565b6001600160a01b0381166000908152609b60209081526040918290206003018054835181840281018401909452808452606093928301828280156117ab57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161178d575b50505050509050919050565b609d546001600160a01b03163314806117da57506066546001600160a01b031633145b6117f65760405162461bcd60e51b81526004016107a4906128df565b609e54600160a01b900460ff1661181f5760405162461bcd60e51b81526004016107a4906129e4565b609e546040516370a0823160e01b81526000916001600160a01b0316906370a0823190611850903090600401612625565b602060405180830381865afa15801561186d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118919190612afc565b609e5460405163a9059cbb60e01b81529192506001600160a01b03169063a9059cbb906118c49033908590600401612abf565b6020604051808303816000875af11580156118e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119079190612a75565b5060405133904780156108fc02916000818181858888f19350505050158015611934573d6000803e3d6000fd5b5050609e805460ff60a01b19169055565b609d546001600160a01b031633148061196857506066546001600160a01b031633145b6119845760405162461bcd60e51b81526004016107a4906128df565b60a855565b600080516020612cd7833981519152546001600160a01b031690565b609d546001600160a01b03163314806119c857506066546001600160a01b031633145b6108855760405162461bcd60e51b81526004016107a4906128df565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611a1757611310836123d5565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611a71575060408051601f3d908101601f19168201909252611a6e91810190612afc565b60015b611ad45760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016107a4565b600080516020612cd78339815191528114611b435760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016107a4565b5061131083838361246f565b6001600160a01b0381166000908152609b602052604081206002015460ff16158015611bea5750611b7e610888565b6001600160a01b0316633af32abf836040518263ffffffff1660e01b8152600401611ba99190612625565b602060405180830381865afa158015611bc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bea9190612a75565b8015611bfd575046611bfb836121e9565b145b611c375760405162461bcd60e51b815260206004820152600b60248201526a6e6f7420656c6967626c6560a81b60448201526064016107a4565b6001600160a01b0382166000908152609b602052604081206009810154600a8201546002909201805460ff19166001908117909155609f805492949192909190611c82908490612a2d565b909155505060a08054829190600090611c9c908490612a2d565b9091555050609e5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90611cd39087908590600401612abf565b6020604051808303816000875af1158015611cf2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d169190612a75565b50836001600160a01b031660006001600160a01b0316600080516020612c7783398151915283600080604051611d4e93929190612b15565b60405180910390a39392505050565b6001600160a01b038281166000908152609b60209081526040808320805460099091015494168084528184206005908101548552609c8452828520835160808101855281548152600182015495810195909552600281015485850152835160a081019485905295969295929487949093919260608501929160038501919082845b815481526020019060010190808311611dde57505050919092525050506001600160a01b0387166000908152609b60205260408120600a0154919250819003611ec857609e546040805163313ce56760e01b815290516000926001600160a01b03169163313ce5679160048083019260209291908290030181865afa158015611e6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8f9190612b2d565b611e9a90600a612c34565b905063649afa808411611eb857611eb3816101f4612c43565b611ec4565b611ec4816103e8612c43565b9150505b80826020015111611ed95780611edf565b81602001515b90506000808360400151118015611f1057506001600160a01b0385166000908152609b602052604090206006015484115b8015611f5357506001600160a01b0385166000908152609b60205260409020600601546201518090611f429086612a40565b611f4c9190612a53565b8360400151105b6001600160a01b03808a166000908152609b6020526040808220600201805460ff191660019081179091559289168252812060070180549394509192611f9a908490612a2d565b90915550506001600160a01b0385166000908152609b602052604081206008018054849290611fca908490612a2d565b9091555050609f805460019190600090611fe5908490612a2d565b909155505060a08054839190600090611fff908490612a2d565b9091555050825160009015801590612033575083516001600160a01b0387166000908152609b602052604090206007015410155b801561203d575081155b15612096576001600160a01b0386166000908152609b6020526040812060050180546001929061206e908490612a2d565b9091555050506001600160a01b0385166000908152609b602052604090204260069091015560015b871561211357609e5460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906120ce9089908790600401612abf565b6020604051808303816000875af11580156120ed573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121119190612a75565b505b609e546001600160a01b031663a9059cbb8a612130600287612a53565b6040518363ffffffff1660e01b815260040161214d929190612abf565b6020604051808303816000875af115801561216c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121909190612a75565b506001600160a01b038681166000818152609b602052604090819020600501549051928c1692600080516020612c77833981519152916121d4918891908790612b15565b60405180910390a35090979650505050505050565b60008060006121f6610888565b6001600160a01b0316846040516024016122109190612625565b60408051601f198184030181529181526020820180516001600160e01b031663a061922d60e01b179052516122459190612c5a565b600060405180830381855afa9150503d8060008114612280576040519150601f19603f3d011682016040523d82523d6000602084013e612285565b606091505b50909250905081151560000361229f57465b949350505050565b808060200190518101906122979190612afc565b6001600160a01b03163b151590565b6122cb83612494565b609d80546001600160a01b038084166001600160a01b031990921691909117909155609e805460ff60a01b1916600160a01b17905560008052609c602052600080516020612c9783398151915283905560675460405163bf40fac160e01b81527f21d5695aeb71770b4b420e85352fe1a012fa06ae92de02f7ee513765e0afa02392919091169063bf40fac19061236490600401612ad8565b602060405180830381865afa158015612381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123a591906128c2565b609e80546001600160a01b0319166001600160a01b0392909216919091179055505060a7805460ff191690555050565b6123de816122b3565b6124405760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016107a4565b600080516020612cd783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b612478836124b7565b6000825111806124855750805b156113105761151e83836124f7565b606780546001600160a01b0319166001600160a01b03831617905561088561063e565b6124c0816123d5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060612502836122b3565b61255d5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016107a4565b600080846001600160a01b0316846040516125789190612c5a565b600060405180830381855af49150503d80600081146125b3576040519150601f19603f3d011682016040523d82523d6000602084013e6125b8565b606091505b50915091506110ac8282604051806060016040528060278152602001612cf760279139606083156125ea5750816125f4565b6125f483836125fb565b9392505050565b81511561260b5781518083602001fd5b8060405162461bcd60e51b81526004016107a49190612793565b6001600160a01b0391909116815260200190565b801515811461088557600080fd5b60006020828403121561265957600080fd5b81356125f481612639565b6001600160a01b038116811461088557600080fd5b60006020828403121561268b57600080fd5b81356125f481612664565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156126bf57600080fd5b82356126ca81612664565b915060208301356001600160401b03808211156126e657600080fd5b818501915085601f8301126126fa57600080fd5b81358181111561270c5761270c612696565b604051601f8201601f19908116603f0116810190838211818310171561273457612734612696565b8160405282815288602084870101111561274d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b8381101561278a578181015183820152602001612772565b50506000910152565b60208152600082518060208401526127b281604085016020870161276f565b601f01601f19169190910160400192915050565b600080604083850312156127d957600080fd5b50508035926020909101359150565b6000602082840312156127fa57600080fd5b5035919050565b6000806000806080858703121561281757600080fd5b5050823594602084013594506040840135936060013592509050565b60008060006060848603121561284857600080fd5b833561285381612664565b925060208401359150604084013561286a81612664565b809150509250925092565b6020808252825182820181905260009190848201906040850190845b818110156128b65783516001600160a01b031683529284019291840191600101612891565b50909695505050505050565b6000602082840312156128d457600080fd5b81516125f481612664565b6020808252602c908201527f4f6e6c79206f776e6572206f72206176617461722063616e20706572666f726d60408201526b103a3434b99030b1ba34b7b760a11b606082015260800190565b6020808252602c90820152600080516020612cb783398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020612cb783398151915260408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016129dd576129dd6129b5565b5060010190565b6020808252600a90820152696e6f742061637469766560b01b604082015260600190565b6020808252600b908201526a73656c6620696e7669746560a81b604082015260600190565b808201808211156113a1576113a16129b5565b818103818111156113a1576113a16129b5565b600082612a7057634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215612a8757600080fd5b81516125f481612639565b634e487b7160e01b600052603160045260246000fd5b600081612ab757612ab76129b5565b506000190190565b6001600160a01b03929092168252602082015260400190565b6020808252600a908201526923a7a7a22227a62620a960b11b604082015260600190565b600060208284031215612b0e57600080fd5b5051919050565b92835260208301919091521515604082015260600190565b600060208284031215612b3f57600080fd5b815160ff811681146125f457600080fd5b600181815b80851115612b8b578160001904821115612b7157612b716129b5565b80851615612b7e57918102915b93841c9390800290612b55565b509250929050565b600082612ba2575060016113a1565b81612baf575060006113a1565b8160018114612bc55760028114612bcf57612beb565b60019150506113a1565b60ff841115612be057612be06129b5565b50506001821b6113a1565b5060208310610133831016604e8410600b8410161715612c0e575081810a6113a1565b612c188383612b50565b8060001904821115612c2c57612c2c6129b5565b029392505050565b60006125f460ff841683612b93565b80820281158282048414176113a1576113a16129b5565b60008251612c6c81846020870161276f565b919091019291505056fe6081787cd1bd02ab1576c52f03e8710d792d460e7881c3155d77d23893f3768b21d5695aeb71770b4b420e85352fe1a012fa06ae92de02f7ee513765e0afa02446756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122079ced96ca78134857105891fd633e2712a9548cdd7aacb7b7dcabced003ce12464736f6c63430008130033";
645
658
 
646
659
  type InvitesV2ConstructorParams =
647
660
  | [signer?: Signer]
@@ -694,6 +694,11 @@ const _abi = [
694
694
  name: "_communityPoolRatio",
695
695
  type: "uint256",
696
696
  },
697
+ {
698
+ internalType: "uint256",
699
+ name: "_maxSlippageRatio",
700
+ type: "uint256",
701
+ },
697
702
  ],
698
703
  name: "updateSettings",
699
704
  outputs: [],
@@ -759,7 +764,7 @@ const _abi = [
759
764
  ] as const;
760
765
 
761
766
  const _bytecode =
762
- "0x608060405234801561001057600080fd5b50613415806100206000396000f3fe6080604052600436106102115760003560e01c8063015af8ee1461021d57806304d26ebf1461023f578063094e23f91461026857806312424e3f1461029557806314d140b0146102aa578063150d7e47146102ca57806316c38b3c146102e057806317dfb94d1461030057806326476204146103355780632681f7e4146103585780632c336822146103785780632e1a7d4d1461039857806335aa2e44146103b85780633a4b66f1146103d85780633fb1ccf1146103e057806340a141ff14610400578063452a932014610420578063485cc955146104405780634d238c8e146104605780635c975abb146104805780636021a9d5146104a157806370a08231146104b7578063715018a6146104ed57806374a7262e146105025780637c5570461461051857806380d04de81461053857806381028f671461054d57806381213f1a1461056d578063853828b6146105835780638918c4a21461059857806389a30271146105ae5780638a0dac4a146105ce5780638bdb2afa146105ee5780638da5cb5b1461060e5780638ef3f761146106235780639168ae7214610643578063a5a9063614610670578063bc8d958014610685578063bf79c67f1461069b578063c11a5630146106bb578063c816841b146106d1578063d22e9b06146106f1578063d3a8c5f614610707578063d55ec69714610727578063dd8f19101461073c578063f2fde38b1461075c57600080fd5b3661021857005b600080fd5b34801561022957600080fd5b5061023d610238366004612e42565b61077c565b005b34801561024b57600080fd5b50610255606f5481565b6040519081526020015b60405180910390f35b34801561027457600080fd5b50607654610288906001600160a01b031681565b60405161025f9190612e64565b3480156102a157600080fd5b5061023d6107b7565b3480156102b657600080fd5b50607a54610288906001600160a01b031681565b3480156102d657600080fd5b5061025560705481565b3480156102ec57600080fd5b5061023d6102fb366004612e86565b6108b1565b34801561030c57600080fd5b5061032061031b366004612ea3565b6108f9565b6040805192835260208301919091520161025f565b610348610343366004612ed1565b610a77565b604051901515815260200161025f565b34801561036457600080fd5b50606854610288906001600160a01b031681565b34801561038457600080fd5b5061023d610393366004612ed1565b610c43565b3480156103a457600080fd5b506102556103b3366004612ea3565b610c6d565b3480156103c457600080fd5b506102886103d3366004612ea3565b610f13565b610348610f3d565b3480156103ec57600080fd5b50606954610288906001600160a01b031681565b34801561040c57600080fd5b5061023d61041b366004612ed1565b610f4e565b34801561042c57600080fd5b50607754610288906001600160a01b031681565b34801561044c57600080fd5b5061023d61045b366004612eee565b611112565b34801561046c57600080fd5b5061023d61047b366004612ed1565b6114c8565b34801561048c57600080fd5b5060765461034890600160a01b900460ff1681565b3480156104ad57600080fd5b50610255606e5481565b3480156104c357600080fd5b506102556104d2366004612ed1565b6001600160a01b031660009081526065602052604090205490565b3480156104f957600080fd5b5061023d611510565b34801561050e57600080fd5b5061025560745481565b34801561052457600080fd5b50610320610533366004612ea3565b611524565b34801561054457600080fd5b5061025561180f565b34801561055957600080fd5b50606a54610288906001600160a01b031681565b34801561057957600080fd5b50610255607b5481565b34801561058f57600080fd5b5061023d6118eb565b3480156105a457600080fd5b50610255606d5481565b3480156105ba57600080fd5b50607554610288906001600160a01b031681565b3480156105da57600080fd5b5061023d6105e9366004612ed1565b611a9e565b3480156105fa57600080fd5b50606b54610288906001600160a01b031681565b34801561061a57600080fd5b50610288611aea565b34801561062f57600080fd5b50606754610288906001600160a01b031681565b34801561064f57600080fd5b5061025561065e366004612ed1565b60656020526000908152604090205481565b34801561067c57600080fd5b5061023d611af9565b34801561069157600080fd5b5061025560735481565b3480156106a757600080fd5b506103206106b6366004612f27565b611f99565b3480156106c757600080fd5b5061025560715481565b3480156106dd57600080fd5b50606c54610288906001600160a01b031681565b3480156106fd57600080fd5b5061025560725481565b34801561071357600080fd5b5061023d610722366004612f53565b611fdf565b34801561073357600080fd5b5061023d612095565b34801561074857600080fd5b50607954610288906001600160a01b031681565b34801561076857600080fd5b5061023d610777366004612ed1565b612109565b6077546001600160a01b031633146107af5760405162461bcd60e51b81526004016107a690612f7f565b60405180910390fd5b607255606e55565b60765460785460405163095ea7b360e01b81526001600160a01b039283169263095ea7b3926107ef9291169060001990600401612fa5565b6020604051808303816000875af115801561080e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108329190612fbe565b5060755460685460405163095ea7b360e01b81526001600160a01b039283169263095ea7b39261086b9291169060001990600401612fa5565b6020604051808303816000875af115801561088a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ae9190612fbe565b50565b6077546001600160a01b031633146108db5760405162461bcd60e51b81526004016107a690612f7f565b60768054911515600160a01b0260ff60a01b19909216919091179055565b606b54606854604080516315ab88c960e31b815290516000938493849384936001600160a01b039384169363e6a4390593169163ad5c46489160048083019260209291908290030181865afa158015610956573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097a9190612fdb565b6069546040516001600160e01b031960e085901b1681526109a892916001600160a01b031690600401612ff8565b602060405180830381865afa1580156109c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e99190612fdb565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610a26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4a9190613029565b506001600160701b031691506001600160701b03169150610a6c828287611f99565b935093505050915091565b6077546000906001600160a01b03163314610aa45760405162461bcd60e51b81526004016107a690612f7f565b60003411610ae85760405162461bcd60e51b815260206004820152601160248201527007374616b65206d757374206265203e203607c1b60448201526064016107a6565b606654610b305760405162461bcd60e51b81526020600482015260166024820152756e6f20617070726f7665642076616c696461746f727360501b60448201526064016107a6565b6000805b6001600160a01b03841615801590610b4d575060665481105b15610ba457836001600160a01b031660668281548110610b6f57610b6f613079565b6000918252602090912001546001600160a01b031614610b925760019150610ba4565b80610b9c816130a5565b915050610b34565b506001600160a01b0383161580610bb85750805b610c045760405162461bcd60e51b815260206004820152601e60248201527f76616c696461746f72206e6f7420696e20617070726f766564206c697374000060448201526064016107a6565b6000610c10348561217f565b33600090815260656020526040812080549293503492909190610c349084906130be565b9091555090925050505b919050565b610c4b6123e8565b606a80546001600160a01b0319166001600160a01b0392909216919091179055565b60003031818315610c7e5783610c8f565b336000908152606560205260409020545b9050808015801590610cb05750336000908152606560205260409020548211155b610cf65760405162461bcd60e51b81526020600482015260176024820152761a5b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b60448201526064016107a6565b606654600090610d07908790612447565b905060005b606654811015610e7657606754606680546000926001600160a01b0316916321429e609130919086908110610d4357610d43613079565b6000918252602090912001546040516001600160e01b031960e085901b168152610d7a92916001600160a01b031690600401612ff8565b602060405180830381865afa158015610d97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbb91906130d1565b905080600003610dcb5750610e64565b828111610e1557610e0360668381548110610de857610de8613079565b6000918252602090912001546001600160a01b03168261245a565b50610e0e8482612531565b9350610e54565b610e4660668381548110610e2b57610e2b613079565b6000918252602090912001546001600160a01b03168461245a565b50610e518484612531565b93505b83600003610e625750610e76565b505b80610e6e816130a5565b915050610d0c565b50610e82303185612531565b935083831115610e90578392505b33600090815260656020526040902054610eaa9084612531565b336000908152606560205260409020558215610f095760405133908490600081818185875af1925050503d8060008114610f00576040519150601f19603f3d011682016040523d82523d6000602084013e610f05565b606091505b5050505b5090949350505050565b60668181548110610f2357600080fd5b6000918252602090912001546001600160a01b0316905081565b6000610f496000610a77565b905090565b610f566123e8565b60675460405163010a14f360e51b81526000916001600160a01b0316906321429e6090610f899030908690600401612ff8565b602060405180830381865afa158015610fa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fca91906130d1565b90508015610fee573031610fde838361245a565b5080303103610fec57505050565b505b60005b60665481101561110d57826001600160a01b03166066828154811061101857611018613079565b6000918252602090912001546001600160a01b0316036110fb57606654611041906001906130ea565b8110156110c35760668054611058906001906130ea565b8154811061106857611068613079565b600091825260209091200154606680546001600160a01b03909216918390811061109457611094613079565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b60668054806110d4576110d46130fd565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b80611105816130a5565b915050610ff1565b505050565b600054610100900460ff16158080156111325750600054600160ff909116105b8061114c5750303b15801561114c575060005460ff166001145b6111af5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107a6565b6000805460ff1916600117905580156111d2576000805461ff0019166101001790555b6111da61253d565b606780546001600160a01b0319908116733014ca10b91cb3d0ad85fef7a3cb95bcac9c0f7917909155606680546001810182556000919091526000805160206133c083398151915201805490911673cb876a393f05a6677a8a029f1c6d7603b416c0a6179055618235606e819055607255610bb8606f55601e607055620186a06071556001600160a01b038316156112725782611288565b73e3f85aad0c8dd7337427b9df5d0fb741d65eeeb55b606880546001600160a01b039283166001600160a01b031991821681179092556069805493861693909116929092179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156112f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113199190612fdb565b606b80546001600160a01b0319166001600160a01b03928316908117909155606854604080516315ab88c960e31b81529051929363e6a439059392169163ad5c4648916004808201926020929091908290030181865afa158015611381573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a59190612fdb565b846040518363ffffffff1660e01b81526004016113c3929190612ff8565b602060405180830381865afa1580156113e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114049190612fdb565b606c80546001600160a01b03929092166001600160a01b031992831617905560788054821673dfe016328e7bcd6fa06614fe3af3877e931f7e0a17905560758054821673620fd5fa44be6af63715ef4e65ddfa0387ad13f51790556076805490911673249be57637d8b013ad64785404b24aebae9b098b179055801561110d576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6114d06123e8565b606680546001810182556000919091526000805160206133c08339815191520180546001600160a01b0319166001600160a01b0392909216919091179055565b6115186123e8565b61152260006125ad565b565b606b54606854604080516315ab88c960e31b81529051600093849384936001600160a01b039283169363e6a43905939092169163ad5c4648916004808201926020929091908290030181865afa158015611582573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a69190612fdb565b6076546040516001600160e01b031960e085901b1681526115d492916001600160a01b031690600401612ff8565b602060405180830381865afa1580156115f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116159190612fdb565b606b5460695460755460405163e6a4390560e01b81529394506000936001600160a01b039384169363e6a43905936116569390821692911690600401612ff8565b602060405180830381865afa158015611673573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116979190612fdb565b9050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156116da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fe9190613029565b506001600160701b031691506001600160701b03169150600080856001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177a9190613029565b506001600160701b03918216935016905060006117a9826117a385670de0b6b3a76400006125ff565b90612447565b905060006117c3826117a38d670de0b6b3a76400006125ff565b90506000806117e16117da8864e8d4a51000613113565b8985611f99565b9b5091508a90506117fe670de0b6b3a76400006117a384876125ff565b9b5050505050505050505050915091565b600080805b6066548110156118e557606754606680546000926001600160a01b0316916321429e60913091908690811061184b5761184b613079565b6000918252602090912001546040516001600160e01b031960e085901b16815261188292916001600160a01b031690600401612ff8565b602060405180830381865afa15801561189f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c391906130d1565b90506118cf81846130be565b92505080806118dd906130a5565b915050611814565b50919050565b6077546001600160a01b031633146119155760405162461bcd60e51b81526004016107a690612f7f565b60005b606654811015611a0257606754606680546000926001600160a01b0316916321429e60913091908690811061194f5761194f613079565b6000918252602090912001546040516001600160e01b031960e085901b16815261198692916001600160a01b031690600401612ff8565b602060405180830381865afa1580156119a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c791906130d1565b9050806000036119d757506119f0565b6119ed60668381548110610de857610de8613079565b50505b806119fa816130a5565b915050611918565b506000607455303180156108ae57604051600090339083908381818185875af1925050503d8060008114611a52576040519150601f19603f3d011682016040523d82523d6000602084013e611a57565b606091505b5050905080611a9a5760405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b60448201526064016107a6565b5050565b6077546001600160a01b03163314611ac85760405162461bcd60e51b81526004016107a690612f7f565b607780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031690565b607654600160a01b900460ff1615611b4f5760405162461bcd60e51b81526020600482015260196024820152781d589a4818dbdb1b1958dd1a5bdb881a5cc81c185d585cd959603a1b60448201526064016107a6565b606a5460408051635c9302c960e01b815290516000926001600160a01b031691635c9302c99160048083019260209291908290030181865afa158015611b99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bbd91906130d1565b9050606d548103611c1c5760405162461bcd60e51b8152602060048201526024808201527f63616e20636f6c6c656374206f6e6c79206f6e636520696e206120756269206360448201526379636c6560e01b60648201526084016107a6565b6000607454611c29303190565b611c3391906130ea565b9050600081607454611c4591906130be565b11611c8b5760405162461bcd60e51b81526020600482015260166024820152751b9bc819585c9b9a5b99dcc81d1bc818dbdb1b1958dd60521b60448201526064016107a6565b606d829055607154606e54600091611cb2916117a390611cab90836130ea565b85906125ff565b90506000611cc082846130ea565b90506000611ccd8261260b565b9050611cd981836130ea565b91506000611cf360745485611cee91906130be565b6126ce565b905080600081518110611d0857611d08613079565b602002602001015160745485611d1e91906130be565b611d2891906130ea565b607455611d3683600061217f565b5060008160018351611d4891906130ea565b81518110611d5857611d58613079565b602002602001015190506000611d7f6071546117a3607054856125ff90919063ffffffff16565b90508015611dfe5760695460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90611db99033908590600401612fa5565b6020604051808303816000875af1158015611dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfc9190612fbe565b505b611e0881836130ea565b91506000611e276071546117a3607254866125ff90919063ffffffff16565b90506000611e358483612531565b606954606a5460405163a9059cbb60e01b81529293506001600160a01b039182169263a9059cbb92611e6d9216908590600401612fa5565b6020604051808303816000875af1158015611e8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb09190612fbe565b50606954607a5460405163a9059cbb60e01b81526001600160a01b039283169263a9059cbb92611ee7929116908690600401612fa5565b6020604051808303816000875af1158015611f06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2a9190612fbe565b506074546040805183815260208101859052908101869052606081018b905260808101919091523360a082015260c081018490528a907f49a079c90e07ed02ae8283e86eaeb643c637381d30aa7ba06d155e5b744a85439060e00160405180910390a250505050505050505050565b600080607154606f5486611fad9190613113565b611fb7919061312a565b9150828210611fc65782611fc8565b815b9150611fd58286866129ed565b9050935093915050565b6077546001600160a01b031633146120095760405162461bcd60e51b81526004016107a690612f7f565b806073600082825461201b91906130ea565b909155505060695460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb906120529085908590600401612fa5565b6020604051808303816000875af1158015612071573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110d9190612fbe565b6077546001600160a01b031633146120bf5760405162461bcd60e51b81526004016107a690612f7f565b607980546001600160a01b03199081167301ab5966c1d742ae0cff7f14cc0f4d85156e83d917909155607a805490911673ce69892cbda078bbfaa3e5ae7a4b4d2bf3e5c412179055565b6121116123e8565b6001600160a01b0381166121765760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107a6565b6108ae816125ad565b6066546000908103612193575060006123e2565b6001600160a01b0382161561220f576067546040516317066a5760e21b81526001600160a01b0390911690635c19a95c9085906121d4908690600401612e64565b6000604051808303818588803b1580156121ed57600080fd5b505af1158015612201573d6000803e3d6000fd5b5050505050600190506123e2565b6066546000908461221e61180f565b61222891906130be565b612232919061312a565b90508360005b606654811080156122495750600082115b156123da57606754606680546000926001600160a01b0316916321429e60913091908690811061227b5761227b613079565b6000918252602090912001546040516001600160e01b031960e085901b1681526122b292916001600160a01b031690600401612ff8565b602060405180830381865afa1580156122cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f391906130d1565b9050838110156123c75760006123098583612531565b9050838110612318578361231a565b805b606754606680549293506001600160a01b0390911691635c19a95c9184918790811061234857612348613079565b6000918252602090912001546040516001600160e01b031960e085901b16815261237e916001600160a01b031690600401612e64565b6000604051808303818588803b15801561239757600080fd5b505af11580156123ab573d6000803e3d6000fd5b50505050506123c3818561253190919063ffffffff16565b9350505b50806123d2816130a5565b915050612238565b506001925050505b92915050565b336123f1611aea565b6001600160a01b0316146115225760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107a6565b6000612453828461312a565b9392505050565b60675460405163f3fef3a360e01b81526000916001600160a01b03169063f3fef3a39061248d9086908690600401612fa5565b600060405180830381600087803b1580156124a757600080fd5b505af19250505080156124b8575060015b612529576124c461314c565b806308c379a0036124ed57506124d86131aa565b806124e357506124ef565b60009150506123e2565b505b3d808015612519576040519150601f19603f3d011682016040523d82523d6000602084013e61251e565b606091505b5060009150506123e2565b5060016123e2565b600061245382846130ea565b600054610100900460ff166125a85760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016107a6565b611522335b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006124538284613113565b6079546000906001600160a01b0316158015906126375750607954607b546001600160a01b0390911631105b156126b957607954607b54612656916001600160a01b031631906130ea565b9050818111156126635750805b6079546040516001600160a01b03909116908290600081818185875af1925050503d80600081146126b0576040519150601f19603f3d011682016040523d82523d6000602084013e6126b5565b606091505b5050505b6079546001600160a01b031631607b55919050565b6060600082116126f05760405162461bcd60e51b81526004016107a690613233565b6000806126fc846108f9565b9150915060008061270c86611524565b915091506060828510612896576040805160028082526060820183529091602083019080368337505060695482519293506001600160a01b031691839150600190811061275b5761275b613079565b6001600160a01b03928316602091820292909201810191909152606854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156127b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127d89190612fdb565b816000815181106127eb576127eb613079565b6001600160a01b03928316602091820292909201015260685416637ff36ab586606461281888605f613113565b612822919061312a565b8430426040518663ffffffff1660e01b815260040161284494939291906132a8565b60006040518083038185885af1158015612862573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261288b91908101906132dd565b979650505050505050565b6000806128a285612a31565b60408051600280825260608201909252929450909250816020016020820280368337505060695482519295506001600160a01b03169185915060019081106128ec576128ec613079565b6001600160a01b0392831660209182029290920101526075548451911690849060009061291b5761291b613079565b6001600160a01b039283166020918202929092010152606854600091166338ed173984606461294b89605f613113565b612955919061312a565b8730426040518663ffffffff1660e01b8152600401612978959493929190613383565b6000604051808303816000875af1158015612997573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526129bf91908101906132dd565b905081816000815181106129d5576129d5613079565b60209081029190910101529998505050505050505050565b6000806129fc856103e5613113565b90506000612a0a8483613113565b9050600082612a1b876103e8613113565b612a2591906130be565b905061288b818361312a565b60008060008311612a545760405162461bcd60e51b81526004016107a690613233565b606b54606854604080516315ab88c960e31b815290516000936001600160a01b039081169363e6a439059391169163ad5c4648916004808201926020929091908290030181865afa158015612aad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad19190612fdb565b6076546040516001600160e01b031960e085901b168152612aff92916001600160a01b031690600401612ff8565b602060405180830381865afa158015612b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b409190612fdb565b9050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612b83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ba79190613029565b506001600160701b031691506001600160701b03169150600080612bcc84848a611f99565b60408051600280825260608201835293955091935060009290602083019080368337505060765482519293506001600160a01b0316918391506001908110612c1657612c16613079565b6001600160a01b03928316602091820292909201810191909152606854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612c6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c939190612fdb565b81600081518110612ca657612ca6613079565b6001600160a01b03928316602091820292909201015260685460009116637ff36ab5856064612cd687605f613113565b612ce0919061312a565b8530426040518663ffffffff1660e01b8152600401612d0294939291906132a8565b60006040518083038185885af1158015612d20573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052612d4991908101906132dd565b60785481519192506001600160a01b031690632b7f09239083906001908110612d7457612d74613079565b602090810291909101015160765460755460405160e085901b6001600160e01b031916815260048101939093526001600160a01b039182166024840152166044820152606401600060405180830381600087803b158015612dd457600080fd5b505af1158015612de8573d6000803e3d6000fd5b5050505080600081518110612dff57612dff613079565b6020026020010151975064e8d4a5100081600181518110612e2257612e22613079565b6020026020010151612e34919061312a565b985050505050505050915091565b60008060408385031215612e5557600080fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b80151581146108ae57600080fd5b600060208284031215612e9857600080fd5b813561245381612e78565b600060208284031215612eb557600080fd5b5035919050565b6001600160a01b03811681146108ae57600080fd5b600060208284031215612ee357600080fd5b813561245381612ebc565b60008060408385031215612f0157600080fd5b8235612f0c81612ebc565b91506020830135612f1c81612ebc565b809150509250929050565b600080600060608486031215612f3c57600080fd5b505081359360208301359350604090920135919050565b60008060408385031215612f6657600080fd5b8235612f7181612ebc565b946020939093013593505050565b6020808252600c908201526b3737ba1033bab0b93234b0b760a11b604082015260600190565b6001600160a01b03929092168252602082015260400190565b600060208284031215612fd057600080fd5b815161245381612e78565b600060208284031215612fed57600080fd5b815161245381612ebc565b6001600160a01b0392831681529116602082015260400190565b80516001600160701b0381168114610c3e57600080fd5b60008060006060848603121561303e57600080fd5b61304784613012565b925061305560208501613012565b9150604084015163ffffffff8116811461306e57600080fd5b809150509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016130b7576130b761308f565b5060010190565b808201808211156123e2576123e261308f565b6000602082840312156130e357600080fd5b5051919050565b818103818111156123e2576123e261308f565b634e487b7160e01b600052603160045260246000fd5b80820281158282048414176123e2576123e261308f565b60008261314757634e487b7160e01b600052601260045260246000fd5b500490565b600060033d11156131655760046000803e5060005160e01c5b90565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b03811182821017156131a3576131a3613168565b6040525050565b600060443d10156131b85790565b6040516003193d81016004833e81513d6001600160401b0380831160248401831017156131e757505050505090565b82850191508151818111156131ff5750505050505090565b843d87010160208285010111156132195750505050505090565b6132286020828601018761317e565b509095945050505050565b60208082526017908201527606275792076616c75652073686f756c64206265203e203604c1b604082015260600190565b600081518084526020808501945080840160005b8381101561329d5781516001600160a01b031687529582019590820190600101613278565b509495945050505050565b8481526080602082015260006132c16080830186613264565b6001600160a01b03949094166040830152506060015292915050565b600060208083850312156132f057600080fd5b82516001600160401b038082111561330757600080fd5b818501915085601f83011261331b57600080fd5b81518181111561332d5761332d613168565b8060051b91506040516133428584018261317e565b8181529183018401918481018884111561335b57600080fd5b938501935b838510156133775784518152938501938501613360565b50979650505050505050565b85815284602082015260a0604082015260006133a260a0830186613264565b6001600160a01b039490941660608301525060800152939250505056fe46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e94354a26469706673582212203d63da497ce5c513ae55bd479cbb10d99473438df6a771fc7b55a07db474909164736f6c63430008130033";
767
+ "0x608060405234801561001057600080fd5b506133fc806100206000396000f3fe6080604052600436106102115760003560e01c80630465c5631461021d57806304d26ebf1461023f578063094e23f91461026857806312424e3f1461029557806314d140b0146102aa578063150d7e47146102ca57806316c38b3c146102e057806317dfb94d1461030057806326476204146103355780632681f7e4146103585780632c336822146103785780632e1a7d4d1461039857806335aa2e44146103b85780633a4b66f1146103d85780633fb1ccf1146103e057806340a141ff14610400578063452a932014610420578063485cc955146104405780634d238c8e146104605780635c975abb146104805780636021a9d5146104a157806370a08231146104b7578063715018a6146104ed57806374a7262e146105025780637c5570461461051857806380d04de81461053857806381028f671461054d57806381213f1a1461056d578063853828b6146105835780638918c4a21461059857806389a30271146105ae5780638a0dac4a146105ce5780638bdb2afa146105ee5780638da5cb5b1461060e5780638ef3f761146106235780639168ae7214610643578063a5a9063614610670578063bc8d958014610685578063bf79c67f1461069b578063c11a5630146106bb578063c816841b146106d1578063d22e9b06146106f1578063d3a8c5f614610707578063d55ec69714610727578063dd8f19101461073c578063f2fde38b1461075c57600080fd5b3661021857005b600080fd5b34801561022957600080fd5b5061023d610238366004612e4b565b61077c565b005b34801561024b57600080fd5b50610255606f5481565b6040519081526020015b60405180910390f35b34801561027457600080fd5b50607654610288906001600160a01b031681565b60405161025f9190612e77565b3480156102a157600080fd5b5061023d6107c0565b3480156102b657600080fd5b50607a54610288906001600160a01b031681565b3480156102d657600080fd5b5061025560705481565b3480156102ec57600080fd5b5061023d6102fb366004612e99565b6108ba565b34801561030c57600080fd5b5061032061031b366004612eb6565b610902565b6040805192835260208301919091520161025f565b610348610343366004612ee4565b610a80565b604051901515815260200161025f565b34801561036457600080fd5b50606854610288906001600160a01b031681565b34801561038457600080fd5b5061023d610393366004612ee4565b610c4c565b3480156103a457600080fd5b506102556103b3366004612eb6565b610c76565b3480156103c457600080fd5b506102886103d3366004612eb6565b610f1c565b610348610f46565b3480156103ec57600080fd5b50606954610288906001600160a01b031681565b34801561040c57600080fd5b5061023d61041b366004612ee4565b610f57565b34801561042c57600080fd5b50607754610288906001600160a01b031681565b34801561044c57600080fd5b5061023d61045b366004612f01565b61111b565b34801561046c57600080fd5b5061023d61047b366004612ee4565b6114d1565b34801561048c57600080fd5b5060765461034890600160a01b900460ff1681565b3480156104ad57600080fd5b50610255606e5481565b3480156104c357600080fd5b506102556104d2366004612ee4565b6001600160a01b031660009081526065602052604090205490565b3480156104f957600080fd5b5061023d611519565b34801561050e57600080fd5b5061025560745481565b34801561052457600080fd5b50610320610533366004612eb6565b61152d565b34801561054457600080fd5b50610255611818565b34801561055957600080fd5b50606a54610288906001600160a01b031681565b34801561057957600080fd5b50610255607b5481565b34801561058f57600080fd5b5061023d6118f4565b3480156105a457600080fd5b50610255606d5481565b3480156105ba57600080fd5b50607554610288906001600160a01b031681565b3480156105da57600080fd5b5061023d6105e9366004612ee4565b611aa7565b3480156105fa57600080fd5b50606b54610288906001600160a01b031681565b34801561061a57600080fd5b50610288611af3565b34801561062f57600080fd5b50606754610288906001600160a01b031681565b34801561064f57600080fd5b5061025561065e366004612ee4565b60656020526000908152604090205481565b34801561067c57600080fd5b5061023d611b02565b34801561069157600080fd5b5061025560735481565b3480156106a757600080fd5b506103206106b6366004612e4b565b611fa2565b3480156106c757600080fd5b5061025560715481565b3480156106dd57600080fd5b50606c54610288906001600160a01b031681565b3480156106fd57600080fd5b5061025560725481565b34801561071357600080fd5b5061023d610722366004612f3a565b611fe8565b34801561073357600080fd5b5061023d61209e565b34801561074857600080fd5b50607954610288906001600160a01b031681565b34801561076857600080fd5b5061023d610777366004612ee4565b612112565b6077546001600160a01b031633146107af5760405162461bcd60e51b81526004016107a690612f66565b60405180910390fd5b607291909155606e91909155606f55565b60765460785460405163095ea7b360e01b81526001600160a01b039283169263095ea7b3926107f89291169060001990600401612f8c565b6020604051808303816000875af1158015610817573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083b9190612fa5565b5060755460685460405163095ea7b360e01b81526001600160a01b039283169263095ea7b3926108749291169060001990600401612f8c565b6020604051808303816000875af1158015610893573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b79190612fa5565b50565b6077546001600160a01b031633146108e45760405162461bcd60e51b81526004016107a690612f66565b60768054911515600160a01b0260ff60a01b19909216919091179055565b606b54606854604080516315ab88c960e31b815290516000938493849384936001600160a01b039384169363e6a4390593169163ad5c46489160048083019260209291908290030181865afa15801561095f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109839190612fc2565b6069546040516001600160e01b031960e085901b1681526109b192916001600160a01b031690600401612fdf565b602060405180830381865afa1580156109ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f29190612fc2565b6001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610a2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a539190613010565b506001600160701b031691506001600160701b03169150610a75828287611fa2565b935093505050915091565b6077546000906001600160a01b03163314610aad5760405162461bcd60e51b81526004016107a690612f66565b60003411610af15760405162461bcd60e51b815260206004820152601160248201527007374616b65206d757374206265203e203607c1b60448201526064016107a6565b606654610b395760405162461bcd60e51b81526020600482015260166024820152756e6f20617070726f7665642076616c696461746f727360501b60448201526064016107a6565b6000805b6001600160a01b03841615801590610b56575060665481105b15610bad57836001600160a01b031660668281548110610b7857610b78613060565b6000918252602090912001546001600160a01b031614610b9b5760019150610bad565b80610ba58161308c565b915050610b3d565b506001600160a01b0383161580610bc15750805b610c0d5760405162461bcd60e51b815260206004820152601e60248201527f76616c696461746f72206e6f7420696e20617070726f766564206c697374000060448201526064016107a6565b6000610c193485612188565b33600090815260656020526040812080549293503492909190610c3d9084906130a5565b9091555090925050505b919050565b610c546123f1565b606a80546001600160a01b0319166001600160a01b0392909216919091179055565b60003031818315610c875783610c98565b336000908152606560205260409020545b9050808015801590610cb95750336000908152606560205260409020548211155b610cff5760405162461bcd60e51b81526020600482015260176024820152761a5b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b60448201526064016107a6565b606654600090610d10908790612450565b905060005b606654811015610e7f57606754606680546000926001600160a01b0316916321429e609130919086908110610d4c57610d4c613060565b6000918252602090912001546040516001600160e01b031960e085901b168152610d8392916001600160a01b031690600401612fdf565b602060405180830381865afa158015610da0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc491906130b8565b905080600003610dd45750610e6d565b828111610e1e57610e0c60668381548110610df157610df1613060565b6000918252602090912001546001600160a01b031682612463565b50610e17848261253a565b9350610e5d565b610e4f60668381548110610e3457610e34613060565b6000918252602090912001546001600160a01b031684612463565b50610e5a848461253a565b93505b83600003610e6b5750610e7f565b505b80610e778161308c565b915050610d15565b50610e8b30318561253a565b935083831115610e99578392505b33600090815260656020526040902054610eb3908461253a565b336000908152606560205260409020558215610f125760405133908490600081818185875af1925050503d8060008114610f09576040519150601f19603f3d011682016040523d82523d6000602084013e610f0e565b606091505b5050505b5090949350505050565b60668181548110610f2c57600080fd5b6000918252602090912001546001600160a01b0316905081565b6000610f526000610a80565b905090565b610f5f6123f1565b60675460405163010a14f360e51b81526000916001600160a01b0316906321429e6090610f929030908690600401612fdf565b602060405180830381865afa158015610faf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd391906130b8565b90508015610ff7573031610fe78383612463565b5080303103610ff557505050565b505b60005b60665481101561111657826001600160a01b03166066828154811061102157611021613060565b6000918252602090912001546001600160a01b0316036111045760665461104a906001906130d1565b8110156110cc5760668054611061906001906130d1565b8154811061107157611071613060565b600091825260209091200154606680546001600160a01b03909216918390811061109d5761109d613060565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b60668054806110dd576110dd6130e4565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b8061110e8161308c565b915050610ffa565b505050565b600054610100900460ff161580801561113b5750600054600160ff909116105b806111555750303b158015611155575060005460ff166001145b6111b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107a6565b6000805460ff1916600117905580156111db576000805461ff0019166101001790555b6111e3612546565b606780546001600160a01b0319908116733014ca10b91cb3d0ad85fef7a3cb95bcac9c0f7917909155606680546001810182556000919091526000805160206133a783398151915201805490911673cb876a393f05a6677a8a029f1c6d7603b416c0a6179055618235606e819055607255610258606f55601e607055620186a06071556001600160a01b0383161561127b5782611291565b73e3f85aad0c8dd7337427b9df5d0fb741d65eeeb55b606880546001600160a01b039283166001600160a01b031991821681179092556069805493861693909116929092179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156112fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113229190612fc2565b606b80546001600160a01b0319166001600160a01b03928316908117909155606854604080516315ab88c960e31b81529051929363e6a439059392169163ad5c4648916004808201926020929091908290030181865afa15801561138a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ae9190612fc2565b846040518363ffffffff1660e01b81526004016113cc929190612fdf565b602060405180830381865afa1580156113e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140d9190612fc2565b606c80546001600160a01b03929092166001600160a01b031992831617905560788054821673dfe016328e7bcd6fa06614fe3af3877e931f7e0a17905560758054821673620fd5fa44be6af63715ef4e65ddfa0387ad13f51790556076805490911673249be57637d8b013ad64785404b24aebae9b098b1790558015611116576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6114d96123f1565b606680546001810182556000919091526000805160206133a78339815191520180546001600160a01b0319166001600160a01b0392909216919091179055565b6115216123f1565b61152b60006125b6565b565b606b54606854604080516315ab88c960e31b81529051600093849384936001600160a01b039283169363e6a43905939092169163ad5c4648916004808201926020929091908290030181865afa15801561158b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115af9190612fc2565b6076546040516001600160e01b031960e085901b1681526115dd92916001600160a01b031690600401612fdf565b602060405180830381865afa1580156115fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161e9190612fc2565b606b5460695460755460405163e6a4390560e01b81529394506000936001600160a01b039384169363e6a439059361165f9390821692911690600401612fdf565b602060405180830381865afa15801561167c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a09190612fc2565b9050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156116e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117079190613010565b506001600160701b031691506001600160701b03169150600080856001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801561175f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117839190613010565b506001600160701b03918216935016905060006117b2826117ac85670de0b6b3a7640000612608565b90612450565b905060006117cc826117ac8d670de0b6b3a7640000612608565b90506000806117ea6117e38864e8d4a510006130fa565b8985611fa2565b9b5091508a9050611807670de0b6b3a76400006117ac8487612608565b9b5050505050505050505050915091565b600080805b6066548110156118ee57606754606680546000926001600160a01b0316916321429e60913091908690811061185457611854613060565b6000918252602090912001546040516001600160e01b031960e085901b16815261188b92916001600160a01b031690600401612fdf565b602060405180830381865afa1580156118a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118cc91906130b8565b90506118d881846130a5565b92505080806118e69061308c565b91505061181d565b50919050565b6077546001600160a01b0316331461191e5760405162461bcd60e51b81526004016107a690612f66565b60005b606654811015611a0b57606754606680546000926001600160a01b0316916321429e60913091908690811061195857611958613060565b6000918252602090912001546040516001600160e01b031960e085901b16815261198f92916001600160a01b031690600401612fdf565b602060405180830381865afa1580156119ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d091906130b8565b9050806000036119e057506119f9565b6119f660668381548110610df157610df1613060565b50505b80611a038161308c565b915050611921565b506000607455303180156108b757604051600090339083908381818185875af1925050503d8060008114611a5b576040519150601f19603f3d011682016040523d82523d6000602084013e611a60565b606091505b5050905080611aa35760405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b60448201526064016107a6565b5050565b6077546001600160a01b03163314611ad15760405162461bcd60e51b81526004016107a690612f66565b607780546001600160a01b0319166001600160a01b0392909216919091179055565b6033546001600160a01b031690565b607654600160a01b900460ff1615611b585760405162461bcd60e51b81526020600482015260196024820152781d589a4818dbdb1b1958dd1a5bdb881a5cc81c185d585cd959603a1b60448201526064016107a6565b606a5460408051635c9302c960e01b815290516000926001600160a01b031691635c9302c99160048083019260209291908290030181865afa158015611ba2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bc691906130b8565b9050606d548103611c255760405162461bcd60e51b8152602060048201526024808201527f63616e20636f6c6c656374206f6e6c79206f6e636520696e206120756269206360448201526379636c6560e01b60648201526084016107a6565b6000607454611c32303190565b611c3c91906130d1565b9050600081607454611c4e91906130a5565b11611c945760405162461bcd60e51b81526020600482015260166024820152751b9bc819585c9b9a5b99dcc81d1bc818dbdb1b1958dd60521b60448201526064016107a6565b606d829055607154606e54600091611cbb916117ac90611cb490836130d1565b8590612608565b90506000611cc982846130d1565b90506000611cd682612614565b9050611ce281836130d1565b91506000611cfc60745485611cf791906130a5565b6126d7565b905080600081518110611d1157611d11613060565b602002602001015160745485611d2791906130a5565b611d3191906130d1565b607455611d3f836000612188565b5060008160018351611d5191906130d1565b81518110611d6157611d61613060565b602002602001015190506000611d886071546117ac6070548561260890919063ffffffff16565b90508015611e075760695460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb90611dc29033908590600401612f8c565b6020604051808303816000875af1158015611de1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e059190612fa5565b505b611e1181836130d1565b91506000611e306071546117ac6072548661260890919063ffffffff16565b90506000611e3e848361253a565b606954606a5460405163a9059cbb60e01b81529293506001600160a01b039182169263a9059cbb92611e769216908590600401612f8c565b6020604051808303816000875af1158015611e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eb99190612fa5565b50606954607a5460405163a9059cbb60e01b81526001600160a01b039283169263a9059cbb92611ef0929116908690600401612f8c565b6020604051808303816000875af1158015611f0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f339190612fa5565b506074546040805183815260208101859052908101869052606081018b905260808101919091523360a082015260c081018490528a907f49a079c90e07ed02ae8283e86eaeb643c637381d30aa7ba06d155e5b744a85439060e00160405180910390a250505050505050505050565b600080607154606f5486611fb691906130fa565b611fc09190613111565b9150828210611fcf5782611fd1565b815b9150611fde8286866129f6565b9050935093915050565b6077546001600160a01b031633146120125760405162461bcd60e51b81526004016107a690612f66565b806073600082825461202491906130d1565b909155505060695460405163a9059cbb60e01b81526001600160a01b039091169063a9059cbb9061205b9085908590600401612f8c565b6020604051808303816000875af115801561207a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111169190612fa5565b6077546001600160a01b031633146120c85760405162461bcd60e51b81526004016107a690612f66565b607980546001600160a01b03199081167301ab5966c1d742ae0cff7f14cc0f4d85156e83d917909155607a805490911673ce69892cbda078bbfaa3e5ae7a4b4d2bf3e5c412179055565b61211a6123f1565b6001600160a01b03811661217f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107a6565b6108b7816125b6565b606654600090810361219c575060006123eb565b6001600160a01b03821615612218576067546040516317066a5760e21b81526001600160a01b0390911690635c19a95c9085906121dd908690600401612e77565b6000604051808303818588803b1580156121f657600080fd5b505af115801561220a573d6000803e3d6000fd5b5050505050600190506123eb565b60665460009084612227611818565b61223191906130a5565b61223b9190613111565b90508360005b606654811080156122525750600082115b156123e357606754606680546000926001600160a01b0316916321429e60913091908690811061228457612284613060565b6000918252602090912001546040516001600160e01b031960e085901b1681526122bb92916001600160a01b031690600401612fdf565b602060405180830381865afa1580156122d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fc91906130b8565b9050838110156123d0576000612312858361253a565b90508381106123215783612323565b805b606754606680549293506001600160a01b0390911691635c19a95c9184918790811061235157612351613060565b6000918252602090912001546040516001600160e01b031960e085901b168152612387916001600160a01b031690600401612e77565b6000604051808303818588803b1580156123a057600080fd5b505af11580156123b4573d6000803e3d6000fd5b50505050506123cc818561253a90919063ffffffff16565b9350505b50806123db8161308c565b915050612241565b506001925050505b92915050565b336123fa611af3565b6001600160a01b03161461152b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107a6565b600061245c8284613111565b9392505050565b60675460405163f3fef3a360e01b81526000916001600160a01b03169063f3fef3a3906124969086908690600401612f8c565b600060405180830381600087803b1580156124b057600080fd5b505af19250505080156124c1575060015b612532576124cd613133565b806308c379a0036124f657506124e1613191565b806124ec57506124f8565b60009150506123eb565b505b3d808015612522576040519150601f19603f3d011682016040523d82523d6000602084013e612527565b606091505b5060009150506123eb565b5060016123eb565b600061245c82846130d1565b600054610100900460ff166125b15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016107a6565b61152b335b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600061245c82846130fa565b6079546000906001600160a01b0316158015906126405750607954607b546001600160a01b0390911631105b156126c257607954607b5461265f916001600160a01b031631906130d1565b90508181111561266c5750805b6079546040516001600160a01b03909116908290600081818185875af1925050503d80600081146126b9576040519150601f19603f3d011682016040523d82523d6000602084013e6126be565b606091505b5050505b6079546001600160a01b031631607b55919050565b6060600082116126f95760405162461bcd60e51b81526004016107a69061321a565b60008061270584610902565b915091506000806127158661152d565b91509150606082851061289f576040805160028082526060820183529091602083019080368337505060695482519293506001600160a01b031691839150600190811061276457612764613060565b6001600160a01b03928316602091820292909201810191909152606854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156127bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e19190612fc2565b816000815181106127f4576127f4613060565b6001600160a01b03928316602091820292909201015260685416637ff36ab586606461282188605f6130fa565b61282b9190613111565b8430426040518663ffffffff1660e01b815260040161284d949392919061328f565b60006040518083038185885af115801561286b573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261289491908101906132c4565b979650505050505050565b6000806128ab85612a3a565b60408051600280825260608201909252929450909250816020016020820280368337505060695482519295506001600160a01b03169185915060019081106128f5576128f5613060565b6001600160a01b0392831660209182029290920101526075548451911690849060009061292457612924613060565b6001600160a01b039283166020918202929092010152606854600091166338ed173984606461295489605f6130fa565b61295e9190613111565b8730426040518663ffffffff1660e01b815260040161298195949392919061336a565b6000604051808303816000875af11580156129a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526129c891908101906132c4565b905081816000815181106129de576129de613060565b60209081029190910101529998505050505050505050565b600080612a05856103e56130fa565b90506000612a1384836130fa565b9050600082612a24876103e86130fa565b612a2e91906130a5565b90506128948183613111565b60008060008311612a5d5760405162461bcd60e51b81526004016107a69061321a565b606b54606854604080516315ab88c960e31b815290516000936001600160a01b039081169363e6a439059391169163ad5c4648916004808201926020929091908290030181865afa158015612ab6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ada9190612fc2565b6076546040516001600160e01b031960e085901b168152612b0892916001600160a01b031690600401612fdf565b602060405180830381865afa158015612b25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b499190612fc2565b9050600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015612b8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb09190613010565b506001600160701b031691506001600160701b03169150600080612bd584848a611fa2565b60408051600280825260608201835293955091935060009290602083019080368337505060765482519293506001600160a01b0316918391506001908110612c1f57612c1f613060565b6001600160a01b03928316602091820292909201810191909152606854604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c9c9190612fc2565b81600081518110612caf57612caf613060565b6001600160a01b03928316602091820292909201015260685460009116637ff36ab5856064612cdf87605f6130fa565b612ce99190613111565b8530426040518663ffffffff1660e01b8152600401612d0b949392919061328f565b60006040518083038185885af1158015612d29573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052612d5291908101906132c4565b60785481519192506001600160a01b031690632b7f09239083906001908110612d7d57612d7d613060565b602090810291909101015160765460755460405160e085901b6001600160e01b031916815260048101939093526001600160a01b039182166024840152166044820152606401600060405180830381600087803b158015612ddd57600080fd5b505af1158015612df1573d6000803e3d6000fd5b5050505080600081518110612e0857612e08613060565b6020026020010151975064e8d4a5100081600181518110612e2b57612e2b613060565b6020026020010151612e3d9190613111565b985050505050505050915091565b600080600060608486031215612e6057600080fd5b505081359360208301359350604090920135919050565b6001600160a01b0391909116815260200190565b80151581146108b757600080fd5b600060208284031215612eab57600080fd5b813561245c81612e8b565b600060208284031215612ec857600080fd5b5035919050565b6001600160a01b03811681146108b757600080fd5b600060208284031215612ef657600080fd5b813561245c81612ecf565b60008060408385031215612f1457600080fd5b8235612f1f81612ecf565b91506020830135612f2f81612ecf565b809150509250929050565b60008060408385031215612f4d57600080fd5b8235612f5881612ecf565b946020939093013593505050565b6020808252600c908201526b3737ba1033bab0b93234b0b760a11b604082015260600190565b6001600160a01b03929092168252602082015260400190565b600060208284031215612fb757600080fd5b815161245c81612e8b565b600060208284031215612fd457600080fd5b815161245c81612ecf565b6001600160a01b0392831681529116602082015260400190565b80516001600160701b0381168114610c4757600080fd5b60008060006060848603121561302557600080fd5b61302e84612ff9565b925061303c60208501612ff9565b9150604084015163ffffffff8116811461305557600080fd5b809150509250925092565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161309e5761309e613076565b5060010190565b808201808211156123eb576123eb613076565b6000602082840312156130ca57600080fd5b5051919050565b818103818111156123eb576123eb613076565b634e487b7160e01b600052603160045260246000fd5b80820281158282048414176123eb576123eb613076565b60008261312e57634e487b7160e01b600052601260045260246000fd5b500490565b600060033d111561314c5760046000803e5060005160e01c5b90565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b038111828210171561318a5761318a61314f565b6040525050565b600060443d101561319f5790565b6040516003193d81016004833e81513d6001600160401b0380831160248401831017156131ce57505050505090565b82850191508151818111156131e65750505050505090565b843d87010160208285010111156132005750505050505090565b61320f60208286010187613165565b509095945050505050565b60208082526017908201527606275792076616c75652073686f756c64206265203e203604c1b604082015260600190565b600081518084526020808501945080840160005b838110156132845781516001600160a01b03168752958201959082019060010161325f565b509495945050505050565b8481526080602082015260006132a8608083018661324b565b6001600160a01b03949094166040830152506060015292915050565b600060208083850312156132d757600080fd5b82516001600160401b03808211156132ee57600080fd5b818501915085601f83011261330257600080fd5b8151818111156133145761331461314f565b8060051b915060405161332985840182613165565b8181529183018401918481018884111561334257600080fd5b938501935b8385101561335e5784518152938501938501613347565b50979650505050505050565b85815284602082015260a06040820152600061338960a083018661324b565b6001600160a01b039490941660608301525060800152939250505056fe46501879b8ca8525e8c2fd519e2fbfcfa2ebea26501294aa02cbfcfb12e94354a2646970667358221220cf103e7c5855957cf59921368cbfd5a8c4d989db34c95adc4f6258ffd884fff064736f6c63430008130033";
763
768
 
764
769
  type FuseStakingV3ConstructorParams =
765
770
  | [signer?: Signer]
Binary file