@artblocks/contracts 1.3.2 → 1.4.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 (229) hide show
  1. package/README.md +11 -10
  2. package/artifacts/contracts/AdminACLV0RoyaltyRegistry.sol/AdminACLV0RoyaltyRegistry.json +193 -0
  3. package/artifacts/contracts/AdminACLV0RoyaltyRegistry.sol/IRoyaltyRegistry.json +35 -0
  4. package/artifacts/contracts/AdminACLV1.sol/AdminACLV1.json +2 -2
  5. package/artifacts/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2.sol/BytecodeStorageReaderContractV2.json +2 -2
  6. package/artifacts/contracts/BytecodeStorageReaders/BytecodeStorageReaderContractV2_Web3Call.sol/BytecodeStorageReaderContractV2_Web3Call.json +2 -2
  7. package/artifacts/contracts/BytecodeStorageV2Writer.sol/BytecodeStorageV2Writer.json +2 -2
  8. package/artifacts/contracts/DependencyRegistryV0.sol/DependencyRegistryV0.json +210 -2
  9. package/artifacts/contracts/GenArt721CoreV3_Curated.sol/GenArt721CoreV3_Curated.json +235 -20
  10. package/artifacts/contracts/GenArt721CoreV3_Curated_Flex.sol/GenArt721CoreV3_Curated_Flex.json +3197 -0
  11. package/artifacts/contracts/GenArt721CoreV3_Explorations_Flex.sol/GenArt721CoreV3_Explorations_Flex.json +3192 -0
  12. package/artifacts/contracts/OwnedCreate2FactoryV0.sol/OwnedCreate2FactoryV0.json +2 -2
  13. package/artifacts/contracts/archive/GenArt721CoreV3.sol/GenArt721CoreV3.json +27 -2
  14. package/artifacts/contracts/archive/GenArt721CoreV3_Explorations.sol/GenArt721CoreV3_Explorations.json +27 -2
  15. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV2.sol/MinterDAExpV2.json +2 -2
  16. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV3.sol/MinterDAExpV3.json +2 -2
  17. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExp/MinterDAExpV4.sol/MinterDAExpV4.json +2 -2
  18. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV0.sol/MinterDAExpSettlementV0.json +2 -2
  19. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV1.sol/MinterDAExpSettlementV1.json +2 -2
  20. package/artifacts/contracts/archive/minter-suite/Minters/MinterDAExpSettlement/MinterDAExpSettlementV2.sol/MinterDAExpSettlementV2.json +2 -2
  21. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV2.sol/MinterDALinV2.json +2 -2
  22. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV3.sol/MinterDALinV3.json +2 -2
  23. package/artifacts/contracts/archive/minter-suite/Minters/MinterDALin/MinterDALinV4.sol/MinterDALinV4.json +2 -2
  24. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV1.sol/MinterHolderV1.json +2 -2
  25. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV2.sol/MinterHolderV2.json +2 -2
  26. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV3.sol/MinterHolderV3.json +2 -2
  27. package/artifacts/contracts/archive/minter-suite/Minters/MinterHolder/MinterHolderV4.sol/MinterHolderV4.json +2 -2
  28. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV1.sol/MinterMerkleV1.json +2 -2
  29. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV2.sol/MinterMerkleV2.json +2 -2
  30. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV3.sol/MinterMerkleV3.json +2 -2
  31. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV4.sol/MinterMerkleV4.json +2 -2
  32. package/artifacts/contracts/archive/minter-suite/Minters/MinterMerkle/MinterMerkleV5.sol/MinterMerkleV5.json +2 -2
  33. package/artifacts/contracts/archive/minter-suite/Minters/MinterPolyptych/MinterPolyptychV0.sol/IGenArt721CoreContractV3WithRandomizer.json +25 -0
  34. package/artifacts/contracts/archive/minter-suite/Minters/MinterPolyptych/MinterPolyptychV0.sol/MinterPolyptychV0.json +2 -2
  35. package/artifacts/contracts/archive/minter-suite/Minters/MinterSEA/MinterSEAV0.sol/MinterSEAV0.json +2 -2
  36. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV2.sol/MinterSetPriceV2.json +2 -2
  37. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV3.sol/MinterSetPriceV3.json +2 -2
  38. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPrice/MinterSetPriceV4.sol/MinterSetPriceV4.json +2 -2
  39. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V2.sol/MinterSetPriceERC20V2.json +2 -2
  40. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V3.sol/MinterSetPriceERC20V3.json +2 -2
  41. package/artifacts/contracts/archive/minter-suite/Minters/MinterSetPriceERC20/MinterSetPriceERC20V4.sol/MinterSetPriceERC20V4.json +2 -2
  42. package/artifacts/contracts/engine/V3/EngineFactoryV0.sol/EngineFactoryV0.json +28 -2
  43. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine.sol/GenArt721CoreV3_Engine.json +239 -20
  44. package/artifacts/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol/GenArt721CoreV3_Engine_Flex.json +267 -48
  45. package/artifacts/contracts/engine/V3/forks/GenArt721CoreV3_Engine_Flex_PROOF.sol/GenArt721CoreV3_Engine_Flex_PROOF.json +27 -2
  46. package/artifacts/contracts/engine/V3/forks/PROHIBITION/AdminACLV0_PROHIBITION.sol/AdminACLV0_PROHIBITION.json +2 -2
  47. package/artifacts/contracts/engine/V3/forks/PROHIBITION/GenArt721CoreV3_Engine_Flex_PROHIBITION.sol/GenArt721CoreV3_Engine_Flex_PROHIBITION.json +27 -2
  48. package/artifacts/contracts/engine/V3/forks/PROHIBITION/interfaces/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.sol/IGenArt721CoreContractV3_Engine_Flex_PROHIBITION.json +25 -0
  49. package/artifacts/contracts/engine/V3/transfer-hooks/AbstractTransferHook.sol/AbstractTransferHook.json +79 -0
  50. package/artifacts/contracts/engine/V3/transfer-hooks/OwnerHistoryTransferHook.sol/OwnerHistoryTransferHook.json +315 -0
  51. package/artifacts/contracts/generator/GenArt721GeneratorV0.sol/GenArt721GeneratorV0.json +2 -2
  52. package/artifacts/contracts/interfaces/v0.8.x/IClaimMinter.sol/IClaimMinter.json +189 -0
  53. package/artifacts/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol/IDependencyRegistryV0.json +149 -0
  54. package/artifacts/contracts/interfaces/v0.8.x/IEngineFactoryV0.sol/IEngineFactoryV0.json +26 -0
  55. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3.sol/IGenArt721CoreContractV3.json +25 -0
  56. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol/IGenArt721CoreContractV3_Base.json +25 -0
  57. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol/IGenArt721CoreContractV3_Engine.json +123 -0
  58. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex.sol/IGenArt721CoreContractV3_Engine_Flex.json +123 -0
  59. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.sol/IGenArt721CoreContractV3_Engine_Flex_PreV3p2.json +25 -0
  60. package/artifacts/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine_PreV3p2.sol/IGenArt721CoreContractV3_Engine_PreV3p2.json +25 -0
  61. package/artifacts/contracts/interfaces/v0.8.x/IOwnerHistoryTransferHook.sol/IOwnerHistoryTransferHook.json +299 -0
  62. package/artifacts/contracts/interfaces/v0.8.x/ISRHooks.sol/ISRHooks.json +432 -0
  63. package/artifacts/contracts/interfaces/v0.8.x/ISeaDropShimForContract.sol/ISeaDropShimForContract.json +0 -13
  64. package/artifacts/contracts/interfaces/v0.8.x/ISharedMinterTieredAllowV0.sol/ISharedMinterTieredAllowV0.json +94 -0
  65. package/artifacts/contracts/interfaces/v0.8.x/ITransferHook.sol/ITransferHook.json +63 -0
  66. package/artifacts/contracts/libs/v0.8.x/AuthLib.sol/AuthLib.json +2 -2
  67. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV2.sol/BytecodeStorageReader.json +2 -2
  68. package/artifacts/contracts/libs/v0.8.x/BytecodeStorageV2.sol/BytecodeStorageWriter.json +2 -2
  69. package/artifacts/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol/DependencyRegistryStorageLib.json +2 -2
  70. package/artifacts/contracts/libs/v0.8.x/ENSLib.sol/ENSLib.json +10 -0
  71. package/artifacts/contracts/libs/v0.8.x/ENSLib.sol/IUniversalResolver.json +45 -0
  72. package/artifacts/contracts/libs/v0.8.x/EnumerableSetUint16.sol/EnumerableSetUint16.json +10 -0
  73. package/artifacts/contracts/libs/v0.8.x/FeistelWalkLib.sol/FeistelWalkLib.json +10 -0
  74. package/artifacts/contracts/libs/v0.8.x/ImmutableUint16Array.sol/ImmutableUint16Array.json +10 -0
  75. package/artifacts/contracts/libs/v0.8.x/V3EngineLib.sol/V3EngineLib.json +163 -0
  76. package/artifacts/contracts/libs/v0.8.x/V3FlexLib.sol/V3FlexLib.json +2 -2
  77. package/artifacts/contracts/libs/v0.8.x/V3TransferHookLib.sol/V3TransferHookLib.json +79 -0
  78. package/artifacts/contracts/libs/v0.8.x/minter-libs/MaxInvocationsLib.sol/MaxInvocationsLib.json +2 -2
  79. package/artifacts/contracts/libs/v0.8.x/minter-libs/OnChainAllowlistLib.sol/OnChainAllowlistLib.json +10 -0
  80. package/artifacts/contracts/libs/v0.8.x/minter-libs/PolyptychLib.sol/PolyptychLib.json +2 -2
  81. package/artifacts/contracts/libs/v0.8.x/minter-libs/RAMLib.sol/RAMLib.json +2 -2
  82. package/artifacts/contracts/libs/v0.8.x/minter-libs/SEALib.sol/SEALib.json +2 -2
  83. package/artifacts/contracts/libs/v0.8.x/minter-libs/SettlementExpLib.sol/SettlementExpLib.json +2 -2
  84. package/artifacts/contracts/libs/v0.8.x/minter-libs/SplitFundsLib.sol/SplitFundsLib.json +2 -2
  85. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV1.sol/MinterFilterV1.json +2 -2
  86. package/artifacts/contracts/minter-suite/MinterFilter/MinterFilterV2.sol/MinterFilterV2.json +2 -2
  87. package/artifacts/contracts/minter-suite/Minters/MinterDAExpHolderV5.sol/MinterDAExpHolderV5.json +2 -2
  88. package/artifacts/contracts/minter-suite/Minters/MinterDAExpSettlementV3.sol/MinterDAExpSettlementV3.json +2 -2
  89. package/artifacts/contracts/minter-suite/Minters/MinterDAExpV5.sol/MinterDAExpV5.json +2 -2
  90. package/artifacts/contracts/minter-suite/Minters/MinterDALinHolderV5.sol/MinterDALinHolderV5.json +2 -2
  91. package/artifacts/contracts/minter-suite/Minters/MinterDALinV5.sol/MinterDALinV5.json +2 -2
  92. package/artifacts/contracts/minter-suite/Minters/MinterMinPriceMerkleV0.sol/MinterMinPriceMerkleV0.json +2 -2
  93. package/artifacts/contracts/minter-suite/Minters/MinterMinPriceV0.sol/MinterMinPriceV0.json +2 -2
  94. package/artifacts/contracts/minter-suite/Minters/MinterRAMV0.sol/MinterRAMV0.json +2 -2
  95. package/artifacts/contracts/minter-suite/Minters/MinterSEAV1.sol/MinterSEAV1.json +2 -2
  96. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceERC20V5.sol/MinterSetPriceERC20V5.json +2 -2
  97. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceHolderV5.sol/MinterSetPriceHolderV5.json +2 -2
  98. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceMerkleV5.sol/MinterSetPriceMerkleV5.json +2 -2
  99. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceOnChainAllowV0.sol/MinterSetPriceOnChainAllowV0.json +522 -0
  100. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychERC20V5.sol/MinterSetPricePolyptychERC20V5.json +2 -2
  101. package/artifacts/contracts/minter-suite/Minters/MinterSetPricePolyptychV5.sol/MinterSetPricePolyptychV5.json +2 -2
  102. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceTieredAllowV1.sol/MinterSetPriceTieredAllowV1.json +715 -0
  103. package/artifacts/contracts/minter-suite/Minters/MinterSetPriceV5.sol/MinterSetPriceV5.json +2 -2
  104. package/artifacts/contracts/minter-suite/Minters/MinterSlidingScaleV0.sol/MinterSlidingScaleV0.json +431 -0
  105. package/artifacts/contracts/minter-suite/Minters/one-off/ClaimMinter.sol/ClaimMinter.json +502 -0
  106. package/artifacts/contracts/minter-suite/Minters/one-off/MinterSetPriceTieredOnChainAllowV0.sol/MinterSetPriceTieredOnChainAllowV0.json +673 -0
  107. package/artifacts/contracts/minter-suite/Minters/one-off/MinterSetPriceV5_SingleCore.sol/MinterSetPriceV5_SingleCore.json +2 -2
  108. package/artifacts/contracts/minter-suite/Minters/one-off/SeaDropXArtBlocksShim.sol/SeaDropXArtBlocksShim.json +6 -19
  109. package/artifacts/contracts/mock/BytecodeV2TextCR_DMock.sol/BytecodeV2TextCR_DMock.json +2 -2
  110. package/artifacts/contracts/mock/DummySharedMinter.sol/DummySharedMinter.json +2 -2
  111. package/artifacts/contracts/mock/ENSLibMock.sol/ENSLibMock.json +30 -0
  112. package/artifacts/contracts/mock/EnumerableSetUint16Mock.sol/EnumerableSetUint16Mock.json +146 -0
  113. package/artifacts/contracts/mock/FeistelWalkLibMock.sol/FeistelWalkLibMock.json +142 -0
  114. package/artifacts/contracts/mock/ForceSendMock.sol/ForceSendMock.json +2 -2
  115. package/artifacts/contracts/mock/GenArt721CoreV3_Engine_IncorrectCoreType.sol/GenArt721CoreV3_Engine_IncorrectCoreType.json +2 -2
  116. package/artifacts/contracts/mock/ImmutableUint16ArrayMock.sol/ImmutableUint16ArrayMock.json +89 -0
  117. package/artifacts/contracts/mock/MockAdminACLV0_PROHIBITION.sol/MockAdminACLV0Events_PROHIBITION.json +2 -2
  118. package/artifacts/contracts/mock/MockGenArt721V3Core.sol/MockGenArt721V3Core.json +490 -0
  119. package/artifacts/contracts/mock/MockPMP.sol/MockPMP.json +523 -0
  120. package/artifacts/contracts/mock/MockTransferHook.sol/MockTransferHook.json +453 -0
  121. package/artifacts/contracts/mock/MockTransferHookTestHelpers.sol/MockBatchTransferrer.json +39 -0
  122. package/artifacts/contracts/mock/MockTransferHookTestHelpers.sol/MockForwardingERC721Receiver.json +71 -0
  123. package/artifacts/contracts/mock/MockTransferHookTestHelpers.sol/MockSpoofingCore.json +94 -0
  124. package/artifacts/contracts/mock/RandomizerV2_NoAssignMock.sol/RandomizerV2_NoAssignMock.json +2 -2
  125. package/artifacts/contracts/mock/ReentrancyBatchMockShared.sol/IBatchMinter.json +64 -0
  126. package/artifacts/contracts/mock/ReentrancyBatchMockShared.sol/ReentrancyBatchMockShared.json +113 -0
  127. package/artifacts/contracts/mock/RelayExecutorTestHelper.sol/MockTarget.json +74 -0
  128. package/artifacts/contracts/mock/RelayExecutorTestHelper.sol/RelayExecutorPartialRevertsTestHelper.json +138 -0
  129. package/artifacts/contracts/mock/RelayExecutorTestHelper.sol/RelayExecutorTestHelper.json +119 -0
  130. package/artifacts/contracts/randomizer/deprecated/PolyptychRandomizerV0.sol/BasicPolyptychRandomizerV0.json +2 -2
  131. package/artifacts/contracts/randomizer/deprecated/RandomizerV2.sol/BasicRandomizerV2.json +2 -2
  132. package/artifacts/contracts/randomizer/shared/SharedRandomizerV0.sol/SharedRandomizerV0.json +2 -2
  133. package/artifacts/contracts/relay/RelayExecutor.sol/RelayExecutor.json +101 -0
  134. package/artifacts/contracts/relay/RelayExecutorPartialReverts.sol/RelayExecutorPartialReverts.json +120 -0
  135. package/artifacts/contracts/royalty-registry/GenArt721RoyaltyOverrideSplits.sol/GenArt721RoyaltyOverrideSplits.json +263 -0
  136. package/artifacts/contracts/utils/MintMulticallUtil.sol/IMinterSetPriceV5.json +40 -0
  137. package/artifacts/contracts/utils/MintMulticallUtil.sol/MintMulticallUtil.json +163 -0
  138. package/artifacts/contracts/web3call/PMPV0.sol/PMPV0.json +2 -2
  139. package/artifacts/contracts/web3call/PMPV1.sol/PMPV1.json +648 -0
  140. package/artifacts/contracts/web3call/augment-hooks/InjectBaseGasFee.sol/InjectBaseGasFee.json +2 -2
  141. package/artifacts/contracts/web3call/augment-hooks/InjectBlockHeight.sol/InjectBlockHeight.json +83 -0
  142. package/artifacts/contracts/web3call/augment-hooks/InjectBlockHeightAndArtistProjectOverrides.sol/InjectBlockHeightAndArtistProjectOverrides.json +226 -0
  143. package/artifacts/contracts/web3call/augment-hooks/InjectBlockHeightAndNumOwnedProjectTokens.sol/InjectBlockHeightAndNumOwnedProjectTokens.json +182 -0
  144. package/artifacts/contracts/web3call/augment-hooks/InjectBlockHeightProjectInvocationsAndArtistProjectOverrides.sol/InjectBlockHeightProjectInvocationsAndArtistProjectOverrides.json +226 -0
  145. package/artifacts/contracts/web3call/augment-hooks/InjectBlockTimestamp.sol/InjectBlockTimestamp.json +83 -0
  146. package/artifacts/contracts/web3call/augment-hooks/InjectBytesPerToken.sol/InjectBytesPerToken.json +358 -0
  147. package/artifacts/contracts/web3call/augment-hooks/InjectChromieSquiggleFloorPrice.sol/InjectChromieSquiggleFloorPrice.json +2 -2
  148. package/artifacts/contracts/web3call/augment-hooks/InjectIsNounsDaoMember.sol/InjectIsNounsDaoMember.json +2 -2
  149. package/artifacts/contracts/web3call/augment-hooks/InjectIsProjectFullyMinted.sol/InjectIsProjectFullyMinted.json +2 -2
  150. package/artifacts/contracts/web3call/augment-hooks/InjectPolyptychTokenHash.sol/InjectPolyptychTokenHash.json +2 -2
  151. package/artifacts/contracts/web3call/augment-hooks/InjectTokenHashSeed.sol/InjectTokenHashSeed.json +2 -2
  152. package/artifacts/contracts/web3call/augment-hooks/InjectTokenOwner.sol/InjectTokenOwner.json +2 -2
  153. package/artifacts/contracts/web3call/augment-hooks/InjectTokenOwnerEthBalance.sol/InjectTokenOwnerEthBalance.json +2 -2
  154. package/artifacts/contracts/web3call/augment-hooks/InjectUSDCTotalSupply.sol/InjectUSDCTotalSupply.json +2 -2
  155. package/artifacts/contracts/web3call/augment-hooks/SRHooks.sol/SRHooks.json +899 -0
  156. package/artifacts/contracts/web3call/combined-hooks/LiftHooks.sol/IGenArt721V0_Minimal.json +30 -0
  157. package/artifacts/contracts/web3call/combined-hooks/LiftHooks.sol/IRelic.json +35 -0
  158. package/artifacts/contracts/web3call/combined-hooks/LiftHooks.sol/LiftHooks.json +256 -0
  159. package/artifacts/contracts/web3call/configure-hooks/{abstractPMPConfigureHook.sol → AbstractPMPConfigureHook.sol}/AbstractPMPConfigureHook.json +1 -1
  160. package/artifacts/contracts/web3call/configure-hooks/PMPConfigureLockHook.sol/PMPConfigureLockHook.json +195 -0
  161. package/contracts/AdminACLV0RoyaltyRegistry.sol +142 -0
  162. package/contracts/DependencyRegistryV0.sol +143 -13
  163. package/contracts/GenArt721CoreV3_Curated.sol +1 -1
  164. package/contracts/GenArt721CoreV3_Curated_Flex.sol +173 -0
  165. package/contracts/GenArt721CoreV3_Explorations_Flex.sol +159 -0
  166. package/contracts/engine/V3/EngineFactoryV0.sol +20 -1
  167. package/contracts/engine/V3/GenArt721CoreV3_Engine.sol +286 -299
  168. package/contracts/engine/V3/GenArt721CoreV3_Engine_Flex.sol +292 -301
  169. package/contracts/engine/V3/transfer-hooks/AbstractTransferHook.sol +101 -0
  170. package/contracts/engine/V3/transfer-hooks/OwnerHistoryTransferHook.sol +291 -0
  171. package/contracts/generator/GenArt721GeneratorV0.sol +145 -47
  172. package/contracts/helpers/ERC1967ProxyImport.sol +5 -0
  173. package/contracts/interfaces/v0.8.x/IArtblocksRoyaltyOverride.sol +1 -1
  174. package/contracts/interfaces/v0.8.x/IClaimMinter.sol +70 -0
  175. package/contracts/interfaces/v0.8.x/IDependencyRegistryV0.sol +95 -0
  176. package/contracts/interfaces/v0.8.x/IEngineFactoryV0.sol +15 -0
  177. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Base.sol +21 -2
  178. package/contracts/interfaces/v0.8.x/IGenArt721CoreContractV3_Engine.sol +72 -0
  179. package/contracts/interfaces/v0.8.x/IOwnerHistoryTransferHook.sol +119 -0
  180. package/contracts/interfaces/v0.8.x/ISRHooks.sol +229 -0
  181. package/contracts/interfaces/v0.8.x/ISeaDropShimForContract.sol +0 -6
  182. package/contracts/interfaces/v0.8.x/ISharedMinterTieredAllowV0.sol +69 -0
  183. package/contracts/interfaces/v0.8.x/ITransferHook.sol +48 -0
  184. package/contracts/libs/v0.8.x/DependencyRegistryStorageLib.sol +12 -0
  185. package/contracts/libs/v0.8.x/ENSLib.sol +85 -0
  186. package/contracts/libs/v0.8.x/EnumerableSetUint16.sol +429 -0
  187. package/contracts/libs/v0.8.x/FeistelWalkLib.sol +221 -0
  188. package/contracts/libs/v0.8.x/ImmutableUint16Array.sol +201 -0
  189. package/contracts/libs/v0.8.x/V3EngineLib.sol +490 -0
  190. package/contracts/libs/v0.8.x/V3TransferHookLib.sol +251 -0
  191. package/contracts/libs/v0.8.x/minter-libs/OnChainAllowlistLib.sol +165 -0
  192. package/contracts/minter-suite/Minters/MinterSetPriceOnChainAllowV0.sol +632 -0
  193. package/contracts/minter-suite/Minters/MinterSetPriceTieredAllowV1.sol +871 -0
  194. package/contracts/minter-suite/Minters/MinterSlidingScaleV0.sol +493 -0
  195. package/contracts/minter-suite/Minters/one-off/ClaimMinter.sol +595 -0
  196. package/contracts/minter-suite/Minters/one-off/MinterSetPriceTieredOnChainAllowV0.sol +894 -0
  197. package/contracts/minter-suite/Minters/one-off/SeaDropXArtBlocksShim.sol +59 -41
  198. package/contracts/mock/ENSLibMock.sol +25 -0
  199. package/contracts/mock/EnumerableSetUint16Mock.sol +88 -0
  200. package/contracts/mock/FeistelWalkLibMock.sol +81 -0
  201. package/contracts/mock/ImmutableUint16ArrayMock.sol +62 -0
  202. package/contracts/mock/MockGenArt721V3Core.sol +416 -0
  203. package/contracts/mock/MockPMP.sol +287 -0
  204. package/contracts/mock/MockTransferHook.sol +160 -0
  205. package/contracts/mock/MockTransferHookTestHelpers.sol +96 -0
  206. package/contracts/mock/ReentrancyBatchMockShared.sol +53 -0
  207. package/contracts/mock/RelayExecutorTestHelper.sol +44 -0
  208. package/contracts/relay/RelayExecutor.sol +61 -0
  209. package/contracts/relay/RelayExecutorPartialReverts.sol +79 -0
  210. package/contracts/royalty-registry/GenArt721RoyaltyOverrideSplits.sol +130 -0
  211. package/contracts/utils/MintMulticallUtil.sol +103 -0
  212. package/contracts/web3call/PMPV1.sol +1204 -0
  213. package/contracts/web3call/augment-hooks/AbstractPMPAugmentHook.sol +1 -1
  214. package/contracts/web3call/augment-hooks/InjectBaseGasFee.sol +1 -1
  215. package/contracts/web3call/augment-hooks/InjectBlockHeight.sol +57 -0
  216. package/contracts/web3call/augment-hooks/InjectBlockHeightAndArtistProjectOverrides.sol +310 -0
  217. package/contracts/web3call/augment-hooks/InjectBlockHeightAndNumOwnedProjectTokens.sol +141 -0
  218. package/contracts/web3call/augment-hooks/InjectBlockHeightProjectInvocationsAndArtistProjectOverrides.sol +326 -0
  219. package/contracts/web3call/augment-hooks/InjectBlockTimestamp.sol +57 -0
  220. package/contracts/web3call/augment-hooks/InjectBytesPerToken.sol +279 -0
  221. package/contracts/web3call/augment-hooks/InjectIsProjectFullyMinted.sol +1 -1
  222. package/contracts/web3call/augment-hooks/InjectTokenHashSeed.sol +1 -1
  223. package/contracts/web3call/augment-hooks/InjectTokenOwner.sol +1 -1
  224. package/contracts/web3call/augment-hooks/InjectTokenOwnerEthBalance.sol +1 -1
  225. package/contracts/web3call/augment-hooks/SRHooks.sol +1722 -0
  226. package/contracts/web3call/combined-hooks/LiftHooks.sol +304 -0
  227. package/contracts/web3call/configure-hooks/{abstractPMPConfigureHook.sol → AbstractPMPConfigureHook.sol} +1 -1
  228. package/contracts/web3call/configure-hooks/PMPConfigureLockHook.sol +107 -0
  229. package/package.json +39 -24
