@gooddollar/goodprotocol 1.0.19-beta.2 → 1.0.19-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 (179) hide show
  1. package/artifacts/abis/DistributionHelper.min.json +1 -0
  2. package/artifacts/abis/ERC20.min.json +1 -1
  3. package/artifacts/abis/GoodDollarMintBurnWrapper.min.json +1 -0
  4. package/artifacts/abis/GoodDollarStaking.min.json +1 -0
  5. package/artifacts/abis/GoodReserveCDai.min.json +1 -1
  6. package/artifacts/abis/IERC2917.min.json +1 -1
  7. package/artifacts/abis/IMultichainRouter.min.json +1 -0
  8. package/artifacts/abis/IRouter.min.json +1 -0
  9. package/artifacts/abis/Math64x64.min.json +1 -0
  10. package/artifacts/abis/PausableControl.min.json +1 -0
  11. package/artifacts/abis/RewardsMinter.min.json +1 -0
  12. package/artifacts/abis/StakingRewardsFixedAPY.min.json +1 -0
  13. package/artifacts/abis/TokenOperation.min.json +1 -0
  14. package/artifacts/abis/cERC20.min.json +1 -1
  15. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  16. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  17. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  18. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  19. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  20. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  21. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  23. package/artifacts/contracts/Interfaces.sol/ERC20.json +13 -0
  24. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  27. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  28. package/artifacts/contracts/Interfaces.sol/IERC2917.json +13 -0
  29. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  31. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  32. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  33. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  34. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  35. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.dbg.json +4 -0
  36. package/artifacts/contracts/Interfaces.sol/IMultichainRouter.json +39 -0
  37. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  38. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  39. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  40. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  41. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  42. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  43. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  44. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  45. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  46. package/artifacts/contracts/Interfaces.sol/cERC20.json +13 -0
  47. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  48. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +2 -2
  49. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  50. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +2 -2
  51. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  52. package/artifacts/contracts/governance/GReputation.sol/GReputation.json +2 -2
  53. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.dbg.json +4 -0
  54. package/artifacts/contracts/governance/GoodDollarStaking.sol/GoodDollarStaking.json +1028 -0
  55. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.dbg.json +4 -0
  56. package/artifacts/contracts/governance/GoodDollarStaking.sol/RewardsMinter.json +35 -0
  57. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  58. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.json +2 -2
  59. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  60. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  61. package/artifacts/contracts/governance/Reputation.sol/Reputation.json +2 -2
  62. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  63. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +2 -2
  64. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  65. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  66. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  67. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  68. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +2 -2
  69. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  70. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +2 -2
  71. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  72. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  73. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  74. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.json +2 -2
  75. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  76. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
  77. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  78. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  79. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.json +2 -2
  80. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  81. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  82. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +2 -2
  83. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  84. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +2 -2
  85. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  86. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.json +2 -2
  87. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  88. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.json +2 -2
  89. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  90. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  91. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  92. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  93. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  94. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  95. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  96. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  97. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.dbg.json +4 -0
  98. package/artifacts/contracts/reserve/DistributionHelper.sol/DistributionHelper.json +574 -0
  99. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  100. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +2 -2
  101. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  102. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +2 -2
  103. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  104. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  105. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +65 -2
  106. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  107. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.json +2 -2
  108. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  109. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.json +2 -2
  110. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  111. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +2 -2
  112. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  113. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +2 -2
  114. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  115. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  116. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  117. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.json +2 -2
  118. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  119. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +2 -2
  120. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  121. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +2 -2
  122. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  123. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +2 -2
  124. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  125. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +2 -2
  126. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  127. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +2 -2
  128. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  129. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +2 -2
  130. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.dbg.json +4 -0
  131. package/artifacts/contracts/staking/utils/Math64X64.sol/Math64x64.json +10 -0
  132. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.dbg.json +4 -0
  133. package/artifacts/contracts/staking/utils/StakingRewardsFixedAPY.sol/StakingRewardsFixedAPY.json +153 -0
  134. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  135. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +2 -2
  136. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  137. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  138. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.json +2 -2
  139. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  140. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.json +2 -2
  141. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  142. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.json +2 -2
  143. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  144. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  145. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.dbg.json +4 -0
  146. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/GoodDollarMintBurnWrapper.json +954 -0
  147. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.dbg.json +4 -0
  148. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/IRouter.json +59 -0
  149. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.dbg.json +4 -0
  150. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/PausableControl.json +69 -0
  151. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.dbg.json +4 -0
  152. package/artifacts/contracts/utils/GoodDollarMintBurnWrapper.sol/TokenOperation.json +10 -0
  153. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  154. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  155. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  156. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.json +2 -2
  157. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  158. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.json +2 -2
  159. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  160. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.json +2 -2
  161. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  162. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.json +2 -2
  163. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  164. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  165. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  166. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.json +2 -2
  167. package/contracts/Interfaces.sol +12 -0
  168. package/contracts/governance/GoodDollarStaking.sol +260 -0
  169. package/contracts/reserve/DistributionHelper.sol +118 -0
  170. package/contracts/reserve/GoodReserveCDai.sol +28 -1
  171. package/contracts/staking/utils/Math64X64.sol +268 -0
  172. package/contracts/staking/utils/StakingRewardsFixedAPY.sol +141 -0
  173. package/contracts/utils/GoodDollarMintBurnWrapper.sol +417 -0
  174. package/package.json +1 -1
  175. package/releases/deployment.json +4 -1
  176. package/scripts/multichain-deploy/basicdao-deploy.ts +22 -20
  177. package/scripts/multichain-deploy/helpers.ts +5 -3
  178. package/scripts/multichain-deploy/multichainWrapper-deploy.ts +67 -0
  179. package/scripts/voltageswaps.ts +47 -0
