@venusprotocol/isolated-pools 1.0.0-dev.5 → 1.0.0-dev.6

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 (201) hide show
  1. package/contracts/Comptroller.sol +1 -1
  2. package/contracts/ExponentialNoError.sol +0 -7
  3. package/package.json +1 -1
  4. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.dbg.json +0 -4
  5. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.json +0 -215
  6. package/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.dbg.json +0 -4
  7. package/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.json +0 -183
  8. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +0 -4
  9. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json +0 -63
  10. package/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.dbg.json +0 -4
  11. package/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.json +0 -56
  12. package/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +0 -4
  13. package/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.json +0 -24
  14. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +0 -4
  15. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.json +0 -56
  16. package/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +0 -4
  17. package/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.json +0 -19
  18. package/artifacts/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol/BeaconProxy.dbg.json +0 -4
  19. package/artifacts/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol/BeaconProxy.json +0 -80
  20. package/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +0 -4
  21. package/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json +0 -24
  22. package/artifacts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +0 -4
  23. package/artifacts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +0 -113
  24. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +0 -4
  25. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +0 -297
  26. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +0 -4
  27. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json +0 -194
  28. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +0 -4
  29. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json +0 -233
  30. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +0 -4
  31. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json +0 -10
  32. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +0 -4
  33. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json +0 -10
  34. package/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +0 -4
  35. package/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +0 -10
  36. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +0 -4
  37. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +0 -10
  38. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json +0 -4
  39. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json +0 -30
  40. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json +0 -4
  41. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json +0 -30
  42. package/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json +0 -4
  43. package/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json +0 -10
  44. package/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.dbg.json +0 -4
  45. package/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.json +0 -10
  46. package/artifacts/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol/Ownable2StepUpgradeable.dbg.json +0 -4
  47. package/artifacts/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol/Ownable2StepUpgradeable.json +0 -115
  48. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +0 -4
  49. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +0 -76
  50. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +0 -4
  51. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +0 -24
  52. package/artifacts/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.dbg.json +0 -4
  53. package/artifacts/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.json +0 -24
  54. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +0 -4
  55. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.json +0 -194
  56. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol/IERC20PermitUpgradeable.dbg.json +0 -4
  57. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol/IERC20PermitUpgradeable.json +0 -86
  58. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol/SafeERC20Upgradeable.dbg.json +0 -4
  59. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol/SafeERC20Upgradeable.json +0 -10
  60. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +0 -4
  61. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +0 -10
  62. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +0 -4
  63. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +0 -24
  64. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlManager.sol/AccessControlManager.dbg.json +0 -4
  65. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlManager.sol/AccessControlManager.json +0 -369
  66. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.dbg.json +0 -4
  67. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.json +0 -181
  68. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.dbg.json +0 -4
  69. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.json +0 -282
  70. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.dbg.json +0 -4
  71. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.json +0 -40
  72. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.dbg.json +0 -4
  73. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.json +0 -30
  74. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.dbg.json +0 -4
  75. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.json +0 -43
  76. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.dbg.json +0 -4
  77. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.json +0 -49
  78. package/artifacts/build-info/9b8ff982dc5e6ff902ae9e610da49601.json +0 -1
  79. package/artifacts/build-info/f19d689bc99e63a20dd2a17a14e2b84a.json +0 -1
  80. package/artifacts/contracts/BaseJumpRateModelV2.sol/BaseJumpRateModelV2.dbg.json +0 -4
  81. package/artifacts/contracts/BaseJumpRateModelV2.sol/BaseJumpRateModelV2.json +0 -276
  82. package/artifacts/contracts/Comptroller.sol/Comptroller.dbg.json +0 -4
  83. package/artifacts/contracts/Comptroller.sol/Comptroller.json +0 -1667
  84. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerInterface.dbg.json +0 -4
  85. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerInterface.json +0 -285
  86. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerViewInterface.dbg.json +0 -4
  87. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerViewInterface.json +0 -170
  88. package/artifacts/contracts/ComptrollerStorage.sol/ComptrollerStorage.dbg.json +0 -4
  89. package/artifacts/contracts/ComptrollerStorage.sol/ComptrollerStorage.json +0 -173
  90. package/artifacts/contracts/ErrorReporter.sol/TokenErrorReporter.dbg.json +0 -4
  91. package/artifacts/contracts/ErrorReporter.sol/TokenErrorReporter.json +0 -156
  92. package/artifacts/contracts/ExponentialNoError.sol/ExponentialNoError.dbg.json +0 -4
  93. package/artifacts/contracts/ExponentialNoError.sol/ExponentialNoError.json +0 -10
  94. package/artifacts/contracts/Factories/JumpRateModelFactory.sol/JumpRateModelFactory.dbg.json +0 -4
  95. package/artifacts/contracts/Factories/JumpRateModelFactory.sol/JumpRateModelFactory.json +0 -50
  96. package/artifacts/contracts/Factories/VTokenProxyFactory.sol/VTokenProxyFactory.dbg.json +0 -4
  97. package/artifacts/contracts/Factories/VTokenProxyFactory.sol/VTokenProxyFactory.json +0 -191
  98. package/artifacts/contracts/Factories/WhitePaperInterestRateModelFactory.sol/WhitePaperInterestRateModelFactory.dbg.json +0 -4
  99. package/artifacts/contracts/Factories/WhitePaperInterestRateModelFactory.sol/WhitePaperInterestRateModelFactory.json +0 -35
  100. package/artifacts/contracts/IPancakeswapV2Router.sol/IPancakeswapV2Router.dbg.json +0 -4
  101. package/artifacts/contracts/IPancakeswapV2Router.sol/IPancakeswapV2Router.json +0 -50
  102. package/artifacts/contracts/InterestRateModel.sol/InterestRateModel.dbg.json +0 -4
  103. package/artifacts/contracts/InterestRateModel.sol/InterestRateModel.json +0 -97
  104. package/artifacts/contracts/JumpRateModelV2.sol/JumpRateModelV2.dbg.json +0 -4
  105. package/artifacts/contracts/JumpRateModelV2.sol/JumpRateModelV2.json +0 -307
  106. package/artifacts/contracts/Lens/PoolLens.sol/PoolLens.dbg.json +0 -4
  107. package/artifacts/contracts/Lens/PoolLens.sol/PoolLens.json +0 -1087
  108. package/artifacts/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.dbg.json +0 -4
  109. package/artifacts/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.json +0 -59
  110. package/artifacts/contracts/Pool/PoolRegistry.sol/PoolRegistry.dbg.json +0 -4
  111. package/artifacts/contracts/Pool/PoolRegistry.sol/PoolRegistry.json +0 -923
  112. package/artifacts/contracts/Pool/PoolRegistryInterface.sol/PoolRegistryInterface.dbg.json +0 -4
  113. package/artifacts/contracts/Pool/PoolRegistryInterface.sol/PoolRegistryInterface.json +0 -176
  114. package/artifacts/contracts/Proxy/UpgradeableBeacon.sol/Beacon.dbg.json +0 -4
  115. package/artifacts/contracts/Proxy/UpgradeableBeacon.sol/Beacon.json +0 -113
  116. package/artifacts/contracts/Rewards/RewardsDistributor.sol/RewardsDistributor.dbg.json +0 -4
  117. package/artifacts/contracts/Rewards/RewardsDistributor.sol/RewardsDistributor.json +0 -928
  118. package/artifacts/contracts/RiskFund/IProtocolShareReserve.sol/IProtocolShareReserve.dbg.json +0 -4
  119. package/artifacts/contracts/RiskFund/IProtocolShareReserve.sol/IProtocolShareReserve.json +0 -29
  120. package/artifacts/contracts/RiskFund/IRiskFund.sol/IRiskFund.dbg.json +0 -4
  121. package/artifacts/contracts/RiskFund/IRiskFund.sol/IRiskFund.json +0 -101
  122. package/artifacts/contracts/RiskFund/ProtocolShareReserve.sol/ProtocolShareReserve.dbg.json +0 -4
  123. package/artifacts/contracts/RiskFund/ProtocolShareReserve.sol/ProtocolShareReserve.json +0 -296
  124. package/artifacts/contracts/RiskFund/ReserveHelpers.sol/ReserveHelpers.dbg.json +0 -4
  125. package/artifacts/contracts/RiskFund/ReserveHelpers.sol/ReserveHelpers.json +0 -83
  126. package/artifacts/contracts/RiskFund/RiskFund.sol/RiskFund.dbg.json +0 -4
  127. package/artifacts/contracts/RiskFund/RiskFund.sol/RiskFund.json +0 -615
  128. package/artifacts/contracts/Shortfall/IShortfall.sol/IShortfall.dbg.json +0 -4
  129. package/artifacts/contracts/Shortfall/IShortfall.sol/IShortfall.json +0 -24
  130. package/artifacts/contracts/Shortfall/Shortfall.sol/Shortfall.dbg.json +0 -4
  131. package/artifacts/contracts/Shortfall/Shortfall.sol/Shortfall.json +0 -756
  132. package/artifacts/contracts/VToken.sol/VToken.dbg.json +0 -4
  133. package/artifacts/contracts/VToken.sol/VToken.json +0 -1850
  134. package/artifacts/contracts/VTokenInterfaces.sol/VTokenInterface.dbg.json +0 -4
  135. package/artifacts/contracts/VTokenInterfaces.sol/VTokenInterface.json +0 -1398
  136. package/artifacts/contracts/VTokenInterfaces.sol/VTokenStorage.dbg.json +0 -4
  137. package/artifacts/contracts/VTokenInterfaces.sol/VTokenStorage.json +0 -219
  138. package/artifacts/contracts/WhitePaperInterestRateModel.sol/WhitePaperInterestRateModel.dbg.json +0 -4
  139. package/artifacts/contracts/WhitePaperInterestRateModel.sol/WhitePaperInterestRateModel.json +0 -192
  140. package/artifacts/contracts/test/ComptrollerHarness.sol/ComptrollerHarness.dbg.json +0 -4
  141. package/artifacts/contracts/test/ComptrollerHarness.sol/ComptrollerHarness.json +0 -1712
  142. package/artifacts/contracts/test/ComptrollerHarness.sol/EchoTypesComptroller.dbg.json +0 -4
  143. package/artifacts/contracts/test/ComptrollerHarness.sol/EchoTypesComptroller.json +0 -94
  144. package/artifacts/contracts/test/ComptrollerScenario.sol/ComptrollerScenario.dbg.json +0 -4
  145. package/artifacts/contracts/test/ComptrollerScenario.sol/ComptrollerScenario.json +0 -1744
  146. package/artifacts/contracts/test/ERC20.sol/ERC20.dbg.json +0 -4
  147. package/artifacts/contracts/test/ERC20.sol/ERC20.json +0 -194
  148. package/artifacts/contracts/test/ERC20.sol/ERC20Base.dbg.json +0 -4
  149. package/artifacts/contracts/test/ERC20.sol/ERC20Base.json +0 -141
  150. package/artifacts/contracts/test/ERC20.sol/ERC20Harness.dbg.json +0 -4
  151. package/artifacts/contracts/test/ERC20.sol/ERC20Harness.json +0 -351
  152. package/artifacts/contracts/test/ERC20.sol/ERC20NS.dbg.json +0 -4
  153. package/artifacts/contracts/test/ERC20.sol/ERC20NS.json +0 -182
  154. package/artifacts/contracts/test/ERC20.sol/NonStandardToken.dbg.json +0 -4
  155. package/artifacts/contracts/test/ERC20.sol/NonStandardToken.json +0 -247
  156. package/artifacts/contracts/test/ERC20.sol/StandardToken.dbg.json +0 -4
  157. package/artifacts/contracts/test/ERC20.sol/StandardToken.json +0 -259
  158. package/artifacts/contracts/test/EvilToken.sol/EvilToken.dbg.json +0 -4
  159. package/artifacts/contracts/test/EvilToken.sol/EvilToken.json +0 -303
  160. package/artifacts/contracts/test/FaucetToken.sol/FaucetNonStandardToken.dbg.json +0 -4
  161. package/artifacts/contracts/test/FaucetToken.sol/FaucetNonStandardToken.json +0 -265
  162. package/artifacts/contracts/test/FaucetToken.sol/FaucetToken.dbg.json +0 -4
  163. package/artifacts/contracts/test/FaucetToken.sol/FaucetToken.json +0 -277
  164. package/artifacts/contracts/test/FaucetToken.sol/FaucetTokenReEntrantHarness.dbg.json +0 -4
  165. package/artifacts/contracts/test/FaucetToken.sol/FaucetTokenReEntrantHarness.json +0 -313
  166. package/artifacts/contracts/test/FeeToken.sol/FeeToken.dbg.json +0 -4
  167. package/artifacts/contracts/test/FeeToken.sol/FeeToken.json +0 -313
  168. package/artifacts/contracts/test/HarnessMaxLoopsLimitHelper.sol/HarnessMaxLoopsLimitHelper.dbg.json +0 -4
  169. package/artifacts/contracts/test/HarnessMaxLoopsLimitHelper.sol/HarnessMaxLoopsLimitHelper.json +0 -85
  170. package/artifacts/contracts/test/MockDeflationaryToken.sol/MockDeflatingToken.dbg.json +0 -4
  171. package/artifacts/contracts/test/MockDeflationaryToken.sol/MockDeflatingToken.json +0 -332
  172. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IERC20.dbg.json +0 -4
  173. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IERC20.json +0 -233
  174. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeFactory.dbg.json +0 -4
  175. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeFactory.json +0 -187
  176. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakePair.dbg.json +0 -4
  177. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakePair.json +0 -668
  178. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter01.dbg.json +0 -4
  179. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter01.json +0 -760
  180. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter02.dbg.json +0 -4
  181. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter02.json +0 -962
  182. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IWETH.dbg.json +0 -4
  183. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IWETH.json +0 -55
  184. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeLibrary.dbg.json +0 -4
  185. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeLibrary.json +0 -10
  186. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeRouter.dbg.json +0 -4
  187. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeRouter.json +0 -982
  188. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/SafeMath.dbg.json +0 -4
  189. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/SafeMath.json +0 -10
  190. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/TransferHelper.dbg.json +0 -4
  191. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/TransferHelper.json +0 -10
  192. package/artifacts/contracts/test/Mocks/MockPriceOracle.sol/MockPriceOracle.dbg.json +0 -4
  193. package/artifacts/contracts/test/Mocks/MockPriceOracle.sol/MockPriceOracle.json +0 -85
  194. package/artifacts/contracts/test/Mocks/MockToken.sol/MockToken.dbg.json +0 -4
  195. package/artifacts/contracts/test/Mocks/MockToken.sol/MockToken.json +0 -315
  196. package/artifacts/contracts/test/SafeMath.sol/SafeMath.dbg.json +0 -4
  197. package/artifacts/contracts/test/SafeMath.sol/SafeMath.json +0 -10
  198. package/artifacts/contracts/test/UpgradedVToken.sol/UpgradedVToken.dbg.json +0 -4
  199. package/artifacts/contracts/test/UpgradedVToken.sol/UpgradedVToken.json +0 -1946
  200. package/artifacts/contracts/test/VTokenHarness.sol/VTokenHarness.dbg.json +0 -4
  201. package/artifacts/contracts/test/VTokenHarness.sol/VTokenHarness.json +0 -2306
