@venusprotocol/isolated-pools 1.0.0-dev.1 → 1.0.0-dev.10

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 (265) hide show
  1. package/README.md +1 -11
  2. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.dbg.json +4 -0
  3. package/artifacts/@openzeppelin/contracts/access/AccessControl.sol/AccessControl.json +215 -0
  4. package/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.dbg.json +4 -0
  5. package/artifacts/@openzeppelin/contracts/access/IAccessControl.sol/IAccessControl.json +183 -0
  6. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +4 -0
  7. package/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json +63 -0
  8. package/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.dbg.json +4 -0
  9. package/artifacts/@openzeppelin/contracts/interfaces/IERC1967.sol/IERC1967.json +56 -0
  10. package/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +4 -0
  11. package/artifacts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.json +24 -0
  12. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +4 -0
  13. package/artifacts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.json +56 -0
  14. package/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +4 -0
  15. package/artifacts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.json +19 -0
  16. package/artifacts/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol/BeaconProxy.dbg.json +4 -0
  17. package/artifacts/@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol/BeaconProxy.json +80 -0
  18. package/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +4 -0
  19. package/artifacts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.json +24 -0
  20. package/artifacts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +4 -0
  21. package/artifacts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +113 -0
  22. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +4 -0
  23. package/artifacts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +297 -0
  24. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +4 -0
  25. package/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json +194 -0
  26. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +4 -0
  27. package/artifacts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.json +233 -0
  28. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +4 -0
  29. package/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json +10 -0
  30. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +4 -0
  31. package/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json +10 -0
  32. package/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +4 -0
  33. package/artifacts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +10 -0
  34. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +4 -0
  35. package/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +10 -0
  36. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.dbg.json +4 -0
  37. package/artifacts/@openzeppelin/contracts/utils/introspection/ERC165.sol/ERC165.json +30 -0
  38. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.dbg.json +4 -0
  39. package/artifacts/@openzeppelin/contracts/utils/introspection/IERC165.sol/IERC165.json +30 -0
  40. package/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.dbg.json +4 -0
  41. package/artifacts/@openzeppelin/contracts/utils/math/Math.sol/Math.json +10 -0
  42. package/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.dbg.json +4 -0
  43. package/artifacts/@openzeppelin/contracts/utils/math/SignedMath.sol/SignedMath.json +10 -0
  44. package/artifacts/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol/Ownable2StepUpgradeable.dbg.json +4 -0
  45. package/artifacts/@openzeppelin/contracts-upgradeable/access/Ownable2StepUpgradeable.sol/Ownable2StepUpgradeable.json +115 -0
  46. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +4 -0
  47. package/artifacts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +76 -0
  48. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +4 -0
  49. package/artifacts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +24 -0
  50. package/artifacts/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.dbg.json +4 -0
  51. package/artifacts/@openzeppelin/contracts-upgradeable/security/ReentrancyGuardUpgradeable.sol/ReentrancyGuardUpgradeable.json +24 -0
  52. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +4 -0
  53. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.json +194 -0
  54. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol/IERC20PermitUpgradeable.dbg.json +4 -0
  55. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20PermitUpgradeable.sol/IERC20PermitUpgradeable.json +86 -0
  56. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol/SafeERC20Upgradeable.dbg.json +4 -0
  57. package/artifacts/@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol/SafeERC20Upgradeable.json +10 -0
  58. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +4 -0
  59. package/artifacts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +10 -0
  60. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +4 -0
  61. package/artifacts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +24 -0
  62. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlManager.sol/AccessControlManager.dbg.json +4 -0
  63. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlManager.sol/AccessControlManager.json +369 -0
  64. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.dbg.json +4 -0
  65. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/AccessControlledV8.sol/AccessControlledV8.json +181 -0
  66. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.dbg.json +4 -0
  67. package/artifacts/@venusprotocol/governance-contracts/contracts/Governance/IAccessControlManagerV8.sol/IAccessControlManagerV8.json +282 -0
  68. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.dbg.json +4 -0
  69. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/BoundValidatorInterface.json +40 -0
  70. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.dbg.json +4 -0
  71. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/OracleInterface.json +30 -0
  72. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.dbg.json +4 -0
  73. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/ResilientOracleInterface.json +43 -0
  74. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.dbg.json +4 -0
  75. package/artifacts/@venusprotocol/oracle/contracts/interfaces/OracleInterface.sol/TwapInterface.json +49 -0
  76. package/artifacts/build-info/12e6bd89f1c85c4fa1b7344e28b69777.json +1 -0
  77. package/artifacts/build-info/f19d689bc99e63a20dd2a17a14e2b84a.json +1 -0
  78. package/artifacts/contracts/BaseJumpRateModelV2.sol/BaseJumpRateModelV2.dbg.json +4 -0
  79. package/artifacts/contracts/BaseJumpRateModelV2.sol/BaseJumpRateModelV2.json +276 -0
  80. package/artifacts/contracts/Comptroller.sol/Comptroller.dbg.json +4 -0
  81. package/artifacts/contracts/Comptroller.sol/Comptroller.json +1667 -0
  82. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerInterface.dbg.json +4 -0
  83. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerInterface.json +285 -0
  84. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerViewInterface.dbg.json +4 -0
  85. package/artifacts/contracts/ComptrollerInterface.sol/ComptrollerViewInterface.json +170 -0
  86. package/artifacts/contracts/ComptrollerStorage.sol/ComptrollerStorage.dbg.json +4 -0
  87. package/artifacts/contracts/ComptrollerStorage.sol/ComptrollerStorage.json +173 -0
  88. package/artifacts/contracts/ErrorReporter.sol/TokenErrorReporter.dbg.json +4 -0
  89. package/artifacts/contracts/ErrorReporter.sol/TokenErrorReporter.json +156 -0
  90. package/artifacts/contracts/ExponentialNoError.sol/ExponentialNoError.dbg.json +4 -0
  91. package/artifacts/contracts/ExponentialNoError.sol/ExponentialNoError.json +10 -0
  92. package/artifacts/contracts/IPancakeswapV2Router.sol/IPancakeswapV2Router.dbg.json +4 -0
  93. package/artifacts/contracts/IPancakeswapV2Router.sol/IPancakeswapV2Router.json +50 -0
  94. package/artifacts/contracts/InterestRateModel.sol/InterestRateModel.dbg.json +4 -0
  95. package/artifacts/contracts/InterestRateModel.sol/InterestRateModel.json +97 -0
  96. package/artifacts/contracts/JumpRateModelV2.sol/JumpRateModelV2.dbg.json +4 -0
  97. package/artifacts/contracts/JumpRateModelV2.sol/JumpRateModelV2.json +307 -0
  98. package/artifacts/contracts/Lens/PoolLens.sol/PoolLens.dbg.json +4 -0
  99. package/artifacts/contracts/Lens/PoolLens.sol/PoolLens.json +1087 -0
  100. package/artifacts/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.dbg.json +4 -0
  101. package/artifacts/contracts/MaxLoopsLimitHelper.sol/MaxLoopsLimitHelper.json +59 -0
  102. package/artifacts/contracts/Pool/PoolRegistry.sol/PoolRegistry.dbg.json +4 -0
  103. package/artifacts/contracts/Pool/PoolRegistry.sol/PoolRegistry.json +689 -0
  104. package/artifacts/contracts/Pool/PoolRegistryInterface.sol/PoolRegistryInterface.dbg.json +4 -0
  105. package/artifacts/contracts/Pool/PoolRegistryInterface.sol/PoolRegistryInterface.json +176 -0
  106. package/artifacts/contracts/Rewards/RewardsDistributor.sol/RewardsDistributor.dbg.json +4 -0
  107. package/artifacts/contracts/Rewards/RewardsDistributor.sol/RewardsDistributor.json +928 -0
  108. package/artifacts/contracts/RiskFund/IProtocolShareReserve.sol/IProtocolShareReserve.dbg.json +4 -0
  109. package/artifacts/contracts/RiskFund/IProtocolShareReserve.sol/IProtocolShareReserve.json +29 -0
  110. package/artifacts/contracts/RiskFund/IRiskFund.sol/IRiskFund.dbg.json +4 -0
  111. package/artifacts/contracts/RiskFund/IRiskFund.sol/IRiskFund.json +101 -0
  112. package/artifacts/contracts/RiskFund/ProtocolShareReserve.sol/ProtocolShareReserve.dbg.json +4 -0
  113. package/artifacts/contracts/RiskFund/ProtocolShareReserve.sol/ProtocolShareReserve.json +296 -0
  114. package/artifacts/contracts/RiskFund/ReserveHelpers.sol/ReserveHelpers.dbg.json +4 -0
  115. package/artifacts/contracts/RiskFund/ReserveHelpers.sol/ReserveHelpers.json +83 -0
  116. package/artifacts/contracts/RiskFund/RiskFund.sol/RiskFund.dbg.json +4 -0
  117. package/artifacts/contracts/RiskFund/RiskFund.sol/RiskFund.json +596 -0
  118. package/artifacts/contracts/Shortfall/IShortfall.sol/IShortfall.dbg.json +4 -0
  119. package/artifacts/contracts/Shortfall/IShortfall.sol/IShortfall.json +24 -0
  120. package/artifacts/contracts/Shortfall/Shortfall.sol/Shortfall.dbg.json +4 -0
  121. package/artifacts/contracts/Shortfall/Shortfall.sol/Shortfall.json +756 -0
  122. package/artifacts/contracts/VToken.sol/VToken.dbg.json +4 -0
  123. package/artifacts/contracts/VToken.sol/VToken.json +1850 -0
  124. package/artifacts/contracts/VTokenInterfaces.sol/VTokenInterface.dbg.json +4 -0
  125. package/artifacts/contracts/VTokenInterfaces.sol/VTokenInterface.json +1398 -0
  126. package/artifacts/contracts/VTokenInterfaces.sol/VTokenStorage.dbg.json +4 -0
  127. package/artifacts/contracts/VTokenInterfaces.sol/VTokenStorage.json +219 -0
  128. package/artifacts/contracts/WhitePaperInterestRateModel.sol/WhitePaperInterestRateModel.dbg.json +4 -0
  129. package/artifacts/contracts/WhitePaperInterestRateModel.sol/WhitePaperInterestRateModel.json +192 -0
  130. package/artifacts/contracts/test/ComptrollerHarness.sol/ComptrollerHarness.dbg.json +4 -0
  131. package/artifacts/contracts/test/ComptrollerHarness.sol/ComptrollerHarness.json +1712 -0
  132. package/artifacts/contracts/test/ComptrollerHarness.sol/EchoTypesComptroller.dbg.json +4 -0
  133. package/artifacts/contracts/test/ComptrollerHarness.sol/EchoTypesComptroller.json +94 -0
  134. package/artifacts/contracts/test/ComptrollerScenario.sol/ComptrollerScenario.dbg.json +4 -0
  135. package/artifacts/contracts/test/ComptrollerScenario.sol/ComptrollerScenario.json +1744 -0
  136. package/artifacts/contracts/test/ERC20.sol/ERC20.dbg.json +4 -0
  137. package/artifacts/contracts/test/ERC20.sol/ERC20.json +194 -0
  138. package/artifacts/contracts/test/ERC20.sol/ERC20Base.dbg.json +4 -0
  139. package/artifacts/contracts/test/ERC20.sol/ERC20Base.json +141 -0
  140. package/artifacts/contracts/test/ERC20.sol/ERC20Harness.dbg.json +4 -0
  141. package/artifacts/contracts/test/ERC20.sol/ERC20Harness.json +351 -0
  142. package/artifacts/contracts/test/ERC20.sol/ERC20NS.dbg.json +4 -0
  143. package/artifacts/contracts/test/ERC20.sol/ERC20NS.json +182 -0
  144. package/artifacts/contracts/test/ERC20.sol/NonStandardToken.dbg.json +4 -0
  145. package/artifacts/contracts/test/ERC20.sol/NonStandardToken.json +247 -0
  146. package/artifacts/contracts/test/ERC20.sol/StandardToken.dbg.json +4 -0
  147. package/artifacts/contracts/test/ERC20.sol/StandardToken.json +259 -0
  148. package/artifacts/contracts/test/EvilToken.sol/EvilToken.dbg.json +4 -0
  149. package/artifacts/contracts/test/EvilToken.sol/EvilToken.json +303 -0
  150. package/artifacts/contracts/test/FaucetToken.sol/FaucetNonStandardToken.dbg.json +4 -0
  151. package/artifacts/contracts/test/FaucetToken.sol/FaucetNonStandardToken.json +265 -0
  152. package/artifacts/contracts/test/FaucetToken.sol/FaucetToken.dbg.json +4 -0
  153. package/artifacts/contracts/test/FaucetToken.sol/FaucetToken.json +277 -0
  154. package/artifacts/contracts/test/FaucetToken.sol/FaucetTokenReEntrantHarness.dbg.json +4 -0
  155. package/artifacts/contracts/test/FaucetToken.sol/FaucetTokenReEntrantHarness.json +313 -0
  156. package/artifacts/contracts/test/FeeToken.sol/FeeToken.dbg.json +4 -0
  157. package/artifacts/contracts/test/FeeToken.sol/FeeToken.json +313 -0
  158. package/artifacts/contracts/test/HarnessMaxLoopsLimitHelper.sol/HarnessMaxLoopsLimitHelper.dbg.json +4 -0
  159. package/artifacts/contracts/test/HarnessMaxLoopsLimitHelper.sol/HarnessMaxLoopsLimitHelper.json +85 -0
  160. package/artifacts/contracts/test/MockDeflationaryToken.sol/MockDeflatingToken.dbg.json +4 -0
  161. package/artifacts/contracts/test/MockDeflationaryToken.sol/MockDeflatingToken.json +332 -0
  162. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IERC20.dbg.json +4 -0
  163. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IERC20.json +233 -0
  164. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeFactory.dbg.json +4 -0
  165. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeFactory.json +187 -0
  166. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakePair.dbg.json +4 -0
  167. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakePair.json +668 -0
  168. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter01.dbg.json +4 -0
  169. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter01.json +760 -0
  170. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter02.dbg.json +4 -0
  171. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IPancakeRouter02.json +962 -0
  172. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IWETH.dbg.json +4 -0
  173. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/IWETH.json +55 -0
  174. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeLibrary.dbg.json +4 -0
  175. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeLibrary.json +10 -0
  176. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeRouter.dbg.json +4 -0
  177. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/PancakeRouter.json +982 -0
  178. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/SafeMath.dbg.json +4 -0
  179. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/SafeMath.json +10 -0
  180. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/TransferHelper.dbg.json +4 -0
  181. package/artifacts/contracts/test/Mocks/MockPancakeSwap.sol/TransferHelper.json +10 -0
  182. package/artifacts/contracts/test/Mocks/MockPriceOracle.sol/MockPriceOracle.dbg.json +4 -0
  183. package/artifacts/contracts/test/Mocks/MockPriceOracle.sol/MockPriceOracle.json +85 -0
  184. package/artifacts/contracts/test/Mocks/MockToken.sol/MockToken.dbg.json +4 -0
  185. package/artifacts/contracts/test/Mocks/MockToken.sol/MockToken.json +315 -0
  186. package/artifacts/contracts/test/SafeMath.sol/SafeMath.dbg.json +4 -0
  187. package/artifacts/contracts/test/SafeMath.sol/SafeMath.json +10 -0
  188. package/artifacts/contracts/test/UpgradedVToken.sol/UpgradedVToken.dbg.json +4 -0
  189. package/artifacts/contracts/test/UpgradedVToken.sol/UpgradedVToken.json +1946 -0
  190. package/artifacts/contracts/test/VTokenHarness.sol/VTokenHarness.dbg.json +4 -0
  191. package/artifacts/contracts/test/VTokenHarness.sol/VTokenHarness.json +2306 -0
  192. package/contracts/BaseJumpRateModelV2.sol +4 -3
  193. package/contracts/Comptroller.sol +40 -15
  194. package/contracts/ComptrollerInterface.sol +10 -0
  195. package/contracts/ComptrollerStorage.sol +5 -0
  196. package/contracts/ErrorReporter.sol +5 -0
  197. package/contracts/ExponentialNoError.sol +0 -7
  198. package/contracts/Lens/PoolLens.sol +13 -0
  199. package/contracts/MaxLoopsLimitHelper.sol +5 -0
  200. package/contracts/Pool/PoolRegistry.sol +58 -206
  201. package/contracts/Pool/PoolRegistryInterface.sol +12 -7
  202. package/contracts/Rewards/RewardsDistributor.sol +15 -0
  203. package/contracts/RiskFund/IProtocolShareReserve.sol +5 -0
  204. package/contracts/RiskFund/IRiskFund.sol +5 -0
  205. package/contracts/RiskFund/ProtocolShareReserve.sol +5 -0
  206. package/contracts/RiskFund/ReserveHelpers.sol +5 -0
  207. package/contracts/RiskFund/RiskFund.sol +5 -5
  208. package/contracts/Shortfall/IShortfall.sol +5 -0
  209. package/contracts/Shortfall/Shortfall.sol +25 -21
  210. package/contracts/VToken.sol +31 -9
  211. package/contracts/VTokenInterfaces.sol +10 -0
  212. package/contracts/WhitePaperInterestRateModel.sol +1 -1
  213. package/contracts/lib/imports.sol +11 -0
  214. package/contracts/test/MockDeflationaryToken.sol +113 -0
  215. package/dist/deploy/001-deploy-mock-tokens.d.ts +3 -0
  216. package/dist/deploy/001-deploy-mock-tokens.js +23 -0
  217. package/dist/deploy/002-price-oracle.d.ts +2 -0
  218. package/dist/deploy/002-price-oracle.js +9 -0
  219. package/dist/deploy/003-price-oracle-configure-feeds.d.ts +2 -0
  220. package/dist/deploy/003-price-oracle-configure-feeds.js +9 -0
  221. package/{deploy/004-swap-router.ts → dist/deploy/004-swap-router.d.ts} +0 -3
  222. package/dist/deploy/004-swap-router.js +8 -0
  223. package/dist/deploy/005-access-control.d.ts +3 -0
  224. package/dist/deploy/005-access-control.js +16 -0
  225. package/dist/deploy/006-deploy-factories.d.ts +3 -0
  226. package/dist/deploy/006-deploy-factories.js +37 -0
  227. package/dist/deploy/007-access-control-configure.d.ts +3 -0
  228. package/dist/deploy/007-access-control-configure.js +69 -0
  229. package/dist/deploy/008-deploy-pool-lens.d.ts +3 -0
  230. package/dist/deploy/008-deploy-pool-lens.js +15 -0
  231. package/dist/deploy/009-deploy-pools.d.ts +3 -0
  232. package/dist/deploy/009-deploy-pools.js +186 -0
  233. package/dist/deploy/010-rewards.d.ts +3 -0
  234. package/dist/deploy/010-rewards.js +76 -0
  235. package/dist/deploy/011-transfer-pools-ownership.d.ts +3 -0
  236. package/dist/deploy/011-transfer-pools-ownership.js +75 -0
  237. package/dist/deploy/012-riskfund-protocolshare.d.ts +3 -0
  238. package/dist/deploy/012-riskfund-protocolshare.js +139 -0
  239. package/dist/deploy/013-transfer-funds-ownership.d.ts +3 -0
  240. package/dist/deploy/013-transfer-funds-ownership.js +46 -0
  241. package/dist/hardhat.config.d.ts +14 -0
  242. package/dist/hardhat.config.js +237 -0
  243. package/dist/helpers/deploymentConfig.d.ts +59 -0
  244. package/dist/helpers/deploymentConfig.js +836 -0
  245. package/dist/helpers/utils.d.ts +3 -0
  246. package/dist/helpers/utils.js +28 -0
  247. package/package.json +2 -10
  248. package/contracts/Factories/JumpRateModelFactory.sol +0 -26
  249. package/contracts/Factories/VTokenProxyFactory.sol +0 -53
  250. package/contracts/Factories/WhitePaperInterestRateModelFactory.sol +0 -12
  251. package/contracts/Proxy/UpgradeableBeacon.sol +0 -10
  252. package/deploy/001-deploy-mock-tokens.ts +0 -29
  253. package/deploy/002-price-oracle.ts +0 -7
  254. package/deploy/003-price-oracle-configure-feeds.ts +0 -7
  255. package/deploy/005-access-control.ts +0 -20
  256. package/deploy/006-deploy-factories.ts +0 -82
  257. package/deploy/007-access-control-configure.ts +0 -142
  258. package/deploy/008-deploy-pool-lens.ts +0 -19
  259. package/deploy/009-deploy-pools.ts +0 -171
  260. package/deploy/010-rewards.ts +0 -84
  261. package/deploy/011-transfer-pools-ownership.ts +0 -93
  262. package/deploy/012-riskfund-protocolshare.ts +0 -140
  263. package/deploy/013-transfer-funds-ownership.ts +0 -63
  264. package/helpers/deploymentConfig.ts +0 -897
  265. package/helpers/utils.ts +0 -24