@@ -0,0 +1,1028 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "GoodDollarStaking",
4
+ "sourceName": "contracts/governance/GoodDollarStaking.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "contract INameService",
10
+ "name": "_ns",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "uint128",
15
+ "name": "_interestRatePerBlock",
16
+ "type": "uint128"
17
+ },
18
+ {
19
+ "internalType": "uint128",
20
+ "name": "_numberOfBlocksPerYear",
21
+ "type": "uint128"
22
+ }
23
+ ],
24
+ "stateMutability": "nonpayable",
25
+ "type": "constructor"
26
+ },
27
+ {
28
+ "anonymous": false,
29
+ "inputs": [
30
+ {
31
+ "indexed": false,
32
+ "internalType": "address",
33
+ "name": "previousAdmin",
34
+ "type": "address"
35
+ },
36
+ {
37
+ "indexed": false,
38
+ "internalType": "address",
39
+ "name": "newAdmin",
40
+ "type": "address"
41
+ }
42
+ ],
43
+ "name": "AdminChanged",
44
+ "type": "event"
45
+ },
46
+ {
47
+ "anonymous": false,
48
+ "inputs": [
49
+ {
50
+ "indexed": true,
51
+ "internalType": "address",
52
+ "name": "owner",
53
+ "type": "address"
54
+ },
55
+ {
56
+ "indexed": true,
57
+ "internalType": "address",
58
+ "name": "spender",
59
+ "type": "address"
60
+ },
61
+ {
62
+ "indexed": false,
63
+ "internalType": "uint256",
64
+ "name": "value",
65
+ "type": "uint256"
66
+ }
67
+ ],
68
+ "name": "Approval",
69
+ "type": "event"
70
+ },
71
+ {
72
+ "anonymous": false,
73
+ "inputs": [
74
+ {
75
+ "indexed": true,
76
+ "internalType": "address",
77
+ "name": "beacon",
78
+ "type": "address"
79
+ }
80
+ ],
81
+ "name": "BeaconUpgraded",
82
+ "type": "event"
83
+ },
84
+ {
85
+ "anonymous": false,
86
+ "inputs": [
87
+ {
88
+ "indexed": true,
89
+ "internalType": "address",
90
+ "name": "staker",
91
+ "type": "address"
92
+ },
93
+ {
94
+ "indexed": false,
95
+ "internalType": "uint256",
96
+ "name": "amount",
97
+ "type": "uint256"
98
+ }
99
+ ],
100
+ "name": "ReputationEarned",
101
+ "type": "event"
102
+ },
103
+ {
104
+ "anonymous": false,
105
+ "inputs": [
106
+ {
107
+ "indexed": true,
108
+ "internalType": "address",
109
+ "name": "staker",
110
+ "type": "address"
111
+ },
112
+ {
113
+ "indexed": false,
114
+ "internalType": "uint256",
115
+ "name": "amount",
116
+ "type": "uint256"
117
+ }
118
+ ],
119
+ "name": "StakeWithdraw",
120
+ "type": "event"
121
+ },
122
+ {
123
+ "anonymous": false,
124
+ "inputs": [
125
+ {
126
+ "indexed": true,
127
+ "internalType": "address",
128
+ "name": "staker",
129
+ "type": "address"
130
+ },
131
+ {
132
+ "indexed": false,
133
+ "internalType": "uint256",
134
+ "name": "amount",
135
+ "type": "uint256"
136
+ }
137
+ ],
138
+ "name": "Staked",
139
+ "type": "event"
140
+ },
141
+ {
142
+ "anonymous": false,
143
+ "inputs": [
144
+ {
145
+ "indexed": true,
146
+ "internalType": "address",
147
+ "name": "from",
148
+ "type": "address"
149
+ },
150
+ {
151
+ "indexed": true,
152
+ "internalType": "address",
153
+ "name": "to",
154
+ "type": "address"
155
+ },
156
+ {
157
+ "indexed": false,
158
+ "internalType": "uint256",
159
+ "name": "value",
160
+ "type": "uint256"
161
+ }
162
+ ],
163
+ "name": "Transfer",
164
+ "type": "event"
165
+ },
166
+ {
167
+ "anonymous": false,
168
+ "inputs": [
169
+ {
170
+ "indexed": true,
171
+ "internalType": "address",
172
+ "name": "implementation",
173
+ "type": "address"
174
+ }
175
+ ],
176
+ "name": "Upgraded",
177
+ "type": "event"
178
+ },
179
+ {
180
+ "inputs": [],
181
+ "name": "PRECISION",
182
+ "outputs": [
183
+ {
184
+ "internalType": "uint128",
185
+ "name": "",
186
+ "type": "uint128"
187
+ }
188
+ ],
189
+ "stateMutability": "view",
190
+ "type": "function"
191
+ },
192
+ {
193
+ "inputs": [
194
+ {
195
+ "internalType": "address",
196
+ "name": "owner",
197
+ "type": "address"
198
+ },
199
+ {
200
+ "internalType": "address",
201
+ "name": "spender",
202
+ "type": "address"
203
+ }
204
+ ],
205
+ "name": "allowance",
206
+ "outputs": [
207
+ {
208
+ "internalType": "uint256",
209
+ "name": "",
210
+ "type": "uint256"
211
+ }
212
+ ],
213
+ "stateMutability": "view",
214
+ "type": "function"
215
+ },
216
+ {
217
+ "inputs": [
218
+ {
219
+ "internalType": "address",
220
+ "name": "spender",
221
+ "type": "address"
222
+ },
223
+ {
224
+ "internalType": "uint256",
225
+ "name": "amount",
226
+ "type": "uint256"
227
+ }
228
+ ],
229
+ "name": "approve",
230
+ "outputs": [
231
+ {
232
+ "internalType": "bool",
233
+ "name": "",
234
+ "type": "bool"
235
+ }
236
+ ],
237
+ "stateMutability": "nonpayable",
238
+ "type": "function"
239
+ },
240
+ {
241
+ "inputs": [],
242
+ "name": "avatar",
243
+ "outputs": [
244
+ {
245
+ "internalType": "address",
246
+ "name": "",
247
+ "type": "address"
248
+ }
249
+ ],
250
+ "stateMutability": "view",
251
+ "type": "function"
252
+ },
253
+ {
254
+ "inputs": [
255
+ {
256
+ "internalType": "address",
257
+ "name": "account",
258
+ "type": "address"
259
+ }
260
+ ],
261
+ "name": "balanceOf",
262
+ "outputs": [
263
+ {
264
+ "internalType": "uint256",
265
+ "name": "",
266
+ "type": "uint256"
267
+ }
268
+ ],
269
+ "stateMutability": "view",
270
+ "type": "function"
271
+ },
272
+ {
273
+ "inputs": [
274
+ {
275
+ "internalType": "address",
276
+ "name": "",
277
+ "type": "address"
278
+ },
279
+ {
280
+ "internalType": "address",
281
+ "name": "",
282
+ "type": "address"
283
+ }
284
+ ],
285
+ "name": "contractToUsers",
286
+ "outputs": [
287
+ {
288
+ "internalType": "uint128",
289
+ "name": "amount",
290
+ "type": "uint128"
291
+ },
292
+ {
293
+ "internalType": "uint128",
294
+ "name": "rewardDebt",
295
+ "type": "uint128"
296
+ },
297
+ {
298
+ "internalType": "uint128",
299
+ "name": "rewardEarn",
300
+ "type": "uint128"
301
+ },
302
+ {
303
+ "internalType": "uint128",
304
+ "name": "rewardMinted",
305
+ "type": "uint128"
306
+ }
307
+ ],
308
+ "stateMutability": "view",
309
+ "type": "function"
310
+ },
311
+ {
312
+ "inputs": [],
313
+ "name": "dao",
314
+ "outputs": [
315
+ {
316
+ "internalType": "contract Controller",
317
+ "name": "",
318
+ "type": "address"
319
+ }
320
+ ],
321
+ "stateMutability": "view",
322
+ "type": "function"
323
+ },
324
+ {
325
+ "inputs": [],
326
+ "name": "decimals",
327
+ "outputs": [
328
+ {
329
+ "internalType": "uint8",
330
+ "name": "",
331
+ "type": "uint8"
332
+ }
333
+ ],
334
+ "stateMutability": "view",
335
+ "type": "function"
336
+ },
337
+ {
338
+ "inputs": [
339
+ {
340
+ "internalType": "address",
341
+ "name": "spender",
342
+ "type": "address"
343
+ },
344
+ {
345
+ "internalType": "uint256",
346
+ "name": "subtractedValue",
347
+ "type": "uint256"
348
+ }
349
+ ],
350
+ "name": "decreaseAllowance",
351
+ "outputs": [
352
+ {
353
+ "internalType": "bool",
354
+ "name": "",
355
+ "type": "bool"
356
+ }
357
+ ],
358
+ "stateMutability": "nonpayable",
359
+ "type": "function"
360
+ },
361
+ {
362
+ "inputs": [
363
+ {
364
+ "internalType": "address",
365
+ "name": "account",
366
+ "type": "address"
367
+ }
368
+ ],
369
+ "name": "earned",
370
+ "outputs": [
371
+ {
372
+ "internalType": "uint256",
373
+ "name": "",
374
+ "type": "uint256"
375
+ }
376
+ ],
377
+ "stateMutability": "nonpayable",
378
+ "type": "function"
379
+ },
380
+ {
381
+ "inputs": [],
382
+ "name": "getChainBlocksPerMonth",
383
+ "outputs": [
384
+ {
385
+ "internalType": "uint256",
386
+ "name": "",
387
+ "type": "uint256"
388
+ }
389
+ ],
390
+ "stateMutability": "view",
391
+ "type": "function"
392
+ },
393
+ {
394
+ "inputs": [
395
+ {
396
+ "internalType": "address",
397
+ "name": "_contract",
398
+ "type": "address"
399
+ },
400
+ {
401
+ "internalType": "address",
402
+ "name": "_user",
403
+ "type": "address"
404
+ }
405
+ ],
406
+ "name": "getProductivity",
407
+ "outputs": [
408
+ {
409
+ "internalType": "uint256",
410
+ "name": "",
411
+ "type": "uint256"
412
+ },
413
+ {
414
+ "internalType": "uint256",
415
+ "name": "",
416
+ "type": "uint256"
417
+ }
418
+ ],
419
+ "stateMutability": "view",
420
+ "type": "function"
421
+ },
422
+ {
423
+ "inputs": [],
424
+ "name": "getRewardsPerBlock",
425
+ "outputs": [
426
+ {
427
+ "internalType": "uint256",
428
+ "name": "",
429
+ "type": "uint256"
430
+ }
431
+ ],
432
+ "stateMutability": "view",
433
+ "type": "function"
434
+ },
435
+ {
436
+ "inputs": [
437
+ {
438
+ "internalType": "address",
439
+ "name": "_user",
440
+ "type": "address"
441
+ }
442
+ ],
443
+ "name": "getStaked",
444
+ "outputs": [
445
+ {
446
+ "internalType": "uint256",
447
+ "name": "",
448
+ "type": "uint256"
449
+ },
450
+ {
451
+ "internalType": "uint256",
452
+ "name": "",
453
+ "type": "uint256"
454
+ }
455
+ ],
456
+ "stateMutability": "view",
457
+ "type": "function"
458
+ },
459
+ {
460
+ "inputs": [
461
+ {
462
+ "internalType": "address",
463
+ "name": "_contract",
464
+ "type": "address"
465
+ },
466
+ {
467
+ "internalType": "uint256",
468
+ "name": "_blockStart",
469
+ "type": "uint256"
470
+ },
471
+ {
472
+ "internalType": "uint256",
473
+ "name": "_blockEnd",
474
+ "type": "uint256"
475
+ },
476
+ {
477
+ "internalType": "address",
478
+ "name": "_user",
479
+ "type": "address"
480
+ }
481
+ ],
482
+ "name": "getUserPendingReward",
483
+ "outputs": [
484
+ {
485
+ "internalType": "uint256",
486
+ "name": "",
487
+ "type": "uint256"
488
+ }
489
+ ],
490
+ "stateMutability": "view",
491
+ "type": "function"
492
+ },
493
+ {
494
+ "inputs": [
495
+ {
496
+ "internalType": "address",
497
+ "name": "_user",
498
+ "type": "address"
499
+ }
500
+ ],
501
+ "name": "getUserPendingReward",
502
+ "outputs": [
503
+ {
504
+ "internalType": "uint256",
505
+ "name": "",
506
+ "type": "uint256"
507
+ }
508
+ ],
509
+ "stateMutability": "view",
510
+ "type": "function"
511
+ },
512
+ {
513
+ "inputs": [
514
+ {
515
+ "internalType": "address",
516
+ "name": "_user",
517
+ "type": "address"
518
+ }
519
+ ],
520
+ "name": "goodStakerInfo",
521
+ "outputs": [
522
+ {
523
+ "components": [
524
+ {
525
+ "internalType": "uint128",
526
+ "name": "amount",
527
+ "type": "uint128"
528
+ },
529
+ {
530
+ "internalType": "uint128",
531
+ "name": "rewardDebt",
532
+ "type": "uint128"
533
+ },
534
+ {
535
+ "internalType": "uint128",
536
+ "name": "rewardEarn",
537
+ "type": "uint128"
538
+ },
539
+ {
540
+ "internalType": "uint128",
541
+ "name": "rewardMinted",
542
+ "type": "uint128"
543
+ }
544
+ ],
545
+ "internalType": "struct MultiBaseGovernanceShareField.UserInfo",
546
+ "name": "",
547
+ "type": "tuple"
548
+ }
549
+ ],
550
+ "stateMutability": "view",
551
+ "type": "function"
552
+ },
553
+ {
554
+ "inputs": [
555
+ {
556
+ "internalType": "address",
557
+ "name": "spender",
558
+ "type": "address"
559
+ },
560
+ {
561
+ "internalType": "uint256",
562
+ "name": "addedValue",
563
+ "type": "uint256"
564
+ }
565
+ ],
566
+ "name": "increaseAllowance",
567
+ "outputs": [
568
+ {
569
+ "internalType": "bool",
570
+ "name": "",
571
+ "type": "bool"
572
+ }
573
+ ],
574
+ "stateMutability": "nonpayable",
575
+ "type": "function"
576
+ },
577
+ {
578
+ "inputs": [],
579
+ "name": "interestRatePerBlockX64",
580
+ "outputs": [
581
+ {
582
+ "internalType": "int128",
583
+ "name": "",
584
+ "type": "int128"
585
+ }
586
+ ],
587
+ "stateMutability": "view",
588
+ "type": "function"
589
+ },
590
+ {
591
+ "inputs": [
592
+ {
593
+ "internalType": "address",
594
+ "name": "",
595
+ "type": "address"
596
+ }
597
+ ],
598
+ "name": "lastRewardBlock",
599
+ "outputs": [
600
+ {
601
+ "internalType": "uint256",
602
+ "name": "",
603
+ "type": "uint256"
604
+ }
605
+ ],
606
+ "stateMutability": "view",
607
+ "type": "function"
608
+ },
609
+ {
610
+ "inputs": [],
611
+ "name": "lastUpdateBlock",
612
+ "outputs": [
613
+ {
614
+ "internalType": "uint128",
615
+ "name": "",
616
+ "type": "uint128"
617
+ }
618
+ ],
619
+ "stateMutability": "view",
620
+ "type": "function"
621
+ },
622
+ {
623
+ "inputs": [],
624
+ "name": "name",
625
+ "outputs": [
626
+ {
627
+ "internalType": "string",
628
+ "name": "",
629
+ "type": "string"
630
+ }
631
+ ],
632
+ "stateMutability": "view",
633
+ "type": "function"
634
+ },
635
+ {
636
+ "inputs": [],
637
+ "name": "nameService",
638
+ "outputs": [
639
+ {
640
+ "internalType": "contract INameService",
641
+ "name": "",
642
+ "type": "address"
643
+ }
644
+ ],
645
+ "stateMutability": "view",
646
+ "type": "function"
647
+ },
648
+ {
649
+ "inputs": [],
650
+ "name": "nativeToken",
651
+ "outputs": [
652
+ {
653
+ "internalType": "contract IGoodDollar",
654
+ "name": "",
655
+ "type": "address"
656
+ }
657
+ ],
658
+ "stateMutability": "view",
659
+ "type": "function"
660
+ },
661
+ {
662
+ "inputs": [],
663
+ "name": "numberOfBlocksPerYear",
664
+ "outputs": [
665
+ {
666
+ "internalType": "uint128",
667
+ "name": "",
668
+ "type": "uint128"
669
+ }
670
+ ],
671
+ "stateMutability": "view",
672
+ "type": "function"
673
+ },
674
+ {
675
+ "inputs": [],
676
+ "name": "principle",
677
+ "outputs": [
678
+ {
679
+ "internalType": "uint256",
680
+ "name": "",
681
+ "type": "uint256"
682
+ }
683
+ ],
684
+ "stateMutability": "view",
685
+ "type": "function"
686
+ },
687
+ {
688
+ "inputs": [],
689
+ "name": "rewardPerTokenStored",
690
+ "outputs": [
691
+ {
692
+ "internalType": "uint128",
693
+ "name": "",
694
+ "type": "uint128"
695
+ }
696
+ ],
697
+ "stateMutability": "view",
698
+ "type": "function"
699
+ },
700
+ {
701
+ "inputs": [
702
+ {
703
+ "internalType": "address",
704
+ "name": "",
705
+ "type": "address"
706
+ }
707
+ ],
708
+ "name": "rewardsMintedSoFar",
709
+ "outputs": [
710
+ {
711
+ "internalType": "uint256",
712
+ "name": "",
713
+ "type": "uint256"
714
+ }
715
+ ],
716
+ "stateMutability": "view",
717
+ "type": "function"
718
+ },
719
+ {
720
+ "inputs": [
721
+ {
722
+ "internalType": "address",
723
+ "name": "",
724
+ "type": "address"
725
+ }
726
+ ],
727
+ "name": "rewardsPerBlock",
728
+ "outputs": [
729
+ {
730
+ "internalType": "uint256",
731
+ "name": "",
732
+ "type": "uint256"
733
+ }
734
+ ],
735
+ "stateMutability": "view",
736
+ "type": "function"
737
+ },
738
+ {
739
+ "inputs": [
740
+ {
741
+ "internalType": "uint128",
742
+ "name": "_interestRatePerBlock",
743
+ "type": "uint128"
744
+ }
745
+ ],
746
+ "name": "setGdApy",
747
+ "outputs": [],
748
+ "stateMutability": "nonpayable",
749
+ "type": "function"
750
+ },
751
+ {
752
+ "inputs": [
753
+ {
754
+ "internalType": "uint256",
755
+ "name": "_monthlyAmount",
756
+ "type": "uint256"
757
+ }
758
+ ],
759
+ "name": "setMonthlyGOODRewards",
760
+ "outputs": [],
761
+ "stateMutability": "nonpayable",
762
+ "type": "function"
763
+ },
764
+ {
765
+ "inputs": [
766
+ {
767
+ "internalType": "uint256",
768
+ "name": "_amount",
769
+ "type": "uint256"
770
+ }
771
+ ],
772
+ "name": "stake",
773
+ "outputs": [],
774
+ "stateMutability": "nonpayable",
775
+ "type": "function"
776
+ },
777
+ {
778
+ "inputs": [
779
+ {
780
+ "internalType": "address",
781
+ "name": "",
782
+ "type": "address"
783
+ }
784
+ ],
785
+ "name": "stakersInfo",
786
+ "outputs": [
787
+ {
788
+ "internalType": "uint128",
789
+ "name": "reward",
790
+ "type": "uint128"
791
+ },
792
+ {
793
+ "internalType": "uint128",
794
+ "name": "balance",
795
+ "type": "uint128"
796
+ },
797
+ {
798
+ "internalType": "uint128",
799
+ "name": "rewardPerTokenPaid",
800
+ "type": "uint128"
801
+ },
802
+ {
803
+ "internalType": "uint128",
804
+ "name": "rewardsMinted",
805
+ "type": "uint128"
806
+ }
807
+ ],
808
+ "stateMutability": "view",
809
+ "type": "function"
810
+ },
811
+ {
812
+ "inputs": [],
813
+ "name": "symbol",
814
+ "outputs": [
815
+ {
816
+ "internalType": "string",
817
+ "name": "",
818
+ "type": "string"
819
+ }
820
+ ],
821
+ "stateMutability": "view",
822
+ "type": "function"
823
+ },
824
+ {
825
+ "inputs": [
826
+ {
827
+ "internalType": "address",
828
+ "name": "",
829
+ "type": "address"
830
+ }
831
+ ],
832
+ "name": "totalRewardsAccumulated",
833
+ "outputs": [
834
+ {
835
+ "internalType": "uint256",
836
+ "name": "",
837
+ "type": "uint256"
838
+ }
839
+ ],
840
+ "stateMutability": "view",
841
+ "type": "function"
842
+ },
843
+ {
844
+ "inputs": [
845
+ {
846
+ "internalType": "address",
847
+ "name": "_contract",
848
+ "type": "address"
849
+ }
850
+ ],
851
+ "name": "totalRewardsPerShare",
852
+ "outputs": [
853
+ {
854
+ "internalType": "uint256",
855
+ "name": "",
856
+ "type": "uint256"
857
+ }
858
+ ],
859
+ "stateMutability": "view",
860
+ "type": "function"
861
+ },
862
+ {
863
+ "inputs": [],
864
+ "name": "totalRewardsPerShare",
865
+ "outputs": [
866
+ {
867
+ "internalType": "uint256",
868
+ "name": "",
869
+ "type": "uint256"
870
+ }
871
+ ],
872
+ "stateMutability": "view",
873
+ "type": "function"
874
+ },
875
+ {
876
+ "inputs": [],
877
+ "name": "totalStaked",
878
+ "outputs": [
879
+ {
880
+ "internalType": "uint128",
881
+ "name": "",
882
+ "type": "uint128"
883
+ }
884
+ ],
885
+ "stateMutability": "view",
886
+ "type": "function"
887
+ },
888
+ {
889
+ "inputs": [],
890
+ "name": "totalSupply",
891
+ "outputs": [
892
+ {
893
+ "internalType": "uint256",
894
+ "name": "",
895
+ "type": "uint256"
896
+ }
897
+ ],
898
+ "stateMutability": "view",
899
+ "type": "function"
900
+ },
901
+ {
902
+ "inputs": [
903
+ {
904
+ "internalType": "address",
905
+ "name": "recipient",
906
+ "type": "address"
907
+ },
908
+ {
909
+ "internalType": "uint256",
910
+ "name": "amount",
911
+ "type": "uint256"
912
+ }
913
+ ],
914
+ "name": "transfer",
915
+ "outputs": [
916
+ {
917
+ "internalType": "bool",
918
+ "name": "",
919
+ "type": "bool"
920
+ }
921
+ ],
922
+ "stateMutability": "nonpayable",
923
+ "type": "function"
924
+ },
925
+ {
926
+ "inputs": [
927
+ {
928
+ "internalType": "address",
929
+ "name": "sender",
930
+ "type": "address"
931
+ },
932
+ {
933
+ "internalType": "address",
934
+ "name": "recipient",
935
+ "type": "address"
936
+ },
937
+ {
938
+ "internalType": "uint256",
939
+ "name": "amount",
940
+ "type": "uint256"
941
+ }
942
+ ],
943
+ "name": "transferFrom",
944
+ "outputs": [
945
+ {
946
+ "internalType": "bool",
947
+ "name": "",
948
+ "type": "bool"
949
+ }
950
+ ],
951
+ "stateMutability": "nonpayable",
952
+ "type": "function"
953
+ },
954
+ {
955
+ "inputs": [],
956
+ "name": "updateAvatar",
957
+ "outputs": [],
958
+ "stateMutability": "nonpayable",
959
+ "type": "function"
960
+ },
961
+ {
962
+ "inputs": [
963
+ {
964
+ "internalType": "address",
965
+ "name": "newImplementation",
966
+ "type": "address"
967
+ }
968
+ ],
969
+ "name": "upgradeTo",
970
+ "outputs": [],
971
+ "stateMutability": "nonpayable",
972
+ "type": "function"
973
+ },
974
+ {
975
+ "inputs": [
976
+ {
977
+ "internalType": "address",
978
+ "name": "newImplementation",
979
+ "type": "address"
980
+ },
981
+ {
982
+ "internalType": "bytes",
983
+ "name": "data",
984
+ "type": "bytes"
985
+ }
986
+ ],
987
+ "name": "upgradeToAndCall",
988
+ "outputs": [],
989
+ "stateMutability": "payable",
990
+ "type": "function"
991
+ },
992
+ {
993
+ "inputs": [],
994
+ "name": "withdrawRewards",
995
+ "outputs": [
996
+ {
997
+ "internalType": "uint256",
998
+ "name": "goodRewards",
999
+ "type": "uint256"
1000
+ },
1001
+ {
1002
+ "internalType": "uint256",
1003
+ "name": "gdRewards",
1004
+ "type": "uint256"
1005
+ }
1006
+ ],
1007
+ "stateMutability": "nonpayable",
1008
+ "type": "function"
1009
+ },
1010
+ {
1011
+ "inputs": [
1012
+ {
1013
+ "internalType": "uint256",
1014
+ "name": "_amount",
1015
+ "type": "uint256"
1016
+ }
1017
+ ],
1018
+ "name": "withdrawStake",
1019
+ "outputs": [],
1020
+ "stateMutability": "nonpayable",
1021
+ "type": "function"
1022
+ }
1023
+ ],
1024
+ "bytecode": "0x60a06040523060601b6080523480156200001857600080fd5b5060405162004859380380620048598339810160408190526200003b9162000e14565b816200004781620002ab565b50620000538362000305565b6101045460405163bf40fac160e01b815260206004820152600f60248201526e26b4b73a213ab9372bb930b83832b960891b60448201526000916001600160a01b03169063bf40fac19060640160206040518083038186803b158015620000b957600080fd5b505afa158015620000ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f4919062000e60565b6001600160a01b03161415620001515760405162461bcd60e51b815260206004820152601660248201527f72657761726473206d696e746572206e6f74207365740000000000000000000060448201526064015b60405180910390fd5b61016f80546001600160801b0319166001600160801b0383161790556101045460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526001600160a01b039091169063bf40fac19060640160206040518083038186803b158015620001cd57600080fd5b505afa158015620001e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000208919062000e60565b61016e80546001600160a01b0319166001600160a01b0392909216919091179055604080518082018252600a815269472420536176696e677360b01b602080830191909152825180840190935260048352631cdd91c960e21b9083015262000270916200032e565b6200027a620003b8565b62000291906a01a784379d99db4200000062000eac565b306000908152606a60205260409020555062001012915050565b6000620002b881620003e4565b620002e0826001600160801b0316670de0b6b3a7640000620004c160201b620016311760201c565b61016d80546001600160801b0319166001600160801b03929092169190911790555050565b61010480546001600160a01b0319166001600160a01b0383161790556200032b62000505565b50565b600054610100900460ff168062000348575060005460ff16155b620003675760405162461bcd60e51b8152600401620001489062000ec3565b600054610100900460ff161580156200038a576000805461ffff19166101011790555b6200039462000655565b620003a08383620006c6565b8015620003b3576000805461ff00191690555b505050565b61016f54600090620003d690600c906001600160801b031662000f11565b6001600160801b0316905090565b620003ee62000765565b436001600160801b039081169116600160801b026001600160801b0319161761016a556001600160a01b038116156200032b576200042c816200087e565b6001600160a01b0382166000908152610169602052604081208054909190620004609084906001600160801b031662000f3a565b82546001600160801b039182166101009390930a92830292820219169190911790915561016a546001600160a01b03841660009081526101696020526040902060010180546001600160801b031916600160801b9092049092161790555050565b600081620004ce57600080fd5b6000620004dc848462000906565b905060016001607f1b036001600160801b0382161115620004fc57600080fd5b90505b92915050565b6101045460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac19060640160206040518083038186803b1580156200056557600080fd5b505afa1580156200057a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005a0919062000e60565b61010280546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de691600480820192602092909190829003018186803b158015620005f757600080fd5b505afa1580156200060c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000632919062000e60565b61010380546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff16806200066f575060005460ff16155b6200068e5760405162461bcd60e51b8152600401620001489062000ec3565b600054610100900460ff16158015620006b1576000805461ffff19166101011790555b80156200032b576000805461ff001916905550565b600054610100900460ff1680620006e0575060005460ff16155b620006ff5760405162461bcd60e51b8152600401620001489062000ec3565b600054610100900460ff1615801562000722576000805461ffff19166101011790555b82516200073790603690602086019062000d3b565b5081516200074d90603790602085019062000d3b565b508015620003b3576000805461ff0019169055505050565b61016b546000906001600160801b031662000792575061016a54600160801b90046001600160801b031690565b61016a54600090620007cd90620007b3906001600160801b03164362000f68565b61016d54600f0b9062000a81602090811b6200166817901c565b90506000620007f161016c5483600f0b62000cce60201b620018811790919060201c565b90508061016c600082825462000808919062000f82565b909155505061016b5462000826906001600160801b03168262000eac565b61016a80546010906200084b908490600160801b90046001600160801b031662000f3a565b92506101000a8154816001600160801b0302191690836001600160801b0316021790556001600160801b03169250505090565b6001600160a01b03811660009081526101696020526040812060010154670de0b6b3a7640000906001600160801b0316620008b862000765565b620008c4919062000f68565b6001600160a01b03841660009081526101696020526040902054620008fa9190600160801b90046001600160801b031662000f9d565b620004ff919062000eac565b6000816200091357600080fd5b60006001600160c01b038411620009435782604085901b816200093a576200093a62000e80565b04905062000a6c565b60c084811c64010000000081106200095d576020918201911c5b62010000811062000970576010918201911c5b610100811062000982576008918201911c5b6010811062000993576004918201911c5b60048110620009a4576002918201911c5b60028110620009b4576001820191505b60bf820360018603901c6001018260ff0387901b81620009d857620009d862000e80565b0492506001600160801b03831115620009f057600080fd5b608085901c83026001600160801b038616840260c088901c604089901b8281101562000a1d576001820391505b608084901b9290038281101562000a35576001820391505b829003608084901c821462000a4e5762000a4e62000fbf565b88818162000a605762000a6062000e80565b04870196505050505050505b6001600160801b03811115620004fc57600080fd5b600080600084600f0b12801562000a9b5750826001166001145b905060008085600f0b1262000ab1578462000ab6565b846000035b6001600160801b03169050600160801b68010000000000000000821162000b5857603f82901b91505b841562000b4f57600185161562000af6578102607f1c5b908002607f1c90600285161562000b0d578102607f1c5b908002607f1c90600485161562000b24578102607f1c5b908002607f1c90600885161562000b3b578102607f1c5b60049490941c93908002607f1c9062000adf565b60401c62000c84565b603f6c0100000000000000000000000083101562000b7c5760209290921b91601f19015b600160701b83101562000b955760109290921b91600f19015b600160781b83101562000bae5760089290921b91600719015b6001607c1b83101562000bc75760049290921b91600319015b6001607e1b83101562000be05760029290921b91600119015b6001607f1b83101562000bf95760019290921b91600019015b60005b861562000c6c576040821062000c1157600080fd5b600187161562000c3957918302607f1c918101600160801b83111562000c3957600192831c92015b928002607f1c9260019190911b90600160801b841062000c5f57600193841c9391909101905b600187901c965062000bfc565b6040811062000c7a57600080fd5b6040039190911c90505b60008362000c93578162000c98565b816000035b905060016001607f1b0319811280159062000cba575060016001607f1b038113155b62000cc457600080fd5b9695505050505050565b60008162000cdf57506000620004ff565b600083600f0b121562000cf157600080fd5b600f83900b6001600160801b038316810260401c90608084901c026001600160c01b0381111562000d2157600080fd5b60401b811981111562000d3357600080fd5b019392505050565b82805462000d499062000fd5565b90600052602060002090601f01602090048101928262000d6d576000855562000db8565b82601f1062000d8857805160ff191683800117855562000db8565b8280016001018555821562000db8579182015b8281111562000db857825182559160200191906001019062000d9b565b5062000dc692915062000dca565b5090565b5b8082111562000dc6576000815560010162000dcb565b6001600160a01b03811681146200032b57600080fd5b80516001600160801b038116811462000e0f57600080fd5b919050565b60008060006060848603121562000e2a57600080fd5b835162000e378162000de1565b925062000e476020850162000df7565b915062000e576040850162000df7565b90509250925092565b60006020828403121562000e7357600080fd5b8151620004fc8162000de1565b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008262000ebe5762000ebe62000e80565b500490565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b60006001600160801b038381168062000f2e5762000f2e62000e80565b92169190910492915050565b60006001600160801b0382811684821680830382111562000f5f5762000f5f62000e96565b01949350505050565b60008282101562000f7d5762000f7d62000e96565b500390565b6000821982111562000f985762000f9862000e96565b500190565b600081600019048311821515161562000fba5762000fba62000e96565b500290565b634e487b7160e01b600052600160045260246000fd5b600181811c9082168062000fea57607f821691505b602082108114156200100c57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160601c6138136200104660003960008181610f6a01528181610faa015281816111bc01526111fc01526138136000f3fe60806040526004361061020c5760003560e01c80628cc26214610211578063016a42841461024457806306fdde031461025b578063095ea7b31461027d5780630c1cd7f3146102ad57806318160ddd146102cf5780631b3c90a8146102e4578063213b329e146102fb57806322dec37b1461031057806323b872dd1461033d57806325d5971f1461035d5780632e42a8961461037d578063313ce5671461040f57806331903da11461042b5780633659cfe6146104585780633950935114610478578063399080ec146104985780633d9a12cc146104cd5780633e6326fc146104ed5780634162169f1461051b57806347b3e7e81461053c5780634f1db7f6146105695780634f1ef286146105895780635aef7de61461059c5780636eb62984146105bd57806370a08231146105dd578063777d6641146106135780637bcbb9ff14610641578063817b1cd214610661578063846141b31461069a57806395d89b41146106c7578063a218141b146106dc578063a457c2d7146106fd578063a694fc3a1461071d578063a9059cbb1461073d578063aaf5eb681461075d578063aba78c1614610779578063b20b9979146107ce578063b86543ba146107ee578063bf8e9b6e1461080f578063c671062914610824578063c7b8981c14610844578063dd62ed3e14610859578063df136d651461089f578063e1758bd8146108c7578063ebe91644146108dc575b600080fd5b34801561021d57600080fd5b5061023161022c366004613231565b6109ca565b6040519081526020015b60405180910390f35b34801561025057600080fd5b5061023161016c5481565b34801561026757600080fd5b50610270610a50565b60405161023b919061327a565b34801561028957600080fd5b5061029d6102983660046132ad565b610ae2565b604051901515815260200161023b565b3480156102b957600080fd5b50306000908152606a6020526040902054610231565b3480156102db57600080fd5b50603554610231565b3480156102f057600080fd5b506102f9610af8565b005b34801561030757600080fd5b50610231610c40565b34801561031c57600080fd5b5061023161032b366004613231565b60676020526000908152604090205481565b34801561034957600080fd5b5061029d6103583660046132d9565b610c6a565b34801561036957600080fd5b506102f961037836600461331a565b610d1b565b34801561038957600080fd5b506103dc610398366004613333565b606b602090815260009283526040808420909152908252902080546001909101546001600160801b0380831692600160801b90819004821692808316929190041684565b604080516001600160801b039586168152938516602085015291841691830191909152909116606082015260800161023b565b34801561041b57600080fd5b506040516002815260200161023b565b34801561043757600080fd5b50610231610446366004613231565b60686020526000908152604090205481565b34801561046457600080fd5b506102f9610473366004613231565b610f5f565b34801561048457600080fd5b5061029d6104933660046132ad565b611028565b3480156104a457600080fd5b506104b86104b3366004613231565b611064565b6040805192835260208301919091520161023b565b3480156104d957600080fd5b506102316104e836600461336c565b61107a565b3480156104f957600080fd5b506101045461050e906001600160a01b031681565b60405161023b91906133b6565b34801561052757600080fd5b506101025461050e906001600160a01b031681565b34801561054857600080fd5b50610231610557366004613231565b606a6020526000908152604090205481565b34801561057557600080fd5b506104b8610584366004613333565b61116e565b6102f96105973660046133e0565b6111b1565b3480156105a857600080fd5b506101035461050e906001600160a01b031681565b3480156105c957600080fd5b506102f96105d836600461331a565b61126b565b3480156105e957600080fd5b506102316105f8366004613231565b6001600160a01b031660009081526033602052604090205490565b34801561061f57600080fd5b5061016d5461062e90600f0b81565b604051600f9190910b815260200161023b565b34801561064d57600080fd5b5061023161065c366004613231565b61127d565b34801561066d57600080fd5b5061016b54610682906001600160801b031681565b6040516001600160801b03909116815260200161023b565b3480156106a657600080fd5b506102316106b5366004613231565b60696020526000908152604090205481565b3480156106d357600080fd5b50610270611298565b3480156106e857600080fd5b5061016a54610682906001600160801b031681565b34801561070957600080fd5b5061029d6107183660046132ad565b6112a7565b34801561072957600080fd5b506102f961073836600461331a565b611340565b34801561074957600080fd5b5061029d6107583660046132ad565b61150f565b34801561076957600080fd5b50610682670de0b6b3a764000081565b34801561078557600080fd5b506103dc610794366004613231565b61016960205260009081526040902080546001909101546001600160801b0380831692600160801b90819004821692808316929190041684565b3480156107da57600080fd5b506102f96107e93660046134a3565b61151c565b3480156107fa57600080fd5b5061016f54610682906001600160801b031681565b34801561081b57600080fd5b5061023161152d565b34801561083057600080fd5b5061023161083f366004613231565b61153d565b34801561085057600080fd5b506104b861154c565b34801561086557600080fd5b50610231610874366004613333565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b3480156108ab57600080fd5b5061016a5461068290600160801b90046001600160801b031681565b3480156108d357600080fd5b5061050e611599565b3480156108e857600080fd5b506109876108f7366004613231565b60408051608081018252600080825260208201819052918101829052606081019190915250306000908152606b602090815260408083206001600160a01b0394909416835292815290829020825160808101845281546001600160801b038082168352600160801b9182900481169483019490945260019092015480841694820194909452920416606082015290565b60405161023b919081516001600160801b039081168252602080840151821690830152604080840151821690830152606092830151169181019190915260800190565b6001600160a01b03811660009081526101696020526040812060010154670de0b6b3a7640000906001600160801b0316610a026118e9565b610a0c91906134e2565b6001600160a01b03841660009081526101696020526040902054610a409190600160801b90046001600160801b03166134f9565b610a4a919061352e565b92915050565b606060368054610a5f90613542565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8b90613542565b8015610ad85780601f10610aad57610100808354040283529160200191610ad8565b820191906000526020600020905b815481529060010190602001808311610abb57829003601f168201915b5050505050905090565b6000610aef3384846119e4565b50600192915050565b6101045460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac19060640160206040518083038186803b158015610b5757600080fd5b505afa158015610b6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8f9190613577565b61010280546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de691600480820192602092909190829003018186803b158015610be557600080fd5b505afa158015610bf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1d9190613577565b61010380546001600160a01b0319166001600160a01b0392909216919091179055565b61016f54600090610c5c90600c906001600160801b0316613594565b6001600160801b0316905090565b6000610c77848484611b08565b6001600160a01b038416600090815260346020908152604080832033845290915290205482811015610d015760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610d0e85338584036119e4565b60019150505b9392505050565b6002610137541415610d3f5760405162461bcd60e51b8152600401610cf8906135ba565b6002610137556000610d51303361116e565b50905081610d5d578091505b60008211610dad5760405162461bcd60e51b815260206004820152601f60248201527f53686f756c6420776974686472617720706f73697469766520616d6f756e74006044820152606401610cf8565b81811015610df75760405162461bcd60e51b8152602060048201526017602482015276139bdd08195b9bdd59da081d1bdad95b881cdd185ad959604a1b6044820152606401610cf8565b81610e023384611b97565b610e10303385600043611cd3565b50610e1a33611d70565b50610e253382611eda565b3360009081526101696020526040902054600160801b90046001600160801b0316610e5557610e5333612004565b505b61016e546001600160a01b031663a9059cbb33836040518363ffffffff1660e01b8152600401610e869291906135f1565b602060405180830381600087803b158015610ea057600080fd5b505af1158015610eb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed8919061360a565b610f1f5760405162461bcd60e51b81526020600482015260186024820152771dda5d1a191c985dc81d1c985b9cd9995c8819985a5b195960421b6044820152606401610cf8565b60405183815233907f1248d48e2de900a1010c7fce73506969ecec243600bfc08b641b158f26d857cd9060200160405180910390a2505060016101375550565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610fa85760405162461bcd60e51b8152600401610cf89061362c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610fda612155565b6001600160a01b0316146110005760405162461bcd60e51b8152600401610cf890613666565b61100981612171565b6040805160008082526020820190925261102591839190612179565b50565b3360008181526034602090815260408083206001600160a01b03871684529091528120549091610aef91859061105f9086906136a0565b6119e4565b600080611071308461116e565b91509150915091565b6001600160a01b038085166000818152606b602090815260408083209486168352938152838220845160808101865281546001600160801b038082168352600160801b918290048116838601526001909301548084168389015204909116606082015292825260659052918220548290156111645760006110fc8888886122c0565b91505082604001516001600160801b0316915082602001516001600160801b0316676765c793fa10079d601b1b8285600001516001600160801b031661114291906134f9565b61114c919061352e565b61115691906134e2565b61116090836136a0565b9150505b9695505050505050565b6001600160a01b039182166000818152606b60209081526040808320949095168252928352838120549181526065909252919020546001600160801b0390911691565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156111fa5760405162461bcd60e51b8152600401610cf89061362c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661122c612155565b6001600160a01b0316146112525760405162461bcd60e51b8152600401610cf890613666565b61125b82612171565b61126782826001612179565b5050565b6112736123b8565b611025308261248d565b6001600160a01b031660009081526066602052604090205490565b606060378054610a5f90613542565b3360009081526034602090815260408083206001600160a01b0386168452909152812054828110156113295760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610cf8565b61133633858584036119e4565b5060019392505050565b600081116113a25760405162461bcd60e51b815260206004820152602960248201527f596f75206e65656420746f207374616b65206120706f73697469766520746f6b604482015268195b88185b5bdd5b9d60ba1b6064820152608401610cf8565b61016e546001600160a01b03166323b872dd336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101849052606401602060405180830381600087803b15801561140357600080fd5b505af1158015611417573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143b919061360a565b6114aa5760405162461bcd60e51b815260206004820152603a60248201527f7472616e7366657246726f6d206661696c65642c206d616b652073757265207960448201527937ba9030b8383937bb32b2103a37b5b2b7103a3930b739b332b960311b6064820152608401610cf8565b6114b83033836000436124bf565b506114c33382612532565b6114cc33611d70565b506114d733826125ff565b60405181815233907f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d9060200160405180910390a250565b6000610aef338484611b08565b6115246123b8565b611025816126fd565b60006115383061127d565b905090565b6000610a4a306000438561107a565b60008060026101375414156115735760405162461bcd60e51b8152600401610cf8906135ba565b60026101375561158233611d70565b915061158d33612004565b60016101375591929050565b6101045460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac19060640160206040518083038186803b1580156115f957600080fd5b505afa15801561160d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115389190613577565b60008161163d57600080fd5b60006116498484612748565b905060016001607f1b036001600160801b0382161115610d1457600080fd5b600080600084600f0b1280156116815750826001166001145b905060008085600f0b12611695578461169a565b846000035b6001600160801b03169050600160801b600160401b821161172f57603f82901b91505b84156117275760018516156116d2578102607f1c5b908002607f1c9060028516156116e8578102607f1c5b908002607f1c9060048516156116fe578102607f1c5b908002607f1c906008851615611714578102607f1c5b60049490941c93908002607f1c906116bd565b60401c611845565b603f600160601b8310156117495760209290921b91601f19015b600160701b8310156117615760109290921b91600f19015b600160781b8310156117795760089290921b91600719015b6001607c1b8310156117915760049290921b91600319015b6001607e1b8310156117a95760029290921b91600119015b6001607f1b8310156117c15760019290921b91600019015b60005b861561182e57604082106117d757600080fd5b60018716156117fd57918302607f1c918101600160801b8311156117fd57600192831c92015b928002607f1c9260019190911b90600160801b841061182257600193841c9391909101905b600187901c96506117c4565b6040811061183b57600080fd5b6040039190911c90505b6000836118525781611857565b816000035b905060016001607f1b03198112801590611878575060016001607f1b038113155b61116457600080fd5b60008161189057506000610a4a565b600083600f0b12156118a157600080fd5b600f83900b6001600160801b038316810260401c90608084901c026001600160c01b038111156118d057600080fd5b60401b81198111156118e157600080fd5b019392505050565b61016b546000906001600160801b0316611915575061016a54600160801b90046001600160801b031690565b61016a5460009061194090611933906001600160801b0316436134e2565b61016d54600f0b90611668565b9050600061195d61016c5483600f0b61188190919063ffffffff16565b90508061016c600082825461197291906136a0565b909155505061016b5461198e906001600160801b03168261352e565b61016a80546010906119b1908490600160801b90046001600160801b03166136b8565b92506101000a8154816001600160801b0302191690836001600160801b0316021790556001600160801b03169250505090565b6001600160a01b038316611a465760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cf8565b6001600160a01b038216611aa75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cf8565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b611b16308483600043611cd3565b50611b218382611eda565b611b2f3083836000436124bf565b50611b3a82826125ff565b611b4383611d70565b50611b4d82611d70565b506001600160a01b03831660009081526101696020526040902054600160801b90046001600160801b0316611b8757611b8583612004565b505b611b928383836128a9565b505050565b6001600160a01b038216611bf75760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610cf8565b6001600160a01b03821660009081526033602052604090205481811015611c6b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610cf8565b6001600160a01b0383166000908152603360205260408120838303905560358054849290611c9a9084906134e2565b90915550506040518281526000906001600160a01b038516906000805160206137be8339815191529060200160405180910390a3505050565b6000611ce0868484612a67565b6001600160a01b038087166000908152606b6020908152604080832093891683529290522054611d279087908790611d229088906001600160801b03166134e2565b612ae2565b6001600160a01b038616600090815260656020526040902054611d4b9085906134e2565b6001600160a01b03871660009081526065602052604090205550600195945050505050565b600080611d803084600043612c5e565b90508015610a4a576101045460405163bf40fac160e01b815260206004820152600a6024820152692922a82aaa20aa24a7a760b11b60448201526001600160a01b039091169063bf40fac19060640160206040518083038186803b158015611de757600080fd5b505afa158015611dfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1f9190613577565b6001600160a01b03166340c10f1984836040518363ffffffff1660e01b8152600401611e4c9291906135f1565b602060405180830381600087803b158015611e6657600080fd5b505af1158015611e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9e91906136e3565b5060405181815233907f43848d0574703c28d68ae8958e0571521618f60c4bcacfb094cff2156eaae0f19060200160405180910390a292915050565b81611ee481612d93565b60008211611f285760405162461bcd60e51b8152602060048201526011602482015270043616e6e6f74207769746864726177203607c1b6044820152606401610cf8565b61016b8054839190600090611f479084906001600160801b03166136fc565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550670de0b6b3a76400006001600160801b031682611f8891906134f9565b61016c6000828254611f9a91906134e2565b90915550506001600160a01b0383166000908152610169602052604090208054839190601090611fdb908490600160801b90046001600160801b03166136fc565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550505050565b60008061201083612e69565b6101045460405163bf40fac160e01b815260206004820152600f60248201526e26b4b73a213ab9372bb930b83832b960891b60448201529192506001600160a01b03169063bf40fac19060640160206040518083038186803b15801561207557600080fd5b505afa158015612089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ad9190613577565b6001600160a01b03166317eebf2184836040518363ffffffff1660e01b81526004016120da9291906135f1565b602060405180830381600087803b1580156120f457600080fd5b505af1925050508015612124575060408051601f3d908101601f19168201909252612121918101906136e3565b60015b6121315760009150612134565b91505b8082101561214f5761214f8361214a84846134e2565b612f28565b50919050565b600080516020613777833981519152546001600160a01b031690565b6110256123b8565b6000612183612155565b905061218e84613025565b60008351118061219b5750815b156121ac576121aa84846130b8565b505b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143805460ff166122b957805460ff191660011781556040516122279086906121f89085906024016133b6565b60408051601f198184030181529190526020810180516001600160e01b0316631b2ce7f360e11b1790526130b8565b50805460ff19168155612238612155565b6001600160a01b0316826001600160a01b0316146122b05760405162461bcd60e51b815260206004820152602f60248201527f45524331393637557067726164653a207570677261646520627265616b73206660448201526e75727468657220757067726164657360881b6064820152608401610cf8565b6122b9856131a3565b5050505050565b6001600160a01b0383166000908152606660209081526040808320546069909252909120549083821080156122f55750834310155b6122ff5781612301565b835b915060008343116123125743612314565b835b9050848110806123245750838310155b1561232f57506123b0565b600061233b84836134e2565b6001600160a01b0388166000908152606a60205260408120549192509061236290836134f9565b6001600160a01b03891660009081526065602052604090205490915061239382676765c793fa10079d601b1b6134f9565b61239d919061352e565b6123a790856136a0565b93508294505050505b935093915050565b6101025460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de6916004808301926020929190829003018186803b1580156123fd57600080fd5b505afa158015612411573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124359190613577565b6001600160a01b03161461248b5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f646044820152606401610cf8565b565b612495610c40565b61249f908261352e565b6001600160a01b039092166000908152606a602052604090209190915550565b60006124cc868484612a67565b6001600160a01b038087166000908152606b602090815260408083209389168352929052205461250e9087908790611d229088906001600160801b03166136a0565b6001600160a01b038616600090815260656020526040902054611d4b9085906136a0565b6001600160a01b0382166125885760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610cf8565b806035600082825461259a91906136a0565b90915550506001600160a01b038216600090815260336020526040812080548392906125c79084906136a0565b90915550506040518181526001600160a01b038316906000906000805160206137be8339815191529060200160405180910390a35050565b8161260981612d93565b6000821161264a5760405162461bcd60e51b815260206004820152600e60248201526d043616e6e6f74207374616b6520360941b6044820152606401610cf8565b61016b80548391906000906126699084906001600160801b03166136b8565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550670de0b6b3a76400006001600160801b0316826126aa91906134f9565b61016c60008282546126bc91906136a0565b90915550506001600160a01b0383166000908152610169602052604090208054839190601090611fdb908490600160801b90046001600160801b03166136b8565b600061270881612d93565b612723826001600160801b0316670de0b6b3a7640000611631565b61016d80546001600160801b0319166001600160801b03929092169190911790555050565b60008161275457600080fd5b60006001600160c01b03841161277f5782604085901b8161277757612777613518565b049050612895565b60c084811c600160201b8110612797576020918201911c5b6201000081106127a9576010918201911c5b61010081106127ba576008918201911c5b601081106127ca576004918201911c5b600481106127da576002918201911c5b600281106127e9576001820191505b60bf820360018603901c6001018260ff0387901b8161280a5761280a613518565b0492506001600160801b0383111561282157600080fd5b608085901c83026001600160801b038616840260c088901c604089901b8281101561284d576001820391505b608084901b92900382811015612864576001820391505b829003608084901c821461287a5761287a613724565b88818161288957612889613518565b04870196505050505050505b6001600160801b03811115610d1457600080fd5b6001600160a01b03831661290d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cf8565b6001600160a01b03821661296f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cf8565b6001600160a01b038316600090815260336020526040902054818110156129e75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610cf8565b6001600160a01b03808516600090815260336020526040808220858503905591851681529081208054849290612a1e9084906136a0565b92505081905550826001600160a01b0316846001600160a01b03166000805160206137be83398151915284604051612a5891815260200190565b60405180910390a35b50505050565b6001600160a01b038316600090815260656020526040902054612aa25750506001600160a01b03166000908152606960205260409020439055565b600080612ab08585856122c0565b6001600160a01b0390961660009081526066602090815260408083209890985560699052959095209490945550505050565b6001600160a01b038084166000908152606b6020908152604080832093861683529290522080546001600160801b031615612bee5780546001600160a01b03851660009081526066602052604081205490916001600160801b03600160801b8204811692676765c793fa10079d601b1b92612b5d92166134f9565b612b67919061352e565b612b7191906134e2565b6001830154909150612b8d9082906001600160801b03166136b8565b6001830180546001600160801b0319166001600160801b03929092169190911790556001600160a01b038516600090815260686020526040902054612bd39082906136a0565b6001600160a01b038616600090815260686020526040902055505b80546001600160801b0319166001600160801b0383161781556001600160a01b038416600090815260666020526040902054676765c793fa10079d601b1b90612c3790846134f9565b612c41919061352e565b81546001600160801b03918216600160801b029116179055505050565b6000612c6b858484612a67565b6001600160a01b038086166000908152606b6020908152604080832093881683529290522054612ca790869086906001600160801b0316612ae2565b6001600160a01b038581166000908152606b6020908152604080832093881683529290522060010180546001600160801b038082169283929091601091612cf7918591600160801b9004166136b8565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b038881166000818152606b60209081526040808320948c16835293815283822060010180546001600160801b031916905591815260679091522054612d679250908316906136a0565b6001600160a01b0387166000908152606760205260409020556001600160801b03169050949350505050565b612d9b6118e9565b436001600160801b039081169116600160801b026001600160801b0319161761016a556001600160a01b0381161561102557612dd6816109ca565b6001600160a01b0382166000908152610169602052604081208054909190612e089084906001600160801b03166136b8565b82546001600160801b039182166101009390930a92830292820219169190911790915561016a546001600160a01b03841660009081526101696020526040902060010180546001600160801b031916600160801b9092049092161790555050565b600081612e7581612d93565b6001600160a01b03831660009081526101696020526040902080546001600160801b031981168255600190910180546001600160801b0392831694508492601091612ec9918591600160801b9004166136b8565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550670de0b6b3a76400006001600160801b031682612f0a91906134f9565b61016c6000828254612f1c91906134e2565b90915550919392505050565b6001600160a01b0382166000908152610169602052604081208054839290612f5a9084906001600160801b03166136b8565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550806101696000846001600160a01b03166001600160a01b0316815260200190815260200160002060010160108282829054906101000a90046001600160801b0316612fc991906136fc565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550670de0b6b3a76400006001600160801b03168161300a91906134f9565b61016c600082825461301c91906136a0565b90915550505050565b803b6130895760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610cf8565b60008051602061377783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060823b6131175760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610cf8565b600080846001600160a01b031684604051613132919061373a565b600060405180830381855af49150503d806000811461316d576040519150601f19603f3d011682016040523d82523d6000602084013e613172565b606091505b509150915061319a8282604051806060016040528060278152602001613797602791396131e3565b95945050505050565b6131ac81613025565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606083156131f2575081610d14565b8251156132025782518084602001fd5b8160405162461bcd60e51b8152600401610cf8919061327a565b6001600160a01b038116811461102557600080fd5b60006020828403121561324357600080fd5b8135610d148161321c565b60005b83811015613269578181015183820152602001613251565b83811115612a615750506000910152565b602081526000825180602084015261329981604085016020870161324e565b601f01601f19169190910160400192915050565b600080604083850312156132c057600080fd5b82356132cb8161321c565b946020939093013593505050565b6000806000606084860312156132ee57600080fd5b83356132f98161321c565b925060208401356133098161321c565b929592945050506040919091013590565b60006020828403121561332c57600080fd5b5035919050565b6000806040838503121561334657600080fd5b82356133518161321c565b915060208301356133618161321c565b809150509250929050565b6000806000806080858703121561338257600080fd5b843561338d8161321c565b9350602085013592506040850135915060608501356133ab8161321c565b939692955090935050565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156133f357600080fd5b82356133fe8161321c565b915060208301356001600160401b038082111561341a57600080fd5b818501915085601f83011261342e57600080fd5b813581811115613440576134406133ca565b604051601f8201601f19908116603f01168101908382118183101715613468576134686133ca565b8160405282815288602084870101111561348157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156134b557600080fd5b81356001600160801b0381168114610d1457600080fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156134f4576134f46134cc565b500390565b6000816000190483118215151615613513576135136134cc565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261353d5761353d613518565b500490565b600181811c9082168061355657607f821691505b6020821081141561214f57634e487b7160e01b600052602260045260246000fd5b60006020828403121561358957600080fd5b8151610d148161321c565b60006001600160801b03838116806135ae576135ae613518565b92169190910492915050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b60006020828403121561361c57600080fd5b81518015158114610d1457600080fd5b6020808252602c9082015260008051602061375783398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602061375783398151915260408201526b6163746976652070726f787960a01b606082015260800190565b600082198211156136b3576136b36134cc565b500190565b60006001600160801b038281168482168083038211156136da576136da6134cc565b01949350505050565b6000602082840312156136f557600080fd5b5051919050565b60006001600160801b038381169083168181101561371c5761371c6134cc565b039392505050565b634e487b7160e01b600052600160045260246000fd5b6000825161374c81846020870161324e565b919091019291505056fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b18bc0c5d411e9b4341729578cc19a45f6d073dfbab5d4cec67878d2422ebc1a64736f6c63430008080033",
1025
+ "deployedBytecode": "0x60806040526004361061020c5760003560e01c80628cc26214610211578063016a42841461024457806306fdde031461025b578063095ea7b31461027d5780630c1cd7f3146102ad57806318160ddd146102cf5780631b3c90a8146102e4578063213b329e146102fb57806322dec37b1461031057806323b872dd1461033d57806325d5971f1461035d5780632e42a8961461037d578063313ce5671461040f57806331903da11461042b5780633659cfe6146104585780633950935114610478578063399080ec146104985780633d9a12cc146104cd5780633e6326fc146104ed5780634162169f1461051b57806347b3e7e81461053c5780634f1db7f6146105695780634f1ef286146105895780635aef7de61461059c5780636eb62984146105bd57806370a08231146105dd578063777d6641146106135780637bcbb9ff14610641578063817b1cd214610661578063846141b31461069a57806395d89b41146106c7578063a218141b146106dc578063a457c2d7146106fd578063a694fc3a1461071d578063a9059cbb1461073d578063aaf5eb681461075d578063aba78c1614610779578063b20b9979146107ce578063b86543ba146107ee578063bf8e9b6e1461080f578063c671062914610824578063c7b8981c14610844578063dd62ed3e14610859578063df136d651461089f578063e1758bd8146108c7578063ebe91644146108dc575b600080fd5b34801561021d57600080fd5b5061023161022c366004613231565b6109ca565b6040519081526020015b60405180910390f35b34801561025057600080fd5b5061023161016c5481565b34801561026757600080fd5b50610270610a50565b60405161023b919061327a565b34801561028957600080fd5b5061029d6102983660046132ad565b610ae2565b604051901515815260200161023b565b3480156102b957600080fd5b50306000908152606a6020526040902054610231565b3480156102db57600080fd5b50603554610231565b3480156102f057600080fd5b506102f9610af8565b005b34801561030757600080fd5b50610231610c40565b34801561031c57600080fd5b5061023161032b366004613231565b60676020526000908152604090205481565b34801561034957600080fd5b5061029d6103583660046132d9565b610c6a565b34801561036957600080fd5b506102f961037836600461331a565b610d1b565b34801561038957600080fd5b506103dc610398366004613333565b606b602090815260009283526040808420909152908252902080546001909101546001600160801b0380831692600160801b90819004821692808316929190041684565b604080516001600160801b039586168152938516602085015291841691830191909152909116606082015260800161023b565b34801561041b57600080fd5b506040516002815260200161023b565b34801561043757600080fd5b50610231610446366004613231565b60686020526000908152604090205481565b34801561046457600080fd5b506102f9610473366004613231565b610f5f565b34801561048457600080fd5b5061029d6104933660046132ad565b611028565b3480156104a457600080fd5b506104b86104b3366004613231565b611064565b6040805192835260208301919091520161023b565b3480156104d957600080fd5b506102316104e836600461336c565b61107a565b3480156104f957600080fd5b506101045461050e906001600160a01b031681565b60405161023b91906133b6565b34801561052757600080fd5b506101025461050e906001600160a01b031681565b34801561054857600080fd5b50610231610557366004613231565b606a6020526000908152604090205481565b34801561057557600080fd5b506104b8610584366004613333565b61116e565b6102f96105973660046133e0565b6111b1565b3480156105a857600080fd5b506101035461050e906001600160a01b031681565b3480156105c957600080fd5b506102f96105d836600461331a565b61126b565b3480156105e957600080fd5b506102316105f8366004613231565b6001600160a01b031660009081526033602052604090205490565b34801561061f57600080fd5b5061016d5461062e90600f0b81565b604051600f9190910b815260200161023b565b34801561064d57600080fd5b5061023161065c366004613231565b61127d565b34801561066d57600080fd5b5061016b54610682906001600160801b031681565b6040516001600160801b03909116815260200161023b565b3480156106a657600080fd5b506102316106b5366004613231565b60696020526000908152604090205481565b3480156106d357600080fd5b50610270611298565b3480156106e857600080fd5b5061016a54610682906001600160801b031681565b34801561070957600080fd5b5061029d6107183660046132ad565b6112a7565b34801561072957600080fd5b506102f961073836600461331a565b611340565b34801561074957600080fd5b5061029d6107583660046132ad565b61150f565b34801561076957600080fd5b50610682670de0b6b3a764000081565b34801561078557600080fd5b506103dc610794366004613231565b61016960205260009081526040902080546001909101546001600160801b0380831692600160801b90819004821692808316929190041684565b3480156107da57600080fd5b506102f96107e93660046134a3565b61151c565b3480156107fa57600080fd5b5061016f54610682906001600160801b031681565b34801561081b57600080fd5b5061023161152d565b34801561083057600080fd5b5061023161083f366004613231565b61153d565b34801561085057600080fd5b506104b861154c565b34801561086557600080fd5b50610231610874366004613333565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b3480156108ab57600080fd5b5061016a5461068290600160801b90046001600160801b031681565b3480156108d357600080fd5b5061050e611599565b3480156108e857600080fd5b506109876108f7366004613231565b60408051608081018252600080825260208201819052918101829052606081019190915250306000908152606b602090815260408083206001600160a01b0394909416835292815290829020825160808101845281546001600160801b038082168352600160801b9182900481169483019490945260019092015480841694820194909452920416606082015290565b60405161023b919081516001600160801b039081168252602080840151821690830152604080840151821690830152606092830151169181019190915260800190565b6001600160a01b03811660009081526101696020526040812060010154670de0b6b3a7640000906001600160801b0316610a026118e9565b610a0c91906134e2565b6001600160a01b03841660009081526101696020526040902054610a409190600160801b90046001600160801b03166134f9565b610a4a919061352e565b92915050565b606060368054610a5f90613542565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8b90613542565b8015610ad85780601f10610aad57610100808354040283529160200191610ad8565b820191906000526020600020905b815481529060010190602001808311610abb57829003601f168201915b5050505050905090565b6000610aef3384846119e4565b50600192915050565b6101045460405163bf40fac160e01b815260206004820152600a60248201526921a7a72a2927a62622a960b11b60448201526001600160a01b039091169063bf40fac19060640160206040518083038186803b158015610b5757600080fd5b505afa158015610b6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8f9190613577565b61010280546001600160a01b0319166001600160a01b0392909216918217905560408051632d77bef360e11b81529051635aef7de691600480820192602092909190829003018186803b158015610be557600080fd5b505afa158015610bf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1d9190613577565b61010380546001600160a01b0319166001600160a01b0392909216919091179055565b61016f54600090610c5c90600c906001600160801b0316613594565b6001600160801b0316905090565b6000610c77848484611b08565b6001600160a01b038416600090815260346020908152604080832033845290915290205482811015610d015760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610d0e85338584036119e4565b60019150505b9392505050565b6002610137541415610d3f5760405162461bcd60e51b8152600401610cf8906135ba565b6002610137556000610d51303361116e565b50905081610d5d578091505b60008211610dad5760405162461bcd60e51b815260206004820152601f60248201527f53686f756c6420776974686472617720706f73697469766520616d6f756e74006044820152606401610cf8565b81811015610df75760405162461bcd60e51b8152602060048201526017602482015276139bdd08195b9bdd59da081d1bdad95b881cdd185ad959604a1b6044820152606401610cf8565b81610e023384611b97565b610e10303385600043611cd3565b50610e1a33611d70565b50610e253382611eda565b3360009081526101696020526040902054600160801b90046001600160801b0316610e5557610e5333612004565b505b61016e546001600160a01b031663a9059cbb33836040518363ffffffff1660e01b8152600401610e869291906135f1565b602060405180830381600087803b158015610ea057600080fd5b505af1158015610eb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed8919061360a565b610f1f5760405162461bcd60e51b81526020600482015260186024820152771dda5d1a191c985dc81d1c985b9cd9995c8819985a5b195960421b6044820152606401610cf8565b60405183815233907f1248d48e2de900a1010c7fce73506969ecec243600bfc08b641b158f26d857cd9060200160405180910390a2505060016101375550565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610fa85760405162461bcd60e51b8152600401610cf89061362c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610fda612155565b6001600160a01b0316146110005760405162461bcd60e51b8152600401610cf890613666565b61100981612171565b6040805160008082526020820190925261102591839190612179565b50565b3360008181526034602090815260408083206001600160a01b03871684529091528120549091610aef91859061105f9086906136a0565b6119e4565b600080611071308461116e565b91509150915091565b6001600160a01b038085166000818152606b602090815260408083209486168352938152838220845160808101865281546001600160801b038082168352600160801b918290048116838601526001909301548084168389015204909116606082015292825260659052918220548290156111645760006110fc8888886122c0565b91505082604001516001600160801b0316915082602001516001600160801b0316676765c793fa10079d601b1b8285600001516001600160801b031661114291906134f9565b61114c919061352e565b61115691906134e2565b61116090836136a0565b9150505b9695505050505050565b6001600160a01b039182166000818152606b60209081526040808320949095168252928352838120549181526065909252919020546001600160801b0390911691565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156111fa5760405162461bcd60e51b8152600401610cf89061362c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661122c612155565b6001600160a01b0316146112525760405162461bcd60e51b8152600401610cf890613666565b61125b82612171565b61126782826001612179565b5050565b6112736123b8565b611025308261248d565b6001600160a01b031660009081526066602052604090205490565b606060378054610a5f90613542565b3360009081526034602090815260408083206001600160a01b0386168452909152812054828110156113295760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610cf8565b61133633858584036119e4565b5060019392505050565b600081116113a25760405162461bcd60e51b815260206004820152602960248201527f596f75206e65656420746f207374616b65206120706f73697469766520746f6b604482015268195b88185b5bdd5b9d60ba1b6064820152608401610cf8565b61016e546001600160a01b03166323b872dd336040516001600160e01b031960e084901b1681526001600160a01b03909116600482015230602482015260448101849052606401602060405180830381600087803b15801561140357600080fd5b505af1158015611417573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143b919061360a565b6114aa5760405162461bcd60e51b815260206004820152603a60248201527f7472616e7366657246726f6d206661696c65642c206d616b652073757265207960448201527937ba9030b8383937bb32b2103a37b5b2b7103a3930b739b332b960311b6064820152608401610cf8565b6114b83033836000436124bf565b506114c33382612532565b6114cc33611d70565b506114d733826125ff565b60405181815233907f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d9060200160405180910390a250565b6000610aef338484611b08565b6115246123b8565b611025816126fd565b60006115383061127d565b905090565b6000610a4a306000438561107a565b60008060026101375414156115735760405162461bcd60e51b8152600401610cf8906135ba565b60026101375561158233611d70565b915061158d33612004565b60016101375591929050565b6101045460405163bf40fac160e01b815260206004820152600a60248201526923a7a7a22227a62620a960b11b60448201526000916001600160a01b03169063bf40fac19060640160206040518083038186803b1580156115f957600080fd5b505afa15801561160d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115389190613577565b60008161163d57600080fd5b60006116498484612748565b905060016001607f1b036001600160801b0382161115610d1457600080fd5b600080600084600f0b1280156116815750826001166001145b905060008085600f0b12611695578461169a565b846000035b6001600160801b03169050600160801b600160401b821161172f57603f82901b91505b84156117275760018516156116d2578102607f1c5b908002607f1c9060028516156116e8578102607f1c5b908002607f1c9060048516156116fe578102607f1c5b908002607f1c906008851615611714578102607f1c5b60049490941c93908002607f1c906116bd565b60401c611845565b603f600160601b8310156117495760209290921b91601f19015b600160701b8310156117615760109290921b91600f19015b600160781b8310156117795760089290921b91600719015b6001607c1b8310156117915760049290921b91600319015b6001607e1b8310156117a95760029290921b91600119015b6001607f1b8310156117c15760019290921b91600019015b60005b861561182e57604082106117d757600080fd5b60018716156117fd57918302607f1c918101600160801b8311156117fd57600192831c92015b928002607f1c9260019190911b90600160801b841061182257600193841c9391909101905b600187901c96506117c4565b6040811061183b57600080fd5b6040039190911c90505b6000836118525781611857565b816000035b905060016001607f1b03198112801590611878575060016001607f1b038113155b61116457600080fd5b60008161189057506000610a4a565b600083600f0b12156118a157600080fd5b600f83900b6001600160801b038316810260401c90608084901c026001600160c01b038111156118d057600080fd5b60401b81198111156118e157600080fd5b019392505050565b61016b546000906001600160801b0316611915575061016a54600160801b90046001600160801b031690565b61016a5460009061194090611933906001600160801b0316436134e2565b61016d54600f0b90611668565b9050600061195d61016c5483600f0b61188190919063ffffffff16565b90508061016c600082825461197291906136a0565b909155505061016b5461198e906001600160801b03168261352e565b61016a80546010906119b1908490600160801b90046001600160801b03166136b8565b92506101000a8154816001600160801b0302191690836001600160801b0316021790556001600160801b03169250505090565b6001600160a01b038316611a465760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cf8565b6001600160a01b038216611aa75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cf8565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b611b16308483600043611cd3565b50611b218382611eda565b611b2f3083836000436124bf565b50611b3a82826125ff565b611b4383611d70565b50611b4d82611d70565b506001600160a01b03831660009081526101696020526040902054600160801b90046001600160801b0316611b8757611b8583612004565b505b611b928383836128a9565b505050565b6001600160a01b038216611bf75760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610cf8565b6001600160a01b03821660009081526033602052604090205481811015611c6b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610cf8565b6001600160a01b0383166000908152603360205260408120838303905560358054849290611c9a9084906134e2565b90915550506040518281526000906001600160a01b038516906000805160206137be8339815191529060200160405180910390a3505050565b6000611ce0868484612a67565b6001600160a01b038087166000908152606b6020908152604080832093891683529290522054611d279087908790611d229088906001600160801b03166134e2565b612ae2565b6001600160a01b038616600090815260656020526040902054611d4b9085906134e2565b6001600160a01b03871660009081526065602052604090205550600195945050505050565b600080611d803084600043612c5e565b90508015610a4a576101045460405163bf40fac160e01b815260206004820152600a6024820152692922a82aaa20aa24a7a760b11b60448201526001600160a01b039091169063bf40fac19060640160206040518083038186803b158015611de757600080fd5b505afa158015611dfb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1f9190613577565b6001600160a01b03166340c10f1984836040518363ffffffff1660e01b8152600401611e4c9291906135f1565b602060405180830381600087803b158015611e6657600080fd5b505af1158015611e7a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e9e91906136e3565b5060405181815233907f43848d0574703c28d68ae8958e0571521618f60c4bcacfb094cff2156eaae0f19060200160405180910390a292915050565b81611ee481612d93565b60008211611f285760405162461bcd60e51b8152602060048201526011602482015270043616e6e6f74207769746864726177203607c1b6044820152606401610cf8565b61016b8054839190600090611f479084906001600160801b03166136fc565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550670de0b6b3a76400006001600160801b031682611f8891906134f9565b61016c6000828254611f9a91906134e2565b90915550506001600160a01b0383166000908152610169602052604090208054839190601090611fdb908490600160801b90046001600160801b03166136fc565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550505050565b60008061201083612e69565b6101045460405163bf40fac160e01b815260206004820152600f60248201526e26b4b73a213ab9372bb930b83832b960891b60448201529192506001600160a01b03169063bf40fac19060640160206040518083038186803b15801561207557600080fd5b505afa158015612089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ad9190613577565b6001600160a01b03166317eebf2184836040518363ffffffff1660e01b81526004016120da9291906135f1565b602060405180830381600087803b1580156120f457600080fd5b505af1925050508015612124575060408051601f3d908101601f19168201909252612121918101906136e3565b60015b6121315760009150612134565b91505b8082101561214f5761214f8361214a84846134e2565b612f28565b50919050565b600080516020613777833981519152546001600160a01b031690565b6110256123b8565b6000612183612155565b905061218e84613025565b60008351118061219b5750815b156121ac576121aa84846130b8565b505b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143805460ff166122b957805460ff191660011781556040516122279086906121f89085906024016133b6565b60408051601f198184030181529190526020810180516001600160e01b0316631b2ce7f360e11b1790526130b8565b50805460ff19168155612238612155565b6001600160a01b0316826001600160a01b0316146122b05760405162461bcd60e51b815260206004820152602f60248201527f45524331393637557067726164653a207570677261646520627265616b73206660448201526e75727468657220757067726164657360881b6064820152608401610cf8565b6122b9856131a3565b5050505050565b6001600160a01b0383166000908152606660209081526040808320546069909252909120549083821080156122f55750834310155b6122ff5781612301565b835b915060008343116123125743612314565b835b9050848110806123245750838310155b1561232f57506123b0565b600061233b84836134e2565b6001600160a01b0388166000908152606a60205260408120549192509061236290836134f9565b6001600160a01b03891660009081526065602052604090205490915061239382676765c793fa10079d601b1b6134f9565b61239d919061352e565b6123a790856136a0565b93508294505050505b935093915050565b6101025460408051632d77bef360e11b8152905133926001600160a01b031691635aef7de6916004808301926020929190829003018186803b1580156123fd57600080fd5b505afa158015612411573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124359190613577565b6001600160a01b03161461248b5760405162461bcd60e51b815260206004820181905260248201527f6f6e6c79206176617461722063616e2063616c6c2074686973206d6574686f646044820152606401610cf8565b565b612495610c40565b61249f908261352e565b6001600160a01b039092166000908152606a602052604090209190915550565b60006124cc868484612a67565b6001600160a01b038087166000908152606b602090815260408083209389168352929052205461250e9087908790611d229088906001600160801b03166136a0565b6001600160a01b038616600090815260656020526040902054611d4b9085906136a0565b6001600160a01b0382166125885760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610cf8565b806035600082825461259a91906136a0565b90915550506001600160a01b038216600090815260336020526040812080548392906125c79084906136a0565b90915550506040518181526001600160a01b038316906000906000805160206137be8339815191529060200160405180910390a35050565b8161260981612d93565b6000821161264a5760405162461bcd60e51b815260206004820152600e60248201526d043616e6e6f74207374616b6520360941b6044820152606401610cf8565b61016b80548391906000906126699084906001600160801b03166136b8565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550670de0b6b3a76400006001600160801b0316826126aa91906134f9565b61016c60008282546126bc91906136a0565b90915550506001600160a01b0383166000908152610169602052604090208054839190601090611fdb908490600160801b90046001600160801b03166136b8565b600061270881612d93565b612723826001600160801b0316670de0b6b3a7640000611631565b61016d80546001600160801b0319166001600160801b03929092169190911790555050565b60008161275457600080fd5b60006001600160c01b03841161277f5782604085901b8161277757612777613518565b049050612895565b60c084811c600160201b8110612797576020918201911c5b6201000081106127a9576010918201911c5b61010081106127ba576008918201911c5b601081106127ca576004918201911c5b600481106127da576002918201911c5b600281106127e9576001820191505b60bf820360018603901c6001018260ff0387901b8161280a5761280a613518565b0492506001600160801b0383111561282157600080fd5b608085901c83026001600160801b038616840260c088901c604089901b8281101561284d576001820391505b608084901b92900382811015612864576001820391505b829003608084901c821461287a5761287a613724565b88818161288957612889613518565b04870196505050505050505b6001600160801b03811115610d1457600080fd5b6001600160a01b03831661290d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cf8565b6001600160a01b03821661296f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cf8565b6001600160a01b038316600090815260336020526040902054818110156129e75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610cf8565b6001600160a01b03808516600090815260336020526040808220858503905591851681529081208054849290612a1e9084906136a0565b92505081905550826001600160a01b0316846001600160a01b03166000805160206137be83398151915284604051612a5891815260200190565b60405180910390a35b50505050565b6001600160a01b038316600090815260656020526040902054612aa25750506001600160a01b03166000908152606960205260409020439055565b600080612ab08585856122c0565b6001600160a01b0390961660009081526066602090815260408083209890985560699052959095209490945550505050565b6001600160a01b038084166000908152606b6020908152604080832093861683529290522080546001600160801b031615612bee5780546001600160a01b03851660009081526066602052604081205490916001600160801b03600160801b8204811692676765c793fa10079d601b1b92612b5d92166134f9565b612b67919061352e565b612b7191906134e2565b6001830154909150612b8d9082906001600160801b03166136b8565b6001830180546001600160801b0319166001600160801b03929092169190911790556001600160a01b038516600090815260686020526040902054612bd39082906136a0565b6001600160a01b038616600090815260686020526040902055505b80546001600160801b0319166001600160801b0383161781556001600160a01b038416600090815260666020526040902054676765c793fa10079d601b1b90612c3790846134f9565b612c41919061352e565b81546001600160801b03918216600160801b029116179055505050565b6000612c6b858484612a67565b6001600160a01b038086166000908152606b6020908152604080832093881683529290522054612ca790869086906001600160801b0316612ae2565b6001600160a01b038581166000908152606b6020908152604080832093881683529290522060010180546001600160801b038082169283929091601091612cf7918591600160801b9004166136b8565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b038881166000818152606b60209081526040808320948c16835293815283822060010180546001600160801b031916905591815260679091522054612d679250908316906136a0565b6001600160a01b0387166000908152606760205260409020556001600160801b03169050949350505050565b612d9b6118e9565b436001600160801b039081169116600160801b026001600160801b0319161761016a556001600160a01b0381161561102557612dd6816109ca565b6001600160a01b0382166000908152610169602052604081208054909190612e089084906001600160801b03166136b8565b82546001600160801b039182166101009390930a92830292820219169190911790915561016a546001600160a01b03841660009081526101696020526040902060010180546001600160801b031916600160801b9092049092161790555050565b600081612e7581612d93565b6001600160a01b03831660009081526101696020526040902080546001600160801b031981168255600190910180546001600160801b0392831694508492601091612ec9918591600160801b9004166136b8565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550670de0b6b3a76400006001600160801b031682612f0a91906134f9565b61016c6000828254612f1c91906134e2565b90915550919392505050565b6001600160a01b0382166000908152610169602052604081208054839290612f5a9084906001600160801b03166136b8565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550806101696000846001600160a01b03166001600160a01b0316815260200190815260200160002060010160108282829054906101000a90046001600160801b0316612fc991906136fc565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550670de0b6b3a76400006001600160801b03168161300a91906134f9565b61016c600082825461301c91906136a0565b90915550505050565b803b6130895760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610cf8565b60008051602061377783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060823b6131175760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610cf8565b600080846001600160a01b031684604051613132919061373a565b600060405180830381855af49150503d806000811461316d576040519150601f19603f3d011682016040523d82523d6000602084013e613172565b606091505b509150915061319a8282604051806060016040528060278152602001613797602791396131e3565b95945050505050565b6131ac81613025565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606083156131f2575081610d14565b8251156132025782518084602001fd5b8160405162461bcd60e51b8152600401610cf8919061327a565b6001600160a01b038116811461102557600080fd5b60006020828403121561324357600080fd5b8135610d148161321c565b60005b83811015613269578181015183820152602001613251565b83811115612a615750506000910152565b602081526000825180602084015261329981604085016020870161324e565b601f01601f19169190910160400192915050565b600080604083850312156132c057600080fd5b82356132cb8161321c565b946020939093013593505050565b6000806000606084860312156132ee57600080fd5b83356132f98161321c565b925060208401356133098161321c565b929592945050506040919091013590565b60006020828403121561332c57600080fd5b5035919050565b6000806040838503121561334657600080fd5b82356133518161321c565b915060208301356133618161321c565b809150509250929050565b6000806000806080858703121561338257600080fd5b843561338d8161321c565b9350602085013592506040850135915060608501356133ab8161321c565b939692955090935050565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156133f357600080fd5b82356133fe8161321c565b915060208301356001600160401b038082111561341a57600080fd5b818501915085601f83011261342e57600080fd5b813581811115613440576134406133ca565b604051601f8201601f19908116603f01168101908382118183101715613468576134686133ca565b8160405282815288602084870101111561348157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000602082840312156134b557600080fd5b81356001600160801b0381168114610d1457600080fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156134f4576134f46134cc565b500390565b6000816000190483118215151615613513576135136134cc565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261353d5761353d613518565b500490565b600181811c9082168061355657607f821691505b6020821081141561214f57634e487b7160e01b600052602260045260246000fd5b60006020828403121561358957600080fd5b8151610d148161321c565b60006001600160801b03838116806135ae576135ae613518565b92169190910492915050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6001600160a01b03929092168252602082015260400190565b60006020828403121561361c57600080fd5b81518015158114610d1457600080fd5b6020808252602c9082015260008051602061375783398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c9082015260008051602061375783398151915260408201526b6163746976652070726f787960a01b606082015260800190565b600082198211156136b3576136b36134cc565b500190565b60006001600160801b038281168482168083038211156136da576136da6134cc565b01949350505050565b6000602082840312156136f557600080fd5b5051919050565b60006001600160801b038381169083168181101561371c5761371c6134cc565b039392505050565b634e487b7160e01b600052600160045260246000fd5b6000825161374c81846020870161324e565b919091019291505056fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220b18bc0c5d411e9b4341729578cc19a45f6d073dfbab5d4cec67878d2422ebc1a64736f6c63430008080033",
1026
+ "linkReferences": {},
1027
+ "deployedLinkReferences": {}
1028
+ }