@@ -1,1712 +0,0 @@
1
- {
2
- "_format": "hh-sol-artifact-1",
3
- "contractName": "ComptrollerHarness",
4
- "sourceName": "contracts/test/ComptrollerHarness.sol",
5
- "abi": [
6
- {
7
- "inputs": [
8
- {
9
- "internalType": "address",
10
- "name": "_poolRegistry",
11
- "type": "address"
12
- }
13
- ],
14
- "stateMutability": "nonpayable",
15
- "type": "constructor"
16
- },
17
- {
18
- "inputs": [
19
- {
20
- "internalType": "address",
21
- "name": "market",
22
- "type": "address"
23
- },
24
- {
25
- "internalType": "enum ComptrollerStorage.Action",
26
- "name": "action",
27
- "type": "uint8"
28
- }
29
- ],
30
- "name": "ActionPaused",
31
- "type": "error"
32
- },
33
- {
34
- "inputs": [
35
- {
36
- "internalType": "address",
37
- "name": "market",
38
- "type": "address"
39
- },
40
- {
41
- "internalType": "uint256",
42
- "name": "cap",
43
- "type": "uint256"
44
- }
45
- ],
46
- "name": "BorrowCapExceeded",
47
- "type": "error"
48
- },
49
- {
50
- "inputs": [
51
- {
52
- "internalType": "uint256",
53
- "name": "expectedLessThanOrEqualTo",
54
- "type": "uint256"
55
- },
56
- {
57
- "internalType": "uint256",
58
- "name": "actual",
59
- "type": "uint256"
60
- }
61
- ],
62
- "name": "CollateralExceedsThreshold",
63
- "type": "error"
64
- },
65
- {
66
- "inputs": [],
67
- "name": "ComptrollerMismatch",
68
- "type": "error"
69
- },
70
- {
71
- "inputs": [
72
- {
73
- "internalType": "uint256",
74
- "name": "collateralToSeize",
75
- "type": "uint256"
76
- },
77
- {
78
- "internalType": "uint256",
79
- "name": "availableCollateral",
80
- "type": "uint256"
81
- }
82
- ],
83
- "name": "InsufficientCollateral",
84
- "type": "error"
85
- },
86
- {
87
- "inputs": [],
88
- "name": "InsufficientLiquidity",
89
- "type": "error"
90
- },
91
- {
92
- "inputs": [],
93
- "name": "InsufficientShortfall",
94
- "type": "error"
95
- },
96
- {
97
- "inputs": [],
98
- "name": "InvalidCollateralFactor",
99
- "type": "error"
100
- },
101
- {
102
- "inputs": [],
103
- "name": "InvalidLiquidationThreshold",
104
- "type": "error"
105
- },
106
- {
107
- "inputs": [
108
- {
109
- "internalType": "address",
110
- "name": "market",
111
- "type": "address"
112
- }
113
- ],
114
- "name": "MarketAlreadyListed",
115
- "type": "error"
116
- },
117
- {
118
- "inputs": [
119
- {
120
- "internalType": "address",
121
- "name": "vToken",
122
- "type": "address"
123
- },
124
- {
125
- "internalType": "address",
126
- "name": "user",
127
- "type": "address"
128
- }
129
- ],
130
- "name": "MarketNotCollateral",
131
- "type": "error"
132
- },
133
- {
134
- "inputs": [
135
- {
136
- "internalType": "address",
137
- "name": "market",
138
- "type": "address"
139
- }
140
- ],
141
- "name": "MarketNotListed",
142
- "type": "error"
143
- },
144
- {
145
- "inputs": [
146
- {
147
- "internalType": "uint256",
148
- "name": "loopsLimit",
149
- "type": "uint256"
150
- },
151
- {
152
- "internalType": "uint256",
153
- "name": "requiredLoops",
154
- "type": "uint256"
155
- }
156
- ],
157
- "name": "MaxLoopsLimitExceeded",
158
- "type": "error"
159
- },
160
- {
161
- "inputs": [
162
- {
163
- "internalType": "uint256",
164
- "name": "expectedGreaterThan",
165
- "type": "uint256"
166
- },
167
- {
168
- "internalType": "uint256",
169
- "name": "actual",
170
- "type": "uint256"
171
- }
172
- ],
173
- "name": "MinimalCollateralViolated",
174
- "type": "error"
175
- },
176
- {
177
- "inputs": [],
178
- "name": "NonzeroBorrowBalance",
179
- "type": "error"
180
- },
181
- {
182
- "inputs": [
183
- {
184
- "internalType": "address",
185
- "name": "vToken",
186
- "type": "address"
187
- }
188
- ],
189
- "name": "PriceError",
190
- "type": "error"
191
- },
192
- {
193
- "inputs": [
194
- {
195
- "internalType": "address",
196
- "name": "vToken",
197
- "type": "address"
198
- },
199
- {
200
- "internalType": "address",
201
- "name": "user",
202
- "type": "address"
203
- }
204
- ],
205
- "name": "SnapshotError",
206
- "type": "error"
207
- },
208
- {
209
- "inputs": [
210
- {
211
- "internalType": "address",
212
- "name": "market",
213
- "type": "address"
214
- },
215
- {
216
- "internalType": "uint256",
217
- "name": "cap",
218
- "type": "uint256"
219
- }
220
- ],
221
- "name": "SupplyCapExceeded",
222
- "type": "error"
223
- },
224
- {
225
- "inputs": [],
226
- "name": "TooMuchRepay",
227
- "type": "error"
228
- },
229
- {
230
- "inputs": [
231
- {
232
- "internalType": "address",
233
- "name": "sender",
234
- "type": "address"
235
- },
236
- {
237
- "internalType": "address",
238
- "name": "calledContract",
239
- "type": "address"
240
- },
241
- {
242
- "internalType": "string",
243
- "name": "methodSignature",
244
- "type": "string"
245
- }
246
- ],
247
- "name": "Unauthorized",
248
- "type": "error"
249
- },
250
- {
251
- "inputs": [
252
- {
253
- "internalType": "address",
254
- "name": "expectedSender",
255
- "type": "address"
256
- },
257
- {
258
- "internalType": "address",
259
- "name": "actualSender",
260
- "type": "address"
261
- }
262
- ],
263
- "name": "UnexpectedSender",
264
- "type": "error"
265
- },
266
- {
267
- "inputs": [],
268
- "name": "ZeroAddressNotAllowed",
269
- "type": "error"
270
- },
271
- {
272
- "anonymous": false,
273
- "inputs": [
274
- {
275
- "indexed": false,
276
- "internalType": "contract VToken",
277
- "name": "vToken",
278
- "type": "address"
279
- },
280
- {
281
- "indexed": false,
282
- "internalType": "enum ComptrollerStorage.Action",
283
- "name": "action",
284
- "type": "uint8"
285
- },
286
- {
287
- "indexed": false,
288
- "internalType": "bool",
289
- "name": "pauseState",
290
- "type": "bool"
291
- }
292
- ],
293
- "name": "ActionPausedMarket",
294
- "type": "event"
295
- },
296
- {
297
- "anonymous": false,
298
- "inputs": [
299
- {
300
- "indexed": false,
301
- "internalType": "uint8",
302
- "name": "version",
303
- "type": "uint8"
304
- }
305
- ],
306
- "name": "Initialized",
307
- "type": "event"
308
- },
309
- {
310
- "anonymous": false,
311
- "inputs": [
312
- {
313
- "indexed": true,
314
- "internalType": "contract VToken",
315
- "name": "vToken",
316
- "type": "address"
317
- },
318
- {
319
- "indexed": true,
320
- "internalType": "address",
321
- "name": "account",
322
- "type": "address"
323
- }
324
- ],
325
- "name": "MarketEntered",
326
- "type": "event"
327
- },
328
- {
329
- "anonymous": false,
330
- "inputs": [
331
- {
332
- "indexed": true,
333
- "internalType": "contract VToken",
334
- "name": "vToken",
335
- "type": "address"
336
- },
337
- {
338
- "indexed": true,
339
- "internalType": "address",
340
- "name": "account",
341
- "type": "address"
342
- }
343
- ],
344
- "name": "MarketExited",
345
- "type": "event"
346
- },
347
- {
348
- "anonymous": false,
349
- "inputs": [
350
- {
351
- "indexed": false,
352
- "internalType": "contract VToken",
353
- "name": "vToken",
354
- "type": "address"
355
- }
356
- ],
357
- "name": "MarketSupported",
358
- "type": "event"
359
- },
360
- {
361
- "anonymous": false,
362
- "inputs": [
363
- {
364
- "indexed": false,
365
- "internalType": "uint256",
366
- "name": "oldMaxLoopsLimit",
367
- "type": "uint256"
368
- },
369
- {
370
- "indexed": false,
371
- "internalType": "uint256",
372
- "name": "newmaxLoopsLimit",
373
- "type": "uint256"
374
- }
375
- ],
376
- "name": "MaxLoopsLimitUpdated",
377
- "type": "event"
378
- },
379
- {
380
- "anonymous": false,
381
- "inputs": [
382
- {
383
- "indexed": false,
384
- "internalType": "address",
385
- "name": "oldAccessControlManager",
386
- "type": "address"
387
- },
388
- {
389
- "indexed": false,
390
- "internalType": "address",
391
- "name": "newAccessControlManager",
392
- "type": "address"
393
- }
394
- ],
395
- "name": "NewAccessControlManager",
396
- "type": "event"
397
- },
398
- {
399
- "anonymous": false,
400
- "inputs": [
401
- {
402
- "indexed": true,
403
- "internalType": "contract VToken",
404
- "name": "vToken",
405
- "type": "address"
406
- },
407
- {
408
- "indexed": false,
409
- "internalType": "uint256",
410
- "name": "newBorrowCap",
411
- "type": "uint256"
412
- }
413
- ],
414
- "name": "NewBorrowCap",
415
- "type": "event"
416
- },
417
- {
418
- "anonymous": false,
419
- "inputs": [
420
- {
421
- "indexed": false,
422
- "internalType": "uint256",
423
- "name": "oldCloseFactorMantissa",
424
- "type": "uint256"
425
- },
426
- {
427
- "indexed": false,
428
- "internalType": "uint256",
429
- "name": "newCloseFactorMantissa",
430
- "type": "uint256"
431
- }
432
- ],
433
- "name": "NewCloseFactor",
434
- "type": "event"
435
- },
436
- {
437
- "anonymous": false,
438
- "inputs": [
439
- {
440
- "indexed": false,
441
- "internalType": "contract VToken",
442
- "name": "vToken",
443
- "type": "address"
444
- },
445
- {
446
- "indexed": false,
447
- "internalType": "uint256",
448
- "name": "oldCollateralFactorMantissa",
449
- "type": "uint256"
450
- },
451
- {
452
- "indexed": false,
453
- "internalType": "uint256",
454
- "name": "newCollateralFactorMantissa",
455
- "type": "uint256"
456
- }
457
- ],
458
- "name": "NewCollateralFactor",
459
- "type": "event"
460
- },
461
- {
462
- "anonymous": false,
463
- "inputs": [
464
- {
465
- "indexed": false,
466
- "internalType": "uint256",
467
- "name": "oldLiquidationIncentiveMantissa",
468
- "type": "uint256"
469
- },
470
- {
471
- "indexed": false,
472
- "internalType": "uint256",
473
- "name": "newLiquidationIncentiveMantissa",
474
- "type": "uint256"
475
- }
476
- ],
477
- "name": "NewLiquidationIncentive",
478
- "type": "event"
479
- },
480
- {
481
- "anonymous": false,
482
- "inputs": [
483
- {
484
- "indexed": false,
485
- "internalType": "contract VToken",
486
- "name": "vToken",
487
- "type": "address"
488
- },
489
- {
490
- "indexed": false,
491
- "internalType": "uint256",
492
- "name": "oldLiquidationThresholdMantissa",
493
- "type": "uint256"
494
- },
495
- {
496
- "indexed": false,
497
- "internalType": "uint256",
498
- "name": "newLiquidationThresholdMantissa",
499
- "type": "uint256"
500
- }
501
- ],
502
- "name": "NewLiquidationThreshold",
503
- "type": "event"
504
- },
505
- {
506
- "anonymous": false,
507
- "inputs": [
508
- {
509
- "indexed": false,
510
- "internalType": "uint256",
511
- "name": "oldMinLiquidatableCollateral",
512
- "type": "uint256"
513
- },
514
- {
515
- "indexed": false,
516
- "internalType": "uint256",
517
- "name": "newMinLiquidatableCollateral",
518
- "type": "uint256"
519
- }
520
- ],
521
- "name": "NewMinLiquidatableCollateral",
522
- "type": "event"
523
- },
524
- {
525
- "anonymous": false,
526
- "inputs": [
527
- {
528
- "indexed": false,
529
- "internalType": "contract ResilientOracleInterface",
530
- "name": "oldPriceOracle",
531
- "type": "address"
532
- },
533
- {
534
- "indexed": false,
535
- "internalType": "contract ResilientOracleInterface",
536
- "name": "newPriceOracle",
537
- "type": "address"
538
- }
539
- ],
540
- "name": "NewPriceOracle",
541
- "type": "event"
542
- },
543
- {
544
- "anonymous": false,
545
- "inputs": [
546
- {
547
- "indexed": true,
548
- "internalType": "address",
549
- "name": "rewardsDistributor",
550
- "type": "address"
551
- }
552
- ],
553
- "name": "NewRewardsDistributor",
554
- "type": "event"
555
- },
556
- {
557
- "anonymous": false,
558
- "inputs": [
559
- {
560
- "indexed": true,
561
- "internalType": "contract VToken",
562
- "name": "vToken",
563
- "type": "address"
564
- },
565
- {
566
- "indexed": false,
567
- "internalType": "uint256",
568
- "name": "newSupplyCap",
569
- "type": "uint256"
570
- }
571
- ],
572
- "name": "NewSupplyCap",
573
- "type": "event"
574
- },
575
- {
576
- "anonymous": false,
577
- "inputs": [
578
- {
579
- "indexed": true,
580
- "internalType": "address",
581
- "name": "previousOwner",
582
- "type": "address"
583
- },
584
- {
585
- "indexed": true,
586
- "internalType": "address",
587
- "name": "newOwner",
588
- "type": "address"
589
- }
590
- ],
591
- "name": "OwnershipTransferStarted",
592
- "type": "event"
593
- },
594
- {
595
- "anonymous": false,
596
- "inputs": [
597
- {
598
- "indexed": true,
599
- "internalType": "address",
600
- "name": "previousOwner",
601
- "type": "address"
602
- },
603
- {
604
- "indexed": true,
605
- "internalType": "address",
606
- "name": "newOwner",
607
- "type": "address"
608
- }
609
- ],
610
- "name": "OwnershipTransferred",
611
- "type": "event"
612
- },
613
- {
614
- "inputs": [],
615
- "name": "acceptOwnership",
616
- "outputs": [],
617
- "stateMutability": "nonpayable",
618
- "type": "function"
619
- },
620
- {
621
- "inputs": [],
622
- "name": "accessControlManager",
623
- "outputs": [
624
- {
625
- "internalType": "contract IAccessControlManagerV8",
626
- "name": "",
627
- "type": "address"
628
- }
629
- ],
630
- "stateMutability": "view",
631
- "type": "function"
632
- },
633
- {
634
- "inputs": [
635
- {
636
- "internalType": "address",
637
- "name": "",
638
- "type": "address"
639
- },
640
- {
641
- "internalType": "uint256",
642
- "name": "",
643
- "type": "uint256"
644
- }
645
- ],
646
- "name": "accountAssets",
647
- "outputs": [
648
- {
649
- "internalType": "contract VToken",
650
- "name": "",
651
- "type": "address"
652
- }
653
- ],
654
- "stateMutability": "view",
655
- "type": "function"
656
- },
657
- {
658
- "inputs": [
659
- {
660
- "internalType": "address",
661
- "name": "market",
662
- "type": "address"
663
- },
664
- {
665
- "internalType": "enum ComptrollerStorage.Action",
666
- "name": "action",
667
- "type": "uint8"
668
- }
669
- ],
670
- "name": "actionPaused",
671
- "outputs": [
672
- {
673
- "internalType": "bool",
674
- "name": "",
675
- "type": "bool"
676
- }
677
- ],
678
- "stateMutability": "view",
679
- "type": "function"
680
- },
681
- {
682
- "inputs": [
683
- {
684
- "internalType": "contract RewardsDistributor",
685
- "name": "_rewardsDistributor",
686
- "type": "address"
687
- }
688
- ],
689
- "name": "addRewardsDistributor",
690
- "outputs": [],
691
- "stateMutability": "nonpayable",
692
- "type": "function"
693
- },
694
- {
695
- "inputs": [
696
- {
697
- "internalType": "uint256",
698
- "name": "",
699
- "type": "uint256"
700
- }
701
- ],
702
- "name": "allMarkets",
703
- "outputs": [
704
- {
705
- "internalType": "contract VToken",
706
- "name": "",
707
- "type": "address"
708
- }
709
- ],
710
- "stateMutability": "view",
711
- "type": "function"
712
- },
713
- {
714
- "inputs": [],
715
- "name": "blockNumber",
716
- "outputs": [
717
- {
718
- "internalType": "uint256",
719
- "name": "",
720
- "type": "uint256"
721
- }
722
- ],
723
- "stateMutability": "view",
724
- "type": "function"
725
- },
726
- {
727
- "inputs": [
728
- {
729
- "internalType": "address",
730
- "name": "",
731
- "type": "address"
732
- }
733
- ],
734
- "name": "borrowCaps",
735
- "outputs": [
736
- {
737
- "internalType": "uint256",
738
- "name": "",
739
- "type": "uint256"
740
- }
741
- ],
742
- "stateMutability": "view",
743
- "type": "function"
744
- },
745
- {
746
- "inputs": [
747
- {
748
- "internalType": "address",
749
- "name": "account",
750
- "type": "address"
751
- },
752
- {
753
- "internalType": "contract VToken",
754
- "name": "vToken",
755
- "type": "address"
756
- }
757
- ],
758
- "name": "checkMembership",
759
- "outputs": [
760
- {
761
- "internalType": "bool",
762
- "name": "",
763
- "type": "bool"
764
- }
765
- ],
766
- "stateMutability": "view",
767
- "type": "function"
768
- },
769
- {
770
- "inputs": [],
771
- "name": "closeFactorMantissa",
772
- "outputs": [
773
- {
774
- "internalType": "uint256",
775
- "name": "",
776
- "type": "uint256"
777
- }
778
- ],
779
- "stateMutability": "view",
780
- "type": "function"
781
- },
782
- {
783
- "inputs": [
784
- {
785
- "internalType": "address[]",
786
- "name": "vTokens",
787
- "type": "address[]"
788
- }
789
- ],
790
- "name": "enterMarkets",
791
- "outputs": [
792
- {
793
- "internalType": "uint256[]",
794
- "name": "",
795
- "type": "uint256[]"
796
- }
797
- ],
798
- "stateMutability": "nonpayable",
799
- "type": "function"
800
- },
801
- {
802
- "inputs": [
803
- {
804
- "internalType": "address",
805
- "name": "vTokenAddress",
806
- "type": "address"
807
- }
808
- ],
809
- "name": "exitMarket",
810
- "outputs": [
811
- {
812
- "internalType": "uint256",
813
- "name": "",
814
- "type": "uint256"
815
- }
816
- ],
817
- "stateMutability": "nonpayable",
818
- "type": "function"
819
- },
820
- {
821
- "inputs": [
822
- {
823
- "internalType": "address",
824
- "name": "account",
825
- "type": "address"
826
- }
827
- ],
828
- "name": "getAccountLiquidity",
829
- "outputs": [
830
- {
831
- "internalType": "uint256",
832
- "name": "error",
833
- "type": "uint256"
834
- },
835
- {
836
- "internalType": "uint256",
837
- "name": "liquidity",
838
- "type": "uint256"
839
- },
840
- {
841
- "internalType": "uint256",
842
- "name": "shortfall",
843
- "type": "uint256"
844
- }
845
- ],
846
- "stateMutability": "view",
847
- "type": "function"
848
- },
849
- {
850
- "inputs": [],
851
- "name": "getAllMarkets",
852
- "outputs": [
853
- {
854
- "internalType": "contract VToken[]",
855
- "name": "",
856
- "type": "address[]"
857
- }
858
- ],
859
- "stateMutability": "view",
860
- "type": "function"
861
- },
862
- {
863
- "inputs": [
864
- {
865
- "internalType": "address",
866
- "name": "account",
867
- "type": "address"
868
- }
869
- ],
870
- "name": "getAssetsIn",
871
- "outputs": [
872
- {
873
- "internalType": "contract VToken[]",
874
- "name": "",
875
- "type": "address[]"
876
- }
877
- ],
878
- "stateMutability": "view",
879
- "type": "function"
880
- },
881
- {
882
- "inputs": [
883
- {
884
- "internalType": "address",
885
- "name": "account",
886
- "type": "address"
887
- }
888
- ],
889
- "name": "getBorrowingPower",
890
- "outputs": [
891
- {
892
- "internalType": "uint256",
893
- "name": "error",
894
- "type": "uint256"
895
- },
896
- {
897
- "internalType": "uint256",
898
- "name": "liquidity",
899
- "type": "uint256"
900
- },
901
- {
902
- "internalType": "uint256",
903
- "name": "shortfall",
904
- "type": "uint256"
905
- }
906
- ],
907
- "stateMutability": "view",
908
- "type": "function"
909
- },
910
- {
911
- "inputs": [
912
- {
913
- "internalType": "address",
914
- "name": "account",
915
- "type": "address"
916
- },
917
- {
918
- "internalType": "address",
919
- "name": "vTokenModify",
920
- "type": "address"
921
- },
922
- {
923
- "internalType": "uint256",
924
- "name": "redeemTokens",
925
- "type": "uint256"
926
- },
927
- {
928
- "internalType": "uint256",
929
- "name": "borrowAmount",
930
- "type": "uint256"
931
- }
932
- ],
933
- "name": "getHypotheticalAccountLiquidity",
934
- "outputs": [
935
- {
936
- "internalType": "uint256",
937
- "name": "error",
938
- "type": "uint256"
939
- },
940
- {
941
- "internalType": "uint256",
942
- "name": "liquidity",
943
- "type": "uint256"
944
- },
945
- {
946
- "internalType": "uint256",
947
- "name": "shortfall",
948
- "type": "uint256"
949
- }
950
- ],
951
- "stateMutability": "view",
952
- "type": "function"
953
- },
954
- {
955
- "inputs": [],
956
- "name": "getRewardDistributors",
957
- "outputs": [
958
- {
959
- "internalType": "contract RewardsDistributor[]",
960
- "name": "",
961
- "type": "address[]"
962
- }
963
- ],
964
- "stateMutability": "view",
965
- "type": "function"
966
- },
967
- {
968
- "inputs": [
969
- {
970
- "internalType": "address",
971
- "name": "vToken",
972
- "type": "address"
973
- }
974
- ],
975
- "name": "getRewardsByMarket",
976
- "outputs": [
977
- {
978
- "components": [
979
- {
980
- "internalType": "address",
981
- "name": "rewardToken",
982
- "type": "address"
983
- },
984
- {
985
- "internalType": "uint256",
986
- "name": "supplySpeed",
987
- "type": "uint256"
988
- },
989
- {
990
- "internalType": "uint256",
991
- "name": "borrowSpeed",
992
- "type": "uint256"
993
- }
994
- ],
995
- "internalType": "struct ComptrollerStorage.RewardSpeeds[]",
996
- "name": "rewardSpeeds",
997
- "type": "tuple[]"
998
- }
999
- ],
1000
- "stateMutability": "view",
1001
- "type": "function"
1002
- },
1003
- {
1004
- "inputs": [
1005
- {
1006
- "internalType": "uint256",
1007
- "name": "blocks",
1008
- "type": "uint256"
1009
- }
1010
- ],
1011
- "name": "harnessFastForward",
1012
- "outputs": [
1013
- {
1014
- "internalType": "uint256",
1015
- "name": "",
1016
- "type": "uint256"
1017
- }
1018
- ],
1019
- "stateMutability": "nonpayable",
1020
- "type": "function"
1021
- },
1022
- {
1023
- "inputs": [
1024
- {
1025
- "internalType": "address",
1026
- "name": "user",
1027
- "type": "address"
1028
- }
1029
- ],
1030
- "name": "healAccount",
1031
- "outputs": [],
1032
- "stateMutability": "nonpayable",
1033
- "type": "function"
1034
- },
1035
- {
1036
- "inputs": [
1037
- {
1038
- "internalType": "uint256",
1039
- "name": "loopLimit",
1040
- "type": "uint256"
1041
- },
1042
- {
1043
- "internalType": "address",
1044
- "name": "accessControlManager",
1045
- "type": "address"
1046
- }
1047
- ],
1048
- "name": "initialize",
1049
- "outputs": [],
1050
- "stateMutability": "nonpayable",
1051
- "type": "function"
1052
- },
1053
- {
1054
- "inputs": [],
1055
- "name": "isComptroller",
1056
- "outputs": [
1057
- {
1058
- "internalType": "bool",
1059
- "name": "",
1060
- "type": "bool"
1061
- }
1062
- ],
1063
- "stateMutability": "pure",
1064
- "type": "function"
1065
- },
1066
- {
1067
- "inputs": [
1068
- {
1069
- "internalType": "contract VToken",
1070
- "name": "vToken",
1071
- "type": "address"
1072
- }
1073
- ],
1074
- "name": "isDeprecated",
1075
- "outputs": [
1076
- {
1077
- "internalType": "bool",
1078
- "name": "",
1079
- "type": "bool"
1080
- }
1081
- ],
1082
- "stateMutability": "view",
1083
- "type": "function"
1084
- },
1085
- {
1086
- "inputs": [
1087
- {
1088
- "internalType": "contract VToken",
1089
- "name": "vToken",
1090
- "type": "address"
1091
- }
1092
- ],
1093
- "name": "isMarketListed",
1094
- "outputs": [
1095
- {
1096
- "internalType": "bool",
1097
- "name": "",
1098
- "type": "bool"
1099
- }
1100
- ],
1101
- "stateMutability": "view",
1102
- "type": "function"
1103
- },
1104
- {
1105
- "inputs": [
1106
- {
1107
- "internalType": "address",
1108
- "name": "borrower",
1109
- "type": "address"
1110
- },
1111
- {
1112
- "components": [
1113
- {
1114
- "internalType": "contract VToken",
1115
- "name": "vTokenCollateral",
1116
- "type": "address"
1117
- },
1118
- {
1119
- "internalType": "contract VToken",
1120
- "name": "vTokenBorrowed",
1121
- "type": "address"
1122
- },
1123
- {
1124
- "internalType": "uint256",
1125
- "name": "repayAmount",
1126
- "type": "uint256"
1127
- }
1128
- ],
1129
- "internalType": "struct ComptrollerStorage.LiquidationOrder[]",
1130
- "name": "orders",
1131
- "type": "tuple[]"
1132
- }
1133
- ],
1134
- "name": "liquidateAccount",
1135
- "outputs": [],
1136
- "stateMutability": "nonpayable",
1137
- "type": "function"
1138
- },
1139
- {
1140
- "inputs": [
1141
- {
1142
- "internalType": "address",
1143
- "name": "vTokenBorrowed",
1144
- "type": "address"
1145
- },
1146
- {
1147
- "internalType": "address",
1148
- "name": "vTokenCollateral",
1149
- "type": "address"
1150
- },
1151
- {
1152
- "internalType": "uint256",
1153
- "name": "actualRepayAmount",
1154
- "type": "uint256"
1155
- }
1156
- ],
1157
- "name": "liquidateCalculateSeizeTokens",
1158
- "outputs": [
1159
- {
1160
- "internalType": "uint256",
1161
- "name": "error",
1162
- "type": "uint256"
1163
- },
1164
- {
1165
- "internalType": "uint256",
1166
- "name": "tokensToSeize",
1167
- "type": "uint256"
1168
- }
1169
- ],
1170
- "stateMutability": "view",
1171
- "type": "function"
1172
- },
1173
- {
1174
- "inputs": [],
1175
- "name": "liquidationIncentiveMantissa",
1176
- "outputs": [
1177
- {
1178
- "internalType": "uint256",
1179
- "name": "",
1180
- "type": "uint256"
1181
- }
1182
- ],
1183
- "stateMutability": "view",
1184
- "type": "function"
1185
- },
1186
- {
1187
- "inputs": [
1188
- {
1189
- "internalType": "address",
1190
- "name": "",
1191
- "type": "address"
1192
- }
1193
- ],
1194
- "name": "markets",
1195
- "outputs": [
1196
- {
1197
- "internalType": "bool",
1198
- "name": "isListed",
1199
- "type": "bool"
1200
- },
1201
- {
1202
- "internalType": "uint256",
1203
- "name": "collateralFactorMantissa",
1204
- "type": "uint256"
1205
- },
1206
- {
1207
- "internalType": "uint256",
1208
- "name": "liquidationThresholdMantissa",
1209
- "type": "uint256"
1210
- }
1211
- ],
1212
- "stateMutability": "view",
1213
- "type": "function"
1214
- },
1215
- {
1216
- "inputs": [],
1217
- "name": "maxLoopsLimit",
1218
- "outputs": [
1219
- {
1220
- "internalType": "uint256",
1221
- "name": "",
1222
- "type": "uint256"
1223
- }
1224
- ],
1225
- "stateMutability": "view",
1226
- "type": "function"
1227
- },
1228
- {
1229
- "inputs": [],
1230
- "name": "minLiquidatableCollateral",
1231
- "outputs": [
1232
- {
1233
- "internalType": "uint256",
1234
- "name": "",
1235
- "type": "uint256"
1236
- }
1237
- ],
1238
- "stateMutability": "view",
1239
- "type": "function"
1240
- },
1241
- {
1242
- "inputs": [],
1243
- "name": "oracle",
1244
- "outputs": [
1245
- {
1246
- "internalType": "contract ResilientOracleInterface",
1247
- "name": "",
1248
- "type": "address"
1249
- }
1250
- ],
1251
- "stateMutability": "view",
1252
- "type": "function"
1253
- },
1254
- {
1255
- "inputs": [],
1256
- "name": "owner",
1257
- "outputs": [
1258
- {
1259
- "internalType": "address",
1260
- "name": "",
1261
- "type": "address"
1262
- }
1263
- ],
1264
- "stateMutability": "view",
1265
- "type": "function"
1266
- },
1267
- {
1268
- "inputs": [],
1269
- "name": "pendingOwner",
1270
- "outputs": [
1271
- {
1272
- "internalType": "address",
1273
- "name": "",
1274
- "type": "address"
1275
- }
1276
- ],
1277
- "stateMutability": "view",
1278
- "type": "function"
1279
- },
1280
- {
1281
- "inputs": [],
1282
- "name": "poolRegistry",
1283
- "outputs": [
1284
- {
1285
- "internalType": "address",
1286
- "name": "",
1287
- "type": "address"
1288
- }
1289
- ],
1290
- "stateMutability": "view",
1291
- "type": "function"
1292
- },
1293
- {
1294
- "inputs": [
1295
- {
1296
- "internalType": "address",
1297
- "name": "vToken",
1298
- "type": "address"
1299
- },
1300
- {
1301
- "internalType": "address",
1302
- "name": "borrower",
1303
- "type": "address"
1304
- },
1305
- {
1306
- "internalType": "uint256",
1307
- "name": "borrowAmount",
1308
- "type": "uint256"
1309
- }
1310
- ],
1311
- "name": "preBorrowHook",
1312
- "outputs": [],
1313
- "stateMutability": "nonpayable",
1314
- "type": "function"
1315
- },
1316
- {
1317
- "inputs": [
1318
- {
1319
- "internalType": "address",
1320
- "name": "vTokenBorrowed",
1321
- "type": "address"
1322
- },
1323
- {
1324
- "internalType": "address",
1325
- "name": "vTokenCollateral",
1326
- "type": "address"
1327
- },
1328
- {
1329
- "internalType": "address",
1330
- "name": "borrower",
1331
- "type": "address"
1332
- },
1333
- {
1334
- "internalType": "uint256",
1335
- "name": "repayAmount",
1336
- "type": "uint256"
1337
- },
1338
- {
1339
- "internalType": "bool",
1340
- "name": "skipLiquidityCheck",
1341
- "type": "bool"
1342
- }
1343
- ],
1344
- "name": "preLiquidateHook",
1345
- "outputs": [],
1346
- "stateMutability": "nonpayable",
1347
- "type": "function"
1348
- },
1349
- {
1350
- "inputs": [
1351
- {
1352
- "internalType": "address",
1353
- "name": "vToken",
1354
- "type": "address"
1355
- },
1356
- {
1357
- "internalType": "address",
1358
- "name": "minter",
1359
- "type": "address"
1360
- },
1361
- {
1362
- "internalType": "uint256",
1363
- "name": "mintAmount",
1364
- "type": "uint256"
1365
- }
1366
- ],
1367
- "name": "preMintHook",
1368
- "outputs": [],
1369
- "stateMutability": "nonpayable",
1370
- "type": "function"
1371
- },
1372
- {
1373
- "inputs": [
1374
- {
1375
- "internalType": "address",
1376
- "name": "vToken",
1377
- "type": "address"
1378
- },
1379
- {
1380
- "internalType": "address",
1381
- "name": "redeemer",
1382
- "type": "address"
1383
- },
1384
- {
1385
- "internalType": "uint256",
1386
- "name": "redeemTokens",
1387
- "type": "uint256"
1388
- }
1389
- ],
1390
- "name": "preRedeemHook",
1391
- "outputs": [],
1392
- "stateMutability": "nonpayable",
1393
- "type": "function"
1394
- },
1395
- {
1396
- "inputs": [
1397
- {
1398
- "internalType": "address",
1399
- "name": "vToken",
1400
- "type": "address"
1401
- },
1402
- {
1403
- "internalType": "address",
1404
- "name": "borrower",
1405
- "type": "address"
1406
- }
1407
- ],
1408
- "name": "preRepayHook",
1409
- "outputs": [],
1410
- "stateMutability": "nonpayable",
1411
- "type": "function"
1412
- },
1413
- {
1414
- "inputs": [
1415
- {
1416
- "internalType": "address",
1417
- "name": "vTokenCollateral",
1418
- "type": "address"
1419
- },
1420
- {
1421
- "internalType": "address",
1422
- "name": "seizerContract",
1423
- "type": "address"
1424
- },
1425
- {
1426
- "internalType": "address",
1427
- "name": "liquidator",
1428
- "type": "address"
1429
- },
1430
- {
1431
- "internalType": "address",
1432
- "name": "borrower",
1433
- "type": "address"
1434
- }
1435
- ],
1436
- "name": "preSeizeHook",
1437
- "outputs": [],
1438
- "stateMutability": "nonpayable",
1439
- "type": "function"
1440
- },
1441
- {
1442
- "inputs": [
1443
- {
1444
- "internalType": "address",
1445
- "name": "vToken",
1446
- "type": "address"
1447
- },
1448
- {
1449
- "internalType": "address",
1450
- "name": "src",
1451
- "type": "address"
1452
- },
1453
- {
1454
- "internalType": "address",
1455
- "name": "dst",
1456
- "type": "address"
1457
- },
1458
- {
1459
- "internalType": "uint256",
1460
- "name": "transferTokens",
1461
- "type": "uint256"
1462
- }
1463
- ],
1464
- "name": "preTransferHook",
1465
- "outputs": [],
1466
- "stateMutability": "nonpayable",
1467
- "type": "function"
1468
- },
1469
- {
1470
- "inputs": [],
1471
- "name": "renounceOwnership",
1472
- "outputs": [],
1473
- "stateMutability": "nonpayable",
1474
- "type": "function"
1475
- },
1476
- {
1477
- "inputs": [
1478
- {
1479
- "internalType": "address",
1480
- "name": "accessControlManager_",
1481
- "type": "address"
1482
- }
1483
- ],
1484
- "name": "setAccessControlManager",
1485
- "outputs": [],
1486
- "stateMutability": "nonpayable",
1487
- "type": "function"
1488
- },
1489
- {
1490
- "inputs": [
1491
- {
1492
- "internalType": "contract VToken[]",
1493
- "name": "marketsList",
1494
- "type": "address[]"
1495
- },
1496
- {
1497
- "internalType": "enum ComptrollerStorage.Action[]",
1498
- "name": "actionsList",
1499
- "type": "uint8[]"
1500
- },
1501
- {
1502
- "internalType": "bool",
1503
- "name": "paused",
1504
- "type": "bool"
1505
- }
1506
- ],
1507
- "name": "setActionsPaused",
1508
- "outputs": [],
1509
- "stateMutability": "nonpayable",
1510
- "type": "function"
1511
- },
1512
- {
1513
- "inputs": [
1514
- {
1515
- "internalType": "uint256",
1516
- "name": "number",
1517
- "type": "uint256"
1518
- }
1519
- ],
1520
- "name": "setBlockNumber",
1521
- "outputs": [],
1522
- "stateMutability": "nonpayable",
1523
- "type": "function"
1524
- },
1525
- {
1526
- "inputs": [
1527
- {
1528
- "internalType": "uint256",
1529
- "name": "newCloseFactorMantissa",
1530
- "type": "uint256"
1531
- }
1532
- ],
1533
- "name": "setCloseFactor",
1534
- "outputs": [],
1535
- "stateMutability": "nonpayable",
1536
- "type": "function"
1537
- },
1538
- {
1539
- "inputs": [
1540
- {
1541
- "internalType": "contract VToken",
1542
- "name": "vToken",
1543
- "type": "address"
1544
- },
1545
- {
1546
- "internalType": "uint256",
1547
- "name": "newCollateralFactorMantissa",
1548
- "type": "uint256"
1549
- },
1550
- {
1551
- "internalType": "uint256",
1552
- "name": "newLiquidationThresholdMantissa",
1553
- "type": "uint256"
1554
- }
1555
- ],
1556
- "name": "setCollateralFactor",
1557
- "outputs": [],
1558
- "stateMutability": "nonpayable",
1559
- "type": "function"
1560
- },
1561
- {
1562
- "inputs": [
1563
- {
1564
- "internalType": "uint256",
1565
- "name": "newLiquidationIncentiveMantissa",
1566
- "type": "uint256"
1567
- }
1568
- ],
1569
- "name": "setLiquidationIncentive",
1570
- "outputs": [],
1571
- "stateMutability": "nonpayable",
1572
- "type": "function"
1573
- },
1574
- {
1575
- "inputs": [
1576
- {
1577
- "internalType": "contract VToken[]",
1578
- "name": "vTokens",
1579
- "type": "address[]"
1580
- },
1581
- {
1582
- "internalType": "uint256[]",
1583
- "name": "newBorrowCaps",
1584
- "type": "uint256[]"
1585
- }
1586
- ],
1587
- "name": "setMarketBorrowCaps",
1588
- "outputs": [],
1589
- "stateMutability": "nonpayable",
1590
- "type": "function"
1591
- },
1592
- {
1593
- "inputs": [
1594
- {
1595
- "internalType": "contract VToken[]",
1596
- "name": "vTokens",
1597
- "type": "address[]"
1598
- },
1599
- {
1600
- "internalType": "uint256[]",
1601
- "name": "newSupplyCaps",
1602
- "type": "uint256[]"
1603
- }
1604
- ],
1605
- "name": "setMarketSupplyCaps",
1606
- "outputs": [],
1607
- "stateMutability": "nonpayable",
1608
- "type": "function"
1609
- },
1610
- {
1611
- "inputs": [
1612
- {
1613
- "internalType": "uint256",
1614
- "name": "limit",
1615
- "type": "uint256"
1616
- }
1617
- ],
1618
- "name": "setMaxLoopsLimit",
1619
- "outputs": [],
1620
- "stateMutability": "nonpayable",
1621
- "type": "function"
1622
- },
1623
- {
1624
- "inputs": [
1625
- {
1626
- "internalType": "uint256",
1627
- "name": "newMinLiquidatableCollateral",
1628
- "type": "uint256"
1629
- }
1630
- ],
1631
- "name": "setMinLiquidatableCollateral",
1632
- "outputs": [],
1633
- "stateMutability": "nonpayable",
1634
- "type": "function"
1635
- },
1636
- {
1637
- "inputs": [
1638
- {
1639
- "internalType": "contract ResilientOracleInterface",
1640
- "name": "newOracle",
1641
- "type": "address"
1642
- }
1643
- ],
1644
- "name": "setPriceOracle",
1645
- "outputs": [],
1646
- "stateMutability": "nonpayable",
1647
- "type": "function"
1648
- },
1649
- {
1650
- "inputs": [
1651
- {
1652
- "internalType": "address",
1653
- "name": "",
1654
- "type": "address"
1655
- }
1656
- ],
1657
- "name": "supplyCaps",
1658
- "outputs": [
1659
- {
1660
- "internalType": "uint256",
1661
- "name": "",
1662
- "type": "uint256"
1663
- }
1664
- ],
1665
- "stateMutability": "view",
1666
- "type": "function"
1667
- },
1668
- {
1669
- "inputs": [
1670
- {
1671
- "internalType": "contract VToken",
1672
- "name": "vToken",
1673
- "type": "address"
1674
- }
1675
- ],
1676
- "name": "supportMarket",
1677
- "outputs": [],
1678
- "stateMutability": "nonpayable",
1679
- "type": "function"
1680
- },
1681
- {
1682
- "inputs": [
1683
- {
1684
- "internalType": "address",
1685
- "name": "newOwner",
1686
- "type": "address"
1687
- }
1688
- ],
1689
- "name": "transferOwnership",
1690
- "outputs": [],
1691
- "stateMutability": "nonpayable",
1692
- "type": "function"
1693
- },
1694
- {
1695
- "inputs": [
1696
- {
1697
- "internalType": "address",
1698
- "name": "account",
1699
- "type": "address"
1700
- }
1701
- ],
1702
- "name": "updatePrices",
1703
- "outputs": [],
1704
- "stateMutability": "nonpayable",
1705
- "type": "function"
1706
- }
1707
- ],
1708
- "bytecode": "0x60a06040523480156200001157600080fd5b5060405162005b2c38038062005b2c83398101604081905262000034916200014e565b8062000040816200005f565b6001600160a01b038116608052620000576200008a565b5050620001d7565b6001600160a01b03811662000087576040516342bcdf7f60e11b815260040160405180910390fd5b50565b600054610100900460ff1615620000be5760405162461bcd60e51b8152600401620000b5906200017b565b60405180910390fd5b60005460ff9081161462000115576000805460ff191660ff9081179091556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498916200010c91620001c7565b60405180910390a15b565b60006001600160a01b0382165b92915050565b620001358162000117565b81146200008757600080fd5b805162000124816200012a565b600060208284031215620001655762000165600080fd5b600062000173848462000141565b949350505050565b602080825281016200012481602781527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469602082015266616c697a696e6760c81b604082015260600190565b60ff821681526020810162000124565b608051615932620001fa600039600081816106d70152612a5001526159326000f3fe608060405234801561001057600080fd5b506004361061038d5760003560e01c80638e6470ea116101de578063c29982381161010f578063df71403b116100ad578063e89d51ad1161007c578063e89d51ad14610825578063eade3eed14610838578063ede4edd01461084b578063f2fde38b1461085e57600080fd5b8063df71403b146107e5578063e30c3978146107f8578063e85a296014610809578063e87554461461081c57600080fd5b8063d136af44116100e9578063d136af44146107a3578063da35a26f146107b6578063db5c65de146107c9578063dce15449146107d257600080fd5b8063c29982381461074f578063c488847b1461076f578063cab4f84c1461079057600080fd5b8063abfceffc1161017c578063b2068e8411610156578063b2068e8414610701578063b4a0bdf314610721578063be26317e14610732578063c0891ba91461073c57600080fd5b8063abfceffc146106b2578063afcff50f146106d2578063b0772d0b146106f957600080fd5b8063929fe9a1116101b8578063929fe9a11461066557806394543c1514610678578063a84310811461068b578063a8c3c8501461069e57600080fd5b80638e6470ea146105fd5780638e8f294b14610610578063921363951461065257600080fd5b8063528a174c116102c35780635ec88c791161026157806379ba50971161023057806379ba5097146105b55780637dc0d1d0146105bd57806380d45a2d146105d05780638da5cb5b146105e357600080fd5b80635ec88c791461057257806361252fd1146105855780636d0be88d1461059a578063715018a6146105ad57600080fd5b806356aaee2d1161029d57806356aaee2d1461052f57806357e871e7146105425780635c21b6c51461054c5780635cc4fdeb1461055f57600080fd5b8063528a174c146104e957806352d84d1e146104fc578063530e784f1461051c57600080fd5b806324aaa220116103305780634a5844321161030a5780634a5844321461048b5780634ada90af146104ab5780634e79238f146104b4578063520b6c74146104d657600080fd5b806324aaa220146104395780632bce219c1461044c5780633d98a1e51461045f57600080fd5b806312348e961161036c57806312348e96146103ed578063186db48f146104005780631bc41f2814610413578063246acab11461042657600080fd5b80627e3dd21461039257806302c3bcbb146103ab5780630e32cb86146103d8575b600080fd5b60015b6040516103a29190614576565b60405180910390f35b6103cb6103b93660046145b4565b60d16020526000908152604090205481565b6040516103a291906145db565b6103eb6103e63660046145b4565b610871565b005b6103eb6103fb3660046145fa565b610885565b6103eb61040e36600461466d565b610961565b6103eb6104213660046146e6565b610ab8565b6103cb6104343660046145fa565b610e78565b6103eb61044736600461475d565b610e9c565b6103eb61045a366004614837565b610f69565b61039561046d3660046148b2565b6001600160a01b0316600090815260cd602052604090205460ff1690565b6103cb6104993660046145b4565b60cf6020526000908152604090205481565b6103cb60cb5481565b6104c76104c23660046148d3565b6112d0565b6040516103a29392919061492b565b6103eb6104e43660046145fa565b611301565b6104c76104f73660046145b4565b61135b565b61050f61050a3660046145fa565b611386565b6040516103a29190614967565b6103eb61052a3660046148b2565b6113b0565b6103eb61053d3660046148b2565b611414565b6103cb6101395481565b6103eb61055a3660046145b4565b6116e8565b6103eb61056d366004614975565b611805565b6104c76105803660046145b4565b611a17565b61058d611a29565b6040516103a29190614a22565b6103eb6105a8366004614a33565b611a8b565b6103eb611c04565b6103eb611c18565b60c95461050f906001600160a01b031681565b6103eb6105de3660046145fa565b611c4d565b6033546001600160a01b03165b6040516103a29190614a83565b6103eb61060b366004614a91565b611c5e565b61064361061e3660046145b4565b60cd6020526000908152604090208054600182015460029092015460ff909116919083565b6040516103a293929190614ac6565b6103eb6106603660046145b4565b611d77565b610395610673366004614ad4565b612131565b6103956106863660046148b2565b612165565b6103eb6106993660046145fa565b61220d565b6103eb6106ac3660046145fa565b61013955565b6106c56106c03660046145b4565b6122ad565b6040516103a29190614b4f565b6105f07f000000000000000000000000000000000000000000000000000000000000000081565b6106c5612323565b61071461070f3660046145b4565b612383565b6040516103a29190614be9565b6097546001600160a01b031661050f565b6103cb6101075481565b6103eb61074a366004614a91565b6125ce565b61076261075d366004614d01565b61284a565b6040516103a29190614d86565b61078261077d366004614a91565b612920565b6040516103a2929190614d97565b6103eb61079e3660046148b2565b612a4b565b6103eb6107b136600461466d565b612c43565b6103eb6107c4366004614db2565b612da6565b6103cb60d05481565b61050f6107e0366004614de5565b612e80565b6103eb6107f3366004614a91565b612eb8565b6065546001600160a01b03166105f0565b610395610817366004614e30565b61326d565b6103cb60ca5481565b6103eb610833366004614e63565b6132c4565b6103eb610846366004614ece565b61349d565b6103cb6108593660046145b4565b6136c7565b6103eb61086c3660046145b4565b613939565b6108796139aa565b610882816139d4565b50565b6108c36040518060400160405280601781526020017f736574436c6f7365466163746f722875696e7432353629000000000000000000815250613a4d565b80670c7d713b49da000010156108f45760405162461bcd60e51b81526004016108eb90614f3e565b60405180910390fd5b8066b1a2bc2ec50000111561091b5760405162461bcd60e51b81526004016108eb90614f99565b60ca8054908290556040517f3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9906109559083908590614d97565b60405180910390a15050565b61098260405180606001604052806028815260200161583260289139613a4d565b8281811580159061099257508082145b6109ae5760405162461bcd60e51b81526004016108eb90614fd0565b6109b782613aeb565b60005b82811015610aaf578484828181106109d4576109d4614fe0565b9050602002013560cf60008989858181106109f1576109f1614fe0565b9050602002016020810190610a0691906148b2565b6001600160a01b03168152602081019190915260400160002055868682818110610a3257610a32614fe0565b9050602002016020810190610a4791906148b2565b6001600160a01b03167f6f1951b2aad10f3fc81b86d91105b413a5b3f847a34bbc5ce1904201b14438f6868684818110610a8357610a83614fe0565b90506020020135604051610a9791906145db565b60405180910390a2610aa88161500c565b90506109ba565b50505050505050565b610ac3846004613b16565b6001600160a01b038416600090815260cd60205260409020805460ff16610aff5784604051635a9a1eb960e11b81526004016108eb9190614a83565b306001600160a01b03851603610ba757306001600160a01b0316856001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7b9190615031565b6001600160a01b031614610ba257604051630c73eb0560e01b815260040160405180910390fd5b610cd6565b6001600160a01b038416600090815260cd602052604090205460ff16610be25783604051635a9a1eb960e11b81526004016108eb9190614a83565b836001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c449190615031565b6001600160a01b0316856001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610caf9190615031565b6001600160a01b031614610cd657604051630c73eb0560e01b815260040160405180910390fd5b6001600160a01b038216600090815260038201602052604090205460ff16610d15578482604051630cdfb2db60e31b81526004016108eb929190615052565b60d35460005b81811015610aaf57600060d38281548110610d3857610d38614fe0565b60009182526020909120015460405163051d1d4f60e11b81526001600160a01b0390911691508190630a3a3a9e90610d74908b90600401614a83565b600060405180830381600087803b158015610d8e57600080fd5b505af1158015610da2573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150610dd4908b908990600401615052565b600060405180830381600087803b158015610dee57600080fd5b505af1158015610e02573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150610e34908b908a90600401615052565b600060405180830381600087803b158015610e4e57600080fd5b505af1158015610e62573d6000803e3d6000fd5b505050505080610e719061500c565b9050610d1b565b6000816101396000828254610e8d919061506d565b90915550506101395492915050565b610ebd6040518060600160405280602a81526020016158ab602a9139613a4d565b8382610ed1610ecc8284615085565b613aeb565b60005b82811015610f5f5760005b82811015610f4e57610f3e898984818110610efc57610efc614fe0565b9050602002016020810190610f1191906148b2565b888884818110610f2357610f23614fe0565b9050602002016020810190610f3891906150a4565b87613b42565b610f478161500c565b9050610edf565b50610f588161500c565b9050610ed4565b5050505050505050565b6000610f7784613c0f613c43565b905060d05481600001511115610fa75760d0548151604051631a451c0f60e21b81526108eb929190600401614d97565b6000610fc7604051806020016040528060cb548152508360400151613c92565b82519091508110610fef578151604051632c1f8ef160e21b81526108eb918391600401614d97565b8160a001516000036110145760405163095bf33360e01b815260040160405180910390fd5b82611023610ecc6002836150db565b60005b818110156111ec5760cd600087878481811061104457611044614fe0565b905060600201602001602081019061105c91906148b2565b6001600160a01b0316815260208101919091526040016000205460ff166110c15785858281811061108f5761108f614fe0565b90506060020160200160208101906110a791906148b2565b604051635a9a1eb960e11b81526004016108eb9190614a83565b60cd60008787848181106110d7576110d7614fe0565b6110ed92602060609092020190810191506148b2565b6001600160a01b0316815260208101919091526040016000205460ff166111365785858281811061112057611120614fe0565b6110a792602060609092020190810191506148b2565b3686868381811061114957611149614fe0565b905060600201905080602001602081019061116491906148b2565b6001600160a01b0316638bbdb6db338a604085013561118660208701876148b2565b60016040518663ffffffff1660e01b81526004016111a89594939291906150ef565b600060405180830381600087803b1580156111c257600080fd5b505af11580156111d6573d6000803e3d6000fd5b5050505050806111e59061500c565b9050611026565b506001600160a01b038616600090815260cc602090815260408083208054825181850281018501909352808352919290919083018282801561125757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611239575b505083519394506000925050505b818110156112c557600061129284838151811061128457611284614fe0565b60200260200101518b613cb2565b5091505080156112b45760405162461bcd60e51b81526004016108eb90615180565b506112be8161500c565b9050611265565b505050505050505050565b6000806000806112e588888888613d59613d8d565b608081015160a09091015160009a919950975095505050505050565b61132260405180606001604052806025815260200161585a60259139613a4d565b60d08054908290556040517eb4f4f153ad7f1397564a8830fef092481e8cf6a2cd3ff04f96d10ba51200a5906109559083908590614d97565b60008060008061136d85613d59613c43565b608081015160a090910151600097919650945092505050565b60ce818154811061139657600080fd5b6000918252602090912001546001600160a01b0316905081565b6113b86139aa565b6113c181613fc2565b60c980546001600160a01b038381166001600160a01b03198316179092556040519116907fd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22906109559083908590615190565b61141c6139aa565b6001600160a01b038116600090815260d4602052604090205460ff16156114555760405162461bcd60e51b81526004016108eb906151d0565b60d35460005b8181101561158f57600060d3828154811061147857611478614fe0565b600091825260209182902001546040805163f7c618c160e01b815290516001600160a01b039092169263f7c618c1926004808401938290030181865afa1580156114c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ea9190615031565b9050836001600160a01b031663f7c618c16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561152a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154e9190615031565b6001600160a01b0316816001600160a01b03160361157e5760405162461bcd60e51b81526004016108eb90615228565b506115888161500c565b905061145b565b5060d3546115a1610ecc82600161506d565b60d3805460018082019092557f915c3eb987b20e1af620c1403197bf687fb7f18513b3a73fde6e78c7072c41a60180546001600160a01b0319166001600160a01b038616908117909155600090815260d460205260408120805460ff191690921790915560ce54905b818110156116ad57846001600160a01b0316632a869a4d60ce838154811061163457611634614fe0565b6000918252602090912001546040516001600160e01b031960e084901b16815261166a916001600160a01b031690600401614a83565b600060405180830381600087803b15801561168457600080fd5b505af1158015611698573d6000803e3d6000fd5b50505050806116a69061500c565b905061160a565b506040516001600160a01b038516907f058fa9577dc29aece41d41c2d3bff2ed4e8d5085762198e8f7faab35039555da90600090a250505050565b6001600160a01b038116600090815260cc602090815260408083208054825181850281018501909352808352919290919083018282801561175257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611734575b5050835160c954949550936001600160a01b0316925060009150505b828110156117fe57816001600160a01b03166396e85ced85838151811061179757611797614fe0565b60200260200101516040518263ffffffff1660e01b81526004016117bb9190614a83565b600060405180830381600087803b1580156117d557600080fd5b505af11580156117e9573d6000803e3d6000fd5b50505050806117f79061500c565b905061176e565b5050505050565b6118266040518060600160405280602c815260200161587f602c9139613a4d565b6001600160a01b038316600090815260cd60205260409020805460ff166118625783604051635a9a1eb960e11b81526004016108eb9190614a83565b670c7d713b49da000083111561188b576040516302f22cad60e61b815260040160405180910390fd5b670de0b6b3a76400008211156118b35760405162f9474b60e61b815260040160405180910390fd5b828210156118d35760405162f9474b60e61b815260040160405180910390fd5b8215801590611950575060c95460405163fc57d4df60e01b81526001600160a01b039091169063fc57d4df9061190d908790600401614a83565b602060405180830381865afa15801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e9190615243565b155b1561196f578360405162e52a7d60e41b81526004016108eb9190614a83565b60018101548381146119bf57600182018490556040517f70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5906119b690879084908890615264565b60405180910390a15b6002820154838114611a0f57600283018490556040517f9e92c7d5fef69846094f3ddcadcb9402c6ba469c461368714f1cabd8ef48b59190611a0690889084908890615264565b60405180910390a15b505050505050565b60008060008061136d85613c0f613c43565b606060d3805480602002602001604051908101604052809291908181526020018280548015611a8157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611a63575b5050505050905090565b611a96846006613b16565b611aa1848483613fe9565b60d35460005b81811015611a0f57600060d38281548110611ac457611ac4614fe0565b60009182526020909120015460405163051d1d4f60e11b81526001600160a01b0390911691508190630a3a3a9e90611b00908a90600401614a83565b600060405180830381600087803b158015611b1a57600080fd5b505af1158015611b2e573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150611b60908a908a90600401615052565b600060405180830381600087803b158015611b7a57600080fd5b505af1158015611b8e573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150611bc0908a908990600401615052565b600060405180830381600087803b158015611bda57600080fd5b505af1158015611bee573d6000803e3d6000fd5b505050505080611bfd9061500c565b9050611aa7565b611c0c6139aa565b611c16600061408e565b565b60655433906001600160a01b03168114611c445760405162461bcd60e51b81526004016108eb906152b8565b6108828161408e565b611c556139aa565b610882816140a7565b611c69836001613b16565b611c74838383613fe9565b60d35460005b818110156117fe57600060d38281548110611c9757611c97614fe0565b60009182526020909120015460405163051d1d4f60e11b81526001600160a01b0390911691508190630a3a3a9e90611cd3908990600401614a83565b600060405180830381600087803b158015611ced57600080fd5b505af1158015611d01573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150611d339089908990600401615052565b600060405180830381600087803b158015611d4d57600080fd5b505af1158015611d61573d6000803e3d6000fd5b505050505080611d709061500c565b9050611c7a565b6001600160a01b038116600090815260cc6020908152604080832080548251818502810185019093528083529192909190830182828015611de157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dc3575b5050835160c954949550933393506001600160a01b03169150600090505b83811015611f0d57848181518110611e1957611e19614fe0565b60200260200101516001600160a01b031663a6afed956040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e849190615243565b50816001600160a01b03166396e85ced868381518110611ea657611ea6614fe0565b60200260200101516040518263ffffffff1660e01b8152600401611eca9190614a83565b600060405180830381600087803b158015611ee457600080fd5b505af1158015611ef8573d6000803e3d6000fd5b5050505080611f069061500c565b9050611dff565b50506000611f1d85613c0f613c43565b905060d05481600001511115611f4d5760d0548151604051631a451c0f60e21b81526108eb929190600401614d97565b8060a00151600003611f725760405163095bf33360e01b815260040160405180910390fd5b60408051602080820183528351825282518082018452848401518152835191820190935260cb5481529091600091611faa9190614104565b90506000611fb8838361414c565b9050611fdd6040518060200160405280670de0b6b3a764000081525082519051111590565b156120015781518351604051631a451c0f60e21b81526108eb929190600401614d97565b60005b868110156112c557600088828151811061202057612020614fe0565b60200260200101519050600080612037838d613cb2565b509150915060006120488683613c92565b905082156120b357836001600160a01b031663b2a02ff18b8f866040518463ffffffff1660e01b8152600401612080939291906152c8565b600060405180830381600087803b15801561209a57600080fd5b505af11580156120ae573d6000803e3d6000fd5b505050505b811561211c57836001600160a01b03166344fe6ffe8b8f846040518463ffffffff1660e01b81526004016120e9939291906152c8565b600060405180830381600087803b15801561210357600080fd5b505af1158015612117573d6000803e3d6000fd5b505050505b505050508061212a9061500c565b9050612004565b6001600160a01b03808216600090815260cd60209081526040808320938616835260039093019052205460ff165b92915050565b6001600160a01b038116600090815260cd6020526040812060010154158015612194575061219482600261326d565b801561215f5750670de0b6b3a7640000826001600160a01b031663173b99046040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122069190615243565b1492915050565b670de0b6b3a76400008110156122355760405162461bcd60e51b81526004016108eb90615331565b6122736040518060400160405280602081526020017f7365744c69717569646174696f6e496e63656e746976652875696e7432353629815250613a4d565b60cb8054908290556040517faeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316906109559083908590614d97565b6001600160a01b038116600090815260cc6020908152604080832080548251818502810185019093528083526060949383018282801561231657602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116122f8575b5093979650505050505050565b606060ce805480602002602001604051908101604052809291908181526020018280548015611a81576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611a63575050505050905090565b60d3546060908067ffffffffffffffff8111156123a2576123a2614bfa565b60405190808252806020026020018201604052801561240057816020015b6123ed604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b8152602001906001900390816123c05790505b50915060005b818110156125c757600060d3828154811061242357612423614fe0565b60009182526020808320909101546040805163f7c618c160e01b815290516001600160a01b039092169450849263f7c618c1926004808401938290030181865afa158015612475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124999190615031565b90506040518060600160405280826001600160a01b03168152602001836001600160a01b03166374c4c1cc896040518263ffffffff1660e01b81526004016124e19190614a83565b602060405180830381865afa1580156124fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125229190615243565b8152602001836001600160a01b0316637c05a7c5896040518263ffffffff1660e01b81526004016125539190614a83565b602060405180830381865afa158015612570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125949190615243565b8152508584815181106125a9576125a9614fe0565b60200260200101819052505050806125c09061500c565b9050612406565b5050919050565b6125d9836000613b16565b6001600160a01b038316600090815260cd602052604090205460ff166126145782604051635a9a1eb960e11b81526004016108eb9190614a83565b6001600160a01b038316600090815260d160205260409020546000198114612747576000846001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269a9190615243565b905060006040518060200160405280876001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270b9190615243565b90529050600061271c828487614186565b90508381111561274357868460405163db33be3d60e01b81526004016108eb929190615341565b5050505b60d35460005b81811015611a0f57600060d3828154811061276a5761276a614fe0565b60009182526020909120015460405163051d1d4f60e11b81526001600160a01b0390911691508190630a3a3a9e906127a6908a90600401614a83565b600060405180830381600087803b1580156127c057600080fd5b505af11580156127d4573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150612806908a908a90600401615052565b600060405180830381600087803b15801561282057600080fd5b505af1158015612834573d6000803e3d6000fd5b5050505050806128439061500c565b905061274d565b805133600090815260cc60205260409020546060919061286d610ecc838361506d565b60008267ffffffffffffffff81111561288857612888614bfa565b6040519080825280602002602001820160405280156128b1578160200160208202803683370190505b50905060005b838110156129175760008682815181106128d3576128d3614fe0565b602002602001015190506128e781336141b0565b60008383815181106128fb576128fb614fe0565b6020908102919091010152506129108161500c565b90506128b7565b50949350505050565b600080600061292e866142a3565b9050600061293b866142a3565b90506000866001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa15801561297d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a19190615243565b905060006129bb6040518060200160405280600081525090565b60408051602080820183526000808352835180830185529081528351808301855260cb548152845192830190945288825291926129f791614104565b9250612a1f604051806020016040528088815250604051806020016040528088815250614104565b9150612a2b838361414c565b9050612a37818b613c92565b60009d909c509a5050505050505050505050565b612a747f000000000000000000000000000000000000000000000000000000000000000061433d565b6001600160a01b038116600090815260cd602052604090205460ff1615612ab0578060405163d005ce4760e01b81526004016108eb9190614a83565b806001600160a01b0316633d9ea3a16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b12919061535a565b612b2e5760405162461bcd60e51b81526004016108eb906153af565b6001600160a01b038116600090815260cd60205260408120805460ff19166001908117825581018290556002810191909155612b698261436a565b60d35460005b81811015612c065760d38181548110612b8a57612b8a614fe0565b600091825260209091200154604051632a869a4d60e01b81526001600160a01b0390911690632a869a4d90612bc3908790600401614a83565b600060405180830381600087803b158015612bdd57600080fd5b505af1158015612bf1573d6000803e3d6000fd5b5050505080612bff9061500c565b9050612b6f565b507faf16ad15f9e29d5140e8e81a30a92a755aa8edff3d301053c84392b70c0d09a383604051612c369190614967565b60405180910390a1505050565b612c646040518060600160405280602881526020016158d560289139613a4d565b826000819003612c865760405162461bcd60e51b81526004016108eb906153f3565b808214612ca55760405162461bcd60e51b81526004016108eb906153f3565b612cae81613aeb565b60005b81811015611a0f57838382818110612ccb57612ccb614fe0565b9050602002013560d16000888885818110612ce857612ce8614fe0565b9050602002016020810190612cfd91906148b2565b6001600160a01b03168152602081019190915260400160002055858582818110612d2957612d29614fe0565b9050602002016020810190612d3e91906148b2565b6001600160a01b03167f9e0ad9cee10bdf36b7fbd38910c0bdff0f275ace679b45b922381c2723d676f8858584818110612d7a57612d7a614fe0565b90506020020135604051612d8e91906145db565b60405180910390a2612d9f8161500c565b9050612cb1565b600054610100900460ff1615808015612dc65750600054600160ff909116105b80612de05750303b158015612de0575060005460ff166001145b612dfc5760405162461bcd60e51b81526004016108eb9061544e565b6000805460ff191660011790558015612e1f576000805461ff0019166101001790555b612e27614430565b612e308261445f565b612e39836140a7565b8015612e7b576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890612c3690600190615472565b505050565b60cc6020528160005260406000208181548110612e9c57600080fd5b6000918252602090912001546001600160a01b03169150829050565b612ec3836002613b16565b612ecc826116e8565b6001600160a01b038316600090815260cd602052604090205460ff16612f075782604051635a9a1eb960e11b81526004016108eb9190614a83565b6001600160a01b03808416600090815260cd60209081526040808320938616835260039093019052205460ff16612f6a57612f418361433d565b33600090815260cc6020526040902054612f6090610ecc90600161506d565b612f6a33836141b0565b60c95460405163fc57d4df60e01b81526001600160a01b039091169063fc57d4df90612f9a908690600401614a83565b602060405180830381865afa158015612fb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fdb9190615243565b600003612ffc578260405162e52a7d60e41b81526004016108eb9190614a83565b6001600160a01b038316600090815260cf602052604090205460001981146130ba576000846001600160a01b03166347bd37186040518163ffffffff1660e01b8152600401602060405180830381865afa15801561305e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130829190615243565b90506000613090848361506d565b9050828111156130b7578583604051632e649eed60e01b81526004016108eb929190615341565b50505b60006130cc8486600086613d59613d8d565b60a0810151909150156130f25760405163bb55fd2760e01b815260040160405180910390fd5b60006040518060200160405280876001600160a01b031663aa5af0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561313d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131619190615243565b905260d35490915060005b81811015610f5f57600060d3828154811061318957613189614fe0565b600091825260209091200154604051632352607960e01b81526001600160a01b03909116915081906323526079906131c7908c908890600401615491565b600060405180830381600087803b1580156131e157600080fd5b505af11580156131f5573d6000803e3d6000fd5b5050604051636a95ddef60e01b81526001600160a01b0384169250636a95ddef9150613229908c908c9089906004016154ac565b600060405180830381600087803b15801561324357600080fd5b505af1158015613257573d6000803e3d6000fd5b5050505050806132669061500c565b905061316c565b6001600160a01b038216600090815260d26020526040812081836008811115613298576132986154d4565b60088111156132a9576132a96154d4565b815260208101919091526040016000205460ff169392505050565b6132cf856005613b16565b6132d8836116e8565b6001600160a01b038516600090815260cd602052604090205460ff166133135784604051635a9a1eb960e11b81526004016108eb9190614a83565b6001600160a01b038416600090815260cd602052604090205460ff1661334e5783604051635a9a1eb960e11b81526004016108eb9190614a83565b6040516395dd919360e01b81526000906001600160a01b038716906395dd91939061337d908790600401614a83565b602060405180830381865afa15801561339a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133be9190615243565b905081806133d057506133d086612165565b156133fc57808311156133f65760405163e46c155960e01b815260040160405180910390fd5b506117fe565b600061340a85613c0f613c43565b905060d0548160000151116134395760d0548151604051636e61bb0560e11b81526108eb929190600401614d97565b8060a0015160000361345e5760405163095bf33360e01b815260040160405180910390fd5b600061347a604051806020016040528060ca5481525084613c92565b905080851115610f5f5760405163e46c155960e01b815260040160405180910390fd5b6134a8826003613b16565b60c9546040516396e85ced60e01b81526001600160a01b03909116906396e85ced906134d8908590600401614a83565b600060405180830381600087803b1580156134f257600080fd5b505af1158015613506573d6000803e3d6000fd5b505050506001600160a01b038216600090815260cd602052604090205460ff166135455781604051635a9a1eb960e11b81526004016108eb9190614a83565b60d35460005b818110156136c15760006040518060200160405280866001600160a01b031663aa5af0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561359e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135c29190615243565b8152509050600060d383815481106135dc576135dc614fe0565b600091825260209091200154604051632352607960e01b81526001600160a01b039091169150819063235260799061361a9089908690600401615491565b600060405180830381600087803b15801561363457600080fd5b505af1158015613648573d6000803e3d6000fd5b5050604051636a95ddef60e01b81526001600160a01b0384169250636a95ddef915061367c908990899087906004016154ac565b600060405180830381600087803b15801561369657600080fd5b505af11580156136aa573d6000803e3d6000fd5b505050505050806136ba9061500c565b905061354b565b50505050565b60006136d4826008613b16565b816000806136e28333613cb2565b5091509150806000146137085760405163f8a5d66d60e01b815260040160405180910390fd5b613713853384613fe9565b6001600160a01b038316600090815260cd60209081526040808320338452600381019092529091205460ff1661374f5750600095945050505050565b3360009081526003820160209081526040808320805460ff1916905560cc8252808320805482518185028101850190935280835291929091908301828280156137c157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116137a3575b5050835193945083925060009150505b8281101561382357876001600160a01b03168482815181106137f5576137f5614fe0565b60200260200101516001600160a01b03160361381357809150613823565b61381c8161500c565b90506137d1565b50818110613833576138336154ea565b33600090815260cc602052604090208054819061385290600190615500565b8154811061386257613862614fe0565b9060005260206000200160009054906101000a90046001600160a01b031681838154811061389257613892614fe0565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550808054806138d0576138d0615517565b600082815260208120820160001990810180546001600160a01b031916905590910190915560405133916001600160a01b038b16917fe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d9190a35060009998505050505050505050565b6139416139aa565b606580546001600160a01b0383166001600160a01b031990911681179091556139726033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b03163314611c165760405162461bcd60e51b81526004016108eb9061555f565b6001600160a01b0381166139fa5760405162461bcd60e51b81526004016108eb906155b1565b609780546001600160a01b038381166001600160a01b03198316179092556040519116907f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0906109559083908590615052565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab90613a80903390869060040161561f565b602060405180830381865afa158015613a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ac1919061535a565b905080613ae757333083604051634a3fa29360e01b81526004016108eb9392919061563f565b5050565b6101075481111561088257610107548160405163792bfb1b60e11b81526004016108eb929190614d97565b613b20828261326d565b15613ae75781816040516313b3ccb160e31b81526004016108eb92919061569a565b6001600160a01b038316600090815260cd602052604090205460ff16613b7a5760405162461bcd60e51b81526004016108eb906156fa565b6001600160a01b038316600090815260d2602052604081208291846008811115613ba657613ba66154d4565b6008811115613bb757613bb76154d4565b815260200190815260200160002060006101000a81548160ff0219169083151502179055507f35007a986bcd36d2f73fc7f1b73762e12eadb4406dd163194950fd3b5a6a827d838383604051612c369392919061570a565b6040805160208082018352600091829052825180820184526001600160a01b0394909416825260cd90522060020154815290565b613c7c6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b613c8b83600080600086613d8d565b9392505050565b600080613c9f8484614486565b9050613caa816144ae565b949350505050565b600080600080856001600160a01b031663c37f68e2866040518263ffffffff1660e01b8152600401613ce49190614a83565b608060405180830381865afa158015613d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d259190615732565b9196509450925090508015613d5157858560405163015e34d960e61b81526004016108eb929190615052565b509250925092565b6040805160208082018352600091829052825180820184526001600160a01b0394909416825260cd90522060010154815290565b613dc66040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b038616600090815260cc6020908152604080832080548251818502810185019093528083529192909190830182828015613e3057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613e12575b505083519394506000925050505b81811015613f64576000838281518110613e5a57613e5a614fe0565b602002602001015190506000806000613e73848e613cb2565b92509250925060006040518060200160405280613e8f876142a3565b81525090506000613eae60405180602001604052808581525083614104565b90506000613ec8613ec2888e63ffffffff16565b83614104565b9050613ed981878d60200151614186565b60208c01528a51613eed9083908890614186565b8b5260408b0151613f019084908790614186565b8b60400181815250508e6001600160a01b0316876001600160a01b031603613f4c57613f32818f8d60600151614186565b60608c01819052613f469084908f90614186565b60608c01525b5050505050505080613f5d9061500c565b9050613e3e565b50600083606001518460400151613f7b919061506d565b90508084602001511115613fa25760208401518190036080850152600060a0850152613fb6565b600060808501526020840151810360a08501525b50505095945050505050565b6001600160a01b038116610882576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b038316600090815260cd60205260409020805460ff166140255783604051635a9a1eb960e11b81526004016108eb9190614a83565b6001600160a01b038316600090815260038201602052604090205460ff1661404d5750505050565b614056836116e8565b60006140688486856000613d59613d8d565b60a0810151909150156117fe5760405163bb55fd2760e01b815260040160405180910390fd5b606580546001600160a01b0319169055610882816144c6565b6101075481116140c95760405162461bcd60e51b81526004016108eb906157c9565b6101078054908290556040517fc2d09fef144f7c8a86f71ea459f8fc17f675768eb1ae369cbd77fb31d467aafa906109559083908590614d97565b6040805160208101909152600081526040518060200160405280670de0b6b3a764000061413986600001518660000151614518565b61414391906150db565b90529392505050565b604080516020810190915260008152604051806020016040528061414361417f8660000151670de0b6b3a7640000614518565b8551614524565b6000806141938585614486565b90506141a76141a1826144ae565b84614530565b95945050505050565b6141bb826007613b16565b6001600160a01b038216600090815260cd60205260409020805460ff166141f75782604051635a9a1eb960e11b81526004016108eb9190614a83565b6001600160a01b038216600090815260038201602052604090205460ff161561421f57505050565b6001600160a01b0380831660008181526003840160209081526040808320805460ff1916600190811790915560cc835281842080549182018155845291832090910180549488166001600160a01b031990951685179055519192917f3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a59190a3505050565b60c95460405163fc57d4df60e01b815260009182916001600160a01b039091169063fc57d4df906142d8908690600401614a83565b602060405180830381865afa1580156142f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143199190615243565b90508060000361215f578260405162e52a7d60e41b81526004016108eb9190614a83565b336001600160a01b03821614610882578033604051634e9383fb60e11b81526004016108eb929190615052565b60ce5460005b818110156143da57826001600160a01b031660ce828154811061439557614395614fe0565b6000918252602090912001546001600160a01b0316036143ca578260405163d005ce4760e01b81526004016108eb9190614a83565b6143d38161500c565b9050614370565b505060ce805460018101825560008290527fd36cd1c74ef8d7326d8021b776c18fb5a5724b7f7bc93c2f42e43e10ef27d12a0180546001600160a01b0319166001600160a01b03841617905554613ae781613aeb565b600054610100900460ff166144575760405162461bcd60e51b81526004016108eb90615821565b611c1661453c565b600054610100900460ff166108795760405162461bcd60e51b81526004016108eb90615821565b6040805160208101909152600081526040518060200160405280614143856000015185614518565b805160009061215f90670de0b6b3a7640000906150db565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000613c8b8284615085565b6000613c8b82846150db565b6000613c8b828461506d565b600054610100900460ff166145635760405162461bcd60e51b81526004016108eb90615821565b611c163361408e565b8015155b82525050565b6020810161215f828461456c565b60006001600160a01b03821661215f565b61459e81614584565b811461088257600080fd5b803561215f81614595565b6000602082840312156145c9576145c9600080fd5b6000613caa84846145a9565b80614570565b6020810161215f82846145d5565b8061459e565b803561215f816145e9565b60006020828403121561460f5761460f600080fd5b6000613caa84846145ef565b60008083601f84011261463057614630600080fd5b50813567ffffffffffffffff81111561464b5761464b600080fd5b60208301915083602082028301111561466657614666600080fd5b9250929050565b6000806000806040858703121561468657614686600080fd5b843567ffffffffffffffff8111156146a0576146a0600080fd5b6146ac8782880161461b565b9450945050602085013567ffffffffffffffff8111156146ce576146ce600080fd5b6146da8782880161461b565b95989497509550505050565b600080600080608085870312156146ff576146ff600080fd5b600061470b87876145a9565b945050602061471c878288016145a9565b935050604061472d878288016145a9565b925050606061473e878288016145a9565b91505092959194509250565b80151561459e565b803561215f8161474a565b60008060008060006060868803121561477857614778600080fd5b853567ffffffffffffffff81111561479257614792600080fd5b61479e8882890161461b565b9550955050602086013567ffffffffffffffff8111156147c0576147c0600080fd5b6147cc8882890161461b565b935093505060406147df88828901614752565b9150509295509295909350565b60008083601f84011261480157614801600080fd5b50813567ffffffffffffffff81111561481c5761481c600080fd5b60208301915083606082028301111561466657614666600080fd5b60008060006040848603121561484f5761484f600080fd5b600061485b86866145a9565b935050602084013567ffffffffffffffff81111561487b5761487b600080fd5b614887868287016147ec565b92509250509250925092565b600061215f82614584565b61459e81614893565b803561215f8161489e565b6000602082840312156148c7576148c7600080fd5b6000613caa84846148a7565b600080600080608085870312156148ec576148ec600080fd5b60006148f887876145a9565b9450506020614909878288016145a9565b935050604061491a878288016145ef565b925050606061473e878288016145ef565b6060810161493982866145d5565b61494660208301856145d5565b613caa60408301846145d5565b600061215f82614893565b61457081614953565b6020810161215f828461495e565b60008060006060848603121561498d5761498d600080fd5b600061499986866148a7565b93505060206149aa868287016145ef565b92505060406149bb868287016145ef565b9150509250925092565b60006149d1838361495e565b505060200190565b60006149e3825190565b80845260209384019383018060005b83811015614a17578151614a0688826149c5565b9750602083019250506001016149f2565b509495945050505050565b60208082528101613c8b81846149d9565b60008060008060808587031215614a4c57614a4c600080fd5b6000614a5887876145a9565b9450506020614a69878288016145a9565b935050604061491a878288016145a9565b61457081614584565b6020810161215f8284614a7a565b600080600060608486031215614aa957614aa9600080fd5b6000614ab586866145a9565b93505060206149aa868287016145a9565b60608101614939828661456c565b60008060408385031215614aea57614aea600080fd5b6000614af685856145a9565b9250506020614b07858286016148a7565b9150509250929050565b6000614b1b825190565b80845260209384019383018060005b83811015614a17578151614b3e88826149c5565b975060208301925050600101614b2a565b60208082528101613c8b8184614b11565b80516060830190614b718482614a7a565b506020820151614b8460208501826145d5565b5060408201516136c160408501826145d5565b6000614ba38383614b60565b505060600190565b6000614bb5825190565b80845260209384019383018060005b83811015614a17578151614bd88882614b97565b975060208301925050600101614bc4565b60208082528101613c8b8184614bab565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715614c3657614c36614bfa565b6040525050565b6000614c4860405190565b9050614c548282614c10565b919050565b600067ffffffffffffffff821115614c7357614c73614bfa565b5060209081020190565b6000614c90614c8b84614c59565b614c3d565b83815290506020808201908402830185811115614caf57614caf600080fd5b835b81811015614cd35780614cc488826145a9565b84525060209283019201614cb1565b5050509392505050565b600082601f830112614cf157614cf1600080fd5b8135613caa848260208601614c7d565b600060208284031215614d1657614d16600080fd5b813567ffffffffffffffff811115614d3057614d30600080fd5b613caa84828501614cdd565b60006149d183836145d5565b6000614d52825190565b80845260209384019383018060005b83811015614a17578151614d758882614d3c565b975060208301925050600101614d61565b60208082528101613c8b8184614d48565b60408101614da582856145d5565b613c8b60208301846145d5565b60008060408385031215614dc857614dc8600080fd5b6000614dd485856145ef565b9250506020614b07858286016145a9565b60008060408385031215614dfb57614dfb600080fd5b6000614e0785856145a9565b9250506020614b07858286016145ef565b6009811061088257600080fd5b803561215f81614e18565b60008060408385031215614e4657614e46600080fd5b6000614e5285856145a9565b9250506020614b0785828601614e25565b600080600080600060a08688031215614e7e57614e7e600080fd5b6000614e8a88886145a9565b9550506020614e9b888289016145a9565b9450506040614eac888289016145a9565b9350506060614ebd888289016145ef565b92505060806147df88828901614752565b60008060408385031215614ee457614ee4600080fd5b6000614dd485856145a9565b602e81526000602082017f436c6f736520666163746f722067726561746572207468616e206d6178696d7581526d369031b637b9b2903330b1ba37b960911b602082015291505b5060400190565b6020808252810161215f81614ef0565b602e81526000602082017f436c6f736520666163746f7220736d616c6c6572207468616e206d696e696d7581526d369031b637b9b2903330b1ba37b960911b60208201529150614f37565b6020808252810161215f81614f4e565b600d81526000602082016c1a5b9d985b1a59081a5b9c1d5d609a1b815291505b5060200190565b6020808252810161215f81614fa9565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361501f5761501f614ff6565b5060010190565b805161215f8161489e565b60006020828403121561504657615046600080fd5b6000613caa8484615026565b604081016150608285614a7a565b613c8b6020830184614a7a565b6000821982111561508057615080614ff6565b500190565b600081600019048311821515161561509f5761509f614ff6565b500290565b6000602082840312156150b9576150b9600080fd5b6000613caa8484614e25565b634e487b7160e01b600052601260045260246000fd5b6000826150ea576150ea6150c5565b500490565b60a081016150fd8288614a7a565b61510a6020830187614a7a565b61511760408301866145d5565b615124606083018561495e565b615131608083018461456c565b9695505050505050565b602881526000602082017f4e6f6e7a65726f20626f72726f772062616c616e6365206166746572206c69718152673ab4b230ba34b7b760c11b60208201529150614f37565b6020808252810161215f8161513b565b6040810161519e828561495e565b613c8b602083018461495e565b600e81526000602082016d616c72656164792065786973747360901b81529150614fc9565b6020808252810161215f816151ab565b602b81526000602082017f6469737472696275746f7220616c72656164792065786973747320776974682081526a1d1a1a5cc81c995dd85c9960aa1b60208201529150614f37565b6020808252810161215f816151e0565b805161215f816145e9565b60006020828403121561525857615258600080fd5b6000613caa8484615238565b60608101614939828661495e565b602981526000602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b60208201529150614f37565b6020808252810161215f81615272565b606081016152d68286614a7a565b6149466020830185614a7a565b603181526000602082017f6c69717569646174696f6e20696e63656e746976652073686f756c64206265208152700cee4cac2e8cae440e8d0c2dc4062ca627607b1b60208201529150614f37565b6020808252810161215f816152e3565b60408101614da58285614a7a565b805161215f8161474a565b60006020828403121561536f5761536f600080fd5b6000613caa848461534f565b601b81526000602082017f436f6d7074726f6c6c65723a20496e76616c69642076546f6b656e000000000081529150614fc9565b6020808252810161215f8161537b565b601981526000602082017f696e76616c6964206e756d626572206f66206d61726b6574730000000000000081529150614fc9565b6020808252810161215f816153bf565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b60208201529150614f37565b6020808252810161215f81615403565b600060ff821661215f565b6145708161545e565b6020810161215f8284615469565b805160208301906136c184826145d5565b6040810161549f8285614a7a565b613c8b6020830184615480565b606081016154ba8286614a7a565b6154c76020830185614a7a565b613caa6040830184615480565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60008282101561551257615512614ff6565b500390565b634e487b7160e01b600052603160045260246000fd5b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000614fc9565b6020808252810161215f8161552d565b602581526000602082017f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164815264647265737360d81b60208201529150614f37565b6020808252810161215f8161556f565b60005b838110156155dc5781810151838201526020016155c4565b838111156136c15750506000910152565b60006155f7825190565b80845260208401935061560e8185602086016155c1565b601f01601f19169290920192915050565b6040810161562d8285614a7a565b8181036020830152613caa81846155ed565b6060810161564d8286614a7a565b61565a6020830185614a7a565b81810360408301526141a781846155ed565b60098110610882576108826154d4565b80614c548161566c565b600061215f8261567c565b61457081615686565b604081016156a88285614a7a565b613c8b6020830184615691565b602881526000602082017f63616e6e6f742070617573652061206d61726b65742074686174206973206e6f8152671d081b1a5cdd195960c21b60208201529150614f37565b6020808252810161215f816156b5565b60608101615718828661495e565b6157256020830185615691565b613caa604083018461456c565b6000806000806080858703121561574b5761574b600080fd5b60006157578787615238565b945050602061576887828801615238565b935050604061577987828801615238565b925050606061473e87828801615238565b602281526000602082017f436f6d7074726f6c6c65723a20496e76616c6964206d61784c6f6f70734c696d8152611a5d60f21b60208201529150614f37565b6020808252810161215f8161578a565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b60208201529150614f37565b6020808252810161215f816157d956fe7365744d61726b6574426f72726f774361707328616464726573735b5d2c75696e743235365b5d297365744d696e4c6971756964617461626c65436f6c6c61746572616c2875696e7432353629736574436f6c6c61746572616c466163746f7228616464726573732c75696e743235362c75696e7432353629736574416374696f6e7350617573656428616464726573735b5d2c75696e743235365b5d2c626f6f6c297365744d61726b6574537570706c794361707328616464726573735b5d2c75696e743235365b5d29a264697066735822122025e142b2d74475e0e547dcc524c5aa09372305ac839d2ffc609cc4258399694964736f6c634300080d0033",
1709
- "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061038d5760003560e01c80638e6470ea116101de578063c29982381161010f578063df71403b116100ad578063e89d51ad1161007c578063e89d51ad14610825578063eade3eed14610838578063ede4edd01461084b578063f2fde38b1461085e57600080fd5b8063df71403b146107e5578063e30c3978146107f8578063e85a296014610809578063e87554461461081c57600080fd5b8063d136af44116100e9578063d136af44146107a3578063da35a26f146107b6578063db5c65de146107c9578063dce15449146107d257600080fd5b8063c29982381461074f578063c488847b1461076f578063cab4f84c1461079057600080fd5b8063abfceffc1161017c578063b2068e8411610156578063b2068e8414610701578063b4a0bdf314610721578063be26317e14610732578063c0891ba91461073c57600080fd5b8063abfceffc146106b2578063afcff50f146106d2578063b0772d0b146106f957600080fd5b8063929fe9a1116101b8578063929fe9a11461066557806394543c1514610678578063a84310811461068b578063a8c3c8501461069e57600080fd5b80638e6470ea146105fd5780638e8f294b14610610578063921363951461065257600080fd5b8063528a174c116102c35780635ec88c791161026157806379ba50971161023057806379ba5097146105b55780637dc0d1d0146105bd57806380d45a2d146105d05780638da5cb5b146105e357600080fd5b80635ec88c791461057257806361252fd1146105855780636d0be88d1461059a578063715018a6146105ad57600080fd5b806356aaee2d1161029d57806356aaee2d1461052f57806357e871e7146105425780635c21b6c51461054c5780635cc4fdeb1461055f57600080fd5b8063528a174c146104e957806352d84d1e146104fc578063530e784f1461051c57600080fd5b806324aaa220116103305780634a5844321161030a5780634a5844321461048b5780634ada90af146104ab5780634e79238f146104b4578063520b6c74146104d657600080fd5b806324aaa220146104395780632bce219c1461044c5780633d98a1e51461045f57600080fd5b806312348e961161036c57806312348e96146103ed578063186db48f146104005780631bc41f2814610413578063246acab11461042657600080fd5b80627e3dd21461039257806302c3bcbb146103ab5780630e32cb86146103d8575b600080fd5b60015b6040516103a29190614576565b60405180910390f35b6103cb6103b93660046145b4565b60d16020526000908152604090205481565b6040516103a291906145db565b6103eb6103e63660046145b4565b610871565b005b6103eb6103fb3660046145fa565b610885565b6103eb61040e36600461466d565b610961565b6103eb6104213660046146e6565b610ab8565b6103cb6104343660046145fa565b610e78565b6103eb61044736600461475d565b610e9c565b6103eb61045a366004614837565b610f69565b61039561046d3660046148b2565b6001600160a01b0316600090815260cd602052604090205460ff1690565b6103cb6104993660046145b4565b60cf6020526000908152604090205481565b6103cb60cb5481565b6104c76104c23660046148d3565b6112d0565b6040516103a29392919061492b565b6103eb6104e43660046145fa565b611301565b6104c76104f73660046145b4565b61135b565b61050f61050a3660046145fa565b611386565b6040516103a29190614967565b6103eb61052a3660046148b2565b6113b0565b6103eb61053d3660046148b2565b611414565b6103cb6101395481565b6103eb61055a3660046145b4565b6116e8565b6103eb61056d366004614975565b611805565b6104c76105803660046145b4565b611a17565b61058d611a29565b6040516103a29190614a22565b6103eb6105a8366004614a33565b611a8b565b6103eb611c04565b6103eb611c18565b60c95461050f906001600160a01b031681565b6103eb6105de3660046145fa565b611c4d565b6033546001600160a01b03165b6040516103a29190614a83565b6103eb61060b366004614a91565b611c5e565b61064361061e3660046145b4565b60cd6020526000908152604090208054600182015460029092015460ff909116919083565b6040516103a293929190614ac6565b6103eb6106603660046145b4565b611d77565b610395610673366004614ad4565b612131565b6103956106863660046148b2565b612165565b6103eb6106993660046145fa565b61220d565b6103eb6106ac3660046145fa565b61013955565b6106c56106c03660046145b4565b6122ad565b6040516103a29190614b4f565b6105f07f000000000000000000000000000000000000000000000000000000000000000081565b6106c5612323565b61071461070f3660046145b4565b612383565b6040516103a29190614be9565b6097546001600160a01b031661050f565b6103cb6101075481565b6103eb61074a366004614a91565b6125ce565b61076261075d366004614d01565b61284a565b6040516103a29190614d86565b61078261077d366004614a91565b612920565b6040516103a2929190614d97565b6103eb61079e3660046148b2565b612a4b565b6103eb6107b136600461466d565b612c43565b6103eb6107c4366004614db2565b612da6565b6103cb60d05481565b61050f6107e0366004614de5565b612e80565b6103eb6107f3366004614a91565b612eb8565b6065546001600160a01b03166105f0565b610395610817366004614e30565b61326d565b6103cb60ca5481565b6103eb610833366004614e63565b6132c4565b6103eb610846366004614ece565b61349d565b6103cb6108593660046145b4565b6136c7565b6103eb61086c3660046145b4565b613939565b6108796139aa565b610882816139d4565b50565b6108c36040518060400160405280601781526020017f736574436c6f7365466163746f722875696e7432353629000000000000000000815250613a4d565b80670c7d713b49da000010156108f45760405162461bcd60e51b81526004016108eb90614f3e565b60405180910390fd5b8066b1a2bc2ec50000111561091b5760405162461bcd60e51b81526004016108eb90614f99565b60ca8054908290556040517f3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9906109559083908590614d97565b60405180910390a15050565b61098260405180606001604052806028815260200161583260289139613a4d565b8281811580159061099257508082145b6109ae5760405162461bcd60e51b81526004016108eb90614fd0565b6109b782613aeb565b60005b82811015610aaf578484828181106109d4576109d4614fe0565b9050602002013560cf60008989858181106109f1576109f1614fe0565b9050602002016020810190610a0691906148b2565b6001600160a01b03168152602081019190915260400160002055868682818110610a3257610a32614fe0565b9050602002016020810190610a4791906148b2565b6001600160a01b03167f6f1951b2aad10f3fc81b86d91105b413a5b3f847a34bbc5ce1904201b14438f6868684818110610a8357610a83614fe0565b90506020020135604051610a9791906145db565b60405180910390a2610aa88161500c565b90506109ba565b50505050505050565b610ac3846004613b16565b6001600160a01b038416600090815260cd60205260409020805460ff16610aff5784604051635a9a1eb960e11b81526004016108eb9190614a83565b306001600160a01b03851603610ba757306001600160a01b0316856001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7b9190615031565b6001600160a01b031614610ba257604051630c73eb0560e01b815260040160405180910390fd5b610cd6565b6001600160a01b038416600090815260cd602052604090205460ff16610be25783604051635a9a1eb960e11b81526004016108eb9190614a83565b836001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c449190615031565b6001600160a01b0316856001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610caf9190615031565b6001600160a01b031614610cd657604051630c73eb0560e01b815260040160405180910390fd5b6001600160a01b038216600090815260038201602052604090205460ff16610d15578482604051630cdfb2db60e31b81526004016108eb929190615052565b60d35460005b81811015610aaf57600060d38281548110610d3857610d38614fe0565b60009182526020909120015460405163051d1d4f60e11b81526001600160a01b0390911691508190630a3a3a9e90610d74908b90600401614a83565b600060405180830381600087803b158015610d8e57600080fd5b505af1158015610da2573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150610dd4908b908990600401615052565b600060405180830381600087803b158015610dee57600080fd5b505af1158015610e02573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150610e34908b908a90600401615052565b600060405180830381600087803b158015610e4e57600080fd5b505af1158015610e62573d6000803e3d6000fd5b505050505080610e719061500c565b9050610d1b565b6000816101396000828254610e8d919061506d565b90915550506101395492915050565b610ebd6040518060600160405280602a81526020016158ab602a9139613a4d565b8382610ed1610ecc8284615085565b613aeb565b60005b82811015610f5f5760005b82811015610f4e57610f3e898984818110610efc57610efc614fe0565b9050602002016020810190610f1191906148b2565b888884818110610f2357610f23614fe0565b9050602002016020810190610f3891906150a4565b87613b42565b610f478161500c565b9050610edf565b50610f588161500c565b9050610ed4565b5050505050505050565b6000610f7784613c0f613c43565b905060d05481600001511115610fa75760d0548151604051631a451c0f60e21b81526108eb929190600401614d97565b6000610fc7604051806020016040528060cb548152508360400151613c92565b82519091508110610fef578151604051632c1f8ef160e21b81526108eb918391600401614d97565b8160a001516000036110145760405163095bf33360e01b815260040160405180910390fd5b82611023610ecc6002836150db565b60005b818110156111ec5760cd600087878481811061104457611044614fe0565b905060600201602001602081019061105c91906148b2565b6001600160a01b0316815260208101919091526040016000205460ff166110c15785858281811061108f5761108f614fe0565b90506060020160200160208101906110a791906148b2565b604051635a9a1eb960e11b81526004016108eb9190614a83565b60cd60008787848181106110d7576110d7614fe0565b6110ed92602060609092020190810191506148b2565b6001600160a01b0316815260208101919091526040016000205460ff166111365785858281811061112057611120614fe0565b6110a792602060609092020190810191506148b2565b3686868381811061114957611149614fe0565b905060600201905080602001602081019061116491906148b2565b6001600160a01b0316638bbdb6db338a604085013561118660208701876148b2565b60016040518663ffffffff1660e01b81526004016111a89594939291906150ef565b600060405180830381600087803b1580156111c257600080fd5b505af11580156111d6573d6000803e3d6000fd5b5050505050806111e59061500c565b9050611026565b506001600160a01b038616600090815260cc602090815260408083208054825181850281018501909352808352919290919083018282801561125757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611239575b505083519394506000925050505b818110156112c557600061129284838151811061128457611284614fe0565b60200260200101518b613cb2565b5091505080156112b45760405162461bcd60e51b81526004016108eb90615180565b506112be8161500c565b9050611265565b505050505050505050565b6000806000806112e588888888613d59613d8d565b608081015160a09091015160009a919950975095505050505050565b61132260405180606001604052806025815260200161585a60259139613a4d565b60d08054908290556040517eb4f4f153ad7f1397564a8830fef092481e8cf6a2cd3ff04f96d10ba51200a5906109559083908590614d97565b60008060008061136d85613d59613c43565b608081015160a090910151600097919650945092505050565b60ce818154811061139657600080fd5b6000918252602090912001546001600160a01b0316905081565b6113b86139aa565b6113c181613fc2565b60c980546001600160a01b038381166001600160a01b03198316179092556040519116907fd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22906109559083908590615190565b61141c6139aa565b6001600160a01b038116600090815260d4602052604090205460ff16156114555760405162461bcd60e51b81526004016108eb906151d0565b60d35460005b8181101561158f57600060d3828154811061147857611478614fe0565b600091825260209182902001546040805163f7c618c160e01b815290516001600160a01b039092169263f7c618c1926004808401938290030181865afa1580156114c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ea9190615031565b9050836001600160a01b031663f7c618c16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561152a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154e9190615031565b6001600160a01b0316816001600160a01b03160361157e5760405162461bcd60e51b81526004016108eb90615228565b506115888161500c565b905061145b565b5060d3546115a1610ecc82600161506d565b60d3805460018082019092557f915c3eb987b20e1af620c1403197bf687fb7f18513b3a73fde6e78c7072c41a60180546001600160a01b0319166001600160a01b038616908117909155600090815260d460205260408120805460ff191690921790915560ce54905b818110156116ad57846001600160a01b0316632a869a4d60ce838154811061163457611634614fe0565b6000918252602090912001546040516001600160e01b031960e084901b16815261166a916001600160a01b031690600401614a83565b600060405180830381600087803b15801561168457600080fd5b505af1158015611698573d6000803e3d6000fd5b50505050806116a69061500c565b905061160a565b506040516001600160a01b038516907f058fa9577dc29aece41d41c2d3bff2ed4e8d5085762198e8f7faab35039555da90600090a250505050565b6001600160a01b038116600090815260cc602090815260408083208054825181850281018501909352808352919290919083018282801561175257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611734575b5050835160c954949550936001600160a01b0316925060009150505b828110156117fe57816001600160a01b03166396e85ced85838151811061179757611797614fe0565b60200260200101516040518263ffffffff1660e01b81526004016117bb9190614a83565b600060405180830381600087803b1580156117d557600080fd5b505af11580156117e9573d6000803e3d6000fd5b50505050806117f79061500c565b905061176e565b5050505050565b6118266040518060600160405280602c815260200161587f602c9139613a4d565b6001600160a01b038316600090815260cd60205260409020805460ff166118625783604051635a9a1eb960e11b81526004016108eb9190614a83565b670c7d713b49da000083111561188b576040516302f22cad60e61b815260040160405180910390fd5b670de0b6b3a76400008211156118b35760405162f9474b60e61b815260040160405180910390fd5b828210156118d35760405162f9474b60e61b815260040160405180910390fd5b8215801590611950575060c95460405163fc57d4df60e01b81526001600160a01b039091169063fc57d4df9061190d908790600401614a83565b602060405180830381865afa15801561192a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061194e9190615243565b155b1561196f578360405162e52a7d60e41b81526004016108eb9190614a83565b60018101548381146119bf57600182018490556040517f70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5906119b690879084908890615264565b60405180910390a15b6002820154838114611a0f57600283018490556040517f9e92c7d5fef69846094f3ddcadcb9402c6ba469c461368714f1cabd8ef48b59190611a0690889084908890615264565b60405180910390a15b505050505050565b60008060008061136d85613c0f613c43565b606060d3805480602002602001604051908101604052809291908181526020018280548015611a8157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611a63575b5050505050905090565b611a96846006613b16565b611aa1848483613fe9565b60d35460005b81811015611a0f57600060d38281548110611ac457611ac4614fe0565b60009182526020909120015460405163051d1d4f60e11b81526001600160a01b0390911691508190630a3a3a9e90611b00908a90600401614a83565b600060405180830381600087803b158015611b1a57600080fd5b505af1158015611b2e573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150611b60908a908a90600401615052565b600060405180830381600087803b158015611b7a57600080fd5b505af1158015611b8e573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150611bc0908a908990600401615052565b600060405180830381600087803b158015611bda57600080fd5b505af1158015611bee573d6000803e3d6000fd5b505050505080611bfd9061500c565b9050611aa7565b611c0c6139aa565b611c16600061408e565b565b60655433906001600160a01b03168114611c445760405162461bcd60e51b81526004016108eb906152b8565b6108828161408e565b611c556139aa565b610882816140a7565b611c69836001613b16565b611c74838383613fe9565b60d35460005b818110156117fe57600060d38281548110611c9757611c97614fe0565b60009182526020909120015460405163051d1d4f60e11b81526001600160a01b0390911691508190630a3a3a9e90611cd3908990600401614a83565b600060405180830381600087803b158015611ced57600080fd5b505af1158015611d01573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150611d339089908990600401615052565b600060405180830381600087803b158015611d4d57600080fd5b505af1158015611d61573d6000803e3d6000fd5b505050505080611d709061500c565b9050611c7a565b6001600160a01b038116600090815260cc6020908152604080832080548251818502810185019093528083529192909190830182828015611de157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611dc3575b5050835160c954949550933393506001600160a01b03169150600090505b83811015611f0d57848181518110611e1957611e19614fe0565b60200260200101516001600160a01b031663a6afed956040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e849190615243565b50816001600160a01b03166396e85ced868381518110611ea657611ea6614fe0565b60200260200101516040518263ffffffff1660e01b8152600401611eca9190614a83565b600060405180830381600087803b158015611ee457600080fd5b505af1158015611ef8573d6000803e3d6000fd5b5050505080611f069061500c565b9050611dff565b50506000611f1d85613c0f613c43565b905060d05481600001511115611f4d5760d0548151604051631a451c0f60e21b81526108eb929190600401614d97565b8060a00151600003611f725760405163095bf33360e01b815260040160405180910390fd5b60408051602080820183528351825282518082018452848401518152835191820190935260cb5481529091600091611faa9190614104565b90506000611fb8838361414c565b9050611fdd6040518060200160405280670de0b6b3a764000081525082519051111590565b156120015781518351604051631a451c0f60e21b81526108eb929190600401614d97565b60005b868110156112c557600088828151811061202057612020614fe0565b60200260200101519050600080612037838d613cb2565b509150915060006120488683613c92565b905082156120b357836001600160a01b031663b2a02ff18b8f866040518463ffffffff1660e01b8152600401612080939291906152c8565b600060405180830381600087803b15801561209a57600080fd5b505af11580156120ae573d6000803e3d6000fd5b505050505b811561211c57836001600160a01b03166344fe6ffe8b8f846040518463ffffffff1660e01b81526004016120e9939291906152c8565b600060405180830381600087803b15801561210357600080fd5b505af1158015612117573d6000803e3d6000fd5b505050505b505050508061212a9061500c565b9050612004565b6001600160a01b03808216600090815260cd60209081526040808320938616835260039093019052205460ff165b92915050565b6001600160a01b038116600090815260cd6020526040812060010154158015612194575061219482600261326d565b801561215f5750670de0b6b3a7640000826001600160a01b031663173b99046040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122069190615243565b1492915050565b670de0b6b3a76400008110156122355760405162461bcd60e51b81526004016108eb90615331565b6122736040518060400160405280602081526020017f7365744c69717569646174696f6e496e63656e746976652875696e7432353629815250613a4d565b60cb8054908290556040517faeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316906109559083908590614d97565b6001600160a01b038116600090815260cc6020908152604080832080548251818502810185019093528083526060949383018282801561231657602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116122f8575b5093979650505050505050565b606060ce805480602002602001604051908101604052809291908181526020018280548015611a81576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311611a63575050505050905090565b60d3546060908067ffffffffffffffff8111156123a2576123a2614bfa565b60405190808252806020026020018201604052801561240057816020015b6123ed604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b8152602001906001900390816123c05790505b50915060005b818110156125c757600060d3828154811061242357612423614fe0565b60009182526020808320909101546040805163f7c618c160e01b815290516001600160a01b039092169450849263f7c618c1926004808401938290030181865afa158015612475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124999190615031565b90506040518060600160405280826001600160a01b03168152602001836001600160a01b03166374c4c1cc896040518263ffffffff1660e01b81526004016124e19190614a83565b602060405180830381865afa1580156124fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125229190615243565b8152602001836001600160a01b0316637c05a7c5896040518263ffffffff1660e01b81526004016125539190614a83565b602060405180830381865afa158015612570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125949190615243565b8152508584815181106125a9576125a9614fe0565b60200260200101819052505050806125c09061500c565b9050612406565b5050919050565b6125d9836000613b16565b6001600160a01b038316600090815260cd602052604090205460ff166126145782604051635a9a1eb960e11b81526004016108eb9190614a83565b6001600160a01b038316600090815260d160205260409020546000198114612747576000846001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612676573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269a9190615243565b905060006040518060200160405280876001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061270b9190615243565b90529050600061271c828487614186565b90508381111561274357868460405163db33be3d60e01b81526004016108eb929190615341565b5050505b60d35460005b81811015611a0f57600060d3828154811061276a5761276a614fe0565b60009182526020909120015460405163051d1d4f60e11b81526001600160a01b0390911691508190630a3a3a9e906127a6908a90600401614a83565b600060405180830381600087803b1580156127c057600080fd5b505af11580156127d4573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150612806908a908a90600401615052565b600060405180830381600087803b15801561282057600080fd5b505af1158015612834573d6000803e3d6000fd5b5050505050806128439061500c565b905061274d565b805133600090815260cc60205260409020546060919061286d610ecc838361506d565b60008267ffffffffffffffff81111561288857612888614bfa565b6040519080825280602002602001820160405280156128b1578160200160208202803683370190505b50905060005b838110156129175760008682815181106128d3576128d3614fe0565b602002602001015190506128e781336141b0565b60008383815181106128fb576128fb614fe0565b6020908102919091010152506129108161500c565b90506128b7565b50949350505050565b600080600061292e866142a3565b9050600061293b866142a3565b90506000866001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa15801561297d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a19190615243565b905060006129bb6040518060200160405280600081525090565b60408051602080820183526000808352835180830185529081528351808301855260cb548152845192830190945288825291926129f791614104565b9250612a1f604051806020016040528088815250604051806020016040528088815250614104565b9150612a2b838361414c565b9050612a37818b613c92565b60009d909c509a5050505050505050505050565b612a747f000000000000000000000000000000000000000000000000000000000000000061433d565b6001600160a01b038116600090815260cd602052604090205460ff1615612ab0578060405163d005ce4760e01b81526004016108eb9190614a83565b806001600160a01b0316633d9ea3a16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612aee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b12919061535a565b612b2e5760405162461bcd60e51b81526004016108eb906153af565b6001600160a01b038116600090815260cd60205260408120805460ff19166001908117825581018290556002810191909155612b698261436a565b60d35460005b81811015612c065760d38181548110612b8a57612b8a614fe0565b600091825260209091200154604051632a869a4d60e01b81526001600160a01b0390911690632a869a4d90612bc3908790600401614a83565b600060405180830381600087803b158015612bdd57600080fd5b505af1158015612bf1573d6000803e3d6000fd5b5050505080612bff9061500c565b9050612b6f565b507faf16ad15f9e29d5140e8e81a30a92a755aa8edff3d301053c84392b70c0d09a383604051612c369190614967565b60405180910390a1505050565b612c646040518060600160405280602881526020016158d560289139613a4d565b826000819003612c865760405162461bcd60e51b81526004016108eb906153f3565b808214612ca55760405162461bcd60e51b81526004016108eb906153f3565b612cae81613aeb565b60005b81811015611a0f57838382818110612ccb57612ccb614fe0565b9050602002013560d16000888885818110612ce857612ce8614fe0565b9050602002016020810190612cfd91906148b2565b6001600160a01b03168152602081019190915260400160002055858582818110612d2957612d29614fe0565b9050602002016020810190612d3e91906148b2565b6001600160a01b03167f9e0ad9cee10bdf36b7fbd38910c0bdff0f275ace679b45b922381c2723d676f8858584818110612d7a57612d7a614fe0565b90506020020135604051612d8e91906145db565b60405180910390a2612d9f8161500c565b9050612cb1565b600054610100900460ff1615808015612dc65750600054600160ff909116105b80612de05750303b158015612de0575060005460ff166001145b612dfc5760405162461bcd60e51b81526004016108eb9061544e565b6000805460ff191660011790558015612e1f576000805461ff0019166101001790555b612e27614430565b612e308261445f565b612e39836140a7565b8015612e7b576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890612c3690600190615472565b505050565b60cc6020528160005260406000208181548110612e9c57600080fd5b6000918252602090912001546001600160a01b03169150829050565b612ec3836002613b16565b612ecc826116e8565b6001600160a01b038316600090815260cd602052604090205460ff16612f075782604051635a9a1eb960e11b81526004016108eb9190614a83565b6001600160a01b03808416600090815260cd60209081526040808320938616835260039093019052205460ff16612f6a57612f418361433d565b33600090815260cc6020526040902054612f6090610ecc90600161506d565b612f6a33836141b0565b60c95460405163fc57d4df60e01b81526001600160a01b039091169063fc57d4df90612f9a908690600401614a83565b602060405180830381865afa158015612fb7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fdb9190615243565b600003612ffc578260405162e52a7d60e41b81526004016108eb9190614a83565b6001600160a01b038316600090815260cf602052604090205460001981146130ba576000846001600160a01b03166347bd37186040518163ffffffff1660e01b8152600401602060405180830381865afa15801561305e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130829190615243565b90506000613090848361506d565b9050828111156130b7578583604051632e649eed60e01b81526004016108eb929190615341565b50505b60006130cc8486600086613d59613d8d565b60a0810151909150156130f25760405163bb55fd2760e01b815260040160405180910390fd5b60006040518060200160405280876001600160a01b031663aa5af0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561313d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131619190615243565b905260d35490915060005b81811015610f5f57600060d3828154811061318957613189614fe0565b600091825260209091200154604051632352607960e01b81526001600160a01b03909116915081906323526079906131c7908c908890600401615491565b600060405180830381600087803b1580156131e157600080fd5b505af11580156131f5573d6000803e3d6000fd5b5050604051636a95ddef60e01b81526001600160a01b0384169250636a95ddef9150613229908c908c9089906004016154ac565b600060405180830381600087803b15801561324357600080fd5b505af1158015613257573d6000803e3d6000fd5b5050505050806132669061500c565b905061316c565b6001600160a01b038216600090815260d26020526040812081836008811115613298576132986154d4565b60088111156132a9576132a96154d4565b815260208101919091526040016000205460ff169392505050565b6132cf856005613b16565b6132d8836116e8565b6001600160a01b038516600090815260cd602052604090205460ff166133135784604051635a9a1eb960e11b81526004016108eb9190614a83565b6001600160a01b038416600090815260cd602052604090205460ff1661334e5783604051635a9a1eb960e11b81526004016108eb9190614a83565b6040516395dd919360e01b81526000906001600160a01b038716906395dd91939061337d908790600401614a83565b602060405180830381865afa15801561339a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133be9190615243565b905081806133d057506133d086612165565b156133fc57808311156133f65760405163e46c155960e01b815260040160405180910390fd5b506117fe565b600061340a85613c0f613c43565b905060d0548160000151116134395760d0548151604051636e61bb0560e11b81526108eb929190600401614d97565b8060a0015160000361345e5760405163095bf33360e01b815260040160405180910390fd5b600061347a604051806020016040528060ca5481525084613c92565b905080851115610f5f5760405163e46c155960e01b815260040160405180910390fd5b6134a8826003613b16565b60c9546040516396e85ced60e01b81526001600160a01b03909116906396e85ced906134d8908590600401614a83565b600060405180830381600087803b1580156134f257600080fd5b505af1158015613506573d6000803e3d6000fd5b505050506001600160a01b038216600090815260cd602052604090205460ff166135455781604051635a9a1eb960e11b81526004016108eb9190614a83565b60d35460005b818110156136c15760006040518060200160405280866001600160a01b031663aa5af0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561359e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135c29190615243565b8152509050600060d383815481106135dc576135dc614fe0565b600091825260209091200154604051632352607960e01b81526001600160a01b039091169150819063235260799061361a9089908690600401615491565b600060405180830381600087803b15801561363457600080fd5b505af1158015613648573d6000803e3d6000fd5b5050604051636a95ddef60e01b81526001600160a01b0384169250636a95ddef915061367c908990899087906004016154ac565b600060405180830381600087803b15801561369657600080fd5b505af11580156136aa573d6000803e3d6000fd5b505050505050806136ba9061500c565b905061354b565b50505050565b60006136d4826008613b16565b816000806136e28333613cb2565b5091509150806000146137085760405163f8a5d66d60e01b815260040160405180910390fd5b613713853384613fe9565b6001600160a01b038316600090815260cd60209081526040808320338452600381019092529091205460ff1661374f5750600095945050505050565b3360009081526003820160209081526040808320805460ff1916905560cc8252808320805482518185028101850190935280835291929091908301828280156137c157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116137a3575b5050835193945083925060009150505b8281101561382357876001600160a01b03168482815181106137f5576137f5614fe0565b60200260200101516001600160a01b03160361381357809150613823565b61381c8161500c565b90506137d1565b50818110613833576138336154ea565b33600090815260cc602052604090208054819061385290600190615500565b8154811061386257613862614fe0565b9060005260206000200160009054906101000a90046001600160a01b031681838154811061389257613892614fe0565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550808054806138d0576138d0615517565b600082815260208120820160001990810180546001600160a01b031916905590910190915560405133916001600160a01b038b16917fe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d9190a35060009998505050505050505050565b6139416139aa565b606580546001600160a01b0383166001600160a01b031990911681179091556139726033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b03163314611c165760405162461bcd60e51b81526004016108eb9061555f565b6001600160a01b0381166139fa5760405162461bcd60e51b81526004016108eb906155b1565b609780546001600160a01b038381166001600160a01b03198316179092556040519116907f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0906109559083908590615052565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab90613a80903390869060040161561f565b602060405180830381865afa158015613a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ac1919061535a565b905080613ae757333083604051634a3fa29360e01b81526004016108eb9392919061563f565b5050565b6101075481111561088257610107548160405163792bfb1b60e11b81526004016108eb929190614d97565b613b20828261326d565b15613ae75781816040516313b3ccb160e31b81526004016108eb92919061569a565b6001600160a01b038316600090815260cd602052604090205460ff16613b7a5760405162461bcd60e51b81526004016108eb906156fa565b6001600160a01b038316600090815260d2602052604081208291846008811115613ba657613ba66154d4565b6008811115613bb757613bb76154d4565b815260200190815260200160002060006101000a81548160ff0219169083151502179055507f35007a986bcd36d2f73fc7f1b73762e12eadb4406dd163194950fd3b5a6a827d838383604051612c369392919061570a565b6040805160208082018352600091829052825180820184526001600160a01b0394909416825260cd90522060020154815290565b613c7c6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b613c8b83600080600086613d8d565b9392505050565b600080613c9f8484614486565b9050613caa816144ae565b949350505050565b600080600080856001600160a01b031663c37f68e2866040518263ffffffff1660e01b8152600401613ce49190614a83565b608060405180830381865afa158015613d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d259190615732565b9196509450925090508015613d5157858560405163015e34d960e61b81526004016108eb929190615052565b509250925092565b6040805160208082018352600091829052825180820184526001600160a01b0394909416825260cd90522060010154815290565b613dc66040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b038616600090815260cc6020908152604080832080548251818502810185019093528083529192909190830182828015613e3057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613e12575b505083519394506000925050505b81811015613f64576000838281518110613e5a57613e5a614fe0565b602002602001015190506000806000613e73848e613cb2565b92509250925060006040518060200160405280613e8f876142a3565b81525090506000613eae60405180602001604052808581525083614104565b90506000613ec8613ec2888e63ffffffff16565b83614104565b9050613ed981878d60200151614186565b60208c01528a51613eed9083908890614186565b8b5260408b0151613f019084908790614186565b8b60400181815250508e6001600160a01b0316876001600160a01b031603613f4c57613f32818f8d60600151614186565b60608c01819052613f469084908f90614186565b60608c01525b5050505050505080613f5d9061500c565b9050613e3e565b50600083606001518460400151613f7b919061506d565b90508084602001511115613fa25760208401518190036080850152600060a0850152613fb6565b600060808501526020840151810360a08501525b50505095945050505050565b6001600160a01b038116610882576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b038316600090815260cd60205260409020805460ff166140255783604051635a9a1eb960e11b81526004016108eb9190614a83565b6001600160a01b038316600090815260038201602052604090205460ff1661404d5750505050565b614056836116e8565b60006140688486856000613d59613d8d565b60a0810151909150156117fe5760405163bb55fd2760e01b815260040160405180910390fd5b606580546001600160a01b0319169055610882816144c6565b6101075481116140c95760405162461bcd60e51b81526004016108eb906157c9565b6101078054908290556040517fc2d09fef144f7c8a86f71ea459f8fc17f675768eb1ae369cbd77fb31d467aafa906109559083908590614d97565b6040805160208101909152600081526040518060200160405280670de0b6b3a764000061413986600001518660000151614518565b61414391906150db565b90529392505050565b604080516020810190915260008152604051806020016040528061414361417f8660000151670de0b6b3a7640000614518565b8551614524565b6000806141938585614486565b90506141a76141a1826144ae565b84614530565b95945050505050565b6141bb826007613b16565b6001600160a01b038216600090815260cd60205260409020805460ff166141f75782604051635a9a1eb960e11b81526004016108eb9190614a83565b6001600160a01b038216600090815260038201602052604090205460ff161561421f57505050565b6001600160a01b0380831660008181526003840160209081526040808320805460ff1916600190811790915560cc835281842080549182018155845291832090910180549488166001600160a01b031990951685179055519192917f3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a59190a3505050565b60c95460405163fc57d4df60e01b815260009182916001600160a01b039091169063fc57d4df906142d8908690600401614a83565b602060405180830381865afa1580156142f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143199190615243565b90508060000361215f578260405162e52a7d60e41b81526004016108eb9190614a83565b336001600160a01b03821614610882578033604051634e9383fb60e11b81526004016108eb929190615052565b60ce5460005b818110156143da57826001600160a01b031660ce828154811061439557614395614fe0565b6000918252602090912001546001600160a01b0316036143ca578260405163d005ce4760e01b81526004016108eb9190614a83565b6143d38161500c565b9050614370565b505060ce805460018101825560008290527fd36cd1c74ef8d7326d8021b776c18fb5a5724b7f7bc93c2f42e43e10ef27d12a0180546001600160a01b0319166001600160a01b03841617905554613ae781613aeb565b600054610100900460ff166144575760405162461bcd60e51b81526004016108eb90615821565b611c1661453c565b600054610100900460ff166108795760405162461bcd60e51b81526004016108eb90615821565b6040805160208101909152600081526040518060200160405280614143856000015185614518565b805160009061215f90670de0b6b3a7640000906150db565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000613c8b8284615085565b6000613c8b82846150db565b6000613c8b828461506d565b600054610100900460ff166145635760405162461bcd60e51b81526004016108eb90615821565b611c163361408e565b8015155b82525050565b6020810161215f828461456c565b60006001600160a01b03821661215f565b61459e81614584565b811461088257600080fd5b803561215f81614595565b6000602082840312156145c9576145c9600080fd5b6000613caa84846145a9565b80614570565b6020810161215f82846145d5565b8061459e565b803561215f816145e9565b60006020828403121561460f5761460f600080fd5b6000613caa84846145ef565b60008083601f84011261463057614630600080fd5b50813567ffffffffffffffff81111561464b5761464b600080fd5b60208301915083602082028301111561466657614666600080fd5b9250929050565b6000806000806040858703121561468657614686600080fd5b843567ffffffffffffffff8111156146a0576146a0600080fd5b6146ac8782880161461b565b9450945050602085013567ffffffffffffffff8111156146ce576146ce600080fd5b6146da8782880161461b565b95989497509550505050565b600080600080608085870312156146ff576146ff600080fd5b600061470b87876145a9565b945050602061471c878288016145a9565b935050604061472d878288016145a9565b925050606061473e878288016145a9565b91505092959194509250565b80151561459e565b803561215f8161474a565b60008060008060006060868803121561477857614778600080fd5b853567ffffffffffffffff81111561479257614792600080fd5b61479e8882890161461b565b9550955050602086013567ffffffffffffffff8111156147c0576147c0600080fd5b6147cc8882890161461b565b935093505060406147df88828901614752565b9150509295509295909350565b60008083601f84011261480157614801600080fd5b50813567ffffffffffffffff81111561481c5761481c600080fd5b60208301915083606082028301111561466657614666600080fd5b60008060006040848603121561484f5761484f600080fd5b600061485b86866145a9565b935050602084013567ffffffffffffffff81111561487b5761487b600080fd5b614887868287016147ec565b92509250509250925092565b600061215f82614584565b61459e81614893565b803561215f8161489e565b6000602082840312156148c7576148c7600080fd5b6000613caa84846148a7565b600080600080608085870312156148ec576148ec600080fd5b60006148f887876145a9565b9450506020614909878288016145a9565b935050604061491a878288016145ef565b925050606061473e878288016145ef565b6060810161493982866145d5565b61494660208301856145d5565b613caa60408301846145d5565b600061215f82614893565b61457081614953565b6020810161215f828461495e565b60008060006060848603121561498d5761498d600080fd5b600061499986866148a7565b93505060206149aa868287016145ef565b92505060406149bb868287016145ef565b9150509250925092565b60006149d1838361495e565b505060200190565b60006149e3825190565b80845260209384019383018060005b83811015614a17578151614a0688826149c5565b9750602083019250506001016149f2565b509495945050505050565b60208082528101613c8b81846149d9565b60008060008060808587031215614a4c57614a4c600080fd5b6000614a5887876145a9565b9450506020614a69878288016145a9565b935050604061491a878288016145a9565b61457081614584565b6020810161215f8284614a7a565b600080600060608486031215614aa957614aa9600080fd5b6000614ab586866145a9565b93505060206149aa868287016145a9565b60608101614939828661456c565b60008060408385031215614aea57614aea600080fd5b6000614af685856145a9565b9250506020614b07858286016148a7565b9150509250929050565b6000614b1b825190565b80845260209384019383018060005b83811015614a17578151614b3e88826149c5565b975060208301925050600101614b2a565b60208082528101613c8b8184614b11565b80516060830190614b718482614a7a565b506020820151614b8460208501826145d5565b5060408201516136c160408501826145d5565b6000614ba38383614b60565b505060600190565b6000614bb5825190565b80845260209384019383018060005b83811015614a17578151614bd88882614b97565b975060208301925050600101614bc4565b60208082528101613c8b8184614bab565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715614c3657614c36614bfa565b6040525050565b6000614c4860405190565b9050614c548282614c10565b919050565b600067ffffffffffffffff821115614c7357614c73614bfa565b5060209081020190565b6000614c90614c8b84614c59565b614c3d565b83815290506020808201908402830185811115614caf57614caf600080fd5b835b81811015614cd35780614cc488826145a9565b84525060209283019201614cb1565b5050509392505050565b600082601f830112614cf157614cf1600080fd5b8135613caa848260208601614c7d565b600060208284031215614d1657614d16600080fd5b813567ffffffffffffffff811115614d3057614d30600080fd5b613caa84828501614cdd565b60006149d183836145d5565b6000614d52825190565b80845260209384019383018060005b83811015614a17578151614d758882614d3c565b975060208301925050600101614d61565b60208082528101613c8b8184614d48565b60408101614da582856145d5565b613c8b60208301846145d5565b60008060408385031215614dc857614dc8600080fd5b6000614dd485856145ef565b9250506020614b07858286016145a9565b60008060408385031215614dfb57614dfb600080fd5b6000614e0785856145a9565b9250506020614b07858286016145ef565b6009811061088257600080fd5b803561215f81614e18565b60008060408385031215614e4657614e46600080fd5b6000614e5285856145a9565b9250506020614b0785828601614e25565b600080600080600060a08688031215614e7e57614e7e600080fd5b6000614e8a88886145a9565b9550506020614e9b888289016145a9565b9450506040614eac888289016145a9565b9350506060614ebd888289016145ef565b92505060806147df88828901614752565b60008060408385031215614ee457614ee4600080fd5b6000614dd485856145a9565b602e81526000602082017f436c6f736520666163746f722067726561746572207468616e206d6178696d7581526d369031b637b9b2903330b1ba37b960911b602082015291505b5060400190565b6020808252810161215f81614ef0565b602e81526000602082017f436c6f736520666163746f7220736d616c6c6572207468616e206d696e696d7581526d369031b637b9b2903330b1ba37b960911b60208201529150614f37565b6020808252810161215f81614f4e565b600d81526000602082016c1a5b9d985b1a59081a5b9c1d5d609a1b815291505b5060200190565b6020808252810161215f81614fa9565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019820361501f5761501f614ff6565b5060010190565b805161215f8161489e565b60006020828403121561504657615046600080fd5b6000613caa8484615026565b604081016150608285614a7a565b613c8b6020830184614a7a565b6000821982111561508057615080614ff6565b500190565b600081600019048311821515161561509f5761509f614ff6565b500290565b6000602082840312156150b9576150b9600080fd5b6000613caa8484614e25565b634e487b7160e01b600052601260045260246000fd5b6000826150ea576150ea6150c5565b500490565b60a081016150fd8288614a7a565b61510a6020830187614a7a565b61511760408301866145d5565b615124606083018561495e565b615131608083018461456c565b9695505050505050565b602881526000602082017f4e6f6e7a65726f20626f72726f772062616c616e6365206166746572206c69718152673ab4b230ba34b7b760c11b60208201529150614f37565b6020808252810161215f8161513b565b6040810161519e828561495e565b613c8b602083018461495e565b600e81526000602082016d616c72656164792065786973747360901b81529150614fc9565b6020808252810161215f816151ab565b602b81526000602082017f6469737472696275746f7220616c72656164792065786973747320776974682081526a1d1a1a5cc81c995dd85c9960aa1b60208201529150614f37565b6020808252810161215f816151e0565b805161215f816145e9565b60006020828403121561525857615258600080fd5b6000613caa8484615238565b60608101614939828661495e565b602981526000602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b60208201529150614f37565b6020808252810161215f81615272565b606081016152d68286614a7a565b6149466020830185614a7a565b603181526000602082017f6c69717569646174696f6e20696e63656e746976652073686f756c64206265208152700cee4cac2e8cae440e8d0c2dc4062ca627607b1b60208201529150614f37565b6020808252810161215f816152e3565b60408101614da58285614a7a565b805161215f8161474a565b60006020828403121561536f5761536f600080fd5b6000613caa848461534f565b601b81526000602082017f436f6d7074726f6c6c65723a20496e76616c69642076546f6b656e000000000081529150614fc9565b6020808252810161215f8161537b565b601981526000602082017f696e76616c6964206e756d626572206f66206d61726b6574730000000000000081529150614fc9565b6020808252810161215f816153bf565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b60208201529150614f37565b6020808252810161215f81615403565b600060ff821661215f565b6145708161545e565b6020810161215f8284615469565b805160208301906136c184826145d5565b6040810161549f8285614a7a565b613c8b6020830184615480565b606081016154ba8286614a7a565b6154c76020830185614a7a565b613caa6040830184615480565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60008282101561551257615512614ff6565b500390565b634e487b7160e01b600052603160045260246000fd5b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000614fc9565b6020808252810161215f8161552d565b602581526000602082017f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164815264647265737360d81b60208201529150614f37565b6020808252810161215f8161556f565b60005b838110156155dc5781810151838201526020016155c4565b838111156136c15750506000910152565b60006155f7825190565b80845260208401935061560e8185602086016155c1565b601f01601f19169290920192915050565b6040810161562d8285614a7a565b8181036020830152613caa81846155ed565b6060810161564d8286614a7a565b61565a6020830185614a7a565b81810360408301526141a781846155ed565b60098110610882576108826154d4565b80614c548161566c565b600061215f8261567c565b61457081615686565b604081016156a88285614a7a565b613c8b6020830184615691565b602881526000602082017f63616e6e6f742070617573652061206d61726b65742074686174206973206e6f8152671d081b1a5cdd195960c21b60208201529150614f37565b6020808252810161215f816156b5565b60608101615718828661495e565b6157256020830185615691565b613caa604083018461456c565b6000806000806080858703121561574b5761574b600080fd5b60006157578787615238565b945050602061576887828801615238565b935050604061577987828801615238565b925050606061473e87828801615238565b602281526000602082017f436f6d7074726f6c6c65723a20496e76616c6964206d61784c6f6f70734c696d8152611a5d60f21b60208201529150614f37565b6020808252810161215f8161578a565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b60208201529150614f37565b6020808252810161215f816157d956fe7365744d61726b6574426f72726f774361707328616464726573735b5d2c75696e743235365b5d297365744d696e4c6971756964617461626c65436f6c6c61746572616c2875696e7432353629736574436f6c6c61746572616c466163746f7228616464726573732c75696e743235362c75696e7432353629736574416374696f6e7350617573656428616464726573735b5d2c75696e743235365b5d2c626f6f6c297365744d61726b6574537570706c794361707328616464726573735b5d2c75696e743235365b5d29a264697066735822122025e142b2d74475e0e547dcc524c5aa09372305ac839d2ffc609cc4258399694964736f6c634300080d0033",
1710
- "linkReferences": {},
1711
- "deployedLinkReferences": {}
1712
- }