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

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 (203) hide show
  1. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.dbg.json +4 -0
  2. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.json +215 -0
  3. package/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.dbg.json +4 -0
  4. package/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.json +183 -0
  5. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +4 -0
  6. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json +63 -0
  7. package/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.dbg.json +4 -0
  8. package/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.json +56 -0
  9. package/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +4 -0
  10. package/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.json +24 -0
  11. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +4 -0
  12. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.json +56 -0
  13. package/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +4 -0
  14. package/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.json +19 -0
  15. package/artifacts/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol/BeaconProxy.dbg.json +4 -0
  16. package/artifacts/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol/BeaconProxy.json +80 -0
  17. package/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +4 -0
  18. package/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json +24 -0
  19. package/artifacts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +4 -0
  20. package/artifacts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +113 -0
  21. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +4 -0
  22. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +297 -0
  23. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +4 -0
  24. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json +194 -0
  25. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +4 -0
  26. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json +233 -0
  27. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +4 -0
  28. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json +10 -0
  29. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +4 -0
  30. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json +10 -0
  31. package/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +4 -0
  32. package/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +10 -0
  33. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +4 -0
  34. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +10 -0
  35. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json +4 -0
  36. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json +30 -0
  37. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json +4 -0
  38. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json +30 -0
  39. package/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json +4 -0
  40. package/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json +10 -0
  41. package/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.dbg.json +4 -0
  42. package/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.json +10 -0
  43. package/artifacts/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol/Ownable2StepUpgradeable.dbg.json +4 -0
  44. package/artifacts/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol/Ownable2StepUpgradeable.json +115 -0
  45. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +4 -0
  46. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +76 -0
  47. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +4 -0
  48. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +24 -0
  49. package/artifacts/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.dbg.json +4 -0
  50. package/artifacts/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.json +24 -0
  51. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +4 -0
  52. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.json +194 -0
  53. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol/IERC20PermitUpgradeable.dbg.json +4 -0
  54. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol/IERC20PermitUpgradeable.json +86 -0
  55. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol/SafeERC20Upgradeable.dbg.json +4 -0
  56. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol/SafeERC20Upgradeable.json +10 -0
  57. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +4 -0
  58. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +10 -0
  59. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +4 -0
  60. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +24 -0
  61. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlManager.sol/AccessControlManager.dbg.json +4 -0
  62. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlManager.sol/AccessControlManager.json +369 -0
  63. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.dbg.json +4 -0
  64. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.json +181 -0
  65. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.dbg.json +4 -0
  66. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.json +282 -0
  67. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.dbg.json +4 -0
  68. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.json +40 -0
  69. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.dbg.json +4 -0
  70. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.json +30 -0
  71. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.dbg.json +4 -0
  72. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.json +43 -0
  73. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.dbg.json +4 -0
  74. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.json +49 -0
  75. package/artifacts/build-info/eb7e5feedaca37f948646aa7bfff0291.json +1 -0
  76. package/artifacts/build-info/f19d689bc99e63a20dd2a17a14e2b84a.json +1 -0
  77. package/artifacts/contracts/BaseJumpRateModelV2.sol/BaseJumpRateModelV2.dbg.json +4 -0
  78. package/artifacts/contracts/BaseJumpRateModelV2.sol/BaseJumpRateModelV2.json +276 -0
  79. package/artifacts/contracts/Comptroller.sol/Comptroller.dbg.json +4 -0
  80. package/artifacts/contracts/Comptroller.sol/Comptroller.json +1667 -0
  81. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerInterface.dbg.json +4 -0
  82. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerInterface.json +285 -0
  83. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerViewInterface.dbg.json +4 -0
  84. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerViewInterface.json +170 -0
  85. package/artifacts/contracts/ComptrollerStorage.sol/ComptrollerStorage.dbg.json +4 -0
  86. package/artifacts/contracts/ComptrollerStorage.sol/ComptrollerStorage.json +173 -0
  87. package/artifacts/contracts/ErrorReporter.sol/TokenErrorReporter.dbg.json +4 -0
  88. package/artifacts/contracts/ErrorReporter.sol/TokenErrorReporter.json +156 -0
  89. package/artifacts/contracts/ExponentialNoError.sol/ExponentialNoError.dbg.json +4 -0
  90. package/artifacts/contracts/ExponentialNoError.sol/ExponentialNoError.json +10 -0
  91. package/artifacts/contracts/Factories/JumpRateModelFactory.sol/JumpRateModelFactory.dbg.json +4 -0
  92. package/artifacts/contracts/Factories/JumpRateModelFactory.sol/JumpRateModelFactory.json +50 -0
  93. package/artifacts/contracts/Factories/VTokenProxyFactory.sol/VTokenProxyFactory.dbg.json +4 -0
  94. package/artifacts/contracts/Factories/VTokenProxyFactory.sol/VTokenProxyFactory.json +191 -0
  95. package/artifacts/contracts/Factories/WhitePaperInterestRateModelFactory.sol/WhitePaperInterestRateModelFactory.dbg.json +4 -0
  96. package/artifacts/contracts/Factories/WhitePaperInterestRateModelFactory.sol/WhitePaperInterestRateModelFactory.json +35 -0
  97. package/artifacts/contracts/IPancakeswapV2Router.sol/IPancakeswapV2Router.dbg.json +4 -0
  98. package/artifacts/contracts/IPancakeswapV2Router.sol/IPancakeswapV2Router.json +50 -0
  99. package/artifacts/contracts/InterestRateModel.sol/InterestRateModel.dbg.json +4 -0
  100. package/artifacts/contracts/InterestRateModel.sol/InterestRateModel.json +97 -0
  101. package/artifacts/contracts/JumpRateModelV2.sol/JumpRateModelV2.dbg.json +4 -0
  102. package/artifacts/contracts/JumpRateModelV2.sol/JumpRateModelV2.json +307 -0
  103. package/artifacts/contracts/Lens/PoolLens.sol/PoolLens.dbg.json +4 -0
  104. package/artifacts/contracts/Lens/PoolLens.sol/PoolLens.json +1087 -0
  105. package/artifacts/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.dbg.json +4 -0
  106. package/artifacts/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.json +59 -0
  107. package/artifacts/contracts/Pool/PoolRegistry.sol/PoolRegistry.dbg.json +4 -0
  108. package/artifacts/contracts/Pool/PoolRegistry.sol/PoolRegistry.json +923 -0
  109. package/artifacts/contracts/Pool/PoolRegistryInterface.sol/PoolRegistryInterface.dbg.json +4 -0
  110. package/artifacts/contracts/Pool/PoolRegistryInterface.sol/PoolRegistryInterface.json +176 -0
  111. package/artifacts/contracts/Proxy/UpgradeableBeacon.sol/Beacon.dbg.json +4 -0
  112. package/artifacts/contracts/Proxy/UpgradeableBeacon.sol/Beacon.json +113 -0
  113. package/artifacts/contracts/Rewards/RewardsDistributor.sol/RewardsDistributor.dbg.json +4 -0
  114. package/artifacts/contracts/Rewards/RewardsDistributor.sol/RewardsDistributor.json +928 -0
  115. package/artifacts/contracts/RiskFund/IProtocolShareReserve.sol/IProtocolShareReserve.dbg.json +4 -0
  116. package/artifacts/contracts/RiskFund/IProtocolShareReserve.sol/IProtocolShareReserve.json +29 -0
  117. package/artifacts/contracts/RiskFund/IRiskFund.sol/IRiskFund.dbg.json +4 -0
  118. package/artifacts/contracts/RiskFund/IRiskFund.sol/IRiskFund.json +101 -0
  119. package/artifacts/contracts/RiskFund/ProtocolShareReserve.sol/ProtocolShareReserve.dbg.json +4 -0
  120. package/artifacts/contracts/RiskFund/ProtocolShareReserve.sol/ProtocolShareReserve.json +296 -0
  121. package/artifacts/contracts/RiskFund/ReserveHelpers.sol/ReserveHelpers.dbg.json +4 -0
  122. package/artifacts/contracts/RiskFund/ReserveHelpers.sol/ReserveHelpers.json +83 -0
  123. package/artifacts/contracts/RiskFund/RiskFund.sol/RiskFund.dbg.json +4 -0
  124. package/artifacts/contracts/RiskFund/RiskFund.sol/RiskFund.json +615 -0
  125. package/artifacts/contracts/Shortfall/IShortfall.sol/IShortfall.dbg.json +4 -0
  126. package/artifacts/contracts/Shortfall/IShortfall.sol/IShortfall.json +24 -0
  127. package/artifacts/contracts/Shortfall/Shortfall.sol/Shortfall.dbg.json +4 -0
  128. package/artifacts/contracts/Shortfall/Shortfall.sol/Shortfall.json +756 -0
  129. package/artifacts/contracts/VToken.sol/VToken.dbg.json +4 -0
  130. package/artifacts/contracts/VToken.sol/VToken.json +1850 -0
  131. package/artifacts/contracts/VTokenInterfaces.sol/VTokenInterface.dbg.json +4 -0
  132. package/artifacts/contracts/VTokenInterfaces.sol/VTokenInterface.json +1398 -0
  133. package/artifacts/contracts/VTokenInterfaces.sol/VTokenStorage.dbg.json +4 -0
  134. package/artifacts/contracts/VTokenInterfaces.sol/VTokenStorage.json +219 -0
  135. package/artifacts/contracts/WhitePaperInterestRateModel.sol/WhitePaperInterestRateModel.dbg.json +4 -0
  136. package/artifacts/contracts/WhitePaperInterestRateModel.sol/WhitePaperInterestRateModel.json +192 -0
  137. package/artifacts/contracts/test/ComptrollerHarness.sol/ComptrollerHarness.dbg.json +4 -0
  138. package/artifacts/contracts/test/ComptrollerHarness.sol/ComptrollerHarness.json +1712 -0
  139. package/artifacts/contracts/test/ComptrollerHarness.sol/EchoTypesComptroller.dbg.json +4 -0
  140. package/artifacts/contracts/test/ComptrollerHarness.sol/EchoTypesComptroller.json +94 -0
  141. package/artifacts/contracts/test/ComptrollerScenario.sol/ComptrollerScenario.dbg.json +4 -0
  142. package/artifacts/contracts/test/ComptrollerScenario.sol/ComptrollerScenario.json +1744 -0
  143. package/artifacts/contracts/test/ERC20.sol/ERC20.dbg.json +4 -0
  144. package/artifacts/contracts/test/ERC20.sol/ERC20.json +194 -0
  145. package/artifacts/contracts/test/ERC20.sol/ERC20Base.dbg.json +4 -0
  146. package/artifacts/contracts/test/ERC20.sol/ERC20Base.json +141 -0
  147. package/artifacts/contracts/test/ERC20.sol/ERC20Harness.dbg.json +4 -0
  148. package/artifacts/contracts/test/ERC20.sol/ERC20Harness.json +351 -0
  149. package/artifacts/contracts/test/ERC20.sol/ERC20NS.dbg.json +4 -0
  150. package/artifacts/contracts/test/ERC20.sol/ERC20NS.json +182 -0
  151. package/artifacts/contracts/test/ERC20.sol/NonStandardToken.dbg.json +4 -0
  152. package/artifacts/contracts/test/ERC20.sol/NonStandardToken.json +247 -0
  153. package/artifacts/contracts/test/ERC20.sol/StandardToken.dbg.json +4 -0
  154. package/artifacts/contracts/test/ERC20.sol/StandardToken.json +259 -0
  155. package/artifacts/contracts/test/EvilToken.sol/EvilToken.dbg.json +4 -0
  156. package/artifacts/contracts/test/EvilToken.sol/EvilToken.json +303 -0
  157. package/artifacts/contracts/test/FaucetToken.sol/FaucetNonStandardToken.dbg.json +4 -0
  158. package/artifacts/contracts/test/FaucetToken.sol/FaucetNonStandardToken.json +265 -0
  159. package/artifacts/contracts/test/FaucetToken.sol/FaucetToken.dbg.json +4 -0
  160. package/artifacts/contracts/test/FaucetToken.sol/FaucetToken.json +277 -0
  161. package/artifacts/contracts/test/FaucetToken.sol/FaucetTokenReEntrantHarness.dbg.json +4 -0
  162. package/artifacts/contracts/test/FaucetToken.sol/FaucetTokenReEntrantHarness.json +313 -0
  163. package/artifacts/contracts/test/FeeToken.sol/FeeToken.dbg.json +4 -0
  164. package/artifacts/contracts/test/FeeToken.sol/FeeToken.json +313 -0
  165. package/artifacts/contracts/test/HarnessMaxLoopsLimitHelper.sol/HarnessMaxLoopsLimitHelper.dbg.json +4 -0
  166. package/artifacts/contracts/test/HarnessMaxLoopsLimitHelper.sol/HarnessMaxLoopsLimitHelper.json +85 -0
  167. package/artifacts/contracts/test/MockDeflationaryToken.sol/MockDeflatingToken.dbg.json +4 -0
  168. package/artifacts/contracts/test/MockDeflationaryToken.sol/MockDeflatingToken.json +332 -0
  169. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IERC20.dbg.json +4 -0
  170. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IERC20.json +233 -0
  171. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeFactory.dbg.json +4 -0
  172. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeFactory.json +187 -0
  173. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakePair.dbg.json +4 -0
  174. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakePair.json +668 -0
  175. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter01.dbg.json +4 -0
  176. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter01.json +760 -0
  177. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter02.dbg.json +4 -0
  178. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter02.json +962 -0
  179. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IWETH.dbg.json +4 -0
  180. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IWETH.json +55 -0
  181. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeLibrary.dbg.json +4 -0
  182. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeLibrary.json +10 -0
  183. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeRouter.dbg.json +4 -0
  184. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeRouter.json +982 -0
  185. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/SafeMath.dbg.json +4 -0
  186. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/SafeMath.json +10 -0
  187. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/TransferHelper.dbg.json +4 -0
  188. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/TransferHelper.json +10 -0
  189. package/artifacts/contracts/test/Mocks/MockPriceOracle.sol/MockPriceOracle.dbg.json +4 -0
  190. package/artifacts/contracts/test/Mocks/MockPriceOracle.sol/MockPriceOracle.json +85 -0
  191. package/artifacts/contracts/test/Mocks/MockToken.sol/MockToken.dbg.json +4 -0
  192. package/artifacts/contracts/test/Mocks/MockToken.sol/MockToken.json +315 -0
  193. package/artifacts/contracts/test/SafeMath.sol/SafeMath.dbg.json +4 -0
  194. package/artifacts/contracts/test/SafeMath.sol/SafeMath.json +10 -0
  195. package/artifacts/contracts/test/UpgradedVToken.sol/UpgradedVToken.dbg.json +4 -0
  196. package/artifacts/contracts/test/UpgradedVToken.sol/UpgradedVToken.json +1946 -0
  197. package/artifacts/contracts/test/VTokenHarness.sol/VTokenHarness.dbg.json +4 -0
  198. package/artifacts/contracts/test/VTokenHarness.sol/VTokenHarness.json +2306 -0
  199. package/contracts/BaseJumpRateModelV2.sol +1 -1
  200. package/contracts/Comptroller.sol +6 -10
  201. package/contracts/Shortfall/Shortfall.sol +0 -2
  202. package/contracts/WhitePaperInterestRateModel.sol +1 -1
  203. package/package.json +1 -1
