@arbitrum/nitro-contracts 2.1.0 → 3.0.0-alpha.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (503) hide show
  1. package/build/contracts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json +1 -1
  2. package/build/contracts/@openzeppelin/contracts/interfaces/draft-IERC1822.sol/IERC1822Proxiable.dbg.json +1 -1
  3. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.dbg.json +1 -1
  4. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol/ERC1967Proxy.json +2 -2
  5. package/build/contracts/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol/ERC1967Upgrade.dbg.json +1 -1
  6. package/build/contracts/@openzeppelin/contracts/proxy/Proxy.sol/Proxy.dbg.json +1 -1
  7. package/build/contracts/@openzeppelin/contracts/proxy/beacon/IBeacon.sol/IBeacon.dbg.json +1 -1
  8. package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.dbg.json +1 -1
  9. package/build/contracts/@openzeppelin/contracts/proxy/beacon/UpgradeableBeacon.sol/UpgradeableBeacon.json +2 -2
  10. package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.dbg.json +1 -1
  11. package/build/contracts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +2 -2
  12. package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.dbg.json +1 -1
  13. package/build/contracts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +2 -2
  14. package/build/contracts/@openzeppelin/contracts/proxy/utils/UUPSUpgradeable.sol/UUPSUpgradeable.dbg.json +1 -1
  15. package/build/contracts/@openzeppelin/contracts/security/ReentrancyGuard.sol/ReentrancyGuard.dbg.json +1 -1
  16. package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.dbg.json +1 -1
  17. package/build/contracts/@openzeppelin/contracts/token/ERC20/ERC20.sol/ERC20.json +2 -2
  18. package/build/contracts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json +1 -1
  19. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol/IERC20Metadata.dbg.json +1 -1
  20. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.dbg.json +4 -0
  21. package/build/contracts/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.json +86 -0
  22. package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.dbg.json +1 -1
  23. package/build/contracts/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol/SafeERC20.json +2 -2
  24. package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json +1 -1
  25. package/build/contracts/@openzeppelin/contracts/utils/Address.sol/Address.json +2 -2
  26. package/build/contracts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json +1 -1
  27. package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.dbg.json +4 -0
  28. package/build/contracts/@openzeppelin/contracts/utils/Create2.sol/Create2.json +10 -0
  29. package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.dbg.json +1 -1
  30. package/build/contracts/@openzeppelin/contracts/utils/StorageSlot.sol/StorageSlot.json +2 -2
  31. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json +1 -1
  32. package/build/contracts/@openzeppelin/contracts/utils/Strings.sol/Strings.json +2 -2
  33. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.dbg.json +1 -1
  34. package/build/contracts/@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol/AccessControlUpgradeable.json +13 -0
  35. package/build/contracts/@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol/IAccessControlUpgradeable.dbg.json +1 -1
  36. package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.dbg.json +1 -1
  37. package/build/contracts/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol/OwnableUpgradeable.json +13 -0
  38. package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.dbg.json +1 -1
  39. package/build/contracts/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol/Initializable.json +15 -1
  40. package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.dbg.json +1 -1
  41. package/build/contracts/@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol/PausableUpgradeable.json +13 -0
  42. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.dbg.json +1 -1
  43. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol/AddressUpgradeable.json +2 -2
  44. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.dbg.json +1 -1
  45. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol/ContextUpgradeable.json +15 -1
  46. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.dbg.json +4 -0
  47. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/Create2Upgradeable.sol/Create2Upgradeable.json +10 -0
  48. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.dbg.json +1 -1
  49. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StorageSlotUpgradeable.sol/StorageSlotUpgradeable.json +2 -2
  50. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.dbg.json +1 -1
  51. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol/StringsUpgradeable.json +2 -2
  52. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.dbg.json +1 -1
  53. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol/ERC165Upgradeable.json +13 -0
  54. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol/IERC165Upgradeable.dbg.json +1 -1
  55. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.dbg.json +4 -0
  56. package/build/contracts/@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol/EnumerableSetUpgradeable.json +10 -0
  57. package/build/contracts/src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.dbg.json +4 -0
  58. package/build/contracts/{@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.json → src/assertionStakingPool/AbsBoldStakingPool.sol/AbsBoldStakingPool.json} +41 -95
  59. package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.dbg.json +4 -0
  60. package/build/contracts/src/assertionStakingPool/AssertionStakingPool.sol/AssertionStakingPool.json +340 -0
  61. package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.dbg.json +4 -0
  62. package/build/contracts/src/assertionStakingPool/AssertionStakingPoolCreator.sol/AssertionStakingPoolCreator.json +89 -0
  63. package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.dbg.json +4 -0
  64. package/build/contracts/src/assertionStakingPool/EdgeStakingPool.sol/EdgeStakingPool.json +248 -0
  65. package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.dbg.json +4 -0
  66. package/build/contracts/src/assertionStakingPool/EdgeStakingPoolCreator.sol/EdgeStakingPoolCreator.json +83 -0
  67. package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.dbg.json +4 -0
  68. package/build/contracts/src/assertionStakingPool/StakingPoolCreatorUtils.sol/StakingPoolCreatorUtils.json +16 -0
  69. package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.dbg.json +4 -0
  70. package/build/contracts/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol/IAbsBoldStakingPool.json +140 -0
  71. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.dbg.json +4 -0
  72. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol/IAssertionStakingPool.json +324 -0
  73. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.dbg.json +4 -0
  74. package/build/contracts/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol/IAssertionStakingPoolCreator.json +84 -0
  75. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.dbg.json +4 -0
  76. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol/IEdgeStakingPool.json +232 -0
  77. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.dbg.json +4 -0
  78. package/build/contracts/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol/IEdgeStakingPoolCreator.json +78 -0
  79. package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.dbg.json +1 -1
  80. package/build/contracts/src/bridge/AbsBridge.sol/AbsBridge.json +13 -0
  81. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.dbg.json +1 -1
  82. package/build/contracts/src/bridge/AbsInbox.sol/AbsInbox.json +20 -7
  83. package/build/contracts/src/bridge/AbsOutbox.sol/AbsOutbox.dbg.json +1 -1
  84. package/build/contracts/src/bridge/Bridge.sol/Bridge.dbg.json +1 -1
  85. package/build/contracts/src/bridge/Bridge.sol/Bridge.json +15 -2
  86. package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.dbg.json +4 -0
  87. package/build/contracts/src/bridge/DelayBuffer.sol/DelayBuffer.json +24 -0
  88. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.dbg.json +1 -1
  89. package/build/contracts/src/bridge/ERC20Bridge.sol/ERC20Bridge.json +15 -2
  90. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.dbg.json +1 -1
  91. package/build/contracts/src/bridge/ERC20Inbox.sol/ERC20Inbox.json +22 -9
  92. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.dbg.json +1 -1
  93. package/build/contracts/src/bridge/ERC20Outbox.sol/ERC20Outbox.json +2 -2
  94. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.dbg.json +1 -1
  95. package/build/contracts/src/bridge/GasRefunder.sol/GasRefunder.json +2 -2
  96. package/build/contracts/src/bridge/IBridge.sol/IBridge.dbg.json +1 -1
  97. package/build/contracts/src/bridge/IDelayedMessageProvider.sol/IDelayedMessageProvider.dbg.json +1 -1
  98. package/build/contracts/src/bridge/IERC20Bridge.sol/IERC20Bridge.dbg.json +1 -1
  99. package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.dbg.json +1 -1
  100. package/build/contracts/src/bridge/IERC20Inbox.sol/IERC20Inbox.json +1 -1
  101. package/build/contracts/src/bridge/IEthBridge.sol/IEthBridge.dbg.json +1 -1
  102. package/build/contracts/src/bridge/IInbox.sol/IInbox.dbg.json +1 -1
  103. package/build/contracts/src/bridge/IInbox.sol/IInbox.json +1 -1
  104. package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.dbg.json +1 -1
  105. package/build/contracts/src/bridge/IInboxBase.sol/IInboxBase.json +1 -1
  106. package/build/contracts/src/bridge/IOutbox.sol/IOutbox.dbg.json +1 -1
  107. package/build/contracts/src/bridge/IOwnable.sol/IOwnable.dbg.json +1 -1
  108. package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.dbg.json +1 -1
  109. package/build/contracts/src/bridge/ISequencerInbox.sol/ISequencerInbox.json +441 -0
  110. package/build/contracts/src/bridge/Inbox.sol/Inbox.dbg.json +1 -1
  111. package/build/contracts/src/bridge/Inbox.sol/Inbox.json +22 -4
  112. package/build/contracts/src/bridge/Messages.sol/Messages.dbg.json +1 -1
  113. package/build/contracts/src/bridge/Messages.sol/Messages.json +2 -2
  114. package/build/contracts/src/bridge/Outbox.sol/Outbox.dbg.json +1 -1
  115. package/build/contracts/src/bridge/Outbox.sol/Outbox.json +2 -2
  116. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.dbg.json +1 -1
  117. package/build/contracts/src/bridge/SequencerInbox.sol/SequencerInbox.json +564 -7
  118. package/build/contracts/src/chain/CacheManager.sol/CacheManager.dbg.json +1 -1
  119. package/build/contracts/src/chain/CacheManager.sol/CacheManager.json +15 -2
  120. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.dbg.json +4 -0
  121. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/EdgeChallengeManager.json +1631 -0
  122. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/IEdgeChallengeManager.dbg.json +4 -0
  123. package/build/contracts/src/challengeV2/EdgeChallengeManager.sol/IEdgeChallengeManager.json +762 -0
  124. package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.dbg.json +4 -0
  125. package/build/contracts/src/challengeV2/IAssertionChain.sol/IAssertionChain.json +247 -0
  126. package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.dbg.json +4 -0
  127. package/build/contracts/src/challengeV2/libraries/ArrayUtilsLib.sol/ArrayUtilsLib.json +10 -0
  128. package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.dbg.json +4 -0
  129. package/build/contracts/src/challengeV2/libraries/ChallengeEdgeLib.sol/ChallengeEdgeLib.json +10 -0
  130. package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.dbg.json +4 -0
  131. package/build/contracts/src/challengeV2/libraries/EdgeChallengeManagerLib.sol/EdgeChallengeManagerLib.json +24 -0
  132. package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.dbg.json +4 -0
  133. package/build/contracts/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol/MerkleTreeAccumulatorLib.json +24 -0
  134. package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.dbg.json +4 -0
  135. package/build/contracts/src/challengeV2/libraries/UintUtilsLib.sol/UintUtilsLib.json +10 -0
  136. package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.dbg.json +1 -1
  137. package/build/contracts/src/libraries/AddressAliasHelper.sol/AddressAliasHelper.json +2 -2
  138. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.dbg.json +1 -1
  139. package/build/contracts/src/libraries/AdminFallbackProxy.sol/AdminFallbackProxy.json +2 -2
  140. package/build/contracts/src/libraries/AdminFallbackProxy.sol/DoubleLogicERC1967Upgrade.dbg.json +1 -1
  141. package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.dbg.json +1 -1
  142. package/build/contracts/src/libraries/ArbitrumChecker.sol/ArbitrumChecker.json +2 -2
  143. package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.dbg.json +1 -1
  144. package/build/contracts/src/libraries/CryptographyPrimitives.sol/CryptographyPrimitives.json +2 -2
  145. package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.dbg.json +1 -1
  146. package/build/contracts/src/libraries/DecimalsConverterHelper.sol/DecimalsConverterHelper.json +2 -2
  147. package/build/contracts/src/libraries/DelegateCallAware.sol/DelegateCallAware.dbg.json +1 -1
  148. package/build/contracts/src/libraries/DoubleLogicUUPSUpgradeable.sol/DoubleLogicUUPSUpgradeable.dbg.json +1 -1
  149. package/build/contracts/src/libraries/GasRefundEnabled.sol/GasRefundEnabled.dbg.json +1 -1
  150. package/build/contracts/src/libraries/IGasRefunder.sol/IGasRefunder.dbg.json +1 -1
  151. package/build/contracts/src/libraries/IReader4844.sol/IReader4844.dbg.json +1 -1
  152. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.dbg.json +1 -1
  153. package/build/contracts/src/libraries/MerkleLib.sol/MerkleLib.json +2 -2
  154. package/build/contracts/src/libraries/UUPSNotUpgradeable.sol/UUPSNotUpgradeable.dbg.json +1 -1
  155. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.dbg.json +1 -1
  156. package/build/contracts/src/mocks/Benchmarks.sol/Benchmarks.json +2 -2
  157. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.dbg.json +1 -1
  158. package/build/contracts/src/mocks/BridgeStub.sol/BridgeStub.json +8 -8
  159. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.dbg.json +1 -1
  160. package/build/contracts/src/mocks/BridgeUnproxied.sol/BridgeUnproxied.json +28 -2
  161. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.dbg.json +1 -1
  162. package/build/contracts/src/mocks/InboxStub.sol/InboxStub.json +2 -2
  163. package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.dbg.json +4 -0
  164. package/build/contracts/src/mocks/MerkleTreeAccess.sol/MerkleTreeAccess.json +227 -0
  165. package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.dbg.json +4 -0
  166. package/build/contracts/src/mocks/MockRollupEventInbox.sol/MockRollupEventInbox.json +133 -0
  167. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.dbg.json +1 -1
  168. package/build/contracts/src/mocks/MultiCallTest.sol/MultiCallTest.json +2 -2
  169. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.dbg.json +1 -1
  170. package/build/contracts/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol/PendingBlkTimeAndNrAdvanceCheck.json +2 -2
  171. package/build/contracts/src/mocks/Program.sol/ProgramTest.dbg.json +1 -1
  172. package/build/contracts/src/mocks/Program.sol/ProgramTest.json +2 -2
  173. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.dbg.json +1 -1
  174. package/build/contracts/src/mocks/ProxyAdminForBinding.sol/ProxyAdminForBinding.json +2 -2
  175. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.dbg.json +1 -1
  176. package/build/contracts/src/mocks/SdkStorage.sol/SdkStorage.json +2 -2
  177. package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.dbg.json +4 -0
  178. package/build/contracts/src/mocks/SequencerInboxBlobMock.sol/SequencerInboxBlobMock.json +1632 -0
  179. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.dbg.json +1 -1
  180. package/build/contracts/src/mocks/SequencerInboxStub.sol/SequencerInboxStub.json +564 -7
  181. package/build/contracts/src/mocks/Simple.sol/Simple.dbg.json +1 -1
  182. package/build/contracts/src/mocks/Simple.sol/Simple.json +2 -2
  183. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.dbg.json +1 -1
  184. package/build/contracts/src/mocks/SimpleCacheManager.sol/SimpleCacheManager.json +2 -2
  185. package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.dbg.json +4 -0
  186. package/build/contracts/src/mocks/SimpleOneStepProofEntry.sol/SimpleOneStepProofEntry.json +142 -0
  187. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.dbg.json +1 -1
  188. package/build/contracts/src/mocks/SimpleProxy.sol/SimpleProxy.json +2 -2
  189. package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.dbg.json +4 -0
  190. package/build/contracts/src/mocks/TestWETH9.sol/IWETH9.json +31 -0
  191. package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.dbg.json +4 -0
  192. package/build/contracts/src/mocks/TestWETH9.sol/TestWETH9.json +317 -0
  193. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.dbg.json +1 -1
  194. package/build/contracts/src/mocks/UpgradeExecutorMock.sol/UpgradeExecutorMock.json +15 -2
  195. package/build/contracts/src/node-interface/NodeInterface.sol/NodeInterface.dbg.json +1 -1
  196. package/build/contracts/src/node-interface/NodeInterfaceDebug.sol/NodeInterfaceDebug.dbg.json +1 -1
  197. package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.dbg.json +1 -1
  198. package/build/contracts/src/osp/HashProofHelper.sol/HashProofHelper.json +2 -2
  199. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.dbg.json +1 -1
  200. package/build/contracts/src/osp/IOneStepProofEntry.sol/IOneStepProofEntry.json +33 -9
  201. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.dbg.json +1 -1
  202. package/build/contracts/src/osp/IOneStepProofEntry.sol/OneStepProofEntryLib.json +2 -2
  203. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.dbg.json +1 -1
  204. package/build/contracts/src/osp/IOneStepProver.sol/IOneStepProver.json +5 -0
  205. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.dbg.json +1 -1
  206. package/build/contracts/src/osp/OneStepProofEntry.sol/OneStepProofEntry.json +35 -11
  207. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.dbg.json +1 -1
  208. package/build/contracts/src/osp/OneStepProver0.sol/OneStepProver0.json +7 -2
  209. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.dbg.json +1 -1
  210. package/build/contracts/src/osp/OneStepProverHostIo.sol/OneStepProverHostIo.json +7 -2
  211. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.dbg.json +1 -1
  212. package/build/contracts/src/osp/OneStepProverMath.sol/OneStepProverMath.json +7 -2
  213. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.dbg.json +1 -1
  214. package/build/contracts/src/osp/OneStepProverMemory.sol/OneStepProverMemory.json +7 -2
  215. package/build/contracts/src/precompiles/ArbAddressTable.sol/ArbAddressTable.dbg.json +1 -1
  216. package/build/contracts/src/precompiles/ArbAggregator.sol/ArbAggregator.dbg.json +1 -1
  217. package/build/contracts/src/precompiles/ArbBLS.sol/ArbBLS.dbg.json +1 -1
  218. package/build/contracts/src/precompiles/ArbDebug.sol/ArbDebug.dbg.json +1 -1
  219. package/build/contracts/src/precompiles/ArbFunctionTable.sol/ArbFunctionTable.dbg.json +1 -1
  220. package/build/contracts/src/precompiles/ArbGasInfo.sol/ArbGasInfo.dbg.json +1 -1
  221. package/build/contracts/src/precompiles/ArbInfo.sol/ArbInfo.dbg.json +1 -1
  222. package/build/contracts/src/precompiles/ArbOwner.sol/ArbOwner.dbg.json +1 -1
  223. package/build/contracts/src/precompiles/ArbOwnerPublic.sol/ArbOwnerPublic.dbg.json +1 -1
  224. package/build/contracts/src/precompiles/ArbRetryableTx.sol/ArbRetryableTx.dbg.json +1 -1
  225. package/build/contracts/src/precompiles/ArbStatistics.sol/ArbStatistics.dbg.json +1 -1
  226. package/build/contracts/src/precompiles/ArbSys.sol/ArbSys.dbg.json +1 -1
  227. package/build/contracts/src/precompiles/ArbWasm.sol/ArbWasm.dbg.json +1 -1
  228. package/build/contracts/src/precompiles/ArbWasmCache.sol/ArbWasmCache.dbg.json +1 -1
  229. package/build/contracts/src/precompiles/ArbosActs.sol/ArbosActs.dbg.json +1 -1
  230. package/build/contracts/src/precompiles/ArbosTest.sol/ArbosTest.dbg.json +1 -1
  231. package/build/contracts/src/rollup/AbsRollupEventInbox.sol/AbsRollupEventInbox.dbg.json +1 -1
  232. package/build/contracts/src/rollup/Assertion.sol/AssertionNodeLib.dbg.json +4 -0
  233. package/build/contracts/src/rollup/{Node.sol/NodeLib.json → Assertion.sol/AssertionNodeLib.json} +4 -4
  234. package/build/contracts/src/rollup/AssertionState.sol/AssertionStateLib.dbg.json +4 -0
  235. package/build/contracts/src/{challenge/ChallengeLib.sol/ChallengeLib.json → rollup/AssertionState.sol/AssertionStateLib.json} +4 -4
  236. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.dbg.json +4 -0
  237. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/BOLDUpgradeAction.json +807 -0
  238. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.dbg.json +4 -0
  239. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ConstantArrayStorage.json +35 -0
  240. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.dbg.json +4 -0
  241. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollup.json +361 -0
  242. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.dbg.json +4 -0
  243. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/IOldRollupAdmin.json +38 -0
  244. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.dbg.json +4 -0
  245. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/ISeqInboxPostUpgradeInit.json +41 -0
  246. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.dbg.json +4 -0
  247. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/RollupReader.json +385 -0
  248. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.dbg.json +4 -0
  249. package/build/contracts/src/rollup/BOLDUpgradeAction.sol/StateHashPreImageLookup.json +203 -0
  250. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.dbg.json +1 -1
  251. package/build/contracts/src/rollup/BridgeCreator.sol/BridgeCreator.json +62 -10
  252. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.dbg.json +1 -1
  253. package/build/contracts/src/rollup/DeployHelper.sol/DeployHelper.json +2 -2
  254. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.dbg.json +1 -1
  255. package/build/contracts/src/rollup/ERC20RollupEventInbox.sol/ERC20RollupEventInbox.json +2 -2
  256. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.dbg.json +1 -1
  257. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/FactoryDeployerHelper.json +2 -2
  258. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IDeployHelper.dbg.json +1 -1
  259. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20.dbg.json +1 -1
  260. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IERC20Bridge.dbg.json +1 -1
  261. package/build/contracts/src/rollup/FactoryDeployerHelper.sol/IInboxBase.dbg.json +1 -1
  262. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.dbg.json +1 -1
  263. package/build/contracts/src/rollup/IRollupAdmin.sol/IRollupAdmin.json +473 -99
  264. package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.dbg.json +1 -1
  265. package/build/contracts/src/rollup/IRollupCore.sol/IRollupCore.json +315 -221
  266. package/build/contracts/src/rollup/IRollupEventInbox.sol/IRollupEventInbox.dbg.json +1 -1
  267. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.dbg.json +1 -1
  268. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUser.json +678 -499
  269. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.dbg.json +1 -1
  270. package/build/contracts/src/rollup/RollupAdminLogic.sol/RollupAdminLogic.json +806 -435
  271. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.dbg.json +1 -1
  272. package/build/contracts/src/rollup/RollupCore.sol/RollupCore.json +323 -235
  273. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.dbg.json +1 -1
  274. package/build/contracts/src/rollup/RollupCreator.sol/RollupCreator.json +98 -36
  275. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.dbg.json +1 -1
  276. package/build/contracts/src/rollup/RollupEventInbox.sol/RollupEventInbox.json +2 -2
  277. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.dbg.json +1 -1
  278. package/build/contracts/src/rollup/RollupLib.sol/RollupLib.json +2 -2
  279. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.dbg.json +1 -1
  280. package/build/contracts/src/rollup/RollupProxy.sol/RollupProxy.json +97 -16
  281. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.dbg.json +1 -1
  282. package/build/contracts/src/rollup/RollupUserLogic.sol/RollupUserLogic.json +924 -535
  283. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.dbg.json +1 -1
  284. package/build/contracts/src/rollup/ValidatorWallet.sol/ValidatorWallet.json +15 -43
  285. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.dbg.json +1 -1
  286. package/build/contracts/src/rollup/ValidatorWalletCreator.sol/ValidatorWalletCreator.json +2 -2
  287. package/build/contracts/src/state/Deserialize.sol/Deserialize.dbg.json +1 -1
  288. package/build/contracts/src/state/Deserialize.sol/Deserialize.json +2 -2
  289. package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.dbg.json +1 -1
  290. package/build/contracts/src/state/GlobalState.sol/GlobalStateLib.json +2 -2
  291. package/build/contracts/src/state/Instructions.sol/Instructions.dbg.json +1 -1
  292. package/build/contracts/src/state/Instructions.sol/Instructions.json +2 -2
  293. package/build/contracts/src/state/Machine.sol/MachineLib.dbg.json +1 -1
  294. package/build/contracts/src/state/Machine.sol/MachineLib.json +2 -2
  295. package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.dbg.json +1 -1
  296. package/build/contracts/src/state/MerkleProof.sol/MerkleProofLib.json +2 -2
  297. package/build/contracts/src/state/Module.sol/ModuleLib.dbg.json +1 -1
  298. package/build/contracts/src/state/Module.sol/ModuleLib.json +2 -2
  299. package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.dbg.json +1 -1
  300. package/build/contracts/src/state/ModuleMemory.sol/ModuleMemoryLib.json +2 -2
  301. package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.dbg.json +1 -1
  302. package/build/contracts/src/state/ModuleMemoryCompact.sol/ModuleMemoryCompactLib.json +2 -2
  303. package/build/contracts/src/state/MultiStack.sol/MultiStackLib.dbg.json +1 -1
  304. package/build/contracts/src/state/MultiStack.sol/MultiStackLib.json +2 -2
  305. package/build/contracts/src/state/PcArray.sol/PcArrayLib.dbg.json +1 -1
  306. package/build/contracts/src/state/PcArray.sol/PcArrayLib.json +2 -2
  307. package/build/contracts/src/state/StackFrame.sol/StackFrameLib.dbg.json +1 -1
  308. package/build/contracts/src/state/StackFrame.sol/StackFrameLib.json +2 -2
  309. package/build/contracts/src/state/Value.sol/ValueLib.dbg.json +1 -1
  310. package/build/contracts/src/state/Value.sol/ValueLib.json +2 -2
  311. package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.dbg.json +1 -1
  312. package/build/contracts/src/state/ValueArray.sol/ValueArrayLib.json +2 -2
  313. package/build/contracts/src/state/ValueStack.sol/ValueStackLib.dbg.json +1 -1
  314. package/build/contracts/src/state/ValueStack.sol/ValueStackLib.json +2 -2
  315. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.dbg.json +1 -1
  316. package/build/contracts/src/test-helpers/BridgeTester.sol/BridgeTester.json +15 -2
  317. package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.dbg.json +1 -1
  318. package/build/contracts/src/test-helpers/CryptographyPrimitivesTester.sol/CryptographyPrimitivesTester.json +2 -2
  319. package/build/contracts/src/test-helpers/EthVault.sol/EthVault.dbg.json +1 -1
  320. package/build/contracts/src/test-helpers/EthVault.sol/EthVault.json +2 -2
  321. package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.dbg.json +1 -1
  322. package/build/contracts/src/test-helpers/MessageTester.sol/MessageTester.json +2 -2
  323. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.dbg.json +1 -1
  324. package/build/contracts/src/test-helpers/OutboxWithoutOptTester.sol/OutboxWithoutOptTester.json +2 -2
  325. package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.dbg.json +1 -1
  326. package/build/contracts/src/test-helpers/RollupMock.sol/RollupMock.json +2 -15
  327. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.dbg.json +1 -1
  328. package/build/contracts/src/test-helpers/TestToken.sol/TestToken.json +2 -2
  329. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.dbg.json +1 -1
  330. package/build/contracts/src/test-helpers/ValueArrayTester.sol/ValueArrayTester.json +2 -2
  331. package/out/yul/Reader4844.yul/Reader4844.json +1 -1
  332. package/package.json +15 -5
  333. package/src/assertionStakingPool/AbsBoldStakingPool.sol +66 -0
  334. package/src/assertionStakingPool/AssertionStakingPool.sol +70 -0
  335. package/src/assertionStakingPool/AssertionStakingPoolCreator.sol +35 -0
  336. package/src/assertionStakingPool/EdgeStakingPool.sol +57 -0
  337. package/src/assertionStakingPool/EdgeStakingPoolCreator.sol +34 -0
  338. package/src/assertionStakingPool/StakingPoolCreatorUtils.sol +25 -0
  339. package/src/assertionStakingPool/interfaces/IAbsBoldStakingPool.sol +41 -0
  340. package/src/assertionStakingPool/interfaces/IAssertionStakingPool.sol +36 -0
  341. package/src/assertionStakingPool/interfaces/IAssertionStakingPoolCreator.sol +31 -0
  342. package/src/assertionStakingPool/interfaces/IEdgeStakingPool.sol +27 -0
  343. package/src/assertionStakingPool/interfaces/IEdgeStakingPoolCreator.sol +28 -0
  344. package/src/bridge/AbsBridge.sol +38 -48
  345. package/src/bridge/AbsInbox.sol +88 -97
  346. package/src/bridge/AbsOutbox.sol +23 -37
  347. package/src/bridge/Bridge.sol +6 -4
  348. package/src/bridge/DelayBuffer.sol +123 -0
  349. package/src/bridge/DelayBufferTypes.sol +38 -0
  350. package/src/bridge/ERC20Bridge.sol +8 -4
  351. package/src/bridge/ERC20Inbox.sol +46 -53
  352. package/src/bridge/ERC20Outbox.sol +7 -3
  353. package/src/bridge/GasRefunder.sol +38 -24
  354. package/src/bridge/IBridge.sol +30 -21
  355. package/src/bridge/IERC20Bridge.sol +1 -1
  356. package/src/bridge/IERC20Inbox.sol +4 -2
  357. package/src/bridge/IEthBridge.sol +4 -2
  358. package/src/bridge/IInbox.sol +4 -2
  359. package/src/bridge/IInboxBase.sol +17 -13
  360. package/src/bridge/IOutbox.sol +13 -8
  361. package/src/bridge/ISequencerInbox.sol +118 -13
  362. package/src/bridge/Inbox.sol +131 -151
  363. package/src/bridge/Messages.sol +48 -18
  364. package/src/bridge/Outbox.sol +6 -2
  365. package/src/bridge/SequencerInbox.sol +339 -274
  366. package/src/chain/CacheManager.sol +49 -18
  367. package/src/challengeV2/EdgeChallengeManager.sol +783 -0
  368. package/src/challengeV2/IAssertionChain.sol +39 -0
  369. package/src/challengeV2/libraries/ArrayUtilsLib.sol +61 -0
  370. package/src/challengeV2/libraries/ChallengeEdgeLib.sol +333 -0
  371. package/src/challengeV2/libraries/ChallengeErrors.sol +108 -0
  372. package/src/challengeV2/libraries/EdgeChallengeManagerLib.sol +930 -0
  373. package/src/challengeV2/libraries/Enums.sol +26 -0
  374. package/src/challengeV2/libraries/MerkleTreeAccumulatorLib.sol +390 -0
  375. package/src/challengeV2/libraries/UintUtilsLib.sol +74 -0
  376. package/src/libraries/AddressAliasHelper.sol +6 -2
  377. package/src/libraries/AdminFallbackProxy.sol +8 -4
  378. package/src/libraries/ArbitrumChecker.sol +3 -4
  379. package/src/libraries/CryptographyPrimitives.sol +39 -46
  380. package/src/libraries/DecimalsConverterHelper.sol +2 -4
  381. package/src/libraries/DoubleLogicUUPSUpgradeable.sol +10 -7
  382. package/src/libraries/Error.sol +18 -3
  383. package/src/libraries/GasRefundEnabled.sol +3 -4
  384. package/src/libraries/MerkleLib.sol +6 -5
  385. package/src/libraries/UUPSNotUpgradeable.sol +2 -4
  386. package/src/mocks/BridgeStub.sol +50 -48
  387. package/src/mocks/BridgeUnproxied.sol +2 -0
  388. package/src/mocks/InboxStub.sol +22 -17
  389. package/src/mocks/MerkleTreeAccess.sol +72 -0
  390. package/src/mocks/MockRollupEventInbox.sol +59 -0
  391. package/src/mocks/MultiCallTest.sol +3 -1
  392. package/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol +3 -1
  393. package/src/mocks/Program.sol +9 -7
  394. package/src/mocks/SequencerInboxBlobMock.sol +38 -0
  395. package/src/mocks/SequencerInboxStub.sol +9 -12
  396. package/src/mocks/Simple.sol +13 -25
  397. package/src/mocks/SimpleCacheManager.sol +10 -3
  398. package/src/mocks/SimpleOneStepProofEntry.sol +60 -0
  399. package/src/mocks/SimpleProxy.sol +3 -1
  400. package/src/mocks/TestWETH9.sol +30 -0
  401. package/src/mocks/UpgradeExecutorMock.sol +10 -17
  402. package/src/node-interface/NodeInterface.sol +23 -22
  403. package/src/node-interface/NodeInterfaceDebug.sol +5 -3
  404. package/src/osp/HashProofHelper.sol +9 -10
  405. package/src/osp/IOneStepProofEntry.sol +14 -9
  406. package/src/osp/IOneStepProver.sol +1 -0
  407. package/src/osp/OneStepProofEntry.sol +63 -54
  408. package/src/osp/OneStepProver0.sol +14 -27
  409. package/src/osp/OneStepProverHostIo.sol +31 -58
  410. package/src/osp/OneStepProverMath.sol +15 -23
  411. package/src/osp/OneStepProverMemory.sol +9 -23
  412. package/src/precompiles/ArbAddressTable.sol +19 -9
  413. package/src/precompiles/ArbAggregator.sol +12 -4
  414. package/src/precompiles/ArbBLS.sol +1 -3
  415. package/src/precompiles/ArbDebug.sol +5 -11
  416. package/src/precompiles/ArbFunctionTable.sol +7 -10
  417. package/src/precompiles/ArbGasInfo.sol +9 -43
  418. package/src/precompiles/ArbInfo.sol +6 -2
  419. package/src/precompiles/ArbOwner.sol +101 -34
  420. package/src/precompiles/ArbOwnerPublic.sol +6 -2
  421. package/src/precompiles/ArbRetryableTx.sol +15 -5
  422. package/src/precompiles/ArbStatistics.sol +1 -8
  423. package/src/precompiles/ArbSys.sol +16 -18
  424. package/src/precompiles/ArbWasm.sol +24 -14
  425. package/src/precompiles/ArbWasmCache.sol +15 -5
  426. package/src/precompiles/ArbosTest.sol +3 -1
  427. package/src/rollup/AbsRollupEventInbox.sol +15 -16
  428. package/src/rollup/Assertion.sol +100 -0
  429. package/src/rollup/AssertionState.sol +29 -0
  430. package/src/rollup/BOLDUpgradeAction.sol +631 -0
  431. package/src/rollup/BridgeCreator.sol +42 -15
  432. package/src/rollup/Config.sol +15 -7
  433. package/src/rollup/DeployHelper.sol +12 -31
  434. package/src/rollup/ERC20RollupEventInbox.sol +8 -9
  435. package/src/rollup/FactoryDeployerHelper.sol +8 -10
  436. package/src/rollup/IRollupAdmin.sol +127 -45
  437. package/src/rollup/IRollupCore.sol +64 -84
  438. package/src/rollup/IRollupEventInbox.sol +3 -1
  439. package/src/rollup/IRollupLogic.sol +35 -72
  440. package/src/rollup/RollupAdminLogic.sol +224 -203
  441. package/src/rollup/RollupCore.sol +407 -428
  442. package/src/rollup/RollupCreator.sol +88 -75
  443. package/src/rollup/RollupEventInbox.sol +7 -7
  444. package/src/rollup/RollupLib.sol +50 -86
  445. package/src/rollup/RollupProxy.sol +8 -12
  446. package/src/rollup/RollupUserLogic.sol +279 -644
  447. package/src/rollup/ValidatorUtils.sol +0 -242
  448. package/src/rollup/ValidatorWallet.sol +22 -38
  449. package/src/rollup/ValidatorWalletCreator.sol +8 -8
  450. package/src/state/Deserialize.sol +74 -96
  451. package/src/state/GlobalState.sol +74 -20
  452. package/src/state/Instructions.sol +4 -3
  453. package/src/state/Machine.sol +18 -19
  454. package/src/state/Module.sol +14 -13
  455. package/src/state/ModuleMemory.sol +6 -25
  456. package/src/state/ModuleMemoryCompact.sol +3 -1
  457. package/src/state/MultiStack.sol +16 -20
  458. package/src/state/PcArray.sol +7 -7
  459. package/src/state/StackFrame.sol +21 -14
  460. package/src/state/Value.sol +18 -6
  461. package/src/state/ValueArray.sol +7 -7
  462. package/src/state/ValueStack.sol +9 -3
  463. package/src/test-helpers/BridgeTester.sol +32 -42
  464. package/src/test-helpers/CryptographyPrimitivesTester.sol +12 -13
  465. package/src/test-helpers/EthVault.sol +4 -2
  466. package/src/test-helpers/InterfaceCompatibilityTester.sol +1 -1
  467. package/src/test-helpers/MessageTester.sol +3 -10
  468. package/src/test-helpers/OutboxWithoutOptTester.sol +12 -19
  469. package/src/test-helpers/RollupMock.sol +3 -7
  470. package/src/test-helpers/TestToken.sol +4 -2
  471. package/build/contracts/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol/IERC20Upgradeable.dbg.json +0 -4
  472. package/build/contracts/src/challenge/ChallengeLib.sol/ChallengeLib.dbg.json +0 -4
  473. package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.dbg.json +0 -4
  474. package/build/contracts/src/challenge/ChallengeManager.sol/ChallengeManager.json +0 -746
  475. package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.dbg.json +0 -4
  476. package/build/contracts/src/challenge/IChallengeManager.sol/IChallengeManager.json +0 -441
  477. package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.dbg.json +0 -4
  478. package/build/contracts/src/challenge/IChallengeResultReceiver.sol/IChallengeResultReceiver.json +0 -34
  479. package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.dbg.json +0 -4
  480. package/build/contracts/src/mocks/MockResultReceiver.sol/MockResultReceiver.json +0 -188
  481. package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.dbg.json +0 -4
  482. package/build/contracts/src/mocks/SingleExecutionChallenge.sol/SingleExecutionChallenge.json +0 -797
  483. package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.dbg.json +0 -4
  484. package/build/contracts/src/mocks/TimedOutChallengeManager.sol/TimedOutChallengeManager.json +0 -746
  485. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.dbg.json +0 -4
  486. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserAbs.json +0 -1332
  487. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.dbg.json +0 -4
  488. package/build/contracts/src/rollup/IRollupLogic.sol/IRollupUserERC20.json +0 -1466
  489. package/build/contracts/src/rollup/Node.sol/NodeLib.dbg.json +0 -4
  490. package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.dbg.json +0 -4
  491. package/build/contracts/src/rollup/RollupUserLogic.sol/AbsRollupUserLogic.json +0 -1614
  492. package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.dbg.json +0 -4
  493. package/build/contracts/src/rollup/RollupUserLogic.sol/ERC20RollupUserLogic.json +0 -1748
  494. package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.dbg.json +0 -4
  495. package/build/contracts/src/rollup/ValidatorUtils.sol/ValidatorUtils.json +0 -379
  496. package/src/challenge/ChallengeLib.sol +0 -88
  497. package/src/challenge/ChallengeManager.sol +0 -375
  498. package/src/challenge/IChallengeManager.sol +0 -86
  499. package/src/challenge/IChallengeResultReceiver.sol +0 -13
  500. package/src/mocks/MockResultReceiver.sol +0 -59
  501. package/src/mocks/SingleExecutionChallenge.sol +0 -41
  502. package/src/mocks/TimedOutChallengeManager.sol +0 -13
  503. package/src/rollup/Node.sol +0 -113
