@flarenetwork/flare-periphery-contract-artifacts 0.0.4 → 0.1.0

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 (709) hide show
  1. package/{dist/README.md → README.md} +2 -1
  2. package/coston/README.md +7 -0
  3. package/coston/artifacts/contracts/addressUpdater/implementation/AddressUpdatable.sol/AddressUpdatable.json +42 -0
  4. package/coston/artifacts/contracts/addressUpdater/implementation/AddressUpdater.sol/AddressUpdater.json +381 -0
  5. package/coston/artifacts/contracts/addressUpdater/interface/IIAddressUpdatable.sol/IIAddressUpdatable.json +29 -0
  6. package/coston/artifacts/contracts/addressUpdater/interface/IIAddressUpdater.sol/IIAddressUpdater.json +105 -0
  7. package/coston/artifacts/contracts/assetRegistry/implementation/FlareAssetRegistry.sol/FlareAssetRegistry.json +525 -0
  8. package/coston/artifacts/contracts/assetRegistry/implementation/WNatRegistryProvider.sol/WNatRegistryProvider.json +113 -0
  9. package/coston/artifacts/contracts/assetRegistry/interface/IIERC20WithMetadata.sol/IIERC20WithMetadata.json +233 -0
  10. package/coston/artifacts/contracts/assetRegistry/interface/IIFlareAssetRegistry.sol/IIFlareAssetRegistry.json +316 -0
  11. package/coston/artifacts/contracts/assetRegistry/interface/IIFlareAssetRegistryProvider.sol/IIFlareAssetRegistryProvider.json +66 -0
  12. package/coston/artifacts/contracts/assetRegistry/lib/StandardAttributes.sol/StandardAttributes.json +10 -0
  13. package/coston/artifacts/contracts/claiming/implementation/ClaimSetupManager.sol/ClaimSetupManager.json +1151 -0
  14. package/coston/artifacts/contracts/claiming/implementation/CloneFactory.sol/CloneFactory.json +10 -0
  15. package/coston/artifacts/contracts/claiming/implementation/DelegationAccount.sol/DelegationAccount.json +346 -0
  16. package/coston/artifacts/contracts/claiming/interface/IIClaimSetupManager.sol/IIClaimSetupManager.json +795 -0
  17. package/coston/artifacts/contracts/claiming/interface/IIDelegationAccount.sol/IIDelegationAccount.json +316 -0
  18. package/coston/artifacts/contracts/ftso/implementation/Ftso.sol/Ftso.json +1104 -0
  19. package/coston/artifacts/contracts/ftso/implementation/FtsoManager.sol/FtsoManager.json +1723 -0
  20. package/coston/artifacts/contracts/ftso/interface/IIFtso.sol/IIFtso.json +953 -0
  21. package/coston/artifacts/contracts/ftso/interface/IIFtsoManager.sol/IIFtsoManager.json +878 -0
  22. package/coston/artifacts/contracts/ftso/interface/IIFtsoManagerV1.sol/IIFtsoManagerV1.json +102 -0
  23. package/coston/artifacts/contracts/ftso/lib/FtsoEpoch.sol/FtsoEpoch.json +10 -0
  24. package/coston/artifacts/contracts/ftso/lib/FtsoManagement.sol/FtsoManagement.json +43 -0
  25. package/coston/artifacts/contracts/ftso/lib/FtsoManagerSettings.sol/FtsoManagerSettings.json +10 -0
  26. package/coston/artifacts/contracts/ftso/lib/FtsoMedian.sol/FtsoMedian.json +10 -0
  27. package/coston/artifacts/contracts/ftso/lib/FtsoVote.sol/FtsoVote.json +10 -0
  28. package/coston/artifacts/contracts/ftso/priceProviderMockContracts/PriceProviderMockContracts.sol/MockFtsoRegistry.json +624 -0
  29. package/coston/artifacts/contracts/ftso/priceProviderMockContracts/PriceProviderMockContracts.sol/MockPriceSubmitter.json +241 -0
  30. package/coston/artifacts/contracts/ftso/priceProviderMockContracts/PriceProviderMockContracts.sol/MockVoterWhitelister.json +236 -0
  31. package/coston/artifacts/contracts/ftso/priceProviderMockContracts/priceProviderMockFtso.sol/MockNpmFtso.json +1048 -0
  32. package/coston/artifacts/contracts/genesis/implementation/FlareDaemon.sol/FlareDaemon.json +676 -0
  33. package/coston/artifacts/contracts/genesis/implementation/GovernanceSettings.sol/GovernanceSettings.json +224 -0
  34. package/coston/artifacts/contracts/genesis/implementation/PriceSubmitter.sol/PriceSubmitter.json +407 -0
  35. package/coston/artifacts/contracts/genesis/implementation/StateConnector.sol/StateConnector.json +324 -0
  36. package/coston/artifacts/contracts/genesis/interface/IFlareDaemonize.sol/IFlareDaemonize.json +37 -0
  37. package/coston/artifacts/contracts/genesis/interface/IFtsoGenesis.sol/IFtsoGenesis.json +91 -0
  38. package/coston/artifacts/contracts/genesis/interface/IFtsoManagerGenesis.sol/IFtsoManagerGenesis.json +24 -0
  39. package/coston/artifacts/contracts/genesis/interface/IFtsoRegistryGenesis.sol/IFtsoRegistryGenesis.json +30 -0
  40. package/coston/artifacts/contracts/genesis/interface/IIPriceSubmitter.sol/IIPriceSubmitter.json +285 -0
  41. package/coston/artifacts/contracts/genesis/interface/IInflationGenesis.sol/IInflationGenesis.json +18 -0
  42. package/coston/artifacts/contracts/governance/implementation/Governed.sol/Governed.json +126 -0
  43. package/coston/artifacts/contracts/governance/implementation/GovernedAtGenesis.sol/GovernedAtGenesis.json +139 -0
  44. package/coston/artifacts/contracts/governance/implementation/GovernedBase.sol/GovernedBase.json +115 -0
  45. package/coston/artifacts/contracts/governance/implementation/GovernedBaseV2.sol/GovernedBaseV2.json +209 -0
  46. package/coston/artifacts/contracts/governance/implementation/GovernedV2.sol/GovernedV2.json +220 -0
  47. package/coston/artifacts/contracts/governance/implementation/Governor.sol/Governor.json +653 -0
  48. package/coston/artifacts/contracts/governance/implementation/GovernorProposals.sol/GovernorProposals.json +24 -0
  49. package/coston/artifacts/contracts/governance/implementation/GovernorProposer.sol/GovernorProposer.json +265 -0
  50. package/coston/artifacts/contracts/governance/implementation/GovernorVotePower.sol/GovernorVotePower.json +24 -0
  51. package/coston/artifacts/contracts/governance/implementation/GovernorVotes.sol/GovernorVotes.json +10 -0
  52. package/coston/artifacts/contracts/governance/implementation/PollingFoundation.sol/PollingFoundation.json +1065 -0
  53. package/coston/artifacts/contracts/governance/implementation/PollingFtso.sol/PollingFtso.json +1187 -0
  54. package/coston/artifacts/contracts/governance/interface/IIGovernorProposer.sol/IIGovernorProposer.json +30 -0
  55. package/coston/artifacts/contracts/governance/interface/IIPollingFoundation.sol/IIPollingFoundation.json +640 -0
  56. package/coston/artifacts/contracts/inflation/implementation/Inflation.sol/Inflation.json +854 -0
  57. package/coston/artifacts/contracts/inflation/implementation/InflationAllocation.sol/InflationAllocation.json +463 -0
  58. package/coston/artifacts/contracts/inflation/implementation/SelfDestructBurner.sol/SelfDestructBurner.json +73 -0
  59. package/coston/artifacts/contracts/inflation/implementation/Supply.sol/Supply.json +642 -0
  60. package/coston/artifacts/contracts/inflation/interface/IIInflationAllocation.sol/IIInflationAllocation.json +49 -0
  61. package/coston/artifacts/contracts/inflation/interface/IIInflationReceiver.sol/IIInflationReceiver.json +70 -0
  62. package/coston/artifacts/contracts/inflation/interface/IIInflationV1.sol/IIInflationV1.json +142 -0
  63. package/coston/artifacts/contracts/inflation/interface/IIPreInflationCalculation.sol/IIPreInflationCalculation.json +18 -0
  64. package/coston/artifacts/contracts/inflation/interface/IISupply.sol/IISupply.json +82 -0
  65. package/coston/artifacts/contracts/inflation/lib/InflationRewardServices.sol/InflationRewardServices.json +68 -0
  66. package/coston/artifacts/contracts/inflation/lib/InflationTimeSlots.sol/InflationTimeSlots.json +10 -0
  67. package/coston/artifacts/contracts/mockXAsset/interface/ICollateralizable.sol/ICollateralizable.json +234 -0
  68. package/coston/artifacts/contracts/token/implementation/CheckPointable.sol/CheckPointable.json +129 -0
  69. package/coston/artifacts/contracts/token/implementation/CleanupBlockNumberManager.sol/CleanupBlockNumberManager.json +389 -0
  70. package/coston/artifacts/contracts/token/implementation/Delegatable.sol/Delegatable.json +222 -0
  71. package/coston/artifacts/contracts/token/implementation/GovernanceVotePower.sol/GovernanceVotePower.json +324 -0
  72. package/coston/artifacts/contracts/token/implementation/VPContract.sol/VPContract.json +774 -0
  73. package/coston/artifacts/contracts/token/implementation/VPToken.sol/VPToken.json +1102 -0
  74. package/coston/artifacts/contracts/token/implementation/WNat.sol/WNat.json +1195 -0
  75. package/coston/artifacts/contracts/token/interface/IICleanable.sol/IICleanable.json +63 -0
  76. package/coston/artifacts/contracts/token/interface/IIGovernanceVotePower.sol/IIGovernanceVotePower.json +252 -0
  77. package/coston/artifacts/contracts/token/interface/IIVPContract.sol/IIVPContract.json +609 -0
  78. package/coston/artifacts/contracts/token/interface/IIVPToken.sol/IIVPToken.json +790 -0
  79. package/coston/artifacts/contracts/token/lib/CheckPointHistory.sol/CheckPointHistory.json +10 -0
  80. package/coston/artifacts/contracts/token/lib/CheckPointHistoryCache.sol/CheckPointHistoryCache.json +10 -0
  81. package/coston/artifacts/contracts/token/lib/CheckPointsByAddress.sol/CheckPointsByAddress.json +10 -0
  82. package/coston/artifacts/contracts/token/lib/DelegateCheckPointHistory.sol/DelegateCheckPointHistory.json +10 -0
  83. package/coston/artifacts/contracts/token/lib/DelegateCheckPointsByAddress.sol/DelegateCheckPointsByAddress.json +10 -0
  84. package/coston/artifacts/contracts/token/lib/DelegationHistory.sol/DelegationHistory.json +24 -0
  85. package/coston/artifacts/contracts/token/lib/ExplicitDelegation.sol/ExplicitDelegation.json +10 -0
  86. package/coston/artifacts/contracts/token/lib/PercentageDelegation.sol/PercentageDelegation.json +24 -0
  87. package/coston/artifacts/contracts/token/lib/VotePower.sol/VotePower.json +10 -0
  88. package/coston/artifacts/contracts/token/lib/VotePowerCache.sol/VotePowerCache.json +10 -0
  89. package/coston/artifacts/contracts/tokenPools/implementation/FtsoRewardManager.sol/FtsoRewardManager.json +1425 -0
  90. package/coston/artifacts/contracts/tokenPools/implementation/InflationReceiver.sol/InflationReceiver.json +127 -0
  91. package/coston/artifacts/contracts/tokenPools/implementation/TokenPoolBase.sol/TokenPoolBase.json +10 -0
  92. package/coston/artifacts/contracts/tokenPools/interface/IIFtsoRewardManager.sol/IIFtsoRewardManager.json +975 -0
  93. package/coston/artifacts/contracts/tokenPools/interface/IITokenPool.sol/IITokenPool.json +34 -0
  94. package/coston/artifacts/contracts/tokenPools/lib/DataProviderFee.sol/DataProviderFee.json +10 -0
  95. package/coston/artifacts/contracts/userInterfaces/IClaimSetupManager.sol/IClaimSetupManager.json +665 -0
  96. package/coston/artifacts/contracts/userInterfaces/IDelegationAccount.sol/IDelegationAccount.json +144 -0
  97. package/coston/artifacts/contracts/userInterfaces/IFlareAssetRegistry.sol/IFlareAssetRegistry.json +241 -0
  98. package/coston/artifacts/contracts/userInterfaces/IFlareContractRegistry.sol/IFlareContractRegistry.json +105 -0
  99. package/coston/artifacts/contracts/userInterfaces/IFtso.sol/IFtso.json +512 -0
  100. package/coston/artifacts/contracts/userInterfaces/IFtsoManager.sol/IFtsoManager.json +376 -0
  101. package/coston/artifacts/contracts/userInterfaces/IFtsoRegistry.sol/IFtsoRegistry.json +445 -0
  102. package/coston/artifacts/contracts/userInterfaces/IFtsoRewardManager.sol/IFtsoRewardManager.json +702 -0
  103. package/coston/artifacts/contracts/userInterfaces/IGenericRewardManager.sol/IGenericRewardManager.json +248 -0
  104. package/coston/artifacts/contracts/userInterfaces/IGovernanceSettings.sol/IGovernanceSettings.json +69 -0
  105. package/coston/artifacts/contracts/userInterfaces/IGovernanceVotePower.sol/IGovernanceVotePower.json +117 -0
  106. package/coston/artifacts/contracts/userInterfaces/IGovernor.sol/IGovernor.json +484 -0
  107. package/coston/artifacts/contracts/userInterfaces/IPollingFtso.sol/IPollingFtso.json +639 -0
  108. package/coston/artifacts/contracts/userInterfaces/IPriceSubmitter.sol/IPriceSubmitter.json +200 -0
  109. package/coston/artifacts/contracts/userInterfaces/IVPContractEvents.sol/IVPContractEvents.json +73 -0
  110. package/coston/artifacts/contracts/userInterfaces/IVPToken.sol/IVPToken.json +658 -0
  111. package/coston/artifacts/contracts/userInterfaces/IVoterWhitelister.sol/IVoterWhitelister.json +199 -0
  112. package/coston/artifacts/contracts/userInterfaces/IWNat.sol/IWNat.json +62 -0
  113. package/coston/artifacts/contracts/utils/implementation/AddressSet.sol/AddressSet.json +10 -0
  114. package/coston/artifacts/contracts/utils/implementation/DateTimeLibrary.sol/BokkyPooBahsDateTimeLibrary.json +154 -0
  115. package/coston/artifacts/contracts/utils/implementation/FlareContractRegistry.sol/FlareContractRegistry.json +147 -0
  116. package/coston/artifacts/contracts/utils/implementation/FtsoRegistry.sol/FtsoRegistry.json +769 -0
  117. package/coston/artifacts/contracts/utils/implementation/FtsoRegistryProxy.sol/FtsoRegistryProxy.json +272 -0
  118. package/coston/artifacts/contracts/utils/implementation/FtsoV2Upgrader.sol/FtsoV2Upgrader.json +440 -0
  119. package/coston/artifacts/contracts/utils/implementation/GovernedAndFlareDaemonized.sol/GovernedAndFlareDaemonized.json +144 -0
  120. package/coston/artifacts/contracts/utils/implementation/GovernedAndFlareDaemonizedV2.sol/GovernedAndFlareDaemonizedV2.json +238 -0
  121. package/coston/artifacts/contracts/utils/implementation/ProxyGoverned.sol/ProxyGoverned.json +256 -0
  122. package/coston/artifacts/contracts/utils/implementation/RevertErrorTracking.sol/RevertErrorTracking.json +131 -0
  123. package/coston/artifacts/contracts/utils/implementation/SafePct.sol/SafePct.json +10 -0
  124. package/coston/artifacts/contracts/utils/implementation/VoterWhitelister.sol/VoterWhitelister.json +653 -0
  125. package/coston/artifacts/contracts/utils/interface/IIFtsoRegistry.sol/IIFtsoRegistry.json +477 -0
  126. package/coston/artifacts/contracts/utils/interface/IIFtsoRegistryV1.sol/IIFtsoRegistryV1.json +120 -0
  127. package/coston/artifacts/contracts/utils/interface/IIRandomProvider.sol/IIRandomProvider.json +60 -0
  128. package/coston/artifacts/contracts/utils/interface/IIVoterWhitelister.sol/IIVoterWhitelister.json +308 -0
  129. package/coston/artifacts/contracts/utils/interface/IUpdateValidators.sol/IUpdateValidators.json +18 -0
  130. package/{dist/coston/deploys/coston.json → coston/deploys/contracts.json} +43 -13
  131. package/coston2/README.md +7 -0
  132. package/coston2/artifacts/contracts/addressUpdater/implementation/AddressUpdatable.sol/AddressUpdatable.json +42 -0
  133. package/coston2/artifacts/contracts/addressUpdater/implementation/AddressUpdater.sol/AddressUpdater.json +381 -0
  134. package/coston2/artifacts/contracts/addressUpdater/interface/IIAddressUpdatable.sol/IIAddressUpdatable.json +29 -0
  135. package/coston2/artifacts/contracts/addressUpdater/interface/IIAddressUpdater.sol/IIAddressUpdater.json +105 -0
  136. package/coston2/artifacts/contracts/assetRegistry/implementation/FlareAssetRegistry.sol/FlareAssetRegistry.json +525 -0
  137. package/coston2/artifacts/contracts/assetRegistry/implementation/WNatRegistryProvider.sol/WNatRegistryProvider.json +113 -0
  138. package/coston2/artifacts/contracts/assetRegistry/interface/IIERC20WithMetadata.sol/IIERC20WithMetadata.json +233 -0
  139. package/coston2/artifacts/contracts/assetRegistry/interface/IIFlareAssetRegistry.sol/IIFlareAssetRegistry.json +316 -0
  140. package/coston2/artifacts/contracts/assetRegistry/interface/IIFlareAssetRegistryProvider.sol/IIFlareAssetRegistryProvider.json +66 -0
  141. package/coston2/artifacts/contracts/assetRegistry/lib/StandardAttributes.sol/StandardAttributes.json +10 -0
  142. package/coston2/artifacts/contracts/claiming/implementation/ClaimSetupManager.sol/ClaimSetupManager.json +1151 -0
  143. package/coston2/artifacts/contracts/claiming/implementation/CloneFactory.sol/CloneFactory.json +10 -0
  144. package/coston2/artifacts/contracts/claiming/implementation/DelegationAccount.sol/DelegationAccount.json +346 -0
  145. package/coston2/artifacts/contracts/claiming/interface/IIClaimSetupManager.sol/IIClaimSetupManager.json +795 -0
  146. package/coston2/artifacts/contracts/claiming/interface/IIDelegationAccount.sol/IIDelegationAccount.json +316 -0
  147. package/coston2/artifacts/contracts/ftso/implementation/Ftso.sol/Ftso.json +1039 -0
  148. package/coston2/artifacts/contracts/ftso/implementation/FtsoManager.sol/FtsoManager.json +1723 -0
  149. package/coston2/artifacts/contracts/ftso/interface/IIFtso.sol/IIFtso.json +888 -0
  150. package/coston2/artifacts/contracts/ftso/interface/IIFtsoManager.sol/IIFtsoManager.json +891 -0
  151. package/coston2/artifacts/contracts/ftso/interface/IIFtsoManagerV1.sol/IIFtsoManagerV1.json +102 -0
  152. package/coston2/artifacts/contracts/ftso/lib/FtsoEpoch.sol/FtsoEpoch.json +10 -0
  153. package/coston2/artifacts/contracts/ftso/lib/FtsoManagement.sol/FtsoManagement.json +43 -0
  154. package/coston2/artifacts/contracts/ftso/lib/FtsoManagerSettings.sol/FtsoManagerSettings.json +10 -0
  155. package/coston2/artifacts/contracts/ftso/lib/FtsoMedian.sol/FtsoMedian.json +10 -0
  156. package/coston2/artifacts/contracts/ftso/lib/FtsoVote.sol/FtsoVote.json +10 -0
  157. package/coston2/artifacts/contracts/ftso/priceProviderMockContracts/PriceProviderMockContracts.sol/MockFtsoRegistry.json +718 -0
  158. package/coston2/artifacts/contracts/ftso/priceProviderMockContracts/PriceProviderMockContracts.sol/MockPriceSubmitter.json +338 -0
  159. package/coston2/artifacts/contracts/ftso/priceProviderMockContracts/PriceProviderMockContracts.sol/MockVoterWhitelister.json +236 -0
  160. package/coston2/artifacts/contracts/ftso/priceProviderMockContracts/priceProviderMockFtso.sol/MockNpmFtso.json +983 -0
  161. package/coston2/artifacts/contracts/genesis/implementation/DistributionTreasury.sol/DistributionTreasury.json +289 -0
  162. package/coston2/artifacts/contracts/genesis/implementation/FlareDaemon.sol/FlareDaemon.json +794 -0
  163. package/coston2/artifacts/contracts/genesis/implementation/GovernanceSettings.sol/GovernanceSettings.json +219 -0
  164. package/coston2/artifacts/contracts/genesis/implementation/IncentivePoolTreasury.sol/IncentivePoolTreasury.json +292 -0
  165. package/coston2/artifacts/contracts/genesis/implementation/InitialAirdrop.sol/InitialAirdrop.json +493 -0
  166. package/coston2/artifacts/contracts/genesis/implementation/PriceSubmitter.sol/PriceSubmitter.json +569 -0
  167. package/coston2/artifacts/contracts/genesis/implementation/StateConnector.sol/StateConnector.json +324 -0
  168. package/coston2/artifacts/contracts/genesis/interface/IFlareDaemonize.sol/IFlareDaemonize.json +50 -0
  169. package/coston2/artifacts/contracts/genesis/interface/IFtsoGenesis.sol/IFtsoGenesis.json +63 -0
  170. package/coston2/artifacts/contracts/genesis/interface/IFtsoManagerGenesis.sol/IFtsoManagerGenesis.json +24 -0
  171. package/coston2/artifacts/contracts/genesis/interface/IFtsoRegistryGenesis.sol/IFtsoRegistryGenesis.json +30 -0
  172. package/coston2/artifacts/contracts/genesis/interface/IIPriceSubmitter.sol/IIPriceSubmitter.json +283 -0
  173. package/coston2/artifacts/contracts/genesis/interface/IInflationGenesis.sol/IInflationGenesis.json +18 -0
  174. package/coston2/artifacts/contracts/governance/implementation/Governed.sol/Governed.json +220 -0
  175. package/coston2/artifacts/contracts/governance/implementation/GovernedAtGenesis.sol/GovernedAtGenesis.json +233 -0
  176. package/coston2/artifacts/contracts/governance/implementation/GovernedBase.sol/GovernedBase.json +209 -0
  177. package/coston2/artifacts/contracts/governance/implementation/Governor.sol/Governor.json +653 -0
  178. package/coston2/artifacts/contracts/governance/implementation/GovernorProposals.sol/GovernorProposals.json +24 -0
  179. package/coston2/artifacts/contracts/governance/implementation/GovernorProposer.sol/GovernorProposer.json +265 -0
  180. package/coston2/artifacts/contracts/governance/implementation/GovernorVotePower.sol/GovernorVotePower.json +24 -0
  181. package/coston2/artifacts/contracts/governance/implementation/GovernorVotes.sol/GovernorVotes.json +10 -0
  182. package/coston2/artifacts/contracts/governance/implementation/PollingFoundation.sol/PollingFoundation.json +1070 -0
  183. package/coston2/artifacts/contracts/governance/implementation/PollingFtso.sol/PollingFtso.json +1187 -0
  184. package/coston2/artifacts/contracts/governance/interface/IIGovernorProposer.sol/IIGovernorProposer.json +30 -0
  185. package/coston2/artifacts/contracts/governance/interface/IIPollingFoundation.sol/IIPollingFoundation.json +640 -0
  186. package/coston2/artifacts/contracts/inflation/implementation/Inflation.sol/Inflation.json +926 -0
  187. package/coston2/artifacts/contracts/inflation/implementation/InflationAllocation.sol/InflationAllocation.json +463 -0
  188. package/coston2/artifacts/contracts/inflation/implementation/Supply.sol/Supply.json +543 -0
  189. package/coston2/artifacts/contracts/inflation/interface/IIInflationAllocation.sol/IIInflationAllocation.json +49 -0
  190. package/coston2/artifacts/contracts/inflation/interface/IIInflationPercentageProvider.sol/IIInflationPercentageProvider.json +24 -0
  191. package/coston2/artifacts/contracts/inflation/interface/IIInflationReceiver.sol/IIInflationReceiver.json +57 -0
  192. package/coston2/artifacts/contracts/inflation/interface/IIInflationSharingPercentageProvider.sol/IIInflationSharingPercentageProvider.json +36 -0
  193. package/coston2/artifacts/contracts/inflation/interface/IISupply.sol/IISupply.json +82 -0
  194. package/coston2/artifacts/contracts/inflation/lib/InflationAnnum.sol/InflationAnnum.json +10 -0
  195. package/coston2/artifacts/contracts/inflation/lib/InflationAnnums.sol/InflationAnnums.json +10 -0
  196. package/coston2/artifacts/contracts/inflation/lib/RewardService.sol/RewardService.json +30 -0
  197. package/coston2/artifacts/contracts/inflation/lib/RewardServices.sol/RewardServices.json +49 -0
  198. package/coston2/artifacts/contracts/mockXAsset/interface/ICollateralizable.sol/ICollateralizable.json +234 -0
  199. package/coston2/artifacts/contracts/token/implementation/CheckPointable.sol/CheckPointable.json +142 -0
  200. package/coston2/artifacts/contracts/token/implementation/CleanupBlockNumberManager.sol/CleanupBlockNumberManager.json +389 -0
  201. package/coston2/artifacts/contracts/token/implementation/Delegatable.sol/Delegatable.json +235 -0
  202. package/coston2/artifacts/contracts/token/implementation/GovernanceVotePower.sol/GovernanceVotePower.json +324 -0
  203. package/coston2/artifacts/contracts/token/implementation/VPContract.sol/VPContract.json +798 -0
  204. package/coston2/artifacts/contracts/token/implementation/VPToken.sol/VPToken.json +1264 -0
  205. package/coston2/artifacts/contracts/token/implementation/WNat.sol/WNat.json +1357 -0
  206. package/coston2/artifacts/contracts/token/interface/IICleanable.sol/IICleanable.json +50 -0
  207. package/coston2/artifacts/contracts/token/interface/IIGovernanceVotePower.sol/IIGovernanceVotePower.json +252 -0
  208. package/coston2/artifacts/contracts/token/interface/IIVPContract.sol/IIVPContract.json +620 -0
  209. package/coston2/artifacts/contracts/token/interface/IIVPToken.sol/IIVPToken.json +832 -0
  210. package/coston2/artifacts/contracts/token/lib/CheckPointHistory.sol/CheckPointHistory.json +10 -0
  211. package/coston2/artifacts/contracts/token/lib/CheckPointHistoryCache.sol/CheckPointHistoryCache.json +10 -0
  212. package/coston2/artifacts/contracts/token/lib/CheckPointsByAddress.sol/CheckPointsByAddress.json +10 -0
  213. package/coston2/artifacts/contracts/token/lib/DelegateCheckPointHistory.sol/DelegateCheckPointHistory.json +10 -0
  214. package/coston2/artifacts/contracts/token/lib/DelegateCheckPointsByAddress.sol/DelegateCheckPointsByAddress.json +10 -0
  215. package/coston2/artifacts/contracts/token/lib/DelegationHistory.sol/DelegationHistory.json +24 -0
  216. package/coston2/artifacts/contracts/token/lib/ExplicitDelegation.sol/ExplicitDelegation.json +10 -0
  217. package/coston2/artifacts/contracts/token/lib/IICombinedNatBalance.sol/IICombinedNatBalance.json +54 -0
  218. package/coston2/artifacts/contracts/token/lib/PercentageDelegation.sol/PercentageDelegation.json +24 -0
  219. package/coston2/artifacts/contracts/token/lib/VotePower.sol/VotePower.json +10 -0
  220. package/coston2/artifacts/contracts/token/lib/VotePowerCache.sol/VotePowerCache.json +10 -0
  221. package/coston2/artifacts/contracts/tokenPools/implementation/AttestationProviderRewardManager.sol/AttestationProviderRewardManager.json +741 -0
  222. package/coston2/artifacts/contracts/tokenPools/implementation/DistributionToDelegators.sol/DistributionToDelegators.json +1038 -0
  223. package/coston2/artifacts/contracts/tokenPools/implementation/Escrow.sol/Escrow.json +769 -0
  224. package/coston2/artifacts/contracts/tokenPools/implementation/FtsoRewardManager.sol/FtsoRewardManager.json +1412 -0
  225. package/coston2/artifacts/contracts/tokenPools/implementation/GenericRewardManager.sol/GenericRewardManager.json +720 -0
  226. package/coston2/artifacts/contracts/tokenPools/implementation/IncentivePool.sol/IncentivePool.json +927 -0
  227. package/coston2/artifacts/contracts/tokenPools/implementation/IncentivePoolAllocation.sol/IncentivePoolAllocation.json +463 -0
  228. package/coston2/artifacts/contracts/tokenPools/implementation/ValidatorRewardManager.sol/ValidatorRewardManager.json +741 -0
  229. package/coston2/artifacts/contracts/tokenPools/interface/IIFtsoRewardManager.sol/IIFtsoRewardManager.json +962 -0
  230. package/coston2/artifacts/contracts/tokenPools/interface/IIGenericRewardManager.sol/IIGenericRewardManager.json +413 -0
  231. package/coston2/artifacts/contracts/tokenPools/interface/IIIncentivePoolAllocation.sol/IIIncentivePoolAllocation.json +49 -0
  232. package/coston2/artifacts/contracts/tokenPools/interface/IIIncentivePoolPercentageProvider.sol/IIIncentivePoolPercentageProvider.json +24 -0
  233. package/coston2/artifacts/contracts/tokenPools/interface/IIIncentivePoolReceiver.sol/IIIncentivePoolReceiver.json +57 -0
  234. package/coston2/artifacts/contracts/tokenPools/interface/IIIncentivePoolSharingPercentageProvider.sol/IIIncentivePoolSharingPercentageProvider.json +36 -0
  235. package/coston2/artifacts/contracts/tokenPools/interface/IITokenPool.sol/IITokenPool.json +34 -0
  236. package/coston2/artifacts/contracts/tokenPools/lib/DataProviderFee.sol/DataProviderFee.json +10 -0
  237. package/coston2/artifacts/contracts/tokenPools/lib/IncentivePoolAnnum.sol/IncentivePoolAnnum.json +10 -0
  238. package/coston2/artifacts/contracts/tokenPools/lib/IncentivePoolAnnums.sol/IncentivePoolAnnums.json +10 -0
  239. package/coston2/artifacts/contracts/tokenPools/lib/IncentivePoolRewardService.sol/IncentivePoolRewardService.json +30 -0
  240. package/coston2/artifacts/contracts/tokenPools/lib/IncentivePoolRewardServices.sol/IncentivePoolRewardServices.json +49 -0
  241. package/coston2/artifacts/contracts/userInterfaces/IClaimSetupManager.sol/IClaimSetupManager.json +665 -0
  242. package/coston2/artifacts/contracts/userInterfaces/IDelegationAccount.sol/IDelegationAccount.json +144 -0
  243. package/coston2/artifacts/contracts/userInterfaces/IDistributionToDelegators.sol/IDistributionToDelegators.json +258 -0
  244. package/coston2/artifacts/contracts/userInterfaces/IFlareAssetRegistry.sol/IFlareAssetRegistry.json +241 -0
  245. package/coston2/artifacts/contracts/userInterfaces/IFlareContractRegistry.sol/IFlareContractRegistry.json +105 -0
  246. package/coston2/artifacts/contracts/userInterfaces/IFtso.sol/IFtso.json +475 -0
  247. package/coston2/artifacts/contracts/userInterfaces/IFtsoManager.sol/IFtsoManager.json +376 -0
  248. package/coston2/artifacts/contracts/userInterfaces/IFtsoRegistry.sol/IFtsoRegistry.json +445 -0
  249. package/coston2/artifacts/contracts/userInterfaces/IFtsoRewardManager.sol/IFtsoRewardManager.json +702 -0
  250. package/coston2/artifacts/contracts/userInterfaces/IGenericRewardManager.sol/IGenericRewardManager.json +248 -0
  251. package/coston2/artifacts/contracts/userInterfaces/IGovernanceSettings.sol/IGovernanceSettings.json +69 -0
  252. package/coston2/artifacts/contracts/userInterfaces/IGovernanceVotePower.sol/IGovernanceVotePower.json +117 -0
  253. package/coston2/artifacts/contracts/userInterfaces/IGovernor.sol/IGovernor.json +484 -0
  254. package/coston2/artifacts/contracts/userInterfaces/IPollingFtso.sol/IPollingFtso.json +639 -0
  255. package/coston2/artifacts/contracts/userInterfaces/IPriceSubmitter.sol/IPriceSubmitter.json +221 -0
  256. package/coston2/artifacts/contracts/userInterfaces/IVPContractEvents.sol/IVPContractEvents.json +73 -0
  257. package/coston2/artifacts/contracts/userInterfaces/IVPToken.sol/IVPToken.json +700 -0
  258. package/coston2/artifacts/contracts/userInterfaces/IValidatorRegistry.sol/IValidatorRegistry.json +136 -0
  259. package/coston2/artifacts/contracts/userInterfaces/IVoterWhitelister.sol/IVoterWhitelister.json +199 -0
  260. package/coston2/artifacts/contracts/userInterfaces/IWNat.sol/IWNat.json +62 -0
  261. package/coston2/artifacts/contracts/utils/implementation/AddressSet.sol/AddressSet.json +10 -0
  262. package/coston2/artifacts/contracts/utils/implementation/DateTimeLibrary.sol/BokkyPooBahsDateTimeLibrary.json +154 -0
  263. package/coston2/artifacts/contracts/utils/implementation/FlareContractRegistry.sol/FlareContractRegistry.json +147 -0
  264. package/coston2/artifacts/contracts/utils/implementation/FtsoRegistry.sol/FtsoRegistry.json +769 -0
  265. package/coston2/artifacts/contracts/utils/implementation/FtsoRegistryProxy.sol/FtsoRegistryProxy.json +272 -0
  266. package/coston2/artifacts/contracts/utils/implementation/FtsoV2Upgrader.sol/FtsoV2Upgrader.json +384 -0
  267. package/coston2/artifacts/contracts/utils/implementation/FundDistributor.sol/FundDistributor.json +71 -0
  268. package/coston2/artifacts/contracts/utils/implementation/GovernedAndFlareDaemonized.sol/GovernedAndFlareDaemonized.json +238 -0
  269. package/coston2/artifacts/contracts/utils/implementation/ProxyGoverned.sol/ProxyGoverned.json +256 -0
  270. package/coston2/artifacts/contracts/utils/implementation/RevertErrorTracking.sol/RevertErrorTracking.json +131 -0
  271. package/coston2/artifacts/contracts/utils/implementation/SafePct.sol/SafePct.json +10 -0
  272. package/coston2/artifacts/contracts/utils/implementation/SelfdestructTransfer.sol/SelfdestructTransfer.json +91 -0
  273. package/coston2/artifacts/contracts/utils/implementation/ValidatorRegistry.sol/ValidatorRegistry.json +149 -0
  274. package/coston2/artifacts/contracts/utils/implementation/VoterWhitelister.sol/VoterWhitelister.json +653 -0
  275. package/coston2/artifacts/contracts/utils/interface/IIFtsoRegistry.sol/IIFtsoRegistry.json +477 -0
  276. package/coston2/artifacts/contracts/utils/interface/IIRandomProvider.sol/IIRandomProvider.json +60 -0
  277. package/coston2/artifacts/contracts/utils/interface/IIVoterWhitelister.sol/IIVoterWhitelister.json +308 -0
  278. package/coston2/artifacts/contracts/utils/interface/IUpdateValidators.sol/IUpdateValidators.json +18 -0
  279. package/{dist/coston2/deploys/coston2.json → coston2/deploys/contracts.json} +48 -18
  280. package/dist/coston/abis.d.ts +4 -0
  281. package/dist/coston/abis.d.ts.map +1 -0
  282. package/dist/{songbird/abis.songbird.js → coston/abis.js} +21 -17
  283. package/dist/coston/abis.js.map +1 -0
  284. package/dist/coston/artifacts/contracts/claiming/implementation/ClaimSetupManager.sol/ClaimSetupManager.json +2 -2
  285. package/dist/coston/artifacts/contracts/ftso/implementation/FtsoManager.sol/FtsoManager.json +2 -2
  286. package/dist/coston/artifacts/contracts/governance/implementation/PollingFoundation.sol/PollingFoundation.json +2 -2
  287. package/dist/coston/artifacts/contracts/governance/implementation/PollingFtso.sol/PollingFtso.json +2 -2
  288. package/dist/coston/artifacts/contracts/inflation/implementation/Inflation.sol/Inflation.json +273 -298
  289. package/dist/coston/artifacts/contracts/inflation/implementation/InflationAllocation.sol/InflationAllocation.json +463 -0
  290. package/dist/coston/artifacts/contracts/inflation/implementation/SelfDestructBurner.sol/SelfDestructBurner.json +73 -0
  291. package/dist/coston/artifacts/contracts/inflation/implementation/Supply.sol/Supply.json +290 -51
  292. package/dist/coston/artifacts/contracts/inflation/interface/{IIInflationSharingPercentageProvider.sol/IIInflationSharingPercentageProvider.json → IIInflationAllocation.sol/IIInflationAllocation.json} +15 -2
  293. package/dist/coston/artifacts/contracts/inflation/interface/IIInflationReceiver.sol/IIInflationReceiver.json +26 -0
  294. package/dist/coston/artifacts/contracts/inflation/interface/IIInflationV1.sol/IIInflationV1.json +142 -0
  295. package/dist/coston/artifacts/contracts/inflation/interface/IIPreInflationCalculation.sol/IIPreInflationCalculation.json +18 -0
  296. package/dist/coston/artifacts/contracts/inflation/interface/IISupply.sol/IISupply.json +6 -12
  297. package/dist/coston/artifacts/contracts/inflation/lib/{RewardServices.sol/RewardServices.json → InflationRewardServices.sol/InflationRewardServices.json} +25 -6
  298. package/dist/coston/artifacts/contracts/inflation/lib/InflationTimeSlots.sol/InflationTimeSlots.json +10 -0
  299. package/dist/coston/artifacts/contracts/tokenPools/implementation/FtsoRewardManager.sol/FtsoRewardManager.json +19 -6
  300. package/dist/coston/artifacts/contracts/tokenPools/implementation/InflationReceiver.sol/InflationReceiver.json +127 -0
  301. package/dist/coston/artifacts/contracts/tokenPools/implementation/TokenPoolBase.sol/TokenPoolBase.json +10 -0
  302. package/dist/coston/artifacts/contracts/tokenPools/interface/IIFtsoRewardManager.sol/IIFtsoRewardManager.json +26 -0
  303. package/dist/coston/artifacts/contracts/utils/implementation/FtsoV2Upgrader.sol/FtsoV2Upgrader.json +2 -2
  304. package/dist/coston/deploys/{contractAddresses.d.ts → addresses.d.ts} +9 -3
  305. package/dist/coston/deploys/addresses.d.ts.map +1 -0
  306. package/dist/coston/deploys/{contractAddresses.js → addresses.js} +12 -6
  307. package/dist/coston/deploys/addresses.js.map +1 -0
  308. package/dist/coston/deploys/contracts.json +202 -0
  309. package/dist/coston/deploys/mapper.d.ts +2 -2
  310. package/dist/coston/deploys/mapper.d.ts.map +1 -1
  311. package/dist/coston/deploys/mapper.js +13 -19
  312. package/dist/coston/deploys/mapper.js.map +1 -1
  313. package/dist/coston/index.d.ts +1 -1
  314. package/dist/coston/index.d.ts.map +1 -1
  315. package/dist/coston/index.js +1 -2
  316. package/dist/coston/index.js.map +1 -1
  317. package/dist/coston2/abis.d.ts +4 -0
  318. package/dist/coston2/abis.d.ts.map +1 -0
  319. package/dist/coston2/{abis.coston2.js → abis.js} +5 -3
  320. package/dist/coston2/abis.js.map +1 -0
  321. package/dist/coston2/artifacts/contracts/claiming/implementation/ClaimSetupManager.sol/ClaimSetupManager.json +2 -2
  322. package/dist/coston2/artifacts/contracts/ftso/implementation/Ftso.sol/Ftso.json +36 -4
  323. package/dist/coston2/artifacts/contracts/ftso/implementation/FtsoManager.sol/FtsoManager.json +158 -82
  324. package/dist/coston2/artifacts/contracts/ftso/interface/IIFtso.sol/IIFtso.json +34 -2
  325. package/dist/coston2/artifacts/contracts/ftso/interface/IIFtsoManager.sol/IIFtsoManager.json +54 -0
  326. package/dist/coston2/artifacts/contracts/ftso/lib/FtsoEpoch.sol/FtsoEpoch.json +2 -2
  327. package/dist/coston2/artifacts/contracts/ftso/lib/FtsoManagement.sol/FtsoManagement.json +2 -2
  328. package/dist/coston2/artifacts/contracts/ftso/lib/FtsoManagerSettings.sol/FtsoManagerSettings.json +2 -2
  329. package/dist/coston2/artifacts/contracts/ftso/lib/FtsoMedian.sol/FtsoMedian.json +2 -2
  330. package/dist/coston2/artifacts/contracts/ftso/priceProviderMockContracts/PriceProviderMockContracts.sol/MockFtsoRegistry.json +2 -2
  331. package/dist/coston2/artifacts/contracts/ftso/priceProviderMockContracts/PriceProviderMockContracts.sol/MockPriceSubmitter.json +2 -2
  332. package/dist/coston2/artifacts/contracts/ftso/priceProviderMockContracts/PriceProviderMockContracts.sol/MockVoterWhitelister.json +2 -2
  333. package/dist/coston2/artifacts/contracts/ftso/priceProviderMockContracts/priceProviderMockFtso.sol/MockNpmFtso.json +36 -4
  334. package/dist/coston2/artifacts/contracts/governance/implementation/PollingFoundation.sol/PollingFoundation.json +2 -2
  335. package/dist/coston2/artifacts/contracts/tokenPools/implementation/DistributionToDelegators.sol/DistributionToDelegators.json +2 -2
  336. package/dist/coston2/artifacts/contracts/tokenPools/implementation/FtsoRewardManager.sol/FtsoRewardManager.json +2 -2
  337. package/dist/coston2/artifacts/contracts/utils/implementation/FtsoRegistry.sol/FtsoRegistry.json +2 -2
  338. package/dist/coston2/artifacts/contracts/utils/implementation/FtsoV2Upgrader.sol/FtsoV2Upgrader.json +384 -0
  339. package/dist/coston2/artifacts/contracts/utils/implementation/VoterWhitelister.sol/VoterWhitelister.json +2 -2
  340. package/dist/coston2/deploys/{contractAddresses.d.ts → addresses.d.ts} +9 -3
  341. package/dist/coston2/deploys/addresses.d.ts.map +1 -0
  342. package/dist/coston2/deploys/{contractAddresses.js → addresses.js} +20 -14
  343. package/dist/coston2/deploys/addresses.js.map +1 -0
  344. package/dist/coston2/deploys/contracts.json +252 -0
  345. package/dist/coston2/deploys/mapper.d.ts +2 -2
  346. package/dist/coston2/deploys/mapper.d.ts.map +1 -1
  347. package/dist/coston2/deploys/mapper.js +13 -19
  348. package/dist/coston2/deploys/mapper.js.map +1 -1
  349. package/dist/coston2/index.d.ts +1 -1
  350. package/dist/coston2/index.d.ts.map +1 -1
  351. package/dist/coston2/index.js +1 -2
  352. package/dist/coston2/index.js.map +1 -1
  353. package/dist/flare/abis.d.ts +4 -0
  354. package/dist/flare/abis.d.ts.map +1 -0
  355. package/dist/flare/{abis.flare.js → abis.js} +5 -3
  356. package/dist/flare/abis.js.map +1 -0
  357. package/dist/flare/artifacts/contracts/claiming/implementation/ClaimSetupManager.sol/ClaimSetupManager.json +2 -2
  358. package/dist/flare/artifacts/contracts/ftso/implementation/Ftso.sol/Ftso.json +36 -4
  359. package/dist/flare/artifacts/contracts/ftso/implementation/FtsoManager.sol/FtsoManager.json +158 -82
  360. package/dist/flare/artifacts/contracts/ftso/interface/IIFtso.sol/IIFtso.json +34 -2
  361. package/dist/flare/artifacts/contracts/ftso/interface/IIFtsoManager.sol/IIFtsoManager.json +54 -0
  362. package/dist/flare/artifacts/contracts/ftso/lib/FtsoEpoch.sol/FtsoEpoch.json +2 -2
  363. package/dist/flare/artifacts/contracts/ftso/lib/FtsoManagement.sol/FtsoManagement.json +2 -2
  364. package/dist/flare/artifacts/contracts/ftso/lib/FtsoManagerSettings.sol/FtsoManagerSettings.json +2 -2
  365. package/dist/flare/artifacts/contracts/ftso/lib/FtsoMedian.sol/FtsoMedian.json +2 -2
  366. package/dist/flare/artifacts/contracts/ftso/priceProviderMockContracts/PriceProviderMockContracts.sol/MockFtsoRegistry.json +2 -2
  367. package/dist/flare/artifacts/contracts/ftso/priceProviderMockContracts/PriceProviderMockContracts.sol/MockPriceSubmitter.json +2 -2
  368. package/dist/flare/artifacts/contracts/ftso/priceProviderMockContracts/PriceProviderMockContracts.sol/MockVoterWhitelister.json +2 -2
  369. package/dist/flare/artifacts/contracts/ftso/priceProviderMockContracts/priceProviderMockFtso.sol/MockNpmFtso.json +36 -4
  370. package/dist/flare/artifacts/contracts/governance/implementation/PollingFoundation.sol/PollingFoundation.json +2 -2
  371. package/dist/flare/artifacts/contracts/tokenPools/implementation/DistributionToDelegators.sol/DistributionToDelegators.json +2 -2
  372. package/dist/flare/artifacts/contracts/tokenPools/implementation/FtsoRewardManager.sol/FtsoRewardManager.json +2 -2
  373. package/dist/flare/artifacts/contracts/utils/implementation/FtsoRegistry.sol/FtsoRegistry.json +2 -2
  374. package/dist/flare/artifacts/contracts/utils/implementation/FtsoV2Upgrader.sol/FtsoV2Upgrader.json +384 -0
  375. package/dist/flare/artifacts/contracts/utils/implementation/VoterWhitelister.sol/VoterWhitelister.json +2 -2
  376. package/dist/flare/deploys/{contractAddresses.d.ts → addresses.d.ts} +9 -3
  377. package/dist/flare/deploys/addresses.d.ts.map +1 -0
  378. package/dist/flare/deploys/{contractAddresses.js → addresses.js} +20 -14
  379. package/dist/flare/deploys/addresses.js.map +1 -0
  380. package/dist/flare/deploys/{flare.json → contracts.json} +49 -19
  381. package/dist/flare/deploys/mapper.d.ts +2 -2
  382. package/dist/flare/deploys/mapper.d.ts.map +1 -1
  383. package/dist/flare/deploys/mapper.js +13 -19
  384. package/dist/flare/deploys/mapper.js.map +1 -1
  385. package/dist/flare/index.d.ts +1 -1
  386. package/dist/flare/index.d.ts.map +1 -1
  387. package/dist/flare/index.js +1 -2
  388. package/dist/flare/index.js.map +1 -1
  389. package/dist/index.d.ts.map +1 -1
  390. package/dist/index.js +5 -9
  391. package/dist/index.js.map +1 -1
  392. package/dist/songbird/abis.d.ts +4 -0
  393. package/dist/songbird/abis.d.ts.map +1 -0
  394. package/dist/{coston/abis.coston.js → songbird/abis.js} +3 -3
  395. package/dist/songbird/abis.js.map +1 -0
  396. package/dist/songbird/deploys/{contractAddresses.d.ts → addresses.d.ts} +9 -3
  397. package/dist/songbird/deploys/addresses.d.ts.map +1 -0
  398. package/dist/songbird/deploys/{contractAddresses.js → addresses.js} +9 -3
  399. package/dist/songbird/deploys/addresses.js.map +1 -0
  400. package/dist/songbird/deploys/{songbird.json → contracts.json} +40 -10
  401. package/dist/songbird/deploys/mapper.d.ts +2 -2
  402. package/dist/songbird/deploys/mapper.d.ts.map +1 -1
  403. package/dist/songbird/deploys/mapper.js +13 -19
  404. package/dist/songbird/deploys/mapper.js.map +1 -1
  405. package/dist/songbird/index.d.ts +1 -1
  406. package/dist/songbird/index.d.ts.map +1 -1
  407. package/dist/songbird/index.js +1 -2
  408. package/dist/songbird/index.js.map +1 -1
  409. package/flare/README.md +7 -0
  410. package/flare/artifacts/contracts/addressUpdater/implementation/AddressUpdatable.sol/AddressUpdatable.json +42 -0
  411. package/flare/artifacts/contracts/addressUpdater/implementation/AddressUpdater.sol/AddressUpdater.json +381 -0
  412. package/flare/artifacts/contracts/addressUpdater/interface/IIAddressUpdatable.sol/IIAddressUpdatable.json +29 -0
  413. package/flare/artifacts/contracts/addressUpdater/interface/IIAddressUpdater.sol/IIAddressUpdater.json +105 -0
  414. package/flare/artifacts/contracts/assetRegistry/implementation/FlareAssetRegistry.sol/FlareAssetRegistry.json +525 -0
  415. package/flare/artifacts/contracts/assetRegistry/implementation/WNatRegistryProvider.sol/WNatRegistryProvider.json +113 -0
  416. package/flare/artifacts/contracts/assetRegistry/interface/IIERC20WithMetadata.sol/IIERC20WithMetadata.json +233 -0
  417. package/flare/artifacts/contracts/assetRegistry/interface/IIFlareAssetRegistry.sol/IIFlareAssetRegistry.json +316 -0
  418. package/flare/artifacts/contracts/assetRegistry/interface/IIFlareAssetRegistryProvider.sol/IIFlareAssetRegistryProvider.json +66 -0
  419. package/flare/artifacts/contracts/assetRegistry/lib/StandardAttributes.sol/StandardAttributes.json +10 -0
  420. package/flare/artifacts/contracts/claiming/implementation/ClaimSetupManager.sol/ClaimSetupManager.json +1151 -0
  421. package/flare/artifacts/contracts/claiming/implementation/CloneFactory.sol/CloneFactory.json +10 -0
  422. package/flare/artifacts/contracts/claiming/implementation/DelegationAccount.sol/DelegationAccount.json +346 -0
  423. package/flare/artifacts/contracts/claiming/interface/IIClaimSetupManager.sol/IIClaimSetupManager.json +795 -0
  424. package/flare/artifacts/contracts/claiming/interface/IIDelegationAccount.sol/IIDelegationAccount.json +316 -0
  425. package/flare/artifacts/contracts/ftso/implementation/Ftso.sol/Ftso.json +1039 -0
  426. package/flare/artifacts/contracts/ftso/implementation/FtsoManager.sol/FtsoManager.json +1723 -0
  427. package/flare/artifacts/contracts/ftso/interface/IIFtso.sol/IIFtso.json +888 -0
  428. package/flare/artifacts/contracts/ftso/interface/IIFtsoManager.sol/IIFtsoManager.json +891 -0
  429. package/flare/artifacts/contracts/ftso/interface/IIFtsoManagerV1.sol/IIFtsoManagerV1.json +102 -0
  430. package/flare/artifacts/contracts/ftso/lib/FtsoEpoch.sol/FtsoEpoch.json +10 -0
  431. package/flare/artifacts/contracts/ftso/lib/FtsoManagement.sol/FtsoManagement.json +43 -0
  432. package/flare/artifacts/contracts/ftso/lib/FtsoManagerSettings.sol/FtsoManagerSettings.json +10 -0
  433. package/flare/artifacts/contracts/ftso/lib/FtsoMedian.sol/FtsoMedian.json +10 -0
  434. package/flare/artifacts/contracts/ftso/lib/FtsoVote.sol/FtsoVote.json +10 -0
  435. package/flare/artifacts/contracts/ftso/priceProviderMockContracts/PriceProviderMockContracts.sol/MockFtsoRegistry.json +718 -0
  436. package/flare/artifacts/contracts/ftso/priceProviderMockContracts/PriceProviderMockContracts.sol/MockPriceSubmitter.json +338 -0
  437. package/flare/artifacts/contracts/ftso/priceProviderMockContracts/PriceProviderMockContracts.sol/MockVoterWhitelister.json +236 -0
  438. package/flare/artifacts/contracts/ftso/priceProviderMockContracts/priceProviderMockFtso.sol/MockNpmFtso.json +983 -0
  439. package/flare/artifacts/contracts/genesis/implementation/DistributionTreasury.sol/DistributionTreasury.json +289 -0
  440. package/flare/artifacts/contracts/genesis/implementation/FlareDaemon.sol/FlareDaemon.json +794 -0
  441. package/flare/artifacts/contracts/genesis/implementation/GovernanceSettings.sol/GovernanceSettings.json +219 -0
  442. package/flare/artifacts/contracts/genesis/implementation/IncentivePoolTreasury.sol/IncentivePoolTreasury.json +292 -0
  443. package/flare/artifacts/contracts/genesis/implementation/InitialAirdrop.sol/InitialAirdrop.json +493 -0
  444. package/flare/artifacts/contracts/genesis/implementation/PriceSubmitter.sol/PriceSubmitter.json +569 -0
  445. package/flare/artifacts/contracts/genesis/implementation/StateConnector.sol/StateConnector.json +324 -0
  446. package/flare/artifacts/contracts/genesis/interface/IFlareDaemonize.sol/IFlareDaemonize.json +50 -0
  447. package/flare/artifacts/contracts/genesis/interface/IFtsoGenesis.sol/IFtsoGenesis.json +63 -0
  448. package/flare/artifacts/contracts/genesis/interface/IFtsoManagerGenesis.sol/IFtsoManagerGenesis.json +24 -0
  449. package/flare/artifacts/contracts/genesis/interface/IFtsoRegistryGenesis.sol/IFtsoRegistryGenesis.json +30 -0
  450. package/flare/artifacts/contracts/genesis/interface/IIPriceSubmitter.sol/IIPriceSubmitter.json +283 -0
  451. package/flare/artifacts/contracts/genesis/interface/IInflationGenesis.sol/IInflationGenesis.json +18 -0
  452. package/flare/artifacts/contracts/governance/implementation/Governed.sol/Governed.json +220 -0
  453. package/flare/artifacts/contracts/governance/implementation/GovernedAtGenesis.sol/GovernedAtGenesis.json +233 -0
  454. package/flare/artifacts/contracts/governance/implementation/GovernedBase.sol/GovernedBase.json +209 -0
  455. package/flare/artifacts/contracts/governance/implementation/Governor.sol/Governor.json +653 -0
  456. package/flare/artifacts/contracts/governance/implementation/GovernorProposals.sol/GovernorProposals.json +24 -0
  457. package/flare/artifacts/contracts/governance/implementation/GovernorProposer.sol/GovernorProposer.json +265 -0
  458. package/flare/artifacts/contracts/governance/implementation/GovernorVotePower.sol/GovernorVotePower.json +24 -0
  459. package/flare/artifacts/contracts/governance/implementation/GovernorVotes.sol/GovernorVotes.json +10 -0
  460. package/flare/artifacts/contracts/governance/implementation/PollingFoundation.sol/PollingFoundation.json +1070 -0
  461. package/flare/artifacts/contracts/governance/implementation/PollingFtso.sol/PollingFtso.json +1187 -0
  462. package/flare/artifacts/contracts/governance/interface/IIGovernorProposer.sol/IIGovernorProposer.json +30 -0
  463. package/flare/artifacts/contracts/governance/interface/IIPollingFoundation.sol/IIPollingFoundation.json +640 -0
  464. package/flare/artifacts/contracts/inflation/implementation/Inflation.sol/Inflation.json +926 -0
  465. package/flare/artifacts/contracts/inflation/implementation/InflationAllocation.sol/InflationAllocation.json +463 -0
  466. package/flare/artifacts/contracts/inflation/implementation/Supply.sol/Supply.json +543 -0
  467. package/flare/artifacts/contracts/inflation/interface/IIInflationAllocation.sol/IIInflationAllocation.json +49 -0
  468. package/flare/artifacts/contracts/inflation/interface/IIInflationPercentageProvider.sol/IIInflationPercentageProvider.json +24 -0
  469. package/flare/artifacts/contracts/inflation/interface/IIInflationReceiver.sol/IIInflationReceiver.json +57 -0
  470. package/flare/artifacts/contracts/inflation/interface/IIInflationSharingPercentageProvider.sol/IIInflationSharingPercentageProvider.json +36 -0
  471. package/flare/artifacts/contracts/inflation/interface/IISupply.sol/IISupply.json +82 -0
  472. package/flare/artifacts/contracts/inflation/lib/InflationAnnum.sol/InflationAnnum.json +10 -0
  473. package/flare/artifacts/contracts/inflation/lib/InflationAnnums.sol/InflationAnnums.json +10 -0
  474. package/flare/artifacts/contracts/inflation/lib/RewardService.sol/RewardService.json +30 -0
  475. package/flare/artifacts/contracts/inflation/lib/RewardServices.sol/RewardServices.json +49 -0
  476. package/flare/artifacts/contracts/mockXAsset/interface/ICollateralizable.sol/ICollateralizable.json +234 -0
  477. package/flare/artifacts/contracts/token/implementation/CheckPointable.sol/CheckPointable.json +142 -0
  478. package/flare/artifacts/contracts/token/implementation/CleanupBlockNumberManager.sol/CleanupBlockNumberManager.json +389 -0
  479. package/flare/artifacts/contracts/token/implementation/Delegatable.sol/Delegatable.json +235 -0
  480. package/flare/artifacts/contracts/token/implementation/GovernanceVotePower.sol/GovernanceVotePower.json +324 -0
  481. package/flare/artifacts/contracts/token/implementation/VPContract.sol/VPContract.json +798 -0
  482. package/flare/artifacts/contracts/token/implementation/VPToken.sol/VPToken.json +1264 -0
  483. package/flare/artifacts/contracts/token/implementation/WNat.sol/WNat.json +1357 -0
  484. package/flare/artifacts/contracts/token/interface/IICleanable.sol/IICleanable.json +50 -0
  485. package/flare/artifacts/contracts/token/interface/IIGovernanceVotePower.sol/IIGovernanceVotePower.json +252 -0
  486. package/flare/artifacts/contracts/token/interface/IIVPContract.sol/IIVPContract.json +620 -0
  487. package/flare/artifacts/contracts/token/interface/IIVPToken.sol/IIVPToken.json +832 -0
  488. package/flare/artifacts/contracts/token/lib/CheckPointHistory.sol/CheckPointHistory.json +10 -0
  489. package/flare/artifacts/contracts/token/lib/CheckPointHistoryCache.sol/CheckPointHistoryCache.json +10 -0
  490. package/flare/artifacts/contracts/token/lib/CheckPointsByAddress.sol/CheckPointsByAddress.json +10 -0
  491. package/flare/artifacts/contracts/token/lib/DelegateCheckPointHistory.sol/DelegateCheckPointHistory.json +10 -0
  492. package/flare/artifacts/contracts/token/lib/DelegateCheckPointsByAddress.sol/DelegateCheckPointsByAddress.json +10 -0
  493. package/flare/artifacts/contracts/token/lib/DelegationHistory.sol/DelegationHistory.json +24 -0
  494. package/flare/artifacts/contracts/token/lib/ExplicitDelegation.sol/ExplicitDelegation.json +10 -0
  495. package/flare/artifacts/contracts/token/lib/IICombinedNatBalance.sol/IICombinedNatBalance.json +54 -0
  496. package/flare/artifacts/contracts/token/lib/PercentageDelegation.sol/PercentageDelegation.json +24 -0
  497. package/flare/artifacts/contracts/token/lib/VotePower.sol/VotePower.json +10 -0
  498. package/flare/artifacts/contracts/token/lib/VotePowerCache.sol/VotePowerCache.json +10 -0
  499. package/flare/artifacts/contracts/tokenPools/implementation/AttestationProviderRewardManager.sol/AttestationProviderRewardManager.json +741 -0
  500. package/flare/artifacts/contracts/tokenPools/implementation/DistributionToDelegators.sol/DistributionToDelegators.json +1038 -0
  501. package/flare/artifacts/contracts/tokenPools/implementation/Escrow.sol/Escrow.json +769 -0
  502. package/flare/artifacts/contracts/tokenPools/implementation/FtsoRewardManager.sol/FtsoRewardManager.json +1412 -0
  503. package/flare/artifacts/contracts/tokenPools/implementation/GenericRewardManager.sol/GenericRewardManager.json +720 -0
  504. package/flare/artifacts/contracts/tokenPools/implementation/IncentivePool.sol/IncentivePool.json +927 -0
  505. package/flare/artifacts/contracts/tokenPools/implementation/IncentivePoolAllocation.sol/IncentivePoolAllocation.json +463 -0
  506. package/flare/artifacts/contracts/tokenPools/implementation/ValidatorRewardManager.sol/ValidatorRewardManager.json +741 -0
  507. package/flare/artifacts/contracts/tokenPools/interface/IIFtsoRewardManager.sol/IIFtsoRewardManager.json +962 -0
  508. package/flare/artifacts/contracts/tokenPools/interface/IIGenericRewardManager.sol/IIGenericRewardManager.json +413 -0
  509. package/flare/artifacts/contracts/tokenPools/interface/IIIncentivePoolAllocation.sol/IIIncentivePoolAllocation.json +49 -0
  510. package/flare/artifacts/contracts/tokenPools/interface/IIIncentivePoolPercentageProvider.sol/IIIncentivePoolPercentageProvider.json +24 -0
  511. package/flare/artifacts/contracts/tokenPools/interface/IIIncentivePoolReceiver.sol/IIIncentivePoolReceiver.json +57 -0
  512. package/flare/artifacts/contracts/tokenPools/interface/IIIncentivePoolSharingPercentageProvider.sol/IIIncentivePoolSharingPercentageProvider.json +36 -0
  513. package/flare/artifacts/contracts/tokenPools/interface/IITokenPool.sol/IITokenPool.json +34 -0
  514. package/flare/artifacts/contracts/tokenPools/lib/DataProviderFee.sol/DataProviderFee.json +10 -0
  515. package/flare/artifacts/contracts/tokenPools/lib/IncentivePoolAnnum.sol/IncentivePoolAnnum.json +10 -0
  516. package/flare/artifacts/contracts/tokenPools/lib/IncentivePoolAnnums.sol/IncentivePoolAnnums.json +10 -0
  517. package/flare/artifacts/contracts/tokenPools/lib/IncentivePoolRewardService.sol/IncentivePoolRewardService.json +30 -0
  518. package/flare/artifacts/contracts/tokenPools/lib/IncentivePoolRewardServices.sol/IncentivePoolRewardServices.json +49 -0
  519. package/flare/artifacts/contracts/userInterfaces/IClaimSetupManager.sol/IClaimSetupManager.json +665 -0
  520. package/flare/artifacts/contracts/userInterfaces/IDelegationAccount.sol/IDelegationAccount.json +144 -0
  521. package/flare/artifacts/contracts/userInterfaces/IDistributionToDelegators.sol/IDistributionToDelegators.json +258 -0
  522. package/flare/artifacts/contracts/userInterfaces/IFlareAssetRegistry.sol/IFlareAssetRegistry.json +241 -0
  523. package/flare/artifacts/contracts/userInterfaces/IFlareContractRegistry.sol/IFlareContractRegistry.json +105 -0
  524. package/flare/artifacts/contracts/userInterfaces/IFtso.sol/IFtso.json +475 -0
  525. package/flare/artifacts/contracts/userInterfaces/IFtsoManager.sol/IFtsoManager.json +376 -0
  526. package/flare/artifacts/contracts/userInterfaces/IFtsoRegistry.sol/IFtsoRegistry.json +445 -0
  527. package/flare/artifacts/contracts/userInterfaces/IFtsoRewardManager.sol/IFtsoRewardManager.json +702 -0
  528. package/flare/artifacts/contracts/userInterfaces/IGenericRewardManager.sol/IGenericRewardManager.json +248 -0
  529. package/flare/artifacts/contracts/userInterfaces/IGovernanceSettings.sol/IGovernanceSettings.json +69 -0
  530. package/flare/artifacts/contracts/userInterfaces/IGovernanceVotePower.sol/IGovernanceVotePower.json +117 -0
  531. package/flare/artifacts/contracts/userInterfaces/IGovernor.sol/IGovernor.json +484 -0
  532. package/flare/artifacts/contracts/userInterfaces/IPollingFtso.sol/IPollingFtso.json +639 -0
  533. package/flare/artifacts/contracts/userInterfaces/IPriceSubmitter.sol/IPriceSubmitter.json +221 -0
  534. package/flare/artifacts/contracts/userInterfaces/IVPContractEvents.sol/IVPContractEvents.json +73 -0
  535. package/flare/artifacts/contracts/userInterfaces/IVPToken.sol/IVPToken.json +700 -0
  536. package/flare/artifacts/contracts/userInterfaces/IValidatorRegistry.sol/IValidatorRegistry.json +136 -0
  537. package/flare/artifacts/contracts/userInterfaces/IVoterWhitelister.sol/IVoterWhitelister.json +199 -0
  538. package/flare/artifacts/contracts/userInterfaces/IWNat.sol/IWNat.json +62 -0
  539. package/flare/artifacts/contracts/utils/implementation/AddressSet.sol/AddressSet.json +10 -0
  540. package/flare/artifacts/contracts/utils/implementation/DateTimeLibrary.sol/BokkyPooBahsDateTimeLibrary.json +154 -0
  541. package/flare/artifacts/contracts/utils/implementation/FlareContractRegistry.sol/FlareContractRegistry.json +147 -0
  542. package/flare/artifacts/contracts/utils/implementation/FtsoRegistry.sol/FtsoRegistry.json +769 -0
  543. package/flare/artifacts/contracts/utils/implementation/FtsoRegistryProxy.sol/FtsoRegistryProxy.json +272 -0
  544. package/flare/artifacts/contracts/utils/implementation/FtsoV2Upgrader.sol/FtsoV2Upgrader.json +384 -0
  545. package/flare/artifacts/contracts/utils/implementation/FundDistributor.sol/FundDistributor.json +71 -0
  546. package/flare/artifacts/contracts/utils/implementation/GovernedAndFlareDaemonized.sol/GovernedAndFlareDaemonized.json +238 -0
  547. package/flare/artifacts/contracts/utils/implementation/ProxyGoverned.sol/ProxyGoverned.json +256 -0
  548. package/flare/artifacts/contracts/utils/implementation/RevertErrorTracking.sol/RevertErrorTracking.json +131 -0
  549. package/flare/artifacts/contracts/utils/implementation/SafePct.sol/SafePct.json +10 -0
  550. package/flare/artifacts/contracts/utils/implementation/ValidatorRegistry.sol/ValidatorRegistry.json +149 -0
  551. package/flare/artifacts/contracts/utils/implementation/VoterWhitelister.sol/VoterWhitelister.json +653 -0
  552. package/flare/artifacts/contracts/utils/interface/IIFtsoRegistry.sol/IIFtsoRegistry.json +477 -0
  553. package/flare/artifacts/contracts/utils/interface/IIRandomProvider.sol/IIRandomProvider.json +60 -0
  554. package/flare/artifacts/contracts/utils/interface/IIVoterWhitelister.sol/IIVoterWhitelister.json +308 -0
  555. package/flare/artifacts/contracts/utils/interface/IUpdateValidators.sol/IUpdateValidators.json +18 -0
  556. package/flare/deploys/contracts.json +252 -0
  557. package/package.json +22 -27
  558. package/songbird/README.md +7 -0
  559. package/songbird/artifacts/contracts/addressUpdater/implementation/AddressUpdatable.sol/AddressUpdatable.json +42 -0
  560. package/songbird/artifacts/contracts/addressUpdater/implementation/AddressUpdater.sol/AddressUpdater.json +381 -0
  561. package/songbird/artifacts/contracts/addressUpdater/interface/IIAddressUpdatable.sol/IIAddressUpdatable.json +29 -0
  562. package/songbird/artifacts/contracts/addressUpdater/interface/IIAddressUpdater.sol/IIAddressUpdater.json +105 -0
  563. package/songbird/artifacts/contracts/assetRegistry/implementation/FlareAssetRegistry.sol/FlareAssetRegistry.json +525 -0
  564. package/songbird/artifacts/contracts/assetRegistry/implementation/WNatRegistryProvider.sol/WNatRegistryProvider.json +113 -0
  565. package/songbird/artifacts/contracts/assetRegistry/interface/IIERC20WithMetadata.sol/IIERC20WithMetadata.json +233 -0
  566. package/songbird/artifacts/contracts/assetRegistry/interface/IIFlareAssetRegistry.sol/IIFlareAssetRegistry.json +316 -0
  567. package/songbird/artifacts/contracts/assetRegistry/interface/IIFlareAssetRegistryProvider.sol/IIFlareAssetRegistryProvider.json +66 -0
  568. package/songbird/artifacts/contracts/assetRegistry/lib/StandardAttributes.sol/StandardAttributes.json +10 -0
  569. package/songbird/artifacts/contracts/claiming/implementation/ClaimSetupManager.sol/ClaimSetupManager.json +1151 -0
  570. package/songbird/artifacts/contracts/claiming/implementation/CloneFactory.sol/CloneFactory.json +10 -0
  571. package/songbird/artifacts/contracts/claiming/implementation/DelegationAccount.sol/DelegationAccount.json +346 -0
  572. package/songbird/artifacts/contracts/claiming/interface/IIClaimSetupManager.sol/IIClaimSetupManager.json +795 -0
  573. package/songbird/artifacts/contracts/claiming/interface/IIDelegationAccount.sol/IIDelegationAccount.json +316 -0
  574. package/songbird/artifacts/contracts/ftso/implementation/Ftso.sol/Ftso.json +1104 -0
  575. package/songbird/artifacts/contracts/ftso/implementation/FtsoManager.sol/FtsoManager.json +1723 -0
  576. package/songbird/artifacts/contracts/ftso/interface/IIFtso.sol/IIFtso.json +953 -0
  577. package/songbird/artifacts/contracts/ftso/interface/IIFtsoManager.sol/IIFtsoManager.json +878 -0
  578. package/songbird/artifacts/contracts/ftso/interface/IIFtsoManagerV1.sol/IIFtsoManagerV1.json +102 -0
  579. package/songbird/artifacts/contracts/ftso/lib/FtsoEpoch.sol/FtsoEpoch.json +10 -0
  580. package/songbird/artifacts/contracts/ftso/lib/FtsoManagement.sol/FtsoManagement.json +43 -0
  581. package/songbird/artifacts/contracts/ftso/lib/FtsoManagerSettings.sol/FtsoManagerSettings.json +10 -0
  582. package/songbird/artifacts/contracts/ftso/lib/FtsoMedian.sol/FtsoMedian.json +10 -0
  583. package/songbird/artifacts/contracts/ftso/lib/FtsoVote.sol/FtsoVote.json +10 -0
  584. package/songbird/artifacts/contracts/ftso/priceProviderMockContracts/PriceProviderMockContracts.sol/MockFtsoRegistry.json +624 -0
  585. package/songbird/artifacts/contracts/ftso/priceProviderMockContracts/PriceProviderMockContracts.sol/MockPriceSubmitter.json +241 -0
  586. package/songbird/artifacts/contracts/ftso/priceProviderMockContracts/PriceProviderMockContracts.sol/MockVoterWhitelister.json +236 -0
  587. package/songbird/artifacts/contracts/ftso/priceProviderMockContracts/priceProviderMockFtso.sol/MockNpmFtso.json +1048 -0
  588. package/songbird/artifacts/contracts/genesis/implementation/FlareDaemon.sol/FlareDaemon.json +676 -0
  589. package/songbird/artifacts/contracts/genesis/implementation/GovernanceSettings.sol/GovernanceSettings.json +224 -0
  590. package/songbird/artifacts/contracts/genesis/implementation/PriceSubmitter.sol/PriceSubmitter.json +407 -0
  591. package/songbird/artifacts/contracts/genesis/implementation/StateConnector.sol/StateConnector.json +324 -0
  592. package/songbird/artifacts/contracts/genesis/interface/IFlareDaemonize.sol/IFlareDaemonize.json +37 -0
  593. package/songbird/artifacts/contracts/genesis/interface/IFtsoGenesis.sol/IFtsoGenesis.json +91 -0
  594. package/songbird/artifacts/contracts/genesis/interface/IFtsoManagerGenesis.sol/IFtsoManagerGenesis.json +24 -0
  595. package/songbird/artifacts/contracts/genesis/interface/IFtsoRegistryGenesis.sol/IFtsoRegistryGenesis.json +30 -0
  596. package/songbird/artifacts/contracts/genesis/interface/IIPriceSubmitter.sol/IIPriceSubmitter.json +285 -0
  597. package/songbird/artifacts/contracts/genesis/interface/IInflationGenesis.sol/IInflationGenesis.json +18 -0
  598. package/songbird/artifacts/contracts/governance/implementation/Governed.sol/Governed.json +126 -0
  599. package/songbird/artifacts/contracts/governance/implementation/GovernedAtGenesis.sol/GovernedAtGenesis.json +139 -0
  600. package/songbird/artifacts/contracts/governance/implementation/GovernedBase.sol/GovernedBase.json +115 -0
  601. package/songbird/artifacts/contracts/governance/implementation/GovernedBaseV2.sol/GovernedBaseV2.json +209 -0
  602. package/songbird/artifacts/contracts/governance/implementation/GovernedV2.sol/GovernedV2.json +220 -0
  603. package/songbird/artifacts/contracts/governance/implementation/Governor.sol/Governor.json +653 -0
  604. package/songbird/artifacts/contracts/governance/implementation/GovernorProposals.sol/GovernorProposals.json +24 -0
  605. package/songbird/artifacts/contracts/governance/implementation/GovernorProposer.sol/GovernorProposer.json +265 -0
  606. package/songbird/artifacts/contracts/governance/implementation/GovernorVotePower.sol/GovernorVotePower.json +24 -0
  607. package/songbird/artifacts/contracts/governance/implementation/GovernorVotes.sol/GovernorVotes.json +10 -0
  608. package/songbird/artifacts/contracts/governance/implementation/InflationAllocation.sol/InflationAllocation.json +351 -0
  609. package/songbird/artifacts/contracts/governance/implementation/PollingFoundation.sol/PollingFoundation.json +1065 -0
  610. package/songbird/artifacts/contracts/governance/implementation/PollingFtso.sol/PollingFtso.json +1187 -0
  611. package/songbird/artifacts/contracts/governance/interface/IIGovernorProposer.sol/IIGovernorProposer.json +30 -0
  612. package/songbird/artifacts/contracts/governance/interface/IIPollingFoundation.sol/IIPollingFoundation.json +640 -0
  613. package/songbird/artifacts/contracts/inflation/implementation/Inflation.sol/Inflation.json +879 -0
  614. package/songbird/artifacts/contracts/inflation/implementation/Supply.sol/Supply.json +403 -0
  615. package/songbird/artifacts/contracts/inflation/interface/IIInflationPercentageProvider.sol/IIInflationPercentageProvider.json +24 -0
  616. package/songbird/artifacts/contracts/inflation/interface/IIInflationReceiver.sol/IIInflationReceiver.json +44 -0
  617. package/songbird/artifacts/contracts/inflation/interface/IIInflationSharingPercentageProvider.sol/IIInflationSharingPercentageProvider.json +36 -0
  618. package/songbird/artifacts/contracts/inflation/interface/IISupply.sol/IISupply.json +88 -0
  619. package/songbird/artifacts/contracts/inflation/lib/InflationAnnum.sol/InflationAnnum.json +10 -0
  620. package/songbird/artifacts/contracts/inflation/lib/InflationAnnums.sol/InflationAnnums.json +10 -0
  621. package/songbird/artifacts/contracts/inflation/lib/RewardService.sol/RewardService.json +30 -0
  622. package/songbird/artifacts/contracts/inflation/lib/RewardServices.sol/RewardServices.json +49 -0
  623. package/songbird/artifacts/contracts/mockXAsset/interface/ICollateralizable.sol/ICollateralizable.json +234 -0
  624. package/songbird/artifacts/contracts/token/implementation/CheckPointable.sol/CheckPointable.json +129 -0
  625. package/songbird/artifacts/contracts/token/implementation/CleanupBlockNumberManager.sol/CleanupBlockNumberManager.json +389 -0
  626. package/songbird/artifacts/contracts/token/implementation/Delegatable.sol/Delegatable.json +222 -0
  627. package/songbird/artifacts/contracts/token/implementation/GovernanceVotePower.sol/GovernanceVotePower.json +324 -0
  628. package/songbird/artifacts/contracts/token/implementation/VPContract.sol/VPContract.json +774 -0
  629. package/songbird/artifacts/contracts/token/implementation/VPToken.sol/VPToken.json +1102 -0
  630. package/songbird/artifacts/contracts/token/implementation/WNat.sol/WNat.json +1195 -0
  631. package/songbird/artifacts/contracts/token/interface/IICleanable.sol/IICleanable.json +63 -0
  632. package/songbird/artifacts/contracts/token/interface/IIGovernanceVotePower.sol/IIGovernanceVotePower.json +252 -0
  633. package/songbird/artifacts/contracts/token/interface/IIVPContract.sol/IIVPContract.json +609 -0
  634. package/songbird/artifacts/contracts/token/interface/IIVPToken.sol/IIVPToken.json +790 -0
  635. package/songbird/artifacts/contracts/token/lib/CheckPointHistory.sol/CheckPointHistory.json +10 -0
  636. package/songbird/artifacts/contracts/token/lib/CheckPointHistoryCache.sol/CheckPointHistoryCache.json +10 -0
  637. package/songbird/artifacts/contracts/token/lib/CheckPointsByAddress.sol/CheckPointsByAddress.json +10 -0
  638. package/songbird/artifacts/contracts/token/lib/DelegateCheckPointHistory.sol/DelegateCheckPointHistory.json +10 -0
  639. package/songbird/artifacts/contracts/token/lib/DelegateCheckPointsByAddress.sol/DelegateCheckPointsByAddress.json +10 -0
  640. package/songbird/artifacts/contracts/token/lib/DelegationHistory.sol/DelegationHistory.json +24 -0
  641. package/songbird/artifacts/contracts/token/lib/ExplicitDelegation.sol/ExplicitDelegation.json +10 -0
  642. package/songbird/artifacts/contracts/token/lib/PercentageDelegation.sol/PercentageDelegation.json +24 -0
  643. package/songbird/artifacts/contracts/token/lib/VotePower.sol/VotePower.json +10 -0
  644. package/songbird/artifacts/contracts/token/lib/VotePowerCache.sol/VotePowerCache.json +10 -0
  645. package/songbird/artifacts/contracts/tokenPools/implementation/FtsoRewardManager.sol/FtsoRewardManager.json +1412 -0
  646. package/songbird/artifacts/contracts/tokenPools/interface/IIFtsoRewardManager.sol/IIFtsoRewardManager.json +949 -0
  647. package/songbird/artifacts/contracts/tokenPools/interface/IITokenPool.sol/IITokenPool.json +34 -0
  648. package/songbird/artifacts/contracts/tokenPools/lib/DataProviderFee.sol/DataProviderFee.json +10 -0
  649. package/songbird/artifacts/contracts/userInterfaces/IClaimSetupManager.sol/IClaimSetupManager.json +665 -0
  650. package/songbird/artifacts/contracts/userInterfaces/IDelegationAccount.sol/IDelegationAccount.json +144 -0
  651. package/songbird/artifacts/contracts/userInterfaces/IFlareAssetRegistry.sol/IFlareAssetRegistry.json +241 -0
  652. package/songbird/artifacts/contracts/userInterfaces/IFlareContractRegistry.sol/IFlareContractRegistry.json +105 -0
  653. package/songbird/artifacts/contracts/userInterfaces/IFtso.sol/IFtso.json +512 -0
  654. package/songbird/artifacts/contracts/userInterfaces/IFtsoManager.sol/IFtsoManager.json +376 -0
  655. package/songbird/artifacts/contracts/userInterfaces/IFtsoRegistry.sol/IFtsoRegistry.json +445 -0
  656. package/songbird/artifacts/contracts/userInterfaces/IFtsoRewardManager.sol/IFtsoRewardManager.json +702 -0
  657. package/songbird/artifacts/contracts/userInterfaces/IGovernanceSettings.sol/IGovernanceSettings.json +69 -0
  658. package/songbird/artifacts/contracts/userInterfaces/IGovernanceVotePower.sol/IGovernanceVotePower.json +117 -0
  659. package/songbird/artifacts/contracts/userInterfaces/IGovernor.sol/IGovernor.json +484 -0
  660. package/songbird/artifacts/contracts/userInterfaces/IPollingFtso.sol/IPollingFtso.json +639 -0
  661. package/songbird/artifacts/contracts/userInterfaces/IPriceSubmitter.sol/IPriceSubmitter.json +200 -0
  662. package/songbird/artifacts/contracts/userInterfaces/IVPContractEvents.sol/IVPContractEvents.json +73 -0
  663. package/songbird/artifacts/contracts/userInterfaces/IVPToken.sol/IVPToken.json +658 -0
  664. package/songbird/artifacts/contracts/userInterfaces/IVoterWhitelister.sol/IVoterWhitelister.json +199 -0
  665. package/songbird/artifacts/contracts/userInterfaces/IWNat.sol/IWNat.json +62 -0
  666. package/songbird/artifacts/contracts/utils/implementation/AddressSet.sol/AddressSet.json +10 -0
  667. package/songbird/artifacts/contracts/utils/implementation/DateTimeLibrary.sol/BokkyPooBahsDateTimeLibrary.json +154 -0
  668. package/songbird/artifacts/contracts/utils/implementation/FlareContractRegistry.sol/FlareContractRegistry.json +147 -0
  669. package/songbird/artifacts/contracts/utils/implementation/FtsoRegistry.sol/FtsoRegistry.json +769 -0
  670. package/songbird/artifacts/contracts/utils/implementation/FtsoRegistryProxy.sol/FtsoRegistryProxy.json +272 -0
  671. package/songbird/artifacts/contracts/utils/implementation/FtsoV2Upgrader.sol/FtsoV2Upgrader.json +440 -0
  672. package/songbird/artifacts/contracts/utils/implementation/GovernedAndFlareDaemonized.sol/GovernedAndFlareDaemonized.json +144 -0
  673. package/songbird/artifacts/contracts/utils/implementation/GovernedAndFlareDaemonizedV2.sol/GovernedAndFlareDaemonizedV2.json +238 -0
  674. package/songbird/artifacts/contracts/utils/implementation/ProxyGoverned.sol/ProxyGoverned.json +256 -0
  675. package/songbird/artifacts/contracts/utils/implementation/RevertErrorTracking.sol/RevertErrorTracking.json +131 -0
  676. package/songbird/artifacts/contracts/utils/implementation/SafePct.sol/SafePct.json +10 -0
  677. package/songbird/artifacts/contracts/utils/implementation/VoterWhitelister.sol/VoterWhitelister.json +653 -0
  678. package/songbird/artifacts/contracts/utils/interface/IIFtsoRegistry.sol/IIFtsoRegistry.json +477 -0
  679. package/songbird/artifacts/contracts/utils/interface/IIFtsoRegistryV1.sol/IIFtsoRegistryV1.json +120 -0
  680. package/songbird/artifacts/contracts/utils/interface/IIRandomProvider.sol/IIRandomProvider.json +60 -0
  681. package/songbird/artifacts/contracts/utils/interface/IIVoterWhitelister.sol/IIVoterWhitelister.json +308 -0
  682. package/songbird/artifacts/contracts/utils/interface/IUpdateValidators.sol/IUpdateValidators.json +18 -0
  683. package/songbird/deploys/contracts.json +202 -0
  684. package/dist/coston/abis.coston.d.ts +0 -4
  685. package/dist/coston/abis.coston.d.ts.map +0 -1
  686. package/dist/coston/abis.coston.js.map +0 -1
  687. package/dist/coston/artifacts/contracts/governance/implementation/InflationAllocation.sol/InflationAllocation.json +0 -351
  688. package/dist/coston/artifacts/contracts/inflation/interface/IIInflationPercentageProvider.sol/IIInflationPercentageProvider.json +0 -24
  689. package/dist/coston/artifacts/contracts/inflation/lib/InflationAnnum.sol/InflationAnnum.json +0 -10
  690. package/dist/coston/artifacts/contracts/inflation/lib/InflationAnnums.sol/InflationAnnums.json +0 -10
  691. package/dist/coston/artifacts/contracts/inflation/lib/RewardService.sol/RewardService.json +0 -30
  692. package/dist/coston/deploys/contractAddresses.d.ts.map +0 -1
  693. package/dist/coston/deploys/contractAddresses.js.map +0 -1
  694. package/dist/coston2/abis.coston2.d.ts +0 -4
  695. package/dist/coston2/abis.coston2.d.ts.map +0 -1
  696. package/dist/coston2/abis.coston2.js.map +0 -1
  697. package/dist/coston2/deploys/contractAddresses.d.ts.map +0 -1
  698. package/dist/coston2/deploys/contractAddresses.js.map +0 -1
  699. package/dist/flare/abis.flare.d.ts +0 -4
  700. package/dist/flare/abis.flare.d.ts.map +0 -1
  701. package/dist/flare/abis.flare.js.map +0 -1
  702. package/dist/flare/deploys/contractAddresses.d.ts.map +0 -1
  703. package/dist/flare/deploys/contractAddresses.js.map +0 -1
  704. package/dist/package.json +0 -28
  705. package/dist/songbird/abis.songbird.d.ts +0 -4
  706. package/dist/songbird/abis.songbird.d.ts.map +0 -1
  707. package/dist/songbird/abis.songbird.js.map +0 -1
  708. package/dist/songbird/deploys/contractAddresses.d.ts.map +0 -1
  709. package/dist/songbird/deploys/contractAddresses.js.map +0 -1