@@ -0,0 +1,1667 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "Comptroller",
4
+ "sourceName": "contracts/Comptroller.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
+ {
716
+ "internalType": "address",
717
+ "name": "",
718
+ "type": "address"
719
+ }
720
+ ],
721
+ "name": "borrowCaps",
722
+ "outputs": [
723
+ {
724
+ "internalType": "uint256",
725
+ "name": "",
726
+ "type": "uint256"
727
+ }
728
+ ],
729
+ "stateMutability": "view",
730
+ "type": "function"
731
+ },
732
+ {
733
+ "inputs": [
734
+ {
735
+ "internalType": "address",
736
+ "name": "account",
737
+ "type": "address"
738
+ },
739
+ {
740
+ "internalType": "contract VToken",
741
+ "name": "vToken",
742
+ "type": "address"
743
+ }
744
+ ],
745
+ "name": "checkMembership",
746
+ "outputs": [
747
+ {
748
+ "internalType": "bool",
749
+ "name": "",
750
+ "type": "bool"
751
+ }
752
+ ],
753
+ "stateMutability": "view",
754
+ "type": "function"
755
+ },
756
+ {
757
+ "inputs": [],
758
+ "name": "closeFactorMantissa",
759
+ "outputs": [
760
+ {
761
+ "internalType": "uint256",
762
+ "name": "",
763
+ "type": "uint256"
764
+ }
765
+ ],
766
+ "stateMutability": "view",
767
+ "type": "function"
768
+ },
769
+ {
770
+ "inputs": [
771
+ {
772
+ "internalType": "address[]",
773
+ "name": "vTokens",
774
+ "type": "address[]"
775
+ }
776
+ ],
777
+ "name": "enterMarkets",
778
+ "outputs": [
779
+ {
780
+ "internalType": "uint256[]",
781
+ "name": "",
782
+ "type": "uint256[]"
783
+ }
784
+ ],
785
+ "stateMutability": "nonpayable",
786
+ "type": "function"
787
+ },
788
+ {
789
+ "inputs": [
790
+ {
791
+ "internalType": "address",
792
+ "name": "vTokenAddress",
793
+ "type": "address"
794
+ }
795
+ ],
796
+ "name": "exitMarket",
797
+ "outputs": [
798
+ {
799
+ "internalType": "uint256",
800
+ "name": "",
801
+ "type": "uint256"
802
+ }
803
+ ],
804
+ "stateMutability": "nonpayable",
805
+ "type": "function"
806
+ },
807
+ {
808
+ "inputs": [
809
+ {
810
+ "internalType": "address",
811
+ "name": "account",
812
+ "type": "address"
813
+ }
814
+ ],
815
+ "name": "getAccountLiquidity",
816
+ "outputs": [
817
+ {
818
+ "internalType": "uint256",
819
+ "name": "error",
820
+ "type": "uint256"
821
+ },
822
+ {
823
+ "internalType": "uint256",
824
+ "name": "liquidity",
825
+ "type": "uint256"
826
+ },
827
+ {
828
+ "internalType": "uint256",
829
+ "name": "shortfall",
830
+ "type": "uint256"
831
+ }
832
+ ],
833
+ "stateMutability": "view",
834
+ "type": "function"
835
+ },
836
+ {
837
+ "inputs": [],
838
+ "name": "getAllMarkets",
839
+ "outputs": [
840
+ {
841
+ "internalType": "contract VToken[]",
842
+ "name": "",
843
+ "type": "address[]"
844
+ }
845
+ ],
846
+ "stateMutability": "view",
847
+ "type": "function"
848
+ },
849
+ {
850
+ "inputs": [
851
+ {
852
+ "internalType": "address",
853
+ "name": "account",
854
+ "type": "address"
855
+ }
856
+ ],
857
+ "name": "getAssetsIn",
858
+ "outputs": [
859
+ {
860
+ "internalType": "contract VToken[]",
861
+ "name": "",
862
+ "type": "address[]"
863
+ }
864
+ ],
865
+ "stateMutability": "view",
866
+ "type": "function"
867
+ },
868
+ {
869
+ "inputs": [
870
+ {
871
+ "internalType": "address",
872
+ "name": "account",
873
+ "type": "address"
874
+ }
875
+ ],
876
+ "name": "getBorrowingPower",
877
+ "outputs": [
878
+ {
879
+ "internalType": "uint256",
880
+ "name": "error",
881
+ "type": "uint256"
882
+ },
883
+ {
884
+ "internalType": "uint256",
885
+ "name": "liquidity",
886
+ "type": "uint256"
887
+ },
888
+ {
889
+ "internalType": "uint256",
890
+ "name": "shortfall",
891
+ "type": "uint256"
892
+ }
893
+ ],
894
+ "stateMutability": "view",
895
+ "type": "function"
896
+ },
897
+ {
898
+ "inputs": [
899
+ {
900
+ "internalType": "address",
901
+ "name": "account",
902
+ "type": "address"
903
+ },
904
+ {
905
+ "internalType": "address",
906
+ "name": "vTokenModify",
907
+ "type": "address"
908
+ },
909
+ {
910
+ "internalType": "uint256",
911
+ "name": "redeemTokens",
912
+ "type": "uint256"
913
+ },
914
+ {
915
+ "internalType": "uint256",
916
+ "name": "borrowAmount",
917
+ "type": "uint256"
918
+ }
919
+ ],
920
+ "name": "getHypotheticalAccountLiquidity",
921
+ "outputs": [
922
+ {
923
+ "internalType": "uint256",
924
+ "name": "error",
925
+ "type": "uint256"
926
+ },
927
+ {
928
+ "internalType": "uint256",
929
+ "name": "liquidity",
930
+ "type": "uint256"
931
+ },
932
+ {
933
+ "internalType": "uint256",
934
+ "name": "shortfall",
935
+ "type": "uint256"
936
+ }
937
+ ],
938
+ "stateMutability": "view",
939
+ "type": "function"
940
+ },
941
+ {
942
+ "inputs": [],
943
+ "name": "getRewardDistributors",
944
+ "outputs": [
945
+ {
946
+ "internalType": "contract RewardsDistributor[]",
947
+ "name": "",
948
+ "type": "address[]"
949
+ }
950
+ ],
951
+ "stateMutability": "view",
952
+ "type": "function"
953
+ },
954
+ {
955
+ "inputs": [
956
+ {
957
+ "internalType": "address",
958
+ "name": "vToken",
959
+ "type": "address"
960
+ }
961
+ ],
962
+ "name": "getRewardsByMarket",
963
+ "outputs": [
964
+ {
965
+ "components": [
966
+ {
967
+ "internalType": "address",
968
+ "name": "rewardToken",
969
+ "type": "address"
970
+ },
971
+ {
972
+ "internalType": "uint256",
973
+ "name": "supplySpeed",
974
+ "type": "uint256"
975
+ },
976
+ {
977
+ "internalType": "uint256",
978
+ "name": "borrowSpeed",
979
+ "type": "uint256"
980
+ }
981
+ ],
982
+ "internalType": "struct ComptrollerStorage.RewardSpeeds[]",
983
+ "name": "rewardSpeeds",
984
+ "type": "tuple[]"
985
+ }
986
+ ],
987
+ "stateMutability": "view",
988
+ "type": "function"
989
+ },
990
+ {
991
+ "inputs": [
992
+ {
993
+ "internalType": "address",
994
+ "name": "user",
995
+ "type": "address"
996
+ }
997
+ ],
998
+ "name": "healAccount",
999
+ "outputs": [],
1000
+ "stateMutability": "nonpayable",
1001
+ "type": "function"
1002
+ },
1003
+ {
1004
+ "inputs": [
1005
+ {
1006
+ "internalType": "uint256",
1007
+ "name": "loopLimit",
1008
+ "type": "uint256"
1009
+ },
1010
+ {
1011
+ "internalType": "address",
1012
+ "name": "accessControlManager",
1013
+ "type": "address"
1014
+ }
1015
+ ],
1016
+ "name": "initialize",
1017
+ "outputs": [],
1018
+ "stateMutability": "nonpayable",
1019
+ "type": "function"
1020
+ },
1021
+ {
1022
+ "inputs": [],
1023
+ "name": "isComptroller",
1024
+ "outputs": [
1025
+ {
1026
+ "internalType": "bool",
1027
+ "name": "",
1028
+ "type": "bool"
1029
+ }
1030
+ ],
1031
+ "stateMutability": "pure",
1032
+ "type": "function"
1033
+ },
1034
+ {
1035
+ "inputs": [
1036
+ {
1037
+ "internalType": "contract VToken",
1038
+ "name": "vToken",
1039
+ "type": "address"
1040
+ }
1041
+ ],
1042
+ "name": "isDeprecated",
1043
+ "outputs": [
1044
+ {
1045
+ "internalType": "bool",
1046
+ "name": "",
1047
+ "type": "bool"
1048
+ }
1049
+ ],
1050
+ "stateMutability": "view",
1051
+ "type": "function"
1052
+ },
1053
+ {
1054
+ "inputs": [
1055
+ {
1056
+ "internalType": "contract VToken",
1057
+ "name": "vToken",
1058
+ "type": "address"
1059
+ }
1060
+ ],
1061
+ "name": "isMarketListed",
1062
+ "outputs": [
1063
+ {
1064
+ "internalType": "bool",
1065
+ "name": "",
1066
+ "type": "bool"
1067
+ }
1068
+ ],
1069
+ "stateMutability": "view",
1070
+ "type": "function"
1071
+ },
1072
+ {
1073
+ "inputs": [
1074
+ {
1075
+ "internalType": "address",
1076
+ "name": "borrower",
1077
+ "type": "address"
1078
+ },
1079
+ {
1080
+ "components": [
1081
+ {
1082
+ "internalType": "contract VToken",
1083
+ "name": "vTokenCollateral",
1084
+ "type": "address"
1085
+ },
1086
+ {
1087
+ "internalType": "contract VToken",
1088
+ "name": "vTokenBorrowed",
1089
+ "type": "address"
1090
+ },
1091
+ {
1092
+ "internalType": "uint256",
1093
+ "name": "repayAmount",
1094
+ "type": "uint256"
1095
+ }
1096
+ ],
1097
+ "internalType": "struct ComptrollerStorage.LiquidationOrder[]",
1098
+ "name": "orders",
1099
+ "type": "tuple[]"
1100
+ }
1101
+ ],
1102
+ "name": "liquidateAccount",
1103
+ "outputs": [],
1104
+ "stateMutability": "nonpayable",
1105
+ "type": "function"
1106
+ },
1107
+ {
1108
+ "inputs": [
1109
+ {
1110
+ "internalType": "address",
1111
+ "name": "vTokenBorrowed",
1112
+ "type": "address"
1113
+ },
1114
+ {
1115
+ "internalType": "address",
1116
+ "name": "vTokenCollateral",
1117
+ "type": "address"
1118
+ },
1119
+ {
1120
+ "internalType": "uint256",
1121
+ "name": "actualRepayAmount",
1122
+ "type": "uint256"
1123
+ }
1124
+ ],
1125
+ "name": "liquidateCalculateSeizeTokens",
1126
+ "outputs": [
1127
+ {
1128
+ "internalType": "uint256",
1129
+ "name": "error",
1130
+ "type": "uint256"
1131
+ },
1132
+ {
1133
+ "internalType": "uint256",
1134
+ "name": "tokensToSeize",
1135
+ "type": "uint256"
1136
+ }
1137
+ ],
1138
+ "stateMutability": "view",
1139
+ "type": "function"
1140
+ },
1141
+ {
1142
+ "inputs": [],
1143
+ "name": "liquidationIncentiveMantissa",
1144
+ "outputs": [
1145
+ {
1146
+ "internalType": "uint256",
1147
+ "name": "",
1148
+ "type": "uint256"
1149
+ }
1150
+ ],
1151
+ "stateMutability": "view",
1152
+ "type": "function"
1153
+ },
1154
+ {
1155
+ "inputs": [
1156
+ {
1157
+ "internalType": "address",
1158
+ "name": "",
1159
+ "type": "address"
1160
+ }
1161
+ ],
1162
+ "name": "markets",
1163
+ "outputs": [
1164
+ {
1165
+ "internalType": "bool",
1166
+ "name": "isListed",
1167
+ "type": "bool"
1168
+ },
1169
+ {
1170
+ "internalType": "uint256",
1171
+ "name": "collateralFactorMantissa",
1172
+ "type": "uint256"
1173
+ },
1174
+ {
1175
+ "internalType": "uint256",
1176
+ "name": "liquidationThresholdMantissa",
1177
+ "type": "uint256"
1178
+ }
1179
+ ],
1180
+ "stateMutability": "view",
1181
+ "type": "function"
1182
+ },
1183
+ {
1184
+ "inputs": [],
1185
+ "name": "maxLoopsLimit",
1186
+ "outputs": [
1187
+ {
1188
+ "internalType": "uint256",
1189
+ "name": "",
1190
+ "type": "uint256"
1191
+ }
1192
+ ],
1193
+ "stateMutability": "view",
1194
+ "type": "function"
1195
+ },
1196
+ {
1197
+ "inputs": [],
1198
+ "name": "minLiquidatableCollateral",
1199
+ "outputs": [
1200
+ {
1201
+ "internalType": "uint256",
1202
+ "name": "",
1203
+ "type": "uint256"
1204
+ }
1205
+ ],
1206
+ "stateMutability": "view",
1207
+ "type": "function"
1208
+ },
1209
+ {
1210
+ "inputs": [],
1211
+ "name": "oracle",
1212
+ "outputs": [
1213
+ {
1214
+ "internalType": "contract ResilientOracleInterface",
1215
+ "name": "",
1216
+ "type": "address"
1217
+ }
1218
+ ],
1219
+ "stateMutability": "view",
1220
+ "type": "function"
1221
+ },
1222
+ {
1223
+ "inputs": [],
1224
+ "name": "owner",
1225
+ "outputs": [
1226
+ {
1227
+ "internalType": "address",
1228
+ "name": "",
1229
+ "type": "address"
1230
+ }
1231
+ ],
1232
+ "stateMutability": "view",
1233
+ "type": "function"
1234
+ },
1235
+ {
1236
+ "inputs": [],
1237
+ "name": "pendingOwner",
1238
+ "outputs": [
1239
+ {
1240
+ "internalType": "address",
1241
+ "name": "",
1242
+ "type": "address"
1243
+ }
1244
+ ],
1245
+ "stateMutability": "view",
1246
+ "type": "function"
1247
+ },
1248
+ {
1249
+ "inputs": [],
1250
+ "name": "poolRegistry",
1251
+ "outputs": [
1252
+ {
1253
+ "internalType": "address",
1254
+ "name": "",
1255
+ "type": "address"
1256
+ }
1257
+ ],
1258
+ "stateMutability": "view",
1259
+ "type": "function"
1260
+ },
1261
+ {
1262
+ "inputs": [
1263
+ {
1264
+ "internalType": "address",
1265
+ "name": "vToken",
1266
+ "type": "address"
1267
+ },
1268
+ {
1269
+ "internalType": "address",
1270
+ "name": "borrower",
1271
+ "type": "address"
1272
+ },
1273
+ {
1274
+ "internalType": "uint256",
1275
+ "name": "borrowAmount",
1276
+ "type": "uint256"
1277
+ }
1278
+ ],
1279
+ "name": "preBorrowHook",
1280
+ "outputs": [],
1281
+ "stateMutability": "nonpayable",
1282
+ "type": "function"
1283
+ },
1284
+ {
1285
+ "inputs": [
1286
+ {
1287
+ "internalType": "address",
1288
+ "name": "vTokenBorrowed",
1289
+ "type": "address"
1290
+ },
1291
+ {
1292
+ "internalType": "address",
1293
+ "name": "vTokenCollateral",
1294
+ "type": "address"
1295
+ },
1296
+ {
1297
+ "internalType": "address",
1298
+ "name": "borrower",
1299
+ "type": "address"
1300
+ },
1301
+ {
1302
+ "internalType": "uint256",
1303
+ "name": "repayAmount",
1304
+ "type": "uint256"
1305
+ },
1306
+ {
1307
+ "internalType": "bool",
1308
+ "name": "skipLiquidityCheck",
1309
+ "type": "bool"
1310
+ }
1311
+ ],
1312
+ "name": "preLiquidateHook",
1313
+ "outputs": [],
1314
+ "stateMutability": "nonpayable",
1315
+ "type": "function"
1316
+ },
1317
+ {
1318
+ "inputs": [
1319
+ {
1320
+ "internalType": "address",
1321
+ "name": "vToken",
1322
+ "type": "address"
1323
+ },
1324
+ {
1325
+ "internalType": "address",
1326
+ "name": "minter",
1327
+ "type": "address"
1328
+ },
1329
+ {
1330
+ "internalType": "uint256",
1331
+ "name": "mintAmount",
1332
+ "type": "uint256"
1333
+ }
1334
+ ],
1335
+ "name": "preMintHook",
1336
+ "outputs": [],
1337
+ "stateMutability": "nonpayable",
1338
+ "type": "function"
1339
+ },
1340
+ {
1341
+ "inputs": [
1342
+ {
1343
+ "internalType": "address",
1344
+ "name": "vToken",
1345
+ "type": "address"
1346
+ },
1347
+ {
1348
+ "internalType": "address",
1349
+ "name": "redeemer",
1350
+ "type": "address"
1351
+ },
1352
+ {
1353
+ "internalType": "uint256",
1354
+ "name": "redeemTokens",
1355
+ "type": "uint256"
1356
+ }
1357
+ ],
1358
+ "name": "preRedeemHook",
1359
+ "outputs": [],
1360
+ "stateMutability": "nonpayable",
1361
+ "type": "function"
1362
+ },
1363
+ {
1364
+ "inputs": [
1365
+ {
1366
+ "internalType": "address",
1367
+ "name": "vToken",
1368
+ "type": "address"
1369
+ },
1370
+ {
1371
+ "internalType": "address",
1372
+ "name": "borrower",
1373
+ "type": "address"
1374
+ }
1375
+ ],
1376
+ "name": "preRepayHook",
1377
+ "outputs": [],
1378
+ "stateMutability": "nonpayable",
1379
+ "type": "function"
1380
+ },
1381
+ {
1382
+ "inputs": [
1383
+ {
1384
+ "internalType": "address",
1385
+ "name": "vTokenCollateral",
1386
+ "type": "address"
1387
+ },
1388
+ {
1389
+ "internalType": "address",
1390
+ "name": "seizerContract",
1391
+ "type": "address"
1392
+ },
1393
+ {
1394
+ "internalType": "address",
1395
+ "name": "liquidator",
1396
+ "type": "address"
1397
+ },
1398
+ {
1399
+ "internalType": "address",
1400
+ "name": "borrower",
1401
+ "type": "address"
1402
+ }
1403
+ ],
1404
+ "name": "preSeizeHook",
1405
+ "outputs": [],
1406
+ "stateMutability": "nonpayable",
1407
+ "type": "function"
1408
+ },
1409
+ {
1410
+ "inputs": [
1411
+ {
1412
+ "internalType": "address",
1413
+ "name": "vToken",
1414
+ "type": "address"
1415
+ },
1416
+ {
1417
+ "internalType": "address",
1418
+ "name": "src",
1419
+ "type": "address"
1420
+ },
1421
+ {
1422
+ "internalType": "address",
1423
+ "name": "dst",
1424
+ "type": "address"
1425
+ },
1426
+ {
1427
+ "internalType": "uint256",
1428
+ "name": "transferTokens",
1429
+ "type": "uint256"
1430
+ }
1431
+ ],
1432
+ "name": "preTransferHook",
1433
+ "outputs": [],
1434
+ "stateMutability": "nonpayable",
1435
+ "type": "function"
1436
+ },
1437
+ {
1438
+ "inputs": [],
1439
+ "name": "renounceOwnership",
1440
+ "outputs": [],
1441
+ "stateMutability": "nonpayable",
1442
+ "type": "function"
1443
+ },
1444
+ {
1445
+ "inputs": [
1446
+ {
1447
+ "internalType": "address",
1448
+ "name": "accessControlManager_",
1449
+ "type": "address"
1450
+ }
1451
+ ],
1452
+ "name": "setAccessControlManager",
1453
+ "outputs": [],
1454
+ "stateMutability": "nonpayable",
1455
+ "type": "function"
1456
+ },
1457
+ {
1458
+ "inputs": [
1459
+ {
1460
+ "internalType": "contract VToken[]",
1461
+ "name": "marketsList",
1462
+ "type": "address[]"
1463
+ },
1464
+ {
1465
+ "internalType": "enum ComptrollerStorage.Action[]",
1466
+ "name": "actionsList",
1467
+ "type": "uint8[]"
1468
+ },
1469
+ {
1470
+ "internalType": "bool",
1471
+ "name": "paused",
1472
+ "type": "bool"
1473
+ }
1474
+ ],
1475
+ "name": "setActionsPaused",
1476
+ "outputs": [],
1477
+ "stateMutability": "nonpayable",
1478
+ "type": "function"
1479
+ },
1480
+ {
1481
+ "inputs": [
1482
+ {
1483
+ "internalType": "uint256",
1484
+ "name": "newCloseFactorMantissa",
1485
+ "type": "uint256"
1486
+ }
1487
+ ],
1488
+ "name": "setCloseFactor",
1489
+ "outputs": [],
1490
+ "stateMutability": "nonpayable",
1491
+ "type": "function"
1492
+ },
1493
+ {
1494
+ "inputs": [
1495
+ {
1496
+ "internalType": "contract VToken",
1497
+ "name": "vToken",
1498
+ "type": "address"
1499
+ },
1500
+ {
1501
+ "internalType": "uint256",
1502
+ "name": "newCollateralFactorMantissa",
1503
+ "type": "uint256"
1504
+ },
1505
+ {
1506
+ "internalType": "uint256",
1507
+ "name": "newLiquidationThresholdMantissa",
1508
+ "type": "uint256"
1509
+ }
1510
+ ],
1511
+ "name": "setCollateralFactor",
1512
+ "outputs": [],
1513
+ "stateMutability": "nonpayable",
1514
+ "type": "function"
1515
+ },
1516
+ {
1517
+ "inputs": [
1518
+ {
1519
+ "internalType": "uint256",
1520
+ "name": "newLiquidationIncentiveMantissa",
1521
+ "type": "uint256"
1522
+ }
1523
+ ],
1524
+ "name": "setLiquidationIncentive",
1525
+ "outputs": [],
1526
+ "stateMutability": "nonpayable",
1527
+ "type": "function"
1528
+ },
1529
+ {
1530
+ "inputs": [
1531
+ {
1532
+ "internalType": "contract VToken[]",
1533
+ "name": "vTokens",
1534
+ "type": "address[]"
1535
+ },
1536
+ {
1537
+ "internalType": "uint256[]",
1538
+ "name": "newBorrowCaps",
1539
+ "type": "uint256[]"
1540
+ }
1541
+ ],
1542
+ "name": "setMarketBorrowCaps",
1543
+ "outputs": [],
1544
+ "stateMutability": "nonpayable",
1545
+ "type": "function"
1546
+ },
1547
+ {
1548
+ "inputs": [
1549
+ {
1550
+ "internalType": "contract VToken[]",
1551
+ "name": "vTokens",
1552
+ "type": "address[]"
1553
+ },
1554
+ {
1555
+ "internalType": "uint256[]",
1556
+ "name": "newSupplyCaps",
1557
+ "type": "uint256[]"
1558
+ }
1559
+ ],
1560
+ "name": "setMarketSupplyCaps",
1561
+ "outputs": [],
1562
+ "stateMutability": "nonpayable",
1563
+ "type": "function"
1564
+ },
1565
+ {
1566
+ "inputs": [
1567
+ {
1568
+ "internalType": "uint256",
1569
+ "name": "limit",
1570
+ "type": "uint256"
1571
+ }
1572
+ ],
1573
+ "name": "setMaxLoopsLimit",
1574
+ "outputs": [],
1575
+ "stateMutability": "nonpayable",
1576
+ "type": "function"
1577
+ },
1578
+ {
1579
+ "inputs": [
1580
+ {
1581
+ "internalType": "uint256",
1582
+ "name": "newMinLiquidatableCollateral",
1583
+ "type": "uint256"
1584
+ }
1585
+ ],
1586
+ "name": "setMinLiquidatableCollateral",
1587
+ "outputs": [],
1588
+ "stateMutability": "nonpayable",
1589
+ "type": "function"
1590
+ },
1591
+ {
1592
+ "inputs": [
1593
+ {
1594
+ "internalType": "contract ResilientOracleInterface",
1595
+ "name": "newOracle",
1596
+ "type": "address"
1597
+ }
1598
+ ],
1599
+ "name": "setPriceOracle",
1600
+ "outputs": [],
1601
+ "stateMutability": "nonpayable",
1602
+ "type": "function"
1603
+ },
1604
+ {
1605
+ "inputs": [
1606
+ {
1607
+ "internalType": "address",
1608
+ "name": "",
1609
+ "type": "address"
1610
+ }
1611
+ ],
1612
+ "name": "supplyCaps",
1613
+ "outputs": [
1614
+ {
1615
+ "internalType": "uint256",
1616
+ "name": "",
1617
+ "type": "uint256"
1618
+ }
1619
+ ],
1620
+ "stateMutability": "view",
1621
+ "type": "function"
1622
+ },
1623
+ {
1624
+ "inputs": [
1625
+ {
1626
+ "internalType": "contract VToken",
1627
+ "name": "vToken",
1628
+ "type": "address"
1629
+ }
1630
+ ],
1631
+ "name": "supportMarket",
1632
+ "outputs": [],
1633
+ "stateMutability": "nonpayable",
1634
+ "type": "function"
1635
+ },
1636
+ {
1637
+ "inputs": [
1638
+ {
1639
+ "internalType": "address",
1640
+ "name": "newOwner",
1641
+ "type": "address"
1642
+ }
1643
+ ],
1644
+ "name": "transferOwnership",
1645
+ "outputs": [],
1646
+ "stateMutability": "nonpayable",
1647
+ "type": "function"
1648
+ },
1649
+ {
1650
+ "inputs": [
1651
+ {
1652
+ "internalType": "address",
1653
+ "name": "account",
1654
+ "type": "address"
1655
+ }
1656
+ ],
1657
+ "name": "updatePrices",
1658
+ "outputs": [],
1659
+ "stateMutability": "nonpayable",
1660
+ "type": "function"
1661
+ }
1662
+ ],
1663
+ "bytecode": "0x60a06040523480156200001157600080fd5b5060405162005a6538038062005a6583398101604081905262000034916200014c565b6200003f816200005d565b6001600160a01b0381166080526200005662000088565b50620001d5565b6001600160a01b03811662000085576040516342bcdf7f60e11b815260040160405180910390fd5b50565b600054610100900460ff1615620000bc5760405162461bcd60e51b8152600401620000b39062000179565b60405180910390fd5b60005460ff9081161462000113576000805460ff191660ff9081179091556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498916200010a91620001c5565b60405180910390a15b565b60006001600160a01b0382165b92915050565b620001338162000115565b81146200008557600080fd5b8051620001228162000128565b600060208284031215620001635762000163600080fd5b60006200017184846200013f565b949350505050565b602080825281016200012281602781527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469602082015266616c697a696e6760c81b604082015260600190565b60ff821681526020810162000122565b60805161586d620001f86000396000818161067501526129aa015261586d6000f3fe608060405234801561001057600080fd5b506004361061035c5760003560e01c80638e6470ea116101d3578063c488847b11610104578063e30c3978116100a2578063e89d51ad1161007c578063e89d51ad146107c3578063eade3eed146107d6578063ede4edd0146107e9578063f2fde38b146107fc57600080fd5b8063e30c397814610796578063e85a2960146107a7578063e8755446146107ba57600080fd5b8063da35a26f116100de578063da35a26f14610754578063db5c65de14610767578063dce1544914610770578063df71403b1461078357600080fd5b8063c488847b1461070d578063cab4f84c1461072e578063d136af441461074157600080fd5b8063afcff50f11610171578063b4a0bdf31161014b578063b4a0bdf3146106bf578063be26317e146106d0578063c0891ba9146106da578063c2998238146106ed57600080fd5b8063afcff50f14610670578063b0772d0b14610697578063b2068e841461069f57600080fd5b8063929fe9a1116101ad578063929fe9a11461061757806394543c151461062a578063a84310811461063d578063abfceffc1461065057600080fd5b80638e6470ea146105af5780638e8f294b146105c2578063921363951461060457600080fd5b8063528a174c116102ad57806361252fd11161024b57806379ba50971161022557806379ba5097146105675780637dc0d1d01461056f57806380d45a2d146105825780638da5cb5b1461059557600080fd5b806361252fd1146105375780636d0be88d1461054c578063715018a61461055f57600080fd5b806356aaee2d1161028757806356aaee2d146104eb5780635c21b6c5146104fe5780635cc4fdeb146105115780635ec88c791461052457600080fd5b8063528a174c146104a557806352d84d1e146104b8578063530e784f146104d857600080fd5b806324aaa2201161031a5780634a584432116102f45780634a584432146104475780634ada90af146104675780634e79238f14610470578063520b6c741461049257600080fd5b806324aaa220146103f55780632bce219c146104085780633d98a1e51461041b57600080fd5b80627e3dd21461036157806302c3bcbb1461037a5780630e32cb86146103a757806312348e96146103bc578063186db48f146103cf5780631bc41f28146103e2575b600080fd5b60015b60405161037191906144b1565b60405180910390f35b61039a6103883660046144ef565b60d16020526000908152604090205481565b6040516103719190614516565b6103ba6103b53660046144ef565b61080f565b005b6103ba6103ca366004614535565b610823565b6103ba6103dd3660046145a8565b6108ff565b6103ba6103f0366004614621565b610a56565b6103ba610403366004614698565b610e16565b6103ba610416366004614772565b610ee3565b6103646104293660046147ed565b6001600160a01b0316600090815260cd602052604090205460ff1690565b61039a6104553660046144ef565b60cf6020526000908152604090205481565b61039a60cb5481565b61048361047e36600461480e565b61124a565b60405161037193929190614866565b6103ba6104a0366004614535565b61127b565b6104836104b33660046144ef565b6112d5565b6104cb6104c6366004614535565b611300565b60405161037191906148a2565b6103ba6104e63660046147ed565b61132a565b6103ba6104f93660046147ed565b61138e565b6103ba61050c3660046144ef565b611662565b6103ba61051f3660046148b0565b61177f565b6104836105323660046144ef565b611991565b61053f6119a3565b604051610371919061495d565b6103ba61055a36600461496e565b611a05565b6103ba611b7e565b6103ba611b92565b60c9546104cb906001600160a01b031681565b6103ba610590366004614535565b611bc7565b6033546001600160a01b03165b60405161037191906149be565b6103ba6105bd3660046149cc565b611bd8565b6105f56105d03660046144ef565b60cd6020526000908152604090208054600182015460029092015460ff909116919083565b60405161037193929190614a01565b6103ba6106123660046144ef565b611cf1565b610364610625366004614a0f565b6120aa565b6103646106383660046147ed565b6120de565b6103ba61064b366004614535565b612186565b61066361065e3660046144ef565b612226565b6040516103719190614a8a565b6105a27f000000000000000000000000000000000000000000000000000000000000000081565b61066361229c565b6106b26106ad3660046144ef565b6122fc565b6040516103719190614b24565b6097546001600160a01b03166104cb565b61039a6101075481565b6103ba6106e83660046149cc565b612547565b6107006106fb366004614c3c565b6127c3565b6040516103719190614cc1565b61072061071b3660046149cc565b61287a565b604051610371929190614cd2565b6103ba61073c3660046147ed565b6129a5565b6103ba61074f3660046145a8565b612b9d565b6103ba610762366004614ced565b612d00565b61039a60d05481565b6104cb61077e366004614d20565b612dda565b6103ba6107913660046149cc565b612e12565b6065546001600160a01b03166105a2565b6103646107b5366004614d6b565b6131a8565b61039a60ca5481565b6103ba6107d1366004614d9e565b6131ff565b6103ba6107e4366004614e09565b6133d8565b61039a6107f73660046144ef565b613602565b6103ba61080a3660046144ef565b613874565b6108176138e5565b6108208161390f565b50565b6108616040518060400160405280601781526020017f736574436c6f7365466163746f722875696e7432353629000000000000000000815250613988565b80670c7d713b49da000010156108925760405162461bcd60e51b815260040161088990614e79565b60405180910390fd5b8066b1a2bc2ec5000011156108b95760405162461bcd60e51b815260040161088990614ed4565b60ca8054908290556040517f3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9906108f39083908590614cd2565b60405180910390a15050565b61092060405180606001604052806028815260200161576d60289139613988565b8281811580159061093057508082145b61094c5760405162461bcd60e51b815260040161088990614f0b565b61095582613a26565b60005b82811015610a4d5784848281811061097257610972614f1b565b9050602002013560cf600089898581811061098f5761098f614f1b565b90506020020160208101906109a491906147ed565b6001600160a01b031681526020810191909152604001600020558686828181106109d0576109d0614f1b565b90506020020160208101906109e591906147ed565b6001600160a01b03167f6f1951b2aad10f3fc81b86d91105b413a5b3f847a34bbc5ce1904201b14438f6868684818110610a2157610a21614f1b565b90506020020135604051610a359190614516565b60405180910390a2610a4681614f47565b9050610958565b50505050505050565b610a61846004613a51565b6001600160a01b038416600090815260cd60205260409020805460ff16610a9d5784604051635a9a1eb960e11b815260040161088991906149be565b306001600160a01b03851603610b4557306001600160a01b0316856001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b199190614f6c565b6001600160a01b031614610b4057604051630c73eb0560e01b815260040160405180910390fd5b610c74565b6001600160a01b038416600090815260cd602052604090205460ff16610b805783604051635a9a1eb960e11b815260040161088991906149be565b836001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be29190614f6c565b6001600160a01b0316856001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4d9190614f6c565b6001600160a01b031614610c7457604051630c73eb0560e01b815260040160405180910390fd5b6001600160a01b038216600090815260038201602052604090205460ff16610cb3578482604051630cdfb2db60e31b8152600401610889929190614f8d565b60d35460005b81811015610a4d57600060d38281548110610cd657610cd6614f1b565b60009182526020909120015460405163051d1d4f60e11b81526001600160a01b0390911691508190630a3a3a9e90610d12908b906004016149be565b600060405180830381600087803b158015610d2c57600080fd5b505af1158015610d40573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150610d72908b908990600401614f8d565b600060405180830381600087803b158015610d8c57600080fd5b505af1158015610da0573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150610dd2908b908a90600401614f8d565b600060405180830381600087803b158015610dec57600080fd5b505af1158015610e00573d6000803e3d6000fd5b505050505080610e0f90614f47565b9050610cb9565b610e376040518060600160405280602a81526020016157e6602a9139613988565b8382610e4b610e468284614fa8565b613a26565b60005b82811015610ed95760005b82811015610ec857610eb8898984818110610e7657610e76614f1b565b9050602002016020810190610e8b91906147ed565b888884818110610e9d57610e9d614f1b565b9050602002016020810190610eb29190614fc7565b87613a7d565b610ec181614f47565b9050610e59565b50610ed281614f47565b9050610e4e565b5050505050505050565b6000610ef184613b4a613b7e565b905060d05481600001511115610f215760d0548151604051631a451c0f60e21b8152610889929190600401614cd2565b6000610f41604051806020016040528060cb548152508360400151613bcd565b82519091508110610f69578151604051632c1f8ef160e21b8152610889918391600401614cd2565b8160a00151600003610f8e5760405163095bf33360e01b815260040160405180910390fd5b82610f9d610e46600283614ffe565b60005b818110156111665760cd6000878784818110610fbe57610fbe614f1b565b9050606002016020016020810190610fd691906147ed565b6001600160a01b0316815260208101919091526040016000205460ff1661103b5785858281811061100957611009614f1b565b905060600201602001602081019061102191906147ed565b604051635a9a1eb960e11b815260040161088991906149be565b60cd600087878481811061105157611051614f1b565b61106792602060609092020190810191506147ed565b6001600160a01b0316815260208101919091526040016000205460ff166110b05785858281811061109a5761109a614f1b565b61102192602060609092020190810191506147ed565b368686838181106110c3576110c3614f1b565b90506060020190508060200160208101906110de91906147ed565b6001600160a01b0316638bbdb6db338a604085013561110060208701876147ed565b60016040518663ffffffff1660e01b8152600401611122959493929190615012565b600060405180830381600087803b15801561113c57600080fd5b505af1158015611150573d6000803e3d6000fd5b50505050508061115f90614f47565b9050610fa0565b506001600160a01b038616600090815260cc60209081526040808320805482518185028101850190935280835291929091908301828280156111d157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116111b3575b505083519394506000925050505b8181101561123f57600061120c8483815181106111fe576111fe614f1b565b60200260200101518b613bed565b50915050801561122e5760405162461bcd60e51b8152600401610889906150a3565b5061123881614f47565b90506111df565b505050505050505050565b60008060008061125f88888888613c94613cc8565b608081015160a09091015160009a919950975095505050505050565b61129c60405180606001604052806025815260200161579560259139613988565b60d08054908290556040517eb4f4f153ad7f1397564a8830fef092481e8cf6a2cd3ff04f96d10ba51200a5906108f39083908590614cd2565b6000806000806112e785613c94613b7e565b608081015160a090910151600097919650945092505050565b60ce818154811061131057600080fd5b6000918252602090912001546001600160a01b0316905081565b6113326138e5565b61133b81613efd565b60c980546001600160a01b038381166001600160a01b03198316179092556040519116907fd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22906108f390839085906150b3565b6113966138e5565b6001600160a01b038116600090815260d4602052604090205460ff16156113cf5760405162461bcd60e51b8152600401610889906150f3565b60d35460005b8181101561150957600060d382815481106113f2576113f2614f1b565b600091825260209182902001546040805163f7c618c160e01b815290516001600160a01b039092169263f7c618c1926004808401938290030181865afa158015611440573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114649190614f6c565b9050836001600160a01b031663f7c618c16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c89190614f6c565b6001600160a01b0316816001600160a01b0316036114f85760405162461bcd60e51b81526004016108899061514b565b5061150281614f47565b90506113d5565b5060d35461151b610e4682600161515b565b60d3805460018082019092557f915c3eb987b20e1af620c1403197bf687fb7f18513b3a73fde6e78c7072c41a60180546001600160a01b0319166001600160a01b038616908117909155600090815260d460205260408120805460ff191690921790915560ce54905b8181101561162757846001600160a01b0316632a869a4d60ce83815481106115ae576115ae614f1b565b6000918252602090912001546040516001600160e01b031960e084901b1681526115e4916001600160a01b0316906004016149be565b600060405180830381600087803b1580156115fe57600080fd5b505af1158015611612573d6000803e3d6000fd5b505050508061162090614f47565b9050611584565b506040516001600160a01b038516907f058fa9577dc29aece41d41c2d3bff2ed4e8d5085762198e8f7faab35039555da90600090a250505050565b6001600160a01b038116600090815260cc60209081526040808320805482518185028101850190935280835291929091908301828280156116cc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116ae575b5050835160c954949550936001600160a01b0316925060009150505b8281101561177857816001600160a01b03166396e85ced85838151811061171157611711614f1b565b60200260200101516040518263ffffffff1660e01b815260040161173591906149be565b600060405180830381600087803b15801561174f57600080fd5b505af1158015611763573d6000803e3d6000fd5b505050508061177190614f47565b90506116e8565b5050505050565b6117a06040518060600160405280602c81526020016157ba602c9139613988565b6001600160a01b038316600090815260cd60205260409020805460ff166117dc5783604051635a9a1eb960e11b815260040161088991906149be565b670c7d713b49da0000831115611805576040516302f22cad60e61b815260040160405180910390fd5b670de0b6b3a764000082111561182d5760405162f9474b60e61b815260040160405180910390fd5b8282101561184d5760405162f9474b60e61b815260040160405180910390fd5b82158015906118ca575060c95460405163fc57d4df60e01b81526001600160a01b039091169063fc57d4df906118879087906004016149be565b602060405180830381865afa1580156118a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c8919061517e565b155b156118e9578360405162e52a7d60e41b815260040161088991906149be565b600181015483811461193957600182018490556040517f70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5906119309087908490889061519f565b60405180910390a15b600282015483811461198957600283018490556040517f9e92c7d5fef69846094f3ddcadcb9402c6ba469c461368714f1cabd8ef48b591906119809088908490889061519f565b60405180910390a15b505050505050565b6000806000806112e785613b4a613b7e565b606060d38054806020026020016040519081016040528092919081815260200182805480156119fb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116119dd575b5050505050905090565b611a10846006613a51565b611a1b848483613f24565b60d35460005b8181101561198957600060d38281548110611a3e57611a3e614f1b565b60009182526020909120015460405163051d1d4f60e11b81526001600160a01b0390911691508190630a3a3a9e90611a7a908a906004016149be565b600060405180830381600087803b158015611a9457600080fd5b505af1158015611aa8573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150611ada908a908a90600401614f8d565b600060405180830381600087803b158015611af457600080fd5b505af1158015611b08573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150611b3a908a908990600401614f8d565b600060405180830381600087803b158015611b5457600080fd5b505af1158015611b68573d6000803e3d6000fd5b505050505080611b7790614f47565b9050611a21565b611b866138e5565b611b906000613fc9565b565b60655433906001600160a01b03168114611bbe5760405162461bcd60e51b8152600401610889906151f3565b61082081613fc9565b611bcf6138e5565b61082081613fe2565b611be3836001613a51565b611bee838383613f24565b60d35460005b8181101561177857600060d38281548110611c1157611c11614f1b565b60009182526020909120015460405163051d1d4f60e11b81526001600160a01b0390911691508190630a3a3a9e90611c4d9089906004016149be565b600060405180830381600087803b158015611c6757600080fd5b505af1158015611c7b573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150611cad9089908990600401614f8d565b600060405180830381600087803b158015611cc757600080fd5b505af1158015611cdb573d6000803e3d6000fd5b505050505080611cea90614f47565b9050611bf4565b6001600160a01b038116600090815260cc6020908152604080832080548251818502810185019093528083529192909190830182828015611d5b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611d3d575b5050835160c954949550933393506001600160a01b03169150600090505b83811015611e8757848181518110611d9357611d93614f1b565b60200260200101516001600160a01b031663a6afed956040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611dda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfe919061517e565b50816001600160a01b03166396e85ced868381518110611e2057611e20614f1b565b60200260200101516040518263ffffffff1660e01b8152600401611e4491906149be565b600060405180830381600087803b158015611e5e57600080fd5b505af1158015611e72573d6000803e3d6000fd5b5050505080611e8090614f47565b9050611d79565b50506000611e9785613b4a613b7e565b905060d05481600001511115611ec75760d0548151604051631a451c0f60e21b8152610889929190600401614cd2565b8060a00151600003611eec5760405163095bf33360e01b815260040160405180910390fd5b60408051602080820183528351825282518082018452848401518152835191820190935260cb5481529091600091611f24919061403f565b90506000611f328383614087565b9050611f566040518060200160405280670de0b6b3a7640000815250825190511090565b15611f7a5781518351604051631a451c0f60e21b8152610889929190600401614cd2565b60005b8681101561123f576000888281518110611f9957611f99614f1b565b60200260200101519050600080611fb0838d613bed565b50915091506000611fc18683613bcd565b9050821561202c57836001600160a01b031663b2a02ff18b8f866040518463ffffffff1660e01b8152600401611ff993929190615203565b600060405180830381600087803b15801561201357600080fd5b505af1158015612027573d6000803e3d6000fd5b505050505b811561209557836001600160a01b03166344fe6ffe8b8f846040518463ffffffff1660e01b815260040161206293929190615203565b600060405180830381600087803b15801561207c57600080fd5b505af1158015612090573d6000803e3d6000fd5b505050505b50505050806120a390614f47565b9050611f7d565b6001600160a01b03808216600090815260cd60209081526040808320938616835260039093019052205460ff165b92915050565b6001600160a01b038116600090815260cd602052604081206001015415801561210d575061210d8260026131a8565b80156120d85750670de0b6b3a7640000826001600160a01b031663173b99046040518163ffffffff1660e01b8152600401602060405180830381865afa15801561215b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217f919061517e565b1492915050565b670de0b6b3a76400008110156121ae5760405162461bcd60e51b81526004016108899061526c565b6121ec6040518060400160405280602081526020017f7365744c69717569646174696f6e496e63656e746976652875696e7432353629815250613988565b60cb8054908290556040517faeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316906108f39083908590614cd2565b6001600160a01b038116600090815260cc6020908152604080832080548251818502810185019093528083526060949383018282801561228f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612271575b5093979650505050505050565b606060ce8054806020026020016040519081016040528092919081815260200182805480156119fb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116119dd575050505050905090565b60d3546060908067ffffffffffffffff81111561231b5761231b614b35565b60405190808252806020026020018201604052801561237957816020015b612366604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b8152602001906001900390816123395790505b50915060005b8181101561254057600060d3828154811061239c5761239c614f1b565b60009182526020808320909101546040805163f7c618c160e01b815290516001600160a01b039092169450849263f7c618c1926004808401938290030181865afa1580156123ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124129190614f6c565b90506040518060600160405280826001600160a01b03168152602001836001600160a01b03166374c4c1cc896040518263ffffffff1660e01b815260040161245a91906149be565b602060405180830381865afa158015612477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249b919061517e565b8152602001836001600160a01b0316637c05a7c5896040518263ffffffff1660e01b81526004016124cc91906149be565b602060405180830381865afa1580156124e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250d919061517e565b81525085848151811061252257612522614f1b565b602002602001018190525050508061253990614f47565b905061237f565b5050919050565b612552836000613a51565b6001600160a01b038316600090815260cd602052604090205460ff1661258d5782604051635a9a1eb960e11b815260040161088991906149be565b6001600160a01b038316600090815260d1602052604090205460001981146126c0576000846001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612613919061517e565b905060006040518060200160405280876001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612660573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612684919061517e565b9052905060006126958284876140c1565b9050838111156126bc57868460405163db33be3d60e01b815260040161088992919061527c565b5050505b60d35460005b8181101561198957600060d382815481106126e3576126e3614f1b565b60009182526020909120015460405163051d1d4f60e11b81526001600160a01b0390911691508190630a3a3a9e9061271f908a906004016149be565b600060405180830381600087803b15801561273957600080fd5b505af115801561274d573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd915061277f908a908a90600401614f8d565b600060405180830381600087803b15801561279957600080fd5b505af11580156127ad573d6000803e3d6000fd5b5050505050806127bc90614f47565b90506126c6565b805160609060008167ffffffffffffffff8111156127e3576127e3614b35565b60405190808252806020026020018201604052801561280c578160200160208202803683370190505b50905060005b8281101561287257600085828151811061282e5761282e614f1b565b6020026020010151905061284281336140eb565b600083838151811061285657612856614f1b565b60209081029190910101525061286b81614f47565b9050612812565b509392505050565b6000806000612888866141de565b90506000612895866141de565b90506000866001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128fb919061517e565b905060006129156040518060200160405280600081525090565b60408051602080820183526000808352835180830185529081528351808301855260cb548152845192830190945288825291926129519161403f565b925061297960405180602001604052808881525060405180602001604052808881525061403f565b91506129858383614087565b9050612991818b613bcd565b60009d909c509a5050505050505050505050565b6129ce7f0000000000000000000000000000000000000000000000000000000000000000614278565b6001600160a01b038116600090815260cd602052604090205460ff1615612a0a578060405163d005ce4760e01b815260040161088991906149be565b806001600160a01b0316633d9ea3a16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6c9190615295565b612a885760405162461bcd60e51b8152600401610889906152ea565b6001600160a01b038116600090815260cd60205260408120805460ff19166001908117825581018290556002810191909155612ac3826142a5565b60d35460005b81811015612b605760d38181548110612ae457612ae4614f1b565b600091825260209091200154604051632a869a4d60e01b81526001600160a01b0390911690632a869a4d90612b1d9087906004016149be565b600060405180830381600087803b158015612b3757600080fd5b505af1158015612b4b573d6000803e3d6000fd5b5050505080612b5990614f47565b9050612ac9565b507faf16ad15f9e29d5140e8e81a30a92a755aa8edff3d301053c84392b70c0d09a383604051612b9091906148a2565b60405180910390a1505050565b612bbe60405180606001604052806028815260200161581060289139613988565b826000819003612be05760405162461bcd60e51b81526004016108899061532e565b808214612bff5760405162461bcd60e51b81526004016108899061532e565b612c0881613a26565b60005b8181101561198957838382818110612c2557612c25614f1b565b9050602002013560d16000888885818110612c4257612c42614f1b565b9050602002016020810190612c5791906147ed565b6001600160a01b03168152602081019190915260400160002055858582818110612c8357612c83614f1b565b9050602002016020810190612c9891906147ed565b6001600160a01b03167f9e0ad9cee10bdf36b7fbd38910c0bdff0f275ace679b45b922381c2723d676f8858584818110612cd457612cd4614f1b565b90506020020135604051612ce89190614516565b60405180910390a2612cf981614f47565b9050612c0b565b600054610100900460ff1615808015612d205750600054600160ff909116105b80612d3a5750303b158015612d3a575060005460ff166001145b612d565760405162461bcd60e51b815260040161088990615389565b6000805460ff191660011790558015612d79576000805461ff0019166101001790555b612d8161436b565b612d8a8261439a565b612d9383613fe2565b8015612dd5576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890612b90906001906153ad565b505050565b60cc6020528160005260406000208181548110612df657600080fd5b6000918252602090912001546001600160a01b03169150829050565b612e1d836002613a51565b6001600160a01b038316600090815260cd602052604090205460ff16612e585782604051635a9a1eb960e11b815260040161088991906149be565b6001600160a01b03808416600090815260cd60209081526040808320938616835260039093019052205460ff16612e9c57612e9283614278565b612e9c33836140eb565b612ea582611662565b60c95460405163fc57d4df60e01b81526001600160a01b039091169063fc57d4df90612ed59086906004016149be565b602060405180830381865afa158015612ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f16919061517e565b600003612f37578260405162e52a7d60e41b815260040161088991906149be565b6001600160a01b038316600090815260cf60205260409020546000198114612ff5576000846001600160a01b03166347bd37186040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fbd919061517e565b90506000612fcb848361515b565b905082811115612ff2578583604051632e649eed60e01b815260040161088992919061527c565b50505b60006130078486600086613c94613cc8565b60a08101519091501561302d5760405163bb55fd2760e01b815260040160405180910390fd5b60006040518060200160405280876001600160a01b031663aa5af0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061309c919061517e565b905260d35490915060005b81811015610ed957600060d382815481106130c4576130c4614f1b565b600091825260209091200154604051632352607960e01b81526001600160a01b0390911691508190632352607990613102908c9088906004016153cc565b600060405180830381600087803b15801561311c57600080fd5b505af1158015613130573d6000803e3d6000fd5b5050604051636a95ddef60e01b81526001600160a01b0384169250636a95ddef9150613164908c908c9089906004016153e7565b600060405180830381600087803b15801561317e57600080fd5b505af1158015613192573d6000803e3d6000fd5b5050505050806131a190614f47565b90506130a7565b6001600160a01b038216600090815260d260205260408120818360088111156131d3576131d361540f565b60088111156131e4576131e461540f565b815260208101919091526040016000205460ff169392505050565b61320a856005613a51565b61321383611662565b6001600160a01b038516600090815260cd602052604090205460ff1661324e5784604051635a9a1eb960e11b815260040161088991906149be565b6001600160a01b038416600090815260cd602052604090205460ff166132895783604051635a9a1eb960e11b815260040161088991906149be565b6040516395dd919360e01b81526000906001600160a01b038716906395dd9193906132b89087906004016149be565b602060405180830381865afa1580156132d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132f9919061517e565b9050818061330b575061330b866120de565b1561333757808311156133315760405163e46c155960e01b815260040160405180910390fd5b50611778565b600061334585613b4a613b7e565b905060d0548160000151116133745760d0548151604051636e61bb0560e11b8152610889929190600401614cd2565b8060a001516000036133995760405163095bf33360e01b815260040160405180910390fd5b60006133b5604051806020016040528060ca5481525084613bcd565b905080851115610ed95760405163e46c155960e01b815260040160405180910390fd5b6133e3826003613a51565b60c9546040516396e85ced60e01b81526001600160a01b03909116906396e85ced906134139085906004016149be565b600060405180830381600087803b15801561342d57600080fd5b505af1158015613441573d6000803e3d6000fd5b505050506001600160a01b038216600090815260cd602052604090205460ff166134805781604051635a9a1eb960e11b815260040161088991906149be565b60d35460005b818110156135fc5760006040518060200160405280866001600160a01b031663aa5af0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134fd919061517e565b8152509050600060d3838154811061351757613517614f1b565b600091825260209091200154604051632352607960e01b81526001600160a01b039091169150819063235260799061355590899086906004016153cc565b600060405180830381600087803b15801561356f57600080fd5b505af1158015613583573d6000803e3d6000fd5b5050604051636a95ddef60e01b81526001600160a01b0384169250636a95ddef91506135b7908990899087906004016153e7565b600060405180830381600087803b1580156135d157600080fd5b505af11580156135e5573d6000803e3d6000fd5b505050505050806135f590614f47565b9050613486565b50505050565b600061360f826008613a51565b8160008061361d8333613bed565b5091509150806000146136435760405163f8a5d66d60e01b815260040160405180910390fd5b61364e853384613f24565b6001600160a01b038316600090815260cd60209081526040808320338452600381019092529091205460ff1661368a5750600095945050505050565b3360009081526003820160209081526040808320805460ff1916905560cc8252808320805482518185028101850190935280835291929091908301828280156136fc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116136de575b5050835193945083925060009150505b8281101561375e57876001600160a01b031684828151811061373057613730614f1b565b60200260200101516001600160a01b03160361374e5780915061375e565b61375781614f47565b905061370c565b5081811061376e5761376e615425565b33600090815260cc602052604090208054819061378d9060019061543b565b8154811061379d5761379d614f1b565b9060005260206000200160009054906101000a90046001600160a01b03168183815481106137cd576137cd614f1b565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508080548061380b5761380b615452565b600082815260208120820160001990810180546001600160a01b031916905590910190915560405133916001600160a01b038b16917fe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d9190a35060009998505050505050505050565b61387c6138e5565b606580546001600160a01b0383166001600160a01b031990911681179091556138ad6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b03163314611b905760405162461bcd60e51b81526004016108899061549a565b6001600160a01b0381166139355760405162461bcd60e51b8152600401610889906154ec565b609780546001600160a01b038381166001600160a01b03198316179092556040519116907f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0906108f39083908590614f8d565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab906139bb903390869060040161555a565b602060405180830381865afa1580156139d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139fc9190615295565b905080613a2257333083604051634a3fa29360e01b81526004016108899392919061557a565b5050565b6101075481111561082057610107548160405163792bfb1b60e11b8152600401610889929190614cd2565b613a5b82826131a8565b15613a225781816040516313b3ccb160e31b81526004016108899291906155d5565b6001600160a01b038316600090815260cd602052604090205460ff16613ab55760405162461bcd60e51b815260040161088990615635565b6001600160a01b038316600090815260d2602052604081208291846008811115613ae157613ae161540f565b6008811115613af257613af261540f565b815260200190815260200160002060006101000a81548160ff0219169083151502179055507f35007a986bcd36d2f73fc7f1b73762e12eadb4406dd163194950fd3b5a6a827d838383604051612b9093929190615645565b6040805160208082018352600091829052825180820184526001600160a01b0394909416825260cd90522060020154815290565b613bb76040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b613bc683600080600086613cc8565b9392505050565b600080613bda84846143c1565b9050613be5816143e9565b949350505050565b600080600080856001600160a01b031663c37f68e2866040518263ffffffff1660e01b8152600401613c1f91906149be565b608060405180830381865afa158015613c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c60919061566d565b9196509450925090508015613c8c57858560405163015e34d960e61b8152600401610889929190614f8d565b509250925092565b6040805160208082018352600091829052825180820184526001600160a01b0394909416825260cd90522060010154815290565b613d016040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b038616600090815260cc6020908152604080832080548251818502810185019093528083529192909190830182828015613d6b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613d4d575b505083519394506000925050505b81811015613e9f576000838281518110613d9557613d95614f1b565b602002602001015190506000806000613dae848e613bed565b92509250925060006040518060200160405280613dca876141de565b81525090506000613de96040518060200160405280858152508361403f565b90506000613e03613dfd888e63ffffffff16565b8361403f565b9050613e1481878d602001516140c1565b60208c01528a51613e2890839088906140c1565b8b5260408b0151613e3c90849087906140c1565b8b60400181815250508e6001600160a01b0316876001600160a01b031603613e8757613e6d818f8d606001516140c1565b60608c01819052613e819084908f906140c1565b60608c01525b5050505050505080613e9890614f47565b9050613d79565b50600083606001518460400151613eb6919061515b565b90508084602001511115613edd5760208401518190036080850152600060a0850152613ef1565b600060808501526020840151810360a08501525b50505095945050505050565b6001600160a01b038116610820576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b038316600090815260cd60205260409020805460ff16613f605783604051635a9a1eb960e11b815260040161088991906149be565b6001600160a01b038316600090815260038201602052604090205460ff16613f885750505050565b613f9183611662565b6000613fa38486856000613c94613cc8565b60a0810151909150156117785760405163bb55fd2760e01b815260040160405180910390fd5b606580546001600160a01b031916905561082081614401565b6101075481116140045760405162461bcd60e51b815260040161088990615704565b6101078054908290556040517fc2d09fef144f7c8a86f71ea459f8fc17f675768eb1ae369cbd77fb31d467aafa906108f39083908590614cd2565b6040805160208101909152600081526040518060200160405280670de0b6b3a764000061407486600001518660000151614453565b61407e9190614ffe565b90529392505050565b604080516020810190915260008152604051806020016040528061407e6140ba8660000151670de0b6b3a7640000614453565b855161445f565b6000806140ce85856143c1565b90506140e26140dc826143e9565b8461446b565b95945050505050565b6140f6826007613a51565b6001600160a01b038216600090815260cd60205260409020805460ff166141325782604051635a9a1eb960e11b815260040161088991906149be565b6001600160a01b038216600090815260038201602052604090205460ff161561415a57505050565b6001600160a01b0380831660008181526003840160209081526040808320805460ff1916600190811790915560cc835281842080549182018155845291832090910180549488166001600160a01b031990951685179055519192917f3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a59190a3505050565b60c95460405163fc57d4df60e01b815260009182916001600160a01b039091169063fc57d4df906142139086906004016149be565b602060405180830381865afa158015614230573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614254919061517e565b9050806000036120d8578260405162e52a7d60e41b815260040161088991906149be565b336001600160a01b03821614610820578033604051634e9383fb60e11b8152600401610889929190614f8d565b60ce5460005b8181101561431557826001600160a01b031660ce82815481106142d0576142d0614f1b565b6000918252602090912001546001600160a01b031603614305578260405163d005ce4760e01b815260040161088991906149be565b61430e81614f47565b90506142ab565b505060ce805460018101825560008290527fd36cd1c74ef8d7326d8021b776c18fb5a5724b7f7bc93c2f42e43e10ef27d12a0180546001600160a01b0319166001600160a01b03841617905554613a2281613a26565b600054610100900460ff166143925760405162461bcd60e51b81526004016108899061575c565b611b90614477565b600054610100900460ff166108175760405162461bcd60e51b81526004016108899061575c565b604080516020810190915260008152604051806020016040528061407e856000015185614453565b80516000906120d890670de0b6b3a764000090614ffe565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000613bc68284614fa8565b6000613bc68284614ffe565b6000613bc6828461515b565b600054610100900460ff1661449e5760405162461bcd60e51b81526004016108899061575c565b611b9033613fc9565b8015155b82525050565b602081016120d882846144a7565b60006001600160a01b0382166120d8565b6144d9816144bf565b811461082057600080fd5b80356120d8816144d0565b60006020828403121561450457614504600080fd5b6000613be584846144e4565b806144ab565b602081016120d88284614510565b806144d9565b80356120d881614524565b60006020828403121561454a5761454a600080fd5b6000613be5848461452a565b60008083601f84011261456b5761456b600080fd5b50813567ffffffffffffffff81111561458657614586600080fd5b6020830191508360208202830111156145a1576145a1600080fd5b9250929050565b600080600080604085870312156145c1576145c1600080fd5b843567ffffffffffffffff8111156145db576145db600080fd5b6145e787828801614556565b9450945050602085013567ffffffffffffffff81111561460957614609600080fd5b61461587828801614556565b95989497509550505050565b6000806000806080858703121561463a5761463a600080fd5b600061464687876144e4565b9450506020614657878288016144e4565b9350506040614668878288016144e4565b9250506060614679878288016144e4565b91505092959194509250565b8015156144d9565b80356120d881614685565b6000806000806000606086880312156146b3576146b3600080fd5b853567ffffffffffffffff8111156146cd576146cd600080fd5b6146d988828901614556565b9550955050602086013567ffffffffffffffff8111156146fb576146fb600080fd5b61470788828901614556565b9350935050604061471a8882890161468d565b9150509295509295909350565b60008083601f84011261473c5761473c600080fd5b50813567ffffffffffffffff81111561475757614757600080fd5b6020830191508360608202830111156145a1576145a1600080fd5b60008060006040848603121561478a5761478a600080fd5b600061479686866144e4565b935050602084013567ffffffffffffffff8111156147b6576147b6600080fd5b6147c286828701614727565b92509250509250925092565b60006120d8826144bf565b6144d9816147ce565b80356120d8816147d9565b60006020828403121561480257614802600080fd5b6000613be584846147e2565b6000806000806080858703121561482757614827600080fd5b600061483387876144e4565b9450506020614844878288016144e4565b93505060406148558782880161452a565b92505060606146798782880161452a565b606081016148748286614510565b6148816020830185614510565b613be56040830184614510565b60006120d8826147ce565b6144ab8161488e565b602081016120d88284614899565b6000806000606084860312156148c8576148c8600080fd5b60006148d486866147e2565b93505060206148e58682870161452a565b92505060406148f68682870161452a565b9150509250925092565b600061490c8383614899565b505060200190565b600061491e825190565b80845260209384019383018060005b838110156149525781516149418882614900565b97506020830192505060010161492d565b509495945050505050565b60208082528101613bc68184614914565b6000806000806080858703121561498757614987600080fd5b600061499387876144e4565b94505060206149a4878288016144e4565b9350506040614855878288016144e4565b6144ab816144bf565b602081016120d882846149b5565b6000806000606084860312156149e4576149e4600080fd5b60006149f086866144e4565b93505060206148e5868287016144e4565b6060810161487482866144a7565b60008060408385031215614a2557614a25600080fd5b6000614a3185856144e4565b9250506020614a42858286016147e2565b9150509250929050565b6000614a56825190565b80845260209384019383018060005b83811015614952578151614a798882614900565b975060208301925050600101614a65565b60208082528101613bc68184614a4c565b80516060830190614aac84826149b5565b506020820151614abf6020850182614510565b5060408201516135fc6040850182614510565b6000614ade8383614a9b565b505060600190565b6000614af0825190565b80845260209384019383018060005b83811015614952578151614b138882614ad2565b975060208301925050600101614aff565b60208082528101613bc68184614ae6565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715614b7157614b71614b35565b6040525050565b6000614b8360405190565b9050614b8f8282614b4b565b919050565b600067ffffffffffffffff821115614bae57614bae614b35565b5060209081020190565b6000614bcb614bc684614b94565b614b78565b83815290506020808201908402830185811115614bea57614bea600080fd5b835b81811015614c0e5780614bff88826144e4565b84525060209283019201614bec565b5050509392505050565b600082601f830112614c2c57614c2c600080fd5b8135613be5848260208601614bb8565b600060208284031215614c5157614c51600080fd5b813567ffffffffffffffff811115614c6b57614c6b600080fd5b613be584828501614c18565b600061490c8383614510565b6000614c8d825190565b80845260209384019383018060005b83811015614952578151614cb08882614c77565b975060208301925050600101614c9c565b60208082528101613bc68184614c83565b60408101614ce08285614510565b613bc66020830184614510565b60008060408385031215614d0357614d03600080fd5b6000614d0f858561452a565b9250506020614a42858286016144e4565b60008060408385031215614d3657614d36600080fd5b6000614d4285856144e4565b9250506020614a428582860161452a565b6009811061082057600080fd5b80356120d881614d53565b60008060408385031215614d8157614d81600080fd5b6000614d8d85856144e4565b9250506020614a4285828601614d60565b600080600080600060a08688031215614db957614db9600080fd5b6000614dc588886144e4565b9550506020614dd6888289016144e4565b9450506040614de7888289016144e4565b9350506060614df88882890161452a565b925050608061471a8882890161468d565b60008060408385031215614e1f57614e1f600080fd5b6000614d0f85856144e4565b602e81526000602082017f436c6f736520666163746f722067726561746572207468616e206d6178696d7581526d369031b637b9b2903330b1ba37b960911b602082015291505b5060400190565b602080825281016120d881614e2b565b602e81526000602082017f436c6f736520666163746f7220736d616c6c6572207468616e206d696e696d7581526d369031b637b9b2903330b1ba37b960911b60208201529150614e72565b602080825281016120d881614e89565b600d81526000602082016c1a5b9d985b1a59081a5b9c1d5d609a1b815291505b5060200190565b602080825281016120d881614ee4565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198203614f5a57614f5a614f31565b5060010190565b80516120d8816147d9565b600060208284031215614f8157614f81600080fd5b6000613be58484614f61565b60408101614f9b82856149b5565b613bc660208301846149b5565b6000816000190483118215151615614fc257614fc2614f31565b500290565b600060208284031215614fdc57614fdc600080fd5b6000613be58484614d60565b634e487b7160e01b600052601260045260246000fd5b60008261500d5761500d614fe8565b500490565b60a0810161502082886149b5565b61502d60208301876149b5565b61503a6040830186614510565b6150476060830185614899565b61505460808301846144a7565b9695505050505050565b602881526000602082017f4e6f6e7a65726f20626f72726f772062616c616e6365206166746572206c69718152673ab4b230ba34b7b760c11b60208201529150614e72565b602080825281016120d88161505e565b604081016150c18285614899565b613bc66020830184614899565b600e81526000602082016d616c72656164792065786973747360901b81529150614f04565b602080825281016120d8816150ce565b602b81526000602082017f6469737472696275746f7220616c72656164792065786973747320776974682081526a1d1a1a5cc81c995dd85c9960aa1b60208201529150614e72565b602080825281016120d881615103565b6000821982111561516e5761516e614f31565b500190565b80516120d881614524565b60006020828403121561519357615193600080fd5b6000613be58484615173565b606081016148748286614899565b602981526000602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b60208201529150614e72565b602080825281016120d8816151ad565b6060810161521182866149b5565b61488160208301856149b5565b603181526000602082017f6c69717569646174696f6e20696e63656e746976652073686f756c64206265208152700cee4cac2e8cae440e8d0c2dc4062ca627607b1b60208201529150614e72565b602080825281016120d88161521e565b60408101614ce082856149b5565b80516120d881614685565b6000602082840312156152aa576152aa600080fd5b6000613be5848461528a565b601b81526000602082017f436f6d7074726f6c6c65723a20496e76616c69642076546f6b656e000000000081529150614f04565b602080825281016120d8816152b6565b601981526000602082017f696e76616c6964206e756d626572206f66206d61726b6574730000000000000081529150614f04565b602080825281016120d8816152fa565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b60208201529150614e72565b602080825281016120d88161533e565b600060ff82166120d8565b6144ab81615399565b602081016120d882846153a4565b805160208301906135fc8482614510565b604081016153da82856149b5565b613bc660208301846153bb565b606081016153f582866149b5565b61540260208301856149b5565b613be560408301846153bb565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60008282101561544d5761544d614f31565b500390565b634e487b7160e01b600052603160045260246000fd5b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000614f04565b602080825281016120d881615468565b602581526000602082017f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164815264647265737360d81b60208201529150614e72565b602080825281016120d8816154aa565b60005b838110156155175781810151838201526020016154ff565b838111156135fc5750506000910152565b6000615532825190565b8084526020840193506155498185602086016154fc565b601f01601f19169290920192915050565b6040810161556882856149b5565b8181036020830152613be58184615528565b6060810161558882866149b5565b61559560208301856149b5565b81810360408301526140e28184615528565b600981106108205761082061540f565b80614b8f816155a7565b60006120d8826155b7565b6144ab816155c1565b604081016155e382856149b5565b613bc660208301846155cc565b602881526000602082017f63616e6e6f742070617573652061206d61726b65742074686174206973206e6f8152671d081b1a5cdd195960c21b60208201529150614e72565b602080825281016120d8816155f0565b606081016156538286614899565b61566060208301856155cc565b613be560408301846144a7565b6000806000806080858703121561568657615686600080fd5b60006156928787615173565b94505060206156a387828801615173565b93505060406156b487828801615173565b925050606061467987828801615173565b602281526000602082017f436f6d7074726f6c6c65723a20496e76616c6964206d61784c6f6f70734c696d8152611a5d60f21b60208201529150614e72565b602080825281016120d8816156c5565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b60208201529150614e72565b602080825281016120d88161571456fe7365744d61726b6574426f72726f774361707328616464726573735b5d2c75696e743235365b5d297365744d696e4c6971756964617461626c65436f6c6c61746572616c2875696e7432353629736574436f6c6c61746572616c466163746f7228616464726573732c75696e743235362c75696e7432353629736574416374696f6e7350617573656428616464726573735b5d2c75696e743235365b5d2c626f6f6c297365744d61726b6574537570706c794361707328616464726573735b5d2c75696e743235365b5d29a264697066735822122068885b0ad7709afab80adf1723da057dd11c129c2ed13368f2feaada9f97637064736f6c634300080d0033",
1664
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061035c5760003560e01c80638e6470ea116101d3578063c488847b11610104578063e30c3978116100a2578063e89d51ad1161007c578063e89d51ad146107c3578063eade3eed146107d6578063ede4edd0146107e9578063f2fde38b146107fc57600080fd5b8063e30c397814610796578063e85a2960146107a7578063e8755446146107ba57600080fd5b8063da35a26f116100de578063da35a26f14610754578063db5c65de14610767578063dce1544914610770578063df71403b1461078357600080fd5b8063c488847b1461070d578063cab4f84c1461072e578063d136af441461074157600080fd5b8063afcff50f11610171578063b4a0bdf31161014b578063b4a0bdf3146106bf578063be26317e146106d0578063c0891ba9146106da578063c2998238146106ed57600080fd5b8063afcff50f14610670578063b0772d0b14610697578063b2068e841461069f57600080fd5b8063929fe9a1116101ad578063929fe9a11461061757806394543c151461062a578063a84310811461063d578063abfceffc1461065057600080fd5b80638e6470ea146105af5780638e8f294b146105c2578063921363951461060457600080fd5b8063528a174c116102ad57806361252fd11161024b57806379ba50971161022557806379ba5097146105675780637dc0d1d01461056f57806380d45a2d146105825780638da5cb5b1461059557600080fd5b806361252fd1146105375780636d0be88d1461054c578063715018a61461055f57600080fd5b806356aaee2d1161028757806356aaee2d146104eb5780635c21b6c5146104fe5780635cc4fdeb146105115780635ec88c791461052457600080fd5b8063528a174c146104a557806352d84d1e146104b8578063530e784f146104d857600080fd5b806324aaa2201161031a5780634a584432116102f45780634a584432146104475780634ada90af146104675780634e79238f14610470578063520b6c741461049257600080fd5b806324aaa220146103f55780632bce219c146104085780633d98a1e51461041b57600080fd5b80627e3dd21461036157806302c3bcbb1461037a5780630e32cb86146103a757806312348e96146103bc578063186db48f146103cf5780631bc41f28146103e2575b600080fd5b60015b60405161037191906144b1565b60405180910390f35b61039a6103883660046144ef565b60d16020526000908152604090205481565b6040516103719190614516565b6103ba6103b53660046144ef565b61080f565b005b6103ba6103ca366004614535565b610823565b6103ba6103dd3660046145a8565b6108ff565b6103ba6103f0366004614621565b610a56565b6103ba610403366004614698565b610e16565b6103ba610416366004614772565b610ee3565b6103646104293660046147ed565b6001600160a01b0316600090815260cd602052604090205460ff1690565b61039a6104553660046144ef565b60cf6020526000908152604090205481565b61039a60cb5481565b61048361047e36600461480e565b61124a565b60405161037193929190614866565b6103ba6104a0366004614535565b61127b565b6104836104b33660046144ef565b6112d5565b6104cb6104c6366004614535565b611300565b60405161037191906148a2565b6103ba6104e63660046147ed565b61132a565b6103ba6104f93660046147ed565b61138e565b6103ba61050c3660046144ef565b611662565b6103ba61051f3660046148b0565b61177f565b6104836105323660046144ef565b611991565b61053f6119a3565b604051610371919061495d565b6103ba61055a36600461496e565b611a05565b6103ba611b7e565b6103ba611b92565b60c9546104cb906001600160a01b031681565b6103ba610590366004614535565b611bc7565b6033546001600160a01b03165b60405161037191906149be565b6103ba6105bd3660046149cc565b611bd8565b6105f56105d03660046144ef565b60cd6020526000908152604090208054600182015460029092015460ff909116919083565b60405161037193929190614a01565b6103ba6106123660046144ef565b611cf1565b610364610625366004614a0f565b6120aa565b6103646106383660046147ed565b6120de565b6103ba61064b366004614535565b612186565b61066361065e3660046144ef565b612226565b6040516103719190614a8a565b6105a27f000000000000000000000000000000000000000000000000000000000000000081565b61066361229c565b6106b26106ad3660046144ef565b6122fc565b6040516103719190614b24565b6097546001600160a01b03166104cb565b61039a6101075481565b6103ba6106e83660046149cc565b612547565b6107006106fb366004614c3c565b6127c3565b6040516103719190614cc1565b61072061071b3660046149cc565b61287a565b604051610371929190614cd2565b6103ba61073c3660046147ed565b6129a5565b6103ba61074f3660046145a8565b612b9d565b6103ba610762366004614ced565b612d00565b61039a60d05481565b6104cb61077e366004614d20565b612dda565b6103ba6107913660046149cc565b612e12565b6065546001600160a01b03166105a2565b6103646107b5366004614d6b565b6131a8565b61039a60ca5481565b6103ba6107d1366004614d9e565b6131ff565b6103ba6107e4366004614e09565b6133d8565b61039a6107f73660046144ef565b613602565b6103ba61080a3660046144ef565b613874565b6108176138e5565b6108208161390f565b50565b6108616040518060400160405280601781526020017f736574436c6f7365466163746f722875696e7432353629000000000000000000815250613988565b80670c7d713b49da000010156108925760405162461bcd60e51b815260040161088990614e79565b60405180910390fd5b8066b1a2bc2ec5000011156108b95760405162461bcd60e51b815260040161088990614ed4565b60ca8054908290556040517f3b9670cf975d26958e754b57098eaa2ac914d8d2a31b83257997b9f346110fd9906108f39083908590614cd2565b60405180910390a15050565b61092060405180606001604052806028815260200161576d60289139613988565b8281811580159061093057508082145b61094c5760405162461bcd60e51b815260040161088990614f0b565b61095582613a26565b60005b82811015610a4d5784848281811061097257610972614f1b565b9050602002013560cf600089898581811061098f5761098f614f1b565b90506020020160208101906109a491906147ed565b6001600160a01b031681526020810191909152604001600020558686828181106109d0576109d0614f1b565b90506020020160208101906109e591906147ed565b6001600160a01b03167f6f1951b2aad10f3fc81b86d91105b413a5b3f847a34bbc5ce1904201b14438f6868684818110610a2157610a21614f1b565b90506020020135604051610a359190614516565b60405180910390a2610a4681614f47565b9050610958565b50505050505050565b610a61846004613a51565b6001600160a01b038416600090815260cd60205260409020805460ff16610a9d5784604051635a9a1eb960e11b815260040161088991906149be565b306001600160a01b03851603610b4557306001600160a01b0316856001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610af5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b199190614f6c565b6001600160a01b031614610b4057604051630c73eb0560e01b815260040160405180910390fd5b610c74565b6001600160a01b038416600090815260cd602052604090205460ff16610b805783604051635a9a1eb960e11b815260040161088991906149be565b836001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be29190614f6c565b6001600160a01b0316856001600160a01b0316635fe3b5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4d9190614f6c565b6001600160a01b031614610c7457604051630c73eb0560e01b815260040160405180910390fd5b6001600160a01b038216600090815260038201602052604090205460ff16610cb3578482604051630cdfb2db60e31b8152600401610889929190614f8d565b60d35460005b81811015610a4d57600060d38281548110610cd657610cd6614f1b565b60009182526020909120015460405163051d1d4f60e11b81526001600160a01b0390911691508190630a3a3a9e90610d12908b906004016149be565b600060405180830381600087803b158015610d2c57600080fd5b505af1158015610d40573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150610d72908b908990600401614f8d565b600060405180830381600087803b158015610d8c57600080fd5b505af1158015610da0573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150610dd2908b908a90600401614f8d565b600060405180830381600087803b158015610dec57600080fd5b505af1158015610e00573d6000803e3d6000fd5b505050505080610e0f90614f47565b9050610cb9565b610e376040518060600160405280602a81526020016157e6602a9139613988565b8382610e4b610e468284614fa8565b613a26565b60005b82811015610ed95760005b82811015610ec857610eb8898984818110610e7657610e76614f1b565b9050602002016020810190610e8b91906147ed565b888884818110610e9d57610e9d614f1b565b9050602002016020810190610eb29190614fc7565b87613a7d565b610ec181614f47565b9050610e59565b50610ed281614f47565b9050610e4e565b5050505050505050565b6000610ef184613b4a613b7e565b905060d05481600001511115610f215760d0548151604051631a451c0f60e21b8152610889929190600401614cd2565b6000610f41604051806020016040528060cb548152508360400151613bcd565b82519091508110610f69578151604051632c1f8ef160e21b8152610889918391600401614cd2565b8160a00151600003610f8e5760405163095bf33360e01b815260040160405180910390fd5b82610f9d610e46600283614ffe565b60005b818110156111665760cd6000878784818110610fbe57610fbe614f1b565b9050606002016020016020810190610fd691906147ed565b6001600160a01b0316815260208101919091526040016000205460ff1661103b5785858281811061100957611009614f1b565b905060600201602001602081019061102191906147ed565b604051635a9a1eb960e11b815260040161088991906149be565b60cd600087878481811061105157611051614f1b565b61106792602060609092020190810191506147ed565b6001600160a01b0316815260208101919091526040016000205460ff166110b05785858281811061109a5761109a614f1b565b61102192602060609092020190810191506147ed565b368686838181106110c3576110c3614f1b565b90506060020190508060200160208101906110de91906147ed565b6001600160a01b0316638bbdb6db338a604085013561110060208701876147ed565b60016040518663ffffffff1660e01b8152600401611122959493929190615012565b600060405180830381600087803b15801561113c57600080fd5b505af1158015611150573d6000803e3d6000fd5b50505050508061115f90614f47565b9050610fa0565b506001600160a01b038616600090815260cc60209081526040808320805482518185028101850190935280835291929091908301828280156111d157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116111b3575b505083519394506000925050505b8181101561123f57600061120c8483815181106111fe576111fe614f1b565b60200260200101518b613bed565b50915050801561122e5760405162461bcd60e51b8152600401610889906150a3565b5061123881614f47565b90506111df565b505050505050505050565b60008060008061125f88888888613c94613cc8565b608081015160a09091015160009a919950975095505050505050565b61129c60405180606001604052806025815260200161579560259139613988565b60d08054908290556040517eb4f4f153ad7f1397564a8830fef092481e8cf6a2cd3ff04f96d10ba51200a5906108f39083908590614cd2565b6000806000806112e785613c94613b7e565b608081015160a090910151600097919650945092505050565b60ce818154811061131057600080fd5b6000918252602090912001546001600160a01b0316905081565b6113326138e5565b61133b81613efd565b60c980546001600160a01b038381166001600160a01b03198316179092556040519116907fd52b2b9b7e9ee655fcb95d2e5b9e0c9f69e7ef2b8e9d2d0ea78402d576d22e22906108f390839085906150b3565b6113966138e5565b6001600160a01b038116600090815260d4602052604090205460ff16156113cf5760405162461bcd60e51b8152600401610889906150f3565b60d35460005b8181101561150957600060d382815481106113f2576113f2614f1b565b600091825260209182902001546040805163f7c618c160e01b815290516001600160a01b039092169263f7c618c1926004808401938290030181865afa158015611440573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114649190614f6c565b9050836001600160a01b031663f7c618c16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c89190614f6c565b6001600160a01b0316816001600160a01b0316036114f85760405162461bcd60e51b81526004016108899061514b565b5061150281614f47565b90506113d5565b5060d35461151b610e4682600161515b565b60d3805460018082019092557f915c3eb987b20e1af620c1403197bf687fb7f18513b3a73fde6e78c7072c41a60180546001600160a01b0319166001600160a01b038616908117909155600090815260d460205260408120805460ff191690921790915560ce54905b8181101561162757846001600160a01b0316632a869a4d60ce83815481106115ae576115ae614f1b565b6000918252602090912001546040516001600160e01b031960e084901b1681526115e4916001600160a01b0316906004016149be565b600060405180830381600087803b1580156115fe57600080fd5b505af1158015611612573d6000803e3d6000fd5b505050508061162090614f47565b9050611584565b506040516001600160a01b038516907f058fa9577dc29aece41d41c2d3bff2ed4e8d5085762198e8f7faab35039555da90600090a250505050565b6001600160a01b038116600090815260cc60209081526040808320805482518185028101850190935280835291929091908301828280156116cc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116116ae575b5050835160c954949550936001600160a01b0316925060009150505b8281101561177857816001600160a01b03166396e85ced85838151811061171157611711614f1b565b60200260200101516040518263ffffffff1660e01b815260040161173591906149be565b600060405180830381600087803b15801561174f57600080fd5b505af1158015611763573d6000803e3d6000fd5b505050508061177190614f47565b90506116e8565b5050505050565b6117a06040518060600160405280602c81526020016157ba602c9139613988565b6001600160a01b038316600090815260cd60205260409020805460ff166117dc5783604051635a9a1eb960e11b815260040161088991906149be565b670c7d713b49da0000831115611805576040516302f22cad60e61b815260040160405180910390fd5b670de0b6b3a764000082111561182d5760405162f9474b60e61b815260040160405180910390fd5b8282101561184d5760405162f9474b60e61b815260040160405180910390fd5b82158015906118ca575060c95460405163fc57d4df60e01b81526001600160a01b039091169063fc57d4df906118879087906004016149be565b602060405180830381865afa1580156118a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c8919061517e565b155b156118e9578360405162e52a7d60e41b815260040161088991906149be565b600181015483811461193957600182018490556040517f70483e6592cd5182d45ac970e05bc62cdcc90e9d8ef2c2dbe686cf383bcd7fc5906119309087908490889061519f565b60405180910390a15b600282015483811461198957600283018490556040517f9e92c7d5fef69846094f3ddcadcb9402c6ba469c461368714f1cabd8ef48b591906119809088908490889061519f565b60405180910390a15b505050505050565b6000806000806112e785613b4a613b7e565b606060d38054806020026020016040519081016040528092919081815260200182805480156119fb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116119dd575b5050505050905090565b611a10846006613a51565b611a1b848483613f24565b60d35460005b8181101561198957600060d38281548110611a3e57611a3e614f1b565b60009182526020909120015460405163051d1d4f60e11b81526001600160a01b0390911691508190630a3a3a9e90611a7a908a906004016149be565b600060405180830381600087803b158015611a9457600080fd5b505af1158015611aa8573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150611ada908a908a90600401614f8d565b600060405180830381600087803b158015611af457600080fd5b505af1158015611b08573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150611b3a908a908990600401614f8d565b600060405180830381600087803b158015611b5457600080fd5b505af1158015611b68573d6000803e3d6000fd5b505050505080611b7790614f47565b9050611a21565b611b866138e5565b611b906000613fc9565b565b60655433906001600160a01b03168114611bbe5760405162461bcd60e51b8152600401610889906151f3565b61082081613fc9565b611bcf6138e5565b61082081613fe2565b611be3836001613a51565b611bee838383613f24565b60d35460005b8181101561177857600060d38281548110611c1157611c11614f1b565b60009182526020909120015460405163051d1d4f60e11b81526001600160a01b0390911691508190630a3a3a9e90611c4d9089906004016149be565b600060405180830381600087803b158015611c6757600080fd5b505af1158015611c7b573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd9150611cad9089908990600401614f8d565b600060405180830381600087803b158015611cc757600080fd5b505af1158015611cdb573d6000803e3d6000fd5b505050505080611cea90614f47565b9050611bf4565b6001600160a01b038116600090815260cc6020908152604080832080548251818502810185019093528083529192909190830182828015611d5b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611d3d575b5050835160c954949550933393506001600160a01b03169150600090505b83811015611e8757848181518110611d9357611d93614f1b565b60200260200101516001600160a01b031663a6afed956040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611dda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dfe919061517e565b50816001600160a01b03166396e85ced868381518110611e2057611e20614f1b565b60200260200101516040518263ffffffff1660e01b8152600401611e4491906149be565b600060405180830381600087803b158015611e5e57600080fd5b505af1158015611e72573d6000803e3d6000fd5b5050505080611e8090614f47565b9050611d79565b50506000611e9785613b4a613b7e565b905060d05481600001511115611ec75760d0548151604051631a451c0f60e21b8152610889929190600401614cd2565b8060a00151600003611eec5760405163095bf33360e01b815260040160405180910390fd5b60408051602080820183528351825282518082018452848401518152835191820190935260cb5481529091600091611f24919061403f565b90506000611f328383614087565b9050611f566040518060200160405280670de0b6b3a7640000815250825190511090565b15611f7a5781518351604051631a451c0f60e21b8152610889929190600401614cd2565b60005b8681101561123f576000888281518110611f9957611f99614f1b565b60200260200101519050600080611fb0838d613bed565b50915091506000611fc18683613bcd565b9050821561202c57836001600160a01b031663b2a02ff18b8f866040518463ffffffff1660e01b8152600401611ff993929190615203565b600060405180830381600087803b15801561201357600080fd5b505af1158015612027573d6000803e3d6000fd5b505050505b811561209557836001600160a01b03166344fe6ffe8b8f846040518463ffffffff1660e01b815260040161206293929190615203565b600060405180830381600087803b15801561207c57600080fd5b505af1158015612090573d6000803e3d6000fd5b505050505b50505050806120a390614f47565b9050611f7d565b6001600160a01b03808216600090815260cd60209081526040808320938616835260039093019052205460ff165b92915050565b6001600160a01b038116600090815260cd602052604081206001015415801561210d575061210d8260026131a8565b80156120d85750670de0b6b3a7640000826001600160a01b031663173b99046040518163ffffffff1660e01b8152600401602060405180830381865afa15801561215b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217f919061517e565b1492915050565b670de0b6b3a76400008110156121ae5760405162461bcd60e51b81526004016108899061526c565b6121ec6040518060400160405280602081526020017f7365744c69717569646174696f6e496e63656e746976652875696e7432353629815250613988565b60cb8054908290556040517faeba5a6c40a8ac138134bff1aaa65debf25971188a58804bad717f82f0ec1316906108f39083908590614cd2565b6001600160a01b038116600090815260cc6020908152604080832080548251818502810185019093528083526060949383018282801561228f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612271575b5093979650505050505050565b606060ce8054806020026020016040519081016040528092919081815260200182805480156119fb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116119dd575050505050905090565b60d3546060908067ffffffffffffffff81111561231b5761231b614b35565b60405190808252806020026020018201604052801561237957816020015b612366604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b8152602001906001900390816123395790505b50915060005b8181101561254057600060d3828154811061239c5761239c614f1b565b60009182526020808320909101546040805163f7c618c160e01b815290516001600160a01b039092169450849263f7c618c1926004808401938290030181865afa1580156123ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124129190614f6c565b90506040518060600160405280826001600160a01b03168152602001836001600160a01b03166374c4c1cc896040518263ffffffff1660e01b815260040161245a91906149be565b602060405180830381865afa158015612477573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061249b919061517e565b8152602001836001600160a01b0316637c05a7c5896040518263ffffffff1660e01b81526004016124cc91906149be565b602060405180830381865afa1580156124e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250d919061517e565b81525085848151811061252257612522614f1b565b602002602001018190525050508061253990614f47565b905061237f565b5050919050565b612552836000613a51565b6001600160a01b038316600090815260cd602052604090205460ff1661258d5782604051635a9a1eb960e11b815260040161088991906149be565b6001600160a01b038316600090815260d1602052604090205460001981146126c0576000846001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612613919061517e565b905060006040518060200160405280876001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015612660573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612684919061517e565b9052905060006126958284876140c1565b9050838111156126bc57868460405163db33be3d60e01b815260040161088992919061527c565b5050505b60d35460005b8181101561198957600060d382815481106126e3576126e3614f1b565b60009182526020909120015460405163051d1d4f60e11b81526001600160a01b0390911691508190630a3a3a9e9061271f908a906004016149be565b600060405180830381600087803b15801561273957600080fd5b505af115801561274d573d6000803e3d6000fd5b505060405163db7954fd60e01b81526001600160a01b038416925063db7954fd915061277f908a908a90600401614f8d565b600060405180830381600087803b15801561279957600080fd5b505af11580156127ad573d6000803e3d6000fd5b5050505050806127bc90614f47565b90506126c6565b805160609060008167ffffffffffffffff8111156127e3576127e3614b35565b60405190808252806020026020018201604052801561280c578160200160208202803683370190505b50905060005b8281101561287257600085828151811061282e5761282e614f1b565b6020026020010151905061284281336140eb565b600083838151811061285657612856614f1b565b60209081029190910101525061286b81614f47565b9050612812565b509392505050565b6000806000612888866141de565b90506000612895866141de565b90506000866001600160a01b031663182df0f56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156128d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128fb919061517e565b905060006129156040518060200160405280600081525090565b60408051602080820183526000808352835180830185529081528351808301855260cb548152845192830190945288825291926129519161403f565b925061297960405180602001604052808881525060405180602001604052808881525061403f565b91506129858383614087565b9050612991818b613bcd565b60009d909c509a5050505050505050505050565b6129ce7f0000000000000000000000000000000000000000000000000000000000000000614278565b6001600160a01b038116600090815260cd602052604090205460ff1615612a0a578060405163d005ce4760e01b815260040161088991906149be565b806001600160a01b0316633d9ea3a16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6c9190615295565b612a885760405162461bcd60e51b8152600401610889906152ea565b6001600160a01b038116600090815260cd60205260408120805460ff19166001908117825581018290556002810191909155612ac3826142a5565b60d35460005b81811015612b605760d38181548110612ae457612ae4614f1b565b600091825260209091200154604051632a869a4d60e01b81526001600160a01b0390911690632a869a4d90612b1d9087906004016149be565b600060405180830381600087803b158015612b3757600080fd5b505af1158015612b4b573d6000803e3d6000fd5b5050505080612b5990614f47565b9050612ac9565b507faf16ad15f9e29d5140e8e81a30a92a755aa8edff3d301053c84392b70c0d09a383604051612b9091906148a2565b60405180910390a1505050565b612bbe60405180606001604052806028815260200161581060289139613988565b826000819003612be05760405162461bcd60e51b81526004016108899061532e565b808214612bff5760405162461bcd60e51b81526004016108899061532e565b612c0881613a26565b60005b8181101561198957838382818110612c2557612c25614f1b565b9050602002013560d16000888885818110612c4257612c42614f1b565b9050602002016020810190612c5791906147ed565b6001600160a01b03168152602081019190915260400160002055858582818110612c8357612c83614f1b565b9050602002016020810190612c9891906147ed565b6001600160a01b03167f9e0ad9cee10bdf36b7fbd38910c0bdff0f275ace679b45b922381c2723d676f8858584818110612cd457612cd4614f1b565b90506020020135604051612ce89190614516565b60405180910390a2612cf981614f47565b9050612c0b565b600054610100900460ff1615808015612d205750600054600160ff909116105b80612d3a5750303b158015612d3a575060005460ff166001145b612d565760405162461bcd60e51b815260040161088990615389565b6000805460ff191660011790558015612d79576000805461ff0019166101001790555b612d8161436b565b612d8a8261439a565b612d9383613fe2565b8015612dd5576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890612b90906001906153ad565b505050565b60cc6020528160005260406000208181548110612df657600080fd5b6000918252602090912001546001600160a01b03169150829050565b612e1d836002613a51565b6001600160a01b038316600090815260cd602052604090205460ff16612e585782604051635a9a1eb960e11b815260040161088991906149be565b6001600160a01b03808416600090815260cd60209081526040808320938616835260039093019052205460ff16612e9c57612e9283614278565b612e9c33836140eb565b612ea582611662565b60c95460405163fc57d4df60e01b81526001600160a01b039091169063fc57d4df90612ed59086906004016149be565b602060405180830381865afa158015612ef2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f16919061517e565b600003612f37578260405162e52a7d60e41b815260040161088991906149be565b6001600160a01b038316600090815260cf60205260409020546000198114612ff5576000846001600160a01b03166347bd37186040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fbd919061517e565b90506000612fcb848361515b565b905082811115612ff2578583604051632e649eed60e01b815260040161088992919061527c565b50505b60006130078486600086613c94613cc8565b60a08101519091501561302d5760405163bb55fd2760e01b815260040160405180910390fd5b60006040518060200160405280876001600160a01b031663aa5af0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061309c919061517e565b905260d35490915060005b81811015610ed957600060d382815481106130c4576130c4614f1b565b600091825260209091200154604051632352607960e01b81526001600160a01b0390911691508190632352607990613102908c9088906004016153cc565b600060405180830381600087803b15801561311c57600080fd5b505af1158015613130573d6000803e3d6000fd5b5050604051636a95ddef60e01b81526001600160a01b0384169250636a95ddef9150613164908c908c9089906004016153e7565b600060405180830381600087803b15801561317e57600080fd5b505af1158015613192573d6000803e3d6000fd5b5050505050806131a190614f47565b90506130a7565b6001600160a01b038216600090815260d260205260408120818360088111156131d3576131d361540f565b60088111156131e4576131e461540f565b815260208101919091526040016000205460ff169392505050565b61320a856005613a51565b61321383611662565b6001600160a01b038516600090815260cd602052604090205460ff1661324e5784604051635a9a1eb960e11b815260040161088991906149be565b6001600160a01b038416600090815260cd602052604090205460ff166132895783604051635a9a1eb960e11b815260040161088991906149be565b6040516395dd919360e01b81526000906001600160a01b038716906395dd9193906132b89087906004016149be565b602060405180830381865afa1580156132d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132f9919061517e565b9050818061330b575061330b866120de565b1561333757808311156133315760405163e46c155960e01b815260040160405180910390fd5b50611778565b600061334585613b4a613b7e565b905060d0548160000151116133745760d0548151604051636e61bb0560e11b8152610889929190600401614cd2565b8060a001516000036133995760405163095bf33360e01b815260040160405180910390fd5b60006133b5604051806020016040528060ca5481525084613bcd565b905080851115610ed95760405163e46c155960e01b815260040160405180910390fd5b6133e3826003613a51565b60c9546040516396e85ced60e01b81526001600160a01b03909116906396e85ced906134139085906004016149be565b600060405180830381600087803b15801561342d57600080fd5b505af1158015613441573d6000803e3d6000fd5b505050506001600160a01b038216600090815260cd602052604090205460ff166134805781604051635a9a1eb960e11b815260040161088991906149be565b60d35460005b818110156135fc5760006040518060200160405280866001600160a01b031663aa5af0fd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156134d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134fd919061517e565b8152509050600060d3838154811061351757613517614f1b565b600091825260209091200154604051632352607960e01b81526001600160a01b039091169150819063235260799061355590899086906004016153cc565b600060405180830381600087803b15801561356f57600080fd5b505af1158015613583573d6000803e3d6000fd5b5050604051636a95ddef60e01b81526001600160a01b0384169250636a95ddef91506135b7908990899087906004016153e7565b600060405180830381600087803b1580156135d157600080fd5b505af11580156135e5573d6000803e3d6000fd5b505050505050806135f590614f47565b9050613486565b50505050565b600061360f826008613a51565b8160008061361d8333613bed565b5091509150806000146136435760405163f8a5d66d60e01b815260040160405180910390fd5b61364e853384613f24565b6001600160a01b038316600090815260cd60209081526040808320338452600381019092529091205460ff1661368a5750600095945050505050565b3360009081526003820160209081526040808320805460ff1916905560cc8252808320805482518185028101850190935280835291929091908301828280156136fc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116136de575b5050835193945083925060009150505b8281101561375e57876001600160a01b031684828151811061373057613730614f1b565b60200260200101516001600160a01b03160361374e5780915061375e565b61375781614f47565b905061370c565b5081811061376e5761376e615425565b33600090815260cc602052604090208054819061378d9060019061543b565b8154811061379d5761379d614f1b565b9060005260206000200160009054906101000a90046001600160a01b03168183815481106137cd576137cd614f1b565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508080548061380b5761380b615452565b600082815260208120820160001990810180546001600160a01b031916905590910190915560405133916001600160a01b038b16917fe699a64c18b07ac5b7301aa273f36a2287239eb9501d81950672794afba29a0d9190a35060009998505050505050505050565b61387c6138e5565b606580546001600160a01b0383166001600160a01b031990911681179091556138ad6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6033546001600160a01b03163314611b905760405162461bcd60e51b81526004016108899061549a565b6001600160a01b0381166139355760405162461bcd60e51b8152600401610889906154ec565b609780546001600160a01b038381166001600160a01b03198316179092556040519116907f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa0906108f39083908590614f8d565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab906139bb903390869060040161555a565b602060405180830381865afa1580156139d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139fc9190615295565b905080613a2257333083604051634a3fa29360e01b81526004016108899392919061557a565b5050565b6101075481111561082057610107548160405163792bfb1b60e11b8152600401610889929190614cd2565b613a5b82826131a8565b15613a225781816040516313b3ccb160e31b81526004016108899291906155d5565b6001600160a01b038316600090815260cd602052604090205460ff16613ab55760405162461bcd60e51b815260040161088990615635565b6001600160a01b038316600090815260d2602052604081208291846008811115613ae157613ae161540f565b6008811115613af257613af261540f565b815260200190815260200160002060006101000a81548160ff0219169083151502179055507f35007a986bcd36d2f73fc7f1b73762e12eadb4406dd163194950fd3b5a6a827d838383604051612b9093929190615645565b6040805160208082018352600091829052825180820184526001600160a01b0394909416825260cd90522060020154815290565b613bb76040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b613bc683600080600086613cc8565b9392505050565b600080613bda84846143c1565b9050613be5816143e9565b949350505050565b600080600080856001600160a01b031663c37f68e2866040518263ffffffff1660e01b8152600401613c1f91906149be565b608060405180830381865afa158015613c3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c60919061566d565b9196509450925090508015613c8c57858560405163015e34d960e61b8152600401610889929190614f8d565b509250925092565b6040805160208082018352600091829052825180820184526001600160a01b0394909416825260cd90522060010154815290565b613d016040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6001600160a01b038616600090815260cc6020908152604080832080548251818502810185019093528083529192909190830182828015613d6b57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613d4d575b505083519394506000925050505b81811015613e9f576000838281518110613d9557613d95614f1b565b602002602001015190506000806000613dae848e613bed565b92509250925060006040518060200160405280613dca876141de565b81525090506000613de96040518060200160405280858152508361403f565b90506000613e03613dfd888e63ffffffff16565b8361403f565b9050613e1481878d602001516140c1565b60208c01528a51613e2890839088906140c1565b8b5260408b0151613e3c90849087906140c1565b8b60400181815250508e6001600160a01b0316876001600160a01b031603613e8757613e6d818f8d606001516140c1565b60608c01819052613e819084908f906140c1565b60608c01525b5050505050505080613e9890614f47565b9050613d79565b50600083606001518460400151613eb6919061515b565b90508084602001511115613edd5760208401518190036080850152600060a0850152613ef1565b600060808501526020840151810360a08501525b50505095945050505050565b6001600160a01b038116610820576040516342bcdf7f60e11b815260040160405180910390fd5b6001600160a01b038316600090815260cd60205260409020805460ff16613f605783604051635a9a1eb960e11b815260040161088991906149be565b6001600160a01b038316600090815260038201602052604090205460ff16613f885750505050565b613f9183611662565b6000613fa38486856000613c94613cc8565b60a0810151909150156117785760405163bb55fd2760e01b815260040160405180910390fd5b606580546001600160a01b031916905561082081614401565b6101075481116140045760405162461bcd60e51b815260040161088990615704565b6101078054908290556040517fc2d09fef144f7c8a86f71ea459f8fc17f675768eb1ae369cbd77fb31d467aafa906108f39083908590614cd2565b6040805160208101909152600081526040518060200160405280670de0b6b3a764000061407486600001518660000151614453565b61407e9190614ffe565b90529392505050565b604080516020810190915260008152604051806020016040528061407e6140ba8660000151670de0b6b3a7640000614453565b855161445f565b6000806140ce85856143c1565b90506140e26140dc826143e9565b8461446b565b95945050505050565b6140f6826007613a51565b6001600160a01b038216600090815260cd60205260409020805460ff166141325782604051635a9a1eb960e11b815260040161088991906149be565b6001600160a01b038216600090815260038201602052604090205460ff161561415a57505050565b6001600160a01b0380831660008181526003840160209081526040808320805460ff1916600190811790915560cc835281842080549182018155845291832090910180549488166001600160a01b031990951685179055519192917f3ab23ab0d51cccc0c3085aec51f99228625aa1a922b3a8ca89a26b0f2027a1a59190a3505050565b60c95460405163fc57d4df60e01b815260009182916001600160a01b039091169063fc57d4df906142139086906004016149be565b602060405180830381865afa158015614230573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614254919061517e565b9050806000036120d8578260405162e52a7d60e41b815260040161088991906149be565b336001600160a01b03821614610820578033604051634e9383fb60e11b8152600401610889929190614f8d565b60ce5460005b8181101561431557826001600160a01b031660ce82815481106142d0576142d0614f1b565b6000918252602090912001546001600160a01b031603614305578260405163d005ce4760e01b815260040161088991906149be565b61430e81614f47565b90506142ab565b505060ce805460018101825560008290527fd36cd1c74ef8d7326d8021b776c18fb5a5724b7f7bc93c2f42e43e10ef27d12a0180546001600160a01b0319166001600160a01b03841617905554613a2281613a26565b600054610100900460ff166143925760405162461bcd60e51b81526004016108899061575c565b611b90614477565b600054610100900460ff166108175760405162461bcd60e51b81526004016108899061575c565b604080516020810190915260008152604051806020016040528061407e856000015185614453565b80516000906120d890670de0b6b3a764000090614ffe565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000613bc68284614fa8565b6000613bc68284614ffe565b6000613bc6828461515b565b600054610100900460ff1661449e5760405162461bcd60e51b81526004016108899061575c565b611b9033613fc9565b8015155b82525050565b602081016120d882846144a7565b60006001600160a01b0382166120d8565b6144d9816144bf565b811461082057600080fd5b80356120d8816144d0565b60006020828403121561450457614504600080fd5b6000613be584846144e4565b806144ab565b602081016120d88284614510565b806144d9565b80356120d881614524565b60006020828403121561454a5761454a600080fd5b6000613be5848461452a565b60008083601f84011261456b5761456b600080fd5b50813567ffffffffffffffff81111561458657614586600080fd5b6020830191508360208202830111156145a1576145a1600080fd5b9250929050565b600080600080604085870312156145c1576145c1600080fd5b843567ffffffffffffffff8111156145db576145db600080fd5b6145e787828801614556565b9450945050602085013567ffffffffffffffff81111561460957614609600080fd5b61461587828801614556565b95989497509550505050565b6000806000806080858703121561463a5761463a600080fd5b600061464687876144e4565b9450506020614657878288016144e4565b9350506040614668878288016144e4565b9250506060614679878288016144e4565b91505092959194509250565b8015156144d9565b80356120d881614685565b6000806000806000606086880312156146b3576146b3600080fd5b853567ffffffffffffffff8111156146cd576146cd600080fd5b6146d988828901614556565b9550955050602086013567ffffffffffffffff8111156146fb576146fb600080fd5b61470788828901614556565b9350935050604061471a8882890161468d565b9150509295509295909350565b60008083601f84011261473c5761473c600080fd5b50813567ffffffffffffffff81111561475757614757600080fd5b6020830191508360608202830111156145a1576145a1600080fd5b60008060006040848603121561478a5761478a600080fd5b600061479686866144e4565b935050602084013567ffffffffffffffff8111156147b6576147b6600080fd5b6147c286828701614727565b92509250509250925092565b60006120d8826144bf565b6144d9816147ce565b80356120d8816147d9565b60006020828403121561480257614802600080fd5b6000613be584846147e2565b6000806000806080858703121561482757614827600080fd5b600061483387876144e4565b9450506020614844878288016144e4565b93505060406148558782880161452a565b92505060606146798782880161452a565b606081016148748286614510565b6148816020830185614510565b613be56040830184614510565b60006120d8826147ce565b6144ab8161488e565b602081016120d88284614899565b6000806000606084860312156148c8576148c8600080fd5b60006148d486866147e2565b93505060206148e58682870161452a565b92505060406148f68682870161452a565b9150509250925092565b600061490c8383614899565b505060200190565b600061491e825190565b80845260209384019383018060005b838110156149525781516149418882614900565b97506020830192505060010161492d565b509495945050505050565b60208082528101613bc68184614914565b6000806000806080858703121561498757614987600080fd5b600061499387876144e4565b94505060206149a4878288016144e4565b9350506040614855878288016144e4565b6144ab816144bf565b602081016120d882846149b5565b6000806000606084860312156149e4576149e4600080fd5b60006149f086866144e4565b93505060206148e5868287016144e4565b6060810161487482866144a7565b60008060408385031215614a2557614a25600080fd5b6000614a3185856144e4565b9250506020614a42858286016147e2565b9150509250929050565b6000614a56825190565b80845260209384019383018060005b83811015614952578151614a798882614900565b975060208301925050600101614a65565b60208082528101613bc68184614a4c565b80516060830190614aac84826149b5565b506020820151614abf6020850182614510565b5060408201516135fc6040850182614510565b6000614ade8383614a9b565b505060600190565b6000614af0825190565b80845260209384019383018060005b83811015614952578151614b138882614ad2565b975060208301925050600101614aff565b60208082528101613bc68184614ae6565b634e487b7160e01b600052604160045260246000fd5b601f19601f830116810181811067ffffffffffffffff82111715614b7157614b71614b35565b6040525050565b6000614b8360405190565b9050614b8f8282614b4b565b919050565b600067ffffffffffffffff821115614bae57614bae614b35565b5060209081020190565b6000614bcb614bc684614b94565b614b78565b83815290506020808201908402830185811115614bea57614bea600080fd5b835b81811015614c0e5780614bff88826144e4565b84525060209283019201614bec565b5050509392505050565b600082601f830112614c2c57614c2c600080fd5b8135613be5848260208601614bb8565b600060208284031215614c5157614c51600080fd5b813567ffffffffffffffff811115614c6b57614c6b600080fd5b613be584828501614c18565b600061490c8383614510565b6000614c8d825190565b80845260209384019383018060005b83811015614952578151614cb08882614c77565b975060208301925050600101614c9c565b60208082528101613bc68184614c83565b60408101614ce08285614510565b613bc66020830184614510565b60008060408385031215614d0357614d03600080fd5b6000614d0f858561452a565b9250506020614a42858286016144e4565b60008060408385031215614d3657614d36600080fd5b6000614d4285856144e4565b9250506020614a428582860161452a565b6009811061082057600080fd5b80356120d881614d53565b60008060408385031215614d8157614d81600080fd5b6000614d8d85856144e4565b9250506020614a4285828601614d60565b600080600080600060a08688031215614db957614db9600080fd5b6000614dc588886144e4565b9550506020614dd6888289016144e4565b9450506040614de7888289016144e4565b9350506060614df88882890161452a565b925050608061471a8882890161468d565b60008060408385031215614e1f57614e1f600080fd5b6000614d0f85856144e4565b602e81526000602082017f436c6f736520666163746f722067726561746572207468616e206d6178696d7581526d369031b637b9b2903330b1ba37b960911b602082015291505b5060400190565b602080825281016120d881614e2b565b602e81526000602082017f436c6f736520666163746f7220736d616c6c6572207468616e206d696e696d7581526d369031b637b9b2903330b1ba37b960911b60208201529150614e72565b602080825281016120d881614e89565b600d81526000602082016c1a5b9d985b1a59081a5b9c1d5d609a1b815291505b5060200190565b602080825281016120d881614ee4565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006000198203614f5a57614f5a614f31565b5060010190565b80516120d8816147d9565b600060208284031215614f8157614f81600080fd5b6000613be58484614f61565b60408101614f9b82856149b5565b613bc660208301846149b5565b6000816000190483118215151615614fc257614fc2614f31565b500290565b600060208284031215614fdc57614fdc600080fd5b6000613be58484614d60565b634e487b7160e01b600052601260045260246000fd5b60008261500d5761500d614fe8565b500490565b60a0810161502082886149b5565b61502d60208301876149b5565b61503a6040830186614510565b6150476060830185614899565b61505460808301846144a7565b9695505050505050565b602881526000602082017f4e6f6e7a65726f20626f72726f772062616c616e6365206166746572206c69718152673ab4b230ba34b7b760c11b60208201529150614e72565b602080825281016120d88161505e565b604081016150c18285614899565b613bc66020830184614899565b600e81526000602082016d616c72656164792065786973747360901b81529150614f04565b602080825281016120d8816150ce565b602b81526000602082017f6469737472696275746f7220616c72656164792065786973747320776974682081526a1d1a1a5cc81c995dd85c9960aa1b60208201529150614e72565b602080825281016120d881615103565b6000821982111561516e5761516e614f31565b500190565b80516120d881614524565b60006020828403121561519357615193600080fd5b6000613be58484615173565b606081016148748286614899565b602981526000602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b60208201529150614e72565b602080825281016120d8816151ad565b6060810161521182866149b5565b61488160208301856149b5565b603181526000602082017f6c69717569646174696f6e20696e63656e746976652073686f756c64206265208152700cee4cac2e8cae440e8d0c2dc4062ca627607b1b60208201529150614e72565b602080825281016120d88161521e565b60408101614ce082856149b5565b80516120d881614685565b6000602082840312156152aa576152aa600080fd5b6000613be5848461528a565b601b81526000602082017f436f6d7074726f6c6c65723a20496e76616c69642076546f6b656e000000000081529150614f04565b602080825281016120d8816152b6565b601981526000602082017f696e76616c6964206e756d626572206f66206d61726b6574730000000000000081529150614f04565b602080825281016120d8816152fa565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b60208201529150614e72565b602080825281016120d88161533e565b600060ff82166120d8565b6144ab81615399565b602081016120d882846153a4565b805160208301906135fc8482614510565b604081016153da82856149b5565b613bc660208301846153bb565b606081016153f582866149b5565b61540260208301856149b5565b613be560408301846153bb565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052600160045260246000fd5b60008282101561544d5761544d614f31565b500390565b634e487b7160e01b600052603160045260246000fd5b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000614f04565b602080825281016120d881615468565b602581526000602082017f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164815264647265737360d81b60208201529150614e72565b602080825281016120d8816154aa565b60005b838110156155175781810151838201526020016154ff565b838111156135fc5750506000910152565b6000615532825190565b8084526020840193506155498185602086016154fc565b601f01601f19169290920192915050565b6040810161556882856149b5565b8181036020830152613be58184615528565b6060810161558882866149b5565b61559560208301856149b5565b81810360408301526140e28184615528565b600981106108205761082061540f565b80614b8f816155a7565b60006120d8826155b7565b6144ab816155c1565b604081016155e382856149b5565b613bc660208301846155cc565b602881526000602082017f63616e6e6f742070617573652061206d61726b65742074686174206973206e6f8152671d081b1a5cdd195960c21b60208201529150614e72565b602080825281016120d8816155f0565b606081016156538286614899565b61566060208301856155cc565b613be560408301846144a7565b6000806000806080858703121561568657615686600080fd5b60006156928787615173565b94505060206156a387828801615173565b93505060406156b487828801615173565b925050606061467987828801615173565b602281526000602082017f436f6d7074726f6c6c65723a20496e76616c6964206d61784c6f6f70734c696d8152611a5d60f21b60208201529150614e72565b602080825281016120d8816156c5565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b60208201529150614e72565b602080825281016120d88161571456fe7365744d61726b6574426f72726f774361707328616464726573735b5d2c75696e743235365b5d297365744d696e4c6971756964617461626c65436f6c6c61746572616c2875696e7432353629736574436f6c6c61746572616c466163746f7228616464726573732c75696e743235362c75696e7432353629736574416374696f6e7350617573656428616464726573735b5d2c75696e743235365b5d2c626f6f6c297365744d61726b6574537570706c794361707328616464726573735b5d2c75696e743235365b5d29a264697066735822122068885b0ad7709afab80adf1723da057dd11c129c2ed13368f2feaada9f97637064736f6c634300080d0033",
1665
+ "linkReferences": {},
1666
+ "deployedLinkReferences": {}
1667
+ }