@gooddollar/goodprotocol 1.0.26-beta.0 → 1.0.28

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 (222) hide show
  1. package/artifacts/abis/AdminWallet.min.json +1 -0
  2. package/artifacts/abis/FuseFaucet.min.json +1 -1
  3. package/artifacts/abis/IIdentity.min.json +1 -1
  4. package/artifacts/abis/ProxyAdmin.min.json +1 -1
  5. package/artifacts/contracts/DAOStackInterfaces.sol/Avatar.dbg.json +1 -1
  6. package/artifacts/contracts/DAOStackInterfaces.sol/Controller.dbg.json +1 -1
  7. package/artifacts/contracts/DAOStackInterfaces.sol/GlobalConstraintInterface.dbg.json +1 -1
  8. package/artifacts/contracts/DAOStackInterfaces.sol/IntVoteInterface.dbg.json +1 -1
  9. package/artifacts/contracts/DAOStackInterfaces.sol/ReputationInterface.dbg.json +1 -1
  10. package/artifacts/contracts/DAOStackInterfaces.sol/SchemeRegistrar.dbg.json +1 -1
  11. package/artifacts/contracts/Interfaces.sol/AggregatorV3Interface.dbg.json +1 -1
  12. package/artifacts/contracts/Interfaces.sol/ERC20.dbg.json +1 -1
  13. package/artifacts/contracts/Interfaces.sol/IAaveIncentivesController.dbg.json +1 -1
  14. package/artifacts/contracts/Interfaces.sol/IAdminWallet.dbg.json +1 -1
  15. package/artifacts/contracts/Interfaces.sol/IDonationStaking.dbg.json +1 -1
  16. package/artifacts/contracts/Interfaces.sol/IERC2917.dbg.json +1 -1
  17. package/artifacts/contracts/Interfaces.sol/IFirstClaimPool.dbg.json +1 -1
  18. package/artifacts/contracts/Interfaces.sol/IGoodDollar.dbg.json +1 -1
  19. package/artifacts/contracts/Interfaces.sol/IGoodStaking.dbg.json +1 -1
  20. package/artifacts/contracts/Interfaces.sol/IHasRouter.dbg.json +1 -1
  21. package/artifacts/contracts/Interfaces.sol/IIdentity.dbg.json +1 -1
  22. package/artifacts/contracts/Interfaces.sol/IIdentity.json +45 -0
  23. package/artifacts/contracts/Interfaces.sol/ILendingPool.dbg.json +1 -1
  24. package/artifacts/contracts/Interfaces.sol/INameService.dbg.json +1 -1
  25. package/artifacts/contracts/Interfaces.sol/IUBIScheme.dbg.json +1 -1
  26. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.dbg.json +1 -1
  27. package/artifacts/contracts/Interfaces.sol/ProxyAdmin.json +23 -0
  28. package/artifacts/contracts/Interfaces.sol/Reserve.dbg.json +1 -1
  29. package/artifacts/contracts/Interfaces.sol/Staking.dbg.json +1 -1
  30. package/artifacts/contracts/Interfaces.sol/Uniswap.dbg.json +1 -1
  31. package/artifacts/contracts/Interfaces.sol/UniswapFactory.dbg.json +1 -1
  32. package/artifacts/contracts/Interfaces.sol/UniswapPair.dbg.json +1 -1
  33. package/artifacts/contracts/Interfaces.sol/cERC20.dbg.json +1 -1
  34. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.dbg.json +1 -1
  35. package/artifacts/contracts/fuseFaucet/FuseFaucet.sol/FuseFaucet.json +4 -4
  36. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.dbg.json +1 -1
  37. package/artifacts/contracts/governance/ClaimersDistribution.sol/ClaimersDistribution.json +2 -2
  38. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.dbg.json +1 -1
  39. package/artifacts/contracts/governance/CompoundVotingMachine.sol/CompoundVotingMachine.json +2 -2
  40. package/artifacts/contracts/governance/GReputation.sol/GReputation.dbg.json +1 -1
  41. package/artifacts/contracts/governance/GReputation.sol/GReputation.json +2 -2
  42. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.dbg.json +1 -1
  43. package/artifacts/contracts/governance/GovernanceStaking.sol/GovernanceStaking.json +2 -2
  44. package/artifacts/contracts/governance/MultiBaseGovernanceShareField.sol/MultiBaseGovernanceShareField.dbg.json +1 -1
  45. package/artifacts/contracts/governance/Reputation.sol/Reputation.dbg.json +1 -1
  46. package/artifacts/contracts/governance/Reputation.sol/Reputation.json +2 -2
  47. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.dbg.json +1 -1
  48. package/artifacts/contracts/governance/StakersDistribution.sol/StakersDistribution.json +2 -2
  49. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.dbg.json +1 -1
  50. package/artifacts/contracts/invite/InvitesV1.sol/InvitesV1.json +2 -2
  51. package/artifacts/contracts/mocks/AaveMock.sol/AaveMock.dbg.json +1 -1
  52. package/artifacts/contracts/mocks/AaveUSDMockOracle.sol/AaveUSDMockOracle.dbg.json +1 -1
  53. package/artifacts/contracts/mocks/BatUSDMockOracle.sol/BatUSDMockOracle.dbg.json +1 -1
  54. package/artifacts/contracts/mocks/CompUsdMockOracle.sol/CompUSDMockOracle.dbg.json +1 -1
  55. package/artifacts/contracts/mocks/DAIMock.sol/DAIMock.dbg.json +1 -1
  56. package/artifacts/contracts/mocks/DaiEthPriceMockOracle.sol/DaiEthPriceMockOracle.dbg.json +1 -1
  57. package/artifacts/contracts/mocks/DecimalsMock.sol/DecimalsMock.dbg.json +1 -1
  58. package/artifacts/contracts/mocks/EthUSDMockOracle.sol/EthUSDMockOracle.dbg.json +1 -1
  59. package/artifacts/contracts/mocks/GasPriceMockOracle.sol/GasPriceMockOracle.dbg.json +1 -1
  60. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.dbg.json +1 -1
  61. package/artifacts/contracts/mocks/GoodCompoundStakingTest.sol/GoodCompoundStakingTest.json +2 -2
  62. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.dbg.json +1 -1
  63. package/artifacts/contracts/mocks/GoodFundManagerTest.sol/GoodFundManagerTest.json +2 -2
  64. package/artifacts/contracts/mocks/IncentiveControllerMock.sol/IncentiveControllerMock.dbg.json +1 -1
  65. package/artifacts/contracts/mocks/LendingPoolMock.sol/LendingPoolMock.dbg.json +1 -1
  66. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.dbg.json +1 -1
  67. package/artifacts/contracts/mocks/OverMintTester.sol/OverMintTester.json +2 -2
  68. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.dbg.json +1 -1
  69. package/artifacts/contracts/mocks/OverMintTesterRegularStake.sol/OverMintTesterRegularStake.json +2 -2
  70. package/artifacts/contracts/mocks/SixteenDecimalsTokenMock.sol/SixteenDecimalsTokenMock.dbg.json +1 -1
  71. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.dbg.json +1 -1
  72. package/artifacts/contracts/mocks/SwapHelperTest.sol/SwapHelperTest.json +2 -2
  73. package/artifacts/contracts/mocks/TwentyDecimalsTokenMock.sol/TwentyDecimalsTokenMock.dbg.json +1 -1
  74. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.dbg.json +1 -1
  75. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock.json +2 -2
  76. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.dbg.json +1 -1
  77. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock2.json +2 -2
  78. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.dbg.json +1 -1
  79. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock3.json +2 -2
  80. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.dbg.json +1 -1
  81. package/artifacts/contracts/mocks/UpgradableMocks.sol/UpgradableMock4.json +2 -2
  82. package/artifacts/contracts/mocks/UsdcMock.sol/USDCMock.dbg.json +1 -1
  83. package/artifacts/contracts/mocks/cBATMock.sol/cBATMock.dbg.json +1 -1
  84. package/artifacts/contracts/mocks/cDAILowWorthMock.sol/cDAILowWorthMock.dbg.json +1 -1
  85. package/artifacts/contracts/mocks/cDAIMock.sol/cDAIMock.dbg.json +1 -1
  86. package/artifacts/contracts/mocks/cDAINonMintableMock.sol/cDAINonMintableMock.dbg.json +1 -1
  87. package/artifacts/contracts/mocks/cDecimalsMock.sol/cDecimalsMock.dbg.json +1 -1
  88. package/artifacts/contracts/mocks/cSDTMock.sol/cSDTMock.dbg.json +1 -1
  89. package/artifacts/contracts/mocks/cUSDCMock.sol/cUSDCMock.dbg.json +1 -1
  90. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.dbg.json +1 -1
  91. package/artifacts/contracts/reserve/ExchangeHelper.sol/ExchangeHelper.json +2 -2
  92. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.dbg.json +1 -1
  93. package/artifacts/contracts/reserve/GoodMarketMaker.sol/GoodMarketMaker.json +2 -2
  94. package/artifacts/contracts/reserve/GoodReserveCDai.sol/ContributionCalc.dbg.json +1 -1
  95. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.dbg.json +1 -1
  96. package/artifacts/contracts/reserve/GoodReserveCDai.sol/GoodReserveCDai.json +2 -2
  97. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.dbg.json +1 -1
  98. package/artifacts/contracts/staking/BaseShareField.sol/BaseShareField.json +2 -2
  99. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.dbg.json +1 -1
  100. package/artifacts/contracts/staking/BaseShareFieldV2.sol/BaseShareFieldV2.json +2 -2
  101. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.dbg.json +1 -1
  102. package/artifacts/contracts/staking/DonationsStaking.sol/DonationsStaking.json +2 -2
  103. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.dbg.json +1 -1
  104. package/artifacts/contracts/staking/FuseStakingV3.sol/FuseStakingV3.json +2 -2
  105. package/artifacts/contracts/staking/FuseStakingV3.sol/IConsensus.dbg.json +1 -1
  106. package/artifacts/contracts/staking/FuseStakingV3.sol/PegSwap.dbg.json +1 -1
  107. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.dbg.json +1 -1
  108. package/artifacts/contracts/staking/GoodFundManager.sol/GoodFundManager.json +2 -2
  109. package/artifacts/contracts/staking/SimpleStaking.sol/SimpleStaking.dbg.json +1 -1
  110. package/artifacts/contracts/staking/SimpleStakingV2.sol/SimpleStakingV2.dbg.json +1 -1
  111. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.dbg.json +1 -1
  112. package/artifacts/contracts/staking/UniswapV2SwapHelper.sol/UniswapV2SwapHelper.json +2 -2
  113. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.dbg.json +1 -1
  114. package/artifacts/contracts/staking/aave/AaveStakingFactory.sol/AaveStakingFactory.json +2 -2
  115. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.dbg.json +1 -1
  116. package/artifacts/contracts/staking/aave/GoodAaveStaking.sol/GoodAaveStaking.json +2 -2
  117. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.dbg.json +1 -1
  118. package/artifacts/contracts/staking/aave/GoodAaveStakingV2.sol/GoodAaveStakingV2.json +2 -2
  119. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.dbg.json +1 -1
  120. package/artifacts/contracts/staking/compound/CompoundStakingFactory.sol/CompoundStakingFactory.json +2 -2
  121. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.dbg.json +1 -1
  122. package/artifacts/contracts/staking/compound/GoodCompoundStaking.sol/GoodCompoundStaking.json +2 -2
  123. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.dbg.json +1 -1
  124. package/artifacts/contracts/staking/compound/GoodCompoundStakingV2.sol/GoodCompoundStakingV2.json +2 -2
  125. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.dbg.json +1 -1
  126. package/artifacts/contracts/ubi/UBIScheme.sol/UBIScheme.json +2 -2
  127. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.dbg.json +4 -0
  128. package/artifacts/contracts/utils/AdminWallet.sol/AdminWallet.json +732 -0
  129. package/artifacts/contracts/utils/BancorFormula.sol/BancorFormula.dbg.json +1 -1
  130. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.dbg.json +1 -1
  131. package/artifacts/contracts/utils/BulkProof.sol/BulkProof.json +2 -2
  132. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.dbg.json +1 -1
  133. package/artifacts/contracts/utils/DAOContract.sol/DAOContract.json +2 -2
  134. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.dbg.json +1 -1
  135. package/artifacts/contracts/utils/DAOUpgradeableContract.sol/DAOUpgradeableContract.json +2 -2
  136. package/artifacts/contracts/utils/DSMath.sol/DSMath.dbg.json +1 -1
  137. package/artifacts/contracts/utils/DataTypes.sol/DataTypes.dbg.json +1 -1
  138. package/artifacts/contracts/utils/MultiCall.sol/Multicall.dbg.json +1 -1
  139. package/artifacts/contracts/utils/NameService.sol/NameService.dbg.json +1 -1
  140. package/artifacts/contracts/utils/ProtocolUpgrade.sol/OldMarketMaker.dbg.json +1 -1
  141. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.dbg.json +1 -1
  142. package/artifacts/contracts/utils/ProtocolUpgrade.sol/ProtocolUpgrade.json +2 -2
  143. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.dbg.json +1 -1
  144. package/artifacts/contracts/utils/ProtocolUpgradeFuse.sol/ProtocolUpgradeFuse.json +2 -2
  145. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.dbg.json +1 -1
  146. package/artifacts/contracts/utils/ProtocolUpgradeFuseRecover.sol/ProtocolUpgradeFuseRecover.json +2 -2
  147. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.dbg.json +1 -1
  148. package/artifacts/contracts/utils/ProtocolUpgradeRecover.sol/ProtocolUpgradeRecover.json +2 -2
  149. package/artifacts/contracts/utils/ProxyFactory1967.sol/ERC1967Proxy.dbg.json +1 -1
  150. package/artifacts/contracts/utils/ProxyFactory1967.sol/ProxyFactory1967.dbg.json +1 -1
  151. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.dbg.json +1 -1
  152. package/artifacts/contracts/utils/ReputationTestHelper.sol/ReputationTestHelper.json +2 -2
  153. package/contracts/Interfaces.sol +12 -0
  154. package/contracts/fuseFaucet/FuseFaucet.sol +19 -10
  155. package/contracts/utils/AdminWallet.sol +242 -0
  156. package/hardhat.config.ts +11 -1
  157. package/package.json +8 -8
  158. package/releases/deployment.json +9 -6
  159. package/scripts/bulkProof.ts +0 -5
  160. package/scripts/deployFullDAO.ts +17 -9
  161. package/scripts/multichain-deploy/basicdao-deploy.ts +0 -11
  162. package/scripts/test/localOldDaoDeploy.ts +4 -10
  163. package/scripts/upgradeScheme.ts +7 -12
  164. package/scripts/upgradeToV2/upgradeToV2.ts +0 -8
  165. package/scripts/upgradeToV2/upgradeToV2Recover.ts +0 -8
  166. package/test/FuseFaucet.test.ts +8 -12
  167. package/test/utils/AdminWallet.test.ts +254 -0
  168. package/test/utils/ProtocolUpgrade.test.ts +1 -4
  169. package/types/AdminWallet.ts +1136 -0
  170. package/types/FuseFaucet.ts +3 -3
  171. package/types/IIdentity.ts +87 -0
  172. package/types/ProxyAdmin.ts +44 -0
  173. package/types/factories/AaveStakingFactory__factory.ts +1 -1
  174. package/types/factories/AdminWallet__factory.ts +780 -0
  175. package/types/factories/BaseShareFieldV2__factory.ts +1 -1
  176. package/types/factories/BaseShareField__factory.ts +1 -1
  177. package/types/factories/BulkProof__factory.ts +1 -1
  178. package/types/factories/ClaimersDistribution__factory.ts +1 -1
  179. package/types/factories/CompoundStakingFactory__factory.ts +1 -1
  180. package/types/factories/CompoundVotingMachine__factory.ts +1 -1
  181. package/types/factories/DAOContract__factory.ts +1 -1
  182. package/types/factories/DAOUpgradeableContract__factory.ts +1 -1
  183. package/types/factories/DonationsStaking__factory.ts +1 -1
  184. package/types/factories/ExchangeHelper__factory.ts +1 -1
  185. package/types/factories/FuseFaucet__factory.ts +3 -3
  186. package/types/factories/FuseStakingV3__factory.ts +1 -1
  187. package/types/factories/GReputation__factory.ts +1 -1
  188. package/types/factories/GoodAaveStakingV2__factory.ts +1 -1
  189. package/types/factories/GoodAaveStaking__factory.ts +1 -1
  190. package/types/factories/GoodCompoundStakingTest__factory.ts +1 -1
  191. package/types/factories/GoodCompoundStakingV2__factory.ts +1 -1
  192. package/types/factories/GoodCompoundStaking__factory.ts +1 -1
  193. package/types/factories/GoodFundManagerTest__factory.ts +1 -1
  194. package/types/factories/GoodFundManager__factory.ts +1 -1
  195. package/types/factories/GoodMarketMaker__factory.ts +1 -1
  196. package/types/factories/GoodReserveCDai__factory.ts +1 -1
  197. package/types/factories/GovernanceStaking__factory.ts +1 -1
  198. package/types/factories/IIdentity__factory.ts +45 -0
  199. package/types/factories/InvitesV1__factory.ts +1 -1
  200. package/types/factories/OverMintTesterRegularStake__factory.ts +1 -1
  201. package/types/factories/OverMintTester__factory.ts +1 -1
  202. package/types/factories/ProtocolUpgradeFuseRecover__factory.ts +1 -1
  203. package/types/factories/ProtocolUpgradeFuse__factory.ts +1 -1
  204. package/types/factories/ProtocolUpgradeRecover__factory.ts +1 -1
  205. package/types/factories/ProtocolUpgrade__factory.ts +1 -1
  206. package/types/factories/ProxyAdmin__factory.ts +23 -0
  207. package/types/factories/ReputationTestHelper__factory.ts +1 -1
  208. package/types/factories/Reputation__factory.ts +1 -1
  209. package/types/factories/StakersDistribution__factory.ts +1 -1
  210. package/types/factories/SwapHelperTest__factory.ts +1 -1
  211. package/types/factories/UBIScheme__factory.ts +1 -1
  212. package/types/factories/UniswapV2SwapHelper__factory.ts +1 -1
  213. package/types/factories/UpgradableMock2__factory.ts +1 -1
  214. package/types/factories/UpgradableMock3__factory.ts +1 -1
  215. package/types/factories/UpgradableMock4__factory.ts +1 -1
  216. package/types/factories/UpgradableMock__factory.ts +1 -1
  217. package/types/hardhat.d.ts +9 -0
  218. package/types/index.ts +2 -0
  219. package/yarn.lock +320 -217
  220. package/patches/@nomiclabs+hardhat-etherscan+3.0.3.patch +0 -41
  221. package/patches/@openzeppelin+hardhat-upgrades+1.7.0.patch +0 -67
  222. package/patches/@openzeppelin+upgrades-core+1.4.2.patch +0 -21