@@ -20,11 +20,6 @@
20
20
  "name": "_addressUpdater",
21
21
  "type": "address"
22
22
  },
23
- {
24
- "internalType": "contract IIPriceSubmitter",
25
- "name": "_priceSubmitter",
26
- "type": "address"
27
- },
28
23
  {
29
24
  "internalType": "contract IIFtsoManagerV1",
30
25
  "name": "_oldFtsoManager",
@@ -77,6 +72,12 @@
77
72
  "name": "AccruingUnearnedRewardsFailed",
78
73
  "type": "event"
79
74
  },
75
+ {
76
+ "anonymous": false,
77
+ "inputs": [],
78
+ "name": "ChillingNonrevealingDataProvidersFailed",
79
+ "type": "event"
80
+ },
80
81
  {
81
82
  "anonymous": false,
82
83
  "inputs": [
@@ -395,6 +396,25 @@
395
396
  "name": "UpdatingActiveValidatorsTriggerFailed",
396
397
  "type": "event"
397
398
  },
399
+ {
400
+ "anonymous": false,
401
+ "inputs": [
402
+ {
403
+ "indexed": false,
404
+ "internalType": "bool",
405
+ "name": "useGoodRandom",
406
+ "type": "bool"
407
+ },
408
+ {
409
+ "indexed": false,
410
+ "internalType": "uint256",
411
+ "name": "maxWaitForGoodRandomSeconds",
412
+ "type": "uint256"
413
+ }
414
+ ],
415
+ "name": "UseGoodRandomSet",
416
+ "type": "event"
417
+ },
398
418
  {
399
419
  "inputs": [],
400
420
  "name": "MAX_TRUSTED_ADDRESSES_LENGTH",
@@ -563,24 +583,6 @@
563
583
  "stateMutability": "view",
564
584
  "type": "function"
565
585
  },
566
- {
567
- "inputs": [],
568
- "name": "ftsoManagement",
569
- "outputs": [
570
- {
571
- "internalType": "contract IIFtsoRegistry",
572
- "name": "ftsoRegistry",
573
- "type": "address"
574
- },
575
- {
576
- "internalType": "contract IIVoterWhitelister",
577
- "name": "voterWhitelister",
578
- "type": "address"
579
- }
580
- ],
581
- "stateMutability": "view",
582
- "type": "function"
583
- },
584
586
  {
585
587
  "inputs": [],
586
588
  "name": "ftsoRegistry",
@@ -679,6 +681,25 @@
679
681
  "stateMutability": "view",
680
682
  "type": "function"
681
683
  },
684
+ {
685
+ "inputs": [
686
+ {
687
+ "internalType": "contract IIFtso",
688
+ "name": "_ftso",
689
+ "type": "address"
690
+ }
691
+ ],
692
+ "name": "getElasticBandWidthPPMFtso",
693
+ "outputs": [
694
+ {
695
+ "internalType": "uint256",
696
+ "name": "",
697
+ "type": "uint256"
698
+ }
699
+ ],
700
+ "stateMutability": "view",
701
+ "type": "function"
702
+ },
682
703
  {
683
704
  "inputs": [],
684
705
  "name": "getFallbackMode",
@@ -749,6 +770,11 @@
749
770
  "name": "_lowNatTurnoutThresholdBIPS",
750
771
  "type": "uint256"
751
772
  },
773
+ {
774
+ "internalType": "uint256",
775
+ "name": "_elasticBandRewardBIPS",
776
+ "type": "uint256"
777
+ },
752
778
  {
753
779
  "internalType": "uint256",
754
780
  "name": "_rewardExpiryOffsetSeconds",
@@ -931,6 +957,19 @@
931
957
  "stateMutability": "view",
932
958
  "type": "function"
933
959
  },
960
+ {
961
+ "inputs": [],
962
+ "name": "getUpdateGovernanceParametersTs",
963
+ "outputs": [
964
+ {
965
+ "internalType": "uint256",
966
+ "name": "",
967
+ "type": "uint256"
968
+ }
969
+ ],
970
+ "stateMutability": "view",
971
+ "type": "function"
972
+ },
934
973
  {
935
974
  "inputs": [],
936
975
  "name": "getVotePowerIntervalFraction",
@@ -996,6 +1035,19 @@
996
1035
  "stateMutability": "view",
997
1036
  "type": "function"
998
1037
  },
1038
+ {
1039
+ "inputs": [],
1040
+ "name": "maxWaitForGoodRandomSeconds",
1041
+ "outputs": [
1042
+ {
1043
+ "internalType": "uint256",
1044
+ "name": "",
1045
+ "type": "uint256"
1046
+ }
1047
+ ],
1048
+ "stateMutability": "view",
1049
+ "type": "function"
1050
+ },
999
1051
  {
1000
1052
  "inputs": [
1001
1053
  {
@@ -1181,6 +1233,29 @@
1181
1233
  "stateMutability": "view",
1182
1234
  "type": "function"
1183
1235
  },
1236
+ {
1237
+ "inputs": [
1238
+ {
1239
+ "internalType": "uint256",
1240
+ "name": "_updateTs",
1241
+ "type": "uint256"
1242
+ },
1243
+ {
1244
+ "internalType": "contract IIFtso[]",
1245
+ "name": "_ftsos",
1246
+ "type": "address[]"
1247
+ },
1248
+ {
1249
+ "internalType": "uint256[]",
1250
+ "name": "_widths",
1251
+ "type": "uint256[]"
1252
+ }
1253
+ ],
1254
+ "name": "setElasticBandWidthPPMFtsos",
1255
+ "outputs": [],
1256
+ "stateMutability": "nonpayable",
1257
+ "type": "function"
1258
+ },
1184
1259
  {
1185
1260
  "inputs": [
1186
1261
  {
@@ -1250,6 +1325,11 @@
1250
1325
  },
1251
1326
  {
1252
1327
  "inputs": [
1328
+ {
1329
+ "internalType": "uint256",
1330
+ "name": "_updateTs",
1331
+ "type": "uint256"
1332
+ },
1253
1333
  {
1254
1334
  "internalType": "uint256",
1255
1335
  "name": "_maxVotePowerNatThresholdFraction",
@@ -1280,6 +1360,11 @@
1280
1360
  "name": "_lowNatTurnoutThresholdBIPS",
1281
1361
  "type": "uint256"
1282
1362
  },
1363
+ {
1364
+ "internalType": "uint256",
1365
+ "name": "_elasticBandRewardBIPS",
1366
+ "type": "uint256"
1367
+ },
1283
1368
  {
1284
1369
  "internalType": "uint256",
1285
1370
  "name": "_rewardExpiryOffsetSeconds",
@@ -1347,68 +1432,33 @@
1347
1432
  },
1348
1433
  {
1349
1434
  "inputs": [
1435
+ {
1436
+ "internalType": "bool",
1437
+ "name": "_useGoodRandom",
1438
+ "type": "bool"
1439
+ },
1350
1440
  {
1351
1441
  "internalType": "uint256",
1352
- "name": "_votePowerIntervalFraction",
1442
+ "name": "_maxWaitForGoodRandomSeconds",
1353
1443
  "type": "uint256"
1354
1444
  }
1355
1445
  ],
1356
- "name": "setVotePowerIntervalFraction",
1446
+ "name": "setUseGoodRandom",
1357
1447
  "outputs": [],
1358
1448
  "stateMutability": "nonpayable",
1359
1449
  "type": "function"
1360
1450
  },
1361
1451
  {
1362
- "inputs": [],
1363
- "name": "settings",
1364
- "outputs": [
1365
- {
1366
- "internalType": "uint256",
1367
- "name": "maxVotePowerNatThresholdFraction",
1368
- "type": "uint256"
1369
- },
1370
- {
1371
- "internalType": "uint256",
1372
- "name": "maxVotePowerAssetThresholdFraction",
1373
- "type": "uint256"
1374
- },
1375
- {
1376
- "internalType": "uint256",
1377
- "name": "lowAssetUSDThreshold",
1378
- "type": "uint256"
1379
- },
1380
- {
1381
- "internalType": "uint256",
1382
- "name": "highAssetUSDThreshold",
1383
- "type": "uint256"
1384
- },
1385
- {
1386
- "internalType": "uint256",
1387
- "name": "highAssetTurnoutThresholdBIPS",
1388
- "type": "uint256"
1389
- },
1390
- {
1391
- "internalType": "uint256",
1392
- "name": "lowNatTurnoutThresholdBIPS",
1393
- "type": "uint256"
1394
- },
1452
+ "inputs": [
1395
1453
  {
1396
1454
  "internalType": "uint256",
1397
- "name": "rewardExpiryOffsetSeconds",
1455
+ "name": "_votePowerIntervalFraction",
1398
1456
  "type": "uint256"
1399
- },
1400
- {
1401
- "internalType": "bool",
1402
- "name": "changed",
1403
- "type": "bool"
1404
- },
1405
- {
1406
- "internalType": "bool",
1407
- "name": "initialized",
1408
- "type": "bool"
1409
1457
  }
1410
1458
  ],
1411
- "stateMutability": "view",
1459
+ "name": "setVotePowerIntervalFraction",
1460
+ "outputs": [],
1461
+ "stateMutability": "nonpayable",
1412
1462
  "type": "function"
1413
1463
  },
1414
1464
  {
@@ -1576,6 +1626,19 @@
1576
1626
  "stateMutability": "view",
1577
1627
  "type": "function"
1578
1628
  },
1629
+ {
1630
+ "inputs": [],
1631
+ "name": "useGoodRandom",
1632
+ "outputs": [
1633
+ {
1634
+ "internalType": "bool",
1635
+ "name": "",
1636
+ "type": "bool"
1637
+ }
1638
+ ],
1639
+ "stateMutability": "view",
1640
+ "type": "function"
1641
+ },
1579
1642
  {
1580
1643
  "inputs": [],
1581
1644
  "name": "voterWhitelister",
@@ -1588,32 +1651,45 @@
1588
1651
  ],
1589
1652
  "stateMutability": "view",
1590
1653
  "type": "function"
1654
+ },
1655
+ {
1656
+ "inputs": [],
1657
+ "name": "waitingForGoodRandomSinceTs",
1658
+ "outputs": [
1659
+ {
1660
+ "internalType": "uint256",
1661
+ "name": "",
1662
+ "type": "uint256"
1663
+ }
1664
+ ],
1665
+ "stateMutability": "view",
1666
+ "type": "function"
1591
1667
  }
1592
1668
  ],
1593
- "bytecode": "0x6101606040523480156200001257600080fd5b5060405162005e5a38038062005e5a833981016040819052620000359162000548565b888b8b81806001600160a01b038116156200005557620000558162000461565b506001600160a01b038116620000a5576040805162461bcd60e51b815260206004820152601060248201526f5f676f7665726e616e6365207a65726f60801b604482015290519081900360640190fd5b506001600160a01b038116620000f6576040805162461bcd60e51b8152602060048201526011602482015270666c617265206461656d6f6e207a65726f60781b604482015290519081900360640190fd5b60601b6001600160601b03191660805250620001128162000524565b50854210156040518060400160405280601e81526020017f46697273742065706f636820737461727420747320696e20667574757265000081525090620001775760405162461bcd60e51b81526004016200016e919062000604565b60405180910390fd5b5060408051808201909152600e81526d05265776172642065706f636820360941b602082015282620001be5760405162461bcd60e51b81526004016200016e919062000604565b5060408051808201909152600d81526c050726963652065706f6368203609c1b602082015285620002045760405162461bcd60e51b81526004016200016e919062000604565b5060408051808201909152601481527f52657665616c2070726963652065706f636820300000000000000000000000006020820152846200025a5760405162461bcd60e51b81526004016200016e919062000604565b5060408051808201909152601e81527f566f746520706f77657220696e74657276616c206672616374696f6e20300000602082015281620002b05760405162461bcd60e51b81526004016200016e919062000604565b5060408051808201909152601b81527f52657665616c2070726963652065706f636820746f6f206c6f6e6700000000006020820152858510620003085760405162461bcd60e51b81526004016200016e919062000604565b508284870111156040518060400160405280601b81526020017f5265776172642065706f636820737461727420746f6f20736f6f6e000000000081525090620003665760405162461bcd60e51b81526004016200016e919062000604565b50848685850303816200037557fe5b0660001460405180606001604052806024815260200162005e366024913990620003b45760405162461bcd60e51b81526004016200016e919062000604565b50848281620003bf57fe5b0660001460405180606001604052806027815260200162005e0f6027913990620003fe5760405162461bcd60e51b81526004016200016e919062000604565b50610100839052601b829055601c81905560a086905260c085905260e0849052601983905584868403816200042f57fe5b046018555050505050606092831b6001600160601b0319908116610120529190921b1661014052506200067392505050565b600054600160a01b900460ff1615620004c1576040805162461bcd60e51b815260206004820152601460248201527f696e697469616c6973656420213d2066616c7365000000000000000000000000604482015290519081900360640190fd5b60008054600160a01b60ff60a01b19909116176001600160a01b0319166001600160a01b03831690811790915560408051918252517f9789733827840833afc031fb2ef9ab6894271f77bad2085687cf4ae5c7bee4db916020908290030190a150565b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e771955565b60008060008060008060008060008060006101608c8e0312156200056a578687fd5b8b5162000577816200065a565b60208d0151909b506200058a816200065a565b60408d0151909a506200059d816200065a565b60608d0151909950620005b0816200065a565b60808d0151909850620005c3816200065a565b8097505060a08c0151955060c08c0151945060e08c015193506101008c015192506101208c015191506101408c015190509295989b509295989b9093969950565b6000602080835283518082850152825b81811015620006325785810183015185820160400152820162000614565b81811115620006445783604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146200067057600080fd5b50565b60805160601c60a05160c05160e051610100516101205160601c6101405160601c6156bd6200075260003980611f045280613dee5250806108435280612343528061298d5280612f175280613598525080610a285280611c3252806127cb52806128e65250806109ff5280611b285280613f1c52806146e152508061094052806109de5280611af752806123c35280612c305280613efa5280614069528061428252806146be5250806109bd5280611ad652806123e45280613ed85280614044528061469952508061139c5280611c0e528061208152506156bd6000f3fe608060405234801561001057600080fd5b50600436106103e65760003560e01c8063758ff1da1161020a578063c2b0d47b11610125578063e371aef0116100b8578063f2edab5a11610087578063f2edab5a146107ce578063f5a98383146107e1578063f5f5ba72146107e9578063f937d6ad146107fe578063ff882fbb14610806576103e6565b8063e371aef014610788578063e5399da31461079e578063e7c830d4146107be578063ec31db0c146107c6576103e6565b8063e06174e4116100f4578063e06174e414610748578063e080a97014610765578063e17f212e14610778578063e22fdece14610780576103e6565b8063c2b0d47b14610710578063ce69f83314610718578063d429cfe51461072d578063d89c39e614610740576103e6565b8063a578f55b1161019d578063a93a6f421161016c578063a93a6f42146106cf578063af946af7146106e2578063b00c0b76146106f5578063b4dba0f314610708576103e6565b8063a578f55b1461068b578063a670ff8714610693578063a795f409146106a6578063a7d2acfa146106b9576103e6565b80639131205b116101d95780639131205b1461064457806393a79025146106575780639d6a890f14610670578063a107753214610683576103e6565b8063758ff1da14610603578063823033a91461061657806385f3c9c9146106295780638de306b114610631576103e6565b80633fdeb7e11161030557806360f2c5b2116102985780636b65cc34116102675780636b65cc341461059d5780636ca051e6146105b05780636d0e8c34146105c75780636ea0aa31146105cf57806374e6310e146105e2576103e6565b806360f2c5b21461057257806362354e031461057a57806367fc40291461058257806369b11ac614610595576103e6565b80635835cf30116102d45780635835cf30146105315780635904089a1461054f5780635aa6e675146105575780635ff270791461055f576103e6565b80633fdeb7e1146104f75780634b48dd5e1461050a5780634eac870f146105215780635267a15d14610529576103e6565b80631cb513f71161037d578063361b54591161034c578063361b5459146104c15780633758e679146104d457806338b5f869146104e75780633e7ff857146104ef576103e6565b80631cb513f7146104775780632663f1b41461048d5780632b3c41a4146104a05780632fd8eb7d146104b9576103e6565b80630f15f4c0116103b95780630f15f4c01461043b5780630f4ef8a614610445578063132c7e1f1461044d578063144e159114610460576103e6565b806302fb0c5e146103eb578063047fc9aa1461040957806308a7f4021461041e5780630e063d7d14610433575b600080fd5b6103f3610819565b60405161040091906151a1565b60405180910390f35b610411610822565b6040516104009190614ffa565b610426610831565b6040516104009190615395565b610411610841565b610443610865565b005b6104116108b3565b61044361045b366004614ddb565b6108c2565b6104686109bb565b604051610400939291906153dd565b61047f610a23565b6040516104009291906153b7565b61044361049b3660046149ec565b610a4a565b6104a8610a89565b604051610400959493929190615102565b610411610ac4565b6104436104cf366004614ddb565b610ad3565b6104436104e2366004614d76565b610b5f565b610411610bae565b610426610bbd565b6104436105053660046149ec565b610bc3565b610512610c12565b604051610400939291906151ac565b610411610cf1565b610411610d00565b610539610d25565b6040516104009a9998979695949392919061545a565b610411610dec565b610411610dfb565b61044361056d366004614cd7565b610e8f565b6104266111e4565b6104116111ea565b610443610590366004614cd7565b6111f5565b6104266112d8565b6104436105ab366004614da3565b6112dd565b6105b861137e565b604051610400939291906153c5565b6103f361138f565b6104a86105dd366004614e0b565b61149a565b6105f56105f0366004614cd7565b6117f5565b60405161040092919061539e565b610443610611366004614c62565b61189b565b6103f36106243660046149ec565b611902565b610426611924565b61044361063f366004614b90565b61192a565b610443610652366004614e84565b6119c8565b61065f611ac0565b6040516104009594939291906153f3565b61044361067e3660046149ec565b611b53565b610411611c0c565b610426611c30565b6104436106a13660046149ec565b611c54565b6104686106b4366004614ddb565b611cbd565b6106c1611ce6565b60405161040092919061520a565b6104436106dd366004614cff565b611cfc565b6104436106f0366004614d42565b611d93565b610443610703366004614ada565b611e5b565b610411611f02565b610411611f26565b610720611f35565b60405161040091906150ef565b61044361073b366004614b90565b611f3f565b610426611fa6565b610750611fac565b604051610400999897969594939291906154b9565b610443610773366004614e2c565b611fd3565b6103f3612064565b6103f3612074565b610790612152565b604051610400929190615373565b6107b16107ac366004614ddb565b612173565b6040516104009190615291565b6104266121e4565b61042661224a565b6104266107dc366004614ddb565b612250565b610443612262565b6107f161231c565b604051610400919061527e565b610411612341565b610443610814366004614cbd565b612365565b60055460ff1681565b601f546001600160a01b031681565b600061083b6123bf565b90505b90565b7f000000000000000000000000000000000000000000000000000000000000000090565b600054600160b01b900460ff16806108875750600054600160a81b900460ff16155b156108a657610894612412565b6005805460ff191660011790556108b1565b6108b1600036612447565b565b601e546001600160a01b031681565b600054600160b01b900460ff16806108e45750600054600160a81b900460ff16155b156109ad576108f1612412565b60408051808201909152600e81526d05265776172642065706f636820360941b60208201528161093d5760405162461bcd60e51b8152600401610934919061527e565b60405180910390fd5b507f0000000000000000000000000000000000000000000000000000000000000000818161096757fe5b0660001460405180606001604052806027815260200161564060279139906109a25760405162461bcd60e51b8152600401610934919061527e565b50601b8190556109b8565b6109b8600036612447565b50565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000909192565b601b547f000000000000000000000000000000000000000000000000000000000000000091565b600054600160b01b900460ff1680610a6c5750600054600160a81b900460ff16155b156109ad57610a79612412565b610a848160016125ca565b6109b8565b600454606090819081908190600090610ab390600160c01b90046001600160401b0316600161149a565b945094509450945094509091929394565b6007546001600160a01b031681565b600054600160b01b900460ff1680610af55750600054600160a81b900460ff16155b156109ad57610b02612412565b60408051808201909152601e81527f566f746520706f77657220696e74657276616c206672616374696f6e20300000602082015281610b545760405162461bcd60e51b8152600401610934919061527e565b50601c8190556109b8565b600054600160b01b900460ff1680610b815750600054600160a81b900460ff16155b15610b9e57610b8e612412565b610b99838383612649565b610ba9565b610ba9600036612447565b505050565b6016546001600160a01b031690565b601d5490565b600054600160b01b900460ff1680610be55750600054600160a81b900460ff16155b156109ad57610bf2612412565b602180546001600160a01b0319166001600160a01b0383161790556109b8565b602154600160a01b900460ff16606080610c2a6126cc565b8051909250806001600160401b0381118015610c4557600080fd5b50604051908082528060200260200182016040528015610c6f578160200160208202803683370190505b50915060005b81811015610cea5760136002016000858381518110610c9057fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a900460ff16838281518110610cd257fe5b91151560209283029190910190910152600101610c75565b5050909192565b6020546001600160a01b031681565b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e77195490565b600a54600b54600c54600d54600e54600f54601054601254601180546040805160208084028201810190925282815260009b8c9b8c9b8c9b8c9b8c9b8c9b60609b8d9b8c9b989a979996989597949693959294909360ff61010084048116949316929091859190830182828015610dc557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610da7575b50505050509250995099509950995099509950995099509950995090919293949596979899565b6021546001600160a01b031681565b60008054600160a81b900460ff16610e1e576000546001600160a01b031661083b565b60076001609c1b016001600160a01b031663732524946040518163ffffffff1660e01b815260040160206040518083038186803b158015610e5e57600080fd5b505afa158015610e72573d6000803e3d6000fd5b505050506040513d6020811015610e8857600080fd5b5051905090565b60408051630debfda360e41b8152336004820152905160076001609c1b019163debfda30916024808301926020929190829003018186803b158015610ed357600080fd5b505afa158015610ee7573d6000803e3d6000fd5b505050506040513d6020811015610efd57600080fd5b5051610f40576040805162461bcd60e51b815260206004820152600d60248201526c37b7363c9032bc32b1baba37b960991b604482015290519081900360640190fd5b6001600160e01b0319811660009081526001602052604090208054610fac576040805162461bcd60e51b815260206004820152601a60248201527f74696d656c6f636b3a20696e76616c69642073656c6563746f72000000000000604482015290519081900360640190fd5b8054421015611002576040805162461bcd60e51b815260206004820152601960248201527f74696d656c6f636b3a206e6f7420616c6c6f7765642079657400000000000000604482015290519081900360640190fd5b6000816001018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561109c5780601f106110715761010080835404028352916020019161109c565b820191906000526020600020905b81548152906001019060200180831161107f57829003601f168201915b5050506001600160e01b03198616600090815260016020819052604082208281559495509092506110d091508301826147b2565b50506000805460ff60b01b1916600160b01b178155604051825130918491819060208401908083835b602083106111185780518252601f1990920191602091820191016110f9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461117a576040519150601f19603f3d011682016040523d82523d6000602084013e61117f565b606091505b50506000805460ff60b01b19169055604080516001600160e01b03198716815242602082015281519293507fa7326b57fc9cfe267aaea5e7f0b01757154d265620a0585819416ee9ddd2c438929081900390910190a16111de8161274d565b50505050565b601c5490565b60076001609c1b0181565b6111fd61276a565b6001600160e01b03198116600090815260016020526040902054611268576040805162461bcd60e51b815260206004820152601a60248201527f74696d656c6f636b3a20696e76616c69642073656c6563746f72000000000000604482015290519081900360640190fd5b604080516001600160e01b03198316815242602082015281517f7735b2391c38a81419c513e30ca578db7158eadd7101511b23e221c654d19cf8929181900390910190a16001600160e01b03198116600090815260016020819052604082208281559190610ba9908301826147b2565b600581565b600054600160b01b900460ff16806112ff5750600054600160a81b900460ff16155b1561136f5761130c612412565b60405163d0d552dd60e01b81526001600160a01b0383169063d0d552dd90611338908490600401614ffa565b600060405180830381600087803b15801561135257600080fd5b505af1158015611366573d6000803e3d6000fd5b5050505061137a565b61137a600036612447565b5050565b601854601954601a5460ff16909192565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611402576040805162461bcd60e51b815260206004820152601160248201527037b7363c90333630b932903230b2b6b7b760791b604482015290519081900360640190fd5b60055460ff166114145750600061083e565b600854611428576114236127c9565b611494565b601a5460ff16801561143c57504260195411155b156114495761142361290d565b601a5460ff1615801561145e57504260095411155b156114835761146b612efe565b61147361314b565b61147b6132d7565b61142361342e565b426019541161149457611494613576565b50600190565b606080606080600060038054905087106040518060400160405280601081526020016f0e6e8c2e4e840d2dcc8caf040d0d2ced60831b815250906114f15760405162461bcd60e51b8152600401610934919061527e565b50600354600090888801111561150c5760035488900361150e565b865b9050806001600160401b038111801561152657600080fd5b50604051908082528060200260200182016040528015611550578160200160208202803683370190505b509550806001600160401b038111801561156957600080fd5b50604051908082528060200260200182016040528015611593578160200160208202803683370190505b509450806001600160401b03811180156115ac57600080fd5b506040519080825280602002602001820160405280156115e057816020015b60608152602001906001900390816115cb5790505b509350806001600160401b03811180156115f957600080fd5b50604051908082528060200260200182016040528015611623578160200160208202803683370190505b50925060005b818110156117d95760006003828b018154811061164257fe5b6000918252602080832090910154808352600290915260409091205489519192506001600160c01b03169089908490811061167957fe5b6020026020010181815250506002600082815260200190815260200160002060000160189054906101000a90046001600160401b03166001600160401b03168783815181106116c457fe5b602090810291909101810191909152600082815260028083526040918290208101805483516001821615610100026000190190911692909204601f810185900485028301850190935282825290929091908301828280156117665780601f1061173b57610100808354040283529160200191611766565b820191906000526020600020905b81548152906001019060200180831161174957829003601f168201915b505050505086838151811061177757fe5b60200260200101819052506002600082815260200190815260200160002060010160009054906101000a90046001600160a01b03168583815181106117b857fe5b6001600160a01b039092166020928302919091019091015250600101611629565b50506004549497939650919450926001600160c01b0316919050565b600160208181526000928352604092839020805481840180548651600296821615610100026000190190911695909504601f810185900485028601850190965285855290949193929091908301828280156118915780601f1061186657610100808354040283529160200191611891565b820191906000526020600020905b81548152906001019060200180831161187457829003601f168201915b5050505050905082565b600054600160b01b900460ff16806118bd5750600054600160a81b900460ff16155b15610b9e576118ca612412565b60005b83518110156118fc576118f48482815181106118e557fe5b60200260200101518484612649565b6001016118cd565b50610ba9565b6001600160a01b03811660009081526014602052604090205460ff165b919050565b601b5481565b600054600160b01b900460ff168061194c5750600054600160a81b900460ff16155b156109ad57611959612412565b60405163984626c360e01b815273__$03dc2144a91b115216397a255bda0073a6$__9063984626c3906119939060139085906004016152b2565b60006040518083038186803b1580156119ab57600080fd5b505af41580156119bf573d6000803e3d6000fd5b505050506109b8565b600054600160b01b900460ff16806119ea5750600054600160a81b900460ff16155b15611aab576119f7612412565b600088118015611a075750600087115b8015611a135750858510155b8015611a2157506127108411155b8015611a2f57506127108311155b8015611a3b5750600082115b8015611a4957506005815111155b6040518060400160405280601381526020017211dbdd8b881c185c985b5cc81a5b9d985b1a59606a1b81525090611a935760405162461bcd60e51b8152600401610934919061527e565b50611aa6600a89898989898989896138a5565b611ab6565b611ab6600036612447565b5050505050505050565b600080600080600080611ad16123bf565b9550507f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000808702820195506001870102019250507f000000000000000000000000000000000000000000000000000000000000000082019050429091929394565b600054600160a01b900460ff1615611ba9576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b60008054600160a01b60ff60a01b19909116176001600160a01b0319166001600160a01b03831690811790915560408051918252517f9789733827840833afc031fb2ef9ab6894271f77bad2085687cf4ae5c7bee4db916020908290030190a150565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600054600160b01b900460ff1680611c765750600054600160a81b900460ff16155b156109ad57611c83612412565b604051635d9fe31360e01b815273__$03dc2144a91b115216397a255bda0073a6$__90635d9fe313906119939060139085906004016152cb565b600080600080611ccc85612173565b805160208201516040909201519097919650945092505050565b6016546017546001600160a01b03918216911682565b600054600160b01b900460ff1680611d1e5750600054600160a81b900460ff16155b1561136f57611d2b612412565b604051636904d3eb60e11b815273__$03dc2144a91b115216397a255bda0073a6$__9063d209a7d690611d6790601390869086906004016152e2565b60006040518083038186803b158015611d7f57600080fd5b505af4158015611366573d6000803e3d6000fd5b611d9b61276a565b6001600160a01b0382166000908152601360209081526040918290205482518084019093526009835268139bdd08199bdd5b9960ba1b9183019190915260ff16611df85760405162461bcd60e51b8152600401610934919061527e565b506001600160a01b03821660009081526015602052604090819020805460ff1916831515179055517f24462ede4d3e8e5a69fecec6290d42a311016ca752216d9a3d681e284791b7ac90611e4f9084908490615224565b60405180910390a15050565b611e63610d00565b6001600160a01b0316336001600160a01b031614611ebf576040805162461bcd60e51b815260206004820152601460248201527337b7363c9030b2323932b9b9903ab83230ba32b960611b604482015290519081900360640190fd5b611ef8611ef383836040518060400160405280600e81526020016d20b2323932b9b9aab83230ba32b960911b815250613a9e565b613bcb565b61137a8282613bef565b7f000000000000000000000000000000000000000000000000000000000000000081565b6017546001600160a01b031690565b606061083b6126cc565b600054600160b01b900460ff1680611f615750600054600160a81b900460ff16155b156109ad57611f6e612412565b60005b8151811015611fa057611f98828281518110611f8957fe5b602002602001015160016125ca565b600101611f71565b506109b8565b60095481565b600a54600b54600c54600d54600e54600f5460105460125460ff8082169161010090041689565b600054600160b01b900460ff1680611ff55750600054600160a81b900460ff16155b15610b9e57612002612412565b600554604080518082019091526011815270105b1c9958591e481858dd1a5d985d1959607a1b60208201529060ff161561204f5760405162461bcd60e51b8152600401610934919061527e565b50601d83905560088290556009819055610ba9565b600054600160a81b900460ff1681565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146120e7576040805162461bcd60e51b815260206004820152601160248201527037b7363c90333630b932903230b2b6b7b760791b604482015290519081900360640190fd5b602154600160a01b900460ff1661214c576021805460ff60a01b1916600160a01b1790556040517f217a37a37fc40a97159886f80c3d45986e6fc4330ce6ad7283478b5e5ab705bc9061213c906001906151a1565b60405180910390a150600161083e565b50600090565b6004546001600160c01b03811690600160c01b90046001600160401b031682565b61217b6147f6565b60085482106040518060400160405280602081526020017f5265776172642065706f6368206e6f7420696e697469616c697a656420796574815250906121d45760405162461bcd60e51b8152600401610934919061527e565b506121de82613da5565b92915050565b6000600854600014156040518060400160405280602081526020017f5265776172642065706f6368206e6f7420696e697469616c697a656420796574815250906122415760405162461bcd60e51b8152600401610934919061527e565b5061083b613eaa565b60105490565b600061225b82612173565b5192915050565b61226a61276a565b600054600160a81b900460ff16156122c9576040805162461bcd60e51b815260206004820152601a60248201527f616c726561647920696e2070726f64756374696f6e206d6f6465000000000000604482015290519081900360640190fd5b60008054600161ff0160a01b031916600160a81b1790556040805160076001609c1b01815290517f83af113638b5422f9e977cebc0aaf0eaf2188eb9a8baae7f9d46c42b33a1560c9181900360200190a1565b60408051808201909152600b81526a233a39b7a6b0b730b3b2b960a91b602082015290565b7f000000000000000000000000000000000000000000000000000000000000000081565b61236d61276a565b6021805460ff60a01b1916600160a01b831515021790556040517f217a37a37fc40a97159886f80c3d45986e6fc4330ce6ad7283478b5e5ab705bc906123b49083906151a1565b60405180910390a150565b60007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000042038161240c57fe5b04905090565b600054600160b01b900460ff161561243f5733301461242d57fe5b6000805460ff60b01b191690556108b1565b6108b161276a565b61244f61276a565b600082359050600060076001609c1b016001600160a01b0316636221a54b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561249757600080fd5b505afa1580156124ab573d6000803e3d6000fd5b505050506040513d60208110156124c157600080fd5b505160408051808201825242830180825282516020601f89018190048102820181019094528781529394509290918281019190889088908190840183828082843760009201829052509390945250506001600160e01b0319861681526001602081815260409092208451815584830151805191945061254593928501920190614817565b509050507fed948300a3694aa01d4a6b258bfd664350193d770c0b51f8387277f6d83ea3b68382878760405180856001600160e01b0319168152602001848152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f191690920182900397509095505050505050a15050505050565b601a546040516306b8c18560e01b815273__$03dc2144a91b115216397a255bda0073a6$__916306b8c1859161261091601391600a918891889160ff169060040161530c565b60006040518083038186803b15801561262857600080fd5b505af415801561263c573d6000803e3d6000fd5b5050505061137a82613eb4565b601a5460405163169ffdc760e21b815273__$03dc2144a91b115216397a255bda0073a6$__91635a7ff71c9161269391601391600a9189918991899160ff9091169060040161533c565b60006040518083038186803b1580156126ab57600080fd5b505af41580156126bf573d6000803e3d6000fd5b50505050610ba983613eb4565b60165460408051635200305d60e11b815290516060926001600160a01b03169163a40060ba916004808301926000929190829003018186803b15801561271157600080fd5b505afa158015612725573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261083b9190810190614bca565b3d604051818101604052816000823e8215612766578181f35b8181fd5b612772610dfb565b6001600160a01b0316336001600160a01b0316146108b1576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000042106108b15760006127fa6126cc565b80516040805160608101825243600019810182526020808301918252428385019081526008805460009081526006909352948220845181559251600180850191909155905160029093019290925583549091019092559293509091905b828110156128df5783818151811061286b57fe5b60200260200101516001600160a01b031663e536f39683600001516040518263ffffffff1660e01b81526004016128a29190615395565b600060405180830381600087803b1580156128bc57600080fd5b505af11580156128d0573d6000803e3d6000fd5b50505050806001019050612857565b5050601b547f0000000000000000000000000000000000000000000000000000000000000000016009555050565b60006129176126cc565b805190915080158015906129355750602154600160a01b900460ff16155b15612e14576007546000906001600160a01b0316612989578144426040516020016129619291906153b7565b6040516020818303038152906040528051906020012060001c8161298157fe5b069050612a57565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d89601fd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156129e457600080fd5b505afa1580156129f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1c9190614df3565b9050828142604051602001612a329291906153b7565b6040516020818303038152906040528051906020012060001c81612a5257fe5b069150505b60608060008080805b87811015612bfc5760008882890181612a7557fe5b06905060008a8281518110612a8657fe5b6020908102919091018101516001600160a01b0381166000908152601490925260409091205490915060ff1615612adc576001600160a01b03166000908152601460205260409020805460ff1916905550612bf4565b6018546040516340462a2d60e01b81526001600160a01b038316916340462a2d91612b0d919089159060040161526e565b600060405180830381600087803b158015612b2757600080fd5b505af1925050508015612b5c57506040513d6000823e601f3d908101601f19168201604052612b599190810190614a0f565b60015b612bc757612b68615542565b80612b735750612b83565b612b7d8282613ff1565b50612bc2565b612bc2816040518060400160405280601881526020017f6572722066696e616c697a652070726963652065706f63680000000000000000815250613ff1565b612bf1565b87158015612bd6575060008351115b15612bed5791995097509550600194509250828787875b5050505b50505b600101612a60565b506000612c07613eaa565b90508215612dab57601e546018546001600160a01b039091169063a9b79e1790889088908890877f0000000000000000000000000000000000000000000000000000000000000000886001612c5b85614042565b03612c658b613da5565b516040516001600160e01b031960e08c901b168152612c8f99989796959493929190600401615072565b600060405180830381600087803b158015612ca957600080fd5b505af1925050508015612cba575060015b612da657612cc6615542565b80612cd15750612d28565b7f175a1d13d190d6a1e14461c214b3ecf6118b828797750b7bffd7c4f2c1eba54c83601854604051612d0492919061500e565b60405180910390a1601e54612d22906001600160a01b03168261408f565b50612da6565b7f175a1d13d190d6a1e14461c214b3ecf6118b828797750b7bffd7c4f2c1eba54c82601854604051612d5b92919061500e565b60405180910390a1601e546040805180820190915260168152756572722064697374726962757465207265776172647360501b6020820152612da6916001600160a01b03169061408f565b612db3565b612db3614268565b600780546001600160a01b0319166001600160a01b0384161790556040517f98b050a4042fbd1b89934ef40b9342e593f15081a348af940573a0179031f4ad90612e00908490849061500e565b60405180910390a150505050505050612ef0565b60005b81811015612e95576000838281518110612e2d57fe5b6020908102919091018101516001600160a01b0381166000908152601490925260409091205490915060ff1615612e82576001600160a01b03166000908152601460205260409020805460ff19169055612e8d565b612e8b816143ea565b505b600101612e17565b50612e9e614268565b600780546001600160a01b03191690557f98b050a4042fbd1b89934ef40b9342e593f15081a348af940573a0179031f4ad6000612ed9613eaa565b604051612ee792919061500e565b60405180910390a15b5050601a805460ff19169055565b6000612f086126cc565b905060008151905060004290507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d89601fd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612f6e57600080fd5b505afa158015612f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa69190614df3565b604051910190612fba908290602001615395565b6040516020818303038152906040528051906020012060001c90506000601c54612fea612fe5613eaa565b613da5565b60200151430381612ff757fe5b04905080613003575060015b600081838161300e57fe5b0690508061301a575060015b60408051606081018252438381038252602080830191825242838501908152600880546000908152600690935294822084518155925160018085019190915590516002909301929092558354909101909255905b858110156130f75786818151811061308257fe5b60200260200101516001600160a01b031663e536f39683600001516040518263ffffffff1660e01b81526004016130b99190615395565b600060405180830381600087803b1580156130d357600080fd5b505af11580156130e7573d6000803e3d6000fd5b50506001909201915061306e9050565b50805160208201516040517f1813f880dc24666c8b69c9d771a487ea620a27fde1514be3112847056c0c53229261312f9290916153b7565b60405180910390a15050601b5460098054909101905550505050565b6000613155613eaa565b60105490915042035b81601d54108015613180575080613179601d54600101613da5565b6040015111155b1561137a57601e54601d54604051636b60edf760e11b81526001600160a01b039092169163d6c1dbee916131b691600401615395565b600060405180830381600087803b1580156131d057600080fd5b505af19250505080156131e1575060015b6132c9576131ed615542565b806131f8575061324d565b7fa819a21065ad87bdde9e6d398d3213e0d3634afd87aceb7092236483f5d7ca8d601d546040516132299190615395565b60405180910390a1601e54613247906001600160a01b03168261408f565b5061137a565b7fa819a21065ad87bdde9e6d398d3213e0d3634afd87aceb7092236483f5d7ca8d601d5460405161327e9190615395565b60405180910390a1601e54604080518082019091526011815270195c9c8818db1bdcd948195e1c1a5c9959607a1b60208201526132c4916001600160a01b03169061408f565b61137a565b601d8054600101905561315e565b60006132e4601d54613da5565b5160205460405163cbc31cf760e01b81529192506001600160a01b03169063cbc31cf790613316908490600401615395565b600060405180830381600087803b15801561333057600080fd5b505af1925050508015613341575060015b6109b85761334d615542565b8061335857506133ab565b7f9f874ea08c7014cce74622bfe71434f81aba7598ad65126a6aea86945bdfa18d826040516133879190615395565b60405180910390a16020546133a5906001600160a01b03168261408f565b50610a84565b7f9f874ea08c7014cce74622bfe71434f81aba7598ad65126a6aea86945bdfa18d816040516133da9190615395565b60405180910390a1610a84602060009054906101000a90046001600160a01b0316604051806040016040528060158152602001746572722073657420636c65616e757020626c6f636b60581b81525061408f565b6021546001600160a01b0316156108b1576000613449613eaa565b9050602160009054906101000a90046001600160a01b03166001600160a01b03166321eb1a956040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561349b57600080fd5b505af19250505080156134ac575060015b6109b8576134b8615542565b806134c35750613510565b7ff7c7d6681321cc290eb89e8c96dba504436073b8bb277945cc32177e5181dd84826040516134f29190615395565b60405180910390a16021546133a5906001600160a01b03168261408f565b7ff7c7d6681321cc290eb89e8c96dba504436073b8bb277945cc32177e5181dd848160405161353f9190615395565b60405180910390a160215460408051606081019091526022808252610a84926001600160a01b0316919061561e602083013961408f565b60125460ff161561360157604051639ec2b58160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639ec2b581906135ce906011906004016150dc565b600060405180830381600087803b1580156135e857600080fd5b505af11580156135fc573d6000803e3d6000fd5b505050505b600061360b6126cc565b80519091506000811580159061362b5750602154600160a01b900460ff16155b156136c457600061363d612fe5613eaa565b51601f546040516237b08960e41b81529192506001600160a01b03169063037b08909061366e908490600401615395565b602060405180830381600087803b15801561368857600080fd5b505af115801561369c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c09190614df3565b9150505b60005b8281101561386a5760008482815181106136dd57fe5b602090810291909101015160125490915060ff161561377057600a54600b54600c54600d54600e54600f5460405163f7dba1f560e01b81526001600160a01b0388169663f7dba1f59661373d969195909491939092601190600401615416565b600060405180830381600087803b15801561375757600080fd5b505af115801561376b573d6000803e3d6000fd5b505050505b806001600160a01b031663f670ebe384602160149054906101000a900460ff16806137b357506001600160a01b03841660009081526015602052604090205460ff165b6040518363ffffffff1660e01b81526004016137d092919061526e565b600060405180830381600087803b1580156137ea57600080fd5b505af19250505080156137fb575060015b61386157613807615542565b806138125750613822565b61381c8282614486565b50613861565b613861816040518060400160405280601981526020017f65727220696e69742065706f636820666f722072657665616c00000000000000815250614486565b506001016136c7565b506012805460ff19169055600061387f6123bf565b6018819055905061388f81614697565b6019555050601a805460ff191660011790555050565b885488146138c05760088901805460ff191660011790558789555b868960010154146138e35760088901805460ff1916600190811790915589018790555b858960020154146139055760088901805460ff19166001179055600289018690555b848960030154146139275760088901805460ff19166001179055600389018590555b838960040154146139495760088901805460ff19166001179055600489018490555b8289600501541461396b5760088901805460ff19166001179055600589018390555b8189600601541461398d5760088901805460ff19166001179055600689018290555b805160078a0154146139c35780516139ae9060078b019060208401906148a3565b5060088901805460ff19166001179055613a82565b60005b8151811015613a80578181815181106139db57fe5b60200260200101516001600160a01b03168a60070182815481106139fb57fe5b6000918252602090912001546001600160a01b031614613a785760088a01805460ff191660011790558151829082908110613a3257fe5b60200260200101518a6007018281548110613a4957fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b6001016139c6565b505b5050506008909501805461ff0019166101001790555050505050565b600080826040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613ae2578181015183820152602001613aca565b50505050905090810190601f168015613b0f5780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012090506000805b8651811015613b7757868181518110613b4557fe5b6020026020010151831415613b6f57858181518110613b6057fe5b60200260200101519150613b77565b600101613b30565b506001600160a01b038116613bc2576040805162461bcd60e51b815260206004820152600c60248201526b61646472657373207a65726f60a01b604482015290519081900360640190fd5b95945050505050565b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e771955565b613c23828260405180604001604052806011815260200170233a39b7a932bbb0b93226b0b730b3b2b960791b815250613a9e565b601e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550613c72828260405180604001604052806006815260200165537570706c7960d01b815250613a9e565b601f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550613cd882826040518060400160405280601981526020017f436c65616e7570426c6f636b4e756d6265724d616e6167657200000000000000815250613a9e565b602060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550613d2d82826040518060400160405280600c81526020016b4674736f526567697374727960a01b815250613a9e565b601680546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152601081526f2b37ba32b92bb434ba32b634b9ba32b960811b6020820152613d819083908390613a9e565b601780546001600160a01b0319166001600160a01b03929092169190911790555050565b613dad6147f6565b50600081815260066020908152604091829020825160608101845281548152600182015492810192909252600201549181018290529061191f5760008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a795f409866040518263ffffffff1660e01b8152600401613e389190615395565b60606040518083038186803b158015613e5057600080fd5b505afa158015613e64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e889190614e57565b6040805160608101825293845260208401929092529082015295945050505050565b6008546000190190565b604051630bc29bcf60e21b81526001600160a01b03821690632f0a6f3c90613f44907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906004016153dd565b600060405180830381600087803b158015613f5e57600080fd5b505af1158015613f72573d6000803e3d6000fd5b505050506008546000146109b857806001600160a01b031663e536f396613f9a612fe5613eaa565b516040516001600160e01b031960e084901b168152613fbc9190600401615395565b600060405180830381600087803b158015613fd657600080fd5b505af1158015613fea573d6000803e3d6000fd5b5050505050565b7f79f4c7cc43bfb79f5a3aad0d92f75b6fed7db061bb5cc2580a01c8132711b8818260185460016040516140279392919061523f565b60405180910390a1614039828261408f565b61137a826143ea565b7f0000000000000000000000000000000000000000000000000000000000000000600182017f00000000000000000000000000000000000000000000000000000000000000000201919050565b600082826040516020016140a4929190615027565b60408051601f198184030181528282528051602091820120600081815260029092529190208054436001600160c01b038181166001600160401b03600160c01b80860482166001019091160291909316176001600160c01b031916919091179091559092507f1a601cf5e0efbd558b2778b7389af04741d1c49bcab104c40daa2da19459361791614138918691869061504b565b60405180910390a1600480546001600160c01b0319811660016001600160c01b03928316810190921617909155600082815260026020526040902054600160c01b90046001600160401b03161115614190575061137a565b6003805460018082019092557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01829055600082815260026020818152604090922092830180546001600160a01b0319166001600160a01b03881617905584516142009390910191850190614817565b50600354600091825260026020526040909120600101805467ffffffffffffffff60a01b1916600160a01b6000199093016001600160401b0390811684029190911791829055600480546001600160c01b03169390920416600160c01b029190911790555050565b601e546018546001600160a01b03909116906367dcac53907f000000000000000000000000000000000000000000000000000000000000000060016142ac83614042565b036040518463ffffffff1660e01b81526004016142cb939291906153dd565b600060405180830381600087803b1580156142e557600080fd5b505af19250505080156142f6575060015b6108b157614302615542565b8061430d5750614362565b7f8eb60f903ef61e0e490d7d7ba6e5b85cd949ebece7a5e5b3346eb046c041413f60185460405161433e9190615395565b60405180910390a1601e5461435c906001600160a01b03168261408f565b506143e5565b7f8eb60f903ef61e0e490d7d7ba6e5b85cd949ebece7a5e5b3346eb046c041413f6018546040516143939190615395565b60405180910390a1601e5460408051808201909152601b81527f6572722061636372756520756e6561726e65642072657761726473000000000060208201526143e5916001600160a01b03169061408f565b6108b1565b60185460405163257ea88160e11b81526001600160a01b03831691634afd5102916144189190600401615395565b600060405180830381600087803b15801561443257600080fd5b505af1925050508015614443575060015b6109b85761444f615542565b8061445a5750614464565b6133a58282614706565b610a848160405180606001604052806021815260200161566760219139614706565b7f61156899176547b8075bfa81fa2996c6057ce9c71320884b11c0179d9dc2e462826144b06123bf565b6040516144be92919061500e565b60405180910390a16144d0828261408f565b602154600160a01b900460ff168061450057506001600160a01b03821660009081526015602052604090205460ff165b1561452d576001600160a01b0382166000908152601460205260409020805460ff1916600117905561137a565b60405163f670ebe360e01b81526001600160a01b0383169063f670ebe39061455d9060009060019060040161526e565b600060405180830381600087803b15801561457757600080fd5b505af1925050508015614588575060015b61137a57614594615542565b8061459f5750614612565b6001600160a01b0383166000908152601460205260409020805460ff191660011790557f61156899176547b8075bfa81fa2996c6057ce9c71320884b11c0179d9dc2e462836145ec6123bf565b6040516145fa92919061500e565b60405180910390a161460c838261408f565b506132c4565b6001600160a01b0382166000908152601460205260409020805460ff191660011790557f61156899176547b8075bfa81fa2996c6057ce9c71320884b11c0179d9dc2e4628261465f6123bf565b60405161466d92919061500e565b60405180910390a16132c4826040518060600160405280602281526020016155fc6022913961408f565b7f0000000000000000000000000000000000000000000000000000000000000000600182017f000000000000000000000000000000000000000000000000000000000000000002017f000000000000000000000000000000000000000000000000000000000000000001919050565b7f79f4c7cc43bfb79f5a3aad0d92f75b6fed7db061bb5cc2580a01c8132711b88182601854600260405161473c9392919061523f565b60405180910390a161474e828261408f565b60185460405163974d7a6b60e01b81526001600160a01b0384169163974d7a6b9161477c9190600401615395565b600060405180830381600087803b15801561479657600080fd5b505af11580156147aa573d6000803e3d6000fd5b505050505050565b50805460018160011615610100020316600290046000825580601f106147d857506109b8565b601f0160209004906000526020600020908101906109b891906148f8565b60405180606001604052806000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261484d5760008555614893565b82601f1061486657805160ff1916838001178555614893565b82800160010185558215614893579182015b82811115614893578251825591602001919060010190614878565b5061489f9291506148f8565b5090565b828054828255906000526020600020908101928215614893579160200282015b8281111561489357825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906148c3565b5b8082111561489f57600081556001016148f9565b600082601f83011261491d578081fd5b8135602061493261492d8361551f565b6154fc565b828152818101908583018385028701840188101561494e578586fd5b855b85811015614975578135614963816155e6565b84529284019290840190600101614950565b5090979650505050505050565b600082601f830112614992578081fd5b815160206149a261492d8361551f565b82815281810190858301838502870184018810156149be578586fd5b855b85811015614975578151845292840192908401906001016149c0565b8035801515811461191f57600080fd5b6000602082840312156149fd578081fd5b8135614a08816155e6565b9392505050565b600080600060608486031215614a23578182fd5b83516001600160401b0380821115614a39578384fd5b818601915086601f830112614a4c578384fd5b81516020614a5c61492d8361551f565b82815281810190858301838502870184018c1015614a78578889fd5b8896505b84871015614aa3578051614a8f816155e6565b835260019690960195918301918301614a7c565b5091890151919750909350505080821115614abc578384fd5b50614ac986828701614982565b925050604084015190509250925092565b60008060408385031215614aec578182fd5b82356001600160401b0380821115614b02578384fd5b818501915085601f830112614b15578384fd5b81356020614b2561492d8361551f565b82815281810190858301838502870184018b1015614b41578889fd5b8896505b84871015614b63578035835260019690960195918301918301614b45565b5096505086013592505080821115614b79578283fd5b50614b868582860161490d565b9150509250929050565b600060208284031215614ba1578081fd5b81356001600160401b03811115614bb6578182fd5b614bc28482850161490d565b949350505050565b60006020808385031215614bdc578182fd5b82516001600160401b03811115614bf1578283fd5b8301601f81018513614c01578283fd5b8051614c0f61492d8261551f565b8181528381019083850185840285018601891015614c2b578687fd5b8694505b83851015614c56578051614c42816155e6565b835260019490940193918501918501614c2f565b50979650505050505050565b600080600060608486031215614c76578081fd5b83356001600160401b03811115614c8b578182fd5b614c978682870161490d565b935050614ca6602085016149dc565b9150614cb4604085016149dc565b90509250925092565b600060208284031215614cce578081fd5b614a08826149dc565b600060208284031215614ce8578081fd5b81356001600160e01b031981168114614a08578182fd5b60008060408385031215614d11578182fd5b8235614d1c816155e6565b915060208301356001600160401b03811115614d36578182fd5b614b868582860161490d565b60008060408385031215614d54578182fd5b8235614d5f816155e6565b9150614d6d602084016149dc565b90509250929050565b600080600060608486031215614d8a578081fd5b8335614d95816155e6565b9250614ca6602085016149dc565b60008060408385031215614db5578182fd5b8235614dc0816155e6565b91506020830135614dd0816155e6565b809150509250929050565b600060208284031215614dec578081fd5b5035919050565b600060208284031215614e04578081fd5b5051919050565b60008060408385031215614e1d578182fd5b50508035926020909101359150565b600080600060608486031215614e40578081fd5b505081359360208301359350604090920135919050565b600080600060608486031215614e6b578081fd5b8351925060208401519150604084015190509250925092565b600080600080600080600080610100898b031215614ea0578586fd5b883597506020890135965060408901359550606089013594506080890135935060a0890135925060c0890135915060e08901356001600160401b03811115614ee6578182fd5b614ef28b828c0161490d565b9150509295985092959890939650565b6000815180845260208085019450808401835b83811015614f3a5781516001600160a01b031687529582019590820190600101614f15565b509495945050505050565b6000815480845260208085019450838352808320835b83811015614f3a5781546001600160a01b031687529582019560019182019101614f5b565b6000815180845260208085019450808401835b83811015614f3a57815187529582019590820190600101614f93565b60008151808452815b81811015614fd457602081850181015186830182015201614fb8565b81811115614fe55782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0383168152604060208201819052600090614bc290830184614faf565b600060018060a01b038516825283602083015260606040830152613bc26060830184614faf565b60006101208083526150868184018d614f02565b9050828103602084015261509a818c614f80565b604084019a909a52505060608101969096526001600160a01b0394909416608086015260a085019290925260c084015260e08301526101009091015292915050565b600060208252614a086020830184614f45565b600060208252614a086020830184614f02565b600060a0825261511560a0830188614f80565b6020838203818501526151288289614f80565b848103604086015287518082529092508183019082810284018301838a01865b8381101561517657601f19878403018552615164838351614faf565b94860194925090850190600101615148565b5050868103606088015261518a818a614f02565b955050505050508260808301529695505050505050565b901515815260200190565b6000841515825260206060818401526151c86060840186614f02565b8381036040850152845180825282860191830190845b818110156151fc5783511515835292840192918401916001016151de565b509098975050505050505050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b038416815260208101839052606081016006831061526057fe5b826040830152949350505050565b9182521515602082015260400190565b600060208252614a086020830184614faf565b81518152602080830151908201526040918201519181019190915260600190565b600083825260406020830152614bc26040830184614f02565b9182526001600160a01b0316602082015260400190565b8381526001600160a01b0383166020820152606060408201819052600090613bc290830184614f02565b94855260208501939093526001600160a01b03919091166040840152151560608301521515608082015260a00190565b95865260208601949094526001600160a01b039290921660408501521515606084015215156080830152151560a082015260c00190565b6001600160c01b039290921682526001600160401b0316602082015260400190565b90815260200190565b600083825260406020830152614bc26040830184614faf565b918252602082015260400190565b92835260208301919091521515604082015260600190565b9283526020830191909152604082015260600190565b948552602085019390935260408401919091526060830152608082015260a00190565b60008882528760208301528660408301528560608301528460808301528360a083015260e060c083015261544d60e0830184614f45565b9998505050505050505050565b60006101408c83528b60208401528a60408401528960608401528860808401528760a08401528660c08401528060e084015261549881840187614f02565b94151561010084015250509015156101209091015298975050505050505050565b988952602089019790975260408801959095526060870193909352608086019190915260a085015260c0840152151560e083015215156101008201526101200190565b6040518181016001600160401b038111828210171561551757fe5b604052919050565b60006001600160401b0382111561553257fe5b5060209081020190565b60e01c90565b600060443d10156155525761083e565b600481823e6308c379a0615566825161553c565b146155705761083e565b6040513d600319016004823e80513d6001600160401b03816024840111818411171561559f575050505061083e565b828401925082519150808211156155b9575050505061083e565b503d830160208284010111156155d15750505061083e565b601f01601f1916810160200160405291505090565b6001600160a01b03811681146109b857600080fdfe6572722066616c6c6261636b20696e69742065706f636820666f722072657665616c6572722063616c6c696e672075706461746541637469766556616c696461746f72735265776172642065706f6368206475726174696f6e20636f6e646974696f6e20696e76616c69646572722066616c6c6261636b2066696e616c697a652070726963652065706f6368a2646970667358221220d09b01475a7177c6d259d0282c07fab04b029db371851c757001b9309d0fc03364736f6c634300070600335265776172642065706f6368206475726174696f6e20636f6e646974696f6e20696e76616c69645265776172642065706f636820737461727420636f6e646974696f6e20696e76616c6964",
1594
- "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103e65760003560e01c8063758ff1da1161020a578063c2b0d47b11610125578063e371aef0116100b8578063f2edab5a11610087578063f2edab5a146107ce578063f5a98383146107e1578063f5f5ba72146107e9578063f937d6ad146107fe578063ff882fbb14610806576103e6565b8063e371aef014610788578063e5399da31461079e578063e7c830d4146107be578063ec31db0c146107c6576103e6565b8063e06174e4116100f4578063e06174e414610748578063e080a97014610765578063e17f212e14610778578063e22fdece14610780576103e6565b8063c2b0d47b14610710578063ce69f83314610718578063d429cfe51461072d578063d89c39e614610740576103e6565b8063a578f55b1161019d578063a93a6f421161016c578063a93a6f42146106cf578063af946af7146106e2578063b00c0b76146106f5578063b4dba0f314610708576103e6565b8063a578f55b1461068b578063a670ff8714610693578063a795f409146106a6578063a7d2acfa146106b9576103e6565b80639131205b116101d95780639131205b1461064457806393a79025146106575780639d6a890f14610670578063a107753214610683576103e6565b8063758ff1da14610603578063823033a91461061657806385f3c9c9146106295780638de306b114610631576103e6565b80633fdeb7e11161030557806360f2c5b2116102985780636b65cc34116102675780636b65cc341461059d5780636ca051e6146105b05780636d0e8c34146105c75780636ea0aa31146105cf57806374e6310e146105e2576103e6565b806360f2c5b21461057257806362354e031461057a57806367fc40291461058257806369b11ac614610595576103e6565b80635835cf30116102d45780635835cf30146105315780635904089a1461054f5780635aa6e675146105575780635ff270791461055f576103e6565b80633fdeb7e1146104f75780634b48dd5e1461050a5780634eac870f146105215780635267a15d14610529576103e6565b80631cb513f71161037d578063361b54591161034c578063361b5459146104c15780633758e679146104d457806338b5f869146104e75780633e7ff857146104ef576103e6565b80631cb513f7146104775780632663f1b41461048d5780632b3c41a4146104a05780632fd8eb7d146104b9576103e6565b80630f15f4c0116103b95780630f15f4c01461043b5780630f4ef8a614610445578063132c7e1f1461044d578063144e159114610460576103e6565b806302fb0c5e146103eb578063047fc9aa1461040957806308a7f4021461041e5780630e063d7d14610433575b600080fd5b6103f3610819565b60405161040091906151a1565b60405180910390f35b610411610822565b6040516104009190614ffa565b610426610831565b6040516104009190615395565b610411610841565b610443610865565b005b6104116108b3565b61044361045b366004614ddb565b6108c2565b6104686109bb565b604051610400939291906153dd565b61047f610a23565b6040516104009291906153b7565b61044361049b3660046149ec565b610a4a565b6104a8610a89565b604051610400959493929190615102565b610411610ac4565b6104436104cf366004614ddb565b610ad3565b6104436104e2366004614d76565b610b5f565b610411610bae565b610426610bbd565b6104436105053660046149ec565b610bc3565b610512610c12565b604051610400939291906151ac565b610411610cf1565b610411610d00565b610539610d25565b6040516104009a9998979695949392919061545a565b610411610dec565b610411610dfb565b61044361056d366004614cd7565b610e8f565b6104266111e4565b6104116111ea565b610443610590366004614cd7565b6111f5565b6104266112d8565b6104436105ab366004614da3565b6112dd565b6105b861137e565b604051610400939291906153c5565b6103f361138f565b6104a86105dd366004614e0b565b61149a565b6105f56105f0366004614cd7565b6117f5565b60405161040092919061539e565b610443610611366004614c62565b61189b565b6103f36106243660046149ec565b611902565b610426611924565b61044361063f366004614b90565b61192a565b610443610652366004614e84565b6119c8565b61065f611ac0565b6040516104009594939291906153f3565b61044361067e3660046149ec565b611b53565b610411611c0c565b610426611c30565b6104436106a13660046149ec565b611c54565b6104686106b4366004614ddb565b611cbd565b6106c1611ce6565b60405161040092919061520a565b6104436106dd366004614cff565b611cfc565b6104436106f0366004614d42565b611d93565b610443610703366004614ada565b611e5b565b610411611f02565b610411611f26565b610720611f35565b60405161040091906150ef565b61044361073b366004614b90565b611f3f565b610426611fa6565b610750611fac565b604051610400999897969594939291906154b9565b610443610773366004614e2c565b611fd3565b6103f3612064565b6103f3612074565b610790612152565b604051610400929190615373565b6107b16107ac366004614ddb565b612173565b6040516104009190615291565b6104266121e4565b61042661224a565b6104266107dc366004614ddb565b612250565b610443612262565b6107f161231c565b604051610400919061527e565b610411612341565b610443610814366004614cbd565b612365565b60055460ff1681565b601f546001600160a01b031681565b600061083b6123bf565b90505b90565b7f000000000000000000000000000000000000000000000000000000000000000090565b600054600160b01b900460ff16806108875750600054600160a81b900460ff16155b156108a657610894612412565b6005805460ff191660011790556108b1565b6108b1600036612447565b565b601e546001600160a01b031681565b600054600160b01b900460ff16806108e45750600054600160a81b900460ff16155b156109ad576108f1612412565b60408051808201909152600e81526d05265776172642065706f636820360941b60208201528161093d5760405162461bcd60e51b8152600401610934919061527e565b60405180910390fd5b507f0000000000000000000000000000000000000000000000000000000000000000818161096757fe5b0660001460405180606001604052806027815260200161564060279139906109a25760405162461bcd60e51b8152600401610934919061527e565b50601b8190556109b8565b6109b8600036612447565b50565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000909192565b601b547f000000000000000000000000000000000000000000000000000000000000000091565b600054600160b01b900460ff1680610a6c5750600054600160a81b900460ff16155b156109ad57610a79612412565b610a848160016125ca565b6109b8565b600454606090819081908190600090610ab390600160c01b90046001600160401b0316600161149a565b945094509450945094509091929394565b6007546001600160a01b031681565b600054600160b01b900460ff1680610af55750600054600160a81b900460ff16155b156109ad57610b02612412565b60408051808201909152601e81527f566f746520706f77657220696e74657276616c206672616374696f6e20300000602082015281610b545760405162461bcd60e51b8152600401610934919061527e565b50601c8190556109b8565b600054600160b01b900460ff1680610b815750600054600160a81b900460ff16155b15610b9e57610b8e612412565b610b99838383612649565b610ba9565b610ba9600036612447565b505050565b6016546001600160a01b031690565b601d5490565b600054600160b01b900460ff1680610be55750600054600160a81b900460ff16155b156109ad57610bf2612412565b602180546001600160a01b0319166001600160a01b0383161790556109b8565b602154600160a01b900460ff16606080610c2a6126cc565b8051909250806001600160401b0381118015610c4557600080fd5b50604051908082528060200260200182016040528015610c6f578160200160208202803683370190505b50915060005b81811015610cea5760136002016000858381518110610c9057fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a900460ff16838281518110610cd257fe5b91151560209283029190910190910152600101610c75565b5050909192565b6020546001600160a01b031681565b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e77195490565b600a54600b54600c54600d54600e54600f54601054601254601180546040805160208084028201810190925282815260009b8c9b8c9b8c9b8c9b8c9b8c9b60609b8d9b8c9b989a979996989597949693959294909360ff61010084048116949316929091859190830182828015610dc557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610da7575b50505050509250995099509950995099509950995099509950995090919293949596979899565b6021546001600160a01b031681565b60008054600160a81b900460ff16610e1e576000546001600160a01b031661083b565b60076001609c1b016001600160a01b031663732524946040518163ffffffff1660e01b815260040160206040518083038186803b158015610e5e57600080fd5b505afa158015610e72573d6000803e3d6000fd5b505050506040513d6020811015610e8857600080fd5b5051905090565b60408051630debfda360e41b8152336004820152905160076001609c1b019163debfda30916024808301926020929190829003018186803b158015610ed357600080fd5b505afa158015610ee7573d6000803e3d6000fd5b505050506040513d6020811015610efd57600080fd5b5051610f40576040805162461bcd60e51b815260206004820152600d60248201526c37b7363c9032bc32b1baba37b960991b604482015290519081900360640190fd5b6001600160e01b0319811660009081526001602052604090208054610fac576040805162461bcd60e51b815260206004820152601a60248201527f74696d656c6f636b3a20696e76616c69642073656c6563746f72000000000000604482015290519081900360640190fd5b8054421015611002576040805162461bcd60e51b815260206004820152601960248201527f74696d656c6f636b3a206e6f7420616c6c6f7765642079657400000000000000604482015290519081900360640190fd5b6000816001018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561109c5780601f106110715761010080835404028352916020019161109c565b820191906000526020600020905b81548152906001019060200180831161107f57829003601f168201915b5050506001600160e01b03198616600090815260016020819052604082208281559495509092506110d091508301826147b2565b50506000805460ff60b01b1916600160b01b178155604051825130918491819060208401908083835b602083106111185780518252601f1990920191602091820191016110f9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461117a576040519150601f19603f3d011682016040523d82523d6000602084013e61117f565b606091505b50506000805460ff60b01b19169055604080516001600160e01b03198716815242602082015281519293507fa7326b57fc9cfe267aaea5e7f0b01757154d265620a0585819416ee9ddd2c438929081900390910190a16111de8161274d565b50505050565b601c5490565b60076001609c1b0181565b6111fd61276a565b6001600160e01b03198116600090815260016020526040902054611268576040805162461bcd60e51b815260206004820152601a60248201527f74696d656c6f636b3a20696e76616c69642073656c6563746f72000000000000604482015290519081900360640190fd5b604080516001600160e01b03198316815242602082015281517f7735b2391c38a81419c513e30ca578db7158eadd7101511b23e221c654d19cf8929181900390910190a16001600160e01b03198116600090815260016020819052604082208281559190610ba9908301826147b2565b600581565b600054600160b01b900460ff16806112ff5750600054600160a81b900460ff16155b1561136f5761130c612412565b60405163d0d552dd60e01b81526001600160a01b0383169063d0d552dd90611338908490600401614ffa565b600060405180830381600087803b15801561135257600080fd5b505af1158015611366573d6000803e3d6000fd5b5050505061137a565b61137a600036612447565b5050565b601854601954601a5460ff16909192565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611402576040805162461bcd60e51b815260206004820152601160248201527037b7363c90333630b932903230b2b6b7b760791b604482015290519081900360640190fd5b60055460ff166114145750600061083e565b600854611428576114236127c9565b611494565b601a5460ff16801561143c57504260195411155b156114495761142361290d565b601a5460ff1615801561145e57504260095411155b156114835761146b612efe565b61147361314b565b61147b6132d7565b61142361342e565b426019541161149457611494613576565b50600190565b606080606080600060038054905087106040518060400160405280601081526020016f0e6e8c2e4e840d2dcc8caf040d0d2ced60831b815250906114f15760405162461bcd60e51b8152600401610934919061527e565b50600354600090888801111561150c5760035488900361150e565b865b9050806001600160401b038111801561152657600080fd5b50604051908082528060200260200182016040528015611550578160200160208202803683370190505b509550806001600160401b038111801561156957600080fd5b50604051908082528060200260200182016040528015611593578160200160208202803683370190505b509450806001600160401b03811180156115ac57600080fd5b506040519080825280602002602001820160405280156115e057816020015b60608152602001906001900390816115cb5790505b509350806001600160401b03811180156115f957600080fd5b50604051908082528060200260200182016040528015611623578160200160208202803683370190505b50925060005b818110156117d95760006003828b018154811061164257fe5b6000918252602080832090910154808352600290915260409091205489519192506001600160c01b03169089908490811061167957fe5b6020026020010181815250506002600082815260200190815260200160002060000160189054906101000a90046001600160401b03166001600160401b03168783815181106116c457fe5b602090810291909101810191909152600082815260028083526040918290208101805483516001821615610100026000190190911692909204601f810185900485028301850190935282825290929091908301828280156117665780601f1061173b57610100808354040283529160200191611766565b820191906000526020600020905b81548152906001019060200180831161174957829003601f168201915b505050505086838151811061177757fe5b60200260200101819052506002600082815260200190815260200160002060010160009054906101000a90046001600160a01b03168583815181106117b857fe5b6001600160a01b039092166020928302919091019091015250600101611629565b50506004549497939650919450926001600160c01b0316919050565b600160208181526000928352604092839020805481840180548651600296821615610100026000190190911695909504601f810185900485028601850190965285855290949193929091908301828280156118915780601f1061186657610100808354040283529160200191611891565b820191906000526020600020905b81548152906001019060200180831161187457829003601f168201915b5050505050905082565b600054600160b01b900460ff16806118bd5750600054600160a81b900460ff16155b15610b9e576118ca612412565b60005b83518110156118fc576118f48482815181106118e557fe5b60200260200101518484612649565b6001016118cd565b50610ba9565b6001600160a01b03811660009081526014602052604090205460ff165b919050565b601b5481565b600054600160b01b900460ff168061194c5750600054600160a81b900460ff16155b156109ad57611959612412565b60405163984626c360e01b815273__$03dc2144a91b115216397a255bda0073a6$__9063984626c3906119939060139085906004016152b2565b60006040518083038186803b1580156119ab57600080fd5b505af41580156119bf573d6000803e3d6000fd5b505050506109b8565b600054600160b01b900460ff16806119ea5750600054600160a81b900460ff16155b15611aab576119f7612412565b600088118015611a075750600087115b8015611a135750858510155b8015611a2157506127108411155b8015611a2f57506127108311155b8015611a3b5750600082115b8015611a4957506005815111155b6040518060400160405280601381526020017211dbdd8b881c185c985b5cc81a5b9d985b1a59606a1b81525090611a935760405162461bcd60e51b8152600401610934919061527e565b50611aa6600a89898989898989896138a5565b611ab6565b611ab6600036612447565b5050505050505050565b600080600080600080611ad16123bf565b9550507f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000808702820195506001870102019250507f000000000000000000000000000000000000000000000000000000000000000082019050429091929394565b600054600160a01b900460ff1615611ba9576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b60008054600160a01b60ff60a01b19909116176001600160a01b0319166001600160a01b03831690811790915560408051918252517f9789733827840833afc031fb2ef9ab6894271f77bad2085687cf4ae5c7bee4db916020908290030190a150565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b600054600160b01b900460ff1680611c765750600054600160a81b900460ff16155b156109ad57611c83612412565b604051635d9fe31360e01b815273__$03dc2144a91b115216397a255bda0073a6$__90635d9fe313906119939060139085906004016152cb565b600080600080611ccc85612173565b805160208201516040909201519097919650945092505050565b6016546017546001600160a01b03918216911682565b600054600160b01b900460ff1680611d1e5750600054600160a81b900460ff16155b1561136f57611d2b612412565b604051636904d3eb60e11b815273__$03dc2144a91b115216397a255bda0073a6$__9063d209a7d690611d6790601390869086906004016152e2565b60006040518083038186803b158015611d7f57600080fd5b505af4158015611366573d6000803e3d6000fd5b611d9b61276a565b6001600160a01b0382166000908152601360209081526040918290205482518084019093526009835268139bdd08199bdd5b9960ba1b9183019190915260ff16611df85760405162461bcd60e51b8152600401610934919061527e565b506001600160a01b03821660009081526015602052604090819020805460ff1916831515179055517f24462ede4d3e8e5a69fecec6290d42a311016ca752216d9a3d681e284791b7ac90611e4f9084908490615224565b60405180910390a15050565b611e63610d00565b6001600160a01b0316336001600160a01b031614611ebf576040805162461bcd60e51b815260206004820152601460248201527337b7363c9030b2323932b9b9903ab83230ba32b960611b604482015290519081900360640190fd5b611ef8611ef383836040518060400160405280600e81526020016d20b2323932b9b9aab83230ba32b960911b815250613a9e565b613bcb565b61137a8282613bef565b7f000000000000000000000000000000000000000000000000000000000000000081565b6017546001600160a01b031690565b606061083b6126cc565b600054600160b01b900460ff1680611f615750600054600160a81b900460ff16155b156109ad57611f6e612412565b60005b8151811015611fa057611f98828281518110611f8957fe5b602002602001015160016125ca565b600101611f71565b506109b8565b60095481565b600a54600b54600c54600d54600e54600f5460105460125460ff8082169161010090041689565b600054600160b01b900460ff1680611ff55750600054600160a81b900460ff16155b15610b9e57612002612412565b600554604080518082019091526011815270105b1c9958591e481858dd1a5d985d1959607a1b60208201529060ff161561204f5760405162461bcd60e51b8152600401610934919061527e565b50601d83905560088290556009819055610ba9565b600054600160a81b900460ff1681565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146120e7576040805162461bcd60e51b815260206004820152601160248201527037b7363c90333630b932903230b2b6b7b760791b604482015290519081900360640190fd5b602154600160a01b900460ff1661214c576021805460ff60a01b1916600160a01b1790556040517f217a37a37fc40a97159886f80c3d45986e6fc4330ce6ad7283478b5e5ab705bc9061213c906001906151a1565b60405180910390a150600161083e565b50600090565b6004546001600160c01b03811690600160c01b90046001600160401b031682565b61217b6147f6565b60085482106040518060400160405280602081526020017f5265776172642065706f6368206e6f7420696e697469616c697a656420796574815250906121d45760405162461bcd60e51b8152600401610934919061527e565b506121de82613da5565b92915050565b6000600854600014156040518060400160405280602081526020017f5265776172642065706f6368206e6f7420696e697469616c697a656420796574815250906122415760405162461bcd60e51b8152600401610934919061527e565b5061083b613eaa565b60105490565b600061225b82612173565b5192915050565b61226a61276a565b600054600160a81b900460ff16156122c9576040805162461bcd60e51b815260206004820152601a60248201527f616c726561647920696e2070726f64756374696f6e206d6f6465000000000000604482015290519081900360640190fd5b60008054600161ff0160a01b031916600160a81b1790556040805160076001609c1b01815290517f83af113638b5422f9e977cebc0aaf0eaf2188eb9a8baae7f9d46c42b33a1560c9181900360200190a1565b60408051808201909152600b81526a233a39b7a6b0b730b3b2b960a91b602082015290565b7f000000000000000000000000000000000000000000000000000000000000000081565b61236d61276a565b6021805460ff60a01b1916600160a01b831515021790556040517f217a37a37fc40a97159886f80c3d45986e6fc4330ce6ad7283478b5e5ab705bc906123b49083906151a1565b60405180910390a150565b60007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000042038161240c57fe5b04905090565b600054600160b01b900460ff161561243f5733301461242d57fe5b6000805460ff60b01b191690556108b1565b6108b161276a565b61244f61276a565b600082359050600060076001609c1b016001600160a01b0316636221a54b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561249757600080fd5b505afa1580156124ab573d6000803e3d6000fd5b505050506040513d60208110156124c157600080fd5b505160408051808201825242830180825282516020601f89018190048102820181019094528781529394509290918281019190889088908190840183828082843760009201829052509390945250506001600160e01b0319861681526001602081815260409092208451815584830151805191945061254593928501920190614817565b509050507fed948300a3694aa01d4a6b258bfd664350193d770c0b51f8387277f6d83ea3b68382878760405180856001600160e01b0319168152602001848152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f191690920182900397509095505050505050a15050505050565b601a546040516306b8c18560e01b815273__$03dc2144a91b115216397a255bda0073a6$__916306b8c1859161261091601391600a918891889160ff169060040161530c565b60006040518083038186803b15801561262857600080fd5b505af415801561263c573d6000803e3d6000fd5b5050505061137a82613eb4565b601a5460405163169ffdc760e21b815273__$03dc2144a91b115216397a255bda0073a6$__91635a7ff71c9161269391601391600a9189918991899160ff9091169060040161533c565b60006040518083038186803b1580156126ab57600080fd5b505af41580156126bf573d6000803e3d6000fd5b50505050610ba983613eb4565b60165460408051635200305d60e11b815290516060926001600160a01b03169163a40060ba916004808301926000929190829003018186803b15801561271157600080fd5b505afa158015612725573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261083b9190810190614bca565b3d604051818101604052816000823e8215612766578181f35b8181fd5b612772610dfb565b6001600160a01b0316336001600160a01b0316146108b1576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000042106108b15760006127fa6126cc565b80516040805160608101825243600019810182526020808301918252428385019081526008805460009081526006909352948220845181559251600180850191909155905160029093019290925583549091019092559293509091905b828110156128df5783818151811061286b57fe5b60200260200101516001600160a01b031663e536f39683600001516040518263ffffffff1660e01b81526004016128a29190615395565b600060405180830381600087803b1580156128bc57600080fd5b505af11580156128d0573d6000803e3d6000fd5b50505050806001019050612857565b5050601b547f0000000000000000000000000000000000000000000000000000000000000000016009555050565b60006129176126cc565b805190915080158015906129355750602154600160a01b900460ff16155b15612e14576007546000906001600160a01b0316612989578144426040516020016129619291906153b7565b6040516020818303038152906040528051906020012060001c8161298157fe5b069050612a57565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d89601fd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156129e457600080fd5b505afa1580156129f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1c9190614df3565b9050828142604051602001612a329291906153b7565b6040516020818303038152906040528051906020012060001c81612a5257fe5b069150505b60608060008080805b87811015612bfc5760008882890181612a7557fe5b06905060008a8281518110612a8657fe5b6020908102919091018101516001600160a01b0381166000908152601490925260409091205490915060ff1615612adc576001600160a01b03166000908152601460205260409020805460ff1916905550612bf4565b6018546040516340462a2d60e01b81526001600160a01b038316916340462a2d91612b0d919089159060040161526e565b600060405180830381600087803b158015612b2757600080fd5b505af1925050508015612b5c57506040513d6000823e601f3d908101601f19168201604052612b599190810190614a0f565b60015b612bc757612b68615542565b80612b735750612b83565b612b7d8282613ff1565b50612bc2565b612bc2816040518060400160405280601881526020017f6572722066696e616c697a652070726963652065706f63680000000000000000815250613ff1565b612bf1565b87158015612bd6575060008351115b15612bed5791995097509550600194509250828787875b5050505b50505b600101612a60565b506000612c07613eaa565b90508215612dab57601e546018546001600160a01b039091169063a9b79e1790889088908890877f0000000000000000000000000000000000000000000000000000000000000000886001612c5b85614042565b03612c658b613da5565b516040516001600160e01b031960e08c901b168152612c8f99989796959493929190600401615072565b600060405180830381600087803b158015612ca957600080fd5b505af1925050508015612cba575060015b612da657612cc6615542565b80612cd15750612d28565b7f175a1d13d190d6a1e14461c214b3ecf6118b828797750b7bffd7c4f2c1eba54c83601854604051612d0492919061500e565b60405180910390a1601e54612d22906001600160a01b03168261408f565b50612da6565b7f175a1d13d190d6a1e14461c214b3ecf6118b828797750b7bffd7c4f2c1eba54c82601854604051612d5b92919061500e565b60405180910390a1601e546040805180820190915260168152756572722064697374726962757465207265776172647360501b6020820152612da6916001600160a01b03169061408f565b612db3565b612db3614268565b600780546001600160a01b0319166001600160a01b0384161790556040517f98b050a4042fbd1b89934ef40b9342e593f15081a348af940573a0179031f4ad90612e00908490849061500e565b60405180910390a150505050505050612ef0565b60005b81811015612e95576000838281518110612e2d57fe5b6020908102919091018101516001600160a01b0381166000908152601490925260409091205490915060ff1615612e82576001600160a01b03166000908152601460205260409020805460ff19169055612e8d565b612e8b816143ea565b505b600101612e17565b50612e9e614268565b600780546001600160a01b03191690557f98b050a4042fbd1b89934ef40b9342e593f15081a348af940573a0179031f4ad6000612ed9613eaa565b604051612ee792919061500e565b60405180910390a15b5050601a805460ff19169055565b6000612f086126cc565b905060008151905060004290507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d89601fd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612f6e57600080fd5b505afa158015612f82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fa69190614df3565b604051910190612fba908290602001615395565b6040516020818303038152906040528051906020012060001c90506000601c54612fea612fe5613eaa565b613da5565b60200151430381612ff757fe5b04905080613003575060015b600081838161300e57fe5b0690508061301a575060015b60408051606081018252438381038252602080830191825242838501908152600880546000908152600690935294822084518155925160018085019190915590516002909301929092558354909101909255905b858110156130f75786818151811061308257fe5b60200260200101516001600160a01b031663e536f39683600001516040518263ffffffff1660e01b81526004016130b99190615395565b600060405180830381600087803b1580156130d357600080fd5b505af11580156130e7573d6000803e3d6000fd5b50506001909201915061306e9050565b50805160208201516040517f1813f880dc24666c8b69c9d771a487ea620a27fde1514be3112847056c0c53229261312f9290916153b7565b60405180910390a15050601b5460098054909101905550505050565b6000613155613eaa565b60105490915042035b81601d54108015613180575080613179601d54600101613da5565b6040015111155b1561137a57601e54601d54604051636b60edf760e11b81526001600160a01b039092169163d6c1dbee916131b691600401615395565b600060405180830381600087803b1580156131d057600080fd5b505af19250505080156131e1575060015b6132c9576131ed615542565b806131f8575061324d565b7fa819a21065ad87bdde9e6d398d3213e0d3634afd87aceb7092236483f5d7ca8d601d546040516132299190615395565b60405180910390a1601e54613247906001600160a01b03168261408f565b5061137a565b7fa819a21065ad87bdde9e6d398d3213e0d3634afd87aceb7092236483f5d7ca8d601d5460405161327e9190615395565b60405180910390a1601e54604080518082019091526011815270195c9c8818db1bdcd948195e1c1a5c9959607a1b60208201526132c4916001600160a01b03169061408f565b61137a565b601d8054600101905561315e565b60006132e4601d54613da5565b5160205460405163cbc31cf760e01b81529192506001600160a01b03169063cbc31cf790613316908490600401615395565b600060405180830381600087803b15801561333057600080fd5b505af1925050508015613341575060015b6109b85761334d615542565b8061335857506133ab565b7f9f874ea08c7014cce74622bfe71434f81aba7598ad65126a6aea86945bdfa18d826040516133879190615395565b60405180910390a16020546133a5906001600160a01b03168261408f565b50610a84565b7f9f874ea08c7014cce74622bfe71434f81aba7598ad65126a6aea86945bdfa18d816040516133da9190615395565b60405180910390a1610a84602060009054906101000a90046001600160a01b0316604051806040016040528060158152602001746572722073657420636c65616e757020626c6f636b60581b81525061408f565b6021546001600160a01b0316156108b1576000613449613eaa565b9050602160009054906101000a90046001600160a01b03166001600160a01b03166321eb1a956040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561349b57600080fd5b505af19250505080156134ac575060015b6109b8576134b8615542565b806134c35750613510565b7ff7c7d6681321cc290eb89e8c96dba504436073b8bb277945cc32177e5181dd84826040516134f29190615395565b60405180910390a16021546133a5906001600160a01b03168261408f565b7ff7c7d6681321cc290eb89e8c96dba504436073b8bb277945cc32177e5181dd848160405161353f9190615395565b60405180910390a160215460408051606081019091526022808252610a84926001600160a01b0316919061561e602083013961408f565b60125460ff161561360157604051639ec2b58160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639ec2b581906135ce906011906004016150dc565b600060405180830381600087803b1580156135e857600080fd5b505af11580156135fc573d6000803e3d6000fd5b505050505b600061360b6126cc565b80519091506000811580159061362b5750602154600160a01b900460ff16155b156136c457600061363d612fe5613eaa565b51601f546040516237b08960e41b81529192506001600160a01b03169063037b08909061366e908490600401615395565b602060405180830381600087803b15801561368857600080fd5b505af115801561369c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136c09190614df3565b9150505b60005b8281101561386a5760008482815181106136dd57fe5b602090810291909101015160125490915060ff161561377057600a54600b54600c54600d54600e54600f5460405163f7dba1f560e01b81526001600160a01b0388169663f7dba1f59661373d969195909491939092601190600401615416565b600060405180830381600087803b15801561375757600080fd5b505af115801561376b573d6000803e3d6000fd5b505050505b806001600160a01b031663f670ebe384602160149054906101000a900460ff16806137b357506001600160a01b03841660009081526015602052604090205460ff165b6040518363ffffffff1660e01b81526004016137d092919061526e565b600060405180830381600087803b1580156137ea57600080fd5b505af19250505080156137fb575060015b61386157613807615542565b806138125750613822565b61381c8282614486565b50613861565b613861816040518060400160405280601981526020017f65727220696e69742065706f636820666f722072657665616c00000000000000815250614486565b506001016136c7565b506012805460ff19169055600061387f6123bf565b6018819055905061388f81614697565b6019555050601a805460ff191660011790555050565b885488146138c05760088901805460ff191660011790558789555b868960010154146138e35760088901805460ff1916600190811790915589018790555b858960020154146139055760088901805460ff19166001179055600289018690555b848960030154146139275760088901805460ff19166001179055600389018590555b838960040154146139495760088901805460ff19166001179055600489018490555b8289600501541461396b5760088901805460ff19166001179055600589018390555b8189600601541461398d5760088901805460ff19166001179055600689018290555b805160078a0154146139c35780516139ae9060078b019060208401906148a3565b5060088901805460ff19166001179055613a82565b60005b8151811015613a80578181815181106139db57fe5b60200260200101516001600160a01b03168a60070182815481106139fb57fe5b6000918252602090912001546001600160a01b031614613a785760088a01805460ff191660011790558151829082908110613a3257fe5b60200260200101518a6007018281548110613a4957fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b6001016139c6565b505b5050506008909501805461ff0019166101001790555050505050565b600080826040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015613ae2578181015183820152602001613aca565b50505050905090810190601f168015613b0f5780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012090506000805b8651811015613b7757868181518110613b4557fe5b6020026020010151831415613b6f57858181518110613b6057fe5b60200260200101519150613b77565b600101613b30565b506001600160a01b038116613bc2576040805162461bcd60e51b815260206004820152600c60248201526b61646472657373207a65726f60a01b604482015290519081900360640190fd5b95945050505050565b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e771955565b613c23828260405180604001604052806011815260200170233a39b7a932bbb0b93226b0b730b3b2b960791b815250613a9e565b601e60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550613c72828260405180604001604052806006815260200165537570706c7960d01b815250613a9e565b601f60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550613cd882826040518060400160405280601981526020017f436c65616e7570426c6f636b4e756d6265724d616e6167657200000000000000815250613a9e565b602060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550613d2d82826040518060400160405280600c81526020016b4674736f526567697374727960a01b815250613a9e565b601680546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152601081526f2b37ba32b92bb434ba32b634b9ba32b960811b6020820152613d819083908390613a9e565b601780546001600160a01b0319166001600160a01b03929092169190911790555050565b613dad6147f6565b50600081815260066020908152604091829020825160608101845281548152600182015492810192909252600201549181018290529061191f5760008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a795f409866040518263ffffffff1660e01b8152600401613e389190615395565b60606040518083038186803b158015613e5057600080fd5b505afa158015613e64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e889190614e57565b6040805160608101825293845260208401929092529082015295945050505050565b6008546000190190565b604051630bc29bcf60e21b81526001600160a01b03821690632f0a6f3c90613f44907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000906004016153dd565b600060405180830381600087803b158015613f5e57600080fd5b505af1158015613f72573d6000803e3d6000fd5b505050506008546000146109b857806001600160a01b031663e536f396613f9a612fe5613eaa565b516040516001600160e01b031960e084901b168152613fbc9190600401615395565b600060405180830381600087803b158015613fd657600080fd5b505af1158015613fea573d6000803e3d6000fd5b5050505050565b7f79f4c7cc43bfb79f5a3aad0d92f75b6fed7db061bb5cc2580a01c8132711b8818260185460016040516140279392919061523f565b60405180910390a1614039828261408f565b61137a826143ea565b7f0000000000000000000000000000000000000000000000000000000000000000600182017f00000000000000000000000000000000000000000000000000000000000000000201919050565b600082826040516020016140a4929190615027565b60408051601f198184030181528282528051602091820120600081815260029092529190208054436001600160c01b038181166001600160401b03600160c01b80860482166001019091160291909316176001600160c01b031916919091179091559092507f1a601cf5e0efbd558b2778b7389af04741d1c49bcab104c40daa2da19459361791614138918691869061504b565b60405180910390a1600480546001600160c01b0319811660016001600160c01b03928316810190921617909155600082815260026020526040902054600160c01b90046001600160401b03161115614190575061137a565b6003805460018082019092557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01829055600082815260026020818152604090922092830180546001600160a01b0319166001600160a01b03881617905584516142009390910191850190614817565b50600354600091825260026020526040909120600101805467ffffffffffffffff60a01b1916600160a01b6000199093016001600160401b0390811684029190911791829055600480546001600160c01b03169390920416600160c01b029190911790555050565b601e546018546001600160a01b03909116906367dcac53907f000000000000000000000000000000000000000000000000000000000000000060016142ac83614042565b036040518463ffffffff1660e01b81526004016142cb939291906153dd565b600060405180830381600087803b1580156142e557600080fd5b505af19250505080156142f6575060015b6108b157614302615542565b8061430d5750614362565b7f8eb60f903ef61e0e490d7d7ba6e5b85cd949ebece7a5e5b3346eb046c041413f60185460405161433e9190615395565b60405180910390a1601e5461435c906001600160a01b03168261408f565b506143e5565b7f8eb60f903ef61e0e490d7d7ba6e5b85cd949ebece7a5e5b3346eb046c041413f6018546040516143939190615395565b60405180910390a1601e5460408051808201909152601b81527f6572722061636372756520756e6561726e65642072657761726473000000000060208201526143e5916001600160a01b03169061408f565b6108b1565b60185460405163257ea88160e11b81526001600160a01b03831691634afd5102916144189190600401615395565b600060405180830381600087803b15801561443257600080fd5b505af1925050508015614443575060015b6109b85761444f615542565b8061445a5750614464565b6133a58282614706565b610a848160405180606001604052806021815260200161566760219139614706565b7f61156899176547b8075bfa81fa2996c6057ce9c71320884b11c0179d9dc2e462826144b06123bf565b6040516144be92919061500e565b60405180910390a16144d0828261408f565b602154600160a01b900460ff168061450057506001600160a01b03821660009081526015602052604090205460ff165b1561452d576001600160a01b0382166000908152601460205260409020805460ff1916600117905561137a565b60405163f670ebe360e01b81526001600160a01b0383169063f670ebe39061455d9060009060019060040161526e565b600060405180830381600087803b15801561457757600080fd5b505af1925050508015614588575060015b61137a57614594615542565b8061459f5750614612565b6001600160a01b0383166000908152601460205260409020805460ff191660011790557f61156899176547b8075bfa81fa2996c6057ce9c71320884b11c0179d9dc2e462836145ec6123bf565b6040516145fa92919061500e565b60405180910390a161460c838261408f565b506132c4565b6001600160a01b0382166000908152601460205260409020805460ff191660011790557f61156899176547b8075bfa81fa2996c6057ce9c71320884b11c0179d9dc2e4628261465f6123bf565b60405161466d92919061500e565b60405180910390a16132c4826040518060600160405280602281526020016155fc6022913961408f565b7f0000000000000000000000000000000000000000000000000000000000000000600182017f000000000000000000000000000000000000000000000000000000000000000002017f000000000000000000000000000000000000000000000000000000000000000001919050565b7f79f4c7cc43bfb79f5a3aad0d92f75b6fed7db061bb5cc2580a01c8132711b88182601854600260405161473c9392919061523f565b60405180910390a161474e828261408f565b60185460405163974d7a6b60e01b81526001600160a01b0384169163974d7a6b9161477c9190600401615395565b600060405180830381600087803b15801561479657600080fd5b505af11580156147aa573d6000803e3d6000fd5b505050505050565b50805460018160011615610100020316600290046000825580601f106147d857506109b8565b601f0160209004906000526020600020908101906109b891906148f8565b60405180606001604052806000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261484d5760008555614893565b82601f1061486657805160ff1916838001178555614893565b82800160010185558215614893579182015b82811115614893578251825591602001919060010190614878565b5061489f9291506148f8565b5090565b828054828255906000526020600020908101928215614893579160200282015b8281111561489357825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906148c3565b5b8082111561489f57600081556001016148f9565b600082601f83011261491d578081fd5b8135602061493261492d8361551f565b6154fc565b828152818101908583018385028701840188101561494e578586fd5b855b85811015614975578135614963816155e6565b84529284019290840190600101614950565b5090979650505050505050565b600082601f830112614992578081fd5b815160206149a261492d8361551f565b82815281810190858301838502870184018810156149be578586fd5b855b85811015614975578151845292840192908401906001016149c0565b8035801515811461191f57600080fd5b6000602082840312156149fd578081fd5b8135614a08816155e6565b9392505050565b600080600060608486031215614a23578182fd5b83516001600160401b0380821115614a39578384fd5b818601915086601f830112614a4c578384fd5b81516020614a5c61492d8361551f565b82815281810190858301838502870184018c1015614a78578889fd5b8896505b84871015614aa3578051614a8f816155e6565b835260019690960195918301918301614a7c565b5091890151919750909350505080821115614abc578384fd5b50614ac986828701614982565b925050604084015190509250925092565b60008060408385031215614aec578182fd5b82356001600160401b0380821115614b02578384fd5b818501915085601f830112614b15578384fd5b81356020614b2561492d8361551f565b82815281810190858301838502870184018b1015614b41578889fd5b8896505b84871015614b63578035835260019690960195918301918301614b45565b5096505086013592505080821115614b79578283fd5b50614b868582860161490d565b9150509250929050565b600060208284031215614ba1578081fd5b81356001600160401b03811115614bb6578182fd5b614bc28482850161490d565b949350505050565b60006020808385031215614bdc578182fd5b82516001600160401b03811115614bf1578283fd5b8301601f81018513614c01578283fd5b8051614c0f61492d8261551f565b8181528381019083850185840285018601891015614c2b578687fd5b8694505b83851015614c56578051614c42816155e6565b835260019490940193918501918501614c2f565b50979650505050505050565b600080600060608486031215614c76578081fd5b83356001600160401b03811115614c8b578182fd5b614c978682870161490d565b935050614ca6602085016149dc565b9150614cb4604085016149dc565b90509250925092565b600060208284031215614cce578081fd5b614a08826149dc565b600060208284031215614ce8578081fd5b81356001600160e01b031981168114614a08578182fd5b60008060408385031215614d11578182fd5b8235614d1c816155e6565b915060208301356001600160401b03811115614d36578182fd5b614b868582860161490d565b60008060408385031215614d54578182fd5b8235614d5f816155e6565b9150614d6d602084016149dc565b90509250929050565b600080600060608486031215614d8a578081fd5b8335614d95816155e6565b9250614ca6602085016149dc565b60008060408385031215614db5578182fd5b8235614dc0816155e6565b91506020830135614dd0816155e6565b809150509250929050565b600060208284031215614dec578081fd5b5035919050565b600060208284031215614e04578081fd5b5051919050565b60008060408385031215614e1d578182fd5b50508035926020909101359150565b600080600060608486031215614e40578081fd5b505081359360208301359350604090920135919050565b600080600060608486031215614e6b578081fd5b8351925060208401519150604084015190509250925092565b600080600080600080600080610100898b031215614ea0578586fd5b883597506020890135965060408901359550606089013594506080890135935060a0890135925060c0890135915060e08901356001600160401b03811115614ee6578182fd5b614ef28b828c0161490d565b9150509295985092959890939650565b6000815180845260208085019450808401835b83811015614f3a5781516001600160a01b031687529582019590820190600101614f15565b509495945050505050565b6000815480845260208085019450838352808320835b83811015614f3a5781546001600160a01b031687529582019560019182019101614f5b565b6000815180845260208085019450808401835b83811015614f3a57815187529582019590820190600101614f93565b60008151808452815b81811015614fd457602081850181015186830182015201614fb8565b81811115614fe55782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0383168152604060208201819052600090614bc290830184614faf565b600060018060a01b038516825283602083015260606040830152613bc26060830184614faf565b60006101208083526150868184018d614f02565b9050828103602084015261509a818c614f80565b604084019a909a52505060608101969096526001600160a01b0394909416608086015260a085019290925260c084015260e08301526101009091015292915050565b600060208252614a086020830184614f45565b600060208252614a086020830184614f02565b600060a0825261511560a0830188614f80565b6020838203818501526151288289614f80565b848103604086015287518082529092508183019082810284018301838a01865b8381101561517657601f19878403018552615164838351614faf565b94860194925090850190600101615148565b5050868103606088015261518a818a614f02565b955050505050508260808301529695505050505050565b901515815260200190565b6000841515825260206060818401526151c86060840186614f02565b8381036040850152845180825282860191830190845b818110156151fc5783511515835292840192918401916001016151de565b509098975050505050505050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b038416815260208101839052606081016006831061526057fe5b826040830152949350505050565b9182521515602082015260400190565b600060208252614a086020830184614faf565b81518152602080830151908201526040918201519181019190915260600190565b600083825260406020830152614bc26040830184614f02565b9182526001600160a01b0316602082015260400190565b8381526001600160a01b0383166020820152606060408201819052600090613bc290830184614f02565b94855260208501939093526001600160a01b03919091166040840152151560608301521515608082015260a00190565b95865260208601949094526001600160a01b039290921660408501521515606084015215156080830152151560a082015260c00190565b6001600160c01b039290921682526001600160401b0316602082015260400190565b90815260200190565b600083825260406020830152614bc26040830184614faf565b918252602082015260400190565b92835260208301919091521515604082015260600190565b9283526020830191909152604082015260600190565b948552602085019390935260408401919091526060830152608082015260a00190565b60008882528760208301528660408301528560608301528460808301528360a083015260e060c083015261544d60e0830184614f45565b9998505050505050505050565b60006101408c83528b60208401528a60408401528960608401528860808401528760a08401528660c08401528060e084015261549881840187614f02565b94151561010084015250509015156101209091015298975050505050505050565b988952602089019790975260408801959095526060870193909352608086019190915260a085015260c0840152151560e083015215156101008201526101200190565b6040518181016001600160401b038111828210171561551757fe5b604052919050565b60006001600160401b0382111561553257fe5b5060209081020190565b60e01c90565b600060443d10156155525761083e565b600481823e6308c379a0615566825161553c565b146155705761083e565b6040513d600319016004823e80513d6001600160401b03816024840111818411171561559f575050505061083e565b828401925082519150808211156155b9575050505061083e565b503d830160208284010111156155d15750505061083e565b601f01601f1916810160200160405291505090565b6001600160a01b03811681146109b857600080fdfe6572722066616c6c6261636b20696e69742065706f636820666f722072657665616c6572722063616c6c696e672075706461746541637469766556616c696461746f72735265776172642065706f6368206475726174696f6e20636f6e646974696f6e20696e76616c69646572722066616c6c6261636b2066696e616c697a652070726963652065706f6368a2646970667358221220d09b01475a7177c6d259d0282c07fab04b029db371851c757001b9309d0fc03364736f6c63430007060033",
1669
+ "bytecode": "0x6101406040523480156200001257600080fd5b50604051620064c3380380620064c383398101604081905262000035916200053e565b878a8a81806001600160a01b038116156200005557620000558162000457565b506001600160a01b038116620000a5576040805162461bcd60e51b815260206004820152601060248201526f5f676f7665726e616e6365207a65726f60801b604482015290519081900360640190fd5b506001600160a01b038116620000f6576040805162461bcd60e51b8152602060048201526011602482015270666c617265206461656d6f6e207a65726f60781b604482015290519081900360640190fd5b60601b6001600160601b0319166080525062000112816200051a565b50854210156040518060400160405280601e81526020017f46697273742065706f636820737461727420747320696e20667574757265000081525090620001775760405162461bcd60e51b81526004016200016e9190620005e3565b60405180910390fd5b5060408051808201909152600e81526d05265776172642065706f636820360941b602082015282620001be5760405162461bcd60e51b81526004016200016e9190620005e3565b5060408051808201909152600d81526c050726963652065706f6368203609c1b602082015285620002045760405162461bcd60e51b81526004016200016e9190620005e3565b5060408051808201909152601481527f52657665616c2070726963652065706f636820300000000000000000000000006020820152846200025a5760405162461bcd60e51b81526004016200016e9190620005e3565b5060408051808201909152601e81527f566f746520706f77657220696e74657276616c206672616374696f6e20300000602082015281620002b05760405162461bcd60e51b81526004016200016e9190620005e3565b5060408051808201909152601b81527f52657665616c2070726963652065706f636820746f6f206c6f6e6700000000006020820152858510620003085760405162461bcd60e51b81526004016200016e9190620005e3565b508284870111156040518060400160405280601b81526020017f5265776172642065706f636820737461727420746f6f20736f6f6e000000000081525090620003665760405162461bcd60e51b81526004016200016e9190620005e3565b50848685850303816200037557fe5b066000146040518060600160405280602481526020016200649f6024913990620003b45760405162461bcd60e51b81526004016200016e9190620005e3565b50848281620003bf57fe5b06600014604051806060016040528060278152602001620064786027913990620003fe5760405162461bcd60e51b81526004016200016e9190620005e3565b506101008390526020829055602181905560a086905260c085905260e0849052601c83905584868403816200042f57fe5b04601b55505050505060609190911b6001600160601b03191661012052506200065292505050565b600054600160a01b900460ff1615620004b7576040805162461bcd60e51b815260206004820152601460248201527f696e697469616c6973656420213d2066616c7365000000000000000000000000604482015290519081900360640190fd5b60008054600160a01b60ff60a01b19909116176001600160a01b0319166001600160a01b03831690811790915560408051918252517f9789733827840833afc031fb2ef9ab6894271f77bad2085687cf4ae5c7bee4db916020908290030190a150565b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e771955565b6000806000806000806000806000806101408b8d0312156200055e578586fd5b8a516200056b8162000639565b60208c0151909a506200057e8162000639565b60408c0151909950620005918162000639565b60608c0151909850620005a48162000639565b8097505060808b0151955060a08b0151945060c08b0151935060e08b015192506101008b015191506101208b015190509295989b9194979a5092959850565b6000602080835283518082850152825b818110156200061157858101830151858201604001528201620005f3565b81811115620006235783604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146200064f57600080fd5b50565b60805160601c60a05160c05160e051610100516101205160601c615d68620007106000398061258e528061454f525080610b8b528061218c528061309f52806131ba525080610b5c528061207c528061467d5280614c69525080610a9d5280610b3b528061204b5280612a1f52806135ce528061465b52806147ca528061480a5280614c46525080610b1a528061202a5280612a40528061463952806147a55280614c21525080611526528061216252806126f25250615d686000f3fe608060405234801561001057600080fd5b506004361061041d5760003560e01c806374e6310e1161022b578063b4dba0f311610130578063e371aef0116100b8578063f2edab5a11610087578063f2edab5a1461082c578063f5a983831461083f578063f5f5ba7214610847578063f937d6ad1461085c578063ff882fbb146108645761041d565b8063e371aef0146107e6578063e5399da3146107fc578063e7c830d41461081c578063ec31db0c146108245761041d565b8063d429cfe5116100ff578063d429cfe5146107a8578063d89c39e6146107bb578063e080a970146107c3578063e17f212e146107d6578063e22fdece146107de5761041d565b8063b4dba0f31461077b578063c2b0d47b14610783578063cb063fa21461078b578063ce69f833146107935761041d565b8063a157713b116101b3578063a90a38e111610182578063a90a38e114610727578063a93a6f421461073a578063af946af71461074d578063b00c0b7614610760578063b23b6ef1146107735761041d565b8063a157713b146106f1578063a578f55b146106f9578063a670ff8714610701578063a795f409146107145761041d565b8063882376c3116101fa578063882376c3146106975780638de306b1146106aa57806393a79025146106bd5780639d6a890f146106d6578063a1077532146106e95761041d565b806374e6310e14610648578063758ff1da14610669578063823033a91461067c57806385f3c9c91461068f5761041d565b80633e7ff857116103315780635ff27079116102b957806369b11ac61161028857806369b11ac6146105fb5780636b65cc34146106035780636ca051e6146106165780636d0e8c341461062d5780636ea0aa31146106355761041d565b80635ff27079146105c557806360f2c5b2146105d857806362354e03146105e057806367fc4029146105e85761041d565b80635267a15d116103005780635267a15d1461057b5780635835cf30146105835780635904089a146105a25780635aa6e675146105aa5780635bb44e9a146105b25761041d565b80633e7ff857146105415780633fdeb7e1146105495780634b48dd5e1461055c5780634eac870f146105735761041d565b8063144e1591116103b45780632b3c41a4116103835780632b3c41a4146104f25780632fd8eb7d1461050b578063361b5459146105135780633758e6791461052657806338b5f869146105395761041d565b8063144e1591146104aa57806315c29c5b146104c15780631cb513f7146104c95780632663f1b4146104df5761041d565b80630f15f4c0116103f05780630f15f4c0146104725780630f4ef8a61461047c5780631322679314610484578063132c7e1f146104975761041d565b806302fb0c5e14610422578063047fc9aa1461044057806308a7f402146104555780630e063d7d1461046a575b600080fd5b61042a610877565b6040516104379190615840565b60405180910390f35b610448610880565b6040516104379190615699565b61045d61088f565b6040516104379190615a32565b61044861089f565b61047a6108ae565b005b6104486108fc565b61047a61049236600461550e565b61090b565b61047a6104a5366004615381565b610a28565b6104b2610b18565b60405161043793929190615a7a565b61045d610b80565b6104d1610b86565b604051610437929190615a54565b61047a6104ed366004614f64565b610bad565b6104fa610bec565b6040516104379594939291906157a1565b610448610c27565b61047a610521366004615381565b610c36565b61047a610534366004615325565b610cc2565b610448610d11565b61045d610d20565b61047a610557366004614f64565b610d26565b610564610d75565b6040516104379392919061584b565b610448610e54565b610448610e63565b61058b610e88565b6040516104379b9a99989796959493929190615ab3565b610448610f57565b610448610f66565b61045d6105c0366004614f64565b610ffa565b61047a6105d3366004615282565b611019565b61045d61136e565b610448611374565b61047a6105f6366004615282565b61137f565b61045d611462565b61047a610611366004615354565b611467565b61061e611508565b60405161043793929190615a62565b61042a611519565b6104fa610643366004615495565b61191b565b61065b610656366004615282565b611c76565b604051610437929190615a3b565b61047a6106773660046151da565b611d1c565b61042a61068a366004614f64565b611d83565b61045d611da1565b61047a6106a53660046153b1565b611da7565b61047a6106b8366004615108565b611f76565b6106c5612014565b604051610437959493929190615a90565b61047a6106e4366004614f64565b6120a7565b610448612160565b61045d612184565b61045d61218a565b61047a61070f366004614f64565b6121ae565b6104b2610722366004615381565b61221a565b61047a610735366004615257565b612243565b61047a6107483660046152aa565b612380565b61047a61075b3660046152ed565b612417565b61047a61076e366004615052565b6124df565b61045d612586565b61044861258c565b6104486125b0565b61042a6125bf565b61079b6125cd565b604051610437919061578e565b61047a6107b6366004615108565b6125d7565b61045d61263e565b61047a6107d13660046154b6565b612644565b61042a6126d5565b61042a6126e5565b6107ee6127c3565b604051610437929190615a10565b61080f61080a366004615381565b6127e4565b6040516104379190615926565b61045d612855565b61045d6128bb565b61045d61083a366004615381565b6128c1565b61047a6128d3565b61084f61298d565b6040516104379190615913565b6104486129b2565b61047a61087236600461523b565b6129c1565b60055460ff1681565b6025546001600160a01b031681565b6000610899612a1b565b90505b90565b6023546001600160a01b031690565b600054600160b01b900460ff16806108d05750600054600160a81b900460ff16155b156108ef576108dd612a6e565b6005805460ff191660011790556108fa565b6108fa600036612aa3565b565b6024546001600160a01b031681565b600054600160b01b900460ff168061092d5750600054600160a81b900460ff16155b15610a115761093a612a6e565b60008911801561094a5750600088115b80156109565750868610155b801561096457506127108511155b801561097257506127108411155b801561098057506127108311155b801561098c5750600082115b801561099a57506005815111155b6040518060400160405280601381526020017211dbdd8b881c185c985b5cc81a5b9d985b1a59606a1b815250906109ed5760405162461bcd60e51b81526004016109e49190615913565b60405180910390fd5b506109f9600a8b612c26565b610a0c600a8a8a8a8a8a8a898b8a612c7b565b610a1c565b610a1c600036612aa3565b50505050505050505050565b600054600160b01b900460ff1680610a4a5750600054600160a81b900460ff16155b15610b0a57610a57612a6e565b60408051808201909152600e81526d05265776172642065706f636820360941b602082015281610a9a5760405162461bcd60e51b81526004016109e49190615913565b507f00000000000000000000000000000000000000000000000000000000000000008181610ac457fe5b06600014604051806060016040528060278152602001615ceb6027913990610aff5760405162461bcd60e51b81526004016109e49190615913565b506020819055610b15565b610b15600036612aa3565b50565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000909192565b601e5481565b6020547f000000000000000000000000000000000000000000000000000000000000000091565b600054600160b01b900460ff1680610bcf5750600054600160a81b900460ff16155b15610b0a57610bdc612a6e565b610be7816001612e9e565b610b15565b600454606090819081908190600090610c1690600160c01b90046001600160401b0316600161191b565b945094509450945094509091929394565b6007546001600160a01b031681565b600054600160b01b900460ff1680610c585750600054600160a81b900460ff16155b15610b0a57610c65612a6e565b60408051808201909152601e81527f566f746520706f77657220696e74657276616c206672616374696f6e20300000602082015281610cb75760405162461bcd60e51b81526004016109e49190615913565b506021819055610b15565b600054600160b01b900460ff1680610ce45750600054600160a81b900460ff16155b15610d0157610cf1612a6e565b610cfc838383612f1d565b610d0c565b610d0c600036612aa3565b505050565b6019546001600160a01b031690565b60225490565b600054600160b01b900460ff1680610d485750600054600160a81b900460ff16155b15610b0a57610d55612a6e565b602780546001600160a01b0319166001600160a01b038316179055610b15565b602754600160a01b900460ff16606080610d8d612fa0565b8051909250806001600160401b0381118015610da857600080fd5b50604051908082528060200260200182016040528015610dd2578160200160208202803683370190505b50915060005b81811015610e4d5760166002016000858381518110610df357fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a900460ff16838281518110610e3557fe5b91151560209283029190910190910152600101610dd8565b5050909192565b6026546001600160a01b031681565b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e77195490565b600b54600c54600d54600e54600f54601054601254601154601454601380546040805160208084028201810190925282815260009c8d9c8d9c8d9c8d9c8d9c8d9c8d9c60609c8e9c8d9c999b989a979996989597949693959294909360ff6101008404811694931692859190830182828015610f2d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f0f575b505050505092509a509a509a509a509a509a509a509a509a509a509a50909192939495969798999a565b6027546001600160a01b031681565b60008054600160a81b900460ff16610f89576000546001600160a01b0316610899565b60076001609c1b016001600160a01b031663732524946040518163ffffffff1660e01b815260040160206040518083038186803b158015610fc957600080fd5b505afa158015610fdd573d6000803e3d6000fd5b505050506040513d6020811015610ff357600080fd5b5051905090565b6001600160a01b0381166000908152601560205260409020545b919050565b60408051630debfda360e41b8152336004820152905160076001609c1b019163debfda30916024808301926020929190829003018186803b15801561105d57600080fd5b505afa158015611071573d6000803e3d6000fd5b505050506040513d602081101561108757600080fd5b50516110ca576040805162461bcd60e51b815260206004820152600d60248201526c37b7363c9032bc32b1baba37b960991b604482015290519081900360640190fd5b6001600160e01b0319811660009081526001602052604090208054611136576040805162461bcd60e51b815260206004820152601a60248201527f74696d656c6f636b3a20696e76616c69642073656c6563746f72000000000000604482015290519081900360640190fd5b805442101561118c576040805162461bcd60e51b815260206004820152601960248201527f74696d656c6f636b3a206e6f7420616c6c6f7765642079657400000000000000604482015290519081900360640190fd5b6000816001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112265780601f106111fb57610100808354040283529160200191611226565b820191906000526020600020905b81548152906001019060200180831161120957829003601f168201915b5050506001600160e01b031986166000908152600160208190526040822082815594955090925061125a9150830182614d3a565b50506000805460ff60b01b1916600160b01b178155604051825130918491819060208401908083835b602083106112a25780518252601f199092019160209182019101611283565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611304576040519150601f19603f3d011682016040523d82523d6000602084013e611309565b606091505b50506000805460ff60b01b19169055604080516001600160e01b03198716815242602082015281519293507fa7326b57fc9cfe267aaea5e7f0b01757154d265620a0585819416ee9ddd2c438929081900390910190a161136881613021565b50505050565b60215490565b60076001609c1b0181565b61138761303e565b6001600160e01b031981166000908152600160205260409020546113f2576040805162461bcd60e51b815260206004820152601a60248201527f74696d656c6f636b3a20696e76616c69642073656c6563746f72000000000000604482015290519081900360640190fd5b604080516001600160e01b03198316815242602082015281517f7735b2391c38a81419c513e30ca578db7158eadd7101511b23e221c654d19cf8929181900390910190a16001600160e01b03198116600090815260016020819052604082208281559190610d0c90830182614d3a565b600581565b600054600160b01b900460ff16806114895750600054600160a81b900460ff16155b156114f957611496612a6e565b60405163d0d552dd60e01b81526001600160a01b0383169063d0d552dd906114c2908490600401615699565b600060405180830381600087803b1580156114dc57600080fd5b505af11580156114f0573d6000803e3d6000fd5b50505050611504565b611504600036612aa3565b5050565b601b54601c54601d5460ff16909192565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461158c576040805162461bcd60e51b815260206004820152601160248201527037b7363c90333630b932903230b2b6b7b760791b604482015290519081900360640190fd5b60055460ff1661159e5750600061089c565b6008546115b2576115ad61309d565b611915565b601d546000908190819060ff1680156115cd575042601c5411155b156115db57600191506115f9565b601d5460ff161580156115f057504260095411155b156115f9575060015b81806116025750805b156118c557601d54610100900460ff1615611811576023546040805163a978fb6b60e01b815281516000936001600160a01b03169263a978fb6b9260048082019391829003018186803b15801561165857600080fd5b505afa15801561166c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116909190615471565b9094509050801580156116a05750825b156117c657602354601b546001600160a01b0390911690631c91efcf906116c5612a1b565b6040518363ffffffff1660e01b81526004016116e2929190615a54565b600060405180830381600087803b1580156116fc57600080fd5b505af192505050801561170d575060015b6117c157611719615bb5565b806117245750611769565b6040517f945e1930d717c550cfdc738b4226b97a96c13dd0e378d3fa3c3812ee430af46990600090a1602354611763906001600160a01b0316826131e1565b506117c1565b6040517f945e1930d717c550cfdc738b4226b97a96c13dd0e378d3fa3c3812ee430af46990600090a16023546040805160608101909152602a8082526117c1926001600160a01b03169190615cc160208301396131e1565b61180b565b811561180b578061180557601f546117e55742601f55600091506117c1565b42601e54601f5401116117fc576000601f556117c1565b6000915061180b565b6000601f555b506118c5565b602360009054906101000a90046001600160a01b03166001600160a01b031663d89601fd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561185f57600080fd5b505afa158015611873573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118979190615399565b42016040516020016118a99190615a32565b6040516020818303038152906040528051906020012060001c92505b81156118d9576118d4836133ba565b611911565b8015611900576118e88361389d565b6118f0613a25565b6118f8613bb1565b6118d4613cfe565b42601c541161191157611911613e46565b5050505b50600190565b606080606080600060038054905087106040518060400160405280601081526020016f0e6e8c2e4e840d2dcc8caf040d0d2ced60831b815250906119725760405162461bcd60e51b81526004016109e49190615913565b50600354600090888801111561198d5760035488900361198f565b865b9050806001600160401b03811180156119a757600080fd5b506040519080825280602002602001820160405280156119d1578160200160208202803683370190505b509550806001600160401b03811180156119ea57600080fd5b50604051908082528060200260200182016040528015611a14578160200160208202803683370190505b509450806001600160401b0381118015611a2d57600080fd5b50604051908082528060200260200182016040528015611a6157816020015b6060815260200190600190039081611a4c5790505b509350806001600160401b0381118015611a7a57600080fd5b50604051908082528060200260200182016040528015611aa4578160200160208202803683370190505b50925060005b81811015611c5a5760006003828b0181548110611ac357fe5b6000918252602080832090910154808352600290915260409091205489519192506001600160c01b031690899084908110611afa57fe5b6020026020010181815250506002600082815260200190815260200160002060000160189054906101000a90046001600160401b03166001600160401b0316878381518110611b4557fe5b602090810291909101810191909152600082815260028083526040918290208101805483516001821615610100026000190190911692909204601f81018590048502830185019093528282529092909190830182828015611be75780601f10611bbc57610100808354040283529160200191611be7565b820191906000526020600020905b815481529060010190602001808311611bca57829003601f168201915b5050505050868381518110611bf857fe5b60200260200101819052506002600082815260200190815260200160002060010160009054906101000a90046001600160a01b0316858381518110611c3957fe5b6001600160a01b039092166020928302919091019091015250600101611aaa565b50506004549497939650919450926001600160c01b0316919050565b600160208181526000928352604092839020805481840180548651600296821615610100026000190190911695909504601f81018590048502860185019096528585529094919392909190830182828015611d125780601f10611ce757610100808354040283529160200191611d12565b820191906000526020600020905b815481529060010190602001808311611cf557829003601f168201915b5050505050905082565b600054600160b01b900460ff1680611d3e5750600054600160a81b900460ff16155b15610d0157611d4b612a6e565b60005b8351811015611d7d57611d75848281518110611d6657fe5b60200260200101518484612f1d565b600101611d4e565b50610d0c565b6001600160a01b031660009081526017602052604090205460ff1690565b60205481565b600054600160b01b900460ff1680611dc95750600054600160a81b900460ff16155b15610d0157611dd6612a6e565b80518251146040518060400160405280601a81526020017f6172726179206c656e6774687320646f206e6f74206d6174636800000000000081525090611e2f5760405162461bcd60e51b81526004016109e49190615913565b50611e3b600a84612c26565b60005b8251811015611d7d57620f4240828281518110611e5757fe5b602002602001015111156040518060400160405280601a81526020017f656c61737469632062616e6420776964746820696e76616c696400000000000081525090611eb55760405162461bcd60e51b81526004016109e49190615913565b50818181518110611ec257fe5b6020026020010151600a600b016000858481518110611edd57fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205414611f6e576014805460ff191660011790558151829082908110611f2657fe5b6020026020010151600a600b016000858481518110611f4157fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055505b600101611e3e565b600054600160b01b900460ff1680611f985750600054600160a81b900460ff16155b15610b0a57611fa5612a6e565b60405163984626c360e01b815273__$03dc2144a91b115216397a255bda0073a6$__9063984626c390611fdf906016908590600401615947565b60006040518083038186803b158015611ff757600080fd5b505af415801561200b573d6000803e3d6000fd5b50505050610b15565b600080600080600080612025612a1b565b9550507f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000808702820195506001870102019250507f000000000000000000000000000000000000000000000000000000000000000082019050429091929394565b600054600160a01b900460ff16156120fd576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b60008054600160a01b60ff60a01b19909116176001600160a01b0319166001600160a01b03831690811790915560408051918252517f9789733827840833afc031fb2ef9ab6894271f77bad2085687cf4ae5c7bee4db916020908290030190a150565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a5490565b7f000000000000000000000000000000000000000000000000000000000000000081565b600054600160b01b900460ff16806121d05750600054600160a81b900460ff16155b15610b0a576121dd612a6e565b604051630d6f6ead60e11b815273__$03dc2144a91b115216397a255bda0073a6$__90631adedd5a90611fdf90601690600a90869060040161598a565b600080600080612229856127e4565b805160208201516040909201519097919650945092505050565b600054600160b01b900460ff16806122655750600054600160a81b900460ff16155b156114f957612272612a6e565b81156122da5760008111801561228b57506203f4808111155b60405180604001604052806012815260200171696e76616c696420706172616d657465727360701b815250906122d45760405162461bcd60e51b81526004016109e49190615913565b50612329565b604080518082019091526012815271696e76616c696420706172616d657465727360701b602082015281156123225760405162461bcd60e51b81526004016109e49190615913565b506000601f555b601d805461ff00191661010084151502179055601e8190556040517f5c9bf067f2a8b23128e64d5ce119251f51d6c0c24e0d7bf430c2dd77df3ec0929061237390849084906158a9565b60405180910390a1611504565b600054600160b01b900460ff16806123a25750600054600160a81b900460ff16155b156114f9576123af612a6e565b604051636904d3eb60e11b815273__$03dc2144a91b115216397a255bda0073a6$__9063d209a7d6906123eb9060169086908690600401615960565b60006040518083038186803b15801561240357600080fd5b505af41580156114f0573d6000803e3d6000fd5b61241f61303e565b6001600160a01b0382166000908152601660209081526040918290205482518084019093526009835268139bdd08199bdd5b9960ba1b9183019190915260ff1661247c5760405162461bcd60e51b81526004016109e49190615913565b506001600160a01b03821660009081526018602052604090819020805460ff1916831515179055517f24462ede4d3e8e5a69fecec6290d42a311016ca752216d9a3d681e284791b7ac906124d390849084906158b9565b60405180910390a15050565b6124e7610e63565b6001600160a01b0316336001600160a01b031614612543576040805162461bcd60e51b815260206004820152601460248201527337b7363c9030b2323932b9b9903ab83230ba32b960611b604482015290519081900360640190fd5b61257c61257783836040518060400160405280600e81526020016d20b2323932b9b9aab83230ba32b960911b8152506141a8565b6142d5565b61150482826142f9565b601f5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b601a546001600160a01b031690565b601d54610100900460ff1681565b6060610899612fa0565b600054600160b01b900460ff16806125f95750600054600160a81b900460ff16155b15610b0a57612606612a6e565b60005b81518110156126385761263082828151811061262157fe5b60200260200101516001612e9e565b600101612609565b50610b15565b60095481565b600054600160b01b900460ff16806126665750600054600160a81b900460ff16155b15610d0157612673612a6e565b600554604080518082019091526011815270105b1c9958591e481858dd1a5d985d1959607a1b60208201529060ff16156126c05760405162461bcd60e51b81526004016109e49190615913565b50602283905560088290556009819055610d0c565b600054600160a81b900460ff1681565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612758576040805162461bcd60e51b815260206004820152601160248201527037b7363c90333630b932903230b2b6b7b760791b604482015290519081900360640190fd5b602754600160a01b900460ff166127bd576027805460ff60a01b1916600160a01b1790556040517f217a37a37fc40a97159886f80c3d45986e6fc4330ce6ad7283478b5e5ab705bc906127ad90600190615840565b60405180910390a150600161089c565b50600090565b6004546001600160c01b03811690600160c01b90046001600160401b031682565b6127ec614d7e565b60085482106040518060400160405280602081526020017f5265776172642065706f6368206e6f7420696e697469616c697a656420796574815250906128455760405162461bcd60e51b81526004016109e49190615913565b5061284f82614506565b92915050565b6000600854600014156040518060400160405280602081526020017f5265776172642065706f6368206e6f7420696e697469616c697a656420796574815250906128b25760405162461bcd60e51b81526004016109e49190615913565b5061089961460b565b60115490565b60006128cc826127e4565b5192915050565b6128db61303e565b600054600160a81b900460ff161561293a576040805162461bcd60e51b815260206004820152601a60248201527f616c726561647920696e2070726f64756374696f6e206d6f6465000000000000604482015290519081900360640190fd5b60008054600161ff0160a01b031916600160a81b1790556040805160076001609c1b01815290517f83af113638b5422f9e977cebc0aaf0eaf2188eb9a8baae7f9d46c42b33a1560c9181900360200190a1565b60408051808201909152600b81526a233a39b7a6b0b730b3b2b960a91b602082015290565b6023546001600160a01b031681565b6129c961303e565b6027805460ff60a01b1916600160a01b831515021790556040517f217a37a37fc40a97159886f80c3d45986e6fc4330ce6ad7283478b5e5ab705bc90612a10908390615840565b60405180910390a150565b60007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000420381612a6857fe5b04905090565b600054600160b01b900460ff1615612a9b57333014612a8957fe5b6000805460ff60b01b191690556108fa565b6108fa61303e565b612aab61303e565b600082359050600060076001609c1b016001600160a01b0316636221a54b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612af357600080fd5b505afa158015612b07573d6000803e3d6000fd5b505050506040513d6020811015612b1d57600080fd5b505160408051808201825242830180825282516020601f89018190048102820181019094528781529394509290918281019190889088908190840183828082843760009201829052509390945250506001600160e01b03198616815260016020818152604090922084518155848301518051919450612ba193928501920190614d9f565b509050507fed948300a3694aa01d4a6b258bfd664350193d770c0b51f8387277f6d83ea3b68382878760405180856001600160e01b0319168152602001848152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f191690920182900397509095505050505050a15050505050565b801580612c3257504281115b612c77576040805162461bcd60e51b8152602060048201526011602482015270696e76616c69642075706461746520747360781b604482015290519081900360640190fd5b9055565b888a6001015414612c9e57600a8a01805460ff191660019081179091558a018990555b878a6002015414612cc057600a8a01805460ff1916600117905560028a018890555b868a6003015414612ce257600a8a01805460ff1916600117905560038a018790555b858a6004015414612d0457600a8a01805460ff1916600117905560048a018690555b848a6005015414612d2657600a8a01805460ff1916600117905560058a018590555b838a6006015414612d4857600a8a01805460ff1916600117905560068a018490555b828a6007015414612d6a57600a8a01805460ff1916600117905560078a018390555b818a6008015414612d8c57600a8a01805460ff1916600117905560088a018290555b805160098b015414612dc2578051612dad9060098c01906020840190614e2b565b50600a8a01805460ff19166001179055612e81565b60005b8151811015612e7f57818181518110612dda57fe5b60200260200101516001600160a01b03168b6009018281548110612dfa57fe5b6000918252602090912001546001600160a01b031614612e7757600a8b01805460ff191660011790558151829082908110612e3157fe5b60200260200101518b6009018281548110612e4857fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b600101612dc5565b505b505050600a909601805461ff001916610100179055505050505050565b601d546040516306b8c18560e01b815273__$03dc2144a91b115216397a255bda0073a6$__916306b8c18591612ee491601691600a918891889160ff16906004016159a9565b60006040518083038186803b158015612efc57600080fd5b505af4158015612f10573d6000803e3d6000fd5b5050505061150482614615565b601d5460405163169ffdc760e21b815273__$03dc2144a91b115216397a255bda0073a6$__91635a7ff71c91612f6791601691600a9189918991899160ff909116906004016159d9565b60006040518083038186803b158015612f7f57600080fd5b505af4158015612f93573d6000803e3d6000fd5b50505050610d0c83614615565b60195460408051635200305d60e11b815290516060926001600160a01b03169163a40060ba916004808301926000929190829003018186803b158015612fe557600080fd5b505afa158015612ff9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108999190810190615142565b3d604051818101604052816000823e821561303a578181f35b8181fd5b613046610f66565b6001600160a01b0316336001600160a01b0316146108fa576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000042106108fa5760006130ce612fa0565b80516040805160608101825243600019810182526020808301918252428385019081526008805460009081526006909352948220845181559251600180850191909155905160029093019290925583549091019092559293509091905b828110156131b35783818151811061313f57fe5b60200260200101516001600160a01b031663e536f39683600001516040518263ffffffff1660e01b81526004016131769190615a32565b600060405180830381600087803b15801561319057600080fd5b505af11580156131a4573d6000803e3d6000fd5b5050505080600101905061312b565b50506020547f0000000000000000000000000000000000000000000000000000000000000000016009555050565b600082826040516020016131f69291906156c6565b60408051601f198184030181528282528051602091820120600081815260029092529190208054436001600160c01b038181166001600160401b03600160c01b80860482166001019091160291909316176001600160c01b031916919091179091559092507f1a601cf5e0efbd558b2778b7389af04741d1c49bcab104c40daa2da1945936179161328a91869186906156ea565b60405180910390a1600480546001600160c01b0319811660016001600160c01b03928316810190921617909155600082815260026020526040902054600160c01b90046001600160401b031611156132e25750611504565b6003805460018082019092557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01829055600082815260026020818152604090922092830180546001600160a01b0319166001600160a01b03881617905584516133529390910191850190614d9f565b50600354600091825260026020526040909120600101805467ffffffffffffffff60a01b1916600160a01b6000199093016001600160401b0390811684029190911791829055600480546001600160c01b03169390920416600160c01b029190911790555050565b60006133c4612fa0565b805190915080158015906133e25750602754600160a01b900460ff16155b156137b25760008184816133f257fe5b06905060608060008080805b8781101561359a576000888289018161341357fe5b06905060008a828151811061342457fe5b6020908102919091018101516001600160a01b0381166000908152601790925260409091205490915060ff161561347a576001600160a01b03166000908152601760205260409020805460ff1916905550613592565b601b546040516340462a2d60e01b81526001600160a01b038316916340462a2d916134ab9190891590600401615903565b600060405180830381600087803b1580156134c557600080fd5b505af19250505080156134fa57506040513d6000823e601f3d908101601f191682016040526134f79190810190614f87565b60015b61356557613506615bb5565b806135115750613521565b61351b8282614752565b50613560565b613560816040518060400160405280601881526020017f6572722066696e616c697a652070726963652065706f63680000000000000000815250614752565b61358f565b87158015613574575060008351115b1561358b5791995097509550600194509250828787875b5050505b50505b6001016133fe565b5060006135a561460b565b9050821561374957602454601b546001600160a01b039091169063a9b79e1790889088908890877f00000000000000000000000000000000000000000000000000000000000000008860016135f9856147a3565b036136038b614506565b516040516001600160e01b031960e08c901b16815261362d99989796959493929190600401615711565b600060405180830381600087803b15801561364757600080fd5b505af1925050508015613658575060015b61374457613664615bb5565b8061366f57506136c6565b7f175a1d13d190d6a1e14461c214b3ecf6118b828797750b7bffd7c4f2c1eba54c83601b546040516136a29291906156ad565b60405180910390a16024546136c0906001600160a01b0316826131e1565b50613744565b7f175a1d13d190d6a1e14461c214b3ecf6118b828797750b7bffd7c4f2c1eba54c82601b546040516136f99291906156ad565b60405180910390a16024546040805180820190915260168152756572722064697374726962757465207265776172647360501b6020820152613744916001600160a01b0316906131e1565b613751565b6137516147f0565b600780546001600160a01b0319166001600160a01b0384161790556040517f98b050a4042fbd1b89934ef40b9342e593f15081a348af940573a0179031f4ad9061379e90849084906156ad565b60405180910390a15050505050505061388e565b60005b818110156138335760008382815181106137cb57fe5b6020908102919091018101516001600160a01b0381166000908152601790925260409091205490915060ff1615613820576001600160a01b03166000908152601760205260409020805460ff1916905561382b565b61382981614972565b505b6001016137b5565b5061383c6147f0565b600780546001600160a01b03191690557f98b050a4042fbd1b89934ef40b9342e593f15081a348af940573a0179031f4ad600061387761460b565b6040516138859291906156ad565b60405180910390a15b5050601d805460ff1916905550565b60006138a7612fa0565b905060008151905060006021546138c46138bf61460b565b614506565b602001514303816138d157fe5b049050806138dd575060015b60008185816138e857fe5b069050806138f4575060015b60408051606081018252438381038252602080830191825242838501908152600880546000908152600690935294822084518155925160018085019190915590516002909301929092558354909101909255905b848110156139d15785818151811061395c57fe5b60200260200101516001600160a01b031663e536f39683600001516040518263ffffffff1660e01b81526004016139939190615a32565b600060405180830381600087803b1580156139ad57600080fd5b505af11580156139c1573d6000803e3d6000fd5b5050600190920191506139489050565b50805160208201516040517f1813f880dc24666c8b69c9d771a487ea620a27fde1514be3112847056c0c532292613a09929091615a54565b60405180910390a1505060205460098054909101905550505050565b6000613a2f61460b565b60115490915042035b81602254108015613a5a575080613a53602254600101614506565b6040015111155b1561150457602454602254604051636b60edf760e11b81526001600160a01b039092169163d6c1dbee91613a9091600401615a32565b600060405180830381600087803b158015613aaa57600080fd5b505af1925050508015613abb575060015b613ba357613ac7615bb5565b80613ad25750613b27565b7fa819a21065ad87bdde9e6d398d3213e0d3634afd87aceb7092236483f5d7ca8d602254604051613b039190615a32565b60405180910390a1602454613b21906001600160a01b0316826131e1565b50611504565b7fa819a21065ad87bdde9e6d398d3213e0d3634afd87aceb7092236483f5d7ca8d602254604051613b589190615a32565b60405180910390a1602454604080518082019091526011815270195c9c8818db1bdcd948195e1c1a5c9959607a1b6020820152613b9e916001600160a01b0316906131e1565b611504565b602280546001019055613a38565b6000613bbe602254614506565b5160265460405163cbc31cf760e01b81529192506001600160a01b03169063cbc31cf790613bf0908490600401615a32565b600060405180830381600087803b158015613c0a57600080fd5b505af1925050508015613c1b575060015b610b1557613c27615bb5565b80613c325750613c85565b7f9f874ea08c7014cce74622bfe71434f81aba7598ad65126a6aea86945bdfa18d82604051613c619190615a32565b60405180910390a1602654613c7f906001600160a01b0316826131e1565b50610be7565b7f9f874ea08c7014cce74622bfe71434f81aba7598ad65126a6aea86945bdfa18d81604051613cb49190615a32565b60405180910390a16026546040805180820190915260158152746572722073657420636c65616e757020626c6f636b60581b6020820152610be7916001600160a01b0316906131e1565b6027546001600160a01b0316156108fa576000613d1961460b565b9050602760009054906101000a90046001600160a01b03166001600160a01b03166321eb1a956040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613d6b57600080fd5b505af1925050508015613d7c575060015b610b1557613d88615bb5565b80613d935750613de0565b7ff7c7d6681321cc290eb89e8c96dba504436073b8bb277945cc32177e5181dd8482604051613dc29190615a32565b60405180910390a1602754613c7f906001600160a01b0316826131e1565b7ff7c7d6681321cc290eb89e8c96dba504436073b8bb277945cc32177e5181dd8481604051613e0f9190615a32565b60405180910390a160275460408051606081019091526022808252610be7926001600160a01b03169190615c9f60208301396131e1565b60145460ff168015613e5a5750600a544210155b15613ec357602354604051639ec2b58160e01b81526001600160a01b0390911690639ec2b58190613e909060139060040161577b565b600060405180830381600087803b158015613eaa57600080fd5b505af1158015613ebe573d6000803e3d6000fd5b505050505b6000613ecd612fa0565b805190915060008115801590613eed5750602754600160a01b900460ff16155b15613f86576000613eff6138bf61460b565b516025546040516237b08960e41b81529192506001600160a01b03169063037b089090613f30908490600401615a32565b602060405180830381600087803b158015613f4a57600080fd5b505af1158015613f5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f829190615399565b9150505b60005b82811015614153576000848281518110613f9f57fe5b602090810291909101015160145490915060ff168015613fc15750600a544210155b1561405957600b54600c54600d54600e54600f546010546012546001600160a01b03881660008181526015602052604090819020549051632d1e4ec760e11b81529198635a3c9d8e986140269891979096919590949193909290601390600401615b1a565b600060405180830381600087803b15801561404057600080fd5b505af1158015614054573d6000803e3d6000fd5b505050505b806001600160a01b031663f670ebe384602760149054906101000a900460ff168061409c57506001600160a01b03841660009081526018602052604090205460ff165b6040518363ffffffff1660e01b81526004016140b9929190615903565b600060405180830381600087803b1580156140d357600080fd5b505af19250505080156140e4575060015b61414a576140f0615bb5565b806140fb575061410b565b6141058282614a0e565b5061414a565b61414a816040518060400160405280601981526020017f65727220696e69742065706f636820666f722072657665616c00000000000000815250614a0e565b50600101613f89565b5060145460ff1680156141685750600a544210155b15614178576014805460ff191690555b6000614182612a1b565b601b819055905061419281614c1f565b601c555050601d805460ff191660011790555050565b600080826040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156141ec5781810151838201526020016141d4565b50505050905090810190601f1680156142195780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012090506000805b86518110156142815786818151811061424f57fe5b60200260200101518314156142795785818151811061426a57fe5b60200260200101519150614281565b60010161423a565b506001600160a01b0381166142cc576040805162461bcd60e51b815260206004820152600c60248201526b61646472657373207a65726f60a01b604482015290519081900360640190fd5b95945050505050565b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e771955565b61432a82826040518060400160405280600e81526020016d283934b1b2a9bab136b4ba3a32b960911b8152506141a8565b602360006101000a8154816001600160a01b0302191690836001600160a01b03160217905550614384828260405180604001604052806011815260200170233a39b7a932bbb0b93226b0b730b3b2b960791b8152506141a8565b602460006101000a8154816001600160a01b0302191690836001600160a01b031602179055506143d3828260405180604001604052806006815260200165537570706c7960d01b8152506141a8565b602560006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061443982826040518060400160405280601981526020017f436c65616e7570426c6f636b4e756d6265724d616e61676572000000000000008152506141a8565b602660006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061448e82826040518060400160405280600c81526020016b4674736f526567697374727960a01b8152506141a8565b601980546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152601081526f2b37ba32b92bb434ba32b634b9ba32b960811b60208201526144e290839083906141a8565b601a80546001600160a01b0319166001600160a01b03929092169190911790555050565b61450e614d7e565b5060008181526006602090815260409182902082516060810184528154815260018201549281019290925260020154918101829052906110145760008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a795f409866040518263ffffffff1660e01b81526004016145999190615a32565b60606040518083038186803b1580156145b157600080fd5b505afa1580156145c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145e991906154e1565b6040805160608101825293845260208401929092529082015295945050505050565b6008546000190190565b604051630bc29bcf60e21b81526001600160a01b03821690632f0a6f3c906146a5907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090600401615a7a565b600060405180830381600087803b1580156146bf57600080fd5b505af11580156146d3573d6000803e3d6000fd5b50505050600854600014610b1557806001600160a01b031663e536f3966146fb6138bf61460b565b516040516001600160e01b031960e084901b16815261471d9190600401615a32565b600060405180830381600087803b15801561473757600080fd5b505af115801561474b573d6000803e3d6000fd5b5050505050565b7f79f4c7cc43bfb79f5a3aad0d92f75b6fed7db061bb5cc2580a01c8132711b88182601b546001604051614788939291906158d4565b60405180910390a161479a82826131e1565b61150482614972565b7f0000000000000000000000000000000000000000000000000000000000000000600182017f00000000000000000000000000000000000000000000000000000000000000000201919050565b602454601b546001600160a01b03909116906367dcac53907f00000000000000000000000000000000000000000000000000000000000000006001614834836147a3565b036040518463ffffffff1660e01b815260040161485393929190615a7a565b600060405180830381600087803b15801561486d57600080fd5b505af192505050801561487e575060015b6108fa5761488a615bb5565b8061489557506148ea565b7f8eb60f903ef61e0e490d7d7ba6e5b85cd949ebece7a5e5b3346eb046c041413f601b546040516148c69190615a32565b60405180910390a16024546148e4906001600160a01b0316826131e1565b5061496d565b7f8eb60f903ef61e0e490d7d7ba6e5b85cd949ebece7a5e5b3346eb046c041413f601b5460405161491b9190615a32565b60405180910390a160245460408051808201909152601b81527f6572722061636372756520756e6561726e656420726577617264730000000000602082015261496d916001600160a01b0316906131e1565b6108fa565b601b5460405163257ea88160e11b81526001600160a01b03831691634afd5102916149a09190600401615a32565b600060405180830381600087803b1580156149ba57600080fd5b505af19250505080156149cb575060015b610b15576149d7615bb5565b806149e257506149ec565b613c7f8282614c8e565b610be781604051806060016040528060218152602001615d1260219139614c8e565b7f61156899176547b8075bfa81fa2996c6057ce9c71320884b11c0179d9dc2e46282614a38612a1b565b604051614a469291906156ad565b60405180910390a1614a5882826131e1565b602754600160a01b900460ff1680614a8857506001600160a01b03821660009081526018602052604090205460ff165b15614ab5576001600160a01b0382166000908152601760205260409020805460ff19166001179055611504565b60405163f670ebe360e01b81526001600160a01b0383169063f670ebe390614ae590600090600190600401615903565b600060405180830381600087803b158015614aff57600080fd5b505af1925050508015614b10575060015b61150457614b1c615bb5565b80614b275750614b9a565b6001600160a01b0383166000908152601760205260409020805460ff191660011790557f61156899176547b8075bfa81fa2996c6057ce9c71320884b11c0179d9dc2e46283614b74612a1b565b604051614b829291906156ad565b60405180910390a1614b9483826131e1565b50613b9e565b6001600160a01b0382166000908152601760205260409020805460ff191660011790557f61156899176547b8075bfa81fa2996c6057ce9c71320884b11c0179d9dc2e46282614be7612a1b565b604051614bf59291906156ad565b60405180910390a1613b9e82604051806060016040528060228152602001615c7d602291396131e1565b7f0000000000000000000000000000000000000000000000000000000000000000600182017f000000000000000000000000000000000000000000000000000000000000000002017f000000000000000000000000000000000000000000000000000000000000000001919050565b7f79f4c7cc43bfb79f5a3aad0d92f75b6fed7db061bb5cc2580a01c8132711b88182601b546002604051614cc4939291906158d4565b60405180910390a1614cd682826131e1565b601b5460405163974d7a6b60e01b81526001600160a01b0384169163974d7a6b91614d049190600401615a32565b600060405180830381600087803b158015614d1e57600080fd5b505af1158015614d32573d6000803e3d6000fd5b505050505050565b50805460018160011615610100020316600290046000825580601f10614d605750610b15565b601f016020900490600052602060002090810190610b159190614e80565b60405180606001604052806000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282614dd55760008555614e1b565b82601f10614dee57805160ff1916838001178555614e1b565b82800160010185558215614e1b579182015b82811115614e1b578251825591602001919060010190614e00565b50614e27929150614e80565b5090565b828054828255906000526020600020908101928215614e1b579160200282015b82811115614e1b57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614e4b565b5b80821115614e275760008155600101614e81565b600082601f830112614ea5578081fd5b81356020614eba614eb583615b92565b615b6f565b8281528181019085830183850287018401881015614ed6578586fd5b855b85811015614efd578135614eeb81615c59565b84529284019290840190600101614ed8565b5090979650505050505050565b600082601f830112614f1a578081fd5b81516020614f2a614eb583615b92565b8281528181019085830183850287018401881015614f46578586fd5b855b85811015614efd57815184529284019290840190600101614f48565b600060208284031215614f75578081fd5b8135614f8081615c59565b9392505050565b600080600060608486031215614f9b578182fd5b83516001600160401b0380821115614fb1578384fd5b818601915086601f830112614fc4578384fd5b81516020614fd4614eb583615b92565b82815281810190858301838502870184018c1015614ff0578889fd5b8896505b8487101561501b57805161500781615c59565b835260019690960195918301918301614ff4565b5091890151919750909350505080821115615034578384fd5b5061504186828701614f0a565b925050604084015190509250925092565b60008060408385031215615064578182fd5b82356001600160401b038082111561507a578384fd5b818501915085601f83011261508d578384fd5b8135602061509d614eb583615b92565b82815281810190858301838502870184018b10156150b9578889fd5b8896505b848710156150db5780358352600196909601959183019183016150bd565b50965050860135925050808211156150f1578283fd5b506150fe85828601614e95565b9150509250929050565b600060208284031215615119578081fd5b81356001600160401b0381111561512e578182fd5b61513a84828501614e95565b949350505050565b60006020808385031215615154578182fd5b82516001600160401b03811115615169578283fd5b8301601f81018513615179578283fd5b8051615187614eb582615b92565b81815283810190838501858402850186018910156151a3578687fd5b8694505b838510156151ce5780516151ba81615c59565b8352600194909401939185019185016151a7565b50979650505050505050565b6000806000606084860312156151ee578081fd5b83356001600160401b03811115615203578182fd5b61520f86828701614e95565b935050602084013561522081615c6e565b9150604084013561523081615c6e565b809150509250925092565b60006020828403121561524c578081fd5b8135614f8081615c6e565b60008060408385031215615269578182fd5b823561527481615c6e565b946020939093013593505050565b600060208284031215615293578081fd5b81356001600160e01b031981168114614f80578182fd5b600080604083850312156152bc578182fd5b82356152c781615c59565b915060208301356001600160401b038111156152e1578182fd5b6150fe85828601614e95565b600080604083850312156152ff578182fd5b823561530a81615c59565b9150602083013561531a81615c6e565b809150509250929050565b600080600060608486031215615339578081fd5b833561534481615c59565b9250602084013561522081615c6e565b60008060408385031215615366578182fd5b823561537181615c59565b9150602083013561531a81615c59565b600060208284031215615392578081fd5b5035919050565b6000602082840312156153aa578081fd5b5051919050565b6000806000606084860312156153c5578081fd5b833592506020808501356001600160401b03808211156153e3578384fd5b6153ef88838901614e95565b94506040870135915080821115615404578384fd5b508501601f81018713615415578283fd5b8035615423614eb582615b92565b81815283810190838501858402850186018b101561543f578687fd5b8694505b83851015615461578035835260019490940193918501918501615443565b5080955050505050509250925092565b60008060408385031215615483578182fd5b82519150602083015161531a81615c6e565b600080604083850312156154a7578182fd5b50508035926020909101359150565b6000806000606084860312156154ca578081fd5b505081359360208301359350604090920135919050565b6000806000606084860312156154f5578081fd5b8351925060208401519150604084015190509250925092565b6000806000806000806000806000806101408b8d03121561552d578788fd5b8a35995060208b0135985060408b0135975060608b0135965060808b0135955060a08b0135945060c08b0135935060e08b013592506101008b013591506101208b01356001600160401b03811115615583578182fd5b61558f8d828e01614e95565b9150509295989b9194979a5092959850565b6000815180845260208085019450808401835b838110156155d95781516001600160a01b0316875295820195908201906001016155b4565b509495945050505050565b6000815480845260208085019450838352808320835b838110156155d95781546001600160a01b0316875295820195600191820191016155fa565b6000815180845260208085019450808401835b838110156155d957815187529582019590820190600101615632565b60008151808452815b8181101561567357602081850181015186830182015201615657565b818111156156845782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b038316815260406020820181905260009061513a9083018461564e565b600060018060a01b0385168252836020830152606060408301526142cc606083018461564e565b60006101208083526157258184018d6155a1565b90508281036020840152615739818c61561f565b604084019a909a52505060608101969096526001600160a01b0394909416608086015260a085019290925260c084015260e08301526101009091015292915050565b600060208252614f8060208301846155e4565b600060208252614f8060208301846155a1565b600060a082526157b460a083018861561f565b6020838203818501526157c7828961561f565b848103604086015287518082529092508183019082810284018301838a01865b8381101561581557601f1987840301855261580383835161564e565b948601949250908501906001016157e7565b50508681036060880152615829818a6155a1565b955050505050508260808301529695505050505050565b901515815260200190565b60008415158252602060608184015261586760608401866155a1565b8381036040850152845180825282860191830190845b8181101561589b57835115158352928401929184019160010161587d565b509098975050505050505050565b9115158252602082015260400190565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b03841681526020810183905260608101600683106158f557fe5b826040830152949350505050565b9182521515602082015260400190565b600060208252614f80602083018461564e565b81518152602080830151908201526040918201519181019190915260600190565b60008382526040602083015261513a60408301846155a1565b8381526001600160a01b03831660208201526060604082018190526000906142cc908301846155a1565b92835260208301919091526001600160a01b0316604082015260600190565b94855260208501939093526001600160a01b03919091166040840152151560608301521515608082015260a00190565b95865260208601949094526001600160a01b039290921660408501521515606084015215156080830152151560a082015260c00190565b6001600160c01b039290921682526001600160401b0316602082015260400190565b90815260200190565b60008382526040602083015261513a604083018461564e565b918252602082015260400190565b92835260208301919091521515604082015260600190565b9283526020830191909152604082015260600190565b948552602085019390935260408401919091526060830152608082015260a00190565b60006101608d83528c60208401528b60408401528a60608401528960808401528860a08401528760c08401528660e084015280610100840152615af8818401876155a1565b9415156101208401525050901515610140909101529998505050505050505050565b60006101208b83528a60208401528960408401528860608401528760808401528660a08401528560c08401528460e084015280610100840152615b5f818401856155e4565b9c9b505050505050505050505050565b6040518181016001600160401b0381118282101715615b8a57fe5b604052919050565b60006001600160401b03821115615ba557fe5b5060209081020190565b60e01c90565b600060443d1015615bc55761089c565b600481823e6308c379a0615bd98251615baf565b14615be35761089c565b6040513d600319016004823e80513d6001600160401b038160248401118184111715615c12575050505061089c565b82840192508251915080821115615c2c575050505061089c565b503d83016020828401011115615c445750505061089c565b601f01601f1916810160200160405291505090565b6001600160a01b0381168114610b1557600080fd5b8015158114610b1557600080fdfe6572722066616c6c6261636b20696e69742065706f636820666f722072657665616c6572722063616c6c696e672075706461746541637469766556616c696461746f72736572722063616c6c696e67206368696c6c4e6f6e72657665616c696e674461746150726f7669646572735265776172642065706f6368206475726174696f6e20636f6e646974696f6e20696e76616c69646572722066616c6c6261636b2066696e616c697a652070726963652065706f6368a2646970667358221220f8fad4ea9edefd1c056394acba79d7a99322eb085d945394d6e714e62b04f54564736f6c634300070600335265776172642065706f6368206475726174696f6e20636f6e646974696f6e20696e76616c69645265776172642065706f636820737461727420636f6e646974696f6e20696e76616c6964",
1670
+ "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061041d5760003560e01c806374e6310e1161022b578063b4dba0f311610130578063e371aef0116100b8578063f2edab5a11610087578063f2edab5a1461082c578063f5a983831461083f578063f5f5ba7214610847578063f937d6ad1461085c578063ff882fbb146108645761041d565b8063e371aef0146107e6578063e5399da3146107fc578063e7c830d41461081c578063ec31db0c146108245761041d565b8063d429cfe5116100ff578063d429cfe5146107a8578063d89c39e6146107bb578063e080a970146107c3578063e17f212e146107d6578063e22fdece146107de5761041d565b8063b4dba0f31461077b578063c2b0d47b14610783578063cb063fa21461078b578063ce69f833146107935761041d565b8063a157713b116101b3578063a90a38e111610182578063a90a38e114610727578063a93a6f421461073a578063af946af71461074d578063b00c0b7614610760578063b23b6ef1146107735761041d565b8063a157713b146106f1578063a578f55b146106f9578063a670ff8714610701578063a795f409146107145761041d565b8063882376c3116101fa578063882376c3146106975780638de306b1146106aa57806393a79025146106bd5780639d6a890f146106d6578063a1077532146106e95761041d565b806374e6310e14610648578063758ff1da14610669578063823033a91461067c57806385f3c9c91461068f5761041d565b80633e7ff857116103315780635ff27079116102b957806369b11ac61161028857806369b11ac6146105fb5780636b65cc34146106035780636ca051e6146106165780636d0e8c341461062d5780636ea0aa31146106355761041d565b80635ff27079146105c557806360f2c5b2146105d857806362354e03146105e057806367fc4029146105e85761041d565b80635267a15d116103005780635267a15d1461057b5780635835cf30146105835780635904089a146105a25780635aa6e675146105aa5780635bb44e9a146105b25761041d565b80633e7ff857146105415780633fdeb7e1146105495780634b48dd5e1461055c5780634eac870f146105735761041d565b8063144e1591116103b45780632b3c41a4116103835780632b3c41a4146104f25780632fd8eb7d1461050b578063361b5459146105135780633758e6791461052657806338b5f869146105395761041d565b8063144e1591146104aa57806315c29c5b146104c15780631cb513f7146104c95780632663f1b4146104df5761041d565b80630f15f4c0116103f05780630f15f4c0146104725780630f4ef8a61461047c5780631322679314610484578063132c7e1f146104975761041d565b806302fb0c5e14610422578063047fc9aa1461044057806308a7f402146104555780630e063d7d1461046a575b600080fd5b61042a610877565b6040516104379190615840565b60405180910390f35b610448610880565b6040516104379190615699565b61045d61088f565b6040516104379190615a32565b61044861089f565b61047a6108ae565b005b6104486108fc565b61047a61049236600461550e565b61090b565b61047a6104a5366004615381565b610a28565b6104b2610b18565b60405161043793929190615a7a565b61045d610b80565b6104d1610b86565b604051610437929190615a54565b61047a6104ed366004614f64565b610bad565b6104fa610bec565b6040516104379594939291906157a1565b610448610c27565b61047a610521366004615381565b610c36565b61047a610534366004615325565b610cc2565b610448610d11565b61045d610d20565b61047a610557366004614f64565b610d26565b610564610d75565b6040516104379392919061584b565b610448610e54565b610448610e63565b61058b610e88565b6040516104379b9a99989796959493929190615ab3565b610448610f57565b610448610f66565b61045d6105c0366004614f64565b610ffa565b61047a6105d3366004615282565b611019565b61045d61136e565b610448611374565b61047a6105f6366004615282565b61137f565b61045d611462565b61047a610611366004615354565b611467565b61061e611508565b60405161043793929190615a62565b61042a611519565b6104fa610643366004615495565b61191b565b61065b610656366004615282565b611c76565b604051610437929190615a3b565b61047a6106773660046151da565b611d1c565b61042a61068a366004614f64565b611d83565b61045d611da1565b61047a6106a53660046153b1565b611da7565b61047a6106b8366004615108565b611f76565b6106c5612014565b604051610437959493929190615a90565b61047a6106e4366004614f64565b6120a7565b610448612160565b61045d612184565b61045d61218a565b61047a61070f366004614f64565b6121ae565b6104b2610722366004615381565b61221a565b61047a610735366004615257565b612243565b61047a6107483660046152aa565b612380565b61047a61075b3660046152ed565b612417565b61047a61076e366004615052565b6124df565b61045d612586565b61044861258c565b6104486125b0565b61042a6125bf565b61079b6125cd565b604051610437919061578e565b61047a6107b6366004615108565b6125d7565b61045d61263e565b61047a6107d13660046154b6565b612644565b61042a6126d5565b61042a6126e5565b6107ee6127c3565b604051610437929190615a10565b61080f61080a366004615381565b6127e4565b6040516104379190615926565b61045d612855565b61045d6128bb565b61045d61083a366004615381565b6128c1565b61047a6128d3565b61084f61298d565b6040516104379190615913565b6104486129b2565b61047a61087236600461523b565b6129c1565b60055460ff1681565b6025546001600160a01b031681565b6000610899612a1b565b90505b90565b6023546001600160a01b031690565b600054600160b01b900460ff16806108d05750600054600160a81b900460ff16155b156108ef576108dd612a6e565b6005805460ff191660011790556108fa565b6108fa600036612aa3565b565b6024546001600160a01b031681565b600054600160b01b900460ff168061092d5750600054600160a81b900460ff16155b15610a115761093a612a6e565b60008911801561094a5750600088115b80156109565750868610155b801561096457506127108511155b801561097257506127108411155b801561098057506127108311155b801561098c5750600082115b801561099a57506005815111155b6040518060400160405280601381526020017211dbdd8b881c185c985b5cc81a5b9d985b1a59606a1b815250906109ed5760405162461bcd60e51b81526004016109e49190615913565b60405180910390fd5b506109f9600a8b612c26565b610a0c600a8a8a8a8a8a8a898b8a612c7b565b610a1c565b610a1c600036612aa3565b50505050505050505050565b600054600160b01b900460ff1680610a4a5750600054600160a81b900460ff16155b15610b0a57610a57612a6e565b60408051808201909152600e81526d05265776172642065706f636820360941b602082015281610a9a5760405162461bcd60e51b81526004016109e49190615913565b507f00000000000000000000000000000000000000000000000000000000000000008181610ac457fe5b06600014604051806060016040528060278152602001615ceb6027913990610aff5760405162461bcd60e51b81526004016109e49190615913565b506020819055610b15565b610b15600036612aa3565b50565b7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000909192565b601e5481565b6020547f000000000000000000000000000000000000000000000000000000000000000091565b600054600160b01b900460ff1680610bcf5750600054600160a81b900460ff16155b15610b0a57610bdc612a6e565b610be7816001612e9e565b610b15565b600454606090819081908190600090610c1690600160c01b90046001600160401b0316600161191b565b945094509450945094509091929394565b6007546001600160a01b031681565b600054600160b01b900460ff1680610c585750600054600160a81b900460ff16155b15610b0a57610c65612a6e565b60408051808201909152601e81527f566f746520706f77657220696e74657276616c206672616374696f6e20300000602082015281610cb75760405162461bcd60e51b81526004016109e49190615913565b506021819055610b15565b600054600160b01b900460ff1680610ce45750600054600160a81b900460ff16155b15610d0157610cf1612a6e565b610cfc838383612f1d565b610d0c565b610d0c600036612aa3565b505050565b6019546001600160a01b031690565b60225490565b600054600160b01b900460ff1680610d485750600054600160a81b900460ff16155b15610b0a57610d55612a6e565b602780546001600160a01b0319166001600160a01b038316179055610b15565b602754600160a01b900460ff16606080610d8d612fa0565b8051909250806001600160401b0381118015610da857600080fd5b50604051908082528060200260200182016040528015610dd2578160200160208202803683370190505b50915060005b81811015610e4d5760166002016000858381518110610df357fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a900460ff16838281518110610e3557fe5b91151560209283029190910190910152600101610dd8565b5050909192565b6026546001600160a01b031681565b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e77195490565b600b54600c54600d54600e54600f54601054601254601154601454601380546040805160208084028201810190925282815260009c8d9c8d9c8d9c8d9c8d9c8d9c8d9c60609c8e9c8d9c999b989a979996989597949693959294909360ff6101008404811694931692859190830182828015610f2d57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610f0f575b505050505092509a509a509a509a509a509a509a509a509a509a509a50909192939495969798999a565b6027546001600160a01b031681565b60008054600160a81b900460ff16610f89576000546001600160a01b0316610899565b60076001609c1b016001600160a01b031663732524946040518163ffffffff1660e01b815260040160206040518083038186803b158015610fc957600080fd5b505afa158015610fdd573d6000803e3d6000fd5b505050506040513d6020811015610ff357600080fd5b5051905090565b6001600160a01b0381166000908152601560205260409020545b919050565b60408051630debfda360e41b8152336004820152905160076001609c1b019163debfda30916024808301926020929190829003018186803b15801561105d57600080fd5b505afa158015611071573d6000803e3d6000fd5b505050506040513d602081101561108757600080fd5b50516110ca576040805162461bcd60e51b815260206004820152600d60248201526c37b7363c9032bc32b1baba37b960991b604482015290519081900360640190fd5b6001600160e01b0319811660009081526001602052604090208054611136576040805162461bcd60e51b815260206004820152601a60248201527f74696d656c6f636b3a20696e76616c69642073656c6563746f72000000000000604482015290519081900360640190fd5b805442101561118c576040805162461bcd60e51b815260206004820152601960248201527f74696d656c6f636b3a206e6f7420616c6c6f7765642079657400000000000000604482015290519081900360640190fd5b6000816001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112265780601f106111fb57610100808354040283529160200191611226565b820191906000526020600020905b81548152906001019060200180831161120957829003601f168201915b5050506001600160e01b031986166000908152600160208190526040822082815594955090925061125a9150830182614d3a565b50506000805460ff60b01b1916600160b01b178155604051825130918491819060208401908083835b602083106112a25780518252601f199092019160209182019101611283565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611304576040519150601f19603f3d011682016040523d82523d6000602084013e611309565b606091505b50506000805460ff60b01b19169055604080516001600160e01b03198716815242602082015281519293507fa7326b57fc9cfe267aaea5e7f0b01757154d265620a0585819416ee9ddd2c438929081900390910190a161136881613021565b50505050565b60215490565b60076001609c1b0181565b61138761303e565b6001600160e01b031981166000908152600160205260409020546113f2576040805162461bcd60e51b815260206004820152601a60248201527f74696d656c6f636b3a20696e76616c69642073656c6563746f72000000000000604482015290519081900360640190fd5b604080516001600160e01b03198316815242602082015281517f7735b2391c38a81419c513e30ca578db7158eadd7101511b23e221c654d19cf8929181900390910190a16001600160e01b03198116600090815260016020819052604082208281559190610d0c90830182614d3a565b600581565b600054600160b01b900460ff16806114895750600054600160a81b900460ff16155b156114f957611496612a6e565b60405163d0d552dd60e01b81526001600160a01b0383169063d0d552dd906114c2908490600401615699565b600060405180830381600087803b1580156114dc57600080fd5b505af11580156114f0573d6000803e3d6000fd5b50505050611504565b611504600036612aa3565b5050565b601b54601c54601d5460ff16909192565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461158c576040805162461bcd60e51b815260206004820152601160248201527037b7363c90333630b932903230b2b6b7b760791b604482015290519081900360640190fd5b60055460ff1661159e5750600061089c565b6008546115b2576115ad61309d565b611915565b601d546000908190819060ff1680156115cd575042601c5411155b156115db57600191506115f9565b601d5460ff161580156115f057504260095411155b156115f9575060015b81806116025750805b156118c557601d54610100900460ff1615611811576023546040805163a978fb6b60e01b815281516000936001600160a01b03169263a978fb6b9260048082019391829003018186803b15801561165857600080fd5b505afa15801561166c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116909190615471565b9094509050801580156116a05750825b156117c657602354601b546001600160a01b0390911690631c91efcf906116c5612a1b565b6040518363ffffffff1660e01b81526004016116e2929190615a54565b600060405180830381600087803b1580156116fc57600080fd5b505af192505050801561170d575060015b6117c157611719615bb5565b806117245750611769565b6040517f945e1930d717c550cfdc738b4226b97a96c13dd0e378d3fa3c3812ee430af46990600090a1602354611763906001600160a01b0316826131e1565b506117c1565b6040517f945e1930d717c550cfdc738b4226b97a96c13dd0e378d3fa3c3812ee430af46990600090a16023546040805160608101909152602a8082526117c1926001600160a01b03169190615cc160208301396131e1565b61180b565b811561180b578061180557601f546117e55742601f55600091506117c1565b42601e54601f5401116117fc576000601f556117c1565b6000915061180b565b6000601f555b506118c5565b602360009054906101000a90046001600160a01b03166001600160a01b031663d89601fd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561185f57600080fd5b505afa158015611873573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118979190615399565b42016040516020016118a99190615a32565b6040516020818303038152906040528051906020012060001c92505b81156118d9576118d4836133ba565b611911565b8015611900576118e88361389d565b6118f0613a25565b6118f8613bb1565b6118d4613cfe565b42601c541161191157611911613e46565b5050505b50600190565b606080606080600060038054905087106040518060400160405280601081526020016f0e6e8c2e4e840d2dcc8caf040d0d2ced60831b815250906119725760405162461bcd60e51b81526004016109e49190615913565b50600354600090888801111561198d5760035488900361198f565b865b9050806001600160401b03811180156119a757600080fd5b506040519080825280602002602001820160405280156119d1578160200160208202803683370190505b509550806001600160401b03811180156119ea57600080fd5b50604051908082528060200260200182016040528015611a14578160200160208202803683370190505b509450806001600160401b0381118015611a2d57600080fd5b50604051908082528060200260200182016040528015611a6157816020015b6060815260200190600190039081611a4c5790505b509350806001600160401b0381118015611a7a57600080fd5b50604051908082528060200260200182016040528015611aa4578160200160208202803683370190505b50925060005b81811015611c5a5760006003828b0181548110611ac357fe5b6000918252602080832090910154808352600290915260409091205489519192506001600160c01b031690899084908110611afa57fe5b6020026020010181815250506002600082815260200190815260200160002060000160189054906101000a90046001600160401b03166001600160401b0316878381518110611b4557fe5b602090810291909101810191909152600082815260028083526040918290208101805483516001821615610100026000190190911692909204601f81018590048502830185019093528282529092909190830182828015611be75780601f10611bbc57610100808354040283529160200191611be7565b820191906000526020600020905b815481529060010190602001808311611bca57829003601f168201915b5050505050868381518110611bf857fe5b60200260200101819052506002600082815260200190815260200160002060010160009054906101000a90046001600160a01b0316858381518110611c3957fe5b6001600160a01b039092166020928302919091019091015250600101611aaa565b50506004549497939650919450926001600160c01b0316919050565b600160208181526000928352604092839020805481840180548651600296821615610100026000190190911695909504601f81018590048502860185019096528585529094919392909190830182828015611d125780601f10611ce757610100808354040283529160200191611d12565b820191906000526020600020905b815481529060010190602001808311611cf557829003601f168201915b5050505050905082565b600054600160b01b900460ff1680611d3e5750600054600160a81b900460ff16155b15610d0157611d4b612a6e565b60005b8351811015611d7d57611d75848281518110611d6657fe5b60200260200101518484612f1d565b600101611d4e565b50610d0c565b6001600160a01b031660009081526017602052604090205460ff1690565b60205481565b600054600160b01b900460ff1680611dc95750600054600160a81b900460ff16155b15610d0157611dd6612a6e565b80518251146040518060400160405280601a81526020017f6172726179206c656e6774687320646f206e6f74206d6174636800000000000081525090611e2f5760405162461bcd60e51b81526004016109e49190615913565b50611e3b600a84612c26565b60005b8251811015611d7d57620f4240828281518110611e5757fe5b602002602001015111156040518060400160405280601a81526020017f656c61737469632062616e6420776964746820696e76616c696400000000000081525090611eb55760405162461bcd60e51b81526004016109e49190615913565b50818181518110611ec257fe5b6020026020010151600a600b016000858481518110611edd57fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000205414611f6e576014805460ff191660011790558151829082908110611f2657fe5b6020026020010151600a600b016000858481518110611f4157fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020819055505b600101611e3e565b600054600160b01b900460ff1680611f985750600054600160a81b900460ff16155b15610b0a57611fa5612a6e565b60405163984626c360e01b815273__$03dc2144a91b115216397a255bda0073a6$__9063984626c390611fdf906016908590600401615947565b60006040518083038186803b158015611ff757600080fd5b505af415801561200b573d6000803e3d6000fd5b50505050610b15565b600080600080600080612025612a1b565b9550507f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000808702820195506001870102019250507f000000000000000000000000000000000000000000000000000000000000000082019050429091929394565b600054600160a01b900460ff16156120fd576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b60008054600160a01b60ff60a01b19909116176001600160a01b0319166001600160a01b03831690811790915560408051918252517f9789733827840833afc031fb2ef9ab6894271f77bad2085687cf4ae5c7bee4db916020908290030190a150565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a5490565b7f000000000000000000000000000000000000000000000000000000000000000081565b600054600160b01b900460ff16806121d05750600054600160a81b900460ff16155b15610b0a576121dd612a6e565b604051630d6f6ead60e11b815273__$03dc2144a91b115216397a255bda0073a6$__90631adedd5a90611fdf90601690600a90869060040161598a565b600080600080612229856127e4565b805160208201516040909201519097919650945092505050565b600054600160b01b900460ff16806122655750600054600160a81b900460ff16155b156114f957612272612a6e565b81156122da5760008111801561228b57506203f4808111155b60405180604001604052806012815260200171696e76616c696420706172616d657465727360701b815250906122d45760405162461bcd60e51b81526004016109e49190615913565b50612329565b604080518082019091526012815271696e76616c696420706172616d657465727360701b602082015281156123225760405162461bcd60e51b81526004016109e49190615913565b506000601f555b601d805461ff00191661010084151502179055601e8190556040517f5c9bf067f2a8b23128e64d5ce119251f51d6c0c24e0d7bf430c2dd77df3ec0929061237390849084906158a9565b60405180910390a1611504565b600054600160b01b900460ff16806123a25750600054600160a81b900460ff16155b156114f9576123af612a6e565b604051636904d3eb60e11b815273__$03dc2144a91b115216397a255bda0073a6$__9063d209a7d6906123eb9060169086908690600401615960565b60006040518083038186803b15801561240357600080fd5b505af41580156114f0573d6000803e3d6000fd5b61241f61303e565b6001600160a01b0382166000908152601660209081526040918290205482518084019093526009835268139bdd08199bdd5b9960ba1b9183019190915260ff1661247c5760405162461bcd60e51b81526004016109e49190615913565b506001600160a01b03821660009081526018602052604090819020805460ff1916831515179055517f24462ede4d3e8e5a69fecec6290d42a311016ca752216d9a3d681e284791b7ac906124d390849084906158b9565b60405180910390a15050565b6124e7610e63565b6001600160a01b0316336001600160a01b031614612543576040805162461bcd60e51b815260206004820152601460248201527337b7363c9030b2323932b9b9903ab83230ba32b960611b604482015290519081900360640190fd5b61257c61257783836040518060400160405280600e81526020016d20b2323932b9b9aab83230ba32b960911b8152506141a8565b6142d5565b61150482826142f9565b601f5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b601a546001600160a01b031690565b601d54610100900460ff1681565b6060610899612fa0565b600054600160b01b900460ff16806125f95750600054600160a81b900460ff16155b15610b0a57612606612a6e565b60005b81518110156126385761263082828151811061262157fe5b60200260200101516001612e9e565b600101612609565b50610b15565b60095481565b600054600160b01b900460ff16806126665750600054600160a81b900460ff16155b15610d0157612673612a6e565b600554604080518082019091526011815270105b1c9958591e481858dd1a5d985d1959607a1b60208201529060ff16156126c05760405162461bcd60e51b81526004016109e49190615913565b50602283905560088290556009819055610d0c565b600054600160a81b900460ff1681565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612758576040805162461bcd60e51b815260206004820152601160248201527037b7363c90333630b932903230b2b6b7b760791b604482015290519081900360640190fd5b602754600160a01b900460ff166127bd576027805460ff60a01b1916600160a01b1790556040517f217a37a37fc40a97159886f80c3d45986e6fc4330ce6ad7283478b5e5ab705bc906127ad90600190615840565b60405180910390a150600161089c565b50600090565b6004546001600160c01b03811690600160c01b90046001600160401b031682565b6127ec614d7e565b60085482106040518060400160405280602081526020017f5265776172642065706f6368206e6f7420696e697469616c697a656420796574815250906128455760405162461bcd60e51b81526004016109e49190615913565b5061284f82614506565b92915050565b6000600854600014156040518060400160405280602081526020017f5265776172642065706f6368206e6f7420696e697469616c697a656420796574815250906128b25760405162461bcd60e51b81526004016109e49190615913565b5061089961460b565b60115490565b60006128cc826127e4565b5192915050565b6128db61303e565b600054600160a81b900460ff161561293a576040805162461bcd60e51b815260206004820152601a60248201527f616c726561647920696e2070726f64756374696f6e206d6f6465000000000000604482015290519081900360640190fd5b60008054600161ff0160a01b031916600160a81b1790556040805160076001609c1b01815290517f83af113638b5422f9e977cebc0aaf0eaf2188eb9a8baae7f9d46c42b33a1560c9181900360200190a1565b60408051808201909152600b81526a233a39b7a6b0b730b3b2b960a91b602082015290565b6023546001600160a01b031681565b6129c961303e565b6027805460ff60a01b1916600160a01b831515021790556040517f217a37a37fc40a97159886f80c3d45986e6fc4330ce6ad7283478b5e5ab705bc90612a10908390615840565b60405180910390a150565b60007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000420381612a6857fe5b04905090565b600054600160b01b900460ff1615612a9b57333014612a8957fe5b6000805460ff60b01b191690556108fa565b6108fa61303e565b612aab61303e565b600082359050600060076001609c1b016001600160a01b0316636221a54b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612af357600080fd5b505afa158015612b07573d6000803e3d6000fd5b505050506040513d6020811015612b1d57600080fd5b505160408051808201825242830180825282516020601f89018190048102820181019094528781529394509290918281019190889088908190840183828082843760009201829052509390945250506001600160e01b03198616815260016020818152604090922084518155848301518051919450612ba193928501920190614d9f565b509050507fed948300a3694aa01d4a6b258bfd664350193d770c0b51f8387277f6d83ea3b68382878760405180856001600160e01b0319168152602001848152602001806020018281038252848482818152602001925080828437600083820152604051601f909101601f191690920182900397509095505050505050a15050505050565b801580612c3257504281115b612c77576040805162461bcd60e51b8152602060048201526011602482015270696e76616c69642075706461746520747360781b604482015290519081900360640190fd5b9055565b888a6001015414612c9e57600a8a01805460ff191660019081179091558a018990555b878a6002015414612cc057600a8a01805460ff1916600117905560028a018890555b868a6003015414612ce257600a8a01805460ff1916600117905560038a018790555b858a6004015414612d0457600a8a01805460ff1916600117905560048a018690555b848a6005015414612d2657600a8a01805460ff1916600117905560058a018590555b838a6006015414612d4857600a8a01805460ff1916600117905560068a018490555b828a6007015414612d6a57600a8a01805460ff1916600117905560078a018390555b818a6008015414612d8c57600a8a01805460ff1916600117905560088a018290555b805160098b015414612dc2578051612dad9060098c01906020840190614e2b565b50600a8a01805460ff19166001179055612e81565b60005b8151811015612e7f57818181518110612dda57fe5b60200260200101516001600160a01b03168b6009018281548110612dfa57fe5b6000918252602090912001546001600160a01b031614612e7757600a8b01805460ff191660011790558151829082908110612e3157fe5b60200260200101518b6009018281548110612e4857fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b600101612dc5565b505b505050600a909601805461ff001916610100179055505050505050565b601d546040516306b8c18560e01b815273__$03dc2144a91b115216397a255bda0073a6$__916306b8c18591612ee491601691600a918891889160ff16906004016159a9565b60006040518083038186803b158015612efc57600080fd5b505af4158015612f10573d6000803e3d6000fd5b5050505061150482614615565b601d5460405163169ffdc760e21b815273__$03dc2144a91b115216397a255bda0073a6$__91635a7ff71c91612f6791601691600a9189918991899160ff909116906004016159d9565b60006040518083038186803b158015612f7f57600080fd5b505af4158015612f93573d6000803e3d6000fd5b50505050610d0c83614615565b60195460408051635200305d60e11b815290516060926001600160a01b03169163a40060ba916004808301926000929190829003018186803b158015612fe557600080fd5b505afa158015612ff9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108999190810190615142565b3d604051818101604052816000823e821561303a578181f35b8181fd5b613046610f66565b6001600160a01b0316336001600160a01b0316146108fa576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000042106108fa5760006130ce612fa0565b80516040805160608101825243600019810182526020808301918252428385019081526008805460009081526006909352948220845181559251600180850191909155905160029093019290925583549091019092559293509091905b828110156131b35783818151811061313f57fe5b60200260200101516001600160a01b031663e536f39683600001516040518263ffffffff1660e01b81526004016131769190615a32565b600060405180830381600087803b15801561319057600080fd5b505af11580156131a4573d6000803e3d6000fd5b5050505080600101905061312b565b50506020547f0000000000000000000000000000000000000000000000000000000000000000016009555050565b600082826040516020016131f69291906156c6565b60408051601f198184030181528282528051602091820120600081815260029092529190208054436001600160c01b038181166001600160401b03600160c01b80860482166001019091160291909316176001600160c01b031916919091179091559092507f1a601cf5e0efbd558b2778b7389af04741d1c49bcab104c40daa2da1945936179161328a91869186906156ea565b60405180910390a1600480546001600160c01b0319811660016001600160c01b03928316810190921617909155600082815260026020526040902054600160c01b90046001600160401b031611156132e25750611504565b6003805460018082019092557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01829055600082815260026020818152604090922092830180546001600160a01b0319166001600160a01b03881617905584516133529390910191850190614d9f565b50600354600091825260026020526040909120600101805467ffffffffffffffff60a01b1916600160a01b6000199093016001600160401b0390811684029190911791829055600480546001600160c01b03169390920416600160c01b029190911790555050565b60006133c4612fa0565b805190915080158015906133e25750602754600160a01b900460ff16155b156137b25760008184816133f257fe5b06905060608060008080805b8781101561359a576000888289018161341357fe5b06905060008a828151811061342457fe5b6020908102919091018101516001600160a01b0381166000908152601790925260409091205490915060ff161561347a576001600160a01b03166000908152601760205260409020805460ff1916905550613592565b601b546040516340462a2d60e01b81526001600160a01b038316916340462a2d916134ab9190891590600401615903565b600060405180830381600087803b1580156134c557600080fd5b505af19250505080156134fa57506040513d6000823e601f3d908101601f191682016040526134f79190810190614f87565b60015b61356557613506615bb5565b806135115750613521565b61351b8282614752565b50613560565b613560816040518060400160405280601881526020017f6572722066696e616c697a652070726963652065706f63680000000000000000815250614752565b61358f565b87158015613574575060008351115b1561358b5791995097509550600194509250828787875b5050505b50505b6001016133fe565b5060006135a561460b565b9050821561374957602454601b546001600160a01b039091169063a9b79e1790889088908890877f00000000000000000000000000000000000000000000000000000000000000008860016135f9856147a3565b036136038b614506565b516040516001600160e01b031960e08c901b16815261362d99989796959493929190600401615711565b600060405180830381600087803b15801561364757600080fd5b505af1925050508015613658575060015b61374457613664615bb5565b8061366f57506136c6565b7f175a1d13d190d6a1e14461c214b3ecf6118b828797750b7bffd7c4f2c1eba54c83601b546040516136a29291906156ad565b60405180910390a16024546136c0906001600160a01b0316826131e1565b50613744565b7f175a1d13d190d6a1e14461c214b3ecf6118b828797750b7bffd7c4f2c1eba54c82601b546040516136f99291906156ad565b60405180910390a16024546040805180820190915260168152756572722064697374726962757465207265776172647360501b6020820152613744916001600160a01b0316906131e1565b613751565b6137516147f0565b600780546001600160a01b0319166001600160a01b0384161790556040517f98b050a4042fbd1b89934ef40b9342e593f15081a348af940573a0179031f4ad9061379e90849084906156ad565b60405180910390a15050505050505061388e565b60005b818110156138335760008382815181106137cb57fe5b6020908102919091018101516001600160a01b0381166000908152601790925260409091205490915060ff1615613820576001600160a01b03166000908152601760205260409020805460ff1916905561382b565b61382981614972565b505b6001016137b5565b5061383c6147f0565b600780546001600160a01b03191690557f98b050a4042fbd1b89934ef40b9342e593f15081a348af940573a0179031f4ad600061387761460b565b6040516138859291906156ad565b60405180910390a15b5050601d805460ff1916905550565b60006138a7612fa0565b905060008151905060006021546138c46138bf61460b565b614506565b602001514303816138d157fe5b049050806138dd575060015b60008185816138e857fe5b069050806138f4575060015b60408051606081018252438381038252602080830191825242838501908152600880546000908152600690935294822084518155925160018085019190915590516002909301929092558354909101909255905b848110156139d15785818151811061395c57fe5b60200260200101516001600160a01b031663e536f39683600001516040518263ffffffff1660e01b81526004016139939190615a32565b600060405180830381600087803b1580156139ad57600080fd5b505af11580156139c1573d6000803e3d6000fd5b5050600190920191506139489050565b50805160208201516040517f1813f880dc24666c8b69c9d771a487ea620a27fde1514be3112847056c0c532292613a09929091615a54565b60405180910390a1505060205460098054909101905550505050565b6000613a2f61460b565b60115490915042035b81602254108015613a5a575080613a53602254600101614506565b6040015111155b1561150457602454602254604051636b60edf760e11b81526001600160a01b039092169163d6c1dbee91613a9091600401615a32565b600060405180830381600087803b158015613aaa57600080fd5b505af1925050508015613abb575060015b613ba357613ac7615bb5565b80613ad25750613b27565b7fa819a21065ad87bdde9e6d398d3213e0d3634afd87aceb7092236483f5d7ca8d602254604051613b039190615a32565b60405180910390a1602454613b21906001600160a01b0316826131e1565b50611504565b7fa819a21065ad87bdde9e6d398d3213e0d3634afd87aceb7092236483f5d7ca8d602254604051613b589190615a32565b60405180910390a1602454604080518082019091526011815270195c9c8818db1bdcd948195e1c1a5c9959607a1b6020820152613b9e916001600160a01b0316906131e1565b611504565b602280546001019055613a38565b6000613bbe602254614506565b5160265460405163cbc31cf760e01b81529192506001600160a01b03169063cbc31cf790613bf0908490600401615a32565b600060405180830381600087803b158015613c0a57600080fd5b505af1925050508015613c1b575060015b610b1557613c27615bb5565b80613c325750613c85565b7f9f874ea08c7014cce74622bfe71434f81aba7598ad65126a6aea86945bdfa18d82604051613c619190615a32565b60405180910390a1602654613c7f906001600160a01b0316826131e1565b50610be7565b7f9f874ea08c7014cce74622bfe71434f81aba7598ad65126a6aea86945bdfa18d81604051613cb49190615a32565b60405180910390a16026546040805180820190915260158152746572722073657420636c65616e757020626c6f636b60581b6020820152610be7916001600160a01b0316906131e1565b6027546001600160a01b0316156108fa576000613d1961460b565b9050602760009054906101000a90046001600160a01b03166001600160a01b03166321eb1a956040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613d6b57600080fd5b505af1925050508015613d7c575060015b610b1557613d88615bb5565b80613d935750613de0565b7ff7c7d6681321cc290eb89e8c96dba504436073b8bb277945cc32177e5181dd8482604051613dc29190615a32565b60405180910390a1602754613c7f906001600160a01b0316826131e1565b7ff7c7d6681321cc290eb89e8c96dba504436073b8bb277945cc32177e5181dd8481604051613e0f9190615a32565b60405180910390a160275460408051606081019091526022808252610be7926001600160a01b03169190615c9f60208301396131e1565b60145460ff168015613e5a5750600a544210155b15613ec357602354604051639ec2b58160e01b81526001600160a01b0390911690639ec2b58190613e909060139060040161577b565b600060405180830381600087803b158015613eaa57600080fd5b505af1158015613ebe573d6000803e3d6000fd5b505050505b6000613ecd612fa0565b805190915060008115801590613eed5750602754600160a01b900460ff16155b15613f86576000613eff6138bf61460b565b516025546040516237b08960e41b81529192506001600160a01b03169063037b089090613f30908490600401615a32565b602060405180830381600087803b158015613f4a57600080fd5b505af1158015613f5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f829190615399565b9150505b60005b82811015614153576000848281518110613f9f57fe5b602090810291909101015160145490915060ff168015613fc15750600a544210155b1561405957600b54600c54600d54600e54600f546010546012546001600160a01b03881660008181526015602052604090819020549051632d1e4ec760e11b81529198635a3c9d8e986140269891979096919590949193909290601390600401615b1a565b600060405180830381600087803b15801561404057600080fd5b505af1158015614054573d6000803e3d6000fd5b505050505b806001600160a01b031663f670ebe384602760149054906101000a900460ff168061409c57506001600160a01b03841660009081526018602052604090205460ff165b6040518363ffffffff1660e01b81526004016140b9929190615903565b600060405180830381600087803b1580156140d357600080fd5b505af19250505080156140e4575060015b61414a576140f0615bb5565b806140fb575061410b565b6141058282614a0e565b5061414a565b61414a816040518060400160405280601981526020017f65727220696e69742065706f636820666f722072657665616c00000000000000815250614a0e565b50600101613f89565b5060145460ff1680156141685750600a544210155b15614178576014805460ff191690555b6000614182612a1b565b601b819055905061419281614c1f565b601c555050601d805460ff191660011790555050565b600080826040516020018080602001828103825283818151815260200191508051906020019080838360005b838110156141ec5781810151838201526020016141d4565b50505050905090810190601f1680156142195780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012090506000805b86518110156142815786818151811061424f57fe5b60200260200101518314156142795785818151811061426a57fe5b60200260200101519150614281565b60010161423a565b506001600160a01b0381166142cc576040805162461bcd60e51b815260206004820152600c60248201526b61646472657373207a65726f60a01b604482015290519081900360640190fd5b95945050505050565b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e771955565b61432a82826040518060400160405280600e81526020016d283934b1b2a9bab136b4ba3a32b960911b8152506141a8565b602360006101000a8154816001600160a01b0302191690836001600160a01b03160217905550614384828260405180604001604052806011815260200170233a39b7a932bbb0b93226b0b730b3b2b960791b8152506141a8565b602460006101000a8154816001600160a01b0302191690836001600160a01b031602179055506143d3828260405180604001604052806006815260200165537570706c7960d01b8152506141a8565b602560006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061443982826040518060400160405280601981526020017f436c65616e7570426c6f636b4e756d6265724d616e61676572000000000000008152506141a8565b602660006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061448e82826040518060400160405280600c81526020016b4674736f526567697374727960a01b8152506141a8565b601980546001600160a01b0319166001600160a01b039290921691909117905560408051808201909152601081526f2b37ba32b92bb434ba32b634b9ba32b960811b60208201526144e290839083906141a8565b601a80546001600160a01b0319166001600160a01b03929092169190911790555050565b61450e614d7e565b5060008181526006602090815260409182902082516060810184528154815260018201549281019290925260020154918101829052906110145760008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a795f409866040518263ffffffff1660e01b81526004016145999190615a32565b60606040518083038186803b1580156145b157600080fd5b505afa1580156145c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145e991906154e1565b6040805160608101825293845260208401929092529082015295945050505050565b6008546000190190565b604051630bc29bcf60e21b81526001600160a01b03821690632f0a6f3c906146a5907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090600401615a7a565b600060405180830381600087803b1580156146bf57600080fd5b505af11580156146d3573d6000803e3d6000fd5b50505050600854600014610b1557806001600160a01b031663e536f3966146fb6138bf61460b565b516040516001600160e01b031960e084901b16815261471d9190600401615a32565b600060405180830381600087803b15801561473757600080fd5b505af115801561474b573d6000803e3d6000fd5b5050505050565b7f79f4c7cc43bfb79f5a3aad0d92f75b6fed7db061bb5cc2580a01c8132711b88182601b546001604051614788939291906158d4565b60405180910390a161479a82826131e1565b61150482614972565b7f0000000000000000000000000000000000000000000000000000000000000000600182017f00000000000000000000000000000000000000000000000000000000000000000201919050565b602454601b546001600160a01b03909116906367dcac53907f00000000000000000000000000000000000000000000000000000000000000006001614834836147a3565b036040518463ffffffff1660e01b815260040161485393929190615a7a565b600060405180830381600087803b15801561486d57600080fd5b505af192505050801561487e575060015b6108fa5761488a615bb5565b8061489557506148ea565b7f8eb60f903ef61e0e490d7d7ba6e5b85cd949ebece7a5e5b3346eb046c041413f601b546040516148c69190615a32565b60405180910390a16024546148e4906001600160a01b0316826131e1565b5061496d565b7f8eb60f903ef61e0e490d7d7ba6e5b85cd949ebece7a5e5b3346eb046c041413f601b5460405161491b9190615a32565b60405180910390a160245460408051808201909152601b81527f6572722061636372756520756e6561726e656420726577617264730000000000602082015261496d916001600160a01b0316906131e1565b6108fa565b601b5460405163257ea88160e11b81526001600160a01b03831691634afd5102916149a09190600401615a32565b600060405180830381600087803b1580156149ba57600080fd5b505af19250505080156149cb575060015b610b15576149d7615bb5565b806149e257506149ec565b613c7f8282614c8e565b610be781604051806060016040528060218152602001615d1260219139614c8e565b7f61156899176547b8075bfa81fa2996c6057ce9c71320884b11c0179d9dc2e46282614a38612a1b565b604051614a469291906156ad565b60405180910390a1614a5882826131e1565b602754600160a01b900460ff1680614a8857506001600160a01b03821660009081526018602052604090205460ff165b15614ab5576001600160a01b0382166000908152601760205260409020805460ff19166001179055611504565b60405163f670ebe360e01b81526001600160a01b0383169063f670ebe390614ae590600090600190600401615903565b600060405180830381600087803b158015614aff57600080fd5b505af1925050508015614b10575060015b61150457614b1c615bb5565b80614b275750614b9a565b6001600160a01b0383166000908152601760205260409020805460ff191660011790557f61156899176547b8075bfa81fa2996c6057ce9c71320884b11c0179d9dc2e46283614b74612a1b565b604051614b829291906156ad565b60405180910390a1614b9483826131e1565b50613b9e565b6001600160a01b0382166000908152601760205260409020805460ff191660011790557f61156899176547b8075bfa81fa2996c6057ce9c71320884b11c0179d9dc2e46282614be7612a1b565b604051614bf59291906156ad565b60405180910390a1613b9e82604051806060016040528060228152602001615c7d602291396131e1565b7f0000000000000000000000000000000000000000000000000000000000000000600182017f000000000000000000000000000000000000000000000000000000000000000002017f000000000000000000000000000000000000000000000000000000000000000001919050565b7f79f4c7cc43bfb79f5a3aad0d92f75b6fed7db061bb5cc2580a01c8132711b88182601b546002604051614cc4939291906158d4565b60405180910390a1614cd682826131e1565b601b5460405163974d7a6b60e01b81526001600160a01b0384169163974d7a6b91614d049190600401615a32565b600060405180830381600087803b158015614d1e57600080fd5b505af1158015614d32573d6000803e3d6000fd5b505050505050565b50805460018160011615610100020316600290046000825580601f10614d605750610b15565b601f016020900490600052602060002090810190610b159190614e80565b60405180606001604052806000815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282614dd55760008555614e1b565b82601f10614dee57805160ff1916838001178555614e1b565b82800160010185558215614e1b579182015b82811115614e1b578251825591602001919060010190614e00565b50614e27929150614e80565b5090565b828054828255906000526020600020908101928215614e1b579160200282015b82811115614e1b57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190614e4b565b5b80821115614e275760008155600101614e81565b600082601f830112614ea5578081fd5b81356020614eba614eb583615b92565b615b6f565b8281528181019085830183850287018401881015614ed6578586fd5b855b85811015614efd578135614eeb81615c59565b84529284019290840190600101614ed8565b5090979650505050505050565b600082601f830112614f1a578081fd5b81516020614f2a614eb583615b92565b8281528181019085830183850287018401881015614f46578586fd5b855b85811015614efd57815184529284019290840190600101614f48565b600060208284031215614f75578081fd5b8135614f8081615c59565b9392505050565b600080600060608486031215614f9b578182fd5b83516001600160401b0380821115614fb1578384fd5b818601915086601f830112614fc4578384fd5b81516020614fd4614eb583615b92565b82815281810190858301838502870184018c1015614ff0578889fd5b8896505b8487101561501b57805161500781615c59565b835260019690960195918301918301614ff4565b5091890151919750909350505080821115615034578384fd5b5061504186828701614f0a565b925050604084015190509250925092565b60008060408385031215615064578182fd5b82356001600160401b038082111561507a578384fd5b818501915085601f83011261508d578384fd5b8135602061509d614eb583615b92565b82815281810190858301838502870184018b10156150b9578889fd5b8896505b848710156150db5780358352600196909601959183019183016150bd565b50965050860135925050808211156150f1578283fd5b506150fe85828601614e95565b9150509250929050565b600060208284031215615119578081fd5b81356001600160401b0381111561512e578182fd5b61513a84828501614e95565b949350505050565b60006020808385031215615154578182fd5b82516001600160401b03811115615169578283fd5b8301601f81018513615179578283fd5b8051615187614eb582615b92565b81815283810190838501858402850186018910156151a3578687fd5b8694505b838510156151ce5780516151ba81615c59565b8352600194909401939185019185016151a7565b50979650505050505050565b6000806000606084860312156151ee578081fd5b83356001600160401b03811115615203578182fd5b61520f86828701614e95565b935050602084013561522081615c6e565b9150604084013561523081615c6e565b809150509250925092565b60006020828403121561524c578081fd5b8135614f8081615c6e565b60008060408385031215615269578182fd5b823561527481615c6e565b946020939093013593505050565b600060208284031215615293578081fd5b81356001600160e01b031981168114614f80578182fd5b600080604083850312156152bc578182fd5b82356152c781615c59565b915060208301356001600160401b038111156152e1578182fd5b6150fe85828601614e95565b600080604083850312156152ff578182fd5b823561530a81615c59565b9150602083013561531a81615c6e565b809150509250929050565b600080600060608486031215615339578081fd5b833561534481615c59565b9250602084013561522081615c6e565b60008060408385031215615366578182fd5b823561537181615c59565b9150602083013561531a81615c59565b600060208284031215615392578081fd5b5035919050565b6000602082840312156153aa578081fd5b5051919050565b6000806000606084860312156153c5578081fd5b833592506020808501356001600160401b03808211156153e3578384fd5b6153ef88838901614e95565b94506040870135915080821115615404578384fd5b508501601f81018713615415578283fd5b8035615423614eb582615b92565b81815283810190838501858402850186018b101561543f578687fd5b8694505b83851015615461578035835260019490940193918501918501615443565b5080955050505050509250925092565b60008060408385031215615483578182fd5b82519150602083015161531a81615c6e565b600080604083850312156154a7578182fd5b50508035926020909101359150565b6000806000606084860312156154ca578081fd5b505081359360208301359350604090920135919050565b6000806000606084860312156154f5578081fd5b8351925060208401519150604084015190509250925092565b6000806000806000806000806000806101408b8d03121561552d578788fd5b8a35995060208b0135985060408b0135975060608b0135965060808b0135955060a08b0135945060c08b0135935060e08b013592506101008b013591506101208b01356001600160401b03811115615583578182fd5b61558f8d828e01614e95565b9150509295989b9194979a5092959850565b6000815180845260208085019450808401835b838110156155d95781516001600160a01b0316875295820195908201906001016155b4565b509495945050505050565b6000815480845260208085019450838352808320835b838110156155d95781546001600160a01b0316875295820195600191820191016155fa565b6000815180845260208085019450808401835b838110156155d957815187529582019590820190600101615632565b60008151808452815b8181101561567357602081850181015186830182015201615657565b818111156156845782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b038316815260406020820181905260009061513a9083018461564e565b600060018060a01b0385168252836020830152606060408301526142cc606083018461564e565b60006101208083526157258184018d6155a1565b90508281036020840152615739818c61561f565b604084019a909a52505060608101969096526001600160a01b0394909416608086015260a085019290925260c084015260e08301526101009091015292915050565b600060208252614f8060208301846155e4565b600060208252614f8060208301846155a1565b600060a082526157b460a083018861561f565b6020838203818501526157c7828961561f565b848103604086015287518082529092508183019082810284018301838a01865b8381101561581557601f1987840301855261580383835161564e565b948601949250908501906001016157e7565b50508681036060880152615829818a6155a1565b955050505050508260808301529695505050505050565b901515815260200190565b60008415158252602060608184015261586760608401866155a1565b8381036040850152845180825282860191830190845b8181101561589b57835115158352928401929184019160010161587d565b509098975050505050505050565b9115158252602082015260400190565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b03841681526020810183905260608101600683106158f557fe5b826040830152949350505050565b9182521515602082015260400190565b600060208252614f80602083018461564e565b81518152602080830151908201526040918201519181019190915260600190565b60008382526040602083015261513a60408301846155a1565b8381526001600160a01b03831660208201526060604082018190526000906142cc908301846155a1565b92835260208301919091526001600160a01b0316604082015260600190565b94855260208501939093526001600160a01b03919091166040840152151560608301521515608082015260a00190565b95865260208601949094526001600160a01b039290921660408501521515606084015215156080830152151560a082015260c00190565b6001600160c01b039290921682526001600160401b0316602082015260400190565b90815260200190565b60008382526040602083015261513a604083018461564e565b918252602082015260400190565b92835260208301919091521515604082015260600190565b9283526020830191909152604082015260600190565b948552602085019390935260408401919091526060830152608082015260a00190565b60006101608d83528c60208401528b60408401528a60608401528960808401528860a08401528760c08401528660e084015280610100840152615af8818401876155a1565b9415156101208401525050901515610140909101529998505050505050505050565b60006101208b83528a60208401528960408401528860608401528760808401528660a08401528560c08401528460e084015280610100840152615b5f818401856155e4565b9c9b505050505050505050505050565b6040518181016001600160401b0381118282101715615b8a57fe5b604052919050565b60006001600160401b03821115615ba557fe5b5060209081020190565b60e01c90565b600060443d1015615bc55761089c565b600481823e6308c379a0615bd98251615baf565b14615be35761089c565b6040513d600319016004823e80513d6001600160401b038160248401118184111715615c12575050505061089c565b82840192508251915080821115615c2c575050505061089c565b503d83016020828401011115615c445750505061089c565b601f01601f1916810160200160405291505090565b6001600160a01b0381168114610b1557600080fd5b8015158114610b1557600080fdfe6572722066616c6c6261636b20696e69742065706f636820666f722072657665616c6572722063616c6c696e672075706461746541637469766556616c696461746f72736572722063616c6c696e67206368696c6c4e6f6e72657665616c696e674461746150726f7669646572735265776172642065706f6368206475726174696f6e20636f6e646974696f6e20696e76616c69646572722066616c6c6261636b2066696e616c697a652070726963652065706f6368a2646970667358221220f8fad4ea9edefd1c056394acba79d7a99322eb085d945394d6e714e62b04f54564736f6c63430007060033",
1595
1671
  "linkReferences": {
1596
1672
  "contracts/ftso/lib/FtsoManagement.sol": {
1597
1673
  "FtsoManagement": [
1598
1674
  {
1599
1675
  "length": 20,
1600
- "start": 8378
1676
+ "start": 9924
1601
1677
  },
1602
1678
  {
1603
1679
  "length": 20,
1604
- "start": 9188
1680
+ "start": 10492
1605
1681
  },
1606
1682
  {
1607
1683
  "length": 20,
1608
- "start": 9356
1684
+ "start": 10958
1609
1685
  },
1610
1686
  {
1611
1687
  "length": 20,
1612
- "start": 11566
1688
+ "start": 13760
1613
1689
  },
1614
1690
  {
1615
1691
  "length": 20,
1616
- "start": 11693
1692
+ "start": 13887
1617
1693
  }
1618
1694
  ]
1619
1695
  }
@@ -1623,23 +1699,23 @@
1623
1699
  "FtsoManagement": [
1624
1700
  {
1625
1701
  "length": 20,
1626
- "start": 6504
1702
+ "start": 8116
1627
1703
  },
1628
1704
  {
1629
1705
  "length": 20,
1630
- "start": 7314
1706
+ "start": 8684
1631
1707
  },
1632
1708
  {
1633
1709
  "length": 20,
1634
- "start": 7482
1710
+ "start": 9150
1635
1711
  },
1636
1712
  {
1637
1713
  "length": 20,
1638
- "start": 9692
1714
+ "start": 11952
1639
1715
  },
1640
1716
  {
1641
1717
  "length": 20,
1642
- "start": 9819
1718
+ "start": 12079
1643
1719
  }
1644
1720
  ]
1645
1721
  }