@@ -0,0 +1,756 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "Shortfall",
4
+ "sourceName": "contracts/Shortfall/Shortfall.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [],
8
+ "stateMutability": "nonpayable",
9
+ "type": "constructor"
10
+ },
11
+ {
12
+ "inputs": [
13
+ {
14
+ "internalType": "address",
15
+ "name": "sender",
16
+ "type": "address"
17
+ },
18
+ {
19
+ "internalType": "address",
20
+ "name": "calledContract",
21
+ "type": "address"
22
+ },
23
+ {
24
+ "internalType": "string",
25
+ "name": "methodSignature",
26
+ "type": "string"
27
+ }
28
+ ],
29
+ "name": "Unauthorized",
30
+ "type": "error"
31
+ },
32
+ {
33
+ "inputs": [],
34
+ "name": "ZeroAddressNotAllowed",
35
+ "type": "error"
36
+ },
37
+ {
38
+ "anonymous": false,
39
+ "inputs": [
40
+ {
41
+ "indexed": true,
42
+ "internalType": "address",
43
+ "name": "comptroller",
44
+ "type": "address"
45
+ },
46
+ {
47
+ "indexed": false,
48
+ "internalType": "uint256",
49
+ "name": "auctionStartBlock",
50
+ "type": "uint256"
51
+ },
52
+ {
53
+ "indexed": true,
54
+ "internalType": "address",
55
+ "name": "highestBidder",
56
+ "type": "address"
57
+ },
58
+ {
59
+ "indexed": false,
60
+ "internalType": "uint256",
61
+ "name": "highestBidBps",
62
+ "type": "uint256"
63
+ },
64
+ {
65
+ "indexed": false,
66
+ "internalType": "uint256",
67
+ "name": "seizedRiskFind",
68
+ "type": "uint256"
69
+ },
70
+ {
71
+ "indexed": false,
72
+ "internalType": "contract VToken[]",
73
+ "name": "markets",
74
+ "type": "address[]"
75
+ },
76
+ {
77
+ "indexed": false,
78
+ "internalType": "uint256[]",
79
+ "name": "marketDebt",
80
+ "type": "uint256[]"
81
+ }
82
+ ],
83
+ "name": "AuctionClosed",
84
+ "type": "event"
85
+ },
86
+ {
87
+ "anonymous": false,
88
+ "inputs": [
89
+ {
90
+ "indexed": true,
91
+ "internalType": "address",
92
+ "name": "comptroller",
93
+ "type": "address"
94
+ },
95
+ {
96
+ "indexed": false,
97
+ "internalType": "uint256",
98
+ "name": "auctionStartBlock",
99
+ "type": "uint256"
100
+ }
101
+ ],
102
+ "name": "AuctionRestarted",
103
+ "type": "event"
104
+ },
105
+ {
106
+ "anonymous": false,
107
+ "inputs": [
108
+ {
109
+ "indexed": true,
110
+ "internalType": "address",
111
+ "name": "comptroller",
112
+ "type": "address"
113
+ },
114
+ {
115
+ "indexed": false,
116
+ "internalType": "uint256",
117
+ "name": "auctionStartBlock",
118
+ "type": "uint256"
119
+ },
120
+ {
121
+ "indexed": false,
122
+ "internalType": "enum Shortfall.AuctionType",
123
+ "name": "auctionType",
124
+ "type": "uint8"
125
+ },
126
+ {
127
+ "indexed": false,
128
+ "internalType": "contract VToken[]",
129
+ "name": "markets",
130
+ "type": "address[]"
131
+ },
132
+ {
133
+ "indexed": false,
134
+ "internalType": "uint256[]",
135
+ "name": "marketsDebt",
136
+ "type": "uint256[]"
137
+ },
138
+ {
139
+ "indexed": false,
140
+ "internalType": "uint256",
141
+ "name": "seizedRiskFund",
142
+ "type": "uint256"
143
+ },
144
+ {
145
+ "indexed": false,
146
+ "internalType": "uint256",
147
+ "name": "startBidBps",
148
+ "type": "uint256"
149
+ }
150
+ ],
151
+ "name": "AuctionStarted",
152
+ "type": "event"
153
+ },
154
+ {
155
+ "anonymous": false,
156
+ "inputs": [
157
+ {
158
+ "indexed": false,
159
+ "internalType": "address",
160
+ "name": "sender",
161
+ "type": "address"
162
+ }
163
+ ],
164
+ "name": "AuctionsPaused",
165
+ "type": "event"
166
+ },
167
+ {
168
+ "anonymous": false,
169
+ "inputs": [
170
+ {
171
+ "indexed": false,
172
+ "internalType": "address",
173
+ "name": "sender",
174
+ "type": "address"
175
+ }
176
+ ],
177
+ "name": "AuctionsResumed",
178
+ "type": "event"
179
+ },
180
+ {
181
+ "anonymous": false,
182
+ "inputs": [
183
+ {
184
+ "indexed": true,
185
+ "internalType": "address",
186
+ "name": "comptroller",
187
+ "type": "address"
188
+ },
189
+ {
190
+ "indexed": false,
191
+ "internalType": "uint256",
192
+ "name": "auctionStartBlock",
193
+ "type": "uint256"
194
+ },
195
+ {
196
+ "indexed": false,
197
+ "internalType": "uint256",
198
+ "name": "bidBps",
199
+ "type": "uint256"
200
+ },
201
+ {
202
+ "indexed": true,
203
+ "internalType": "address",
204
+ "name": "bidder",
205
+ "type": "address"
206
+ }
207
+ ],
208
+ "name": "BidPlaced",
209
+ "type": "event"
210
+ },
211
+ {
212
+ "anonymous": false,
213
+ "inputs": [
214
+ {
215
+ "indexed": false,
216
+ "internalType": "uint256",
217
+ "name": "oldIncentiveBps",
218
+ "type": "uint256"
219
+ },
220
+ {
221
+ "indexed": false,
222
+ "internalType": "uint256",
223
+ "name": "newIncentiveBps",
224
+ "type": "uint256"
225
+ }
226
+ ],
227
+ "name": "IncentiveBpsUpdated",
228
+ "type": "event"
229
+ },
230
+ {
231
+ "anonymous": false,
232
+ "inputs": [
233
+ {
234
+ "indexed": false,
235
+ "internalType": "uint8",
236
+ "name": "version",
237
+ "type": "uint8"
238
+ }
239
+ ],
240
+ "name": "Initialized",
241
+ "type": "event"
242
+ },
243
+ {
244
+ "anonymous": false,
245
+ "inputs": [
246
+ {
247
+ "indexed": false,
248
+ "internalType": "uint256",
249
+ "name": "oldMinimumPoolBadDebt",
250
+ "type": "uint256"
251
+ },
252
+ {
253
+ "indexed": false,
254
+ "internalType": "uint256",
255
+ "name": "newMinimumPoolBadDebt",
256
+ "type": "uint256"
257
+ }
258
+ ],
259
+ "name": "MinimumPoolBadDebtUpdated",
260
+ "type": "event"
261
+ },
262
+ {
263
+ "anonymous": false,
264
+ "inputs": [
265
+ {
266
+ "indexed": false,
267
+ "internalType": "address",
268
+ "name": "oldAccessControlManager",
269
+ "type": "address"
270
+ },
271
+ {
272
+ "indexed": false,
273
+ "internalType": "address",
274
+ "name": "newAccessControlManager",
275
+ "type": "address"
276
+ }
277
+ ],
278
+ "name": "NewAccessControlManager",
279
+ "type": "event"
280
+ },
281
+ {
282
+ "anonymous": false,
283
+ "inputs": [
284
+ {
285
+ "indexed": false,
286
+ "internalType": "uint256",
287
+ "name": "oldNextBidderBlockLimit",
288
+ "type": "uint256"
289
+ },
290
+ {
291
+ "indexed": false,
292
+ "internalType": "uint256",
293
+ "name": "newNextBidderBlockLimit",
294
+ "type": "uint256"
295
+ }
296
+ ],
297
+ "name": "NextBidderBlockLimitUpdated",
298
+ "type": "event"
299
+ },
300
+ {
301
+ "anonymous": false,
302
+ "inputs": [
303
+ {
304
+ "indexed": true,
305
+ "internalType": "address",
306
+ "name": "previousOwner",
307
+ "type": "address"
308
+ },
309
+ {
310
+ "indexed": true,
311
+ "internalType": "address",
312
+ "name": "newOwner",
313
+ "type": "address"
314
+ }
315
+ ],
316
+ "name": "OwnershipTransferStarted",
317
+ "type": "event"
318
+ },
319
+ {
320
+ "anonymous": false,
321
+ "inputs": [
322
+ {
323
+ "indexed": true,
324
+ "internalType": "address",
325
+ "name": "previousOwner",
326
+ "type": "address"
327
+ },
328
+ {
329
+ "indexed": true,
330
+ "internalType": "address",
331
+ "name": "newOwner",
332
+ "type": "address"
333
+ }
334
+ ],
335
+ "name": "OwnershipTransferred",
336
+ "type": "event"
337
+ },
338
+ {
339
+ "anonymous": false,
340
+ "inputs": [
341
+ {
342
+ "indexed": true,
343
+ "internalType": "address",
344
+ "name": "oldPoolRegistry",
345
+ "type": "address"
346
+ },
347
+ {
348
+ "indexed": true,
349
+ "internalType": "address",
350
+ "name": "newPoolRegistry",
351
+ "type": "address"
352
+ }
353
+ ],
354
+ "name": "PoolRegistryUpdated",
355
+ "type": "event"
356
+ },
357
+ {
358
+ "anonymous": false,
359
+ "inputs": [
360
+ {
361
+ "indexed": false,
362
+ "internalType": "uint256",
363
+ "name": "oldWaitForFirstBidder",
364
+ "type": "uint256"
365
+ },
366
+ {
367
+ "indexed": false,
368
+ "internalType": "uint256",
369
+ "name": "newWaitForFirstBidder",
370
+ "type": "uint256"
371
+ }
372
+ ],
373
+ "name": "WaitForFirstBidderUpdated",
374
+ "type": "event"
375
+ },
376
+ {
377
+ "inputs": [],
378
+ "name": "acceptOwnership",
379
+ "outputs": [],
380
+ "stateMutability": "nonpayable",
381
+ "type": "function"
382
+ },
383
+ {
384
+ "inputs": [],
385
+ "name": "accessControlManager",
386
+ "outputs": [
387
+ {
388
+ "internalType": "contract IAccessControlManagerV8",
389
+ "name": "",
390
+ "type": "address"
391
+ }
392
+ ],
393
+ "stateMutability": "view",
394
+ "type": "function"
395
+ },
396
+ {
397
+ "inputs": [
398
+ {
399
+ "internalType": "address",
400
+ "name": "",
401
+ "type": "address"
402
+ }
403
+ ],
404
+ "name": "auctions",
405
+ "outputs": [
406
+ {
407
+ "internalType": "uint256",
408
+ "name": "startBlock",
409
+ "type": "uint256"
410
+ },
411
+ {
412
+ "internalType": "enum Shortfall.AuctionType",
413
+ "name": "auctionType",
414
+ "type": "uint8"
415
+ },
416
+ {
417
+ "internalType": "enum Shortfall.AuctionStatus",
418
+ "name": "status",
419
+ "type": "uint8"
420
+ },
421
+ {
422
+ "internalType": "uint256",
423
+ "name": "seizedRiskFund",
424
+ "type": "uint256"
425
+ },
426
+ {
427
+ "internalType": "address",
428
+ "name": "highestBidder",
429
+ "type": "address"
430
+ },
431
+ {
432
+ "internalType": "uint256",
433
+ "name": "highestBidBps",
434
+ "type": "uint256"
435
+ },
436
+ {
437
+ "internalType": "uint256",
438
+ "name": "highestBidBlock",
439
+ "type": "uint256"
440
+ },
441
+ {
442
+ "internalType": "uint256",
443
+ "name": "startBidBps",
444
+ "type": "uint256"
445
+ }
446
+ ],
447
+ "stateMutability": "view",
448
+ "type": "function"
449
+ },
450
+ {
451
+ "inputs": [],
452
+ "name": "auctionsPaused",
453
+ "outputs": [
454
+ {
455
+ "internalType": "bool",
456
+ "name": "",
457
+ "type": "bool"
458
+ }
459
+ ],
460
+ "stateMutability": "view",
461
+ "type": "function"
462
+ },
463
+ {
464
+ "inputs": [
465
+ {
466
+ "internalType": "address",
467
+ "name": "comptroller",
468
+ "type": "address"
469
+ }
470
+ ],
471
+ "name": "closeAuction",
472
+ "outputs": [],
473
+ "stateMutability": "nonpayable",
474
+ "type": "function"
475
+ },
476
+ {
477
+ "inputs": [],
478
+ "name": "convertibleBaseAsset",
479
+ "outputs": [
480
+ {
481
+ "internalType": "address",
482
+ "name": "",
483
+ "type": "address"
484
+ }
485
+ ],
486
+ "stateMutability": "view",
487
+ "type": "function"
488
+ },
489
+ {
490
+ "inputs": [
491
+ {
492
+ "internalType": "address",
493
+ "name": "convertibleBaseAsset_",
494
+ "type": "address"
495
+ },
496
+ {
497
+ "internalType": "contract IRiskFund",
498
+ "name": "riskFund_",
499
+ "type": "address"
500
+ },
501
+ {
502
+ "internalType": "uint256",
503
+ "name": "minimumPoolBadDebt_",
504
+ "type": "uint256"
505
+ },
506
+ {
507
+ "internalType": "address",
508
+ "name": "accessControlManager_",
509
+ "type": "address"
510
+ }
511
+ ],
512
+ "name": "initialize",
513
+ "outputs": [],
514
+ "stateMutability": "nonpayable",
515
+ "type": "function"
516
+ },
517
+ {
518
+ "inputs": [],
519
+ "name": "minimumPoolBadDebt",
520
+ "outputs": [
521
+ {
522
+ "internalType": "uint256",
523
+ "name": "",
524
+ "type": "uint256"
525
+ }
526
+ ],
527
+ "stateMutability": "view",
528
+ "type": "function"
529
+ },
530
+ {
531
+ "inputs": [],
532
+ "name": "nextBidderBlockLimit",
533
+ "outputs": [
534
+ {
535
+ "internalType": "uint256",
536
+ "name": "",
537
+ "type": "uint256"
538
+ }
539
+ ],
540
+ "stateMutability": "view",
541
+ "type": "function"
542
+ },
543
+ {
544
+ "inputs": [],
545
+ "name": "owner",
546
+ "outputs": [
547
+ {
548
+ "internalType": "address",
549
+ "name": "",
550
+ "type": "address"
551
+ }
552
+ ],
553
+ "stateMutability": "view",
554
+ "type": "function"
555
+ },
556
+ {
557
+ "inputs": [],
558
+ "name": "pauseAuctions",
559
+ "outputs": [],
560
+ "stateMutability": "nonpayable",
561
+ "type": "function"
562
+ },
563
+ {
564
+ "inputs": [],
565
+ "name": "pendingOwner",
566
+ "outputs": [
567
+ {
568
+ "internalType": "address",
569
+ "name": "",
570
+ "type": "address"
571
+ }
572
+ ],
573
+ "stateMutability": "view",
574
+ "type": "function"
575
+ },
576
+ {
577
+ "inputs": [
578
+ {
579
+ "internalType": "address",
580
+ "name": "comptroller",
581
+ "type": "address"
582
+ },
583
+ {
584
+ "internalType": "uint256",
585
+ "name": "bidBps",
586
+ "type": "uint256"
587
+ }
588
+ ],
589
+ "name": "placeBid",
590
+ "outputs": [],
591
+ "stateMutability": "nonpayable",
592
+ "type": "function"
593
+ },
594
+ {
595
+ "inputs": [],
596
+ "name": "poolRegistry",
597
+ "outputs": [
598
+ {
599
+ "internalType": "address",
600
+ "name": "",
601
+ "type": "address"
602
+ }
603
+ ],
604
+ "stateMutability": "view",
605
+ "type": "function"
606
+ },
607
+ {
608
+ "inputs": [],
609
+ "name": "renounceOwnership",
610
+ "outputs": [],
611
+ "stateMutability": "nonpayable",
612
+ "type": "function"
613
+ },
614
+ {
615
+ "inputs": [
616
+ {
617
+ "internalType": "address",
618
+ "name": "comptroller",
619
+ "type": "address"
620
+ }
621
+ ],
622
+ "name": "restartAuction",
623
+ "outputs": [],
624
+ "stateMutability": "nonpayable",
625
+ "type": "function"
626
+ },
627
+ {
628
+ "inputs": [],
629
+ "name": "resumeAuctions",
630
+ "outputs": [],
631
+ "stateMutability": "nonpayable",
632
+ "type": "function"
633
+ },
634
+ {
635
+ "inputs": [
636
+ {
637
+ "internalType": "address",
638
+ "name": "accessControlManager_",
639
+ "type": "address"
640
+ }
641
+ ],
642
+ "name": "setAccessControlManager",
643
+ "outputs": [],
644
+ "stateMutability": "nonpayable",
645
+ "type": "function"
646
+ },
647
+ {
648
+ "inputs": [
649
+ {
650
+ "internalType": "address",
651
+ "name": "comptroller",
652
+ "type": "address"
653
+ }
654
+ ],
655
+ "name": "startAuction",
656
+ "outputs": [],
657
+ "stateMutability": "nonpayable",
658
+ "type": "function"
659
+ },
660
+ {
661
+ "inputs": [
662
+ {
663
+ "internalType": "address",
664
+ "name": "newOwner",
665
+ "type": "address"
666
+ }
667
+ ],
668
+ "name": "transferOwnership",
669
+ "outputs": [],
670
+ "stateMutability": "nonpayable",
671
+ "type": "function"
672
+ },
673
+ {
674
+ "inputs": [
675
+ {
676
+ "internalType": "uint256",
677
+ "name": "_incentiveBps",
678
+ "type": "uint256"
679
+ }
680
+ ],
681
+ "name": "updateIncentiveBps",
682
+ "outputs": [],
683
+ "stateMutability": "nonpayable",
684
+ "type": "function"
685
+ },
686
+ {
687
+ "inputs": [
688
+ {
689
+ "internalType": "uint256",
690
+ "name": "_minimumPoolBadDebt",
691
+ "type": "uint256"
692
+ }
693
+ ],
694
+ "name": "updateMinimumPoolBadDebt",
695
+ "outputs": [],
696
+ "stateMutability": "nonpayable",
697
+ "type": "function"
698
+ },
699
+ {
700
+ "inputs": [
701
+ {
702
+ "internalType": "uint256",
703
+ "name": "_nextBidderBlockLimit",
704
+ "type": "uint256"
705
+ }
706
+ ],
707
+ "name": "updateNextBidderBlockLimit",
708
+ "outputs": [],
709
+ "stateMutability": "nonpayable",
710
+ "type": "function"
711
+ },
712
+ {
713
+ "inputs": [
714
+ {
715
+ "internalType": "address",
716
+ "name": "poolRegistry_",
717
+ "type": "address"
718
+ }
719
+ ],
720
+ "name": "updatePoolRegistry",
721
+ "outputs": [],
722
+ "stateMutability": "nonpayable",
723
+ "type": "function"
724
+ },
725
+ {
726
+ "inputs": [
727
+ {
728
+ "internalType": "uint256",
729
+ "name": "_waitForFirstBidder",
730
+ "type": "uint256"
731
+ }
732
+ ],
733
+ "name": "updateWaitForFirstBidder",
734
+ "outputs": [],
735
+ "stateMutability": "nonpayable",
736
+ "type": "function"
737
+ },
738
+ {
739
+ "inputs": [],
740
+ "name": "waitForFirstBidder",
741
+ "outputs": [
742
+ {
743
+ "internalType": "uint256",
744
+ "name": "",
745
+ "type": "uint256"
746
+ }
747
+ ],
748
+ "stateMutability": "view",
749
+ "type": "function"
750
+ }
751
+ ],
752
+ "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b62000111565b600054610100900460ff1615620000565760405162461bcd60e51b81526004016200004d90620000af565b60405180910390fd5b60005460ff90811614620000ad576000805460ff191660ff9081179091556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249891620000a49162000101565b60405180910390a15b565b60208082528101620000fb81602781527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469602082015266616c697a696e6760c81b604082015260600190565b92915050565b60ff8216815260208101620000fb565b6134bf80620001216000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063892149a3116100de578063b4a0bdf311610097578063d98b9bb511610071578063d98b9bb514610378578063e30c39781461038b578063e630fee01461039c578063f2fde38b146103af57600080fd5b8063b4a0bdf314610338578063be20309414610351578063c8ecc0d31461036457600080fd5b8063892149a3146102cb5780638da5cb5b146102d557806391f8e694146102ef578063a23926e1146102f7578063ae8ddcb014610312578063afcff50f1461032557600080fd5b806351b2fd011161014b5780636f254c32116101255780636f254c321461029f578063715018a6146102b257806373d73f40146102ba57806379ba5097146102c357600080fd5b806351b2fd01146102715780635be3fe1b1461028457806367cd03ab1461028c57600080fd5b80630db011d0146101935780630e32cb86146101a85780631d59410a146101bb578063264ad3d4146102355780634075fa0f1461024b5780634b34e5661461025e575b600080fd5b6101a66101a1366004612343565b6103c2565b005b6101a66101b6366004612343565b6104b4565b6102186101c9366004612343565b610103602052600090815260409020805460018201546003830154600484015460058501546006860154600790960154949560ff8086169661010090960416946001600160a01b039093169288565b60405161022c9897969594939291906123ec565b60405180910390f35b61023e60fd5481565b60405161022c9190612463565b6101a6610259366004612343565b6104c8565b6101a661026c366004612343565b6104f5565b6101a661027f366004612482565b610a6a565b6101a6610ad1565b6101a661029a366004612482565b610b6a565b6101a66102ad366004612482565b610c02565b6101a6610c7d565b61023e60ff5481565b6101a6610c91565b61023e6101015481565b6033546001600160a01b03165b60405161022c91906124a3565b6101a6610cc6565b610100546103059060ff1681565b60405161022c91906124b9565b6101a6610320366004612343565b610d58565b60fb546102e2906001600160a01b031681565b6097546001600160a01b031660405161022c9190612502565b6101a661035f36600461252f565b610dbb565b610102546102e2906001600160a01b031681565b6101a6610386366004612593565b610f23565b6065546001600160a01b03166102e2565b6101a66103aa366004612482565b611460565b6101a66103bd366004612343565b6114bc565b6001600160a01b0381166000908152610103602052604090206101005460ff16156104085760405162461bcd60e51b81526004016103ff906125fd565b60405180910390fd5b6104118161152d565b61042d5760405162461bcd60e51b81526004016103ff90612637565b61043681611562565b6104525760405162461bcd60e51b81526004016103ff90612696565b60018101805461ff00191661020017905580546040516001600160a01b038416917faca104a4f0d6f116782afaefa8b644e86d53857ff9151824131b726b49a858d49161049f9190612463565b60405180910390a26104b082611596565b5050565b6104bc611c9f565b6104c581611cc9565b50565b6101005460ff16156104ec5760405162461bcd60e51b81526004016103ff906126d0565b6104c581611596565b6104fd611d42565b6001600160a01b03811660009081526101036020526040902061051f8161152d565b61053b5760405162461bcd60e51b81526004016103ff90612637565b60ff54816006015461054d91906126f6565b43118015610567575060048101546001600160a01b031615155b6105835760405162461bcd60e51b81526004016103ff90612758565b600281015460008167ffffffffffffffff8111156105a3576105a3612768565b6040519080825280602002602001820160405280156105cc578160200160208202803683370190505b5060018401805461ff001916610200179055905060005b828110156109175760008460020182815481106106025761060261277e565b600091825260208083209091015460408051636f307dc360e01b815290516001600160a01b0390921694508492636f307dc3926004808401938290030181865afa158015610654573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610678919061279f565b90506000816001600160a01b03166370a082318860020186815481106106a0576106a061277e565b6000918252602090912001546040516001600160e01b031960e084901b1681526106d6916001600160a01b0316906004016124a3565b602060405180830381865afa1580156106f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071791906127cb565b905061079e8760020185815481106107315761073161277e565b9060005260206000200160009054906101000a90046001600160a01b03168860090160008a600201888154811061076a5761076a61277e565b60009182526020808320909101546001600160a01b0390811684529083019390935260409091019020549085169190611d6b565b6000826001600160a01b03166370a082318960020187815481106107c4576107c461277e565b6000918252602090912001546040516001600160e01b031960e084901b1681526107fa916001600160a01b0316906004016124a3565b602060405180830381865afa158015610817573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083b91906127cb565b905061084782826127ec565b8686815181106108595761085961277e565b60200260200101818152505087600201858154811061087a5761087a61277e565b60009182526020909120015486516001600160a01b039091169063ef60450c908890889081106108ac576108ac61277e565b60200260200101516040518263ffffffff1660e01b81526004016108d09190612463565b600060405180830381600087803b1580156108ea57600080fd5b505af11580156108fe573d6000803e3d6000fd5b50505050505050508061091090612803565b90506105e3565b5060008060018086015460ff16908111156109345761093461236c565b0361094457506003830154610968565b6127108460050154856003015461095b919061281d565b6109659190612852565b90505b60fc54604051630a9837c560e01b81526000916001600160a01b031690630a9837c59061099b9089908690600401612866565b6020604051808303816000875af11580156109ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109de91906127cb565b600486015461010254919250610a01916001600160a01b03908116911684611d6b565b6004850154855460058701546040516001600160a01b03938416938a16927ff50338be3ffa7cdbebca76c758cfd1745fb4abe5bd3736c2dbf0cc6483a7b93f92610a5392879060028d01908b90612949565b60405180910390a350505050506104c5600160c955565b610a8b60405180606001604052806021815260200161342560219139611dcd565b60fd8054908290556040517f85814f0246fcd999c88af70c9e6238211e79444ff07ec745b80aed19ddb268c890610ac59083908590612997565b60405180910390a15050565b610b026040518060400160405280601081526020016f726573756d6541756374696f6e73282960801b815250611dcd565b6101005460ff16610b255760405162461bcd60e51b81526004016103ff906129d9565b610100805460ff191690556040517f91b812e075fb9190eebe2d938c00a7179d150156469a467ec60a290035f4635a90610b609033906124a3565b60405180910390a1565b610ba86040518060400160405280601b81526020017f757064617465496e63656e746976654270732875696e74323536290000000000815250611dcd565b80600003610bc85760405162461bcd60e51b81526004016103ff90612a1d565b60fe8054908290556040517f3d438fa36c5052935d12a6925d1660c8150c74ef11ca672d4279bc6fd41b8bcf90610ac59083908590612997565b610c2360405180606001604052806023815260200161344660239139611dcd565b80600003610c435760405162461bcd60e51b81526004016103ff90612a6d565b60ff8054908290556040517f3f22dba09ee9845bd2be6926fea5337a0db935ca059cbb205d62174783e2966490610ac59083908590612997565b610c85611c9f565b610c8f6000611e67565b565b60655433906001600160a01b03168114610cbd5760405162461bcd60e51b81526004016103ff90612ac3565b6104c581611e67565b610cf66040518060400160405280600f81526020016e706175736541756374696f6e73282960881b815250611dcd565b6101005460ff1615610d1a5760405162461bcd60e51b81526004016103ff90612b07565b610100805460ff191660011790556040517fc1be5163c9ebecf05bfbd6c6ae7c2b6ce2d3c43088dffaf5270cbf951615049990610b609033906124a3565b610d60611c9f565b610d6981611e80565b60fb80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907fa87b964d321035d2165e484ff4b722dd6eae30606c0b98887d2ed1a34e594bfe90600090a35050565b600054610100900460ff1615808015610ddb5750600054600160ff909116105b80610df55750303b158015610df5575060005460ff166001145b610e115760405162461bcd60e51b81526004016103ff90612b62565b6000805460ff191660011790558015610e34576000805461ff0019166101001790555b610e3d85611e80565b610e4684611e80565b82600003610e665760405162461bcd60e51b81526004016103ff90612ba6565b610e6e611ea7565b610e7782611ed6565b610e7f611efd565b60fd83905561010280546001600160a01b038088166001600160a01b03199283161790925560fc805492871692909116919091179055606461010181905560ff556103e860fe55610100805460ff191690558015610f1c576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890610f1390600190612bca565b60405180910390a15b5050505050565b610f2b611d42565b6001600160a01b038216600090815261010360205260409020610f4d8161152d565b610f695760405162461bcd60e51b81526004016103ff90612637565b610f7281611562565b15610f8f5760405162461bcd60e51b81526004016103ff90612c0c565b612710821115610fb15760405162461bcd60e51b81526004016103ff90612c5f565b600060018083015460ff1690811115610fcc57610fcc61236c565b148015611018575060048101546001600160a01b031615801590610ff35750806005015482115b80611018575060048101546001600160a01b0316158015611018575080600701548210155b80611083575060018181015460ff16818111156110375761103761236c565b148015611083575060048101546001600160a01b03161580159061105e5750806005015482105b80611083575060048101546001600160a01b0316158015611083575080600701548211155b61109f5760405162461bcd60e51b81526004016103ff90612ca3565b600281015460005b818110156113e95760008360020182815481106110c6576110c661277e565b600091825260208083209091015460408051636f307dc360e01b815290516001600160a01b0390921694508492636f307dc3926004808401938290030181865afa158015611118573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113c919061279f565b60048601549091506001600160a01b0316156111b85760048501546002860180546111b8926001600160a01b031691600989019160009190889081106111845761118461277e565b60009182526020808320909101546001600160a01b0390811684529083019390935260409091019020549084169190611d6b565b6040516370a0823160e01b81526000906001600160a01b038316906370a08231906111e79030906004016124a3565b602060405180830381865afa158015611204573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122891906127cb565b9050600060018088015460ff16908111156112455761124561236c565b036112c1576000612710888860080160008a600201898154811061126b5761126b61277e565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461129a919061281d565b6112a49190612852565b90506112bb6001600160a01b038416333084611f2c565b50611316565b61131633308860080160008a60020189815481106112e1576112e161277e565b60009182526020808320909101546001600160a01b039081168452908301939093526040909101902054908616929190611f2c565b6040516370a0823160e01b81526000906001600160a01b038416906370a08231906113459030906004016124a3565b602060405180830381865afa158015611362573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138691906127cb565b905061139282826127ec565b8760090160008960020188815481106113ad576113ad61277e565b60009182526020808320909101546001600160a01b03168352820192909252604001902055506113e292508391506128039050565b90506110a7565b506004820180546001600160a01b031916339081179091556005830184905543600684015582546040516001600160a01b038716917f5485cf82060404805b51f48c0c4afa3cec4a9e5755c0131e1243553f0eebb9a39161144c91908890612997565b60405180910390a350506104b0600160c955565b61148160405180606001604052806021815260200161346960219139611dcd565b6101018054908290556040517f2a5be8a6b827e16c392d22522295794d6baff64565057a17b1f14c9d6c125a6090610ac59083908590612997565b6114c4611c9f565b606580546001600160a01b0383166001600160a01b031990911681179091556114f56033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b80546000901580159061155c5750600180830154610100900460ff16600281111561155a5761155a61236c565b145b92915050565b60048101546000906001600160a01b03161580801561158f575061010154835461158c91906126f6565b43115b9392505050565b60fb54604051637aee632d60e01b81526000916001600160a01b031690637aee632d906115c79085906004016124a3565b600060405180830381865afa1580156115e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261160c9190810190612e54565b9050816001600160a01b031681604001516001600160a01b0316146116435760405162461bcd60e51b81526004016103ff90612ed3565b6001600160a01b0382166000908152610103602052604090208054158015611688575060006001820154610100900460ff1660028111156116865761168661236c565b145b806116b0575060026001820154610100900460ff1660028111156116ae576116ae61236c565b145b6116cc5760405162461bcd60e51b81526004016103ff90612f0d565b600060058201819055600682018190556002820154905b818110156117375760008360020182815481106117025761170261277e565b60009182526020808320909101546001600160a01b0316825260088601905260408120555061173081612803565b90506116e3565b5061174660028301600061227b565b600061175185611f53565b905080519150600061176286611fbb565b90506000808467ffffffffffffffff81111561178057611780612768565b6040519080825280602002602001820160405280156117a9578160200160208202803683370190505b5090508467ffffffffffffffff8111156117c5576117c5612768565b6040519080825280602002602001820160405280156117ee578160200160208202803683370190505b508051611805916002890191602090910190612299565b5060005b85811015611a8f5760008582815181106118255761182561277e565b60200260200101516001600160a01b031663bbcac5576040518163ffffffff1660e01b8152600401602060405180830381865afa15801561186a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188e91906127cb565b9050846001600160a01b03166396e85ced8784815181106118b1576118b161277e565b60200260200101516040518263ffffffff1660e01b81526004016118d591906124a3565b600060405180830381600087803b1580156118ef57600080fd5b505af1158015611903573d6000803e3d6000fd5b505050506000670de0b6b3a764000082876001600160a01b031663fc57d4df8a87815181106119345761193461277e565b60200260200101516040518263ffffffff1660e01b815260040161195891906124a3565b602060405180830381865afa158015611975573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199991906127cb565b6119a3919061281d565b6119ad9190612852565b90506119b981866126f6565b94508683815181106119cd576119cd61277e565b60200260200101518960020184815481106119ea576119ea61277e565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081896008016000898681518110611a3157611a3161277e565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000208190555081848481518110611a7057611a7061277e565b602002602001018181525050505080611a8890612803565b9050611809565b5060fd54821015611ab25760405162461bcd60e51b81526004016103ff90612f51565b60fc5460405163f481395b60e01b81526000916001600160a01b03169063f481395b90611ae3908c906004016124a3565b602060405180830381865afa158015611b00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2491906127cb565b90506000819050600061271060fe5486611b3e919061281d565b611b489190612852565b611b5290866126f6565b9050828110611baf5760fe54611b6a906127106126f6565b611b74908661281d565b82611b816127108061281d565b611b8b919061281d565b611b959190612852565b60078a015560018901805460ff1916905560009150611bd6565b80611bba81846127ec565b60018b8101805460ff1916909117905561271060078c01559250505b611be082846127ec565b60038a01554389556001808a01805461ff00191661010083021790555060008960040160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a6001600160a01b03167f56c1f0c5ea96c78d614c0246b1915086a325f09ce15526bd5d69b50232d681328a600001548b60010160009054906101000a900460ff168c600201888e600301548f60070154604051611c8a96959493929190612f61565b60405180910390a25050505050505050505050565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b81526004016103ff90612ff0565b6001600160a01b038116611cef5760405162461bcd60e51b81526004016103ff90613042565b609780546001600160a01b038381166001600160a01b03198316179092556040519116907f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa090610ac59083908590613052565b600260c95403611d645760405162461bcd60e51b81526004016103ff906130a1565b600260c955565b611dc18363a9059cbb60e01b8484604051602401611d8a929190612866565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261201f565b505050565b600160c955565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab90611e0090339086906004016130e3565b602060405180830381865afa158015611e1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e419190613116565b9050806104b057333083604051634a3fa29360e01b81526004016103ff93929190613137565b606580546001600160a01b03191690556104c5816120b1565b6001600160a01b0381166104c5576040516342bcdf7f60e11b815260040160405180910390fd5b600054610100900460ff16611ece5760405162461bcd60e51b81526004016103ff906131b5565b610c8f612103565b600054610100900460ff166104bc5760405162461bcd60e51b81526004016103ff906131b5565b600054610100900460ff16611f245760405162461bcd60e51b81526004016103ff906131b5565b610c8f612133565b611f4d846323b872dd60e01b858585604051602401611d8a939291906131c5565b50505050565b6060816001600160a01b031663b0772d0b6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611f93573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261155c919081019061329b565b6000816001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155c91906132d6565b6000612074826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661215a9092919063ffffffff16565b90508051600014806120955750808060200190518101906120959190613116565b611dc15760405162461bcd60e51b81526004016103ff9061333e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1661212a5760405162461bcd60e51b81526004016103ff906131b5565b610c8f33611e67565b600054610100900460ff16611dc65760405162461bcd60e51b81526004016103ff906131b5565b60606121698484600085612171565b949350505050565b6060824710156121935760405162461bcd60e51b81526004016103ff90613391565b600080866001600160a01b031685876040516121af91906133c3565b60006040518083038185875af1925050503d80600081146121ec576040519150601f19603f3d011682016040523d82523d6000602084013e6121f1565b606091505b50915091506122028783838761220d565b979650505050505050565b6060831561224c578251600003612245576001600160a01b0385163b6122455760405162461bcd60e51b81526004016103ff90613403565b5081612169565b61216983838151156122615781518083602001fd5b8060405162461bcd60e51b81526004016103ff9190613413565b50805460008255906000526020600020908101906104c591906122fe565b8280548282559060005260206000209081019282156122ee579160200282015b828111156122ee57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906122b9565b506122fa9291506122fe565b5090565b5b808211156122fa57600081556001016122ff565b60006001600160a01b03821661155c565b61232d81612313565b81146104c557600080fd5b803561155c81612324565b60006020828403121561235857612358600080fd5b60006121698484612338565b805b82525050565b634e487b7160e01b600052602160045260246000fd5b600281106104c5576104c561236c565b8061239c81612382565b919050565b600061155c82612392565b612366816123a1565b600381106104c5576104c561236c565b8061239c816123b5565b600061155c826123c5565b612366816123cf565b61236681612313565b61010081016123fb828b612364565b612408602083018a6123ac565b61241560408301896123da565b6124226060830188612364565b61242f60808301876123e3565b61243c60a0830186612364565b61244960c0830185612364565b61245660e0830184612364565b9998505050505050505050565b6020810161155c8284612364565b8061232d565b803561155c81612471565b60006020828403121561249757612497600080fd5b60006121698484612477565b6020810161155c82846123e3565b801515612366565b6020810161155c82846124b1565b600061155c6001600160a01b0383165b6001600160a01b031690565b600061155c826124c7565b600061155c826124e3565b612366816124ee565b6020810161155c82846124f9565b600061155c82612313565b61232d81612510565b803561155c8161251b565b6000806000806080858703121561254857612548600080fd5b60006125548787612338565b945050602061256587828801612524565b935050604061257687828801612477565b925050606061258787828801612338565b91505092959194509250565b600080604083850312156125a9576125a9600080fd5b60006125b58585612338565b92505060206125c685828601612477565b9150509250929050565b6013815260006020820172185d58dd1a5bdb9cc8185c99481c185d5cd959606a1b815291505b5060200190565b6020808252810161155c816125d0565b601381526000602082017237379037b716b3b7b4b7339030bab1ba34b7b760691b815291506125f6565b6020808252810161155c8161260d565b602f81526000602082017f796f75206e65656420746f207761697420666f72206d6f72652074696d65206681526e37b9103334b939ba103134b23232b960891b602082015291505b5060400190565b6020808252810161155c81612647565b6013815260006020820172105d58dd1a5bdb9cc8185c99481c185d5cd959606a1b815291506125f6565b6020808252810161155c816126a6565b634e487b7160e01b600052601160045260246000fd5b60008219821115612709576127096126e0565b500190565b602d81526000602082017f77616974696e6720666f72206e657874206269646465722e2063616e6e6f742081526c31b637b9b29030bab1ba34b7b760991b6020820152915061268f565b6020808252810161155c8161270e565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b805161155c81612324565b6000602082840312156127b4576127b4600080fd5b60006121698484612794565b805161155c81612471565b6000602082840312156127e0576127e0600080fd5b600061216984846127c0565b6000828210156127fe576127fe6126e0565b500390565b60006000198203612816576128166126e0565b5060010190565b6000816000190483118215151615612837576128376126e0565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826128615761286161283c565b500490565b6040810161287482856123e3565b61158f6020830184612364565b600061288d83836124f9565b505060200190565b600061155c826124d7565b600061155c8254612895565b60006128b6825490565b808452600083815260208082209501949081905b838110156128f4576128db826128a0565b6128e58882612881565b975050600191820191016128ca565b509495945050505050565b600061288d8383612364565b6000612915825190565b80845260209384019383018060005b838110156128f457815161293888826128ff565b975060208301925050600101612924565b60a081016129578288612364565b6129646020830187612364565b6129716040830186612364565b818103606083015261298381856128ac565b90508181036080830152612202818461290b565b604081016128748285612364565b601781526000602082017f41756374696f6e7320617265206e6f7420706175736564000000000000000000815291506125f6565b6020808252810161155c816129a5565b601a81526000602082017f696e63656e74697665427073206d757374206e6f742062652030000000000000815291506125f6565b6020808252810161155c816129e9565b602381526000602082017f5f6e657874426964646572426c6f636b4c696d6974206d757374206e6f74206281526206520360ec1b6020820152915061268f565b6020808252810161155c81612a2d565b602981526000602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b6020820152915061268f565b6020808252810161155c81612a7d565b601b81526000602082017f41756374696f6e732061726520616c7265616479207061757365640000000000815291506125f6565b6020808252810161155c81612ad3565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b6020820152915061268f565b6020808252810161155c81612b17565b601d81526000602082017f696e76616c6964206d696e696d756d20706f6f6c206261642064656274000000815291506125f6565b6020808252810161155c81612b72565b600060ff821661155c565b61236681612bb6565b6020810161155c8284612bc1565b601c81526000602082017f61756374696f6e206973207374616c652c207265737461727420697400000000815291506125f6565b6020808252810161155c81612bd8565b602681526000602082017f626173697320706f696e74732063616e6e6f74206265206d6f7265207468616e81526502031303030360d41b6020820152915061268f565b6020808252810161155c81612c1c565b601b81526000602082017f796f757220626964206973206e6f742074686520686967686573740000000000815291506125f6565b6020808252810161155c81612c6f565b601f19601f830116810181811067ffffffffffffffff82111715612cd957612cd9612768565b6040525050565b6000612ceb60405190565b905061239c8282612cb3565b600067ffffffffffffffff821115612d1157612d11612768565b601f19601f83011660200192915050565b60005b83811015612d3d578181015183820152602001612d25565b83811115611f4d5750506000910152565b6000612d61612d5c84612cf7565b612ce0565b905082815260208101848484011115612d7c57612d7c600080fd5b612d87848285612d22565b509392505050565b600082601f830112612da357612da3600080fd5b8151612169848260208601612d4e565b600060a08284031215612dc857612dc8600080fd5b612dd260a0612ce0565b825190915067ffffffffffffffff811115612def57612def600080fd5b612dfb84828501612d8f565b8252506020612e0c84848301612794565b6020830152506040612e2084828501612794565b6040830152506060612e34848285016127c0565b6060830152506080612e48848285016127c0565b60808301525092915050565b600060208284031215612e6957612e69600080fd5b815167ffffffffffffffff811115612e8357612e83600080fd5b61216984828501612db3565b602781526000602082017f636f6d7074726f6c6c657220646f65736e277420657869737420706f6f6c20728152666567697374727960c81b6020820152915061268f565b6020808252810161155c81612e8f565b601381526000602082017261756374696f6e206973206f6e2d676f696e6760681b815291506125f6565b6020808252810161155c81612ee3565b601881526000602082017f706f6f6c20626164206465627420697320746f6f206c6f770000000000000000815291506125f6565b6020808252810161155c81612f1d565b60c08101612f6f8289612364565b612f7c60208301886123ac565b8181036040830152612f8e81876128ac565b90508181036060830152612fa2818661290b565b9050612fb16080830185612364565b61220260a0830184612364565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572910190815260006125f6565b6020808252810161155c81612fbe565b602581526000602082017f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164815264647265737360d81b6020820152915061268f565b6020808252810161155c81613000565b6040810161306082856123e3565b61158f60208301846123e3565b601f81526000602082017f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00815291506125f6565b6020808252810161155c8161306d565b60006130bb825190565b8084526020840193506130d2818560208601612d22565b601f01601f19169290920192915050565b604081016130f182856123e3565b818103602083015261216981846130b1565b80151561232d565b805161155c81613103565b60006020828403121561312b5761312b600080fd5b6000612169848461310b565b6060810161314582866123e3565b61315260208301856123e3565b818103604083015261316481846130b1565b95945050505050565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b6020820152915061268f565b6020808252810161155c8161316d565b606081016131d382866123e3565b6131e060208301856123e3565b6121696040830184612364565b600067ffffffffffffffff82111561320757613207612768565b5060209081020190565b805161155c8161251b565b600061322a612d5c846131ed565b8381529050602080820190840283018581111561324957613249600080fd5b835b8181101561326d578061325e8882613211565b8452506020928301920161324b565b5050509392505050565b600082601f83011261328b5761328b600080fd5b815161216984826020860161321c565b6000602082840312156132b0576132b0600080fd5b815167ffffffffffffffff8111156132ca576132ca600080fd5b61216984828501613277565b6000602082840312156132eb576132eb600080fd5b60006121698484613211565b602a81526000602082017f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b6020820152915061268f565b6020808252810161155c816132f7565b602681526000602082017f416464726573733a20696e73756666696369656e742062616c616e636520666f8152651c8818d85b1b60d21b6020820152915061268f565b6020808252810161155c8161334e565b60006133ab825190565b6133b9818560208601612d22565b9290920192915050565b600061158f82846133a1565b601d81526000602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000815291506125f6565b6020808252810161155c816133cf565b6020808252810161158f81846130b156fe7570646174654d696e696d756d506f6f6c426164446562742875696e74323536297570646174654e657874426964646572426c6f636b4c696d69742875696e743235362975706461746557616974466f7246697273744269646465722875696e7432353629a2646970667358221220b33cd5803f512b4aecaef51b08df7683edc7a7ee7846760d31ff2e751dabc26b64736f6c634300080d0033",
753
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061018e5760003560e01c8063892149a3116100de578063b4a0bdf311610097578063d98b9bb511610071578063d98b9bb514610378578063e30c39781461038b578063e630fee01461039c578063f2fde38b146103af57600080fd5b8063b4a0bdf314610338578063be20309414610351578063c8ecc0d31461036457600080fd5b8063892149a3146102cb5780638da5cb5b146102d557806391f8e694146102ef578063a23926e1146102f7578063ae8ddcb014610312578063afcff50f1461032557600080fd5b806351b2fd011161014b5780636f254c32116101255780636f254c321461029f578063715018a6146102b257806373d73f40146102ba57806379ba5097146102c357600080fd5b806351b2fd01146102715780635be3fe1b1461028457806367cd03ab1461028c57600080fd5b80630db011d0146101935780630e32cb86146101a85780631d59410a146101bb578063264ad3d4146102355780634075fa0f1461024b5780634b34e5661461025e575b600080fd5b6101a66101a1366004612343565b6103c2565b005b6101a66101b6366004612343565b6104b4565b6102186101c9366004612343565b610103602052600090815260409020805460018201546003830154600484015460058501546006860154600790960154949560ff8086169661010090960416946001600160a01b039093169288565b60405161022c9897969594939291906123ec565b60405180910390f35b61023e60fd5481565b60405161022c9190612463565b6101a6610259366004612343565b6104c8565b6101a661026c366004612343565b6104f5565b6101a661027f366004612482565b610a6a565b6101a6610ad1565b6101a661029a366004612482565b610b6a565b6101a66102ad366004612482565b610c02565b6101a6610c7d565b61023e60ff5481565b6101a6610c91565b61023e6101015481565b6033546001600160a01b03165b60405161022c91906124a3565b6101a6610cc6565b610100546103059060ff1681565b60405161022c91906124b9565b6101a6610320366004612343565b610d58565b60fb546102e2906001600160a01b031681565b6097546001600160a01b031660405161022c9190612502565b6101a661035f36600461252f565b610dbb565b610102546102e2906001600160a01b031681565b6101a6610386366004612593565b610f23565b6065546001600160a01b03166102e2565b6101a66103aa366004612482565b611460565b6101a66103bd366004612343565b6114bc565b6001600160a01b0381166000908152610103602052604090206101005460ff16156104085760405162461bcd60e51b81526004016103ff906125fd565b60405180910390fd5b6104118161152d565b61042d5760405162461bcd60e51b81526004016103ff90612637565b61043681611562565b6104525760405162461bcd60e51b81526004016103ff90612696565b60018101805461ff00191661020017905580546040516001600160a01b038416917faca104a4f0d6f116782afaefa8b644e86d53857ff9151824131b726b49a858d49161049f9190612463565b60405180910390a26104b082611596565b5050565b6104bc611c9f565b6104c581611cc9565b50565b6101005460ff16156104ec5760405162461bcd60e51b81526004016103ff906126d0565b6104c581611596565b6104fd611d42565b6001600160a01b03811660009081526101036020526040902061051f8161152d565b61053b5760405162461bcd60e51b81526004016103ff90612637565b60ff54816006015461054d91906126f6565b43118015610567575060048101546001600160a01b031615155b6105835760405162461bcd60e51b81526004016103ff90612758565b600281015460008167ffffffffffffffff8111156105a3576105a3612768565b6040519080825280602002602001820160405280156105cc578160200160208202803683370190505b5060018401805461ff001916610200179055905060005b828110156109175760008460020182815481106106025761060261277e565b600091825260208083209091015460408051636f307dc360e01b815290516001600160a01b0390921694508492636f307dc3926004808401938290030181865afa158015610654573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610678919061279f565b90506000816001600160a01b03166370a082318860020186815481106106a0576106a061277e565b6000918252602090912001546040516001600160e01b031960e084901b1681526106d6916001600160a01b0316906004016124a3565b602060405180830381865afa1580156106f3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071791906127cb565b905061079e8760020185815481106107315761073161277e565b9060005260206000200160009054906101000a90046001600160a01b03168860090160008a600201888154811061076a5761076a61277e565b60009182526020808320909101546001600160a01b0390811684529083019390935260409091019020549085169190611d6b565b6000826001600160a01b03166370a082318960020187815481106107c4576107c461277e565b6000918252602090912001546040516001600160e01b031960e084901b1681526107fa916001600160a01b0316906004016124a3565b602060405180830381865afa158015610817573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061083b91906127cb565b905061084782826127ec565b8686815181106108595761085961277e565b60200260200101818152505087600201858154811061087a5761087a61277e565b60009182526020909120015486516001600160a01b039091169063ef60450c908890889081106108ac576108ac61277e565b60200260200101516040518263ffffffff1660e01b81526004016108d09190612463565b600060405180830381600087803b1580156108ea57600080fd5b505af11580156108fe573d6000803e3d6000fd5b50505050505050508061091090612803565b90506105e3565b5060008060018086015460ff16908111156109345761093461236c565b0361094457506003830154610968565b6127108460050154856003015461095b919061281d565b6109659190612852565b90505b60fc54604051630a9837c560e01b81526000916001600160a01b031690630a9837c59061099b9089908690600401612866565b6020604051808303816000875af11580156109ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109de91906127cb565b600486015461010254919250610a01916001600160a01b03908116911684611d6b565b6004850154855460058701546040516001600160a01b03938416938a16927ff50338be3ffa7cdbebca76c758cfd1745fb4abe5bd3736c2dbf0cc6483a7b93f92610a5392879060028d01908b90612949565b60405180910390a350505050506104c5600160c955565b610a8b60405180606001604052806021815260200161342560219139611dcd565b60fd8054908290556040517f85814f0246fcd999c88af70c9e6238211e79444ff07ec745b80aed19ddb268c890610ac59083908590612997565b60405180910390a15050565b610b026040518060400160405280601081526020016f726573756d6541756374696f6e73282960801b815250611dcd565b6101005460ff16610b255760405162461bcd60e51b81526004016103ff906129d9565b610100805460ff191690556040517f91b812e075fb9190eebe2d938c00a7179d150156469a467ec60a290035f4635a90610b609033906124a3565b60405180910390a1565b610ba86040518060400160405280601b81526020017f757064617465496e63656e746976654270732875696e74323536290000000000815250611dcd565b80600003610bc85760405162461bcd60e51b81526004016103ff90612a1d565b60fe8054908290556040517f3d438fa36c5052935d12a6925d1660c8150c74ef11ca672d4279bc6fd41b8bcf90610ac59083908590612997565b610c2360405180606001604052806023815260200161344660239139611dcd565b80600003610c435760405162461bcd60e51b81526004016103ff90612a6d565b60ff8054908290556040517f3f22dba09ee9845bd2be6926fea5337a0db935ca059cbb205d62174783e2966490610ac59083908590612997565b610c85611c9f565b610c8f6000611e67565b565b60655433906001600160a01b03168114610cbd5760405162461bcd60e51b81526004016103ff90612ac3565b6104c581611e67565b610cf66040518060400160405280600f81526020016e706175736541756374696f6e73282960881b815250611dcd565b6101005460ff1615610d1a5760405162461bcd60e51b81526004016103ff90612b07565b610100805460ff191660011790556040517fc1be5163c9ebecf05bfbd6c6ae7c2b6ce2d3c43088dffaf5270cbf951615049990610b609033906124a3565b610d60611c9f565b610d6981611e80565b60fb80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907fa87b964d321035d2165e484ff4b722dd6eae30606c0b98887d2ed1a34e594bfe90600090a35050565b600054610100900460ff1615808015610ddb5750600054600160ff909116105b80610df55750303b158015610df5575060005460ff166001145b610e115760405162461bcd60e51b81526004016103ff90612b62565b6000805460ff191660011790558015610e34576000805461ff0019166101001790555b610e3d85611e80565b610e4684611e80565b82600003610e665760405162461bcd60e51b81526004016103ff90612ba6565b610e6e611ea7565b610e7782611ed6565b610e7f611efd565b60fd83905561010280546001600160a01b038088166001600160a01b03199283161790925560fc805492871692909116919091179055606461010181905560ff556103e860fe55610100805460ff191690558015610f1c576000805461ff00191690556040517f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249890610f1390600190612bca565b60405180910390a15b5050505050565b610f2b611d42565b6001600160a01b038216600090815261010360205260409020610f4d8161152d565b610f695760405162461bcd60e51b81526004016103ff90612637565b610f7281611562565b15610f8f5760405162461bcd60e51b81526004016103ff90612c0c565b612710821115610fb15760405162461bcd60e51b81526004016103ff90612c5f565b600060018083015460ff1690811115610fcc57610fcc61236c565b148015611018575060048101546001600160a01b031615801590610ff35750806005015482115b80611018575060048101546001600160a01b0316158015611018575080600701548210155b80611083575060018181015460ff16818111156110375761103761236c565b148015611083575060048101546001600160a01b03161580159061105e5750806005015482105b80611083575060048101546001600160a01b0316158015611083575080600701548211155b61109f5760405162461bcd60e51b81526004016103ff90612ca3565b600281015460005b818110156113e95760008360020182815481106110c6576110c661277e565b600091825260208083209091015460408051636f307dc360e01b815290516001600160a01b0390921694508492636f307dc3926004808401938290030181865afa158015611118573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113c919061279f565b60048601549091506001600160a01b0316156111b85760048501546002860180546111b8926001600160a01b031691600989019160009190889081106111845761118461277e565b60009182526020808320909101546001600160a01b0390811684529083019390935260409091019020549084169190611d6b565b6040516370a0823160e01b81526000906001600160a01b038316906370a08231906111e79030906004016124a3565b602060405180830381865afa158015611204573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122891906127cb565b9050600060018088015460ff16908111156112455761124561236c565b036112c1576000612710888860080160008a600201898154811061126b5761126b61277e565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461129a919061281d565b6112a49190612852565b90506112bb6001600160a01b038416333084611f2c565b50611316565b61131633308860080160008a60020189815481106112e1576112e161277e565b60009182526020808320909101546001600160a01b039081168452908301939093526040909101902054908616929190611f2c565b6040516370a0823160e01b81526000906001600160a01b038416906370a08231906113459030906004016124a3565b602060405180830381865afa158015611362573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138691906127cb565b905061139282826127ec565b8760090160008960020188815481106113ad576113ad61277e565b60009182526020808320909101546001600160a01b03168352820192909252604001902055506113e292508391506128039050565b90506110a7565b506004820180546001600160a01b031916339081179091556005830184905543600684015582546040516001600160a01b038716917f5485cf82060404805b51f48c0c4afa3cec4a9e5755c0131e1243553f0eebb9a39161144c91908890612997565b60405180910390a350506104b0600160c955565b61148160405180606001604052806021815260200161346960219139611dcd565b6101018054908290556040517f2a5be8a6b827e16c392d22522295794d6baff64565057a17b1f14c9d6c125a6090610ac59083908590612997565b6114c4611c9f565b606580546001600160a01b0383166001600160a01b031990911681179091556114f56033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b80546000901580159061155c5750600180830154610100900460ff16600281111561155a5761155a61236c565b145b92915050565b60048101546000906001600160a01b03161580801561158f575061010154835461158c91906126f6565b43115b9392505050565b60fb54604051637aee632d60e01b81526000916001600160a01b031690637aee632d906115c79085906004016124a3565b600060405180830381865afa1580156115e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261160c9190810190612e54565b9050816001600160a01b031681604001516001600160a01b0316146116435760405162461bcd60e51b81526004016103ff90612ed3565b6001600160a01b0382166000908152610103602052604090208054158015611688575060006001820154610100900460ff1660028111156116865761168661236c565b145b806116b0575060026001820154610100900460ff1660028111156116ae576116ae61236c565b145b6116cc5760405162461bcd60e51b81526004016103ff90612f0d565b600060058201819055600682018190556002820154905b818110156117375760008360020182815481106117025761170261277e565b60009182526020808320909101546001600160a01b0316825260088601905260408120555061173081612803565b90506116e3565b5061174660028301600061227b565b600061175185611f53565b905080519150600061176286611fbb565b90506000808467ffffffffffffffff81111561178057611780612768565b6040519080825280602002602001820160405280156117a9578160200160208202803683370190505b5090508467ffffffffffffffff8111156117c5576117c5612768565b6040519080825280602002602001820160405280156117ee578160200160208202803683370190505b508051611805916002890191602090910190612299565b5060005b85811015611a8f5760008582815181106118255761182561277e565b60200260200101516001600160a01b031663bbcac5576040518163ffffffff1660e01b8152600401602060405180830381865afa15801561186a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188e91906127cb565b9050846001600160a01b03166396e85ced8784815181106118b1576118b161277e565b60200260200101516040518263ffffffff1660e01b81526004016118d591906124a3565b600060405180830381600087803b1580156118ef57600080fd5b505af1158015611903573d6000803e3d6000fd5b505050506000670de0b6b3a764000082876001600160a01b031663fc57d4df8a87815181106119345761193461277e565b60200260200101516040518263ffffffff1660e01b815260040161195891906124a3565b602060405180830381865afa158015611975573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061199991906127cb565b6119a3919061281d565b6119ad9190612852565b90506119b981866126f6565b94508683815181106119cd576119cd61277e565b60200260200101518960020184815481106119ea576119ea61277e565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555081896008016000898681518110611a3157611a3161277e565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000208190555081848481518110611a7057611a7061277e565b602002602001018181525050505080611a8890612803565b9050611809565b5060fd54821015611ab25760405162461bcd60e51b81526004016103ff90612f51565b60fc5460405163f481395b60e01b81526000916001600160a01b03169063f481395b90611ae3908c906004016124a3565b602060405180830381865afa158015611b00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2491906127cb565b90506000819050600061271060fe5486611b3e919061281d565b611b489190612852565b611b5290866126f6565b9050828110611baf5760fe54611b6a906127106126f6565b611b74908661281d565b82611b816127108061281d565b611b8b919061281d565b611b959190612852565b60078a015560018901805460ff1916905560009150611bd6565b80611bba81846127ec565b60018b8101805460ff1916909117905561271060078c01559250505b611be082846127ec565b60038a01554389556001808a01805461ff00191661010083021790555060008960040160006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a6001600160a01b03167f56c1f0c5ea96c78d614c0246b1915086a325f09ce15526bd5d69b50232d681328a600001548b60010160009054906101000a900460ff168c600201888e600301548f60070154604051611c8a96959493929190612f61565b60405180910390a25050505050505050505050565b6033546001600160a01b03163314610c8f5760405162461bcd60e51b81526004016103ff90612ff0565b6001600160a01b038116611cef5760405162461bcd60e51b81526004016103ff90613042565b609780546001600160a01b038381166001600160a01b03198316179092556040519116907f66fd58e82f7b31a2a5c30e0888f3093efe4e111b00cd2b0c31fe014601293aa090610ac59083908590613052565b600260c95403611d645760405162461bcd60e51b81526004016103ff906130a1565b600260c955565b611dc18363a9059cbb60e01b8484604051602401611d8a929190612866565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261201f565b505050565b600160c955565b6097546040516318c5e8ab60e01b81526000916001600160a01b0316906318c5e8ab90611e0090339086906004016130e3565b602060405180830381865afa158015611e1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e419190613116565b9050806104b057333083604051634a3fa29360e01b81526004016103ff93929190613137565b606580546001600160a01b03191690556104c5816120b1565b6001600160a01b0381166104c5576040516342bcdf7f60e11b815260040160405180910390fd5b600054610100900460ff16611ece5760405162461bcd60e51b81526004016103ff906131b5565b610c8f612103565b600054610100900460ff166104bc5760405162461bcd60e51b81526004016103ff906131b5565b600054610100900460ff16611f245760405162461bcd60e51b81526004016103ff906131b5565b610c8f612133565b611f4d846323b872dd60e01b858585604051602401611d8a939291906131c5565b50505050565b6060816001600160a01b031663b0772d0b6040518163ffffffff1660e01b8152600401600060405180830381865afa158015611f93573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261155c919081019061329b565b6000816001600160a01b0316637dc0d1d06040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155c91906132d6565b6000612074826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661215a9092919063ffffffff16565b90508051600014806120955750808060200190518101906120959190613116565b611dc15760405162461bcd60e51b81526004016103ff9061333e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1661212a5760405162461bcd60e51b81526004016103ff906131b5565b610c8f33611e67565b600054610100900460ff16611dc65760405162461bcd60e51b81526004016103ff906131b5565b60606121698484600085612171565b949350505050565b6060824710156121935760405162461bcd60e51b81526004016103ff90613391565b600080866001600160a01b031685876040516121af91906133c3565b60006040518083038185875af1925050503d80600081146121ec576040519150601f19603f3d011682016040523d82523d6000602084013e6121f1565b606091505b50915091506122028783838761220d565b979650505050505050565b6060831561224c578251600003612245576001600160a01b0385163b6122455760405162461bcd60e51b81526004016103ff90613403565b5081612169565b61216983838151156122615781518083602001fd5b8060405162461bcd60e51b81526004016103ff9190613413565b50805460008255906000526020600020908101906104c591906122fe565b8280548282559060005260206000209081019282156122ee579160200282015b828111156122ee57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906122b9565b506122fa9291506122fe565b5090565b5b808211156122fa57600081556001016122ff565b60006001600160a01b03821661155c565b61232d81612313565b81146104c557600080fd5b803561155c81612324565b60006020828403121561235857612358600080fd5b60006121698484612338565b805b82525050565b634e487b7160e01b600052602160045260246000fd5b600281106104c5576104c561236c565b8061239c81612382565b919050565b600061155c82612392565b612366816123a1565b600381106104c5576104c561236c565b8061239c816123b5565b600061155c826123c5565b612366816123cf565b61236681612313565b61010081016123fb828b612364565b612408602083018a6123ac565b61241560408301896123da565b6124226060830188612364565b61242f60808301876123e3565b61243c60a0830186612364565b61244960c0830185612364565b61245660e0830184612364565b9998505050505050505050565b6020810161155c8284612364565b8061232d565b803561155c81612471565b60006020828403121561249757612497600080fd5b60006121698484612477565b6020810161155c82846123e3565b801515612366565b6020810161155c82846124b1565b600061155c6001600160a01b0383165b6001600160a01b031690565b600061155c826124c7565b600061155c826124e3565b612366816124ee565b6020810161155c82846124f9565b600061155c82612313565b61232d81612510565b803561155c8161251b565b6000806000806080858703121561254857612548600080fd5b60006125548787612338565b945050602061256587828801612524565b935050604061257687828801612477565b925050606061258787828801612338565b91505092959194509250565b600080604083850312156125a9576125a9600080fd5b60006125b58585612338565b92505060206125c685828601612477565b9150509250929050565b6013815260006020820172185d58dd1a5bdb9cc8185c99481c185d5cd959606a1b815291505b5060200190565b6020808252810161155c816125d0565b601381526000602082017237379037b716b3b7b4b7339030bab1ba34b7b760691b815291506125f6565b6020808252810161155c8161260d565b602f81526000602082017f796f75206e65656420746f207761697420666f72206d6f72652074696d65206681526e37b9103334b939ba103134b23232b960891b602082015291505b5060400190565b6020808252810161155c81612647565b6013815260006020820172105d58dd1a5bdb9cc8185c99481c185d5cd959606a1b815291506125f6565b6020808252810161155c816126a6565b634e487b7160e01b600052601160045260246000fd5b60008219821115612709576127096126e0565b500190565b602d81526000602082017f77616974696e6720666f72206e657874206269646465722e2063616e6e6f742081526c31b637b9b29030bab1ba34b7b760991b6020820152915061268f565b6020808252810161155c8161270e565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b805161155c81612324565b6000602082840312156127b4576127b4600080fd5b60006121698484612794565b805161155c81612471565b6000602082840312156127e0576127e0600080fd5b600061216984846127c0565b6000828210156127fe576127fe6126e0565b500390565b60006000198203612816576128166126e0565b5060010190565b6000816000190483118215151615612837576128376126e0565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826128615761286161283c565b500490565b6040810161287482856123e3565b61158f6020830184612364565b600061288d83836124f9565b505060200190565b600061155c826124d7565b600061155c8254612895565b60006128b6825490565b808452600083815260208082209501949081905b838110156128f4576128db826128a0565b6128e58882612881565b975050600191820191016128ca565b509495945050505050565b600061288d8383612364565b6000612915825190565b80845260209384019383018060005b838110156128f457815161293888826128ff565b975060208301925050600101612924565b60a081016129578288612364565b6129646020830187612364565b6129716040830186612364565b818103606083015261298381856128ac565b90508181036080830152612202818461290b565b604081016128748285612364565b601781526000602082017f41756374696f6e7320617265206e6f7420706175736564000000000000000000815291506125f6565b6020808252810161155c816129a5565b601a81526000602082017f696e63656e74697665427073206d757374206e6f742062652030000000000000815291506125f6565b6020808252810161155c816129e9565b602381526000602082017f5f6e657874426964646572426c6f636b4c696d6974206d757374206e6f74206281526206520360ec1b6020820152915061268f565b6020808252810161155c81612a2d565b602981526000602082017f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865208152683732bb9037bbb732b960b91b6020820152915061268f565b6020808252810161155c81612a7d565b601b81526000602082017f41756374696f6e732061726520616c7265616479207061757365640000000000815291506125f6565b6020808252810161155c81612ad3565b602e81526000602082017f496e697469616c697a61626c653a20636f6e747261637420697320616c72656181526d191e481a5b9a5d1a585b1a5e995960921b6020820152915061268f565b6020808252810161155c81612b17565b601d81526000602082017f696e76616c6964206d696e696d756d20706f6f6c206261642064656274000000815291506125f6565b6020808252810161155c81612b72565b600060ff821661155c565b61236681612bb6565b6020810161155c8284612bc1565b601c81526000602082017f61756374696f6e206973207374616c652c207265737461727420697400000000815291506125f6565b6020808252810161155c81612bd8565b602681526000602082017f626173697320706f696e74732063616e6e6f74206265206d6f7265207468616e81526502031303030360d41b6020820152915061268f565b6020808252810161155c81612c1c565b601b81526000602082017f796f757220626964206973206e6f742074686520686967686573740000000000815291506125f6565b6020808252810161155c81612c6f565b601f19601f830116810181811067ffffffffffffffff82111715612cd957612cd9612768565b6040525050565b6000612ceb60405190565b905061239c8282612cb3565b600067ffffffffffffffff821115612d1157612d11612768565b601f19601f83011660200192915050565b60005b83811015612d3d578181015183820152602001612d25565b83811115611f4d5750506000910152565b6000612d61612d5c84612cf7565b612ce0565b905082815260208101848484011115612d7c57612d7c600080fd5b612d87848285612d22565b509392505050565b600082601f830112612da357612da3600080fd5b8151612169848260208601612d4e565b600060a08284031215612dc857612dc8600080fd5b612dd260a0612ce0565b825190915067ffffffffffffffff811115612def57612def600080fd5b612dfb84828501612d8f565b8252506020612e0c84848301612794565b6020830152506040612e2084828501612794565b6040830152506060612e34848285016127c0565b6060830152506080612e48848285016127c0565b60808301525092915050565b600060208284031215612e6957612e69600080fd5b815167ffffffffffffffff811115612e8357612e83600080fd5b61216984828501612db3565b602781526000602082017f636f6d7074726f6c6c657220646f65736e277420657869737420706f6f6c20728152666567697374727960c81b6020820152915061268f565b6020808252810161155c81612e8f565b601381526000602082017261756374696f6e206973206f6e2d676f696e6760681b815291506125f6565b6020808252810161155c81612ee3565b601881526000602082017f706f6f6c20626164206465627420697320746f6f206c6f770000000000000000815291506125f6565b6020808252810161155c81612f1d565b60c08101612f6f8289612364565b612f7c60208301886123ac565b8181036040830152612f8e81876128ac565b90508181036060830152612fa2818661290b565b9050612fb16080830185612364565b61220260a0830184612364565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572910190815260006125f6565b6020808252810161155c81612fbe565b602581526000602082017f696e76616c696420616365737320636f6e74726f6c206d616e61676572206164815264647265737360d81b6020820152915061268f565b6020808252810161155c81613000565b6040810161306082856123e3565b61158f60208301846123e3565b601f81526000602082017f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00815291506125f6565b6020808252810161155c8161306d565b60006130bb825190565b8084526020840193506130d2818560208601612d22565b601f01601f19169290920192915050565b604081016130f182856123e3565b818103602083015261216981846130b1565b80151561232d565b805161155c81613103565b60006020828403121561312b5761312b600080fd5b6000612169848461310b565b6060810161314582866123e3565b61315260208301856123e3565b818103604083015261316481846130b1565b95945050505050565b602b81526000602082017f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206981526a6e697469616c697a696e6760a81b6020820152915061268f565b6020808252810161155c8161316d565b606081016131d382866123e3565b6131e060208301856123e3565b6121696040830184612364565b600067ffffffffffffffff82111561320757613207612768565b5060209081020190565b805161155c8161251b565b600061322a612d5c846131ed565b8381529050602080820190840283018581111561324957613249600080fd5b835b8181101561326d578061325e8882613211565b8452506020928301920161324b565b5050509392505050565b600082601f83011261328b5761328b600080fd5b815161216984826020860161321c565b6000602082840312156132b0576132b0600080fd5b815167ffffffffffffffff8111156132ca576132ca600080fd5b61216984828501613277565b6000602082840312156132eb576132eb600080fd5b60006121698484613211565b602a81526000602082017f5361666545524332303a204552433230206f7065726174696f6e20646964206e8152691bdd081cdd58d8d9595960b21b6020820152915061268f565b6020808252810161155c816132f7565b602681526000602082017f416464726573733a20696e73756666696369656e742062616c616e636520666f8152651c8818d85b1b60d21b6020820152915061268f565b6020808252810161155c8161334e565b60006133ab825190565b6133b9818560208601612d22565b9290920192915050565b600061158f82846133a1565b601d81526000602082017f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000815291506125f6565b6020808252810161155c816133cf565b6020808252810161158f81846130b156fe7570646174654d696e696d756d506f6f6c426164446562742875696e74323536297570646174654e657874426964646572426c6f636b4c696d69742875696e743235362975706461746557616974466f7246697273744269646465722875696e7432353629a2646970667358221220b33cd5803f512b4aecaef51b08df7683edc7a7ee7846760d31ff2e751dabc26b64736f6c634300080d0033",
754
+ "linkReferences": {},
755
+ "deployedLinkReferences": {}
756
+ }