@@ -0,0 +1,1631 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "EdgeChallengeManager",
4
+ "sourceName": "src/challengeV2/EdgeChallengeManager.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [],
8
+ "stateMutability": "nonpayable",
9
+ "type": "constructor"
10
+ },
11
+ {
12
+ "inputs": [
13
+ {
14
+ "internalType": "address",
15
+ "name": "account",
16
+ "type": "address"
17
+ },
18
+ {
19
+ "internalType": "bytes32",
20
+ "name": "mutualId",
21
+ "type": "bytes32"
22
+ }
23
+ ],
24
+ "name": "AccountHasMadeLayerZeroRival",
25
+ "type": "error"
26
+ },
27
+ {
28
+ "inputs": [],
29
+ "name": "AssertionHashEmpty",
30
+ "type": "error"
31
+ },
32
+ {
33
+ "inputs": [
34
+ {
35
+ "internalType": "bytes32",
36
+ "name": "h1",
37
+ "type": "bytes32"
38
+ },
39
+ {
40
+ "internalType": "bytes32",
41
+ "name": "h2",
42
+ "type": "bytes32"
43
+ }
44
+ ],
45
+ "name": "AssertionHashMismatch",
46
+ "type": "error"
47
+ },
48
+ {
49
+ "inputs": [],
50
+ "name": "AssertionNoSibling",
51
+ "type": "error"
52
+ },
53
+ {
54
+ "inputs": [],
55
+ "name": "AssertionNotPending",
56
+ "type": "error"
57
+ },
58
+ {
59
+ "inputs": [
60
+ {
61
+ "internalType": "uint8",
62
+ "name": "levels",
63
+ "type": "uint8"
64
+ }
65
+ ],
66
+ "name": "BigStepLevelsTooMany",
67
+ "type": "error"
68
+ },
69
+ {
70
+ "inputs": [
71
+ {
72
+ "internalType": "uint256",
73
+ "name": "actual",
74
+ "type": "uint256"
75
+ },
76
+ {
77
+ "internalType": "uint256",
78
+ "name": "expected",
79
+ "type": "uint256"
80
+ }
81
+ ],
82
+ "name": "CachedTimeSufficient",
83
+ "type": "error"
84
+ },
85
+ {
86
+ "inputs": [
87
+ {
88
+ "internalType": "bytes32",
89
+ "name": "edgeId",
90
+ "type": "bytes32"
91
+ },
92
+ {
93
+ "internalType": "bytes32",
94
+ "name": "lowerChildId",
95
+ "type": "bytes32"
96
+ },
97
+ {
98
+ "internalType": "bytes32",
99
+ "name": "upperChildId",
100
+ "type": "bytes32"
101
+ }
102
+ ],
103
+ "name": "ChildrenAlreadySet",
104
+ "type": "error"
105
+ },
106
+ {
107
+ "inputs": [
108
+ {
109
+ "internalType": "uint8",
110
+ "name": "argLevel",
111
+ "type": "uint8"
112
+ },
113
+ {
114
+ "internalType": "uint8",
115
+ "name": "claimLevel",
116
+ "type": "uint8"
117
+ }
118
+ ],
119
+ "name": "ClaimEdgeInvalidLevel",
120
+ "type": "error"
121
+ },
122
+ {
123
+ "inputs": [
124
+ {
125
+ "internalType": "bytes32",
126
+ "name": "claimId",
127
+ "type": "bytes32"
128
+ }
129
+ ],
130
+ "name": "ClaimEdgeNotLengthOneRival",
131
+ "type": "error"
132
+ },
133
+ {
134
+ "inputs": [],
135
+ "name": "ClaimEdgeNotPending",
136
+ "type": "error"
137
+ },
138
+ {
139
+ "inputs": [
140
+ {
141
+ "internalType": "bytes32",
142
+ "name": "edgeId",
143
+ "type": "bytes32"
144
+ }
145
+ ],
146
+ "name": "EdgeAlreadyExists",
147
+ "type": "error"
148
+ },
149
+ {
150
+ "inputs": [
151
+ {
152
+ "internalType": "bytes32",
153
+ "name": "edgeId",
154
+ "type": "bytes32"
155
+ }
156
+ ],
157
+ "name": "EdgeAlreadyRefunded",
158
+ "type": "error"
159
+ },
160
+ {
161
+ "inputs": [
162
+ {
163
+ "internalType": "bytes32",
164
+ "name": "edgeId",
165
+ "type": "bytes32"
166
+ },
167
+ {
168
+ "internalType": "bytes32",
169
+ "name": "claimingEdgeId",
170
+ "type": "bytes32"
171
+ }
172
+ ],
173
+ "name": "EdgeClaimMismatch",
174
+ "type": "error"
175
+ },
176
+ {
177
+ "inputs": [
178
+ {
179
+ "internalType": "bytes32",
180
+ "name": "edgeId1",
181
+ "type": "bytes32"
182
+ },
183
+ {
184
+ "internalType": "bytes32",
185
+ "name": "edgeId2",
186
+ "type": "bytes32"
187
+ },
188
+ {
189
+ "internalType": "uint8",
190
+ "name": "level1",
191
+ "type": "uint8"
192
+ },
193
+ {
194
+ "internalType": "uint8",
195
+ "name": "level2",
196
+ "type": "uint8"
197
+ }
198
+ ],
199
+ "name": "EdgeLevelInvalid",
200
+ "type": "error"
201
+ },
202
+ {
203
+ "inputs": [
204
+ {
205
+ "internalType": "bytes32",
206
+ "name": "edgeId",
207
+ "type": "bytes32"
208
+ },
209
+ {
210
+ "internalType": "enum EdgeStatus",
211
+ "name": "",
212
+ "type": "uint8"
213
+ }
214
+ ],
215
+ "name": "EdgeNotConfirmed",
216
+ "type": "error"
217
+ },
218
+ {
219
+ "inputs": [
220
+ {
221
+ "internalType": "bytes32",
222
+ "name": "edgeId",
223
+ "type": "bytes32"
224
+ }
225
+ ],
226
+ "name": "EdgeNotExists",
227
+ "type": "error"
228
+ },
229
+ {
230
+ "inputs": [
231
+ {
232
+ "internalType": "bytes32",
233
+ "name": "edgeId",
234
+ "type": "bytes32"
235
+ },
236
+ {
237
+ "internalType": "address",
238
+ "name": "staker",
239
+ "type": "address"
240
+ },
241
+ {
242
+ "internalType": "bytes32",
243
+ "name": "claimId",
244
+ "type": "bytes32"
245
+ }
246
+ ],
247
+ "name": "EdgeNotLayerZero",
248
+ "type": "error"
249
+ },
250
+ {
251
+ "inputs": [
252
+ {
253
+ "internalType": "uint256",
254
+ "name": "length",
255
+ "type": "uint256"
256
+ }
257
+ ],
258
+ "name": "EdgeNotLengthOne",
259
+ "type": "error"
260
+ },
261
+ {
262
+ "inputs": [
263
+ {
264
+ "internalType": "bytes32",
265
+ "name": "edgeId",
266
+ "type": "bytes32"
267
+ },
268
+ {
269
+ "internalType": "enum EdgeStatus",
270
+ "name": "status",
271
+ "type": "uint8"
272
+ }
273
+ ],
274
+ "name": "EdgeNotPending",
275
+ "type": "error"
276
+ },
277
+ {
278
+ "inputs": [
279
+ {
280
+ "internalType": "uint8",
281
+ "name": "level",
282
+ "type": "uint8"
283
+ }
284
+ ],
285
+ "name": "EdgeTypeNotSmallStep",
286
+ "type": "error"
287
+ },
288
+ {
289
+ "inputs": [
290
+ {
291
+ "internalType": "bytes32",
292
+ "name": "edgeId",
293
+ "type": "bytes32"
294
+ }
295
+ ],
296
+ "name": "EdgeUnrivaled",
297
+ "type": "error"
298
+ },
299
+ {
300
+ "inputs": [],
301
+ "name": "EmptyArray",
302
+ "type": "error"
303
+ },
304
+ {
305
+ "inputs": [],
306
+ "name": "EmptyAssertionChain",
307
+ "type": "error"
308
+ },
309
+ {
310
+ "inputs": [],
311
+ "name": "EmptyChallengePeriod",
312
+ "type": "error"
313
+ },
314
+ {
315
+ "inputs": [],
316
+ "name": "EmptyClaimId",
317
+ "type": "error"
318
+ },
319
+ {
320
+ "inputs": [],
321
+ "name": "EmptyEdgeSpecificProof",
322
+ "type": "error"
323
+ },
324
+ {
325
+ "inputs": [],
326
+ "name": "EmptyEndMachineStatus",
327
+ "type": "error"
328
+ },
329
+ {
330
+ "inputs": [],
331
+ "name": "EmptyEndRoot",
332
+ "type": "error"
333
+ },
334
+ {
335
+ "inputs": [],
336
+ "name": "EmptyFirstRival",
337
+ "type": "error"
338
+ },
339
+ {
340
+ "inputs": [],
341
+ "name": "EmptyOneStepProofEntry",
342
+ "type": "error"
343
+ },
344
+ {
345
+ "inputs": [],
346
+ "name": "EmptyOriginId",
347
+ "type": "error"
348
+ },
349
+ {
350
+ "inputs": [],
351
+ "name": "EmptyPrefixProof",
352
+ "type": "error"
353
+ },
354
+ {
355
+ "inputs": [],
356
+ "name": "EmptyStakeReceiver",
357
+ "type": "error"
358
+ },
359
+ {
360
+ "inputs": [],
361
+ "name": "EmptyStaker",
362
+ "type": "error"
363
+ },
364
+ {
365
+ "inputs": [],
366
+ "name": "EmptyStartMachineStatus",
367
+ "type": "error"
368
+ },
369
+ {
370
+ "inputs": [],
371
+ "name": "EmptyStartRoot",
372
+ "type": "error"
373
+ },
374
+ {
375
+ "inputs": [
376
+ {
377
+ "internalType": "bytes32",
378
+ "name": "endHistoryRoot",
379
+ "type": "bytes32"
380
+ },
381
+ {
382
+ "internalType": "bytes32",
383
+ "name": "assertionEndRoot",
384
+ "type": "bytes32"
385
+ }
386
+ ],
387
+ "name": "EndHistoryRootMismatch",
388
+ "type": "error"
389
+ },
390
+ {
391
+ "inputs": [
392
+ {
393
+ "internalType": "uint256",
394
+ "name": "h1",
395
+ "type": "uint256"
396
+ },
397
+ {
398
+ "internalType": "uint256",
399
+ "name": "h2",
400
+ "type": "uint256"
401
+ }
402
+ ],
403
+ "name": "HeightDiffLtTwo",
404
+ "type": "error"
405
+ },
406
+ {
407
+ "inputs": [
408
+ {
409
+ "internalType": "uint256",
410
+ "name": "totalBlocks",
411
+ "type": "uint256"
412
+ },
413
+ {
414
+ "internalType": "uint256",
415
+ "name": "thresholdBlocks",
416
+ "type": "uint256"
417
+ }
418
+ ],
419
+ "name": "InsufficientConfirmationBlocks",
420
+ "type": "error"
421
+ },
422
+ {
423
+ "inputs": [
424
+ {
425
+ "internalType": "enum EdgeType",
426
+ "name": "edgeType",
427
+ "type": "uint8"
428
+ }
429
+ ],
430
+ "name": "InvalidEdgeType",
431
+ "type": "error"
432
+ },
433
+ {
434
+ "inputs": [
435
+ {
436
+ "internalType": "uint256",
437
+ "name": "actualHeight",
438
+ "type": "uint256"
439
+ },
440
+ {
441
+ "internalType": "uint256",
442
+ "name": "expectedHeight",
443
+ "type": "uint256"
444
+ }
445
+ ],
446
+ "name": "InvalidEndHeight",
447
+ "type": "error"
448
+ },
449
+ {
450
+ "inputs": [
451
+ {
452
+ "internalType": "uint256",
453
+ "name": "start",
454
+ "type": "uint256"
455
+ },
456
+ {
457
+ "internalType": "uint256",
458
+ "name": "end",
459
+ "type": "uint256"
460
+ }
461
+ ],
462
+ "name": "InvalidHeights",
463
+ "type": "error"
464
+ },
465
+ {
466
+ "inputs": [
467
+ {
468
+ "internalType": "uint8",
469
+ "name": "level",
470
+ "type": "uint8"
471
+ },
472
+ {
473
+ "internalType": "uint8",
474
+ "name": "numBigStepLevels",
475
+ "type": "uint8"
476
+ }
477
+ ],
478
+ "name": "LevelTooHigh",
479
+ "type": "error"
480
+ },
481
+ {
482
+ "inputs": [
483
+ {
484
+ "internalType": "uint256",
485
+ "name": "actualLength",
486
+ "type": "uint256"
487
+ },
488
+ {
489
+ "internalType": "uint256",
490
+ "name": "maxProofLength",
491
+ "type": "uint256"
492
+ }
493
+ ],
494
+ "name": "MerkleProofTooLong",
495
+ "type": "error"
496
+ },
497
+ {
498
+ "inputs": [
499
+ {
500
+ "internalType": "uint256",
501
+ "name": "val",
502
+ "type": "uint256"
503
+ }
504
+ ],
505
+ "name": "NotPowerOfTwo",
506
+ "type": "error"
507
+ },
508
+ {
509
+ "inputs": [
510
+ {
511
+ "internalType": "address",
512
+ "name": "account",
513
+ "type": "address"
514
+ }
515
+ ],
516
+ "name": "NotValidator",
517
+ "type": "error"
518
+ },
519
+ {
520
+ "inputs": [
521
+ {
522
+ "internalType": "bytes32",
523
+ "name": "mutualId",
524
+ "type": "bytes32"
525
+ },
526
+ {
527
+ "internalType": "bytes32",
528
+ "name": "originId",
529
+ "type": "bytes32"
530
+ }
531
+ ],
532
+ "name": "OriginIdMutualIdMismatch",
533
+ "type": "error"
534
+ },
535
+ {
536
+ "inputs": [
537
+ {
538
+ "internalType": "bytes32",
539
+ "name": "edgeId",
540
+ "type": "bytes32"
541
+ },
542
+ {
543
+ "internalType": "bytes32",
544
+ "name": "confirmedRivalId",
545
+ "type": "bytes32"
546
+ }
547
+ ],
548
+ "name": "RivalEdgeConfirmed",
549
+ "type": "error"
550
+ },
551
+ {
552
+ "inputs": [
553
+ {
554
+ "internalType": "uint256",
555
+ "name": "stakeLevels",
556
+ "type": "uint256"
557
+ },
558
+ {
559
+ "internalType": "uint256",
560
+ "name": "numLevels",
561
+ "type": "uint256"
562
+ }
563
+ ],
564
+ "name": "StakeAmountsMismatch",
565
+ "type": "error"
566
+ },
567
+ {
568
+ "inputs": [],
569
+ "name": "ZeroBigStepLevels",
570
+ "type": "error"
571
+ },
572
+ {
573
+ "anonymous": false,
574
+ "inputs": [
575
+ {
576
+ "indexed": true,
577
+ "internalType": "bytes32",
578
+ "name": "edgeId",
579
+ "type": "bytes32"
580
+ },
581
+ {
582
+ "indexed": true,
583
+ "internalType": "bytes32",
584
+ "name": "mutualId",
585
+ "type": "bytes32"
586
+ },
587
+ {
588
+ "indexed": true,
589
+ "internalType": "bytes32",
590
+ "name": "originId",
591
+ "type": "bytes32"
592
+ },
593
+ {
594
+ "indexed": false,
595
+ "internalType": "bytes32",
596
+ "name": "claimId",
597
+ "type": "bytes32"
598
+ },
599
+ {
600
+ "indexed": false,
601
+ "internalType": "uint256",
602
+ "name": "length",
603
+ "type": "uint256"
604
+ },
605
+ {
606
+ "indexed": false,
607
+ "internalType": "uint8",
608
+ "name": "level",
609
+ "type": "uint8"
610
+ },
611
+ {
612
+ "indexed": false,
613
+ "internalType": "bool",
614
+ "name": "hasRival",
615
+ "type": "bool"
616
+ },
617
+ {
618
+ "indexed": false,
619
+ "internalType": "bool",
620
+ "name": "isLayerZero",
621
+ "type": "bool"
622
+ }
623
+ ],
624
+ "name": "EdgeAdded",
625
+ "type": "event"
626
+ },
627
+ {
628
+ "anonymous": false,
629
+ "inputs": [
630
+ {
631
+ "indexed": true,
632
+ "internalType": "bytes32",
633
+ "name": "edgeId",
634
+ "type": "bytes32"
635
+ },
636
+ {
637
+ "indexed": true,
638
+ "internalType": "bytes32",
639
+ "name": "lowerChildId",
640
+ "type": "bytes32"
641
+ },
642
+ {
643
+ "indexed": true,
644
+ "internalType": "bytes32",
645
+ "name": "upperChildId",
646
+ "type": "bytes32"
647
+ },
648
+ {
649
+ "indexed": false,
650
+ "internalType": "bool",
651
+ "name": "lowerChildAlreadyExists",
652
+ "type": "bool"
653
+ }
654
+ ],
655
+ "name": "EdgeBisected",
656
+ "type": "event"
657
+ },
658
+ {
659
+ "anonymous": false,
660
+ "inputs": [
661
+ {
662
+ "indexed": true,
663
+ "internalType": "bytes32",
664
+ "name": "edgeId",
665
+ "type": "bytes32"
666
+ },
667
+ {
668
+ "indexed": true,
669
+ "internalType": "bytes32",
670
+ "name": "mutualId",
671
+ "type": "bytes32"
672
+ }
673
+ ],
674
+ "name": "EdgeConfirmedByOneStepProof",
675
+ "type": "event"
676
+ },
677
+ {
678
+ "anonymous": false,
679
+ "inputs": [
680
+ {
681
+ "indexed": true,
682
+ "internalType": "bytes32",
683
+ "name": "edgeId",
684
+ "type": "bytes32"
685
+ },
686
+ {
687
+ "indexed": true,
688
+ "internalType": "bytes32",
689
+ "name": "mutualId",
690
+ "type": "bytes32"
691
+ },
692
+ {
693
+ "indexed": false,
694
+ "internalType": "uint256",
695
+ "name": "totalTimeUnrivaled",
696
+ "type": "uint256"
697
+ }
698
+ ],
699
+ "name": "EdgeConfirmedByTime",
700
+ "type": "event"
701
+ },
702
+ {
703
+ "anonymous": false,
704
+ "inputs": [
705
+ {
706
+ "indexed": true,
707
+ "internalType": "bytes32",
708
+ "name": "edgeId",
709
+ "type": "bytes32"
710
+ },
711
+ {
712
+ "indexed": true,
713
+ "internalType": "bytes32",
714
+ "name": "mutualId",
715
+ "type": "bytes32"
716
+ },
717
+ {
718
+ "indexed": false,
719
+ "internalType": "address",
720
+ "name": "stakeToken",
721
+ "type": "address"
722
+ },
723
+ {
724
+ "indexed": false,
725
+ "internalType": "uint256",
726
+ "name": "stakeAmount",
727
+ "type": "uint256"
728
+ }
729
+ ],
730
+ "name": "EdgeRefunded",
731
+ "type": "event"
732
+ },
733
+ {
734
+ "anonymous": false,
735
+ "inputs": [
736
+ {
737
+ "indexed": false,
738
+ "internalType": "uint8",
739
+ "name": "version",
740
+ "type": "uint8"
741
+ }
742
+ ],
743
+ "name": "Initialized",
744
+ "type": "event"
745
+ },
746
+ {
747
+ "anonymous": false,
748
+ "inputs": [
749
+ {
750
+ "indexed": true,
751
+ "internalType": "bytes32",
752
+ "name": "edgeId",
753
+ "type": "bytes32"
754
+ },
755
+ {
756
+ "indexed": false,
757
+ "internalType": "uint256",
758
+ "name": "newValue",
759
+ "type": "uint256"
760
+ }
761
+ ],
762
+ "name": "TimerCacheUpdated",
763
+ "type": "event"
764
+ },
765
+ {
766
+ "inputs": [],
767
+ "name": "LAYERZERO_BIGSTEPEDGE_HEIGHT",
768
+ "outputs": [
769
+ {
770
+ "internalType": "uint256",
771
+ "name": "",
772
+ "type": "uint256"
773
+ }
774
+ ],
775
+ "stateMutability": "view",
776
+ "type": "function"
777
+ },
778
+ {
779
+ "inputs": [],
780
+ "name": "LAYERZERO_BLOCKEDGE_HEIGHT",
781
+ "outputs": [
782
+ {
783
+ "internalType": "uint256",
784
+ "name": "",
785
+ "type": "uint256"
786
+ }
787
+ ],
788
+ "stateMutability": "view",
789
+ "type": "function"
790
+ },
791
+ {
792
+ "inputs": [],
793
+ "name": "LAYERZERO_SMALLSTEPEDGE_HEIGHT",
794
+ "outputs": [
795
+ {
796
+ "internalType": "uint256",
797
+ "name": "",
798
+ "type": "uint256"
799
+ }
800
+ ],
801
+ "stateMutability": "view",
802
+ "type": "function"
803
+ },
804
+ {
805
+ "inputs": [],
806
+ "name": "NUM_BIGSTEP_LEVEL",
807
+ "outputs": [
808
+ {
809
+ "internalType": "uint8",
810
+ "name": "",
811
+ "type": "uint8"
812
+ }
813
+ ],
814
+ "stateMutability": "view",
815
+ "type": "function"
816
+ },
817
+ {
818
+ "inputs": [],
819
+ "name": "assertionChain",
820
+ "outputs": [
821
+ {
822
+ "internalType": "contract IAssertionChain",
823
+ "name": "",
824
+ "type": "address"
825
+ }
826
+ ],
827
+ "stateMutability": "view",
828
+ "type": "function"
829
+ },
830
+ {
831
+ "inputs": [
832
+ {
833
+ "internalType": "bytes32",
834
+ "name": "edgeId",
835
+ "type": "bytes32"
836
+ },
837
+ {
838
+ "internalType": "bytes32",
839
+ "name": "bisectionHistoryRoot",
840
+ "type": "bytes32"
841
+ },
842
+ {
843
+ "internalType": "bytes",
844
+ "name": "prefixProof",
845
+ "type": "bytes"
846
+ }
847
+ ],
848
+ "name": "bisectEdge",
849
+ "outputs": [
850
+ {
851
+ "internalType": "bytes32",
852
+ "name": "",
853
+ "type": "bytes32"
854
+ },
855
+ {
856
+ "internalType": "bytes32",
857
+ "name": "",
858
+ "type": "bytes32"
859
+ }
860
+ ],
861
+ "stateMutability": "nonpayable",
862
+ "type": "function"
863
+ },
864
+ {
865
+ "inputs": [
866
+ {
867
+ "internalType": "uint8",
868
+ "name": "level",
869
+ "type": "uint8"
870
+ },
871
+ {
872
+ "internalType": "bytes32",
873
+ "name": "originId",
874
+ "type": "bytes32"
875
+ },
876
+ {
877
+ "internalType": "uint256",
878
+ "name": "startHeight",
879
+ "type": "uint256"
880
+ },
881
+ {
882
+ "internalType": "bytes32",
883
+ "name": "startHistoryRoot",
884
+ "type": "bytes32"
885
+ },
886
+ {
887
+ "internalType": "uint256",
888
+ "name": "endHeight",
889
+ "type": "uint256"
890
+ },
891
+ {
892
+ "internalType": "bytes32",
893
+ "name": "endHistoryRoot",
894
+ "type": "bytes32"
895
+ }
896
+ ],
897
+ "name": "calculateEdgeId",
898
+ "outputs": [
899
+ {
900
+ "internalType": "bytes32",
901
+ "name": "",
902
+ "type": "bytes32"
903
+ }
904
+ ],
905
+ "stateMutability": "pure",
906
+ "type": "function"
907
+ },
908
+ {
909
+ "inputs": [
910
+ {
911
+ "internalType": "uint8",
912
+ "name": "level",
913
+ "type": "uint8"
914
+ },
915
+ {
916
+ "internalType": "bytes32",
917
+ "name": "originId",
918
+ "type": "bytes32"
919
+ },
920
+ {
921
+ "internalType": "uint256",
922
+ "name": "startHeight",
923
+ "type": "uint256"
924
+ },
925
+ {
926
+ "internalType": "bytes32",
927
+ "name": "startHistoryRoot",
928
+ "type": "bytes32"
929
+ },
930
+ {
931
+ "internalType": "uint256",
932
+ "name": "endHeight",
933
+ "type": "uint256"
934
+ }
935
+ ],
936
+ "name": "calculateMutualId",
937
+ "outputs": [
938
+ {
939
+ "internalType": "bytes32",
940
+ "name": "",
941
+ "type": "bytes32"
942
+ }
943
+ ],
944
+ "stateMutability": "pure",
945
+ "type": "function"
946
+ },
947
+ {
948
+ "inputs": [],
949
+ "name": "challengePeriodBlocks",
950
+ "outputs": [
951
+ {
952
+ "internalType": "uint64",
953
+ "name": "",
954
+ "type": "uint64"
955
+ }
956
+ ],
957
+ "stateMutability": "view",
958
+ "type": "function"
959
+ },
960
+ {
961
+ "inputs": [
962
+ {
963
+ "internalType": "bytes32",
964
+ "name": "edgeId",
965
+ "type": "bytes32"
966
+ },
967
+ {
968
+ "components": [
969
+ {
970
+ "internalType": "bytes32",
971
+ "name": "beforeHash",
972
+ "type": "bytes32"
973
+ },
974
+ {
975
+ "internalType": "bytes",
976
+ "name": "proof",
977
+ "type": "bytes"
978
+ }
979
+ ],
980
+ "internalType": "struct OneStepData",
981
+ "name": "oneStepData",
982
+ "type": "tuple"
983
+ },
984
+ {
985
+ "components": [
986
+ {
987
+ "internalType": "bytes32",
988
+ "name": "wasmModuleRoot",
989
+ "type": "bytes32"
990
+ },
991
+ {
992
+ "internalType": "uint256",
993
+ "name": "requiredStake",
994
+ "type": "uint256"
995
+ },
996
+ {
997
+ "internalType": "address",
998
+ "name": "challengeManager",
999
+ "type": "address"
1000
+ },
1001
+ {
1002
+ "internalType": "uint64",
1003
+ "name": "confirmPeriodBlocks",
1004
+ "type": "uint64"
1005
+ },
1006
+ {
1007
+ "internalType": "uint64",
1008
+ "name": "nextInboxPosition",
1009
+ "type": "uint64"
1010
+ }
1011
+ ],
1012
+ "internalType": "struct ConfigData",
1013
+ "name": "prevConfig",
1014
+ "type": "tuple"
1015
+ },
1016
+ {
1017
+ "internalType": "bytes32[]",
1018
+ "name": "beforeHistoryInclusionProof",
1019
+ "type": "bytes32[]"
1020
+ },
1021
+ {
1022
+ "internalType": "bytes32[]",
1023
+ "name": "afterHistoryInclusionProof",
1024
+ "type": "bytes32[]"
1025
+ }
1026
+ ],
1027
+ "name": "confirmEdgeByOneStepProof",
1028
+ "outputs": [],
1029
+ "stateMutability": "nonpayable",
1030
+ "type": "function"
1031
+ },
1032
+ {
1033
+ "inputs": [
1034
+ {
1035
+ "internalType": "bytes32",
1036
+ "name": "edgeId",
1037
+ "type": "bytes32"
1038
+ },
1039
+ {
1040
+ "components": [
1041
+ {
1042
+ "components": [
1043
+ {
1044
+ "components": [
1045
+ {
1046
+ "internalType": "bytes32[2]",
1047
+ "name": "bytes32Vals",
1048
+ "type": "bytes32[2]"
1049
+ },
1050
+ {
1051
+ "internalType": "uint64[2]",
1052
+ "name": "u64Vals",
1053
+ "type": "uint64[2]"
1054
+ }
1055
+ ],
1056
+ "internalType": "struct GlobalState",
1057
+ "name": "globalState",
1058
+ "type": "tuple"
1059
+ },
1060
+ {
1061
+ "internalType": "enum MachineStatus",
1062
+ "name": "machineStatus",
1063
+ "type": "uint8"
1064
+ },
1065
+ {
1066
+ "internalType": "bytes32",
1067
+ "name": "endHistoryRoot",
1068
+ "type": "bytes32"
1069
+ }
1070
+ ],
1071
+ "internalType": "struct AssertionState",
1072
+ "name": "assertionState",
1073
+ "type": "tuple"
1074
+ },
1075
+ {
1076
+ "internalType": "bytes32",
1077
+ "name": "prevAssertionHash",
1078
+ "type": "bytes32"
1079
+ },
1080
+ {
1081
+ "internalType": "bytes32",
1082
+ "name": "inboxAcc",
1083
+ "type": "bytes32"
1084
+ }
1085
+ ],
1086
+ "internalType": "struct AssertionStateData",
1087
+ "name": "claimStateData",
1088
+ "type": "tuple"
1089
+ }
1090
+ ],
1091
+ "name": "confirmEdgeByTime",
1092
+ "outputs": [],
1093
+ "stateMutability": "nonpayable",
1094
+ "type": "function"
1095
+ },
1096
+ {
1097
+ "inputs": [
1098
+ {
1099
+ "internalType": "bytes32",
1100
+ "name": "mutualId",
1101
+ "type": "bytes32"
1102
+ }
1103
+ ],
1104
+ "name": "confirmedRival",
1105
+ "outputs": [
1106
+ {
1107
+ "internalType": "bytes32",
1108
+ "name": "",
1109
+ "type": "bytes32"
1110
+ }
1111
+ ],
1112
+ "stateMutability": "view",
1113
+ "type": "function"
1114
+ },
1115
+ {
1116
+ "inputs": [
1117
+ {
1118
+ "components": [
1119
+ {
1120
+ "internalType": "uint8",
1121
+ "name": "level",
1122
+ "type": "uint8"
1123
+ },
1124
+ {
1125
+ "internalType": "bytes32",
1126
+ "name": "endHistoryRoot",
1127
+ "type": "bytes32"
1128
+ },
1129
+ {
1130
+ "internalType": "uint256",
1131
+ "name": "endHeight",
1132
+ "type": "uint256"
1133
+ },
1134
+ {
1135
+ "internalType": "bytes32",
1136
+ "name": "claimId",
1137
+ "type": "bytes32"
1138
+ },
1139
+ {
1140
+ "internalType": "bytes",
1141
+ "name": "prefixProof",
1142
+ "type": "bytes"
1143
+ },
1144
+ {
1145
+ "internalType": "bytes",
1146
+ "name": "proof",
1147
+ "type": "bytes"
1148
+ }
1149
+ ],
1150
+ "internalType": "struct CreateEdgeArgs",
1151
+ "name": "args",
1152
+ "type": "tuple"
1153
+ }
1154
+ ],
1155
+ "name": "createLayerZeroEdge",
1156
+ "outputs": [
1157
+ {
1158
+ "internalType": "bytes32",
1159
+ "name": "",
1160
+ "type": "bytes32"
1161
+ }
1162
+ ],
1163
+ "stateMutability": "nonpayable",
1164
+ "type": "function"
1165
+ },
1166
+ {
1167
+ "inputs": [
1168
+ {
1169
+ "internalType": "bytes32",
1170
+ "name": "edgeId",
1171
+ "type": "bytes32"
1172
+ }
1173
+ ],
1174
+ "name": "edgeExists",
1175
+ "outputs": [
1176
+ {
1177
+ "internalType": "bool",
1178
+ "name": "",
1179
+ "type": "bool"
1180
+ }
1181
+ ],
1182
+ "stateMutability": "view",
1183
+ "type": "function"
1184
+ },
1185
+ {
1186
+ "inputs": [
1187
+ {
1188
+ "internalType": "bytes32",
1189
+ "name": "edgeId",
1190
+ "type": "bytes32"
1191
+ }
1192
+ ],
1193
+ "name": "edgeLength",
1194
+ "outputs": [
1195
+ {
1196
+ "internalType": "uint256",
1197
+ "name": "",
1198
+ "type": "uint256"
1199
+ }
1200
+ ],
1201
+ "stateMutability": "view",
1202
+ "type": "function"
1203
+ },
1204
+ {
1205
+ "inputs": [],
1206
+ "name": "excessStakeReceiver",
1207
+ "outputs": [
1208
+ {
1209
+ "internalType": "address",
1210
+ "name": "",
1211
+ "type": "address"
1212
+ }
1213
+ ],
1214
+ "stateMutability": "view",
1215
+ "type": "function"
1216
+ },
1217
+ {
1218
+ "inputs": [
1219
+ {
1220
+ "internalType": "bytes32",
1221
+ "name": "mutualId",
1222
+ "type": "bytes32"
1223
+ }
1224
+ ],
1225
+ "name": "firstRival",
1226
+ "outputs": [
1227
+ {
1228
+ "internalType": "bytes32",
1229
+ "name": "",
1230
+ "type": "bytes32"
1231
+ }
1232
+ ],
1233
+ "stateMutability": "view",
1234
+ "type": "function"
1235
+ },
1236
+ {
1237
+ "inputs": [
1238
+ {
1239
+ "internalType": "bytes32",
1240
+ "name": "edgeId",
1241
+ "type": "bytes32"
1242
+ }
1243
+ ],
1244
+ "name": "getEdge",
1245
+ "outputs": [
1246
+ {
1247
+ "components": [
1248
+ {
1249
+ "internalType": "bytes32",
1250
+ "name": "originId",
1251
+ "type": "bytes32"
1252
+ },
1253
+ {
1254
+ "internalType": "bytes32",
1255
+ "name": "startHistoryRoot",
1256
+ "type": "bytes32"
1257
+ },
1258
+ {
1259
+ "internalType": "uint256",
1260
+ "name": "startHeight",
1261
+ "type": "uint256"
1262
+ },
1263
+ {
1264
+ "internalType": "bytes32",
1265
+ "name": "endHistoryRoot",
1266
+ "type": "bytes32"
1267
+ },
1268
+ {
1269
+ "internalType": "uint256",
1270
+ "name": "endHeight",
1271
+ "type": "uint256"
1272
+ },
1273
+ {
1274
+ "internalType": "bytes32",
1275
+ "name": "lowerChildId",
1276
+ "type": "bytes32"
1277
+ },
1278
+ {
1279
+ "internalType": "bytes32",
1280
+ "name": "upperChildId",
1281
+ "type": "bytes32"
1282
+ },
1283
+ {
1284
+ "internalType": "bytes32",
1285
+ "name": "claimId",
1286
+ "type": "bytes32"
1287
+ },
1288
+ {
1289
+ "internalType": "address",
1290
+ "name": "staker",
1291
+ "type": "address"
1292
+ },
1293
+ {
1294
+ "internalType": "uint64",
1295
+ "name": "createdAtBlock",
1296
+ "type": "uint64"
1297
+ },
1298
+ {
1299
+ "internalType": "uint64",
1300
+ "name": "confirmedAtBlock",
1301
+ "type": "uint64"
1302
+ },
1303
+ {
1304
+ "internalType": "enum EdgeStatus",
1305
+ "name": "status",
1306
+ "type": "uint8"
1307
+ },
1308
+ {
1309
+ "internalType": "uint8",
1310
+ "name": "level",
1311
+ "type": "uint8"
1312
+ },
1313
+ {
1314
+ "internalType": "bool",
1315
+ "name": "refunded",
1316
+ "type": "bool"
1317
+ },
1318
+ {
1319
+ "internalType": "uint64",
1320
+ "name": "totalTimeUnrivaledCache",
1321
+ "type": "uint64"
1322
+ }
1323
+ ],
1324
+ "internalType": "struct ChallengeEdge",
1325
+ "name": "",
1326
+ "type": "tuple"
1327
+ }
1328
+ ],
1329
+ "stateMutability": "view",
1330
+ "type": "function"
1331
+ },
1332
+ {
1333
+ "inputs": [
1334
+ {
1335
+ "internalType": "enum EdgeType",
1336
+ "name": "eType",
1337
+ "type": "uint8"
1338
+ }
1339
+ ],
1340
+ "name": "getLayerZeroEndHeight",
1341
+ "outputs": [
1342
+ {
1343
+ "internalType": "uint256",
1344
+ "name": "",
1345
+ "type": "uint256"
1346
+ }
1347
+ ],
1348
+ "stateMutability": "view",
1349
+ "type": "function"
1350
+ },
1351
+ {
1352
+ "inputs": [
1353
+ {
1354
+ "internalType": "bytes32",
1355
+ "name": "edgeId",
1356
+ "type": "bytes32"
1357
+ }
1358
+ ],
1359
+ "name": "getPrevAssertionHash",
1360
+ "outputs": [
1361
+ {
1362
+ "internalType": "bytes32",
1363
+ "name": "",
1364
+ "type": "bytes32"
1365
+ }
1366
+ ],
1367
+ "stateMutability": "view",
1368
+ "type": "function"
1369
+ },
1370
+ {
1371
+ "inputs": [
1372
+ {
1373
+ "internalType": "bytes32",
1374
+ "name": "edgeId",
1375
+ "type": "bytes32"
1376
+ }
1377
+ ],
1378
+ "name": "hasLengthOneRival",
1379
+ "outputs": [
1380
+ {
1381
+ "internalType": "bool",
1382
+ "name": "",
1383
+ "type": "bool"
1384
+ }
1385
+ ],
1386
+ "stateMutability": "view",
1387
+ "type": "function"
1388
+ },
1389
+ {
1390
+ "inputs": [
1391
+ {
1392
+ "internalType": "address",
1393
+ "name": "account",
1394
+ "type": "address"
1395
+ },
1396
+ {
1397
+ "internalType": "bytes32",
1398
+ "name": "mutualId",
1399
+ "type": "bytes32"
1400
+ }
1401
+ ],
1402
+ "name": "hasMadeLayerZeroRival",
1403
+ "outputs": [
1404
+ {
1405
+ "internalType": "bool",
1406
+ "name": "",
1407
+ "type": "bool"
1408
+ }
1409
+ ],
1410
+ "stateMutability": "view",
1411
+ "type": "function"
1412
+ },
1413
+ {
1414
+ "inputs": [
1415
+ {
1416
+ "internalType": "bytes32",
1417
+ "name": "edgeId",
1418
+ "type": "bytes32"
1419
+ }
1420
+ ],
1421
+ "name": "hasRival",
1422
+ "outputs": [
1423
+ {
1424
+ "internalType": "bool",
1425
+ "name": "",
1426
+ "type": "bool"
1427
+ }
1428
+ ],
1429
+ "stateMutability": "view",
1430
+ "type": "function"
1431
+ },
1432
+ {
1433
+ "inputs": [
1434
+ {
1435
+ "internalType": "contract IAssertionChain",
1436
+ "name": "_assertionChain",
1437
+ "type": "address"
1438
+ },
1439
+ {
1440
+ "internalType": "uint64",
1441
+ "name": "_challengePeriodBlocks",
1442
+ "type": "uint64"
1443
+ },
1444
+ {
1445
+ "internalType": "contract IOneStepProofEntry",
1446
+ "name": "_oneStepProofEntry",
1447
+ "type": "address"
1448
+ },
1449
+ {
1450
+ "internalType": "uint256",
1451
+ "name": "layerZeroBlockEdgeHeight",
1452
+ "type": "uint256"
1453
+ },
1454
+ {
1455
+ "internalType": "uint256",
1456
+ "name": "layerZeroBigStepEdgeHeight",
1457
+ "type": "uint256"
1458
+ },
1459
+ {
1460
+ "internalType": "uint256",
1461
+ "name": "layerZeroSmallStepEdgeHeight",
1462
+ "type": "uint256"
1463
+ },
1464
+ {
1465
+ "internalType": "contract IERC20",
1466
+ "name": "_stakeToken",
1467
+ "type": "address"
1468
+ },
1469
+ {
1470
+ "internalType": "address",
1471
+ "name": "_excessStakeReceiver",
1472
+ "type": "address"
1473
+ },
1474
+ {
1475
+ "internalType": "uint8",
1476
+ "name": "_numBigStepLevel",
1477
+ "type": "uint8"
1478
+ },
1479
+ {
1480
+ "internalType": "uint256[]",
1481
+ "name": "_stakeAmounts",
1482
+ "type": "uint256[]"
1483
+ }
1484
+ ],
1485
+ "name": "initialize",
1486
+ "outputs": [],
1487
+ "stateMutability": "nonpayable",
1488
+ "type": "function"
1489
+ },
1490
+ {
1491
+ "inputs": [
1492
+ {
1493
+ "internalType": "bytes32[]",
1494
+ "name": "edgeIds",
1495
+ "type": "bytes32[]"
1496
+ },
1497
+ {
1498
+ "internalType": "uint256",
1499
+ "name": "maximumCachedTime",
1500
+ "type": "uint256"
1501
+ }
1502
+ ],
1503
+ "name": "multiUpdateTimeCacheByChildren",
1504
+ "outputs": [],
1505
+ "stateMutability": "nonpayable",
1506
+ "type": "function"
1507
+ },
1508
+ {
1509
+ "inputs": [],
1510
+ "name": "oneStepProofEntry",
1511
+ "outputs": [
1512
+ {
1513
+ "internalType": "contract IOneStepProofEntry",
1514
+ "name": "",
1515
+ "type": "address"
1516
+ }
1517
+ ],
1518
+ "stateMutability": "view",
1519
+ "type": "function"
1520
+ },
1521
+ {
1522
+ "inputs": [
1523
+ {
1524
+ "internalType": "bytes32",
1525
+ "name": "edgeId",
1526
+ "type": "bytes32"
1527
+ }
1528
+ ],
1529
+ "name": "refundStake",
1530
+ "outputs": [],
1531
+ "stateMutability": "nonpayable",
1532
+ "type": "function"
1533
+ },
1534
+ {
1535
+ "inputs": [
1536
+ {
1537
+ "internalType": "uint256",
1538
+ "name": "",
1539
+ "type": "uint256"
1540
+ }
1541
+ ],
1542
+ "name": "stakeAmounts",
1543
+ "outputs": [
1544
+ {
1545
+ "internalType": "uint256",
1546
+ "name": "",
1547
+ "type": "uint256"
1548
+ }
1549
+ ],
1550
+ "stateMutability": "view",
1551
+ "type": "function"
1552
+ },
1553
+ {
1554
+ "inputs": [],
1555
+ "name": "stakeToken",
1556
+ "outputs": [
1557
+ {
1558
+ "internalType": "contract IERC20",
1559
+ "name": "",
1560
+ "type": "address"
1561
+ }
1562
+ ],
1563
+ "stateMutability": "view",
1564
+ "type": "function"
1565
+ },
1566
+ {
1567
+ "inputs": [
1568
+ {
1569
+ "internalType": "bytes32",
1570
+ "name": "edgeId",
1571
+ "type": "bytes32"
1572
+ }
1573
+ ],
1574
+ "name": "timeUnrivaled",
1575
+ "outputs": [
1576
+ {
1577
+ "internalType": "uint256",
1578
+ "name": "",
1579
+ "type": "uint256"
1580
+ }
1581
+ ],
1582
+ "stateMutability": "view",
1583
+ "type": "function"
1584
+ },
1585
+ {
1586
+ "inputs": [
1587
+ {
1588
+ "internalType": "bytes32",
1589
+ "name": "edgeId",
1590
+ "type": "bytes32"
1591
+ },
1592
+ {
1593
+ "internalType": "uint256",
1594
+ "name": "maximumCachedTime",
1595
+ "type": "uint256"
1596
+ }
1597
+ ],
1598
+ "name": "updateTimerCacheByChildren",
1599
+ "outputs": [],
1600
+ "stateMutability": "nonpayable",
1601
+ "type": "function"
1602
+ },
1603
+ {
1604
+ "inputs": [
1605
+ {
1606
+ "internalType": "bytes32",
1607
+ "name": "edgeId",
1608
+ "type": "bytes32"
1609
+ },
1610
+ {
1611
+ "internalType": "bytes32",
1612
+ "name": "claimingEdgeId",
1613
+ "type": "bytes32"
1614
+ },
1615
+ {
1616
+ "internalType": "uint256",
1617
+ "name": "maximumCachedTime",
1618
+ "type": "uint256"
1619
+ }
1620
+ ],
1621
+ "name": "updateTimerCacheByClaim",
1622
+ "outputs": [],
1623
+ "stateMutability": "nonpayable",
1624
+ "type": "function"
1625
+ }
1626
+ ],
1627
+ "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615bf780620000f46000396000f3fe608060405234801561001057600080fd5b50600436106101ef5760003560e01c8063655b42f31161010f578063c32d8c63116100a2578063eae0328b11610071578063eae0328b146104b1578063edaab54a146104c4578063f8ee77d6146104d7578063fda2892e146104e057600080fd5b8063c32d8c6314610443578063c8bc4e4314610456578063e5b123da1461047e578063e94e051e1461049e57600080fd5b80638c1b3a40116100de5780638c1b3a40146103ea578063908517e9146103fd578063b2a1408e14610410578063bce6f54f1461042357600080fd5b8063655b42f314610378578063748926f3146103b1578063750e0c0f146103c45780638826a370146103d757600080fd5b8063432bb78a1161018757806351ed6a301161015657806351ed6a301461031057806354b64151146103235780635a48e0f4146103465780635d9e24441461035957600080fd5b8063432bb78a1461028d57806346c2781a146102a057806348923bc5146102cb57806348dd2924146102f657600080fd5b80631dce5166116101c35780631dce5166146102555780633e35f5e81461025e578063416e66571461027157806342e1aaa81461027a57600080fd5b80624d8efe146101f457806305fae1411461021a5780631a72d54c1461022d5780631c1b4f3a14610242575b600080fd5b610207610202366004614c06565b610500565b6040519081526020015b60405180910390f35b610207610228366004614c50565b61051b565b61024061023b366004614d02565b610aa3565b005b610207610250366004614dd5565b610e20565b610207600a5481565b61020761026c366004614dd5565b610e41565b610207600b5481565b610207610288366004614e06565b610e54565b61024061029b366004614e23565b610ed8565b6008546102b3906001600160401b031681565b6040516001600160401b039091168152602001610211565b6009546102de906001600160a01b031681565b6040516001600160a01b039091168152602001610211565b6008546102de90600160401b90046001600160a01b031681565b6006546102de906001600160a01b031681565b610336610331366004614dd5565b610f73565b6040519015158152602001610211565b610207610354366004614dd5565b610f80565b600d546103669060ff1681565b60405160ff9091168152602001610211565b610336610386366004614e6e565b6001600160a01b03919091166000908152600460209081526040808320938352929052205460ff1690565b6102406103bf366004614dd5565b610f8d565b6103366103d2366004614dd5565b611080565b6102406103e5366004614e9a565b611097565b6102406103f8366004614ec6565b6110ff565b61033661040b366004614dd5565b6112ae565b61024061041e366004614f8e565b6112bb565b610207610431366004614dd5565b60009081526002602052604090205490565b610207610451366004614fc8565b6115c4565b61046961046436600461500a565b6115dd565b60408051928352602083019190915201610211565b61020761048c366004614dd5565b60009081526003602052604090205490565b6005546102de906001600160a01b031681565b6102076104bf366004614dd5565b611799565b6102406104d2366004615089565b6117ae565b610207600c5481565b6104f36104ee366004614dd5565b611807565b60405161021191906150d5565b6000610510878787878787611926565b979650505050505050565b60008060088054906101000a90046001600160a01b03166001600160a01b03166312ab3d3b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561056f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059391906151bd565b159050808015610612575060085460405163facd743b60e01b8152336004820152600160401b9091046001600160a01b03169063facd743b90602401602060405180830381865afa1580156105ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061091906151bd565b155b1561063757604051633b4f6e2b60e21b81523360048201526024015b60405180910390fd5b61063f614a15565b600061065c61065160208701876151df565b600d5460ff1661196b565b9050600061066982610e54565b9050610673614a59565b6000836002811115610687576106876150ab565b036109525761069960a08801886151fa565b90506000036106bb57604051630c9ccac560e41b815260040160405180910390fd5b6000806106cb60a08a018a6151fa565b8101906106d8919061548e565b925092505060088054906101000a90046001600160a01b03166001600160a01b031663e51019a68a606001358360000151846020015185604001516040518563ffffffff1660e01b81526004016107329493929190615562565b60006040518083038186803b15801561074a57600080fd5b505afa15801561075e573d6000803e3d6000fd5b505060085460208481015186519187015160408089015190516372880cd360e11b8152600160401b9095046001600160a01b0316965063e51019a695506107aa94929392600401615562565b60006040518083038186803b1580156107c257600080fd5b505afa1580156107d6573d6000803e3d6000fd5b5050505080600001516040015189602001351461081b5780516040908101519051631d31f4cd60e11b815260208b01356004820152602481019190915260440161062e565b6040805160c08101825260608b013580825260208481015190830152600854835163e531d8c760e01b815260048101929092529192830191600160401b90046001600160a01b03169063e531d8c790602401602060405180830381865afa15801561088a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ae91906151bd565b15158152600854602084810151604051632b5de4f360e11b81526004810191909152920191600091600160401b90046001600160a01b0316906356bbc9e690602401602060405180830381865afa15801561090d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093191906155af565b6001600160401b031611815292516020840152905160409092019190915290505b600954600d5461097a916001918a9185916001600160a01b0390911690879060ff168b6119da565b6006549094506001600160a01b03166000600761099a60208b018b6151df565b60ff16815481106109ad576109ad6155cc565b60009182526020909120015490506001600160a01b038216158015906109d257508015155b15610a0e5760008660c001516109e857306109f5565b6005546001600160a01b03165b9050610a0c6001600160a01b038416338385611ab0565b505b8560400151866020015187600001517faa4b66b1ce938c06e2a3f8466bae10ef62e747630e3859889f4719fc6427b5a489606001518a608001518b60a001518c60c001518d60e00151604051610a8d959493929190948552602085019390935260ff919091166040840152151560608301521515608082015260a00190565b60405180910390a4505092519695505050505050565b600054610100900460ff1615808015610ac35750600054600160ff909116105b80610add5750303b158015610add575060005460ff166001145b610b405760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161062e565b6000805460ff191660011790558015610b63576000805461ff0019166101001790555b6001600160a01b038c16610b8a5760405163641f043160e11b815260040160405180910390fd5b600880546001600160a01b03808f16600160401b0268010000000000000000600160e01b0319909216919091179091558a16610bd95760405163fb60b0ef60e01b815260040160405180910390fd5b600980546001600160a01b0319166001600160a01b038c161790556001600160401b038b16600003610c1e57604051632283bb7360e21b815260040160405180910390fd5b6008805467ffffffffffffffff19166001600160401b038d16179055600680546001600160a01b0319166001600160a01b03888116919091179091558516610c79576040516301e1d91560e31b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038716179055610c9d89611b1b565b610cbd57604051633abfb6ff60e21b8152600481018a905260240161062e565b600a899055610ccb88611b1b565b610ceb57604051633abfb6ff60e21b81526004810189905260240161062e565b600b889055610cf987611b1b565b610d1957604051633abfb6ff60e21b81526004810188905260240161062e565b600c87905560ff8416600003610d4257604051632a18f5b960e21b815260040160405180910390fd5b60fd8460ff161115610d6c5760405163040d23bf60e41b815260ff8516600482015260240161062e565b600d805460ff191660ff861617905581610d878560026155f8565b60ff1614610dbf5781610d9b8560026155f8565b604051622bb3a760e61b8152600481019290925260ff16602482015260440161062e565b610dcb60078484614a9b565b508015610e12576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b60078181548110610e3057600080fd5b600091825260209091200154905081565b6000610e4e600183611b45565b92915050565b600080826002811115610e6957610e696150ab565b03610e76575050600a5490565b6001826002811115610e8a57610e8a6150ab565b03610e97575050600b5490565b6002826002811115610eab57610eab6150ab565b03610eb8575050600c5490565b81604051630efcb87b60e21b815260040161062e9190615611565b919050565b6000829003610efa5760405163521299a960e01b815260040160405180910390fd5b610f2b8383610f0a600182615624565b818110610f1957610f196155cc565b60019260209091020135905083611ccf565b5060005b82811015610f6d57610f5b848483818110610f4c57610f4c6155cc565b905060200201356000196117ae565b80610f6581615637565b915050610f2f565b50505050565b6000610e4e600183611d25565b6000610e4e600183611d59565b6000610f9a600183611daa565b9050610fa581611df3565b6006546009820154600780546001600160a01b0390931692600092600160481b900460ff16908110610fd957610fd96155cc565b60009182526020909120015490506001600160a01b03821615801590610ffe57508015155b1561101f57600883015461101f906001600160a01b03848116911683611eb6565b600084815260016020526040902061103690611eeb565b604080516001600160a01b03851681526020810184905286917fa635398959ddb5ce3b14537edfc25b2e671274c9b8cad0f4bd634752e69007b6910160405180910390a350505050565b6000818152600160205260408120610e4e90611f1b565b600d5460009081906110b3906001908790879060ff1687611f34565b9150915081156110f857847fbe17755d8d836ad67bfaf8e5b3869aedb4cba03f295a167c5547feddd9ef50ad826040516110ef91815260200190565b60405180910390a25b5050505050565b600061110c600189611d59565b6008546040516304972af960e01b8152919250600160401b90046001600160a01b0316906304972af9906111469084908a90600401615650565b60006040518083038186803b15801561115e57600080fd5b505afa158015611172573d6000803e3d6000fd5b505050506000604051806060016040528088608001602081019061119691906156c9565b6001600160401b0316815260200160088054906101000a90046001600160a01b03166001600160a01b031663e78cea926040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121991906156e6565b6001600160a01b0390811682528935602090920191909152600954600d54600b54600c54949550611261946001948f9416928e9288928e928e928e928e9260ff169190611f9b565b600089815260016020526040902061127890611eeb565b6040518a907fe11db4b27bc8c6ea5943ecbb205ae1ca8d56c42c719717aaf8a53d43d0cee7c290600090a3505050505050505050565b6000610e4e600183612301565b60006112c8600184611daa565b90506112d3816123bc565b61131c576112e0816123e0565b60088201546007830154604051631cb1906160e31b815260048101939093526001600160a01b039091166024830152604482015260640161062e565b600080806009840154600d5461133f9160ff600160481b9091048116911661196b565b6002811115611350576113506150ab565b1490508080156113d4575060085460078401546040516306106c4560e31b81526004810191909152600160401b9091046001600160a01b031690633083622890602401602060405180830381865afa1580156113b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d491906151bd565b156115495760085460078401546040516372880cd360e11b8152600160401b9092046001600160a01b03169163e51019a69161142091889060c08201359060e083013590600401615703565b60006040518083038186803b15801561143857600080fd5b505afa15801561144c573d6000803e3d6000fd5b5050600854604051631171558560e01b815260c08801356004820152600160401b9091046001600160a01b0316925063117155859150602401602060405180830381865afa1580156114a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c691906155af565b600854604051632b5de4f360e11b815260c08701356004820152600160401b9091046001600160a01b0316906356bbc9e690602401602060405180830381865afa158015611518573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153c91906155af565b6115469190615790565b91505b60085460009061156890600190889086906001600160401b0316612415565b600087815260016020526040902090915061158290611eeb565b867f2e0808830a22204cb3fb8f8d784b28bc97e9ce2e39d2f9cde2860de0957d68eb836040516115b491815260200190565b60405180910390a3505050505050565b60006115d386868686866124d4565b9695505050505050565b600080600080600061162c898989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600195949392505061252e9050565b8151929550909350915015806116c4578260400151836020015184600001517faa4b66b1ce938c06e2a3f8466bae10ef62e747630e3859889f4719fc6427b5a4866060015187608001518860a001518960c001518a60e001516040516116bb959493929190948552602085019390935260ff919091166040840152151560608301521515608082015260a00190565b60405180910390a45b8160400151826020015183600001517faa4b66b1ce938c06e2a3f8466bae10ef62e747630e3859889f4719fc6427b5a4856060015186608001518760a001518860c001518960e00151604051611743959493929190948552602085019390935260ff919091166040840152151560608301521515608082015260a00190565b60405180910390a48151604051821515815285908c907f7340510d24b7ec9b5c100f5500d93429d80d00d46f0d18e4e85d0c4cc22b99249060200160405180910390a45051919350909150505b94509492505050565b6000610e4e6117a9600184611daa565b61282f565b6000806117bd60018585612874565b915091508115610f6d57837fbe17755d8d836ad67bfaf8e5b3869aedb4cba03f295a167c5547feddd9ef50ad826040516117f991815260200190565b60405180910390a250505050565b61180f614ae6565b61181a600183611daa565b604080516101e0810182528254815260018084015460208301526002840154928201929092526003830154606082015260048301546080820152600583015460a0820152600683015460c0820152600783015460e082015260088301546001600160a01b038116610100830152600160a01b90046001600160401b039081166101208301526009840154908116610140830152909291610160840191600160401b900460ff16908111156118d0576118d06150ab565b60018111156118e1576118e16150ab565b81526009919091015460ff600160481b820481166020840152600160501b820416151560408301526001600160401b03600160581b9091041660609091015292915050565b600061193587878787876124d4565b60408051602081019290925281018390526060016040516020818303038152906040528051906020012090509695505050505050565b60008260ff1660000361198057506000610e4e565b8160ff168360ff161161199557506001610e4e565b6119a08260016155f8565b60ff168360ff16036119b457506002610e4e565b6040516315c1b4af60e31b815260ff80851660048301528316602482015260440161062e565b6119e2614a15565b6000806119f28a8a8a8a89612898565b915091506000611a03838b89612d19565b90506000611a1283838d612e2c565b90508515611a96576000611a2582612e5f565b33600090815260038f016020908152604080832084845290915290205490915060ff1615611a6f57604051632d23561d60e11b81523360048201526024810182905260440161062e565b33600090815260038e016020908152604080832093835292905220805460ff191660011790555b611aa08c82612e83565b9c9b505050505050505050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610f6d9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261317a565b600081600003611b2d57506000919050565b6000611b3a600184615624565b929092161592915050565b6000818152602083905260408120611b5c90611f1b565b611b7b5760405162a7b02b60e01b81526004810183905260240161062e565b6000828152602084905260408120611b9290611eeb565b6000818152600186016020526040812054919250819003611bc6576040516336843d9f60e21b815260040160405180910390fd5b6040516815539492559053115160ba1b6020820152602901604051602081830303815290604052805190602001208103611c2f57600084815260208690526040902060080154611c2690600160a01b90046001600160401b031643615624565b92505050610e4e565b6000818152602086905260409020611c4690611f1b565b611c655760405162a7b02b60e01b81526004810182905260240161062e565b60008181526020869052604080822060089081015487845291909220909101546001600160401b03600160a01b928390048116929091041680821115611cba57611caf8183615624565b945050505050610e4e565b6000945050505050610e4e565b505092915050565b600082815260208490526040812060090154600160581b90046001600160401b0316828110611d1b5760405163d1f5928160e01b8152600481018290526024810184905260440161062e565b90505b9392505050565b6000611d318383612301565b8015611d1e57506000828152602084905260409020611d4f9061282f565b6001149392505050565b600080611d668484611daa565b90505b6009810154600160481b900460ff1615611da25780546000908152600185016020526040902054611d9a8582611daa565b915050611d69565b549392505050565b6000818152602083905260408120611dc190611f1b565b611de05760405162a7b02b60e01b81526004810183905260240161062e565b5060009081526020919091526040902090565b60016009820154600160401b900460ff166001811115611e1557611e156150ab565b14611e4d57611e23816123e0565b6009820154604051633bc499ed60e21b815261062e9291600160401b900460ff16906004016157b0565b611e56816123bc565b611e63576112e0816123e0565b6009810154600160501b900460ff161515600103611ea057611e84816123e0565b60405163307f766960e01b815260040161062e91815260200190565b600901805460ff60501b1916600160501b179055565b6040516001600160a01b038316602482015260448101829052611ee690849063a9059cbb60e01b90606401611ae4565b505050565b6000610e4e8260090160099054906101000a900460ff1683600001548460020154856001015486600401546124d4565b60080154600160a01b90046001600160401b0316151590565b6000806000611f438888611b45565b9050611f518888888861324c565b600086815260208990526040902060090154611f7d90600160581b90046001600160401b0316826157c4565b9050611f8b888883876133c3565b92509250505b9550959350505050565b60008b815260208d905260409020611fb290611f1b565b611fd15760405162a7b02b60e01b8152600481018c905260240161062e565b600260008c815260208e90526040902060090154611ff990600160481b900460ff168561196b565b600281111561200a5761200a6150ab565b146120475760008b815260208d905260409081902060090154905163348aefdf60e01b8152600160481b90910460ff16600482015260240161062e565b60008b815260208d90526040902061205e9061282f565b6001146120985760008b815260208d90526040902061207c9061282f565b6040516306b595e560e41b815260040161062e91815260200190565b60008b815260208d905260409020600201548b825b60018f600001600084815260200190815260200160002060090160099054906101000a900460ff1660ff1611156121555760008f60000160008481526020019081526020016000206000015490508f60010160008281526020019081526020016000205492508f6000016000848152602001908152602001600020600201548261213791906157d7565b61214190856157c4565b935061214d86836157d7565b9150506120ad565b50506121b28d60000160008e8152602001908152602001600020600101548b60000135838b8b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061344992505050565b60008b6001600160a01b031663b5112fd28b848e600001358f80602001906121da91906151fa565b6040518663ffffffff1660e01b81526004016121fa9594939291906157ee565b602060405180830381865afa158015612217573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223b919061584f565b90506122a08e60000160008f8152602001908152602001600020600301548284600161226791906157c4565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061344992505050565b60008d815260208f9052604090206122b7906134cf565b6122c18e8e613551565b5050506000998a5250505060209790975250506040909320600901805467ffffffffffffffff60581b191667ffffffffffffffff60581b17905550505050565b600081815260208390526040812061231890611f1b565b6123375760405162a7b02b60e01b81526004810183905260240161062e565b600082815260208490526040812061234e90611eeb565b6000818152600186016020526040812054919250819003612382576040516336843d9f60e21b815260040160405180910390fd5b6040516815539492559053115160ba1b602082015260290160408051601f1981840301815291905280516020909101201415949350505050565b600781015460009015801590610e4e575050600801546001600160a01b0316151590565b6000610e4e8260090160099054906101000a900460ff1683600001548460020154856001015486600401548760030154611926565b600083815260208590526040812061242c90611f1b565b61244b5760405162a7b02b60e01b81526004810185905260240161062e565b600061245786866135bb565b905061246c6001600160401b038516826157c4565b9050826001600160401b03168110156124aa5760405163011a8d4d60e41b8152600481018290526001600160401b038416602482015260440161062e565b60008581526020879052604090206124c1906134cf565b6124cb8686613551565b95945050505050565b6040516001600160f81b031960f887901b1660208201526021810185905260418101849052606181018390526081810182905260009060a10160405160208183030381529060405280519060200120905095945050505050565b6000612538614a15565b612540614a15565b60008087815260208990526040902060090154600160401b900460ff16600181111561256e5761256e6150ab565b146125ad57600086815260208890526040908190206009015490516323f8405d60e01b815261062e918891600160401b90910460ff16906004016157b0565b6125b78787612301565b6125d7576040516380e07e4560e01b81526004810187905260240161062e565b6000868152602088905260408120604080516101e0810182528254815260018084015460208301526002840154928201929092526003830154606082015260048301546080820152600583015460a0820152600683015460c0820152600783015460e082015260088301546001600160a01b038116610100830152600160a01b90046001600160401b039081166101208301526009840154908116610140830152909291610160840191600160401b900460ff169081111561269b5761269b6150ab565b60018111156126ac576126ac6150ab565b815260099190910154600160481b810460ff9081166020840152600160501b8204161515604080840191909152600160581b9091046001600160401b0316606090920191909152810151608082015191925060009161270b9190613640565b90506000808780602001905181019061272491906158c3565b9092509050612754896127388560016157c4565b6060870151608088015161274d9060016157c4565b86866136d4565b50506000612760614a15565b60006127818560000151866020015187604001518d888a61018001516139a5565b905061278c81613a3d565b600081815260208e9052604090209093506127a690611f1b565b6127b7576127b48c82612e83565b91505b506127c0614a15565b60006127e186600001518c8789606001518a608001518b61018001516139a5565b90506127ed8d82612e83565b91505061281d8382600001518e60000160008f8152602001908152602001600020613a669092919063ffffffff16565b919b909a509098509650505050505050565b600080826002015483600401546128469190615624565b905080600003610e4e57612859836123e0565b60405162a7b02b60e01b815260040161062e91815260200190565b60008061288c858561288688886135bb565b866133c3565b91509150935093915050565b604080516060808201835260008083526020830152918101919091526000806128cd6128c760208901896151df565b8561196b565b60028111156128de576128de6150ab565b03612b67576020850151855160000361290a576040516374b5e30d60e11b815260040160405180910390fd5b855160608801351461293f5785516040516316c5de8f60e21b815260048101919091526060880135602482015260440161062e565b8560400151612961576040516360b4921b60e11b815260040160405180910390fd5b856060015161298357604051635a2e8e1d60e11b815260040160405180910390fd5b61299060a08801886151fa565b90506000036129b257604051630c9ccac560e41b815260040160405180910390fd5b60006129c160a08901896151fa565b8101906129ce919061548e565b509091506000905087608001516020015160028111156129f0576129f06150ab565b03612a0e5760405163231b2f2960e11b815260040160405180910390fd5b60008760a00151602001516002811115612a2a57612a2a6150ab565b03612a4857604051638999857d60e01b815260040160405180910390fd5b6000866001600160a01b031663c39619c4612a668a60800151613acd565b6040518263ffffffff1660e01b8152600401612a829190615926565b602060405180830381865afa158015612a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac3919061584f565b90506000876001600160a01b031663c39619c4612ae38b60a00151613acd565b6040518263ffffffff1660e01b8152600401612aff9190615926565b602060405180830381865afa158015612b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b40919061584f565b6040805160608101825293845260208401919091528201929092529350909150611f919050565b612b75878760600135611d25565b612b9b5760405160016292642960e01b031981526060870135600482015260240161062e565b6060860135600090815260208890526040812090612bb882611eeb565b905060006009830154600160401b900460ff166001811115612bdc57612bdc6150ab565b14612bfa576040516312459ffd60e01b815260040160405180910390fd5b6009820154612c1390600160481b900460ff1686613b08565b60ff16612c2360208a018a6151df565b60ff1614612c6c57612c3860208901896151df565b600983015460405163564f308b60e11b815260ff9283166004820152600160481b909104909116602482015260440161062e565b612c7960a08901896151fa565b9050600003612c9b57604051630c9ccac560e41b815260040160405180910390fd5b600080808080612cae60a08e018e6151fa565b810190612cbb9190615954565b94509450945094509450612cd9876001015486896002015486613449565b612ced876003015485896004015485613449565b604051806060016040528086815260200185815260200182815250869850985050505050505050611f91565b604080516000808252602082019092528190612d3f90612d3a908751613b2a565b613b60565b9050612d4a83611b1b565b612d6a57604051633abfb6ff60e21b81526004810184905260240161062e565b82846040013514612d9b57604080516337f318af60e21b81529085013560048201526024810184905260440161062e565b612db78460200135866020015186604001358860400151613449565b612dc460808501856151fa565b9050600003612de657604051631a1503a960e11b815260040160405180910390fd5b600080612df660808701876151fa565b810190612e0391906159ef565b9092509050612e21836001602089013561274d60408b0135836157c4565b509095945050505050565b612e34614ae6565b611d1b84846000602086018035906040880135906060890135903390612e5a908b6151df565b613cf9565b6000610e4e82610180015183600001518460400151856020015186608001516124d4565b612e8b614a15565b6000612e9683613a3d565b6000818152602086905260409020909150612eb090611f1b565b15612ed157604051635e76f9ef60e11b81526004810182905260240161062e565b600081815260208581526040918290208551815590850151600180830191909155918501516002820155606085015160038201556080850151600482015560a0850151600582015560c0850151600682015560e085015160078201556101008501516008820180546101208801516001600160401b03908116600160a01b026001600160e01b03199092166001600160a01b03909416939093171790556101408601516009830180549190921667ffffffffffffffff19821681178355610160880151889590939268ffffffffffffffffff191690911790600160401b908490811115612fc057612fc06150ab565b021790555061018082810151600990920180546101a08501516101c0909501516001600160401b0316600160581b0267ffffffffffffffff60581b19951515600160501b0260ff60501b1960ff909616600160481b02959095166affff00000000000000000019909216919091179390931793909316919091179091558301518351604085015160208601516080870151600094613063949093909290916124d4565b60008181526001870160205260408120549192508190036130c2576040516815539492559053115160ba1b602082015260290160408051601f198184030181529181528151602092830120600085815260018a0190935291205561310a565b6040516815539492559053115160ba1b602082015260290160405160208183030381529060405280519060200120810361310a57600082815260018701602052604090208390555b6040805161010081018252848152602080820185905287518284015260e0880151606083015260008681529089905291909120608082019061314b9061282f565b815261018087015160ff166020820152911515604083015260e090950151151560609091015250919392505050565b60006131cf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613e029092919063ffffffff16565b805190915015611ee657808060200190518101906131ed91906151bd565b611ee65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161062e565b600082815260208590526040902060070154831461329b5760008281526020859052604090819020600701549051631855b87d60e31b815261062e918591600401918252602082015260400190565b6000828152602085905260408082205485835291206132b990611eeb565b146133075760008381526020859052604090206132d590611eeb565b6000838152602086905260409081902054905163e2e27f8760e01b81526004810192909252602482015260440161062e565b600082815260208590526040808220600990810154868452919092209091015460ff600160481b9283900481169261334192041683613b08565b60ff1614610f6d576000838152602085905260409020600901548390839061337390600160481b900460ff1684613b08565b60008581526020889052604090819020600901549051637e726d1560e01b81526004810194909452602484019290925260ff9081166044840152600160481b90910416606482015260840161062e565b60008060006133d3878786611ccf565b90506001600160401b0385116133e957846133f2565b6001600160401b035b94508085111561343b575050506000838152602085905260409020600901805467ffffffffffffffff60581b1916600160581b6001600160401b03851602179055600182611790565b600097909650945050505050565b600061347e82848660405160200161346391815260200190565b60405160208183030381529060405280519060200120613e11565b90508085146110f85760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420696e636c7573696f6e2070726f6f66000000000000000000604482015260640161062e565b60006009820154600160401b900460ff1660018111156134f1576134f16150ab565b14613529576134ff816123e0565b60098201546040516323f8405d60e01b815261062e9291600160401b900460ff16906004016157b0565b60090180546001600160401b03431668ffffffffffffffffff1990911617600160401b179055565b600081815260208390526040812061356890611eeb565b600081815260028501602052604090205490915080156135a557604051630dd7028f60e41b8152600481018490526024810182905260440161062e565b5060009081526002909201602052604090912055565b6000806135c88484611b45565b60008481526020869052604090206005015490915015611d1e576000838152602085905260408082206005810154835281832060099081015460069092015484529190922001546001600160401b03600160581b92839004811692909104168082106136345780613636565b815b6115d390846157c4565b6000600261364e8484615624565b10156136775760405163240a616560e21b8152600481018490526024810183905260440161062e565b6136818383615624565b60020361369a576136938360016157c4565b9050610e4e565b6000836136a8600185615624565b18905060006136b682613eb3565b9050600019811b806136c9600187615624565b169695505050505050565b6000851161371b5760405162461bcd60e51b815260206004820152601460248201527305072652d73697a652063616e6e6f7420626520360641b604482015260640161062e565b8561372583613b60565b146137725760405162461bcd60e51b815260206004820152601b60248201527f50726520657870616e73696f6e20726f6f74206d69736d617463680000000000604482015260640161062e565b8461377c83613fe2565b146137d35760405162461bcd60e51b815260206004820152602160248201527f5072652073697a6520646f6573206e6f74206d6174636820657870616e73696f6044820152603760f91b606482015260840161062e565b8285106138225760405162461bcd60e51b815260206004820181905260248201527f5072652073697a65206e6f74206c657373207468616e20706f73742073697a65604482015260640161062e565b6000859050600080613837856000875161403d565b90505b858310156138ef57600061384e8488614199565b9050845183106138955760405162461bcd60e51b8152602060048201526012602482015271496e646578206f7574206f662072616e676560701b604482015260640161062e565b6138b982828786815181106138ac576138ac6155cc565b602002602001015161427d565b91506001811b6138c981866157c4565b9450878511156138db576138db615a48565b836138e581615637565b945050505061383a565b866138f982613b60565b146139515760405162461bcd60e51b815260206004820152602260248201527f506f737420657870616e73696f6e20726f6f74206e6f7420657175616c20706f6044820152611cdd60f21b606482015260840161062e565b8351821461399a5760405162461bcd60e51b8152602060048201526016602482015275496e636f6d706c6574652070726f6f6620757361676560501b604482015260640161062e565b505050505050505050565b6139ad614ae6565b6139ba87878787876147b9565b50604080516101e08101825296875260208701959095529385019290925260608401526080830152600060a0830181905260c0830181905260e0830181905261010083018190526001600160401b0343166101208401526101408301819052610160830181905260ff9091166101808301526101a082018190526101c082015290565b6000610e4e82610180015183600001518460400151856020015186608001518760600151611926565b6005830154151580613a7b5750600683015415155b15613abd57613a89836123e0565b600584015460068501546040516308b0e71d60e41b815260048101939093526024830191909152604482015260640161062e565b6005830191909155600690910155565b613ad5614b60565b60405180604001604052808360000151815260200183602001516002811115613b0057613b006150ab565b905292915050565b600080613b168460016155f8565b9050613b22818461196b565b509392505050565b6060611d1e83600084604051602001613b4591815260200190565b6040516020818303038152906040528051906020012061427d565b600080825111613bab5760405162461bcd60e51b815260206004820152601660248201527522b6b83a3c9036b2b935b6329032bc3830b739b4b7b760511b604482015260640161062e565b604082511115613bfd5760405162461bcd60e51b815260206004820152601a60248201527f4d65726b6c6520657870616e73696f6e20746f6f206c61726765000000000000604482015260640161062e565b6000805b8351811015613cf2576000848281518110613c1e57613c1e6155cc565b60200260200101519050826000801b03613c8a578015613c855780925060018551613c499190615624565b8214613c8557604051613c6c908490600090602001918252602082015260400190565b6040516020818303038152906040528051906020012092505b613cdf565b8015613ca9576040805160208101839052908101849052606001613c6c565b604051613cc6908490600090602001918252602082015260400190565b6040516020818303038152906040528051906020012092505b5080613cea81615637565b915050613c01565b5092915050565b613d01614ae6565b6001600160a01b038316613d285760405163f289e65760e01b815260040160405180910390fd5b6000849003613d4a57604051636932bcfd60e01b815260040160405180910390fd5b613d5789898989896147b9565b604051806101e001604052808a81526020018981526020018881526020018781526020018681526020016000801b81526020016000801b8152602001858152602001846001600160a01b03168152602001436001600160401b0316815260200160006001600160401b0316815260200160006001811115613dda57613dda6150ab565b815260ff84166020820152600060408201819052606090910152905098975050505050505050565b6060611d1b8484600085614849565b8251600090610100811115613e4457604051637ed6198f60e11b815260048101829052610100602482015260440161062e565b8260005b82811015613ea9576000878281518110613e6457613e646155cc565b60200260200101519050816001901b8716600003613e9057826000528060205260406000209250613ea0565b8060005282602052604060002092505b50600101613e48565b5095945050505050565b600081600003613f055760405162461bcd60e51b815260206004820152601c60248201527f5a65726f20686173206e6f207369676e69666963616e74206269747300000000604482015260640161062e565b600160801b8210613f2357608091821c91613f2090826157c4565b90505b600160401b8210613f4157604091821c91613f3e90826157c4565b90505b6401000000008210613f6057602091821c91613f5d90826157c4565b90505b620100008210613f7d57601091821c91613f7a90826157c4565b90505b6101008210613f9957600891821c91613f9690826157c4565b90505b60108210613fb457600491821c91613fb190826157c4565b90505b60048210613fcf57600291821c91613fcc90826157c4565b90505b60028210610ed357610e4e6001826157c4565b600080805b8351811015613cf257838181518110614002576140026155cc565b60200260200101516000801b1461402b5761401e816002615b42565b61402890836157c4565b91505b8061403581615637565b915050613fe7565b60608183106140885760405162461bcd60e51b815260206004820152601760248201527614dd185c9d081b9bdd081b195cdcc81d1a185b88195b99604a1b604482015260640161062e565b83518211156140e35760405162461bcd60e51b815260206004820152602160248201527f456e64206e6f74206c657373206f7220657175616c207468616e206c656e67746044820152600d60fb1b606482015260840161062e565b60006140ef8484615624565b6001600160401b0381111561410657614106615240565b60405190808252806020026020018201604052801561412f578160200160208202803683370190505b509050835b838110156141905785818151811061414e5761414e6155cc565b60200260200101518286836141639190615624565b81518110614173576141736155cc565b60209081029190910101528061418881615637565b915050614134565b50949350505050565b60008183106141e45760405162461bcd60e51b815260206004820152601760248201527614dd185c9d081b9bdd081b195cdcc81d1a185b88195b99604a1b604482015260640161062e565b60006141f1838518613eb3565b90506000600161420183826157c4565b6001901b61420f9190615624565b9050848116848216811561422657611caf8261496f565b801561423557611caf81613eb3565b60405162461bcd60e51b815260206004820152601b60248201527f426f7468207920616e64207a2063616e6e6f74206265207a65726f0000000000604482015260640161062e565b6060604083106142c05760405162461bcd60e51b815260206004820152600e60248201526d098caeccad840e8dede40d0d2ced60931b604482015260640161062e565b60008290036143115760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f7420617070656e6420656d70747920737562747265650000000000604482015260640161062e565b6040845111156143635760405162461bcd60e51b815260206004820152601a60248201527f4d65726b6c6520657870616e73696f6e20746f6f206c61726765000000000000604482015260640161062e565b83516000036143e15760006143798460016157c4565b6001600160401b0381111561439057614390615240565b6040519080825280602002602001820160405280156143b9578160200160208202803683370190505b509050828185815181106143cf576143cf6155cc565b60209081029190910101529050611d1e565b8351831061444f5760405162461bcd60e51b815260206004820152603560248201527f4c6576656c2067726561746572207468616e2068696768657374206c6576656c6044820152741037b31031bab93932b73a1032bc3830b739b4b7b760591b606482015260840161062e565b81600061445b86613fe2565b9050600061446a866002615b42565b61447490836157c4565b9050600061448183613eb3565b61448a83613eb3565b116144d75787516001600160401b038111156144a8576144a8615240565b6040519080825280602002602001820160405280156144d1578160200160208202803683370190505b50614526565b87516144e49060016157c4565b6001600160401b038111156144fb576144fb615240565b604051908082528060200260200182016040528015614524578160200160208202803683370190505b505b905060408151111561457a5760405162461bcd60e51b815260206004820152601c60248201527f417070656e642063726561746573206f76657273697a65207472656500000000604482015260640161062e565b60005b885181101561471b5787811015614609578881815181106145a0576145a06155cc565b60200260200101516000801b146146045760405162461bcd60e51b815260206004820152602260248201527f417070656e642061626f7665206c65617374207369676e69666963616e7420626044820152611a5d60f21b606482015260840161062e565b614709565b600085900361464f57888181518110614624576146246155cc565b602002602001015182828151811061463e5761463e6155cc565b602002602001018181525050614709565b888181518110614661576146616155cc565b60200260200101516000801b036146995784828281518110614685576146856155cc565b602090810291909101015260009450614709565b6000801b8282815181106146af576146af6155cc565b6020026020010181815250508881815181106146cd576146cd6155cc565b6020026020010151856040516020016146f0929190918252602082015260400190565b6040516020818303038152906040528051906020012094505b8061471381615637565b91505061457d565b50831561474f578381600183516147329190615624565b81518110614742576147426155cc565b6020026020010181815250505b806001825161475e9190615624565b8151811061476e5761476e6155cc565b60200260200101516000801b036105105760405162461bcd60e51b815260206004820152600f60248201526e4c61737420656e747279207a65726f60881b604482015260640161062e565b60008590036147db5760405163235e76ef60e21b815260040160405180910390fd5b828111614805576040516308183ebd60e21b8152600481018490526024810182905260440161062e565b6000849003614827576040516320f1a0f960e21b815260040160405180910390fd5b60008290036110f857604051635cb6e5bb60e01b815260040160405180910390fd5b6060824710156148aa5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161062e565b6001600160a01b0385163b6149015760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161062e565b600080866001600160a01b0316858760405161491d9190615b72565b60006040518083038185875af1925050503d806000811461495a576040519150601f19603f3d011682016040523d82523d6000602084013e61495f565b606091505b50915091506105108282866149dc565b60008082116149c05760405162461bcd60e51b815260206004820152601c60248201527f5a65726f20686173206e6f207369676e69666963616e74206269747300000000604482015260640161062e565b600082806149cf600182615624565b16189050611d1e81613eb3565b606083156149eb575081611d1e565b8251156149fb5782518084602001fd5b8160405162461bcd60e51b815260040161062e9190615b8e565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b6040805160c081018252600080825260208201819052918101829052606081019190915260808101614a89614b7f565b8152602001614a96614b7f565b905290565b828054828255906000526020600020908101928215614ad6579160200282015b82811115614ad6578235825591602001919060010190614abb565b50614ae2929150614ba6565b5090565b604080516101e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290529061016082019081526000602082018190526040820181905260609091015290565b6040518060400160405280614b73614bbb565b81526020016000905290565b6040518060600160405280614b92614bbb565b815260200160008152600060209091015290565b5b80821115614ae25760008155600101614ba7565b6040518060400160405280614bce614bd7565b8152602001614a965b60405180604001604052806002906020820280368337509192915050565b803560ff81168114610ed357600080fd5b60008060008060008060c08789031215614c1f57600080fd5b614c2887614bf5565b9860208801359850604088013597606081013597506080810135965060a00135945092505050565b600060208284031215614c6257600080fd5b81356001600160401b03811115614c7857600080fd5b820160c08185031215611d1e57600080fd5b6001600160a01b0381168114614c9f57600080fd5b50565b6001600160401b0381168114614c9f57600080fd5b60008083601f840112614cc957600080fd5b5081356001600160401b03811115614ce057600080fd5b6020830191508360208260051b8501011115614cfb57600080fd5b9250929050565b60008060008060008060008060008060006101408c8e031215614d2457600080fd5b8b35614d2f81614c8a565b9a5060208c0135614d3f81614ca2565b995060408c0135614d4f81614c8a565b985060608c0135975060808c0135965060a08c0135955060c08c0135614d7481614c8a565b945060e08c0135614d8481614c8a565b9350614d936101008d01614bf5565b92506101208c01356001600160401b03811115614daf57600080fd5b614dbb8e828f01614cb7565b915080935050809150509295989b509295989b9093969950565b600060208284031215614de757600080fd5b5035919050565b60038110614c9f57600080fd5b8035610ed381614dee565b600060208284031215614e1857600080fd5b8135611d1e81614dee565b600080600060408486031215614e3857600080fd5b83356001600160401b03811115614e4e57600080fd5b614e5a86828701614cb7565b909790965060209590950135949350505050565b60008060408385031215614e8157600080fd5b8235614e8c81614c8a565b946020939093013593505050565b600080600060608486031215614eaf57600080fd5b505081359360208301359350604090920135919050565b6000806000806000806000878903610120811215614ee357600080fd5b8835975060208901356001600160401b0380821115614f0157600080fd5b908a01906040828d031215614f1557600080fd5b81985060a0603f1984011215614f2a57600080fd5b60408b01975060e08b0135925080831115614f4457600080fd5b614f508c848d01614cb7565b90975095506101008b0135925086915080831115614f6d57600080fd5b5050614f7b8a828b01614cb7565b989b979a50959850939692959293505050565b600080828403610120811215614fa357600080fd5b83359250610100601f1982011215614fba57600080fd5b506020830190509250929050565b600080600080600060a08688031215614fe057600080fd5b614fe986614bf5565b97602087013597506040870135966060810135965060800135945092505050565b6000806000806060858703121561502057600080fd5b843593506020850135925060408501356001600160401b038082111561504557600080fd5b818701915087601f83011261505957600080fd5b81358181111561506857600080fd5b88602082850101111561507a57600080fd5b95989497505060200194505050565b6000806040838503121561509c57600080fd5b50508035926020909101359150565b634e487b7160e01b600052602160045260246000fd5b600281106150d1576150d16150ab565b9052565b60006101e082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151615143828501826001600160a01b03169052565b5050610120838101516001600160401b038116848301525050610140838101516001600160401b03811684830152505061016080840151615186828501826150c1565b50506101808381015160ff16908301526101a0808401511515908301526101c0808401516001600160401b03811682850152611cc7565b6000602082840312156151cf57600080fd5b81518015158114611d1e57600080fd5b6000602082840312156151f157600080fd5b611d1e82614bf5565b6000808335601e1984360301811261521157600080fd5b8301803591506001600160401b0382111561522b57600080fd5b602001915036819003821315614cfb57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561527857615278615240565b60405290565b604080519081016001600160401b038111828210171561527857615278615240565b604051601f8201601f191681016001600160401b03811182821017156152c8576152c8615240565b604052919050565b60006001600160401b038211156152e9576152e9615240565b5060051b60200190565b600082601f83011261530457600080fd5b81356020615319615314836152d0565b6152a0565b82815260059290921b8401810191818101908684111561533857600080fd5b8286015b84811015615353578035835291830191830161533c565b509695505050505050565b600082601f83011261536f57600080fd5b61537761527e565b80604084018581111561538957600080fd5b845b81811015612e2157803561539e81614ca2565b84526020938401930161538b565b60008183036101008112156153c057600080fd5b6153c8615256565b915060c08112156153d857600080fd5b6153e0615256565b60808212156153ee57600080fd5b6153f661527e565b915084601f85011261540757600080fd5b61540f61527e565b80604086018781111561542157600080fd5b865b8181101561543b578035845260209384019301615423565b50818552615449888261535e565b602086015250505081815261546060808501614dfb565b602082015260a08401356040820152808352505060c0820135602082015260e0820135604082015292915050565b600080600061022084860312156154a457600080fd5b83356001600160401b038111156154ba57600080fd5b6154c6868287016152f3565b9350506154d685602086016153ac565b91506154e68561012086016153ac565b90509250925092565b80518260005b60028110156155145782518252602092830192909101906001016154f5565b5050506020808201516040840160005b600281101561554a5782516001600160401b031682529183019190830190600101615524565b505050505050565b60038110614c9f57614c9f6150ab565b60006101208201905085825261557c6020830186516154ef565b602085015161558a81615552565b60a08301526040949094015160c082015260e081019290925261010090910152919050565b6000602082840312156155c157600080fd5b8151611d1e81614ca2565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60ff8181168382160190811115610e4e57610e4e6155e2565b6020810161561e83615552565b91905290565b81810381811115610e4e57610e4e6155e2565b600060018201615649576156496155e2565b5060010190565b600060c0820190508382528235602083015260208301356040830152604083013561567a81614c8a565b6001600160a01b031660608381019190915283013561569881614ca2565b6001600160401b038082166080850152608085013591506156b882614ca2565b80821660a085015250509392505050565b6000602082840312156156db57600080fd5b8135611d1e81614ca2565b6000602082840312156156f857600080fd5b8151611d1e81614c8a565b8481526101208101602060408682850137606083016040870160005b600281101561574e57813561573381614ca2565b6001600160401b03168352918301919083019060010161571f565b50505050608085013561576081614dee565b61576981615552565b8060a08401525060a085013560c08301528360e08301528261010083015295945050505050565b6001600160401b03828116828216039080821115613cf257613cf26155e2565b82815260408101611d1e60208301846150c1565b80820180821115610e4e57610e4e6155e2565b8082028115828204841417610e4e57610e4e6155e2565b8551815260018060a01b0360208701511660208201526040860151604082015284606082015283608082015260c060a08201528160c0820152818360e0830137600081830160e090810191909152601f909201601f19160101949350505050565b60006020828403121561586157600080fd5b5051919050565b600082601f83011261587957600080fd5b81516020615889615314836152d0565b82815260059290921b840181019181810190868411156158a857600080fd5b8286015b8481101561535357805183529183019183016158ac565b600080604083850312156158d657600080fd5b82516001600160401b03808211156158ed57600080fd5b6158f986838701615868565b9350602085015191508082111561590f57600080fd5b5061591c85828601615868565b9150509250929050565b600060a0820190506159398284516154ef565b602083015161594781615552565b8060808401525092915050565b600080600080600060a0868803121561596c57600080fd5b853594506020860135935060408601356001600160401b038082111561599157600080fd5b61599d89838a016152f3565b945060608801359150808211156159b357600080fd5b6159bf89838a016152f3565b935060808801359150808211156159d557600080fd5b506159e2888289016152f3565b9150509295509295909350565b60008060408385031215615a0257600080fd5b82356001600160401b0380821115615a1957600080fd5b615a25868387016152f3565b93506020850135915080821115615a3b57600080fd5b5061591c858286016152f3565b634e487b7160e01b600052600160045260246000fd5b600181815b80851115615a99578160001904821115615a7f57615a7f6155e2565b80851615615a8c57918102915b93841c9390800290615a63565b509250929050565b600082615ab057506001610e4e565b81615abd57506000610e4e565b8160018114615ad35760028114615add57615af9565b6001915050610e4e565b60ff841115615aee57615aee6155e2565b50506001821b610e4e565b5060208310610133831016604e8410600b8410161715615b1c575081810a610e4e565b615b268383615a5e565b8060001904821115615b3a57615b3a6155e2565b029392505050565b6000611d1e8383615aa1565b60005b83811015615b69578181015183820152602001615b51565b50506000910152565b60008251615b84818460208701615b4e565b9190910192915050565b6020815260008251806020840152615bad816040850160208701615b4e565b601f01601f1916919091016040019291505056fea264697066735822122097d0ba40e9e0a9f7a6f82b5fe8628bb556c0116ecf86a87484d30243f5d7fc7c64736f6c63430008110033",
1628
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101ef5760003560e01c8063655b42f31161010f578063c32d8c63116100a2578063eae0328b11610071578063eae0328b146104b1578063edaab54a146104c4578063f8ee77d6146104d7578063fda2892e146104e057600080fd5b8063c32d8c6314610443578063c8bc4e4314610456578063e5b123da1461047e578063e94e051e1461049e57600080fd5b80638c1b3a40116100de5780638c1b3a40146103ea578063908517e9146103fd578063b2a1408e14610410578063bce6f54f1461042357600080fd5b8063655b42f314610378578063748926f3146103b1578063750e0c0f146103c45780638826a370146103d757600080fd5b8063432bb78a1161018757806351ed6a301161015657806351ed6a301461031057806354b64151146103235780635a48e0f4146103465780635d9e24441461035957600080fd5b8063432bb78a1461028d57806346c2781a146102a057806348923bc5146102cb57806348dd2924146102f657600080fd5b80631dce5166116101c35780631dce5166146102555780633e35f5e81461025e578063416e66571461027157806342e1aaa81461027a57600080fd5b80624d8efe146101f457806305fae1411461021a5780631a72d54c1461022d5780631c1b4f3a14610242575b600080fd5b610207610202366004614c06565b610500565b6040519081526020015b60405180910390f35b610207610228366004614c50565b61051b565b61024061023b366004614d02565b610aa3565b005b610207610250366004614dd5565b610e20565b610207600a5481565b61020761026c366004614dd5565b610e41565b610207600b5481565b610207610288366004614e06565b610e54565b61024061029b366004614e23565b610ed8565b6008546102b3906001600160401b031681565b6040516001600160401b039091168152602001610211565b6009546102de906001600160a01b031681565b6040516001600160a01b039091168152602001610211565b6008546102de90600160401b90046001600160a01b031681565b6006546102de906001600160a01b031681565b610336610331366004614dd5565b610f73565b6040519015158152602001610211565b610207610354366004614dd5565b610f80565b600d546103669060ff1681565b60405160ff9091168152602001610211565b610336610386366004614e6e565b6001600160a01b03919091166000908152600460209081526040808320938352929052205460ff1690565b6102406103bf366004614dd5565b610f8d565b6103366103d2366004614dd5565b611080565b6102406103e5366004614e9a565b611097565b6102406103f8366004614ec6565b6110ff565b61033661040b366004614dd5565b6112ae565b61024061041e366004614f8e565b6112bb565b610207610431366004614dd5565b60009081526002602052604090205490565b610207610451366004614fc8565b6115c4565b61046961046436600461500a565b6115dd565b60408051928352602083019190915201610211565b61020761048c366004614dd5565b60009081526003602052604090205490565b6005546102de906001600160a01b031681565b6102076104bf366004614dd5565b611799565b6102406104d2366004615089565b6117ae565b610207600c5481565b6104f36104ee366004614dd5565b611807565b60405161021191906150d5565b6000610510878787878787611926565b979650505050505050565b60008060088054906101000a90046001600160a01b03166001600160a01b03166312ab3d3b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561056f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059391906151bd565b159050808015610612575060085460405163facd743b60e01b8152336004820152600160401b9091046001600160a01b03169063facd743b90602401602060405180830381865afa1580156105ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061091906151bd565b155b1561063757604051633b4f6e2b60e21b81523360048201526024015b60405180910390fd5b61063f614a15565b600061065c61065160208701876151df565b600d5460ff1661196b565b9050600061066982610e54565b9050610673614a59565b6000836002811115610687576106876150ab565b036109525761069960a08801886151fa565b90506000036106bb57604051630c9ccac560e41b815260040160405180910390fd5b6000806106cb60a08a018a6151fa565b8101906106d8919061548e565b925092505060088054906101000a90046001600160a01b03166001600160a01b031663e51019a68a606001358360000151846020015185604001516040518563ffffffff1660e01b81526004016107329493929190615562565b60006040518083038186803b15801561074a57600080fd5b505afa15801561075e573d6000803e3d6000fd5b505060085460208481015186519187015160408089015190516372880cd360e11b8152600160401b9095046001600160a01b0316965063e51019a695506107aa94929392600401615562565b60006040518083038186803b1580156107c257600080fd5b505afa1580156107d6573d6000803e3d6000fd5b5050505080600001516040015189602001351461081b5780516040908101519051631d31f4cd60e11b815260208b01356004820152602481019190915260440161062e565b6040805160c08101825260608b013580825260208481015190830152600854835163e531d8c760e01b815260048101929092529192830191600160401b90046001600160a01b03169063e531d8c790602401602060405180830381865afa15801561088a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ae91906151bd565b15158152600854602084810151604051632b5de4f360e11b81526004810191909152920191600091600160401b90046001600160a01b0316906356bbc9e690602401602060405180830381865afa15801561090d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093191906155af565b6001600160401b031611815292516020840152905160409092019190915290505b600954600d5461097a916001918a9185916001600160a01b0390911690879060ff168b6119da565b6006549094506001600160a01b03166000600761099a60208b018b6151df565b60ff16815481106109ad576109ad6155cc565b60009182526020909120015490506001600160a01b038216158015906109d257508015155b15610a0e5760008660c001516109e857306109f5565b6005546001600160a01b03165b9050610a0c6001600160a01b038416338385611ab0565b505b8560400151866020015187600001517faa4b66b1ce938c06e2a3f8466bae10ef62e747630e3859889f4719fc6427b5a489606001518a608001518b60a001518c60c001518d60e00151604051610a8d959493929190948552602085019390935260ff919091166040840152151560608301521515608082015260a00190565b60405180910390a4505092519695505050505050565b600054610100900460ff1615808015610ac35750600054600160ff909116105b80610add5750303b158015610add575060005460ff166001145b610b405760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161062e565b6000805460ff191660011790558015610b63576000805461ff0019166101001790555b6001600160a01b038c16610b8a5760405163641f043160e11b815260040160405180910390fd5b600880546001600160a01b03808f16600160401b0268010000000000000000600160e01b0319909216919091179091558a16610bd95760405163fb60b0ef60e01b815260040160405180910390fd5b600980546001600160a01b0319166001600160a01b038c161790556001600160401b038b16600003610c1e57604051632283bb7360e21b815260040160405180910390fd5b6008805467ffffffffffffffff19166001600160401b038d16179055600680546001600160a01b0319166001600160a01b03888116919091179091558516610c79576040516301e1d91560e31b815260040160405180910390fd5b600580546001600160a01b0319166001600160a01b038716179055610c9d89611b1b565b610cbd57604051633abfb6ff60e21b8152600481018a905260240161062e565b600a899055610ccb88611b1b565b610ceb57604051633abfb6ff60e21b81526004810189905260240161062e565b600b889055610cf987611b1b565b610d1957604051633abfb6ff60e21b81526004810188905260240161062e565b600c87905560ff8416600003610d4257604051632a18f5b960e21b815260040160405180910390fd5b60fd8460ff161115610d6c5760405163040d23bf60e41b815260ff8516600482015260240161062e565b600d805460ff191660ff861617905581610d878560026155f8565b60ff1614610dbf5781610d9b8560026155f8565b604051622bb3a760e61b8152600481019290925260ff16602482015260440161062e565b610dcb60078484614a9b565b508015610e12576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b60078181548110610e3057600080fd5b600091825260209091200154905081565b6000610e4e600183611b45565b92915050565b600080826002811115610e6957610e696150ab565b03610e76575050600a5490565b6001826002811115610e8a57610e8a6150ab565b03610e97575050600b5490565b6002826002811115610eab57610eab6150ab565b03610eb8575050600c5490565b81604051630efcb87b60e21b815260040161062e9190615611565b919050565b6000829003610efa5760405163521299a960e01b815260040160405180910390fd5b610f2b8383610f0a600182615624565b818110610f1957610f196155cc565b60019260209091020135905083611ccf565b5060005b82811015610f6d57610f5b848483818110610f4c57610f4c6155cc565b905060200201356000196117ae565b80610f6581615637565b915050610f2f565b50505050565b6000610e4e600183611d25565b6000610e4e600183611d59565b6000610f9a600183611daa565b9050610fa581611df3565b6006546009820154600780546001600160a01b0390931692600092600160481b900460ff16908110610fd957610fd96155cc565b60009182526020909120015490506001600160a01b03821615801590610ffe57508015155b1561101f57600883015461101f906001600160a01b03848116911683611eb6565b600084815260016020526040902061103690611eeb565b604080516001600160a01b03851681526020810184905286917fa635398959ddb5ce3b14537edfc25b2e671274c9b8cad0f4bd634752e69007b6910160405180910390a350505050565b6000818152600160205260408120610e4e90611f1b565b600d5460009081906110b3906001908790879060ff1687611f34565b9150915081156110f857847fbe17755d8d836ad67bfaf8e5b3869aedb4cba03f295a167c5547feddd9ef50ad826040516110ef91815260200190565b60405180910390a25b5050505050565b600061110c600189611d59565b6008546040516304972af960e01b8152919250600160401b90046001600160a01b0316906304972af9906111469084908a90600401615650565b60006040518083038186803b15801561115e57600080fd5b505afa158015611172573d6000803e3d6000fd5b505050506000604051806060016040528088608001602081019061119691906156c9565b6001600160401b0316815260200160088054906101000a90046001600160a01b03166001600160a01b031663e78cea926040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121991906156e6565b6001600160a01b0390811682528935602090920191909152600954600d54600b54600c54949550611261946001948f9416928e9288928e928e928e928e9260ff169190611f9b565b600089815260016020526040902061127890611eeb565b6040518a907fe11db4b27bc8c6ea5943ecbb205ae1ca8d56c42c719717aaf8a53d43d0cee7c290600090a3505050505050505050565b6000610e4e600183612301565b60006112c8600184611daa565b90506112d3816123bc565b61131c576112e0816123e0565b60088201546007830154604051631cb1906160e31b815260048101939093526001600160a01b039091166024830152604482015260640161062e565b600080806009840154600d5461133f9160ff600160481b9091048116911661196b565b6002811115611350576113506150ab565b1490508080156113d4575060085460078401546040516306106c4560e31b81526004810191909152600160401b9091046001600160a01b031690633083622890602401602060405180830381865afa1580156113b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113d491906151bd565b156115495760085460078401546040516372880cd360e11b8152600160401b9092046001600160a01b03169163e51019a69161142091889060c08201359060e083013590600401615703565b60006040518083038186803b15801561143857600080fd5b505afa15801561144c573d6000803e3d6000fd5b5050600854604051631171558560e01b815260c08801356004820152600160401b9091046001600160a01b0316925063117155859150602401602060405180830381865afa1580156114a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114c691906155af565b600854604051632b5de4f360e11b815260c08701356004820152600160401b9091046001600160a01b0316906356bbc9e690602401602060405180830381865afa158015611518573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153c91906155af565b6115469190615790565b91505b60085460009061156890600190889086906001600160401b0316612415565b600087815260016020526040902090915061158290611eeb565b867f2e0808830a22204cb3fb8f8d784b28bc97e9ce2e39d2f9cde2860de0957d68eb836040516115b491815260200190565b60405180910390a3505050505050565b60006115d386868686866124d4565b9695505050505050565b600080600080600061162c898989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600195949392505061252e9050565b8151929550909350915015806116c4578260400151836020015184600001517faa4b66b1ce938c06e2a3f8466bae10ef62e747630e3859889f4719fc6427b5a4866060015187608001518860a001518960c001518a60e001516040516116bb959493929190948552602085019390935260ff919091166040840152151560608301521515608082015260a00190565b60405180910390a45b8160400151826020015183600001517faa4b66b1ce938c06e2a3f8466bae10ef62e747630e3859889f4719fc6427b5a4856060015186608001518760a001518860c001518960e00151604051611743959493929190948552602085019390935260ff919091166040840152151560608301521515608082015260a00190565b60405180910390a48151604051821515815285908c907f7340510d24b7ec9b5c100f5500d93429d80d00d46f0d18e4e85d0c4cc22b99249060200160405180910390a45051919350909150505b94509492505050565b6000610e4e6117a9600184611daa565b61282f565b6000806117bd60018585612874565b915091508115610f6d57837fbe17755d8d836ad67bfaf8e5b3869aedb4cba03f295a167c5547feddd9ef50ad826040516117f991815260200190565b60405180910390a250505050565b61180f614ae6565b61181a600183611daa565b604080516101e0810182528254815260018084015460208301526002840154928201929092526003830154606082015260048301546080820152600583015460a0820152600683015460c0820152600783015460e082015260088301546001600160a01b038116610100830152600160a01b90046001600160401b039081166101208301526009840154908116610140830152909291610160840191600160401b900460ff16908111156118d0576118d06150ab565b60018111156118e1576118e16150ab565b81526009919091015460ff600160481b820481166020840152600160501b820416151560408301526001600160401b03600160581b9091041660609091015292915050565b600061193587878787876124d4565b60408051602081019290925281018390526060016040516020818303038152906040528051906020012090509695505050505050565b60008260ff1660000361198057506000610e4e565b8160ff168360ff161161199557506001610e4e565b6119a08260016155f8565b60ff168360ff16036119b457506002610e4e565b6040516315c1b4af60e31b815260ff80851660048301528316602482015260440161062e565b6119e2614a15565b6000806119f28a8a8a8a89612898565b915091506000611a03838b89612d19565b90506000611a1283838d612e2c565b90508515611a96576000611a2582612e5f565b33600090815260038f016020908152604080832084845290915290205490915060ff1615611a6f57604051632d23561d60e11b81523360048201526024810182905260440161062e565b33600090815260038e016020908152604080832093835292905220805460ff191660011790555b611aa08c82612e83565b9c9b505050505050505050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052610f6d9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261317a565b600081600003611b2d57506000919050565b6000611b3a600184615624565b929092161592915050565b6000818152602083905260408120611b5c90611f1b565b611b7b5760405162a7b02b60e01b81526004810183905260240161062e565b6000828152602084905260408120611b9290611eeb565b6000818152600186016020526040812054919250819003611bc6576040516336843d9f60e21b815260040160405180910390fd5b6040516815539492559053115160ba1b6020820152602901604051602081830303815290604052805190602001208103611c2f57600084815260208690526040902060080154611c2690600160a01b90046001600160401b031643615624565b92505050610e4e565b6000818152602086905260409020611c4690611f1b565b611c655760405162a7b02b60e01b81526004810182905260240161062e565b60008181526020869052604080822060089081015487845291909220909101546001600160401b03600160a01b928390048116929091041680821115611cba57611caf8183615624565b945050505050610e4e565b6000945050505050610e4e565b505092915050565b600082815260208490526040812060090154600160581b90046001600160401b0316828110611d1b5760405163d1f5928160e01b8152600481018290526024810184905260440161062e565b90505b9392505050565b6000611d318383612301565b8015611d1e57506000828152602084905260409020611d4f9061282f565b6001149392505050565b600080611d668484611daa565b90505b6009810154600160481b900460ff1615611da25780546000908152600185016020526040902054611d9a8582611daa565b915050611d69565b549392505050565b6000818152602083905260408120611dc190611f1b565b611de05760405162a7b02b60e01b81526004810183905260240161062e565b5060009081526020919091526040902090565b60016009820154600160401b900460ff166001811115611e1557611e156150ab565b14611e4d57611e23816123e0565b6009820154604051633bc499ed60e21b815261062e9291600160401b900460ff16906004016157b0565b611e56816123bc565b611e63576112e0816123e0565b6009810154600160501b900460ff161515600103611ea057611e84816123e0565b60405163307f766960e01b815260040161062e91815260200190565b600901805460ff60501b1916600160501b179055565b6040516001600160a01b038316602482015260448101829052611ee690849063a9059cbb60e01b90606401611ae4565b505050565b6000610e4e8260090160099054906101000a900460ff1683600001548460020154856001015486600401546124d4565b60080154600160a01b90046001600160401b0316151590565b6000806000611f438888611b45565b9050611f518888888861324c565b600086815260208990526040902060090154611f7d90600160581b90046001600160401b0316826157c4565b9050611f8b888883876133c3565b92509250505b9550959350505050565b60008b815260208d905260409020611fb290611f1b565b611fd15760405162a7b02b60e01b8152600481018c905260240161062e565b600260008c815260208e90526040902060090154611ff990600160481b900460ff168561196b565b600281111561200a5761200a6150ab565b146120475760008b815260208d905260409081902060090154905163348aefdf60e01b8152600160481b90910460ff16600482015260240161062e565b60008b815260208d90526040902061205e9061282f565b6001146120985760008b815260208d90526040902061207c9061282f565b6040516306b595e560e41b815260040161062e91815260200190565b60008b815260208d905260409020600201548b825b60018f600001600084815260200190815260200160002060090160099054906101000a900460ff1660ff1611156121555760008f60000160008481526020019081526020016000206000015490508f60010160008281526020019081526020016000205492508f6000016000848152602001908152602001600020600201548261213791906157d7565b61214190856157c4565b935061214d86836157d7565b9150506120ad565b50506121b28d60000160008e8152602001908152602001600020600101548b60000135838b8b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061344992505050565b60008b6001600160a01b031663b5112fd28b848e600001358f80602001906121da91906151fa565b6040518663ffffffff1660e01b81526004016121fa9594939291906157ee565b602060405180830381865afa158015612217573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223b919061584f565b90506122a08e60000160008f8152602001908152602001600020600301548284600161226791906157c4565b8a8a8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061344992505050565b60008d815260208f9052604090206122b7906134cf565b6122c18e8e613551565b5050506000998a5250505060209790975250506040909320600901805467ffffffffffffffff60581b191667ffffffffffffffff60581b17905550505050565b600081815260208390526040812061231890611f1b565b6123375760405162a7b02b60e01b81526004810183905260240161062e565b600082815260208490526040812061234e90611eeb565b6000818152600186016020526040812054919250819003612382576040516336843d9f60e21b815260040160405180910390fd5b6040516815539492559053115160ba1b602082015260290160408051601f1981840301815291905280516020909101201415949350505050565b600781015460009015801590610e4e575050600801546001600160a01b0316151590565b6000610e4e8260090160099054906101000a900460ff1683600001548460020154856001015486600401548760030154611926565b600083815260208590526040812061242c90611f1b565b61244b5760405162a7b02b60e01b81526004810185905260240161062e565b600061245786866135bb565b905061246c6001600160401b038516826157c4565b9050826001600160401b03168110156124aa5760405163011a8d4d60e41b8152600481018290526001600160401b038416602482015260440161062e565b60008581526020879052604090206124c1906134cf565b6124cb8686613551565b95945050505050565b6040516001600160f81b031960f887901b1660208201526021810185905260418101849052606181018390526081810182905260009060a10160405160208183030381529060405280519060200120905095945050505050565b6000612538614a15565b612540614a15565b60008087815260208990526040902060090154600160401b900460ff16600181111561256e5761256e6150ab565b146125ad57600086815260208890526040908190206009015490516323f8405d60e01b815261062e918891600160401b90910460ff16906004016157b0565b6125b78787612301565b6125d7576040516380e07e4560e01b81526004810187905260240161062e565b6000868152602088905260408120604080516101e0810182528254815260018084015460208301526002840154928201929092526003830154606082015260048301546080820152600583015460a0820152600683015460c0820152600783015460e082015260088301546001600160a01b038116610100830152600160a01b90046001600160401b039081166101208301526009840154908116610140830152909291610160840191600160401b900460ff169081111561269b5761269b6150ab565b60018111156126ac576126ac6150ab565b815260099190910154600160481b810460ff9081166020840152600160501b8204161515604080840191909152600160581b9091046001600160401b0316606090920191909152810151608082015191925060009161270b9190613640565b90506000808780602001905181019061272491906158c3565b9092509050612754896127388560016157c4565b6060870151608088015161274d9060016157c4565b86866136d4565b50506000612760614a15565b60006127818560000151866020015187604001518d888a61018001516139a5565b905061278c81613a3d565b600081815260208e9052604090209093506127a690611f1b565b6127b7576127b48c82612e83565b91505b506127c0614a15565b60006127e186600001518c8789606001518a608001518b61018001516139a5565b90506127ed8d82612e83565b91505061281d8382600001518e60000160008f8152602001908152602001600020613a669092919063ffffffff16565b919b909a509098509650505050505050565b600080826002015483600401546128469190615624565b905080600003610e4e57612859836123e0565b60405162a7b02b60e01b815260040161062e91815260200190565b60008061288c858561288688886135bb565b866133c3565b91509150935093915050565b604080516060808201835260008083526020830152918101919091526000806128cd6128c760208901896151df565b8561196b565b60028111156128de576128de6150ab565b03612b67576020850151855160000361290a576040516374b5e30d60e11b815260040160405180910390fd5b855160608801351461293f5785516040516316c5de8f60e21b815260048101919091526060880135602482015260440161062e565b8560400151612961576040516360b4921b60e11b815260040160405180910390fd5b856060015161298357604051635a2e8e1d60e11b815260040160405180910390fd5b61299060a08801886151fa565b90506000036129b257604051630c9ccac560e41b815260040160405180910390fd5b60006129c160a08901896151fa565b8101906129ce919061548e565b509091506000905087608001516020015160028111156129f0576129f06150ab565b03612a0e5760405163231b2f2960e11b815260040160405180910390fd5b60008760a00151602001516002811115612a2a57612a2a6150ab565b03612a4857604051638999857d60e01b815260040160405180910390fd5b6000866001600160a01b031663c39619c4612a668a60800151613acd565b6040518263ffffffff1660e01b8152600401612a829190615926565b602060405180830381865afa158015612a9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ac3919061584f565b90506000876001600160a01b031663c39619c4612ae38b60a00151613acd565b6040518263ffffffff1660e01b8152600401612aff9190615926565b602060405180830381865afa158015612b1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b40919061584f565b6040805160608101825293845260208401919091528201929092529350909150611f919050565b612b75878760600135611d25565b612b9b5760405160016292642960e01b031981526060870135600482015260240161062e565b6060860135600090815260208890526040812090612bb882611eeb565b905060006009830154600160401b900460ff166001811115612bdc57612bdc6150ab565b14612bfa576040516312459ffd60e01b815260040160405180910390fd5b6009820154612c1390600160481b900460ff1686613b08565b60ff16612c2360208a018a6151df565b60ff1614612c6c57612c3860208901896151df565b600983015460405163564f308b60e11b815260ff9283166004820152600160481b909104909116602482015260440161062e565b612c7960a08901896151fa565b9050600003612c9b57604051630c9ccac560e41b815260040160405180910390fd5b600080808080612cae60a08e018e6151fa565b810190612cbb9190615954565b94509450945094509450612cd9876001015486896002015486613449565b612ced876003015485896004015485613449565b604051806060016040528086815260200185815260200182815250869850985050505050505050611f91565b604080516000808252602082019092528190612d3f90612d3a908751613b2a565b613b60565b9050612d4a83611b1b565b612d6a57604051633abfb6ff60e21b81526004810184905260240161062e565b82846040013514612d9b57604080516337f318af60e21b81529085013560048201526024810184905260440161062e565b612db78460200135866020015186604001358860400151613449565b612dc460808501856151fa565b9050600003612de657604051631a1503a960e11b815260040160405180910390fd5b600080612df660808701876151fa565b810190612e0391906159ef565b9092509050612e21836001602089013561274d60408b0135836157c4565b509095945050505050565b612e34614ae6565b611d1b84846000602086018035906040880135906060890135903390612e5a908b6151df565b613cf9565b6000610e4e82610180015183600001518460400151856020015186608001516124d4565b612e8b614a15565b6000612e9683613a3d565b6000818152602086905260409020909150612eb090611f1b565b15612ed157604051635e76f9ef60e11b81526004810182905260240161062e565b600081815260208581526040918290208551815590850151600180830191909155918501516002820155606085015160038201556080850151600482015560a0850151600582015560c0850151600682015560e085015160078201556101008501516008820180546101208801516001600160401b03908116600160a01b026001600160e01b03199092166001600160a01b03909416939093171790556101408601516009830180549190921667ffffffffffffffff19821681178355610160880151889590939268ffffffffffffffffff191690911790600160401b908490811115612fc057612fc06150ab565b021790555061018082810151600990920180546101a08501516101c0909501516001600160401b0316600160581b0267ffffffffffffffff60581b19951515600160501b0260ff60501b1960ff909616600160481b02959095166affff00000000000000000019909216919091179390931793909316919091179091558301518351604085015160208601516080870151600094613063949093909290916124d4565b60008181526001870160205260408120549192508190036130c2576040516815539492559053115160ba1b602082015260290160408051601f198184030181529181528151602092830120600085815260018a0190935291205561310a565b6040516815539492559053115160ba1b602082015260290160405160208183030381529060405280519060200120810361310a57600082815260018701602052604090208390555b6040805161010081018252848152602080820185905287518284015260e0880151606083015260008681529089905291909120608082019061314b9061282f565b815261018087015160ff166020820152911515604083015260e090950151151560609091015250919392505050565b60006131cf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613e029092919063ffffffff16565b805190915015611ee657808060200190518101906131ed91906151bd565b611ee65760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161062e565b600082815260208590526040902060070154831461329b5760008281526020859052604090819020600701549051631855b87d60e31b815261062e918591600401918252602082015260400190565b6000828152602085905260408082205485835291206132b990611eeb565b146133075760008381526020859052604090206132d590611eeb565b6000838152602086905260409081902054905163e2e27f8760e01b81526004810192909252602482015260440161062e565b600082815260208590526040808220600990810154868452919092209091015460ff600160481b9283900481169261334192041683613b08565b60ff1614610f6d576000838152602085905260409020600901548390839061337390600160481b900460ff1684613b08565b60008581526020889052604090819020600901549051637e726d1560e01b81526004810194909452602484019290925260ff9081166044840152600160481b90910416606482015260840161062e565b60008060006133d3878786611ccf565b90506001600160401b0385116133e957846133f2565b6001600160401b035b94508085111561343b575050506000838152602085905260409020600901805467ffffffffffffffff60581b1916600160581b6001600160401b03851602179055600182611790565b600097909650945050505050565b600061347e82848660405160200161346391815260200190565b60405160208183030381529060405280519060200120613e11565b90508085146110f85760405162461bcd60e51b815260206004820152601760248201527f496e76616c696420696e636c7573696f6e2070726f6f66000000000000000000604482015260640161062e565b60006009820154600160401b900460ff1660018111156134f1576134f16150ab565b14613529576134ff816123e0565b60098201546040516323f8405d60e01b815261062e9291600160401b900460ff16906004016157b0565b60090180546001600160401b03431668ffffffffffffffffff1990911617600160401b179055565b600081815260208390526040812061356890611eeb565b600081815260028501602052604090205490915080156135a557604051630dd7028f60e41b8152600481018490526024810182905260440161062e565b5060009081526002909201602052604090912055565b6000806135c88484611b45565b60008481526020869052604090206005015490915015611d1e576000838152602085905260408082206005810154835281832060099081015460069092015484529190922001546001600160401b03600160581b92839004811692909104168082106136345780613636565b815b6115d390846157c4565b6000600261364e8484615624565b10156136775760405163240a616560e21b8152600481018490526024810183905260440161062e565b6136818383615624565b60020361369a576136938360016157c4565b9050610e4e565b6000836136a8600185615624565b18905060006136b682613eb3565b9050600019811b806136c9600187615624565b169695505050505050565b6000851161371b5760405162461bcd60e51b815260206004820152601460248201527305072652d73697a652063616e6e6f7420626520360641b604482015260640161062e565b8561372583613b60565b146137725760405162461bcd60e51b815260206004820152601b60248201527f50726520657870616e73696f6e20726f6f74206d69736d617463680000000000604482015260640161062e565b8461377c83613fe2565b146137d35760405162461bcd60e51b815260206004820152602160248201527f5072652073697a6520646f6573206e6f74206d6174636820657870616e73696f6044820152603760f91b606482015260840161062e565b8285106138225760405162461bcd60e51b815260206004820181905260248201527f5072652073697a65206e6f74206c657373207468616e20706f73742073697a65604482015260640161062e565b6000859050600080613837856000875161403d565b90505b858310156138ef57600061384e8488614199565b9050845183106138955760405162461bcd60e51b8152602060048201526012602482015271496e646578206f7574206f662072616e676560701b604482015260640161062e565b6138b982828786815181106138ac576138ac6155cc565b602002602001015161427d565b91506001811b6138c981866157c4565b9450878511156138db576138db615a48565b836138e581615637565b945050505061383a565b866138f982613b60565b146139515760405162461bcd60e51b815260206004820152602260248201527f506f737420657870616e73696f6e20726f6f74206e6f7420657175616c20706f6044820152611cdd60f21b606482015260840161062e565b8351821461399a5760405162461bcd60e51b8152602060048201526016602482015275496e636f6d706c6574652070726f6f6620757361676560501b604482015260640161062e565b505050505050505050565b6139ad614ae6565b6139ba87878787876147b9565b50604080516101e08101825296875260208701959095529385019290925260608401526080830152600060a0830181905260c0830181905260e0830181905261010083018190526001600160401b0343166101208401526101408301819052610160830181905260ff9091166101808301526101a082018190526101c082015290565b6000610e4e82610180015183600001518460400151856020015186608001518760600151611926565b6005830154151580613a7b5750600683015415155b15613abd57613a89836123e0565b600584015460068501546040516308b0e71d60e41b815260048101939093526024830191909152604482015260640161062e565b6005830191909155600690910155565b613ad5614b60565b60405180604001604052808360000151815260200183602001516002811115613b0057613b006150ab565b905292915050565b600080613b168460016155f8565b9050613b22818461196b565b509392505050565b6060611d1e83600084604051602001613b4591815260200190565b6040516020818303038152906040528051906020012061427d565b600080825111613bab5760405162461bcd60e51b815260206004820152601660248201527522b6b83a3c9036b2b935b6329032bc3830b739b4b7b760511b604482015260640161062e565b604082511115613bfd5760405162461bcd60e51b815260206004820152601a60248201527f4d65726b6c6520657870616e73696f6e20746f6f206c61726765000000000000604482015260640161062e565b6000805b8351811015613cf2576000848281518110613c1e57613c1e6155cc565b60200260200101519050826000801b03613c8a578015613c855780925060018551613c499190615624565b8214613c8557604051613c6c908490600090602001918252602082015260400190565b6040516020818303038152906040528051906020012092505b613cdf565b8015613ca9576040805160208101839052908101849052606001613c6c565b604051613cc6908490600090602001918252602082015260400190565b6040516020818303038152906040528051906020012092505b5080613cea81615637565b915050613c01565b5092915050565b613d01614ae6565b6001600160a01b038316613d285760405163f289e65760e01b815260040160405180910390fd5b6000849003613d4a57604051636932bcfd60e01b815260040160405180910390fd5b613d5789898989896147b9565b604051806101e001604052808a81526020018981526020018881526020018781526020018681526020016000801b81526020016000801b8152602001858152602001846001600160a01b03168152602001436001600160401b0316815260200160006001600160401b0316815260200160006001811115613dda57613dda6150ab565b815260ff84166020820152600060408201819052606090910152905098975050505050505050565b6060611d1b8484600085614849565b8251600090610100811115613e4457604051637ed6198f60e11b815260048101829052610100602482015260440161062e565b8260005b82811015613ea9576000878281518110613e6457613e646155cc565b60200260200101519050816001901b8716600003613e9057826000528060205260406000209250613ea0565b8060005282602052604060002092505b50600101613e48565b5095945050505050565b600081600003613f055760405162461bcd60e51b815260206004820152601c60248201527f5a65726f20686173206e6f207369676e69666963616e74206269747300000000604482015260640161062e565b600160801b8210613f2357608091821c91613f2090826157c4565b90505b600160401b8210613f4157604091821c91613f3e90826157c4565b90505b6401000000008210613f6057602091821c91613f5d90826157c4565b90505b620100008210613f7d57601091821c91613f7a90826157c4565b90505b6101008210613f9957600891821c91613f9690826157c4565b90505b60108210613fb457600491821c91613fb190826157c4565b90505b60048210613fcf57600291821c91613fcc90826157c4565b90505b60028210610ed357610e4e6001826157c4565b600080805b8351811015613cf257838181518110614002576140026155cc565b60200260200101516000801b1461402b5761401e816002615b42565b61402890836157c4565b91505b8061403581615637565b915050613fe7565b60608183106140885760405162461bcd60e51b815260206004820152601760248201527614dd185c9d081b9bdd081b195cdcc81d1a185b88195b99604a1b604482015260640161062e565b83518211156140e35760405162461bcd60e51b815260206004820152602160248201527f456e64206e6f74206c657373206f7220657175616c207468616e206c656e67746044820152600d60fb1b606482015260840161062e565b60006140ef8484615624565b6001600160401b0381111561410657614106615240565b60405190808252806020026020018201604052801561412f578160200160208202803683370190505b509050835b838110156141905785818151811061414e5761414e6155cc565b60200260200101518286836141639190615624565b81518110614173576141736155cc565b60209081029190910101528061418881615637565b915050614134565b50949350505050565b60008183106141e45760405162461bcd60e51b815260206004820152601760248201527614dd185c9d081b9bdd081b195cdcc81d1a185b88195b99604a1b604482015260640161062e565b60006141f1838518613eb3565b90506000600161420183826157c4565b6001901b61420f9190615624565b9050848116848216811561422657611caf8261496f565b801561423557611caf81613eb3565b60405162461bcd60e51b815260206004820152601b60248201527f426f7468207920616e64207a2063616e6e6f74206265207a65726f0000000000604482015260640161062e565b6060604083106142c05760405162461bcd60e51b815260206004820152600e60248201526d098caeccad840e8dede40d0d2ced60931b604482015260640161062e565b60008290036143115760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f7420617070656e6420656d70747920737562747265650000000000604482015260640161062e565b6040845111156143635760405162461bcd60e51b815260206004820152601a60248201527f4d65726b6c6520657870616e73696f6e20746f6f206c61726765000000000000604482015260640161062e565b83516000036143e15760006143798460016157c4565b6001600160401b0381111561439057614390615240565b6040519080825280602002602001820160405280156143b9578160200160208202803683370190505b509050828185815181106143cf576143cf6155cc565b60209081029190910101529050611d1e565b8351831061444f5760405162461bcd60e51b815260206004820152603560248201527f4c6576656c2067726561746572207468616e2068696768657374206c6576656c6044820152741037b31031bab93932b73a1032bc3830b739b4b7b760591b606482015260840161062e565b81600061445b86613fe2565b9050600061446a866002615b42565b61447490836157c4565b9050600061448183613eb3565b61448a83613eb3565b116144d75787516001600160401b038111156144a8576144a8615240565b6040519080825280602002602001820160405280156144d1578160200160208202803683370190505b50614526565b87516144e49060016157c4565b6001600160401b038111156144fb576144fb615240565b604051908082528060200260200182016040528015614524578160200160208202803683370190505b505b905060408151111561457a5760405162461bcd60e51b815260206004820152601c60248201527f417070656e642063726561746573206f76657273697a65207472656500000000604482015260640161062e565b60005b885181101561471b5787811015614609578881815181106145a0576145a06155cc565b60200260200101516000801b146146045760405162461bcd60e51b815260206004820152602260248201527f417070656e642061626f7665206c65617374207369676e69666963616e7420626044820152611a5d60f21b606482015260840161062e565b614709565b600085900361464f57888181518110614624576146246155cc565b602002602001015182828151811061463e5761463e6155cc565b602002602001018181525050614709565b888181518110614661576146616155cc565b60200260200101516000801b036146995784828281518110614685576146856155cc565b602090810291909101015260009450614709565b6000801b8282815181106146af576146af6155cc565b6020026020010181815250508881815181106146cd576146cd6155cc565b6020026020010151856040516020016146f0929190918252602082015260400190565b6040516020818303038152906040528051906020012094505b8061471381615637565b91505061457d565b50831561474f578381600183516147329190615624565b81518110614742576147426155cc565b6020026020010181815250505b806001825161475e9190615624565b8151811061476e5761476e6155cc565b60200260200101516000801b036105105760405162461bcd60e51b815260206004820152600f60248201526e4c61737420656e747279207a65726f60881b604482015260640161062e565b60008590036147db5760405163235e76ef60e21b815260040160405180910390fd5b828111614805576040516308183ebd60e21b8152600481018490526024810182905260440161062e565b6000849003614827576040516320f1a0f960e21b815260040160405180910390fd5b60008290036110f857604051635cb6e5bb60e01b815260040160405180910390fd5b6060824710156148aa5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161062e565b6001600160a01b0385163b6149015760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161062e565b600080866001600160a01b0316858760405161491d9190615b72565b60006040518083038185875af1925050503d806000811461495a576040519150601f19603f3d011682016040523d82523d6000602084013e61495f565b606091505b50915091506105108282866149dc565b60008082116149c05760405162461bcd60e51b815260206004820152601c60248201527f5a65726f20686173206e6f207369676e69666963616e74206269747300000000604482015260640161062e565b600082806149cf600182615624565b16189050611d1e81613eb3565b606083156149eb575081611d1e565b8251156149fb5782518084602001fd5b8160405162461bcd60e51b815260040161062e9190615b8e565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b6040805160c081018252600080825260208201819052918101829052606081019190915260808101614a89614b7f565b8152602001614a96614b7f565b905290565b828054828255906000526020600020908101928215614ad6579160200282015b82811115614ad6578235825591602001919060010190614abb565b50614ae2929150614ba6565b5090565b604080516101e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081018290526101008101829052610120810182905261014081018290529061016082019081526000602082018190526040820181905260609091015290565b6040518060400160405280614b73614bbb565b81526020016000905290565b6040518060600160405280614b92614bbb565b815260200160008152600060209091015290565b5b80821115614ae25760008155600101614ba7565b6040518060400160405280614bce614bd7565b8152602001614a965b60405180604001604052806002906020820280368337509192915050565b803560ff81168114610ed357600080fd5b60008060008060008060c08789031215614c1f57600080fd5b614c2887614bf5565b9860208801359850604088013597606081013597506080810135965060a00135945092505050565b600060208284031215614c6257600080fd5b81356001600160401b03811115614c7857600080fd5b820160c08185031215611d1e57600080fd5b6001600160a01b0381168114614c9f57600080fd5b50565b6001600160401b0381168114614c9f57600080fd5b60008083601f840112614cc957600080fd5b5081356001600160401b03811115614ce057600080fd5b6020830191508360208260051b8501011115614cfb57600080fd5b9250929050565b60008060008060008060008060008060006101408c8e031215614d2457600080fd5b8b35614d2f81614c8a565b9a5060208c0135614d3f81614ca2565b995060408c0135614d4f81614c8a565b985060608c0135975060808c0135965060a08c0135955060c08c0135614d7481614c8a565b945060e08c0135614d8481614c8a565b9350614d936101008d01614bf5565b92506101208c01356001600160401b03811115614daf57600080fd5b614dbb8e828f01614cb7565b915080935050809150509295989b509295989b9093969950565b600060208284031215614de757600080fd5b5035919050565b60038110614c9f57600080fd5b8035610ed381614dee565b600060208284031215614e1857600080fd5b8135611d1e81614dee565b600080600060408486031215614e3857600080fd5b83356001600160401b03811115614e4e57600080fd5b614e5a86828701614cb7565b909790965060209590950135949350505050565b60008060408385031215614e8157600080fd5b8235614e8c81614c8a565b946020939093013593505050565b600080600060608486031215614eaf57600080fd5b505081359360208301359350604090920135919050565b6000806000806000806000878903610120811215614ee357600080fd5b8835975060208901356001600160401b0380821115614f0157600080fd5b908a01906040828d031215614f1557600080fd5b81985060a0603f1984011215614f2a57600080fd5b60408b01975060e08b0135925080831115614f4457600080fd5b614f508c848d01614cb7565b90975095506101008b0135925086915080831115614f6d57600080fd5b5050614f7b8a828b01614cb7565b989b979a50959850939692959293505050565b600080828403610120811215614fa357600080fd5b83359250610100601f1982011215614fba57600080fd5b506020830190509250929050565b600080600080600060a08688031215614fe057600080fd5b614fe986614bf5565b97602087013597506040870135966060810135965060800135945092505050565b6000806000806060858703121561502057600080fd5b843593506020850135925060408501356001600160401b038082111561504557600080fd5b818701915087601f83011261505957600080fd5b81358181111561506857600080fd5b88602082850101111561507a57600080fd5b95989497505060200194505050565b6000806040838503121561509c57600080fd5b50508035926020909101359150565b634e487b7160e01b600052602160045260246000fd5b600281106150d1576150d16150ab565b9052565b60006101e082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151615143828501826001600160a01b03169052565b5050610120838101516001600160401b038116848301525050610140838101516001600160401b03811684830152505061016080840151615186828501826150c1565b50506101808381015160ff16908301526101a0808401511515908301526101c0808401516001600160401b03811682850152611cc7565b6000602082840312156151cf57600080fd5b81518015158114611d1e57600080fd5b6000602082840312156151f157600080fd5b611d1e82614bf5565b6000808335601e1984360301811261521157600080fd5b8301803591506001600160401b0382111561522b57600080fd5b602001915036819003821315614cfb57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561527857615278615240565b60405290565b604080519081016001600160401b038111828210171561527857615278615240565b604051601f8201601f191681016001600160401b03811182821017156152c8576152c8615240565b604052919050565b60006001600160401b038211156152e9576152e9615240565b5060051b60200190565b600082601f83011261530457600080fd5b81356020615319615314836152d0565b6152a0565b82815260059290921b8401810191818101908684111561533857600080fd5b8286015b84811015615353578035835291830191830161533c565b509695505050505050565b600082601f83011261536f57600080fd5b61537761527e565b80604084018581111561538957600080fd5b845b81811015612e2157803561539e81614ca2565b84526020938401930161538b565b60008183036101008112156153c057600080fd5b6153c8615256565b915060c08112156153d857600080fd5b6153e0615256565b60808212156153ee57600080fd5b6153f661527e565b915084601f85011261540757600080fd5b61540f61527e565b80604086018781111561542157600080fd5b865b8181101561543b578035845260209384019301615423565b50818552615449888261535e565b602086015250505081815261546060808501614dfb565b602082015260a08401356040820152808352505060c0820135602082015260e0820135604082015292915050565b600080600061022084860312156154a457600080fd5b83356001600160401b038111156154ba57600080fd5b6154c6868287016152f3565b9350506154d685602086016153ac565b91506154e68561012086016153ac565b90509250925092565b80518260005b60028110156155145782518252602092830192909101906001016154f5565b5050506020808201516040840160005b600281101561554a5782516001600160401b031682529183019190830190600101615524565b505050505050565b60038110614c9f57614c9f6150ab565b60006101208201905085825261557c6020830186516154ef565b602085015161558a81615552565b60a08301526040949094015160c082015260e081019290925261010090910152919050565b6000602082840312156155c157600080fd5b8151611d1e81614ca2565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60ff8181168382160190811115610e4e57610e4e6155e2565b6020810161561e83615552565b91905290565b81810381811115610e4e57610e4e6155e2565b600060018201615649576156496155e2565b5060010190565b600060c0820190508382528235602083015260208301356040830152604083013561567a81614c8a565b6001600160a01b031660608381019190915283013561569881614ca2565b6001600160401b038082166080850152608085013591506156b882614ca2565b80821660a085015250509392505050565b6000602082840312156156db57600080fd5b8135611d1e81614ca2565b6000602082840312156156f857600080fd5b8151611d1e81614c8a565b8481526101208101602060408682850137606083016040870160005b600281101561574e57813561573381614ca2565b6001600160401b03168352918301919083019060010161571f565b50505050608085013561576081614dee565b61576981615552565b8060a08401525060a085013560c08301528360e08301528261010083015295945050505050565b6001600160401b03828116828216039080821115613cf257613cf26155e2565b82815260408101611d1e60208301846150c1565b80820180821115610e4e57610e4e6155e2565b8082028115828204841417610e4e57610e4e6155e2565b8551815260018060a01b0360208701511660208201526040860151604082015284606082015283608082015260c060a08201528160c0820152818360e0830137600081830160e090810191909152601f909201601f19160101949350505050565b60006020828403121561586157600080fd5b5051919050565b600082601f83011261587957600080fd5b81516020615889615314836152d0565b82815260059290921b840181019181810190868411156158a857600080fd5b8286015b8481101561535357805183529183019183016158ac565b600080604083850312156158d657600080fd5b82516001600160401b03808211156158ed57600080fd5b6158f986838701615868565b9350602085015191508082111561590f57600080fd5b5061591c85828601615868565b9150509250929050565b600060a0820190506159398284516154ef565b602083015161594781615552565b8060808401525092915050565b600080600080600060a0868803121561596c57600080fd5b853594506020860135935060408601356001600160401b038082111561599157600080fd5b61599d89838a016152f3565b945060608801359150808211156159b357600080fd5b6159bf89838a016152f3565b935060808801359150808211156159d557600080fd5b506159e2888289016152f3565b9150509295509295909350565b60008060408385031215615a0257600080fd5b82356001600160401b0380821115615a1957600080fd5b615a25868387016152f3565b93506020850135915080821115615a3b57600080fd5b5061591c858286016152f3565b634e487b7160e01b600052600160045260246000fd5b600181815b80851115615a99578160001904821115615a7f57615a7f6155e2565b80851615615a8c57918102915b93841c9390800290615a63565b509250929050565b600082615ab057506001610e4e565b81615abd57506000610e4e565b8160018114615ad35760028114615add57615af9565b6001915050610e4e565b60ff841115615aee57615aee6155e2565b50506001821b610e4e565b5060208310610133831016604e8410600b8410161715615b1c575081810a610e4e565b615b268383615a5e565b8060001904821115615b3a57615b3a6155e2565b029392505050565b6000611d1e8383615aa1565b60005b83811015615b69578181015183820152602001615b51565b50506000910152565b60008251615b84818460208701615b4e565b9190910192915050565b6020815260008251806020840152615bad816040850160208701615b4e565b601f01601f1916919091016040019291505056fea264697066735822122097d0ba40e9e0a9f7a6f82b5fe8628bb556c0116ecf86a87484d30243f5d7fc7c64736f6c63430008110033",
1629
+ "linkReferences": {},
1630
+ "deployedLinkReferences": {}
1631
+ }