@@ -0,0 +1,732 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "AdminWallet",
4
+ "sourceName": "contracts/utils/AdminWallet.sol",
5
+ "abi": [
6
+ {
7
+ "anonymous": false,
8
+ "inputs": [
9
+ {
10
+ "indexed": false,
11
+ "internalType": "address",
12
+ "name": "previousAdmin",
13
+ "type": "address"
14
+ },
15
+ {
16
+ "indexed": false,
17
+ "internalType": "address",
18
+ "name": "newAdmin",
19
+ "type": "address"
20
+ }
21
+ ],
22
+ "name": "AdminChanged",
23
+ "type": "event"
24
+ },
25
+ {
26
+ "anonymous": false,
27
+ "inputs": [
28
+ {
29
+ "indexed": true,
30
+ "internalType": "address payable[]",
31
+ "name": "admins",
32
+ "type": "address[]"
33
+ }
34
+ ],
35
+ "name": "AdminsAdded",
36
+ "type": "event"
37
+ },
38
+ {
39
+ "anonymous": false,
40
+ "inputs": [
41
+ {
42
+ "indexed": true,
43
+ "internalType": "address[]",
44
+ "name": "admins",
45
+ "type": "address[]"
46
+ }
47
+ ],
48
+ "name": "AdminsRemoved",
49
+ "type": "event"
50
+ },
51
+ {
52
+ "anonymous": false,
53
+ "inputs": [
54
+ {
55
+ "indexed": true,
56
+ "internalType": "address",
57
+ "name": "beacon",
58
+ "type": "address"
59
+ }
60
+ ],
61
+ "name": "BeaconUpgraded",
62
+ "type": "event"
63
+ },
64
+ {
65
+ "anonymous": false,
66
+ "inputs": [
67
+ {
68
+ "indexed": true,
69
+ "internalType": "address",
70
+ "name": "_contract",
71
+ "type": "address"
72
+ },
73
+ {
74
+ "indexed": false,
75
+ "internalType": "bytes",
76
+ "name": "_data",
77
+ "type": "bytes"
78
+ },
79
+ {
80
+ "indexed": false,
81
+ "internalType": "uint256",
82
+ "name": "_value",
83
+ "type": "uint256"
84
+ },
85
+ {
86
+ "indexed": false,
87
+ "internalType": "bool",
88
+ "name": "_success",
89
+ "type": "bool"
90
+ }
91
+ ],
92
+ "name": "GenericCall",
93
+ "type": "event"
94
+ },
95
+ {
96
+ "anonymous": false,
97
+ "inputs": [
98
+ {
99
+ "indexed": true,
100
+ "internalType": "address",
101
+ "name": "previousOwner",
102
+ "type": "address"
103
+ },
104
+ {
105
+ "indexed": true,
106
+ "internalType": "address",
107
+ "name": "newOwner",
108
+ "type": "address"
109
+ }
110
+ ],
111
+ "name": "OwnershipTransferred",
112
+ "type": "event"
113
+ },
114
+ {
115
+ "anonymous": false,
116
+ "inputs": [
117
+ {
118
+ "indexed": true,
119
+ "internalType": "bytes32",
120
+ "name": "role",
121
+ "type": "bytes32"
122
+ },
123
+ {
124
+ "indexed": true,
125
+ "internalType": "bytes32",
126
+ "name": "previousAdminRole",
127
+ "type": "bytes32"
128
+ },
129
+ {
130
+ "indexed": true,
131
+ "internalType": "bytes32",
132
+ "name": "newAdminRole",
133
+ "type": "bytes32"
134
+ }
135
+ ],
136
+ "name": "RoleAdminChanged",
137
+ "type": "event"
138
+ },
139
+ {
140
+ "anonymous": false,
141
+ "inputs": [
142
+ {
143
+ "indexed": true,
144
+ "internalType": "bytes32",
145
+ "name": "role",
146
+ "type": "bytes32"
147
+ },
148
+ {
149
+ "indexed": true,
150
+ "internalType": "address",
151
+ "name": "account",
152
+ "type": "address"
153
+ },
154
+ {
155
+ "indexed": true,
156
+ "internalType": "address",
157
+ "name": "sender",
158
+ "type": "address"
159
+ }
160
+ ],
161
+ "name": "RoleGranted",
162
+ "type": "event"
163
+ },
164
+ {
165
+ "anonymous": false,
166
+ "inputs": [
167
+ {
168
+ "indexed": true,
169
+ "internalType": "bytes32",
170
+ "name": "role",
171
+ "type": "bytes32"
172
+ },
173
+ {
174
+ "indexed": true,
175
+ "internalType": "address",
176
+ "name": "account",
177
+ "type": "address"
178
+ },
179
+ {
180
+ "indexed": true,
181
+ "internalType": "address",
182
+ "name": "sender",
183
+ "type": "address"
184
+ }
185
+ ],
186
+ "name": "RoleRevoked",
187
+ "type": "event"
188
+ },
189
+ {
190
+ "anonymous": false,
191
+ "inputs": [
192
+ {
193
+ "indexed": true,
194
+ "internalType": "address",
195
+ "name": "implementation",
196
+ "type": "address"
197
+ }
198
+ ],
199
+ "name": "Upgraded",
200
+ "type": "event"
201
+ },
202
+ {
203
+ "anonymous": false,
204
+ "inputs": [
205
+ {
206
+ "indexed": true,
207
+ "internalType": "address",
208
+ "name": "user",
209
+ "type": "address"
210
+ },
211
+ {
212
+ "indexed": false,
213
+ "internalType": "uint256",
214
+ "name": "amount",
215
+ "type": "uint256"
216
+ }
217
+ ],
218
+ "name": "WalletTopped",
219
+ "type": "event"
220
+ },
221
+ {
222
+ "inputs": [],
223
+ "name": "DEFAULT_ADMIN_ROLE",
224
+ "outputs": [
225
+ {
226
+ "internalType": "bytes32",
227
+ "name": "",
228
+ "type": "bytes32"
229
+ }
230
+ ],
231
+ "stateMutability": "view",
232
+ "type": "function"
233
+ },
234
+ {
235
+ "inputs": [],
236
+ "name": "WALLET_ADMIN_ROLE",
237
+ "outputs": [
238
+ {
239
+ "internalType": "bytes32",
240
+ "name": "",
241
+ "type": "bytes32"
242
+ }
243
+ ],
244
+ "stateMutability": "view",
245
+ "type": "function"
246
+ },
247
+ {
248
+ "inputs": [
249
+ {
250
+ "internalType": "address payable[]",
251
+ "name": "_admins",
252
+ "type": "address[]"
253
+ }
254
+ ],
255
+ "name": "addAdmins",
256
+ "outputs": [],
257
+ "stateMutability": "nonpayable",
258
+ "type": "function"
259
+ },
260
+ {
261
+ "inputs": [],
262
+ "name": "adminToppingAmount",
263
+ "outputs": [
264
+ {
265
+ "internalType": "uint256",
266
+ "name": "",
267
+ "type": "uint256"
268
+ }
269
+ ],
270
+ "stateMutability": "view",
271
+ "type": "function"
272
+ },
273
+ {
274
+ "inputs": [
275
+ {
276
+ "internalType": "address",
277
+ "name": "_user",
278
+ "type": "address"
279
+ }
280
+ ],
281
+ "name": "blacklist",
282
+ "outputs": [],
283
+ "stateMutability": "nonpayable",
284
+ "type": "function"
285
+ },
286
+ {
287
+ "inputs": [],
288
+ "name": "gasPrice",
289
+ "outputs": [
290
+ {
291
+ "internalType": "uint256",
292
+ "name": "",
293
+ "type": "uint256"
294
+ }
295
+ ],
296
+ "stateMutability": "view",
297
+ "type": "function"
298
+ },
299
+ {
300
+ "inputs": [
301
+ {
302
+ "internalType": "address",
303
+ "name": "_contract",
304
+ "type": "address"
305
+ },
306
+ {
307
+ "internalType": "bytes",
308
+ "name": "_data",
309
+ "type": "bytes"
310
+ },
311
+ {
312
+ "internalType": "uint256",
313
+ "name": "_value",
314
+ "type": "uint256"
315
+ }
316
+ ],
317
+ "name": "genericCall",
318
+ "outputs": [
319
+ {
320
+ "internalType": "bool",
321
+ "name": "success",
322
+ "type": "bool"
323
+ },
324
+ {
325
+ "internalType": "bytes",
326
+ "name": "returnValue",
327
+ "type": "bytes"
328
+ }
329
+ ],
330
+ "stateMutability": "nonpayable",
331
+ "type": "function"
332
+ },
333
+ {
334
+ "inputs": [
335
+ {
336
+ "internalType": "bytes32",
337
+ "name": "role",
338
+ "type": "bytes32"
339
+ }
340
+ ],
341
+ "name": "getRoleAdmin",
342
+ "outputs": [
343
+ {
344
+ "internalType": "bytes32",
345
+ "name": "",
346
+ "type": "bytes32"
347
+ }
348
+ ],
349
+ "stateMutability": "view",
350
+ "type": "function"
351
+ },
352
+ {
353
+ "inputs": [
354
+ {
355
+ "internalType": "bytes32",
356
+ "name": "role",
357
+ "type": "bytes32"
358
+ },
359
+ {
360
+ "internalType": "address",
361
+ "name": "account",
362
+ "type": "address"
363
+ }
364
+ ],
365
+ "name": "grantRole",
366
+ "outputs": [],
367
+ "stateMutability": "nonpayable",
368
+ "type": "function"
369
+ },
370
+ {
371
+ "inputs": [
372
+ {
373
+ "internalType": "bytes32",
374
+ "name": "role",
375
+ "type": "bytes32"
376
+ },
377
+ {
378
+ "internalType": "address",
379
+ "name": "account",
380
+ "type": "address"
381
+ }
382
+ ],
383
+ "name": "hasRole",
384
+ "outputs": [
385
+ {
386
+ "internalType": "bool",
387
+ "name": "",
388
+ "type": "bool"
389
+ }
390
+ ],
391
+ "stateMutability": "view",
392
+ "type": "function"
393
+ },
394
+ {
395
+ "inputs": [],
396
+ "name": "identity",
397
+ "outputs": [
398
+ {
399
+ "internalType": "contract IIdentity",
400
+ "name": "",
401
+ "type": "address"
402
+ }
403
+ ],
404
+ "stateMutability": "view",
405
+ "type": "function"
406
+ },
407
+ {
408
+ "inputs": [
409
+ {
410
+ "internalType": "address payable[]",
411
+ "name": "_admins",
412
+ "type": "address[]"
413
+ },
414
+ {
415
+ "internalType": "address",
416
+ "name": "_owner",
417
+ "type": "address"
418
+ },
419
+ {
420
+ "internalType": "contract IIdentity",
421
+ "name": "_identity",
422
+ "type": "address"
423
+ }
424
+ ],
425
+ "name": "initialize",
426
+ "outputs": [],
427
+ "stateMutability": "nonpayable",
428
+ "type": "function"
429
+ },
430
+ {
431
+ "inputs": [
432
+ {
433
+ "internalType": "address",
434
+ "name": "_user",
435
+ "type": "address"
436
+ }
437
+ ],
438
+ "name": "isAdmin",
439
+ "outputs": [
440
+ {
441
+ "internalType": "bool",
442
+ "name": "",
443
+ "type": "bool"
444
+ }
445
+ ],
446
+ "stateMutability": "view",
447
+ "type": "function"
448
+ },
449
+ {
450
+ "inputs": [],
451
+ "name": "owner",
452
+ "outputs": [
453
+ {
454
+ "internalType": "address",
455
+ "name": "",
456
+ "type": "address"
457
+ }
458
+ ],
459
+ "stateMutability": "view",
460
+ "type": "function"
461
+ },
462
+ {
463
+ "inputs": [
464
+ {
465
+ "internalType": "address[]",
466
+ "name": "_admins",
467
+ "type": "address[]"
468
+ }
469
+ ],
470
+ "name": "removeAdmins",
471
+ "outputs": [],
472
+ "stateMutability": "nonpayable",
473
+ "type": "function"
474
+ },
475
+ {
476
+ "inputs": [
477
+ {
478
+ "internalType": "address",
479
+ "name": "_user",
480
+ "type": "address"
481
+ }
482
+ ],
483
+ "name": "removeBlacklist",
484
+ "outputs": [],
485
+ "stateMutability": "nonpayable",
486
+ "type": "function"
487
+ },
488
+ {
489
+ "inputs": [
490
+ {
491
+ "internalType": "address",
492
+ "name": "_user",
493
+ "type": "address"
494
+ }
495
+ ],
496
+ "name": "removeWhitelist",
497
+ "outputs": [],
498
+ "stateMutability": "nonpayable",
499
+ "type": "function"
500
+ },
501
+ {
502
+ "inputs": [],
503
+ "name": "renounceOwnership",
504
+ "outputs": [],
505
+ "stateMutability": "nonpayable",
506
+ "type": "function"
507
+ },
508
+ {
509
+ "inputs": [
510
+ {
511
+ "internalType": "bytes32",
512
+ "name": "role",
513
+ "type": "bytes32"
514
+ },
515
+ {
516
+ "internalType": "address",
517
+ "name": "account",
518
+ "type": "address"
519
+ }
520
+ ],
521
+ "name": "renounceRole",
522
+ "outputs": [],
523
+ "stateMutability": "nonpayable",
524
+ "type": "function"
525
+ },
526
+ {
527
+ "inputs": [
528
+ {
529
+ "internalType": "bytes32",
530
+ "name": "role",
531
+ "type": "bytes32"
532
+ },
533
+ {
534
+ "internalType": "address",
535
+ "name": "account",
536
+ "type": "address"
537
+ }
538
+ ],
539
+ "name": "revokeRole",
540
+ "outputs": [],
541
+ "stateMutability": "nonpayable",
542
+ "type": "function"
543
+ },
544
+ {
545
+ "inputs": [
546
+ {
547
+ "internalType": "uint256",
548
+ "name": "_toppingAmount",
549
+ "type": "uint256"
550
+ },
551
+ {
552
+ "internalType": "uint256",
553
+ "name": "_adminToppingAmount",
554
+ "type": "uint256"
555
+ },
556
+ {
557
+ "internalType": "uint256",
558
+ "name": "_toppingTimes",
559
+ "type": "uint256"
560
+ },
561
+ {
562
+ "internalType": "uint256",
563
+ "name": "_gasPrice",
564
+ "type": "uint256"
565
+ }
566
+ ],
567
+ "name": "setDefaults",
568
+ "outputs": [],
569
+ "stateMutability": "nonpayable",
570
+ "type": "function"
571
+ },
572
+ {
573
+ "inputs": [
574
+ {
575
+ "internalType": "bytes4",
576
+ "name": "interfaceId",
577
+ "type": "bytes4"
578
+ }
579
+ ],
580
+ "name": "supportsInterface",
581
+ "outputs": [
582
+ {
583
+ "internalType": "bool",
584
+ "name": "",
585
+ "type": "bool"
586
+ }
587
+ ],
588
+ "stateMutability": "view",
589
+ "type": "function"
590
+ },
591
+ {
592
+ "inputs": [
593
+ {
594
+ "internalType": "uint256",
595
+ "name": "startIndex",
596
+ "type": "uint256"
597
+ },
598
+ {
599
+ "internalType": "uint256",
600
+ "name": "endIndex",
601
+ "type": "uint256"
602
+ }
603
+ ],
604
+ "name": "topAdmins",
605
+ "outputs": [],
606
+ "stateMutability": "nonpayable",
607
+ "type": "function"
608
+ },
609
+ {
610
+ "inputs": [
611
+ {
612
+ "internalType": "uint256",
613
+ "name": "startIndex",
614
+ "type": "uint256"
615
+ }
616
+ ],
617
+ "name": "topAdmins",
618
+ "outputs": [],
619
+ "stateMutability": "nonpayable",
620
+ "type": "function"
621
+ },
622
+ {
623
+ "inputs": [
624
+ {
625
+ "internalType": "address payable",
626
+ "name": "_user",
627
+ "type": "address"
628
+ }
629
+ ],
630
+ "name": "topWallet",
631
+ "outputs": [],
632
+ "stateMutability": "nonpayable",
633
+ "type": "function"
634
+ },
635
+ {
636
+ "inputs": [],
637
+ "name": "toppingAmount",
638
+ "outputs": [
639
+ {
640
+ "internalType": "uint256",
641
+ "name": "",
642
+ "type": "uint256"
643
+ }
644
+ ],
645
+ "stateMutability": "view",
646
+ "type": "function"
647
+ },
648
+ {
649
+ "inputs": [],
650
+ "name": "toppingTimes",
651
+ "outputs": [
652
+ {
653
+ "internalType": "uint256",
654
+ "name": "",
655
+ "type": "uint256"
656
+ }
657
+ ],
658
+ "stateMutability": "view",
659
+ "type": "function"
660
+ },
661
+ {
662
+ "inputs": [
663
+ {
664
+ "internalType": "address",
665
+ "name": "newOwner",
666
+ "type": "address"
667
+ }
668
+ ],
669
+ "name": "transferOwnership",
670
+ "outputs": [],
671
+ "stateMutability": "nonpayable",
672
+ "type": "function"
673
+ },
674
+ {
675
+ "inputs": [
676
+ {
677
+ "internalType": "address",
678
+ "name": "newImplementation",
679
+ "type": "address"
680
+ }
681
+ ],
682
+ "name": "upgradeTo",
683
+ "outputs": [],
684
+ "stateMutability": "nonpayable",
685
+ "type": "function"
686
+ },
687
+ {
688
+ "inputs": [
689
+ {
690
+ "internalType": "address",
691
+ "name": "newImplementation",
692
+ "type": "address"
693
+ },
694
+ {
695
+ "internalType": "bytes",
696
+ "name": "data",
697
+ "type": "bytes"
698
+ }
699
+ ],
700
+ "name": "upgradeToAndCall",
701
+ "outputs": [],
702
+ "stateMutability": "payable",
703
+ "type": "function"
704
+ },
705
+ {
706
+ "inputs": [
707
+ {
708
+ "internalType": "address",
709
+ "name": "_user",
710
+ "type": "address"
711
+ },
712
+ {
713
+ "internalType": "string",
714
+ "name": "_did",
715
+ "type": "string"
716
+ }
717
+ ],
718
+ "name": "whitelist",
719
+ "outputs": [],
720
+ "stateMutability": "nonpayable",
721
+ "type": "function"
722
+ },
723
+ {
724
+ "stateMutability": "payable",
725
+ "type": "receive"
726
+ }
727
+ ],
728
+ "bytecode": "0x60a06040523060601b60805234801561001757600080fd5b5060805160601c61235561004b6000396000818161082a0152818161086a01528181610ae10152610b2101526123556000f3fe60806040526004361061016c5760003560e01c806301ffc9a714610178578063133d93a1146101ad578063248a9ca3146101dd57806324d7806c146101fd5780632beeaca41461021d5780632bf164581461023f5780632c159a1a1461026d5780632f2ff15d1461029b57806336568abe146102bb5780633659cfe6146102db5780633771dcf8146102fb578063377e11e01461031b5780634f1ef2861461033b5780635fc944e91461034e578063715018a61461036e57806378c8cda7146103835780637e2c1355146103a35780638da5cb5b146103c357806390482d72146103d857806391d14854146103f85780639c54df6414610418578063a217fddf14610438578063c48924961461044d578063d547741f14610464578063db62683814610484578063e6ea3939146104a4578063eb91e651146104bb578063f2fde38b146104db578063f3da9f05146104fb578063f9f92be414610512578063fe173b971461053257600080fd5b3661017357005b600080fd5b34801561018457600080fd5b50610198610193366004611a6f565b610549565b60405190151581526020015b60405180910390f35b3480156101b957600080fd5b506101cf60008051602061229983398151915281565b6040519081526020016101a4565b3480156101e957600080fd5b506101cf6101f8366004611a99565b610580565b34801561020957600080fd5b50610198610218366004611ac7565b610595565b34801561022957600080fd5b5061023d610238366004611b81565b6105af565b005b34801561024b57600080fd5b5061025f61025a366004611c04565b610678565b6040516101a4929190611cb4565b34801561027957600080fd5b506101325461028e906001600160a01b031681565b6040516101a49190611cd7565b3480156102a757600080fd5b5061023d6102b6366004611ceb565b610783565b3480156102c757600080fd5b5061023d6102d6366004611ceb565b6107a5565b3480156102e757600080fd5b5061023d6102f6366004611ac7565b61081f565b34801561030757600080fd5b5061023d610316366004611ac7565b6108e8565b34801561032757600080fd5b5061023d610336366004611d3e565b610a16565b61023d610349366004611ddc565b610ad6565b34801561035a57600080fd5b5061023d610369366004611e21565b610b8c565b34801561037a57600080fd5b5061023d610cba565b34801561038f57600080fd5b5061023d61039e366004611ac7565b610cf5565b3480156103af57600080fd5b5061023d6103be366004611e43565b610d8d565b3480156103cf57600080fd5b5061028e610dce565b3480156103e457600080fd5b5061023d6103f3366004611ee4565b610ddd565b34801561040457600080fd5b50610198610413366004611ceb565b610eaa565b34801561042457600080fd5b5061023d610433366004611f47565b610ed5565b34801561044457600080fd5b506101cf600081565b34801561045957600080fd5b506101cf61012f5481565b34801561047057600080fd5b5061023d61047f366004611ceb565b61100c565b34801561049057600080fd5b5061023d61049f366004611a99565b611029565b3480156104b057600080fd5b506101cf61012e5481565b3480156104c757600080fd5b5061023d6104d6366004611ac7565b611038565b3480156104e757600080fd5b5061023d6104f6366004611ac7565b61108e565b34801561050757600080fd5b506101cf6101305481565b34801561051e57600080fd5b5061023d61052d366004611ac7565b61112b565b34801561053e57600080fd5b506101cf6101315481565b60006001600160e01b03198216637965db0b60e01b148061057a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b600090815260fb602052604090206001015490565b600061057a60008051602061229983398151915283610eaa565b6105b833610595565b6105dd5760405162461bcd60e51b81526004016105d490611f7b565b60405180910390fd5b61013254604051631b02709960e01b81526001600160a01b0390911690631b027099906106109085908590600401611fa8565b600060405180830381600087803b15801561062a57600080fd5b505af115801561063e573d6000803e3d6000fd5b50505050600261012f546106529190611fe2565b333111801590610666575061066633610595565b156106745761067433611181565b5050565b6000606061068533610595565b6106a15760405162461bcd60e51b81526004016105d490611f7b565b846001600160a01b031683856040516106ba9190612004565b60006040518083038185875af1925050503d80600081146106f7576040519150601f19603f3d011682016040523d82523d6000602084013e6106fc565b606091505b5060405191935091506001600160a01b038616907f534b52c783549f909f9e743120524d0b7154058e4a54cdc895c2c0b587a1c7e09061074190879087908790612020565b60405180910390a2600261012f546107599190611fe2565b33311180159061076d575061076d33610595565b1561077b5761077b33611181565b935093915050565b61078c82610580565b610796813361128d565b6107a083836112f1565b505050565b6001600160a01b03811633146108155760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105d4565b6106748282611377565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156108685760405162461bcd60e51b81526004016105d49061204a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661089a6113de565b6001600160a01b0316146108c05760405162461bcd60e51b81526004016105d490612084565b6108c9816113fa565b604080516000808252602082019092526108e591839190611429565b50565b6108f133610595565b61090d5760405162461bcd60e51b81526004016105d490611f7b565b61013054610133600061091e611570565b81526020019081526020016000206000836001600160a01b03166001600160a01b0316815260200190815260200160002054106109b65760405162461bcd60e51b815260206004820152603060248201527f557365722077616c6c657420686173206265656e20746f7070656420746f6f2060448201526f6d616e792074696d657320746f64617960801b60648201526084016105d4565b600461012e546109c69190611fe2565b816001600160a01b031631106109db576109e4565b6109e481611181565b600261012f546109f49190611fe2565b333111801590610a085750610a0833610595565b156108e5576108e533611181565b33610a1f610dce565b6001600160a01b031614610a455760405162461bcd60e51b81526004016105d4906120be565b60005b8151811015610a9457610a82600080516020612299833981519152838381518110610a7557610a756120f3565b602002602001015161100c565b80610a8c81612109565b915050610a48565b5080604051610aa39190612124565b604051908190038120907fd5e6894641b5030a67e637ab2e12da64d8aec689f8bd1328de2b04d6a439c81090600090a250565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610b1f5760405162461bcd60e51b81526004016105d49061204a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b516113de565b6001600160a01b031614610b775760405162461bcd60e51b81526004016105d490612084565b610b80826113fa565b61067482826001611429565b61012d548210610bd45760405162461bcd60e51b815260206004820152601360248201527241646d696e206c69737420697320656d70747960681b60448201526064016105d4565b815b61012d5481108015610be757508181105b15610ca957610c1d61012d8281548110610c0357610c036120f3565b6000918252602090912001546001600160a01b0316610595565b8015610c615750600261012f54610c349190611fe2565b61012d8281548110610c4857610c486120f3565b6000918252602090912001546001600160a01b03163111155b15610c9757610c9761012d8281548110610c7d57610c7d6120f3565b6000918252602090912001546001600160a01b0316611181565b80610ca181612109565b915050610bd6565b50600261012f546106529190611fe2565b33610cc3610dce565b6001600160a01b031614610ce95760405162461bcd60e51b81526004016105d4906120be565b610cf36000611584565b565b610cfe33610595565b610d1a5760405162461bcd60e51b81526004016105d490611f7b565b6101325460405163291d954960e01b81526001600160a01b039091169063291d954990610d4b908490600401611cd7565b600060405180830381600087803b158015610d6557600080fd5b505af1158015610d79573d6000803e3d6000fd5b50505050600261012f546109f49190611fe2565b33610d96610dce565b6001600160a01b031614610dbc5760405162461bcd60e51b81526004016105d4906120be565b610dc8848484846115d6565b50505050565b6097546001600160a01b031690565b600054610100900460ff1680610df6575060005460ff16155b610e125760405162461bcd60e51b81526004016105d490612163565b600054610100900460ff16158015610e34576000805461ffff19166101011790555b610e3c611601565b610e4461166c565b610e4f6000846116cc565b610e67620927c06289544060036402540be4006115d6565b61013280546001600160a01b0319166001600160a01b038416179055835115610e9357610e9384610ed5565b8015610dc8576000805461ff001916905550505050565b600091825260fb602090815260408084206001600160a01b0393909316845291905290205460ff1690565b33610ede610dce565b6001600160a01b031614610f045760405162461bcd60e51b81526004016105d4906120be565b60005b8151811015610fca57610f32828281518110610f2557610f256120f3565b6020026020010151610595565b610fb857610f67600080516020612299833981519152838381518110610f5a57610f5a6120f3565b6020026020010151610783565b61012d828281518110610f7c57610f7c6120f3565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790555b80610fc281612109565b915050610f07565b5080604051610fd99190612124565b604051908190038120907f45486b220020cc2482ad1a5e0ae4d5f0b5372cea1b48173f6273c616a504726990600090a250565b61101582610580565b61101f813361128d565b6107a08383611377565b6109e4816103698160326121b1565b61104133610595565b61105d5760405162461bcd60e51b81526004016105d490611f7b565b610132546040516363513b6160e11b81526001600160a01b039091169063c6a276c290610d4b908490600401611cd7565b33611097610dce565b6001600160a01b0316146110bd5760405162461bcd60e51b81526004016105d4906120be565b6001600160a01b0381166111225760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d4565b6108e581611584565b61113433610595565b6111505760405162461bcd60e51b81526004016105d490611f7b565b61013254604051630c477e0b60e11b81526001600160a01b039091169063188efc1690610d4b908490600401611cd7565b60016101336000611190611570565b81526020019081526020016000206000836001600160a01b03166001600160a01b0316815260200190815260200160002060008282546111d091906121b1565b90915550600090506111e182610595565b6111ee5761012e546111f3565b61012f545b9050600061120b6001600160a01b03841631836121c9565b6040519091506001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611244573d6000803e3d6000fd5b50826001600160a01b03167ff60e56b8021f6ac77bd50d4acdbed9ad9e85107144d43090774a9ebe5ffed9858260405161128091815260200190565b60405180910390a2505050565b6112978282610eaa565b610674576112af816001600160a01b031660146116d6565b6112ba8360206116d6565b6040516020016112cb9291906121e0565b60408051601f198184030181529082905262461bcd60e51b82526105d49160040161224f565b6112fb8282610eaa565b61067457600082815260fb602090815260408083206001600160a01b03851684529091529020805460ff191660011790556113333390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6113818282610eaa565b1561067457600082815260fb602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000805160206122d9833981519152546001600160a01b031690565b33611403610dce565b6001600160a01b0316146108e55760405162461bcd60e51b81526004016105d4906120be565b60006114336113de565b905061143e84611878565b60008351118061144b5750815b1561145c5761145a848461190b565b505b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143805460ff1661156957805460ff191660011781556040516114d79086906114a8908590602401611cd7565b60408051601f198184030181529190526020810180516001600160e01b0316631b2ce7f360e11b17905261190b565b50805460ff191681556114e86113de565b6001600160a01b0316826001600160a01b0316146115605760405162461bcd60e51b815260206004820152602f60248201527f45524331393637557067726164653a207570677261646520627265616b73206660448201526e75727468657220757067726164657360881b60648201526084016105d4565b611569856119f6565b5050505050565b600061157f6201518042611fe2565b905090565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6101318190556115e68185612262565b61012e556115f48184612262565b61012f5550610130555050565b600054610100900460ff168061161a575060005460ff16155b6116365760405162461bcd60e51b81526004016105d490612163565b600054610100900460ff16158015611658576000805461ffff19166101011790555b80156108e5576000805461ff001916905550565b600054610100900460ff1680611685575060005460ff16155b6116a15760405162461bcd60e51b81526004016105d490612163565b600054610100900460ff161580156116c3576000805461ffff19166101011790555b61165833611584565b61067482826112f1565b606060006116e5836002612262565b6116f09060026121b1565b6001600160401b0381111561170757611707611ae4565b6040519080825280601f01601f191660200182016040528015611731576020820181803683370190505b509050600360fc1b8160008151811061174c5761174c6120f3565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061177b5761177b6120f3565b60200101906001600160f81b031916908160001a905350600061179f846002612262565b6117aa9060016121b1565b90505b6001811115611822576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106117de576117de6120f3565b1a60f81b8282815181106117f4576117f46120f3565b60200101906001600160f81b031916908160001a90535060049490941c9361181b81612281565b90506117ad565b5083156118715760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105d4565b9392505050565b803b6118dc5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016105d4565b6000805160206122d983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060823b61196a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016105d4565b600080846001600160a01b0316846040516119859190612004565b600060405180830381855af49150503d80600081146119c0576040519150601f19603f3d011682016040523d82523d6000602084013e6119c5565b606091505b50915091506119ed82826040518060600160405280602781526020016122f960279139611a36565b95945050505050565b6119ff81611878565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60608315611a45575081611871565b825115611a555782518084602001fd5b8160405162461bcd60e51b81526004016105d4919061224f565b600060208284031215611a8157600080fd5b81356001600160e01b03198116811461187157600080fd5b600060208284031215611aab57600080fd5b5035919050565b6001600160a01b03811681146108e557600080fd5b600060208284031215611ad957600080fd5b813561187181611ab2565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611b2257611b22611ae4565b604052919050565b60006001600160401b03831115611b4357611b43611ae4565b611b56601f8401601f1916602001611afa565b9050828152838383011115611b6a57600080fd5b828260208301376000602084830101529392505050565b60008060408385031215611b9457600080fd5b8235611b9f81611ab2565b915060208301356001600160401b03811115611bba57600080fd5b8301601f81018513611bcb57600080fd5b611bda85823560208401611b2a565b9150509250929050565b600082601f830112611bf557600080fd5b61187183833560208501611b2a565b600080600060608486031215611c1957600080fd5b8335611c2481611ab2565b925060208401356001600160401b03811115611c3f57600080fd5b611c4b86828701611be4565b925050604084013590509250925092565b60005b83811015611c77578181015183820152602001611c5f565b83811115610dc85750506000910152565b60008151808452611ca0816020860160208601611c5c565b601f01601f19169290920160200192915050565b8215158152604060208201526000611ccf6040830184611c88565b949350505050565b6001600160a01b0391909116815260200190565b60008060408385031215611cfe57600080fd5b823591506020830135611d1081611ab2565b809150509250929050565b60006001600160401b03821115611d3457611d34611ae4565b5060051b60200190565b60006020808385031215611d5157600080fd5b82356001600160401b03811115611d6757600080fd5b8301601f81018513611d7857600080fd5b8035611d8b611d8682611d1b565b611afa565b81815260059190911b82018301908381019087831115611daa57600080fd5b928401925b82841015611dd1578335611dc281611ab2565b82529284019290840190611daf565b979650505050505050565b60008060408385031215611def57600080fd5b8235611dfa81611ab2565b915060208301356001600160401b03811115611e1557600080fd5b611bda85828601611be4565b60008060408385031215611e3457600080fd5b50508035926020909101359150565b60008060008060808587031215611e5957600080fd5b5050823594602084013594506040840135936060013592509050565b600082601f830112611e8657600080fd5b81356020611e96611d8683611d1b565b82815260059290921b84018101918181019086841115611eb557600080fd5b8286015b84811015611ed9578035611ecc81611ab2565b8352918301918301611eb9565b509695505050505050565b600080600060608486031215611ef957600080fd5b83356001600160401b03811115611f0f57600080fd5b611f1b86828701611e75565b9350506020840135611f2c81611ab2565b91506040840135611f3c81611ab2565b809150509250925092565b600060208284031215611f5957600080fd5b81356001600160401b03811115611f6f57600080fd5b611ccf84828501611e75565b60208082526013908201527221b0b63632b91034b9903737ba1030b236b4b760691b604082015260600190565b6001600160a01b0383168152604060208201819052600090611ccf90830184611c88565b634e487b7160e01b600052601160045260246000fd5b600082611fff57634e487b7160e01b600052601260045260246000fd5b500490565b60008251612016818460208701611c5c565b9190910192915050565b6060815260006120336060830186611c88565b602083019490945250901515604090910152919050565b6020808252602c908201526000805160206122b983398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201526000805160206122b983398151915260408201526b6163746976652070726f787960a01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600060001982141561211d5761211d611fcc565b5060010190565b815160009082906020808601845b838110156121575781516001600160a01b031685529382019390820190600101612132565b50929695505050505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600082198211156121c4576121c4611fcc565b500190565b6000828210156121db576121db611fcc565b500390565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351612212816017850160208801611c5c565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612243816028840160208801611c5c565b01602801949350505050565b6020815260006118716020830184611c88565b600081600019048311821515161561227c5761227c611fcc565b500290565b60008161229057612290611fcc565b50600019019056febf18f3bdda8a65fc5ec294c2c787f805aceec15eed9fe17fdb6588866be113dc46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220effa031a9bb44c9166af430e840425d44c9ecd4973b8e0e44b12f1877ce66d9064736f6c63430008080033",
729
+ "deployedBytecode": "0x60806040526004361061016c5760003560e01c806301ffc9a714610178578063133d93a1146101ad578063248a9ca3146101dd57806324d7806c146101fd5780632beeaca41461021d5780632bf164581461023f5780632c159a1a1461026d5780632f2ff15d1461029b57806336568abe146102bb5780633659cfe6146102db5780633771dcf8146102fb578063377e11e01461031b5780634f1ef2861461033b5780635fc944e91461034e578063715018a61461036e57806378c8cda7146103835780637e2c1355146103a35780638da5cb5b146103c357806390482d72146103d857806391d14854146103f85780639c54df6414610418578063a217fddf14610438578063c48924961461044d578063d547741f14610464578063db62683814610484578063e6ea3939146104a4578063eb91e651146104bb578063f2fde38b146104db578063f3da9f05146104fb578063f9f92be414610512578063fe173b971461053257600080fd5b3661017357005b600080fd5b34801561018457600080fd5b50610198610193366004611a6f565b610549565b60405190151581526020015b60405180910390f35b3480156101b957600080fd5b506101cf60008051602061229983398151915281565b6040519081526020016101a4565b3480156101e957600080fd5b506101cf6101f8366004611a99565b610580565b34801561020957600080fd5b50610198610218366004611ac7565b610595565b34801561022957600080fd5b5061023d610238366004611b81565b6105af565b005b34801561024b57600080fd5b5061025f61025a366004611c04565b610678565b6040516101a4929190611cb4565b34801561027957600080fd5b506101325461028e906001600160a01b031681565b6040516101a49190611cd7565b3480156102a757600080fd5b5061023d6102b6366004611ceb565b610783565b3480156102c757600080fd5b5061023d6102d6366004611ceb565b6107a5565b3480156102e757600080fd5b5061023d6102f6366004611ac7565b61081f565b34801561030757600080fd5b5061023d610316366004611ac7565b6108e8565b34801561032757600080fd5b5061023d610336366004611d3e565b610a16565b61023d610349366004611ddc565b610ad6565b34801561035a57600080fd5b5061023d610369366004611e21565b610b8c565b34801561037a57600080fd5b5061023d610cba565b34801561038f57600080fd5b5061023d61039e366004611ac7565b610cf5565b3480156103af57600080fd5b5061023d6103be366004611e43565b610d8d565b3480156103cf57600080fd5b5061028e610dce565b3480156103e457600080fd5b5061023d6103f3366004611ee4565b610ddd565b34801561040457600080fd5b50610198610413366004611ceb565b610eaa565b34801561042457600080fd5b5061023d610433366004611f47565b610ed5565b34801561044457600080fd5b506101cf600081565b34801561045957600080fd5b506101cf61012f5481565b34801561047057600080fd5b5061023d61047f366004611ceb565b61100c565b34801561049057600080fd5b5061023d61049f366004611a99565b611029565b3480156104b057600080fd5b506101cf61012e5481565b3480156104c757600080fd5b5061023d6104d6366004611ac7565b611038565b3480156104e757600080fd5b5061023d6104f6366004611ac7565b61108e565b34801561050757600080fd5b506101cf6101305481565b34801561051e57600080fd5b5061023d61052d366004611ac7565b61112b565b34801561053e57600080fd5b506101cf6101315481565b60006001600160e01b03198216637965db0b60e01b148061057a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b600090815260fb602052604090206001015490565b600061057a60008051602061229983398151915283610eaa565b6105b833610595565b6105dd5760405162461bcd60e51b81526004016105d490611f7b565b60405180910390fd5b61013254604051631b02709960e01b81526001600160a01b0390911690631b027099906106109085908590600401611fa8565b600060405180830381600087803b15801561062a57600080fd5b505af115801561063e573d6000803e3d6000fd5b50505050600261012f546106529190611fe2565b333111801590610666575061066633610595565b156106745761067433611181565b5050565b6000606061068533610595565b6106a15760405162461bcd60e51b81526004016105d490611f7b565b846001600160a01b031683856040516106ba9190612004565b60006040518083038185875af1925050503d80600081146106f7576040519150601f19603f3d011682016040523d82523d6000602084013e6106fc565b606091505b5060405191935091506001600160a01b038616907f534b52c783549f909f9e743120524d0b7154058e4a54cdc895c2c0b587a1c7e09061074190879087908790612020565b60405180910390a2600261012f546107599190611fe2565b33311180159061076d575061076d33610595565b1561077b5761077b33611181565b935093915050565b61078c82610580565b610796813361128d565b6107a083836112f1565b505050565b6001600160a01b03811633146108155760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105d4565b6106748282611377565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156108685760405162461bcd60e51b81526004016105d49061204a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661089a6113de565b6001600160a01b0316146108c05760405162461bcd60e51b81526004016105d490612084565b6108c9816113fa565b604080516000808252602082019092526108e591839190611429565b50565b6108f133610595565b61090d5760405162461bcd60e51b81526004016105d490611f7b565b61013054610133600061091e611570565b81526020019081526020016000206000836001600160a01b03166001600160a01b0316815260200190815260200160002054106109b65760405162461bcd60e51b815260206004820152603060248201527f557365722077616c6c657420686173206265656e20746f7070656420746f6f2060448201526f6d616e792074696d657320746f64617960801b60648201526084016105d4565b600461012e546109c69190611fe2565b816001600160a01b031631106109db576109e4565b6109e481611181565b600261012f546109f49190611fe2565b333111801590610a085750610a0833610595565b156108e5576108e533611181565b33610a1f610dce565b6001600160a01b031614610a455760405162461bcd60e51b81526004016105d4906120be565b60005b8151811015610a9457610a82600080516020612299833981519152838381518110610a7557610a756120f3565b602002602001015161100c565b80610a8c81612109565b915050610a48565b5080604051610aa39190612124565b604051908190038120907fd5e6894641b5030a67e637ab2e12da64d8aec689f8bd1328de2b04d6a439c81090600090a250565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610b1f5760405162461bcd60e51b81526004016105d49061204a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b516113de565b6001600160a01b031614610b775760405162461bcd60e51b81526004016105d490612084565b610b80826113fa565b61067482826001611429565b61012d548210610bd45760405162461bcd60e51b815260206004820152601360248201527241646d696e206c69737420697320656d70747960681b60448201526064016105d4565b815b61012d5481108015610be757508181105b15610ca957610c1d61012d8281548110610c0357610c036120f3565b6000918252602090912001546001600160a01b0316610595565b8015610c615750600261012f54610c349190611fe2565b61012d8281548110610c4857610c486120f3565b6000918252602090912001546001600160a01b03163111155b15610c9757610c9761012d8281548110610c7d57610c7d6120f3565b6000918252602090912001546001600160a01b0316611181565b80610ca181612109565b915050610bd6565b50600261012f546106529190611fe2565b33610cc3610dce565b6001600160a01b031614610ce95760405162461bcd60e51b81526004016105d4906120be565b610cf36000611584565b565b610cfe33610595565b610d1a5760405162461bcd60e51b81526004016105d490611f7b565b6101325460405163291d954960e01b81526001600160a01b039091169063291d954990610d4b908490600401611cd7565b600060405180830381600087803b158015610d6557600080fd5b505af1158015610d79573d6000803e3d6000fd5b50505050600261012f546109f49190611fe2565b33610d96610dce565b6001600160a01b031614610dbc5760405162461bcd60e51b81526004016105d4906120be565b610dc8848484846115d6565b50505050565b6097546001600160a01b031690565b600054610100900460ff1680610df6575060005460ff16155b610e125760405162461bcd60e51b81526004016105d490612163565b600054610100900460ff16158015610e34576000805461ffff19166101011790555b610e3c611601565b610e4461166c565b610e4f6000846116cc565b610e67620927c06289544060036402540be4006115d6565b61013280546001600160a01b0319166001600160a01b038416179055835115610e9357610e9384610ed5565b8015610dc8576000805461ff001916905550505050565b600091825260fb602090815260408084206001600160a01b0393909316845291905290205460ff1690565b33610ede610dce565b6001600160a01b031614610f045760405162461bcd60e51b81526004016105d4906120be565b60005b8151811015610fca57610f32828281518110610f2557610f256120f3565b6020026020010151610595565b610fb857610f67600080516020612299833981519152838381518110610f5a57610f5a6120f3565b6020026020010151610783565b61012d828281518110610f7c57610f7c6120f3565b60209081029190910181015182546001810184556000938452919092200180546001600160a01b0319166001600160a01b039092169190911790555b80610fc281612109565b915050610f07565b5080604051610fd99190612124565b604051908190038120907f45486b220020cc2482ad1a5e0ae4d5f0b5372cea1b48173f6273c616a504726990600090a250565b61101582610580565b61101f813361128d565b6107a08383611377565b6109e4816103698160326121b1565b61104133610595565b61105d5760405162461bcd60e51b81526004016105d490611f7b565b610132546040516363513b6160e11b81526001600160a01b039091169063c6a276c290610d4b908490600401611cd7565b33611097610dce565b6001600160a01b0316146110bd5760405162461bcd60e51b81526004016105d4906120be565b6001600160a01b0381166111225760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d4565b6108e581611584565b61113433610595565b6111505760405162461bcd60e51b81526004016105d490611f7b565b61013254604051630c477e0b60e11b81526001600160a01b039091169063188efc1690610d4b908490600401611cd7565b60016101336000611190611570565b81526020019081526020016000206000836001600160a01b03166001600160a01b0316815260200190815260200160002060008282546111d091906121b1565b90915550600090506111e182610595565b6111ee5761012e546111f3565b61012f545b9050600061120b6001600160a01b03841631836121c9565b6040519091506001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611244573d6000803e3d6000fd5b50826001600160a01b03167ff60e56b8021f6ac77bd50d4acdbed9ad9e85107144d43090774a9ebe5ffed9858260405161128091815260200190565b60405180910390a2505050565b6112978282610eaa565b610674576112af816001600160a01b031660146116d6565b6112ba8360206116d6565b6040516020016112cb9291906121e0565b60408051601f198184030181529082905262461bcd60e51b82526105d49160040161224f565b6112fb8282610eaa565b61067457600082815260fb602090815260408083206001600160a01b03851684529091529020805460ff191660011790556113333390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6113818282610eaa565b1561067457600082815260fb602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000805160206122d9833981519152546001600160a01b031690565b33611403610dce565b6001600160a01b0316146108e55760405162461bcd60e51b81526004016105d4906120be565b60006114336113de565b905061143e84611878565b60008351118061144b5750815b1561145c5761145a848461190b565b505b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd9143805460ff1661156957805460ff191660011781556040516114d79086906114a8908590602401611cd7565b60408051601f198184030181529190526020810180516001600160e01b0316631b2ce7f360e11b17905261190b565b50805460ff191681556114e86113de565b6001600160a01b0316826001600160a01b0316146115605760405162461bcd60e51b815260206004820152602f60248201527f45524331393637557067726164653a207570677261646520627265616b73206660448201526e75727468657220757067726164657360881b60648201526084016105d4565b611569856119f6565b5050505050565b600061157f6201518042611fe2565b905090565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6101318190556115e68185612262565b61012e556115f48184612262565b61012f5550610130555050565b600054610100900460ff168061161a575060005460ff16155b6116365760405162461bcd60e51b81526004016105d490612163565b600054610100900460ff16158015611658576000805461ffff19166101011790555b80156108e5576000805461ff001916905550565b600054610100900460ff1680611685575060005460ff16155b6116a15760405162461bcd60e51b81526004016105d490612163565b600054610100900460ff161580156116c3576000805461ffff19166101011790555b61165833611584565b61067482826112f1565b606060006116e5836002612262565b6116f09060026121b1565b6001600160401b0381111561170757611707611ae4565b6040519080825280601f01601f191660200182016040528015611731576020820181803683370190505b509050600360fc1b8160008151811061174c5761174c6120f3565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061177b5761177b6120f3565b60200101906001600160f81b031916908160001a905350600061179f846002612262565b6117aa9060016121b1565b90505b6001811115611822576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106117de576117de6120f3565b1a60f81b8282815181106117f4576117f46120f3565b60200101906001600160f81b031916908160001a90535060049490941c9361181b81612281565b90506117ad565b5083156118715760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105d4565b9392505050565b803b6118dc5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016105d4565b6000805160206122d983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060823b61196a5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016105d4565b600080846001600160a01b0316846040516119859190612004565b600060405180830381855af49150503d80600081146119c0576040519150601f19603f3d011682016040523d82523d6000602084013e6119c5565b606091505b50915091506119ed82826040518060600160405280602781526020016122f960279139611a36565b95945050505050565b6119ff81611878565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60608315611a45575081611871565b825115611a555782518084602001fd5b8160405162461bcd60e51b81526004016105d4919061224f565b600060208284031215611a8157600080fd5b81356001600160e01b03198116811461187157600080fd5b600060208284031215611aab57600080fd5b5035919050565b6001600160a01b03811681146108e557600080fd5b600060208284031215611ad957600080fd5b813561187181611ab2565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611b2257611b22611ae4565b604052919050565b60006001600160401b03831115611b4357611b43611ae4565b611b56601f8401601f1916602001611afa565b9050828152838383011115611b6a57600080fd5b828260208301376000602084830101529392505050565b60008060408385031215611b9457600080fd5b8235611b9f81611ab2565b915060208301356001600160401b03811115611bba57600080fd5b8301601f81018513611bcb57600080fd5b611bda85823560208401611b2a565b9150509250929050565b600082601f830112611bf557600080fd5b61187183833560208501611b2a565b600080600060608486031215611c1957600080fd5b8335611c2481611ab2565b925060208401356001600160401b03811115611c3f57600080fd5b611c4b86828701611be4565b925050604084013590509250925092565b60005b83811015611c77578181015183820152602001611c5f565b83811115610dc85750506000910152565b60008151808452611ca0816020860160208601611c5c565b601f01601f19169290920160200192915050565b8215158152604060208201526000611ccf6040830184611c88565b949350505050565b6001600160a01b0391909116815260200190565b60008060408385031215611cfe57600080fd5b823591506020830135611d1081611ab2565b809150509250929050565b60006001600160401b03821115611d3457611d34611ae4565b5060051b60200190565b60006020808385031215611d5157600080fd5b82356001600160401b03811115611d6757600080fd5b8301601f81018513611d7857600080fd5b8035611d8b611d8682611d1b565b611afa565b81815260059190911b82018301908381019087831115611daa57600080fd5b928401925b82841015611dd1578335611dc281611ab2565b82529284019290840190611daf565b979650505050505050565b60008060408385031215611def57600080fd5b8235611dfa81611ab2565b915060208301356001600160401b03811115611e1557600080fd5b611bda85828601611be4565b60008060408385031215611e3457600080fd5b50508035926020909101359150565b60008060008060808587031215611e5957600080fd5b5050823594602084013594506040840135936060013592509050565b600082601f830112611e8657600080fd5b81356020611e96611d8683611d1b565b82815260059290921b84018101918181019086841115611eb557600080fd5b8286015b84811015611ed9578035611ecc81611ab2565b8352918301918301611eb9565b509695505050505050565b600080600060608486031215611ef957600080fd5b83356001600160401b03811115611f0f57600080fd5b611f1b86828701611e75565b9350506020840135611f2c81611ab2565b91506040840135611f3c81611ab2565b809150509250925092565b600060208284031215611f5957600080fd5b81356001600160401b03811115611f6f57600080fd5b611ccf84828501611e75565b60208082526013908201527221b0b63632b91034b9903737ba1030b236b4b760691b604082015260600190565b6001600160a01b0383168152604060208201819052600090611ccf90830184611c88565b634e487b7160e01b600052601160045260246000fd5b600082611fff57634e487b7160e01b600052601260045260246000fd5b500490565b60008251612016818460208701611c5c565b9190910192915050565b6060815260006120336060830186611c88565b602083019490945250901515604090910152919050565b6020808252602c908201526000805160206122b983398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201526000805160206122b983398151915260408201526b6163746976652070726f787960a01b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600060001982141561211d5761211d611fcc565b5060010190565b815160009082906020808601845b838110156121575781516001600160a01b031685529382019390820190600101612132565b50929695505050505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600082198211156121c4576121c4611fcc565b500190565b6000828210156121db576121db611fcc565b500390565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351612212816017850160208801611c5c565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612243816028840160208801611c5c565b01602801949350505050565b6020815260006118716020830184611c88565b600081600019048311821515161561227c5761227c611fcc565b500290565b60008161229057612290611fcc565b50600019019056febf18f3bdda8a65fc5ec294c2c787f805aceec15eed9fe17fdb6588866be113dc46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220effa031a9bb44c9166af430e840425d44c9ecd4973b8e0e44b12f1877ce66d9064736f6c63430008080033",
730
+ "linkReferences": {},
731
+ "deployedLinkReferences": {}
732
+ }