@@ -0,0 +1,648 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "PMPV1",
4
+ "sourceName": "contracts/web3call/PMPV1.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "contract IDelegateRegistry",
10
+ "name": "delegateRegistry_",
11
+ "type": "address"
12
+ }
13
+ ],
14
+ "stateMutability": "nonpayable",
15
+ "type": "constructor"
16
+ },
17
+ {
18
+ "inputs": [],
19
+ "name": "ReentrancyGuardReentrantCall",
20
+ "type": "error"
21
+ },
22
+ {
23
+ "anonymous": false,
24
+ "inputs": [
25
+ {
26
+ "indexed": false,
27
+ "internalType": "address",
28
+ "name": "delegationRegistry",
29
+ "type": "address"
30
+ }
31
+ ],
32
+ "name": "DelegationRegistryUpdated",
33
+ "type": "event"
34
+ },
35
+ {
36
+ "anonymous": false,
37
+ "inputs": [
38
+ {
39
+ "indexed": false,
40
+ "internalType": "address",
41
+ "name": "coreContract",
42
+ "type": "address"
43
+ },
44
+ {
45
+ "indexed": false,
46
+ "internalType": "uint256",
47
+ "name": "projectId",
48
+ "type": "uint256"
49
+ },
50
+ {
51
+ "components": [
52
+ {
53
+ "internalType": "string",
54
+ "name": "key",
55
+ "type": "string"
56
+ },
57
+ {
58
+ "components": [
59
+ {
60
+ "internalType": "enum IPMPV0.AuthOption",
61
+ "name": "authOption",
62
+ "type": "uint8"
63
+ },
64
+ {
65
+ "internalType": "enum IPMPV0.ParamType",
66
+ "name": "paramType",
67
+ "type": "uint8"
68
+ },
69
+ {
70
+ "internalType": "uint48",
71
+ "name": "pmpLockedAfterTimestamp",
72
+ "type": "uint48"
73
+ },
74
+ {
75
+ "internalType": "address",
76
+ "name": "authAddress",
77
+ "type": "address"
78
+ },
79
+ {
80
+ "internalType": "string[]",
81
+ "name": "selectOptions",
82
+ "type": "string[]"
83
+ },
84
+ {
85
+ "internalType": "bytes32",
86
+ "name": "minRange",
87
+ "type": "bytes32"
88
+ },
89
+ {
90
+ "internalType": "bytes32",
91
+ "name": "maxRange",
92
+ "type": "bytes32"
93
+ }
94
+ ],
95
+ "internalType": "struct IPMPV0.PMPConfig",
96
+ "name": "pmpConfig",
97
+ "type": "tuple"
98
+ }
99
+ ],
100
+ "indexed": false,
101
+ "internalType": "struct IPMPV0.PMPInputConfig[]",
102
+ "name": "pmpInputConfigs",
103
+ "type": "tuple[]"
104
+ },
105
+ {
106
+ "indexed": false,
107
+ "internalType": "uint8",
108
+ "name": "projectConfigNonce",
109
+ "type": "uint8"
110
+ }
111
+ ],
112
+ "name": "ProjectConfigured",
113
+ "type": "event"
114
+ },
115
+ {
116
+ "anonymous": false,
117
+ "inputs": [
118
+ {
119
+ "indexed": false,
120
+ "internalType": "address",
121
+ "name": "coreContract",
122
+ "type": "address"
123
+ },
124
+ {
125
+ "indexed": false,
126
+ "internalType": "uint256",
127
+ "name": "projectId",
128
+ "type": "uint256"
129
+ },
130
+ {
131
+ "indexed": false,
132
+ "internalType": "contract IPMPConfigureHook",
133
+ "name": "tokenPMPPostConfigHook",
134
+ "type": "address"
135
+ },
136
+ {
137
+ "indexed": false,
138
+ "internalType": "contract IPMPAugmentHook",
139
+ "name": "tokenPMPReadAugmentationHook",
140
+ "type": "address"
141
+ }
142
+ ],
143
+ "name": "ProjectHooksConfigured",
144
+ "type": "event"
145
+ },
146
+ {
147
+ "anonymous": false,
148
+ "inputs": [
149
+ {
150
+ "indexed": false,
151
+ "internalType": "address",
152
+ "name": "coreContract",
153
+ "type": "address"
154
+ },
155
+ {
156
+ "indexed": false,
157
+ "internalType": "uint256",
158
+ "name": "tokenId",
159
+ "type": "uint256"
160
+ },
161
+ {
162
+ "components": [
163
+ {
164
+ "internalType": "string",
165
+ "name": "key",
166
+ "type": "string"
167
+ },
168
+ {
169
+ "internalType": "enum IPMPV0.ParamType",
170
+ "name": "configuredParamType",
171
+ "type": "uint8"
172
+ },
173
+ {
174
+ "internalType": "bytes32",
175
+ "name": "configuredValue",
176
+ "type": "bytes32"
177
+ },
178
+ {
179
+ "internalType": "bool",
180
+ "name": "configuringArtistString",
181
+ "type": "bool"
182
+ },
183
+ {
184
+ "internalType": "string",
185
+ "name": "configuredValueString",
186
+ "type": "string"
187
+ }
188
+ ],
189
+ "indexed": false,
190
+ "internalType": "struct IPMPV0.PMPInput[]",
191
+ "name": "pmpInputs",
192
+ "type": "tuple[]"
193
+ },
194
+ {
195
+ "indexed": false,
196
+ "internalType": "address[]",
197
+ "name": "authAddresses",
198
+ "type": "address[]"
199
+ }
200
+ ],
201
+ "name": "TokenParamsConfigured",
202
+ "type": "event"
203
+ },
204
+ {
205
+ "inputs": [],
206
+ "name": "DELEGATION_REGISTRY_TOKEN_OWNER_RIGHTS",
207
+ "outputs": [
208
+ {
209
+ "internalType": "bytes32",
210
+ "name": "",
211
+ "type": "bytes32"
212
+ }
213
+ ],
214
+ "stateMutability": "view",
215
+ "type": "function"
216
+ },
217
+ {
218
+ "inputs": [
219
+ {
220
+ "internalType": "address",
221
+ "name": "coreContract",
222
+ "type": "address"
223
+ },
224
+ {
225
+ "internalType": "uint256",
226
+ "name": "projectId",
227
+ "type": "uint256"
228
+ },
229
+ {
230
+ "components": [
231
+ {
232
+ "internalType": "string",
233
+ "name": "key",
234
+ "type": "string"
235
+ },
236
+ {
237
+ "components": [
238
+ {
239
+ "internalType": "enum IPMPV0.AuthOption",
240
+ "name": "authOption",
241
+ "type": "uint8"
242
+ },
243
+ {
244
+ "internalType": "enum IPMPV0.ParamType",
245
+ "name": "paramType",
246
+ "type": "uint8"
247
+ },
248
+ {
249
+ "internalType": "uint48",
250
+ "name": "pmpLockedAfterTimestamp",
251
+ "type": "uint48"
252
+ },
253
+ {
254
+ "internalType": "address",
255
+ "name": "authAddress",
256
+ "type": "address"
257
+ },
258
+ {
259
+ "internalType": "string[]",
260
+ "name": "selectOptions",
261
+ "type": "string[]"
262
+ },
263
+ {
264
+ "internalType": "bytes32",
265
+ "name": "minRange",
266
+ "type": "bytes32"
267
+ },
268
+ {
269
+ "internalType": "bytes32",
270
+ "name": "maxRange",
271
+ "type": "bytes32"
272
+ }
273
+ ],
274
+ "internalType": "struct IPMPV0.PMPConfig",
275
+ "name": "pmpConfig",
276
+ "type": "tuple"
277
+ }
278
+ ],
279
+ "internalType": "struct IPMPV0.PMPInputConfig[]",
280
+ "name": "pmpInputConfigs",
281
+ "type": "tuple[]"
282
+ }
283
+ ],
284
+ "name": "configureProject",
285
+ "outputs": [],
286
+ "stateMutability": "nonpayable",
287
+ "type": "function"
288
+ },
289
+ {
290
+ "inputs": [
291
+ {
292
+ "internalType": "address",
293
+ "name": "coreContract",
294
+ "type": "address"
295
+ },
296
+ {
297
+ "internalType": "uint256",
298
+ "name": "projectId",
299
+ "type": "uint256"
300
+ },
301
+ {
302
+ "internalType": "contract IPMPConfigureHook",
303
+ "name": "tokenPMPPostConfigHook",
304
+ "type": "address"
305
+ },
306
+ {
307
+ "internalType": "contract IPMPAugmentHook",
308
+ "name": "tokenPMPReadAugmentationHook",
309
+ "type": "address"
310
+ }
311
+ ],
312
+ "name": "configureProjectHooks",
313
+ "outputs": [],
314
+ "stateMutability": "nonpayable",
315
+ "type": "function"
316
+ },
317
+ {
318
+ "inputs": [
319
+ {
320
+ "internalType": "address",
321
+ "name": "coreContract",
322
+ "type": "address"
323
+ },
324
+ {
325
+ "internalType": "uint256",
326
+ "name": "tokenId",
327
+ "type": "uint256"
328
+ },
329
+ {
330
+ "components": [
331
+ {
332
+ "internalType": "string",
333
+ "name": "key",
334
+ "type": "string"
335
+ },
336
+ {
337
+ "internalType": "enum IPMPV0.ParamType",
338
+ "name": "configuredParamType",
339
+ "type": "uint8"
340
+ },
341
+ {
342
+ "internalType": "bytes32",
343
+ "name": "configuredValue",
344
+ "type": "bytes32"
345
+ },
346
+ {
347
+ "internalType": "bool",
348
+ "name": "configuringArtistString",
349
+ "type": "bool"
350
+ },
351
+ {
352
+ "internalType": "string",
353
+ "name": "configuredValueString",
354
+ "type": "string"
355
+ }
356
+ ],
357
+ "internalType": "struct IPMPV0.PMPInput[]",
358
+ "name": "pmpInputs",
359
+ "type": "tuple[]"
360
+ }
361
+ ],
362
+ "name": "configureTokenParams",
363
+ "outputs": [],
364
+ "stateMutability": "nonpayable",
365
+ "type": "function"
366
+ },
367
+ {
368
+ "inputs": [],
369
+ "name": "delegateRegistry",
370
+ "outputs": [
371
+ {
372
+ "internalType": "contract IDelegateRegistry",
373
+ "name": "",
374
+ "type": "address"
375
+ }
376
+ ],
377
+ "stateMutability": "view",
378
+ "type": "function"
379
+ },
380
+ {
381
+ "inputs": [
382
+ {
383
+ "internalType": "address",
384
+ "name": "coreContract",
385
+ "type": "address"
386
+ },
387
+ {
388
+ "internalType": "uint256",
389
+ "name": "projectId",
390
+ "type": "uint256"
391
+ }
392
+ ],
393
+ "name": "getProjectConfig",
394
+ "outputs": [
395
+ {
396
+ "internalType": "string[]",
397
+ "name": "pmpKeys",
398
+ "type": "string[]"
399
+ },
400
+ {
401
+ "internalType": "uint8",
402
+ "name": "configNonce",
403
+ "type": "uint8"
404
+ },
405
+ {
406
+ "internalType": "contract IPMPConfigureHook",
407
+ "name": "tokenPMPPostConfigHook",
408
+ "type": "address"
409
+ },
410
+ {
411
+ "internalType": "contract IPMPAugmentHook",
412
+ "name": "tokenPMPReadAugmentationHook",
413
+ "type": "address"
414
+ }
415
+ ],
416
+ "stateMutability": "view",
417
+ "type": "function"
418
+ },
419
+ {
420
+ "inputs": [
421
+ {
422
+ "internalType": "address",
423
+ "name": "coreContract",
424
+ "type": "address"
425
+ },
426
+ {
427
+ "internalType": "uint256",
428
+ "name": "projectId",
429
+ "type": "uint256"
430
+ },
431
+ {
432
+ "internalType": "string",
433
+ "name": "pmpKey",
434
+ "type": "string"
435
+ }
436
+ ],
437
+ "name": "getProjectPMPConfig",
438
+ "outputs": [
439
+ {
440
+ "components": [
441
+ {
442
+ "internalType": "uint8",
443
+ "name": "highestConfigNonce",
444
+ "type": "uint8"
445
+ },
446
+ {
447
+ "internalType": "enum IPMPV0.AuthOption",
448
+ "name": "authOption",
449
+ "type": "uint8"
450
+ },
451
+ {
452
+ "internalType": "enum IPMPV0.ParamType",
453
+ "name": "paramType",
454
+ "type": "uint8"
455
+ },
456
+ {
457
+ "internalType": "uint48",
458
+ "name": "pmpLockedAfterTimestamp",
459
+ "type": "uint48"
460
+ },
461
+ {
462
+ "internalType": "address",
463
+ "name": "authAddress",
464
+ "type": "address"
465
+ },
466
+ {
467
+ "internalType": "uint8",
468
+ "name": "selectOptionsLength",
469
+ "type": "uint8"
470
+ },
471
+ {
472
+ "internalType": "string[]",
473
+ "name": "selectOptions",
474
+ "type": "string[]"
475
+ },
476
+ {
477
+ "internalType": "bytes32",
478
+ "name": "minRange",
479
+ "type": "bytes32"
480
+ },
481
+ {
482
+ "internalType": "bytes32",
483
+ "name": "maxRange",
484
+ "type": "bytes32"
485
+ }
486
+ ],
487
+ "internalType": "struct IPMPV0.PMPConfigView",
488
+ "name": "pmpConfigView",
489
+ "type": "tuple"
490
+ }
491
+ ],
492
+ "stateMutability": "view",
493
+ "type": "function"
494
+ },
495
+ {
496
+ "inputs": [
497
+ {
498
+ "internalType": "address",
499
+ "name": "coreContract",
500
+ "type": "address"
501
+ },
502
+ {
503
+ "internalType": "uint256",
504
+ "name": "tokenId",
505
+ "type": "uint256"
506
+ },
507
+ {
508
+ "internalType": "string",
509
+ "name": "pmpKey",
510
+ "type": "string"
511
+ }
512
+ ],
513
+ "name": "getTokenPMPStorage",
514
+ "outputs": [
515
+ {
516
+ "components": [
517
+ {
518
+ "internalType": "enum IPMPV0.ParamType",
519
+ "name": "configuredParamType",
520
+ "type": "uint8"
521
+ },
522
+ {
523
+ "internalType": "bytes32",
524
+ "name": "configuredValue",
525
+ "type": "bytes32"
526
+ },
527
+ {
528
+ "internalType": "string",
529
+ "name": "artistConfiguredValueString",
530
+ "type": "string"
531
+ },
532
+ {
533
+ "internalType": "string",
534
+ "name": "nonArtistConfiguredValueString",
535
+ "type": "string"
536
+ }
537
+ ],
538
+ "internalType": "struct IPMPV0.PMPStorage",
539
+ "name": "pmp",
540
+ "type": "tuple"
541
+ }
542
+ ],
543
+ "stateMutability": "view",
544
+ "type": "function"
545
+ },
546
+ {
547
+ "inputs": [
548
+ {
549
+ "internalType": "address",
550
+ "name": "coreContract",
551
+ "type": "address"
552
+ },
553
+ {
554
+ "internalType": "uint256",
555
+ "name": "tokenId",
556
+ "type": "uint256"
557
+ }
558
+ ],
559
+ "name": "getTokenParams",
560
+ "outputs": [
561
+ {
562
+ "components": [
563
+ {
564
+ "internalType": "string",
565
+ "name": "key",
566
+ "type": "string"
567
+ },
568
+ {
569
+ "internalType": "string",
570
+ "name": "value",
571
+ "type": "string"
572
+ }
573
+ ],
574
+ "internalType": "struct IWeb3Call.TokenParam[]",
575
+ "name": "tokenParams",
576
+ "type": "tuple[]"
577
+ }
578
+ ],
579
+ "stateMutability": "view",
580
+ "type": "function"
581
+ },
582
+ {
583
+ "inputs": [
584
+ {
585
+ "internalType": "address",
586
+ "name": "wallet",
587
+ "type": "address"
588
+ },
589
+ {
590
+ "internalType": "address",
591
+ "name": "coreContract",
592
+ "type": "address"
593
+ },
594
+ {
595
+ "internalType": "uint256",
596
+ "name": "tokenId",
597
+ "type": "uint256"
598
+ }
599
+ ],
600
+ "name": "isTokenOwnerOrDelegate",
601
+ "outputs": [
602
+ {
603
+ "internalType": "bool",
604
+ "name": "isTokenOwnerOrDelegate_",
605
+ "type": "bool"
606
+ }
607
+ ],
608
+ "stateMutability": "view",
609
+ "type": "function"
610
+ },
611
+ {
612
+ "inputs": [],
613
+ "name": "pmpType",
614
+ "outputs": [
615
+ {
616
+ "internalType": "string",
617
+ "name": "",
618
+ "type": "string"
619
+ }
620
+ ],
621
+ "stateMutability": "pure",
622
+ "type": "function"
623
+ },
624
+ {
625
+ "inputs": [
626
+ {
627
+ "internalType": "bytes4",
628
+ "name": "interfaceId",
629
+ "type": "bytes4"
630
+ }
631
+ ],
632
+ "name": "supportsInterface",
633
+ "outputs": [
634
+ {
635
+ "internalType": "bool",
636
+ "name": "",
637
+ "type": "bool"
638
+ }
639
+ ],
640
+ "stateMutability": "view",
641
+ "type": "function"
642
+ }
643
+ ],
644
+ "bytecode": "0x60a06040523480156200001157600080fd5b50604051620051d6380380620051d6833981016040819052620000349162000082565b60016000556001600160a01b03811660808190526040519081527f836360d1b094a7de3c3eab3d1185f3a5939467c23d4a12709dbdbf8c8d7e2f3b9060200160405180910390a150620000b4565b6000602082840312156200009557600080fd5b81516001600160a01b0381168114620000ad57600080fd5b9392505050565b608051615100620000d66000396000818160d60152612ef001526151006000f3fe608060405234801561001057600080fd5b50600436106100a45760003560e01c806301ffc9a7146100a957806313bfffac146100d157806316dba0f2146101105780633c303afb1461012557806354ca22371461013a5780636f8637a01461015d57806398a6e11814610170578063af544a611461019a578063b69c984d146101ad578063ba8dba48146101c0578063c2b4f411146101e0578063dc809b1a14610200575b600080fd5b6100bc6100b7366004613b93565b610220565b60405190151581526020015b60405180910390f35b6100f87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100c8565b610118610257565b6040516100c89190613c0d565b610138610133366004613c8c565b61026f565b005b61014d610148366004613ce7565b61079f565b6040516100c89493929190613d6d565b61013861016b366004613c8c565b610802565b61018c71706f73746d696e74706172616d657465727360701b81565b6040519081526020016100c8565b6100bc6101a8366004613da9565b610b20565b6101386101bb366004613dea565b610b36565b6101d36101ce366004613f4a565b610d2a565b6040516100c89190614029565b6101f36101ee366004613ce7565b610e92565b6040516100c8919061414a565b61021361020e366004613f4a565b6110b2565b6040516100c8919061415d565b60006001600160e01b0319821663c2b4f41160e01b148061025157506301ffc9a760e01b6001600160e01b03198316145b92915050565b606061026a64504d50563160d81b611288565b905090565b6102776112f3565b61028284843361131d565b806101008111156102d55760405162461bcd60e51b8152602060048201526018602482015277504d503a204f6e6c79203c3d2032353620636f6e6669677360401b60448201526064015b60405180910390fd5b60005b818110156103905760008484838181106102f4576102f46141ba565b905060200281019061030691906141d0565b61031090806141f0565b9150508015801590610323575061010081105b6103875760405162461bcd60e51b815260206004820152602f60248201527f504d503a20706d704b65792063616e6e6f7420626520656d707479206f72206560448201526e78636565642032353520627974657360881b60648201526084016102cc565b506001016102d8565b506001600160a01b0385166000908152600160208181526040808420888552909152822060028101549092916103c99160ff169061424c565b60028301805460ff191660ff831617905590506000836001600160401b038111156103f6576103f6613e3d565b60405190808252806020026020018201604052801561042957816020015b60608152602001906001900390816104145790505b50905060005b848110156104c057868682818110610449576104496141ba565b905060200281019061045b91906141d0565b61046590806141f0565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050845185925084915081106104ad576104ad6141ba565b602090810291909101015260010161042f565b506104cb81846113d9565b60005b8481101561074b5760008460010160006105008585815181106104f3576104f36141ba565b6020026020010151611471565b81526020810191909152604001600020805490915061052d906301000000900465ffffffffffff166114a1565b6105db5761056c81898985818110610547576105476141ba565b905060200281019061055991906141d0565b610567906020810190614265565b6114b1565b6105c95760405162461bcd60e51b815260206004820152602860248201527f504d503a20706d70206973206c6f636b656420616e642063616e6e6f74206265604482015267081d5c19185d195960c21b60648201526084016102cc565b805460ff191660ff8516179055610743565b6106158888848181106105f0576105f06141ba565b905060200281019061060291906141d0565b610610906020810190614265565b611657565b805460ff191660ff85161781556000888884818110610636576106366141ba565b905060200281019061064891906141d0565b610656906020810190614265565b61065f9061435c565b8051835491925090839061ff00191661010083600681111561068357610683613fa2565b021790555060208101518254839062ff00001916620100008360088111156106ad576106ad613fa2565b02179055506040810151825460608301516080840151805160ff16600160e81b0260ff60e81b196001600160a01b03909316600160481b02600160481b600160e81b031965ffffffffffff909616630100000002959095166301000000600160e81b031990941693909317939093171617835561072e906001840190611db6565b60a0810151600283015560c001516003909101555b6001016104ce565b507f935e8b8dc0c19500cc0d4c29698f1af13be297f62b71eda8dd0e1a0bc6927fca88888888866040516107839594939291906144be565b60405180910390a1505050506107996001600055565b50505050565b6001600160a01b0382166000908152600160209081526040808320848452909152812060609190819081906107d381612078565b6002820154600390920154909860ff831698506001600160a01b03610100909304831697509116945092505050565b61080a6112f3565b6001600160a01b03841660009081526001602052604081208161082c866122a2565b815260200190815260200160002090506000838390506001600160401b0381111561085957610859613e3d565b604051908082528060200260200182016040528015610882578160200160208202803683370190505b50905060005b83811015610ad45760006108fd8686848181106108a7576108a76141ba565b90506020028101906108b9919061465d565b6108c390806141f0565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061147192505050565b90506000868684818110610913576109136141ba565b9050602002810190610925919061465d565b61092e90614681565b6001600160a01b038a1660009081526002602081815260408084208d85528252808420878552825280842060018b01909252909220908801549293509091610980908b908d908690859060ff166122b1565b868681518110610992576109926141ba565b6001600160a01b039290921660209283029190910190910152805482546201000090910460ff1690839060ff191660018360088111156109d4576109d4613fa2565b02179055506008815462010000900460ff1660088111156109f7576109f7613fa2565b03610a3457826060015115610a205760808301516002830190610a1a90826147c1565b50610a3f565b60808301516003830190610a1a90826147c1565b604083015160018301555b600287015461010090046001600160a01b031615610ac457600287015460405163677e713560e01b81526101009091046001600160a01b03169063677e713590610a91908e908e908890600401614880565b600060405180830381600087803b158015610aab57600080fd5b505af1158015610abf573d6000803e3d6000fd5b505050505b5050600190920191506108889050565b507f3dfcd927ac9e2552184b368328e6cca04f875ef453930277d7dfa53f40dbeac48686868685604051610b0c95949392919061493c565b60405180910390a150506107996001600055565b6000610b2d828486612e14565b50949350505050565b610b3e6112f3565b610b4984843361131d565b6001600160a01b03821615610bdd57610b698263677e713560e01b612f65565b610bdd576040805162461bcd60e51b81526020600482015260248101919091527f504d503a20746f6b656e504d50506f7374436f6e666967486f6f6b20646f657360448201527f206e6f7420696d706c656d656e742049504d50436f6e666967757265486f6f6b60648201526084016102cc565b6001600160a01b03811615610c7d57610bfd816358f8699f60e01b612f65565b610c7d5760405162461bcd60e51b8152602060048201526044602482018190527f504d503a20746f6b656e504d50526561644175676d656e746174696f6e486f6f908201527f6b20646f6573206e6f7420696d706c656d656e742049504d504175676d656e74606482015263486f6f6b60e01b608482015260a4016102cc565b6001600160a01b038481166000818152600160209081526040808320888452825291829020600281018054610100600160a81b031916610100898816908102919091179091556003820180546001600160a01b031916968816968717905583519485529184018890529183015260608201929092527fd7a93580965b5dbb5c8a723af5a48167de5f41dc65e456be819bf739da05ce389060800160405180910390a1506107996001600055565b610d7960408051610120810190915260008082526020820190815260200160008152600060208201819052604082018190526060808301829052608083015260a0820181905260c09091015290565b6001600160a01b038416600090815260016020818152604080842087855290915282200181610da785611471565b8152602080820192909252604001600020805460ff8082168652919350918401916101009004166006811115610ddf57610ddf613fa2565b90816006811115610df257610df2613fa2565b9052508054604083019062010000900460ff166008811115610e1657610e16613fa2565b90816008811115610e2957610e29613fa2565b90525080546301000000810465ffffffffffff166060840152600160481b81046001600160a01b03166080840152600160e81b900460ff1660a0830152610e7260018201612078565b60c0830152600281015460e0830152600301546101008201529392505050565b60606000610e9f836122a2565b6001600160a01b03851660009081526001602090815260408083208484529091528120919250610ece82612078565b8051909150806001600160401b03811115610eeb57610eeb613e3d565b604051908082528060200260200182016040528015610f3057816020015b6040805180820190915260608082526020820152815260200190600190039081610f095790505b5094506000805b82811015611012576000610f568583815181106104f3576104f36141ba565b600081815260018801602090815260408083206001600160a01b038f168452600283528184208e85528352818420858552909252822092935090918291610f9c91612f88565b9150915081610fad5750505061100a565b6040518060400160405280888681518110610fca57610fca6141ba565b60200260200101518152602001828152508a8681518110610fed57610fed6141ba565b6020026020010181905250848061100390614a4a565b9550505050505b600101610f37565b5080865260038401546001600160a01b0316156110a75760038401546040516358f8699f60e01b81526001600160a01b03909116906358f8699f9061105f908b908b908b90600401614a63565b600060405180830381865afa15801561107c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110a49190810190614ad7565b95505b505050505092915050565b6110dc60408051608081019091528060008152600060208201526060604082018190529081015290565b6001600160a01b038416600090815260026020908152604080832086845290915281209061110984611471565b8152602081019190915260409081016000208151608081019092528054829060ff16600881111561113c5761113c613fa2565b600881111561114d5761114d613fa2565b81526020016001820154815260200160028201805461116b90614737565b80601f016020809104026020016040519081016040528092919081815260200182805461119790614737565b80156111e45780601f106111b9576101008083540402835291602001916111e4565b820191906000526020600020905b8154815290600101906020018083116111c757829003601f168201915b505050505081526020016003820180546111fd90614737565b80601f016020809104026020016040519081016040528092919081815260200182805461122990614737565b80156112765780601f1061124b57610100808354040283529160200191611276565b820191906000526020600020905b81548152906001019060200180831161125957829003601f168201915b50505050508152505090509392505050565b606060005b828160ff16602081106112a2576112a26141ba565b1a60f81b6001600160f81b031916158015906112c1575060208160ff16105b156112d857806112d081614be2565b91505061128d565b60405191506040820160405280825282602083015250919050565b60026000540361131657604051633ee5aeb560e01b815260040160405180910390fd5b6002600055565b60405163a47d29cb60e01b8152600481018390526001600160a01b03808316919085169063a47d29cb90602401602060405180830381865afa158015611367573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138b9190614c01565b6001600160a01b0316146113d45760405162461bcd60e51b815260206004820152601060248201526f1413540e881bdb9b1e48185c9d1a5cdd60821b60448201526064016102cc565b505050565b60006113e482612078565b9050600081518451146113f957506001611461565b60005b845181101561145f5761144a83828151811061141a5761141a6141ba565b6020026020010151868381518110611434576114346141ba565b60200260200101516133fb90919063ffffffff16565b611457576001915061145f565b6001016113fc565b505b8015610799576107998385611db6565b6000816040516020016114849190613c0d565b604051602081830303815290604052805190602001209050919050565b6000811580610251575050421090565b60006114c06020830183614c1e565b60068111156114d1576114d1613fa2565b8354610100900460ff1660068111156114ec576114ec613fa2565b14158061153457506115046040830160208401614c39565b600881111561151557611515613fa2565b835462010000900460ff16600881111561153157611531613fa2565b14155b80611562575061154a6060830160408401614c54565b83546301000000900465ffffffffffff908116911614155b8061159157506115786080830160608401614c6f565b8354600160481b90046001600160a01b03908116911614155b806115a457508160a00135836002015414155b806115b757508160c00135836003015414155b806115db57506115ca6080830183614c8c565b8454600160e81b900460ff16141590505b156115e857506000610251565b6115f56080830183614c8c565b604051602001611606929190614cd5565b6040516020818303038152906040528051906020012061162884600101612078565b6040516020016116389190614ce9565b6040516020818303038152906040528051906020012014905092915050565b60006116696040830160208401614c39565b9050600061167a6020840184614c1e565b9050600082600881111561169057611690613fa2565b036116dd5760405162461bcd60e51b815260206004820152601e60248201527f504d503a20706172616d5479706520697320756e636f6e66696775726564000060448201526064016102cc565b6116fd6116f06060850160408601614c54565b65ffffffffffff166114a1565b61177d5760405162461bcd60e51b8152602060048201526044602482018190527f504d503a20706d704c6f636b6564416674657254696d657374616d7020697320908201527f696e20746865207061737420616e64206e6f7420756e6c696d6974656420287a60648201526365726f2960e01b608482015260a4016102cc565b600681600681111561179157611791613fa2565b11156117d95760405162461bcd60e51b81526020600482015260176024820152762826a81d1024b73b30b634b21030baba3427b83a34b7b760491b60448201526064016102cc565b60088260088111156117ed576117ed613fa2565b111561180b5760405162461bcd60e51b81526004016102cc90614cfc565b600882600881111561181f5761181f613fa2565b036118f557600081600681111561183857611838613fa2565b14806118555750600381600681111561185357611853613fa2565b145b806118715750600681600681111561186f5761186f613fa2565b145b8061188d5750600481600681111561188b5761188b613fa2565b145b6118f55760405162461bcd60e51b815260206004820152603360248201527f504d503a20537472696e6720706172616d73206d75737420686176652061727460448201527234b9ba159030baba3432b73a34b1b0ba34b7b760691b60648201526084016102cc565b600281600681111561190957611909613fa2565b14806119265750600581600681111561192457611924613fa2565b145b806119425750600481600681111561194057611940613fa2565b145b8061195e5750600681600681111561195c5761195c613fa2565b145b156119cb5760006119756080850160608601614c6f565b6001600160a01b0316036119c65760405162461bcd60e51b8152602060048201526018602482015277504d503a206175746841646472657373206973207a65726f60401b60448201526064016102cc565b611a32565b60006119dd6080850160608601614c6f565b6001600160a01b031614611a325760405162461bcd60e51b815260206004820152601c60248201527b504d503a206175746841646472657373206973206e6f74207a65726f60201b60448201526064016102cc565b6002826008811115611a4657611a46613fa2565b1480611a6357506008826008811115611a6157611a61613fa2565b145b80611a7f57506006826008811115611a7d57611a7d613fa2565b145b15611b4e57611a916080840184614c8c565b159050611ab05760405162461bcd60e51b81526004016102cc90614d2c565b60a083013515611aff5760405162461bcd60e51b815260206004820152601a602482015279504d503a206d696e52616e6765206973206e6f7420656d70747960301b60448201526064016102cc565b60c0830135156113d45760405162461bcd60e51b815260206004820152601a602482015279504d503a206d617852616e6765206973206e6f7420656d70747960301b60448201526064016102cc565b6001826008811115611b6257611b62613fa2565b03611c22576000611b766080850185614c8c565b905011611bc35760405162461bcd60e51b815260206004820152601b60248201527a504d503a2073656c6563744f7074696f6e7320697320656d70747960281b60448201526064016102cc565b610100611bd36080850185614c8c565b905010611ab05760405162461bcd60e51b815260206004820152601f60248201527f504d503a2073656c6563744f7074696f6e73206c656e677468203e203235350060448201526064016102cc565b6003826008811115611c3657611c36613fa2565b1480611c5357506004826008811115611c5157611c51613fa2565b145b80611c6f57506005826008811115611c6d57611c6d613fa2565b145b80611c8b57506007826008811115611c8957611c89613fa2565b145b15611d9e57611c9d6080840184614c8c565b159050611cbc5760405162461bcd60e51b81526004016102cc90614d2c565b6004826008811115611cd057611cd0613fa2565b03611d055760a083013560c0840135808212611cfe5760405162461bcd60e51b81526004016102cc90614d63565b5050505050565b60a083013560c0840135808210611d2e5760405162461bcd60e51b81526004016102cc90614d63565b6007846008811115611d4257611d42613fa2565b03611cfe576001600160401b03811115611cfe5760405162461bcd60e51b815260206004820152601e60248201527f504d503a206d617852616e6765203e205f54494d455354414d505f4d4158000060448201526064016102cc565b60405162461bcd60e51b81526004016102cc90614cfc565b80516000819003611dd357505080546001600160a01b0319169055565b6000816001600160401b03811115611ded57611ded613e3d565b604051908082528060200260200182016040528015611e16578160200160208202803683370190505b5090506000805b83811015611e885781838281518110611e3857611e386141ba565b60200260200101906001600160401b031690816001600160401b031681525050848181518110611e6a57611e6a6141ba565b60200260200101515182611e7e9190614d96565b9150600101611e1d565b506001600160401b03811115611ede5760405162461bcd60e51b815260206004820152601b60248201527a13d9999cd95d08195e18d959591cc81d5a5b9d0d8d081b1a5b5a5d602a1b60448201526064016102cc565b600081611eec856008614da9565b611ef7906008614d96565b611f019190614d96565b90506000611f10826020614d96565b6001600160401b03811115611f2757611f27613e3d565b6040519080825280601f01601f191660200182016040528015611f51576020820181803683370190505b5060c086901b602082015290506028810160005b86811015611faa576000868281518110611f8157611f816141ba565b602090810291909101015160c01b6001600160c01b031916835250600890910190600101611f65565b5060005b86811015612044576000888281518110611fca57611fca6141ba565b6020026020010151905060008151905060006020830190506000602083611ff19190614dd6565b90506000612000602085614dea565b905060005b82811015612023578351885260209788019790930192600101612005565b5080156120335782518752958601955b505060019093019250611fae915050565b50508181528061205381613420565b88546001600160a01b0319166001600160a01b03919091161790975550505050505050565b80546060906001600160a01b03166120bc5760408051600080825260208201909252906120b5565b60608152602001906001900390816120a05790505b5092915050565b81546000906120d3906001600160a01b03166134c5565b602081015190915060c01c806001600160401b038111156120f6576120f6613e3d565b60405190808252806020026020018201604052801561212957816020015b60608152602001906001900390816121145790505b50925060005b8181101561229a576000808084612147856001614d96565b03612175576000865190506028870193506008850284015160c01c9250600886026008018103915050612197565b6028860192506008840283015160c01c91506008600185010283015160c01c90505b60006121a38383614dfe565b6001600160401b0316905060006121bb826020614d96565b6001600160401b038111156121d2576121d2613e3d565b6040519080825280601f01601f1916602001820160405280156121fc576020820181803683370190505b5090506020810160005b83811015612262576000816001600160401b0388166122268c6008614da9565b612231906028614d96565b61223b9190614d96565b6122459190614d96565b8b015183525060209182019161225b9082614d96565b9050612206565b50819050828152818a888151811061227c5761227c6141ba565b6020026020010181905250505050505050808060010191505061212f565b505050919050565b6000610251620f424083614dd6565b815460009060ff83811691161461232d5760405162461bcd60e51b815260206004820152603a60248201527f504d503a20706172616d206e6f742070617274206f66206d6f737420726563656044820152796e746c7920636f6e6669677572656420504d5020706172616d7360301b60648201526084016102cc565b8254612347906301000000900465ffffffffffff166114a1565b61238a5760405162461bcd60e51b81526020600482015260146024820152731413540e881c185c985b481a5cc81b1bd8dad95960621b60448201526064016102cc565b825462010000900460ff1660088111156123a6576123a6613fa2565b846020015160088111156123bc576123bc613fa2565b146124035760405162461bcd60e51b81526020600482015260176024820152760a09aa07440e0c2e4c2daa8f2e0ca40dad2e6dac2e8c6d604b1b60448201526064016102cc565b60008460200151600881111561241b5761241b613fa2565b036124745760405162461bcd60e51b8152602060048201526024808201527f504d503a20696e70757420706172616d5479706520697320756e636f6e6669676044820152631d5c995960e21b60648201526084016102cc565b8254600090610100900460ff168181600681111561249457612494613fa2565b14806124b1575060048160068111156124af576124af613fa2565b145b806124cd575060038160068111156124cb576124cb613fa2565b145b806124e9575060068160068111156124e7576124e7613fa2565b145b156125015760006124fb8989336134e6565b94509250505b811580156125735750600281600681111561251e5761251e613fa2565b148061253b5750600581600681111561253957612539613fa2565b145b806125575750600481600681111561255557612555613fa2565b145b806125735750600681600681111561257157612571613fa2565b145b15612592578454600160481b90046001600160a01b0316925033831491505b81158015612604575060018160068111156125af576125af613fa2565b14806125cc575060038160068111156125ca576125ca613fa2565b145b806125e8575060058160068111156125e6576125e6613fa2565b145b806126045750600681600681111561260257612602613fa2565b145b1561261c576000612616898933612e14565b94509250505b508061295f578354610100900460ff16600081600681111561264057612640613fa2565b036126895760405162461bcd60e51b81526020600482015260196024820152781413540e88185c9d1a5cdd08185d5d1a081c995c5d5a5c9959603a1b60448201526064016102cc565b600181600681111561269d5761269d613fa2565b036126ea5760405162461bcd60e51b815260206004820152601e60248201527f504d503a20746f6b656e206f776e65722061757468207265717569726564000060448201526064016102cc565b60038160068111156126fe576126fe613fa2565b0361275d5760405162461bcd60e51b815260206004820152602960248201527f504d503a2061727469737420616e6420746f6b656e206f776e65722061757468604482015268081c995c5d5a5c995960ba1b60648201526084016102cc565b600281600681111561277157612771613fa2565b036127bb5760405162461bcd60e51b815260206004820152601a6024820152791413540e881859191c995cdcc8185d5d1a081c995c5d5a5c995960321b60448201526064016102cc565b60068160068111156127cf576127cf613fa2565b0361283a5760405162461bcd60e51b815260206004820152603560248201527f504d503a2061727469737420616e6420746f6b656e206f776e657220616e64206044820152741859191c995cdcc8185d5d1a081c995c5d5a5c9959605a1b60648201526084016102cc565b600481600681111561284e5761284e613fa2565b036128a95760405162461bcd60e51b815260206004820152602560248201527f504d503a2061727469737420616e6420616464726573732061757468207265716044820152641d5a5c995960da1b60648201526084016102cc565b60058160068111156128bd576128bd613fa2565b0361291d5760405162461bcd60e51b815260206004820152602a60248201527f504d503a20746f6b656e206f776e657220616e642061646472657373206175746044820152691a081c995c5d5a5c995960b21b60648201526084016102cc565b60405162461bcd60e51b81526020600482015260176024820152762826a81d1034b73b30b634b21030baba3427b83a34b7b760491b60448201526064016102cc565b835462010000900460ff16600881600881111561297e5761297e613fa2565b14612c1057600181600881111561299757612997613fa2565b03612a0f5784546040870151600160e81b90910460ff1611612a0a5760405162461bcd60e51b815260206004820152602660248201527f504d503a2073656c6563744f7074696f6e7320696e646578206f7574206f6620604482015265626f756e647360d01b60648201526084016102cc565b612c10565b6002816008811115612a2357612a23613fa2565b03612a955760408601511580612a3d575060408601516001145b612a0a5760405162461bcd60e51b8152602060048201526024808201527f504d503a20626f6f6c20706172616d2076616c7565206d7573742062652030206044820152636f72203160e01b60648201526084016102cc565b6003816008811115612aa957612aa9613fa2565b1480612ac657506005816008811115612ac457612ac4613fa2565b145b15612b07578460020154866040015110158015612aeb57508460030154866040015111155b612a0a5760405162461bcd60e51b81526004016102cc90614e1e565b6004816008811115612b1b57612b1b613fa2565b03612b5b576002850154604087015112801590612aeb5750600385015460408701511315612a0a5760405162461bcd60e51b81526004016102cc90614e1e565b6007816008811115612b6f57612b6f613fa2565b03612b8f5760408601516001600160401b0310801590612aeb5750612c10565b6006816008811115612ba357612ba3613fa2565b03612bcf57604086015162ffffff1015612a0a5760405162461bcd60e51b81526004016102cc90614e55565b60405162461bcd60e51b8152602060048201526016602482015275504d503a20696e76616c696420706172616d5479706560501b60448201526064016102cc565b6008855462010000900460ff166008811115612c2e57612c2e613fa2565b03612d2357604086015115612c985760405162461bcd60e51b815260206004820152602a60248201527f504d503a2076616c7565206d75737420626520656d70747920666f7220737472604482015269696e6720706172616d7360b01b60648201526084016102cc565b856060015115612d1e576000612caf8989336134e6565b50905080612d1c5760405162461bcd60e51b815260206004820152603460248201527f504d503a20617274697374206175746820726571756972656420746f20636f6e6044820152736669677572652061727469737420737472696e6760601b60648201526084016102cc565b505b612e09565b60808601515115612d915760405162461bcd60e51b815260206004820152603260248201527f504d503a206e6f6e2d737472696e6720706172616d206d757374206861766520604482015271656d70747920737472696e672076616c756560701b60648201526084016102cc565b856060015115612e095760405162461bcd60e51b815260206004820152603d60248201527f504d503a2061727469737420737472696e672063616e6e6f7420626520636f6e60448201527f6669677572656420666f72206e6f6e2d737472696e6720706172616d7300000060648201526084016102cc565b505095945050505050565b6040516331a9108f60e11b81526004810184905260009081906001600160a01b03851690636352211e90602401602060405180830381865afa158015612e5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e829190614c01565b9050826001600160a01b0316816001600160a01b03161480612f5b5750604051632e7cda1d60e21b81526001600160a01b038481166004830152828116602483015285811660448301526064820187905271706f73746d696e74706172616d657465727360701b60848301527f0000000000000000000000000000000000000000000000000000000000000000169063b9f368749060a401602060405180830381865afa158015612f37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5b9190614e85565b9150935093915050565b6000612f7083613582565b8015612f815750612f8183836135b5565b9392505050565b805460009060609060ff1682816008811115612fa657612fa6613fa2565b1480612fde5750845462010000900460ff166008811115612fc957612fc9613fa2565b816008811115612fdb57612fdb613fa2565b14155b15612ffc5750506040805160208101909152600080825291506133f4565b6008855462010000900460ff16600881111561301a5761301a613fa2565b0361311857600084600201805461303090614737565b905011156130d45760018460020180805461304a90614737565b80601f016020809104026020016040519081016040528092919081815260200182805461307690614737565b80156130c35780601f10613098576101008083540402835291602001916130c3565b820191906000526020600020905b8154815290600101906020018083116130a657829003601f168201915b5050505050905092509250506133f4565b60008460030180546130e590614737565b905011156130ff5760018460030180805461304a90614737565b50506040805160208101909152600080825291506133f4565b600181600881111561312c5761312c613fa2565b0361317e5784546001850154600160e81b90910460ff16116131615750506040805160208101909152600080825291506133f4565b600184810154613174908783019061363f565b92509250506133f4565b600281600881111561319257613192613fa2565b036131ec57600184810154156131c457604051806040016040528060048152602001637472756560e01b815250613174565b6040518060400160405280600581526020016466616c736560d81b81525092509250506133f4565b600381600881111561320057613200613fa2565b148061321d5750600681600881111561321b5761321b613fa2565b145b806132395750600781600881111561323757613237613fa2565b145b806132555750600581600881111561325357613253613fa2565b145b156133465760018401546000600683600881111561327557613275613fa2565b14613284576003870154613289565b62ffffff5b9050600060068460088111156132a1576132a1613fa2565b146132b05760028801546132b3565b60005b9050808310806132c257508183115b156132e65760006040518060200160405280600081525095509550505050506133f4565b60058460088111156132fa576132fa613fa2565b0361331757600161330a846137e9565b95509550505050506133f4565b600684600881111561332b5761332b613fa2565b0361333b57600161330a84613896565b600161330a8461397f565b600481600881111561335a5761335a613fa2565b036133b157600184015460028601548112806133795750600386015481135b1561339b576000604051806020016040528060008152509350935050506133f4565b60016133a682613a11565b9350935050506133f4565b60405162461bcd60e51b8152602060048201526018602482015277504d503a20556e68616e646c656420506172616d5479706560401b60448201526064016102cc565b9250929050565b600081518351148015612f815750508051602091820120825192909101919091201490565b600080826040516020016134349190614ea2565b60405160208183030381529060405290506000816040516020016134589190614ec8565b60405160208183030381529060405290508051602082016000f092506001600160a01b0383166134be5760405162461bcd60e51b81526020600482015260116024820152701111541313d65351539517d19052531151607a1b60448201526064016102cc565b5050919050565b60606102518260016134e1816001600160a01b0384163b614efc565b613a83565b60008060006134f4866122a2565b60405163a47d29cb60e01b8152600481018290529091506001600160a01b0386169063a47d29cb90602401602060405180830381865afa15801561353c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135609190614c01565b9150836001600160a01b0316826001600160a01b031614925050935093915050565b6000613595826301ffc9a760e01b6135b5565b801561025157506135ae826001600160e01b03196135b5565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180516001600160e01b03166301ffc9a760e01b178152825192935060009283928392909183918a617530fa92503d91506000519050828015613628575060208210155b80156136345750600081115b979650505050505050565b81546060906001600160a01b03166136695760405162461bcd60e51b81526004016102cc90614f0f565b8254600090613680906001600160a01b03166134c5565b9050600080600080602085015160c01c90508087106136b15760405162461bcd60e51b81526004016102cc90614f0f565b806136bd886001614d96565b036136eb576000855190506028860194506008880285015160c01c935060088202600801810392505061370d565b6028850193506008870284015160c01c92506008600188010284015160c01c91505b60006137198484614dfe565b6001600160401b031690506000613731826020614d96565b6001600160401b0381111561374857613748613e3d565b6040519080825280601f01601f191660200182016040528015613772576020820181803683370190505b5090506020810160005b838110156137d8576000816001600160401b03891661379c886008614da9565b6137a7906028614d96565b6137b19190614d96565b6137bb9190614d96565b8a01518352506020918201916137d19082614d96565b905061377c565b505090815298975050505050505050565b606060006137f8600a80615020565b6138029084614dd6565b90506000613811600a80615020565b61381b9085614dea565b905060006138288361397f565b905060006138358361397f565b90505b600a815110156138695780604051602001613853919061502c565b6040516020818303038152906040529050613838565b818160405160200161387c929190615048565b604051602081830303815290604052945050505050919050565b6040805160078082528183019092526060918391600091602082018180368337019050509050602360f81b816000815181106138d4576138d46141ba565b60200101906001600160f81b031916908160001a90535060065b8015613960576f181899199a1a9b1b9c1cb0b131b232b360811b83600f166010811061391c5761391c6141ba565b1a60f81b828281518110613932576139326141ba565b60200101906001600160f81b031916908160001a90535060049290921c9161395981615084565b90506138ee565b508115612f815760405162461bcd60e51b81526004016102cc90614e55565b6060600061398c83613aa6565b60010190506000816001600160401b038111156139ab576139ab613e3d565b6040519080825280601f01601f1916602001820160405280156139d5576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846139df57509392505050565b606060008212613a305760405180602001604052806000815250613a4b565b604051806040016040528060018152602001602d60f81b8152505b613a5c613a5784613b7c565b61397f565b604051602001613a6d92919061509b565b6040516020818303038152906040529050919050565b60408051603f8301601f19168101909152818152818360208301863c9392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310613ae55772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310613b0f576904ee2d6d415b85acef8160201b830492506020015b662386f26fc100008310613b2d57662386f26fc10000830492506010015b6305f5e1008310613b45576305f5e100830492506008015b6127108310613b5957612710830492506004015b60648310613b6b576064830492506002015b600a83106102515760010192915050565b600080821215613b8f5781600003610251565b5090565b600060208284031215613ba557600080fd5b81356001600160e01b031981168114612f8157600080fd5b60005b83811015613bd8578181015183820152602001613bc0565b50506000910152565b60008151808452613bf9816020860160208601613bbd565b601f01601f19169290920160200192915050565b602081526000612f816020830184613be1565b6001600160a01b0381168114613c3557600080fd5b50565b8035613c4381613c20565b919050565b60008083601f840112613c5a57600080fd5b5081356001600160401b03811115613c7157600080fd5b6020830191508360208260051b85010111156133f457600080fd5b60008060008060608587031215613ca257600080fd5b8435613cad81613c20565b93506020850135925060408501356001600160401b03811115613ccf57600080fd5b613cdb87828801613c48565b95989497509550505050565b60008060408385031215613cfa57600080fd5b8235613d0581613c20565b946020939093013593505050565b60008282518085526020808601955060208260051b8401016020860160005b84811015613d6057601f19868403018952613d4e838351613be1565b98840198925090830190600101613d32565b5090979650505050505050565b608081526000613d806080830187613d13565b60ff959095166020830152506001600160a01b0392831660408201529116606090910152919050565b600080600060608486031215613dbe57600080fd5b8335613dc981613c20565b92506020840135613dd981613c20565b929592945050506040919091013590565b60008060008060808587031215613e0057600080fd5b8435613e0b81613c20565b9350602085013592506040850135613e2281613c20565b91506060850135613e3281613c20565b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715613e7557613e75613e3d565b60405290565b604080519081016001600160401b0381118282101715613e7557613e75613e3d565b604051601f8201601f191681016001600160401b0381118282101715613ec557613ec5613e3d565b604052919050565b60006001600160401b03821115613ee657613ee6613e3d565b50601f01601f191660200190565b600082601f830112613f0557600080fd5b8135613f18613f1382613ecd565b613e9d565b818152846020838601011115613f2d57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215613f5f57600080fd5b8335613f6a81613c20565b92506020840135915060408401356001600160401b03811115613f8c57600080fd5b613f9886828701613ef4565b9150509250925092565b634e487b7160e01b600052602160045260246000fd5b60078110613fc857613fc8613fa2565b9052565b60098110613fc857613fc8613fa2565b60008282518085526020808601955060208260051b8401016020860160005b84811015613d6057601f19868403018952614017838351613be1565b98840198925090830190600101613ffb565b6020815261403d60208201835160ff169052565b600060208301516140516040840182613fb8565b5060408301516140646060840182613fcc565b50606083015165ffffffffffff811660808401525060808301516001600160a01b03811660a08401525060a083015160ff811660c08401525060c08301516101208060e08501526140b9610140850183613fdc565b60e086015161010086810191909152909501519301929092525090919050565b600082825180855260208086019550808260051b84010181860160005b84811015613d6057601f1986840301895281516040815181865261411c82870182613be1565b915050858201519150848103868601526141368183613be1565b9a86019a94505050908301906001016140f6565b602081526000612f8160208301846140d9565b6020815261416f602082018351613fcc565b60208201516040820152600060408301516080606084015261419460a0840182613be1565b90506060840151601f198483030160808501526141b18282613be1565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e198336030181126141e657600080fd5b9190910192915050565b6000808335601e1984360301811261420757600080fd5b8301803591506001600160401b0382111561422157600080fd5b6020019150368190038213156133f457600080fd5b634e487b7160e01b600052601160045260246000fd5b60ff818116838216019081111561025157610251614236565b6000823560de198336030181126141e657600080fd5b803560078110613c4357600080fd5b803560098110613c4357600080fd5b803565ffffffffffff81168114613c4357600080fd5b60006001600160401b038211156142c8576142c8613e3d565b5060051b60200190565b600082601f8301126142e357600080fd5b813560206142f3613f13836142af565b82815260059290921b8401810191818101908684111561431257600080fd5b8286015b848110156143515780356001600160401b038111156143355760008081fd5b6143438986838b0101613ef4565b845250918301918301614316565b509695505050505050565b600060e0823603121561436e57600080fd5b614376613e53565b61437f8361427b565b815261438d6020840161428a565b602082015261439e60408401614299565b60408201526143af60608401613c38565b606082015260808301356001600160401b038111156143cd57600080fd5b6143d9368286016142d2565b60808301525060a083013560a082015260c083013560c082015280915050919050565b6000808335601e1984360301811261441357600080fd5b83016020810192503590506001600160401b0381111561443257600080fd5b8036038213156133f457600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000838385526020808601955060208560051b8301018460005b87811015613d6057848303601f1901895261449f82886143fc565b6144aa858284614441565b9a86019a9450505090830190600101614484565b6001600160a01b038681168252602080830187905260806040808501829052848201879052600093919260a0929183870160058a901b880185018b885b8c81101561463a578a8303609f190184528135368f9003603e1901811261452157600080fd5b8e0161452d81806143fc565b87865261453d8887018284614441565b9150508782013560de1983360301811261455657600080fd5b858203898701529091019060e0614575826145708561427b565b613fb8565b61458089840161428a565b61458c8a840182613fcc565b5065ffffffffffff61459f898501614299565b16888301526060808401356145b381613c20565b8b1690830152828c013536849003601e190181126145d057600080fd5b830189810190356001600160401b038111156145eb57600080fd5b8060051b36038213156145fd57600080fd5b828e85015261460f838501828461446a565b858e0135858f015260c0958601359590940194909452505094870194935050908501906001016144fb565b505060ff8a1660608a0152965061465395505050505050565b9695505050505050565b60008235609e198336030181126141e657600080fd5b8015158114613c3557600080fd5b600060a0823603121561469357600080fd5b60405160a081016001600160401b0380821183831017156146b6576146b6613e3d565b8160405284359150808211156146cb57600080fd5b6146d736838701613ef4565b83526146e56020860161428a565b6020840152604085013560408401526060850135915061470482614673565b816060840152608085013591508082111561471e57600080fd5b5061472b36828601613ef4565b60808301525092915050565b600181811c9082168061474b57607f821691505b60208210810361476b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156113d4576000816000526020600020601f850160051c8101602086101561479a5750805b601f850160051c820191505b818110156147b9578281556001016147a6565b505050505050565b81516001600160401b038111156147da576147da613e3d565b6147ee816147e88454614737565b84614771565b602080601f831160018114614823576000841561480b5750858301515b600019600386901b1c1916600185901b1785556147b9565b600085815260208120601f198616915b8281101561485257888601518255948401946001909101908401614833565b50858210156148705787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60018060a01b0384168152826020820152606060408201526000825160a060608401526148b1610100840182613be1565b905060208401516148c56080850182613fcc565b50604084015160a08401526060840151151560c08401526080840151838203605f190160e08501526136348282613be1565b60008151808452602080850194506020840160005b838110156149315781516001600160a01b03168752958201959082019060010161490c565b509495945050505050565b6001600160a01b038616815260208082018690526080604080840182905283820186905260009260a091828601600589901b870184018a87805b8c811015614a24578a8403609f190185528235368f9003609e1901811261499b578283fd5b8e016149a781806143fc565b8a87526149b78b88018284614441565b9150506149c589830161428a565b6149d18a880182613fcc565b5087820135888701526060808301356149e981614673565b1515908701526149fb828c01836143fc565b92508682038c880152614a0f828483614441565b978a0197965050509287019250600101614976565b5050508781036060890152614a39818a6148f7565b9d9c50505050505050505050505050565b600060018201614a5c57614a5c614236565b5060010190565b60018060a01b03841681528260208201526060604082015260006141b160608301846140d9565b600082601f830112614a9b57600080fd5b8151614aa9613f1382613ecd565b818152846020838601011115614abe57600080fd5b614acf826020830160208701613bbd565b949350505050565b60006020808385031215614aea57600080fd5b82516001600160401b0380821115614b0157600080fd5b818501915085601f830112614b1557600080fd5b8151614b23613f13826142af565b81815260059190911b83018401908481019088831115614b4257600080fd5b8585015b83811015614bd557805185811115614b5e5760008081fd5b86016040818c03601f1901811315614b765760008081fd5b614b7e613e7b565b8983015188811115614b905760008081fd5b614b9e8e8c83870101614a8a565b825250908201519087821115614bb45760008081fd5b614bc28d8b84860101614a8a565b818b015285525050918601918601614b46565b5098975050505050505050565b600060ff821660ff8103614bf857614bf8614236565b60010192915050565b600060208284031215614c1357600080fd5b8151612f8181613c20565b600060208284031215614c3057600080fd5b612f818261427b565b600060208284031215614c4b57600080fd5b612f818261428a565b600060208284031215614c6657600080fd5b612f8182614299565b600060208284031215614c8157600080fd5b8135612f8181613c20565b6000808335601e19843603018112614ca357600080fd5b8301803591506001600160401b03821115614cbd57600080fd5b6020019150600581901b36038213156133f457600080fd5b602081526000614acf60208301848661446a565b602081526000612f816020830184613d13565b602080825260169082015275504d503a20496e76616c696420706172616d5479706560501b604082015260600190565b6020808252601f908201527f504d503a2073656c6563744f7074696f6e73206973206e6f7420656d70747900604082015260600190565b602080825260199082015278504d503a206d696e52616e6765203e3d206d617852616e676560381b604082015260600190565b8082018082111561025157610251614236565b808202811582820484141761025157610251614236565b634e487b7160e01b600052601260045260246000fd5b600082614de557614de5614dc0565b500490565b600082614df957614df9614dc0565b500690565b6001600160401b038281168282160390808211156120b5576120b5614236565b6020808252601e908201527f504d503a20706172616d2076616c7565206f7574206f6620626f756e64730000604082015260600190565b6020808252601690820152752826a81d1034b73b30b634b2103432bc1031b7b637b960511b604082015260600190565b600060208284031215614e9757600080fd5b8151612f8181614673565b6000815260008251614ebb816001850160208701613bbd565b9190910160010192915050565b6a600b5981380380925939f360a81b81528151600090614eef81600b850160208701613bbd565b91909101600b0192915050565b8181038181111561025157610251614236565b602080825260139082015272496e646578206f7574206f6620626f756e647360681b604082015260600190565b600181815b80851115614f77578160001904821115614f5d57614f5d614236565b80851615614f6a57918102915b93841c9390800290614f41565b509250929050565b600082614f8e57506001610251565b81614f9b57506000610251565b8160018114614fb15760028114614fbb57614fd7565b6001915050610251565b60ff841115614fcc57614fcc614236565b50506001821b610251565b5060208310610133831016604e8410600b8410161715614ffa575081810a610251565b6150048383614f3c565b806000190482111561501857615018614236565b029392505050565b6000612f818383614f7f565b600360fc1b815260008251614ebb816001850160208701613bbd565b6000835161505a818460208801613bbd565b601760f91b9083019081528351615078816001840160208801613bbd565b01600101949350505050565b60008161509357615093614236565b506000190190565b600083516150ad818460208801613bbd565b8351908301906150c1818360208801613bbd565b0194935050505056fea2646970667358221220a2aac35ccf5c3889192b0443bb9ca2301efa9f7bbc22105adbf31e0b32d0d71164736f6c63430008160033",
645
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a45760003560e01c806301ffc9a7146100a957806313bfffac146100d157806316dba0f2146101105780633c303afb1461012557806354ca22371461013a5780636f8637a01461015d57806398a6e11814610170578063af544a611461019a578063b69c984d146101ad578063ba8dba48146101c0578063c2b4f411146101e0578063dc809b1a14610200575b600080fd5b6100bc6100b7366004613b93565b610220565b60405190151581526020015b60405180910390f35b6100f87f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100c8565b610118610257565b6040516100c89190613c0d565b610138610133366004613c8c565b61026f565b005b61014d610148366004613ce7565b61079f565b6040516100c89493929190613d6d565b61013861016b366004613c8c565b610802565b61018c71706f73746d696e74706172616d657465727360701b81565b6040519081526020016100c8565b6100bc6101a8366004613da9565b610b20565b6101386101bb366004613dea565b610b36565b6101d36101ce366004613f4a565b610d2a565b6040516100c89190614029565b6101f36101ee366004613ce7565b610e92565b6040516100c8919061414a565b61021361020e366004613f4a565b6110b2565b6040516100c8919061415d565b60006001600160e01b0319821663c2b4f41160e01b148061025157506301ffc9a760e01b6001600160e01b03198316145b92915050565b606061026a64504d50563160d81b611288565b905090565b6102776112f3565b61028284843361131d565b806101008111156102d55760405162461bcd60e51b8152602060048201526018602482015277504d503a204f6e6c79203c3d2032353620636f6e6669677360401b60448201526064015b60405180910390fd5b60005b818110156103905760008484838181106102f4576102f46141ba565b905060200281019061030691906141d0565b61031090806141f0565b9150508015801590610323575061010081105b6103875760405162461bcd60e51b815260206004820152602f60248201527f504d503a20706d704b65792063616e6e6f7420626520656d707479206f72206560448201526e78636565642032353520627974657360881b60648201526084016102cc565b506001016102d8565b506001600160a01b0385166000908152600160208181526040808420888552909152822060028101549092916103c99160ff169061424c565b60028301805460ff191660ff831617905590506000836001600160401b038111156103f6576103f6613e3d565b60405190808252806020026020018201604052801561042957816020015b60608152602001906001900390816104145790505b50905060005b848110156104c057868682818110610449576104496141ba565b905060200281019061045b91906141d0565b61046590806141f0565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050845185925084915081106104ad576104ad6141ba565b602090810291909101015260010161042f565b506104cb81846113d9565b60005b8481101561074b5760008460010160006105008585815181106104f3576104f36141ba565b6020026020010151611471565b81526020810191909152604001600020805490915061052d906301000000900465ffffffffffff166114a1565b6105db5761056c81898985818110610547576105476141ba565b905060200281019061055991906141d0565b610567906020810190614265565b6114b1565b6105c95760405162461bcd60e51b815260206004820152602860248201527f504d503a20706d70206973206c6f636b656420616e642063616e6e6f74206265604482015267081d5c19185d195960c21b60648201526084016102cc565b805460ff191660ff8516179055610743565b6106158888848181106105f0576105f06141ba565b905060200281019061060291906141d0565b610610906020810190614265565b611657565b805460ff191660ff85161781556000888884818110610636576106366141ba565b905060200281019061064891906141d0565b610656906020810190614265565b61065f9061435c565b8051835491925090839061ff00191661010083600681111561068357610683613fa2565b021790555060208101518254839062ff00001916620100008360088111156106ad576106ad613fa2565b02179055506040810151825460608301516080840151805160ff16600160e81b0260ff60e81b196001600160a01b03909316600160481b02600160481b600160e81b031965ffffffffffff909616630100000002959095166301000000600160e81b031990941693909317939093171617835561072e906001840190611db6565b60a0810151600283015560c001516003909101555b6001016104ce565b507f935e8b8dc0c19500cc0d4c29698f1af13be297f62b71eda8dd0e1a0bc6927fca88888888866040516107839594939291906144be565b60405180910390a1505050506107996001600055565b50505050565b6001600160a01b0382166000908152600160209081526040808320848452909152812060609190819081906107d381612078565b6002820154600390920154909860ff831698506001600160a01b03610100909304831697509116945092505050565b61080a6112f3565b6001600160a01b03841660009081526001602052604081208161082c866122a2565b815260200190815260200160002090506000838390506001600160401b0381111561085957610859613e3d565b604051908082528060200260200182016040528015610882578160200160208202803683370190505b50905060005b83811015610ad45760006108fd8686848181106108a7576108a76141ba565b90506020028101906108b9919061465d565b6108c390806141f0565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061147192505050565b90506000868684818110610913576109136141ba565b9050602002810190610925919061465d565b61092e90614681565b6001600160a01b038a1660009081526002602081815260408084208d85528252808420878552825280842060018b01909252909220908801549293509091610980908b908d908690859060ff166122b1565b868681518110610992576109926141ba565b6001600160a01b039290921660209283029190910190910152805482546201000090910460ff1690839060ff191660018360088111156109d4576109d4613fa2565b02179055506008815462010000900460ff1660088111156109f7576109f7613fa2565b03610a3457826060015115610a205760808301516002830190610a1a90826147c1565b50610a3f565b60808301516003830190610a1a90826147c1565b604083015160018301555b600287015461010090046001600160a01b031615610ac457600287015460405163677e713560e01b81526101009091046001600160a01b03169063677e713590610a91908e908e908890600401614880565b600060405180830381600087803b158015610aab57600080fd5b505af1158015610abf573d6000803e3d6000fd5b505050505b5050600190920191506108889050565b507f3dfcd927ac9e2552184b368328e6cca04f875ef453930277d7dfa53f40dbeac48686868685604051610b0c95949392919061493c565b60405180910390a150506107996001600055565b6000610b2d828486612e14565b50949350505050565b610b3e6112f3565b610b4984843361131d565b6001600160a01b03821615610bdd57610b698263677e713560e01b612f65565b610bdd576040805162461bcd60e51b81526020600482015260248101919091527f504d503a20746f6b656e504d50506f7374436f6e666967486f6f6b20646f657360448201527f206e6f7420696d706c656d656e742049504d50436f6e666967757265486f6f6b60648201526084016102cc565b6001600160a01b03811615610c7d57610bfd816358f8699f60e01b612f65565b610c7d5760405162461bcd60e51b8152602060048201526044602482018190527f504d503a20746f6b656e504d50526561644175676d656e746174696f6e486f6f908201527f6b20646f6573206e6f7420696d706c656d656e742049504d504175676d656e74606482015263486f6f6b60e01b608482015260a4016102cc565b6001600160a01b038481166000818152600160209081526040808320888452825291829020600281018054610100600160a81b031916610100898816908102919091179091556003820180546001600160a01b031916968816968717905583519485529184018890529183015260608201929092527fd7a93580965b5dbb5c8a723af5a48167de5f41dc65e456be819bf739da05ce389060800160405180910390a1506107996001600055565b610d7960408051610120810190915260008082526020820190815260200160008152600060208201819052604082018190526060808301829052608083015260a0820181905260c09091015290565b6001600160a01b038416600090815260016020818152604080842087855290915282200181610da785611471565b8152602080820192909252604001600020805460ff8082168652919350918401916101009004166006811115610ddf57610ddf613fa2565b90816006811115610df257610df2613fa2565b9052508054604083019062010000900460ff166008811115610e1657610e16613fa2565b90816008811115610e2957610e29613fa2565b90525080546301000000810465ffffffffffff166060840152600160481b81046001600160a01b03166080840152600160e81b900460ff1660a0830152610e7260018201612078565b60c0830152600281015460e0830152600301546101008201529392505050565b60606000610e9f836122a2565b6001600160a01b03851660009081526001602090815260408083208484529091528120919250610ece82612078565b8051909150806001600160401b03811115610eeb57610eeb613e3d565b604051908082528060200260200182016040528015610f3057816020015b6040805180820190915260608082526020820152815260200190600190039081610f095790505b5094506000805b82811015611012576000610f568583815181106104f3576104f36141ba565b600081815260018801602090815260408083206001600160a01b038f168452600283528184208e85528352818420858552909252822092935090918291610f9c91612f88565b9150915081610fad5750505061100a565b6040518060400160405280888681518110610fca57610fca6141ba565b60200260200101518152602001828152508a8681518110610fed57610fed6141ba565b6020026020010181905250848061100390614a4a565b9550505050505b600101610f37565b5080865260038401546001600160a01b0316156110a75760038401546040516358f8699f60e01b81526001600160a01b03909116906358f8699f9061105f908b908b908b90600401614a63565b600060405180830381865afa15801561107c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110a49190810190614ad7565b95505b505050505092915050565b6110dc60408051608081019091528060008152600060208201526060604082018190529081015290565b6001600160a01b038416600090815260026020908152604080832086845290915281209061110984611471565b8152602081019190915260409081016000208151608081019092528054829060ff16600881111561113c5761113c613fa2565b600881111561114d5761114d613fa2565b81526020016001820154815260200160028201805461116b90614737565b80601f016020809104026020016040519081016040528092919081815260200182805461119790614737565b80156111e45780601f106111b9576101008083540402835291602001916111e4565b820191906000526020600020905b8154815290600101906020018083116111c757829003601f168201915b505050505081526020016003820180546111fd90614737565b80601f016020809104026020016040519081016040528092919081815260200182805461122990614737565b80156112765780601f1061124b57610100808354040283529160200191611276565b820191906000526020600020905b81548152906001019060200180831161125957829003601f168201915b50505050508152505090509392505050565b606060005b828160ff16602081106112a2576112a26141ba565b1a60f81b6001600160f81b031916158015906112c1575060208160ff16105b156112d857806112d081614be2565b91505061128d565b60405191506040820160405280825282602083015250919050565b60026000540361131657604051633ee5aeb560e01b815260040160405180910390fd5b6002600055565b60405163a47d29cb60e01b8152600481018390526001600160a01b03808316919085169063a47d29cb90602401602060405180830381865afa158015611367573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138b9190614c01565b6001600160a01b0316146113d45760405162461bcd60e51b815260206004820152601060248201526f1413540e881bdb9b1e48185c9d1a5cdd60821b60448201526064016102cc565b505050565b60006113e482612078565b9050600081518451146113f957506001611461565b60005b845181101561145f5761144a83828151811061141a5761141a6141ba565b6020026020010151868381518110611434576114346141ba565b60200260200101516133fb90919063ffffffff16565b611457576001915061145f565b6001016113fc565b505b8015610799576107998385611db6565b6000816040516020016114849190613c0d565b604051602081830303815290604052805190602001209050919050565b6000811580610251575050421090565b60006114c06020830183614c1e565b60068111156114d1576114d1613fa2565b8354610100900460ff1660068111156114ec576114ec613fa2565b14158061153457506115046040830160208401614c39565b600881111561151557611515613fa2565b835462010000900460ff16600881111561153157611531613fa2565b14155b80611562575061154a6060830160408401614c54565b83546301000000900465ffffffffffff908116911614155b8061159157506115786080830160608401614c6f565b8354600160481b90046001600160a01b03908116911614155b806115a457508160a00135836002015414155b806115b757508160c00135836003015414155b806115db57506115ca6080830183614c8c565b8454600160e81b900460ff16141590505b156115e857506000610251565b6115f56080830183614c8c565b604051602001611606929190614cd5565b6040516020818303038152906040528051906020012061162884600101612078565b6040516020016116389190614ce9565b6040516020818303038152906040528051906020012014905092915050565b60006116696040830160208401614c39565b9050600061167a6020840184614c1e565b9050600082600881111561169057611690613fa2565b036116dd5760405162461bcd60e51b815260206004820152601e60248201527f504d503a20706172616d5479706520697320756e636f6e66696775726564000060448201526064016102cc565b6116fd6116f06060850160408601614c54565b65ffffffffffff166114a1565b61177d5760405162461bcd60e51b8152602060048201526044602482018190527f504d503a20706d704c6f636b6564416674657254696d657374616d7020697320908201527f696e20746865207061737420616e64206e6f7420756e6c696d6974656420287a60648201526365726f2960e01b608482015260a4016102cc565b600681600681111561179157611791613fa2565b11156117d95760405162461bcd60e51b81526020600482015260176024820152762826a81d1024b73b30b634b21030baba3427b83a34b7b760491b60448201526064016102cc565b60088260088111156117ed576117ed613fa2565b111561180b5760405162461bcd60e51b81526004016102cc90614cfc565b600882600881111561181f5761181f613fa2565b036118f557600081600681111561183857611838613fa2565b14806118555750600381600681111561185357611853613fa2565b145b806118715750600681600681111561186f5761186f613fa2565b145b8061188d5750600481600681111561188b5761188b613fa2565b145b6118f55760405162461bcd60e51b815260206004820152603360248201527f504d503a20537472696e6720706172616d73206d75737420686176652061727460448201527234b9ba159030baba3432b73a34b1b0ba34b7b760691b60648201526084016102cc565b600281600681111561190957611909613fa2565b14806119265750600581600681111561192457611924613fa2565b145b806119425750600481600681111561194057611940613fa2565b145b8061195e5750600681600681111561195c5761195c613fa2565b145b156119cb5760006119756080850160608601614c6f565b6001600160a01b0316036119c65760405162461bcd60e51b8152602060048201526018602482015277504d503a206175746841646472657373206973207a65726f60401b60448201526064016102cc565b611a32565b60006119dd6080850160608601614c6f565b6001600160a01b031614611a325760405162461bcd60e51b815260206004820152601c60248201527b504d503a206175746841646472657373206973206e6f74207a65726f60201b60448201526064016102cc565b6002826008811115611a4657611a46613fa2565b1480611a6357506008826008811115611a6157611a61613fa2565b145b80611a7f57506006826008811115611a7d57611a7d613fa2565b145b15611b4e57611a916080840184614c8c565b159050611ab05760405162461bcd60e51b81526004016102cc90614d2c565b60a083013515611aff5760405162461bcd60e51b815260206004820152601a602482015279504d503a206d696e52616e6765206973206e6f7420656d70747960301b60448201526064016102cc565b60c0830135156113d45760405162461bcd60e51b815260206004820152601a602482015279504d503a206d617852616e6765206973206e6f7420656d70747960301b60448201526064016102cc565b6001826008811115611b6257611b62613fa2565b03611c22576000611b766080850185614c8c565b905011611bc35760405162461bcd60e51b815260206004820152601b60248201527a504d503a2073656c6563744f7074696f6e7320697320656d70747960281b60448201526064016102cc565b610100611bd36080850185614c8c565b905010611ab05760405162461bcd60e51b815260206004820152601f60248201527f504d503a2073656c6563744f7074696f6e73206c656e677468203e203235350060448201526064016102cc565b6003826008811115611c3657611c36613fa2565b1480611c5357506004826008811115611c5157611c51613fa2565b145b80611c6f57506005826008811115611c6d57611c6d613fa2565b145b80611c8b57506007826008811115611c8957611c89613fa2565b145b15611d9e57611c9d6080840184614c8c565b159050611cbc5760405162461bcd60e51b81526004016102cc90614d2c565b6004826008811115611cd057611cd0613fa2565b03611d055760a083013560c0840135808212611cfe5760405162461bcd60e51b81526004016102cc90614d63565b5050505050565b60a083013560c0840135808210611d2e5760405162461bcd60e51b81526004016102cc90614d63565b6007846008811115611d4257611d42613fa2565b03611cfe576001600160401b03811115611cfe5760405162461bcd60e51b815260206004820152601e60248201527f504d503a206d617852616e6765203e205f54494d455354414d505f4d4158000060448201526064016102cc565b60405162461bcd60e51b81526004016102cc90614cfc565b80516000819003611dd357505080546001600160a01b0319169055565b6000816001600160401b03811115611ded57611ded613e3d565b604051908082528060200260200182016040528015611e16578160200160208202803683370190505b5090506000805b83811015611e885781838281518110611e3857611e386141ba565b60200260200101906001600160401b031690816001600160401b031681525050848181518110611e6a57611e6a6141ba565b60200260200101515182611e7e9190614d96565b9150600101611e1d565b506001600160401b03811115611ede5760405162461bcd60e51b815260206004820152601b60248201527a13d9999cd95d08195e18d959591cc81d5a5b9d0d8d081b1a5b5a5d602a1b60448201526064016102cc565b600081611eec856008614da9565b611ef7906008614d96565b611f019190614d96565b90506000611f10826020614d96565b6001600160401b03811115611f2757611f27613e3d565b6040519080825280601f01601f191660200182016040528015611f51576020820181803683370190505b5060c086901b602082015290506028810160005b86811015611faa576000868281518110611f8157611f816141ba565b602090810291909101015160c01b6001600160c01b031916835250600890910190600101611f65565b5060005b86811015612044576000888281518110611fca57611fca6141ba565b6020026020010151905060008151905060006020830190506000602083611ff19190614dd6565b90506000612000602085614dea565b905060005b82811015612023578351885260209788019790930192600101612005565b5080156120335782518752958601955b505060019093019250611fae915050565b50508181528061205381613420565b88546001600160a01b0319166001600160a01b03919091161790975550505050505050565b80546060906001600160a01b03166120bc5760408051600080825260208201909252906120b5565b60608152602001906001900390816120a05790505b5092915050565b81546000906120d3906001600160a01b03166134c5565b602081015190915060c01c806001600160401b038111156120f6576120f6613e3d565b60405190808252806020026020018201604052801561212957816020015b60608152602001906001900390816121145790505b50925060005b8181101561229a576000808084612147856001614d96565b03612175576000865190506028870193506008850284015160c01c9250600886026008018103915050612197565b6028860192506008840283015160c01c91506008600185010283015160c01c90505b60006121a38383614dfe565b6001600160401b0316905060006121bb826020614d96565b6001600160401b038111156121d2576121d2613e3d565b6040519080825280601f01601f1916602001820160405280156121fc576020820181803683370190505b5090506020810160005b83811015612262576000816001600160401b0388166122268c6008614da9565b612231906028614d96565b61223b9190614d96565b6122459190614d96565b8b015183525060209182019161225b9082614d96565b9050612206565b50819050828152818a888151811061227c5761227c6141ba565b6020026020010181905250505050505050808060010191505061212f565b505050919050565b6000610251620f424083614dd6565b815460009060ff83811691161461232d5760405162461bcd60e51b815260206004820152603a60248201527f504d503a20706172616d206e6f742070617274206f66206d6f737420726563656044820152796e746c7920636f6e6669677572656420504d5020706172616d7360301b60648201526084016102cc565b8254612347906301000000900465ffffffffffff166114a1565b61238a5760405162461bcd60e51b81526020600482015260146024820152731413540e881c185c985b481a5cc81b1bd8dad95960621b60448201526064016102cc565b825462010000900460ff1660088111156123a6576123a6613fa2565b846020015160088111156123bc576123bc613fa2565b146124035760405162461bcd60e51b81526020600482015260176024820152760a09aa07440e0c2e4c2daa8f2e0ca40dad2e6dac2e8c6d604b1b60448201526064016102cc565b60008460200151600881111561241b5761241b613fa2565b036124745760405162461bcd60e51b8152602060048201526024808201527f504d503a20696e70757420706172616d5479706520697320756e636f6e6669676044820152631d5c995960e21b60648201526084016102cc565b8254600090610100900460ff168181600681111561249457612494613fa2565b14806124b1575060048160068111156124af576124af613fa2565b145b806124cd575060038160068111156124cb576124cb613fa2565b145b806124e9575060068160068111156124e7576124e7613fa2565b145b156125015760006124fb8989336134e6565b94509250505b811580156125735750600281600681111561251e5761251e613fa2565b148061253b5750600581600681111561253957612539613fa2565b145b806125575750600481600681111561255557612555613fa2565b145b806125735750600681600681111561257157612571613fa2565b145b15612592578454600160481b90046001600160a01b0316925033831491505b81158015612604575060018160068111156125af576125af613fa2565b14806125cc575060038160068111156125ca576125ca613fa2565b145b806125e8575060058160068111156125e6576125e6613fa2565b145b806126045750600681600681111561260257612602613fa2565b145b1561261c576000612616898933612e14565b94509250505b508061295f578354610100900460ff16600081600681111561264057612640613fa2565b036126895760405162461bcd60e51b81526020600482015260196024820152781413540e88185c9d1a5cdd08185d5d1a081c995c5d5a5c9959603a1b60448201526064016102cc565b600181600681111561269d5761269d613fa2565b036126ea5760405162461bcd60e51b815260206004820152601e60248201527f504d503a20746f6b656e206f776e65722061757468207265717569726564000060448201526064016102cc565b60038160068111156126fe576126fe613fa2565b0361275d5760405162461bcd60e51b815260206004820152602960248201527f504d503a2061727469737420616e6420746f6b656e206f776e65722061757468604482015268081c995c5d5a5c995960ba1b60648201526084016102cc565b600281600681111561277157612771613fa2565b036127bb5760405162461bcd60e51b815260206004820152601a6024820152791413540e881859191c995cdcc8185d5d1a081c995c5d5a5c995960321b60448201526064016102cc565b60068160068111156127cf576127cf613fa2565b0361283a5760405162461bcd60e51b815260206004820152603560248201527f504d503a2061727469737420616e6420746f6b656e206f776e657220616e64206044820152741859191c995cdcc8185d5d1a081c995c5d5a5c9959605a1b60648201526084016102cc565b600481600681111561284e5761284e613fa2565b036128a95760405162461bcd60e51b815260206004820152602560248201527f504d503a2061727469737420616e6420616464726573732061757468207265716044820152641d5a5c995960da1b60648201526084016102cc565b60058160068111156128bd576128bd613fa2565b0361291d5760405162461bcd60e51b815260206004820152602a60248201527f504d503a20746f6b656e206f776e657220616e642061646472657373206175746044820152691a081c995c5d5a5c995960b21b60648201526084016102cc565b60405162461bcd60e51b81526020600482015260176024820152762826a81d1034b73b30b634b21030baba3427b83a34b7b760491b60448201526064016102cc565b835462010000900460ff16600881600881111561297e5761297e613fa2565b14612c1057600181600881111561299757612997613fa2565b03612a0f5784546040870151600160e81b90910460ff1611612a0a5760405162461bcd60e51b815260206004820152602660248201527f504d503a2073656c6563744f7074696f6e7320696e646578206f7574206f6620604482015265626f756e647360d01b60648201526084016102cc565b612c10565b6002816008811115612a2357612a23613fa2565b03612a955760408601511580612a3d575060408601516001145b612a0a5760405162461bcd60e51b8152602060048201526024808201527f504d503a20626f6f6c20706172616d2076616c7565206d7573742062652030206044820152636f72203160e01b60648201526084016102cc565b6003816008811115612aa957612aa9613fa2565b1480612ac657506005816008811115612ac457612ac4613fa2565b145b15612b07578460020154866040015110158015612aeb57508460030154866040015111155b612a0a5760405162461bcd60e51b81526004016102cc90614e1e565b6004816008811115612b1b57612b1b613fa2565b03612b5b576002850154604087015112801590612aeb5750600385015460408701511315612a0a5760405162461bcd60e51b81526004016102cc90614e1e565b6007816008811115612b6f57612b6f613fa2565b03612b8f5760408601516001600160401b0310801590612aeb5750612c10565b6006816008811115612ba357612ba3613fa2565b03612bcf57604086015162ffffff1015612a0a5760405162461bcd60e51b81526004016102cc90614e55565b60405162461bcd60e51b8152602060048201526016602482015275504d503a20696e76616c696420706172616d5479706560501b60448201526064016102cc565b6008855462010000900460ff166008811115612c2e57612c2e613fa2565b03612d2357604086015115612c985760405162461bcd60e51b815260206004820152602a60248201527f504d503a2076616c7565206d75737420626520656d70747920666f7220737472604482015269696e6720706172616d7360b01b60648201526084016102cc565b856060015115612d1e576000612caf8989336134e6565b50905080612d1c5760405162461bcd60e51b815260206004820152603460248201527f504d503a20617274697374206175746820726571756972656420746f20636f6e6044820152736669677572652061727469737420737472696e6760601b60648201526084016102cc565b505b612e09565b60808601515115612d915760405162461bcd60e51b815260206004820152603260248201527f504d503a206e6f6e2d737472696e6720706172616d206d757374206861766520604482015271656d70747920737472696e672076616c756560701b60648201526084016102cc565b856060015115612e095760405162461bcd60e51b815260206004820152603d60248201527f504d503a2061727469737420737472696e672063616e6e6f7420626520636f6e60448201527f6669677572656420666f72206e6f6e2d737472696e6720706172616d7300000060648201526084016102cc565b505095945050505050565b6040516331a9108f60e11b81526004810184905260009081906001600160a01b03851690636352211e90602401602060405180830381865afa158015612e5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e829190614c01565b9050826001600160a01b0316816001600160a01b03161480612f5b5750604051632e7cda1d60e21b81526001600160a01b038481166004830152828116602483015285811660448301526064820187905271706f73746d696e74706172616d657465727360701b60848301527f0000000000000000000000000000000000000000000000000000000000000000169063b9f368749060a401602060405180830381865afa158015612f37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5b9190614e85565b9150935093915050565b6000612f7083613582565b8015612f815750612f8183836135b5565b9392505050565b805460009060609060ff1682816008811115612fa657612fa6613fa2565b1480612fde5750845462010000900460ff166008811115612fc957612fc9613fa2565b816008811115612fdb57612fdb613fa2565b14155b15612ffc5750506040805160208101909152600080825291506133f4565b6008855462010000900460ff16600881111561301a5761301a613fa2565b0361311857600084600201805461303090614737565b905011156130d45760018460020180805461304a90614737565b80601f016020809104026020016040519081016040528092919081815260200182805461307690614737565b80156130c35780601f10613098576101008083540402835291602001916130c3565b820191906000526020600020905b8154815290600101906020018083116130a657829003601f168201915b5050505050905092509250506133f4565b60008460030180546130e590614737565b905011156130ff5760018460030180805461304a90614737565b50506040805160208101909152600080825291506133f4565b600181600881111561312c5761312c613fa2565b0361317e5784546001850154600160e81b90910460ff16116131615750506040805160208101909152600080825291506133f4565b600184810154613174908783019061363f565b92509250506133f4565b600281600881111561319257613192613fa2565b036131ec57600184810154156131c457604051806040016040528060048152602001637472756560e01b815250613174565b6040518060400160405280600581526020016466616c736560d81b81525092509250506133f4565b600381600881111561320057613200613fa2565b148061321d5750600681600881111561321b5761321b613fa2565b145b806132395750600781600881111561323757613237613fa2565b145b806132555750600581600881111561325357613253613fa2565b145b156133465760018401546000600683600881111561327557613275613fa2565b14613284576003870154613289565b62ffffff5b9050600060068460088111156132a1576132a1613fa2565b146132b05760028801546132b3565b60005b9050808310806132c257508183115b156132e65760006040518060200160405280600081525095509550505050506133f4565b60058460088111156132fa576132fa613fa2565b0361331757600161330a846137e9565b95509550505050506133f4565b600684600881111561332b5761332b613fa2565b0361333b57600161330a84613896565b600161330a8461397f565b600481600881111561335a5761335a613fa2565b036133b157600184015460028601548112806133795750600386015481135b1561339b576000604051806020016040528060008152509350935050506133f4565b60016133a682613a11565b9350935050506133f4565b60405162461bcd60e51b8152602060048201526018602482015277504d503a20556e68616e646c656420506172616d5479706560401b60448201526064016102cc565b9250929050565b600081518351148015612f815750508051602091820120825192909101919091201490565b600080826040516020016134349190614ea2565b60405160208183030381529060405290506000816040516020016134589190614ec8565b60405160208183030381529060405290508051602082016000f092506001600160a01b0383166134be5760405162461bcd60e51b81526020600482015260116024820152701111541313d65351539517d19052531151607a1b60448201526064016102cc565b5050919050565b60606102518260016134e1816001600160a01b0384163b614efc565b613a83565b60008060006134f4866122a2565b60405163a47d29cb60e01b8152600481018290529091506001600160a01b0386169063a47d29cb90602401602060405180830381865afa15801561353c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135609190614c01565b9150836001600160a01b0316826001600160a01b031614925050935093915050565b6000613595826301ffc9a760e01b6135b5565b801561025157506135ae826001600160e01b03196135b5565b1592915050565b6040516001600160e01b031982166024820152600090819060440160408051601f19818403018152919052602080820180516001600160e01b03166301ffc9a760e01b178152825192935060009283928392909183918a617530fa92503d91506000519050828015613628575060208210155b80156136345750600081115b979650505050505050565b81546060906001600160a01b03166136695760405162461bcd60e51b81526004016102cc90614f0f565b8254600090613680906001600160a01b03166134c5565b9050600080600080602085015160c01c90508087106136b15760405162461bcd60e51b81526004016102cc90614f0f565b806136bd886001614d96565b036136eb576000855190506028860194506008880285015160c01c935060088202600801810392505061370d565b6028850193506008870284015160c01c92506008600188010284015160c01c91505b60006137198484614dfe565b6001600160401b031690506000613731826020614d96565b6001600160401b0381111561374857613748613e3d565b6040519080825280601f01601f191660200182016040528015613772576020820181803683370190505b5090506020810160005b838110156137d8576000816001600160401b03891661379c886008614da9565b6137a7906028614d96565b6137b19190614d96565b6137bb9190614d96565b8a01518352506020918201916137d19082614d96565b905061377c565b505090815298975050505050505050565b606060006137f8600a80615020565b6138029084614dd6565b90506000613811600a80615020565b61381b9085614dea565b905060006138288361397f565b905060006138358361397f565b90505b600a815110156138695780604051602001613853919061502c565b6040516020818303038152906040529050613838565b818160405160200161387c929190615048565b604051602081830303815290604052945050505050919050565b6040805160078082528183019092526060918391600091602082018180368337019050509050602360f81b816000815181106138d4576138d46141ba565b60200101906001600160f81b031916908160001a90535060065b8015613960576f181899199a1a9b1b9c1cb0b131b232b360811b83600f166010811061391c5761391c6141ba565b1a60f81b828281518110613932576139326141ba565b60200101906001600160f81b031916908160001a90535060049290921c9161395981615084565b90506138ee565b508115612f815760405162461bcd60e51b81526004016102cc90614e55565b6060600061398c83613aa6565b60010190506000816001600160401b038111156139ab576139ab613e3d565b6040519080825280601f01601f1916602001820160405280156139d5576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846139df57509392505050565b606060008212613a305760405180602001604052806000815250613a4b565b604051806040016040528060018152602001602d60f81b8152505b613a5c613a5784613b7c565b61397f565b604051602001613a6d92919061509b565b6040516020818303038152906040529050919050565b60408051603f8301601f19168101909152818152818360208301863c9392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310613ae55772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310613b0f576904ee2d6d415b85acef8160201b830492506020015b662386f26fc100008310613b2d57662386f26fc10000830492506010015b6305f5e1008310613b45576305f5e100830492506008015b6127108310613b5957612710830492506004015b60648310613b6b576064830492506002015b600a83106102515760010192915050565b600080821215613b8f5781600003610251565b5090565b600060208284031215613ba557600080fd5b81356001600160e01b031981168114612f8157600080fd5b60005b83811015613bd8578181015183820152602001613bc0565b50506000910152565b60008151808452613bf9816020860160208601613bbd565b601f01601f19169290920160200192915050565b602081526000612f816020830184613be1565b6001600160a01b0381168114613c3557600080fd5b50565b8035613c4381613c20565b919050565b60008083601f840112613c5a57600080fd5b5081356001600160401b03811115613c7157600080fd5b6020830191508360208260051b85010111156133f457600080fd5b60008060008060608587031215613ca257600080fd5b8435613cad81613c20565b93506020850135925060408501356001600160401b03811115613ccf57600080fd5b613cdb87828801613c48565b95989497509550505050565b60008060408385031215613cfa57600080fd5b8235613d0581613c20565b946020939093013593505050565b60008282518085526020808601955060208260051b8401016020860160005b84811015613d6057601f19868403018952613d4e838351613be1565b98840198925090830190600101613d32565b5090979650505050505050565b608081526000613d806080830187613d13565b60ff959095166020830152506001600160a01b0392831660408201529116606090910152919050565b600080600060608486031215613dbe57600080fd5b8335613dc981613c20565b92506020840135613dd981613c20565b929592945050506040919091013590565b60008060008060808587031215613e0057600080fd5b8435613e0b81613c20565b9350602085013592506040850135613e2281613c20565b91506060850135613e3281613c20565b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b60405160e081016001600160401b0381118282101715613e7557613e75613e3d565b60405290565b604080519081016001600160401b0381118282101715613e7557613e75613e3d565b604051601f8201601f191681016001600160401b0381118282101715613ec557613ec5613e3d565b604052919050565b60006001600160401b03821115613ee657613ee6613e3d565b50601f01601f191660200190565b600082601f830112613f0557600080fd5b8135613f18613f1382613ecd565b613e9d565b818152846020838601011115613f2d57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215613f5f57600080fd5b8335613f6a81613c20565b92506020840135915060408401356001600160401b03811115613f8c57600080fd5b613f9886828701613ef4565b9150509250925092565b634e487b7160e01b600052602160045260246000fd5b60078110613fc857613fc8613fa2565b9052565b60098110613fc857613fc8613fa2565b60008282518085526020808601955060208260051b8401016020860160005b84811015613d6057601f19868403018952614017838351613be1565b98840198925090830190600101613ffb565b6020815261403d60208201835160ff169052565b600060208301516140516040840182613fb8565b5060408301516140646060840182613fcc565b50606083015165ffffffffffff811660808401525060808301516001600160a01b03811660a08401525060a083015160ff811660c08401525060c08301516101208060e08501526140b9610140850183613fdc565b60e086015161010086810191909152909501519301929092525090919050565b600082825180855260208086019550808260051b84010181860160005b84811015613d6057601f1986840301895281516040815181865261411c82870182613be1565b915050858201519150848103868601526141368183613be1565b9a86019a94505050908301906001016140f6565b602081526000612f8160208301846140d9565b6020815261416f602082018351613fcc565b60208201516040820152600060408301516080606084015261419460a0840182613be1565b90506060840151601f198483030160808501526141b18282613be1565b95945050505050565b634e487b7160e01b600052603260045260246000fd5b60008235603e198336030181126141e657600080fd5b9190910192915050565b6000808335601e1984360301811261420757600080fd5b8301803591506001600160401b0382111561422157600080fd5b6020019150368190038213156133f457600080fd5b634e487b7160e01b600052601160045260246000fd5b60ff818116838216019081111561025157610251614236565b6000823560de198336030181126141e657600080fd5b803560078110613c4357600080fd5b803560098110613c4357600080fd5b803565ffffffffffff81168114613c4357600080fd5b60006001600160401b038211156142c8576142c8613e3d565b5060051b60200190565b600082601f8301126142e357600080fd5b813560206142f3613f13836142af565b82815260059290921b8401810191818101908684111561431257600080fd5b8286015b848110156143515780356001600160401b038111156143355760008081fd5b6143438986838b0101613ef4565b845250918301918301614316565b509695505050505050565b600060e0823603121561436e57600080fd5b614376613e53565b61437f8361427b565b815261438d6020840161428a565b602082015261439e60408401614299565b60408201526143af60608401613c38565b606082015260808301356001600160401b038111156143cd57600080fd5b6143d9368286016142d2565b60808301525060a083013560a082015260c083013560c082015280915050919050565b6000808335601e1984360301811261441357600080fd5b83016020810192503590506001600160401b0381111561443257600080fd5b8036038213156133f457600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000838385526020808601955060208560051b8301018460005b87811015613d6057848303601f1901895261449f82886143fc565b6144aa858284614441565b9a86019a9450505090830190600101614484565b6001600160a01b038681168252602080830187905260806040808501829052848201879052600093919260a0929183870160058a901b880185018b885b8c81101561463a578a8303609f190184528135368f9003603e1901811261452157600080fd5b8e0161452d81806143fc565b87865261453d8887018284614441565b9150508782013560de1983360301811261455657600080fd5b858203898701529091019060e0614575826145708561427b565b613fb8565b61458089840161428a565b61458c8a840182613fcc565b5065ffffffffffff61459f898501614299565b16888301526060808401356145b381613c20565b8b1690830152828c013536849003601e190181126145d057600080fd5b830189810190356001600160401b038111156145eb57600080fd5b8060051b36038213156145fd57600080fd5b828e85015261460f838501828461446a565b858e0135858f015260c0958601359590940194909452505094870194935050908501906001016144fb565b505060ff8a1660608a0152965061465395505050505050565b9695505050505050565b60008235609e198336030181126141e657600080fd5b8015158114613c3557600080fd5b600060a0823603121561469357600080fd5b60405160a081016001600160401b0380821183831017156146b6576146b6613e3d565b8160405284359150808211156146cb57600080fd5b6146d736838701613ef4565b83526146e56020860161428a565b6020840152604085013560408401526060850135915061470482614673565b816060840152608085013591508082111561471e57600080fd5b5061472b36828601613ef4565b60808301525092915050565b600181811c9082168061474b57607f821691505b60208210810361476b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156113d4576000816000526020600020601f850160051c8101602086101561479a5750805b601f850160051c820191505b818110156147b9578281556001016147a6565b505050505050565b81516001600160401b038111156147da576147da613e3d565b6147ee816147e88454614737565b84614771565b602080601f831160018114614823576000841561480b5750858301515b600019600386901b1c1916600185901b1785556147b9565b600085815260208120601f198616915b8281101561485257888601518255948401946001909101908401614833565b50858210156148705787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60018060a01b0384168152826020820152606060408201526000825160a060608401526148b1610100840182613be1565b905060208401516148c56080850182613fcc565b50604084015160a08401526060840151151560c08401526080840151838203605f190160e08501526136348282613be1565b60008151808452602080850194506020840160005b838110156149315781516001600160a01b03168752958201959082019060010161490c565b509495945050505050565b6001600160a01b038616815260208082018690526080604080840182905283820186905260009260a091828601600589901b870184018a87805b8c811015614a24578a8403609f190185528235368f9003609e1901811261499b578283fd5b8e016149a781806143fc565b8a87526149b78b88018284614441565b9150506149c589830161428a565b6149d18a880182613fcc565b5087820135888701526060808301356149e981614673565b1515908701526149fb828c01836143fc565b92508682038c880152614a0f828483614441565b978a0197965050509287019250600101614976565b5050508781036060890152614a39818a6148f7565b9d9c50505050505050505050505050565b600060018201614a5c57614a5c614236565b5060010190565b60018060a01b03841681528260208201526060604082015260006141b160608301846140d9565b600082601f830112614a9b57600080fd5b8151614aa9613f1382613ecd565b818152846020838601011115614abe57600080fd5b614acf826020830160208701613bbd565b949350505050565b60006020808385031215614aea57600080fd5b82516001600160401b0380821115614b0157600080fd5b818501915085601f830112614b1557600080fd5b8151614b23613f13826142af565b81815260059190911b83018401908481019088831115614b4257600080fd5b8585015b83811015614bd557805185811115614b5e5760008081fd5b86016040818c03601f1901811315614b765760008081fd5b614b7e613e7b565b8983015188811115614b905760008081fd5b614b9e8e8c83870101614a8a565b825250908201519087821115614bb45760008081fd5b614bc28d8b84860101614a8a565b818b015285525050918601918601614b46565b5098975050505050505050565b600060ff821660ff8103614bf857614bf8614236565b60010192915050565b600060208284031215614c1357600080fd5b8151612f8181613c20565b600060208284031215614c3057600080fd5b612f818261427b565b600060208284031215614c4b57600080fd5b612f818261428a565b600060208284031215614c6657600080fd5b612f8182614299565b600060208284031215614c8157600080fd5b8135612f8181613c20565b6000808335601e19843603018112614ca357600080fd5b8301803591506001600160401b03821115614cbd57600080fd5b6020019150600581901b36038213156133f457600080fd5b602081526000614acf60208301848661446a565b602081526000612f816020830184613d13565b602080825260169082015275504d503a20496e76616c696420706172616d5479706560501b604082015260600190565b6020808252601f908201527f504d503a2073656c6563744f7074696f6e73206973206e6f7420656d70747900604082015260600190565b602080825260199082015278504d503a206d696e52616e6765203e3d206d617852616e676560381b604082015260600190565b8082018082111561025157610251614236565b808202811582820484141761025157610251614236565b634e487b7160e01b600052601260045260246000fd5b600082614de557614de5614dc0565b500490565b600082614df957614df9614dc0565b500690565b6001600160401b038281168282160390808211156120b5576120b5614236565b6020808252601e908201527f504d503a20706172616d2076616c7565206f7574206f6620626f756e64730000604082015260600190565b6020808252601690820152752826a81d1034b73b30b634b2103432bc1031b7b637b960511b604082015260600190565b600060208284031215614e9757600080fd5b8151612f8181614673565b6000815260008251614ebb816001850160208701613bbd565b9190910160010192915050565b6a600b5981380380925939f360a81b81528151600090614eef81600b850160208701613bbd565b91909101600b0192915050565b8181038181111561025157610251614236565b602080825260139082015272496e646578206f7574206f6620626f756e647360681b604082015260600190565b600181815b80851115614f77578160001904821115614f5d57614f5d614236565b80851615614f6a57918102915b93841c9390800290614f41565b509250929050565b600082614f8e57506001610251565b81614f9b57506000610251565b8160018114614fb15760028114614fbb57614fd7565b6001915050610251565b60ff841115614fcc57614fcc614236565b50506001821b610251565b5060208310610133831016604e8410600b8410161715614ffa575081810a610251565b6150048383614f3c565b806000190482111561501857615018614236565b029392505050565b6000612f818383614f7f565b600360fc1b815260008251614ebb816001850160208701613bbd565b6000835161505a818460208801613bbd565b601760f91b9083019081528351615078816001840160208801613bbd565b01600101949350505050565b60008161509357615093614236565b506000190190565b600083516150ad818460208801613bbd565b8351908301906150c1818360208801613bbd565b0194935050505056fea2646970667358221220a2aac35ccf5c3889192b0443bb9ca2301efa9f7bbc22105adbf31e0b32d0d71164736f6c63430008160033",
646
+ "linkReferences": {},
647
+ "deployedLinkReferences": {}
648
+ }