@hyperlane-xyz/core 1.4.0 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/contracts/interfaces/IInterchainSecurityModule.sol +2 -2
  2. package/dist/factories/contracts/Mailbox__factory.d.ts +1 -1
  3. package/dist/factories/contracts/Mailbox__factory.js +1 -1
  4. package/dist/factories/contracts/ValidatorAnnounce__factory.d.ts +1 -1
  5. package/dist/factories/contracts/ValidatorAnnounce__factory.js +1 -1
  6. package/dist/factories/contracts/hooks/ERC5164/ERC5164MessageHook__factory.d.ts +1 -1
  7. package/dist/factories/contracts/hooks/ERC5164/ERC5164MessageHook__factory.js +1 -1
  8. package/dist/factories/contracts/hooks/OptimismMessageHook__factory.d.ts +1 -1
  9. package/dist/factories/contracts/hooks/OptimismMessageHook__factory.js +1 -1
  10. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsmFactory__factory.d.ts +1 -1
  11. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsmFactory__factory.js +1 -1
  12. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsm__factory.d.ts +1 -1
  13. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsm__factory.js +1 -1
  14. package/dist/factories/contracts/isms/hook/ERC5164ISM__factory.d.ts +1 -1
  15. package/dist/factories/contracts/isms/hook/ERC5164ISM__factory.js +1 -1
  16. package/dist/factories/contracts/isms/hook/optimism/OptimismISM__factory.d.ts +1 -1
  17. package/dist/factories/contracts/isms/hook/optimism/OptimismISM__factory.js +1 -1
  18. package/dist/factories/contracts/isms/multisig/LegacyMultisigIsm__factory.d.ts +1 -1
  19. package/dist/factories/contracts/isms/multisig/LegacyMultisigIsm__factory.js +1 -1
  20. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsmFactory__factory.d.ts +1 -1
  21. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsmFactory__factory.js +1 -1
  22. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsm__factory.d.ts +1 -1
  23. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsm__factory.js +1 -1
  24. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsmFactory__factory.d.ts +1 -1
  25. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsmFactory__factory.js +1 -1
  26. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsm__factory.d.ts +1 -1
  27. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsm__factory.js +1 -1
  28. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory__factory.d.ts +1 -1
  29. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory__factory.js +1 -1
  30. package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.d.ts +1 -1
  31. package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.js +1 -1
  32. package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.d.ts +1 -1
  33. package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.js +1 -1
  34. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts +1 -1
  35. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js +1 -1
  36. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.d.ts +1 -1
  37. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js +1 -1
  38. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts +1 -1
  39. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js +1 -1
  40. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.d.ts +1 -1
  41. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js +1 -1
  42. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.d.ts +1 -1
  43. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.js +1 -1
  44. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts +1 -1
  45. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js +1 -1
  46. package/dist/factories/contracts/mock/MockMailbox__factory.d.ts +1 -1
  47. package/dist/factories/contracts/mock/MockMailbox__factory.js +1 -1
  48. package/dist/factories/contracts/test/LightTestRecipient__factory.d.ts +1 -1
  49. package/dist/factories/contracts/test/LightTestRecipient__factory.js +1 -1
  50. package/dist/factories/contracts/test/TestGasRouter__factory.d.ts +1 -1
  51. package/dist/factories/contracts/test/TestGasRouter__factory.js +1 -1
  52. package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.d.ts +1 -1
  53. package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.js +1 -1
  54. package/dist/factories/contracts/test/TestLegacyMultisigIsm__factory.d.ts +1 -1
  55. package/dist/factories/contracts/test/TestLegacyMultisigIsm__factory.js +1 -1
  56. package/dist/factories/contracts/test/TestMailbox__factory.d.ts +1 -1
  57. package/dist/factories/contracts/test/TestMailbox__factory.js +1 -1
  58. package/dist/factories/contracts/test/TestMultisigIsm__factory.d.ts +1 -1
  59. package/dist/factories/contracts/test/TestMultisigIsm__factory.js +1 -1
  60. package/dist/factories/contracts/test/TestQuery__factory.d.ts +1 -1
  61. package/dist/factories/contracts/test/TestQuery__factory.js +1 -1
  62. package/dist/factories/contracts/test/TestRecipient__factory.d.ts +1 -1
  63. package/dist/factories/contracts/test/TestRecipient__factory.js +1 -1
  64. package/dist/factories/contracts/test/TestRouter__factory.d.ts +1 -1
  65. package/dist/factories/contracts/test/TestRouter__factory.js +1 -1
  66. package/dist/factories/contracts/test/TestSendReceiver__factory.d.ts +1 -1
  67. package/dist/factories/contracts/test/TestSendReceiver__factory.js +1 -1
  68. package/docs/book.css +13 -0
  69. package/docs/book.toml +12 -0
  70. package/docs/solidity.min.js +74 -0
  71. package/docs/src/README.md +15 -0
  72. package/docs/src/SUMMARY.md +139 -0
  73. package/docs/src/contracts/GasRouter.sol/abstract.GasRouter.md +124 -0
  74. package/docs/src/contracts/HyperlaneConnectionClient.sol/abstract.HyperlaneConnectionClient.md +191 -0
  75. package/docs/src/contracts/Mailbox.sol/contract.Mailbox.md +251 -0
  76. package/docs/src/contracts/OwnableMulticall.sol/contract.OwnableMulticall.md +41 -0
  77. package/docs/src/contracts/PausableReentrancyGuard.sol/abstract.PausableReentrancyGuardUpgradeable.md +100 -0
  78. package/docs/src/contracts/README.md +19 -0
  79. package/docs/src/contracts/Router.sol/abstract.Router.md +255 -0
  80. package/docs/src/contracts/ValidatorAnnounce.sol/contract.ValidatorAnnounce.md +117 -0
  81. package/docs/src/contracts/hooks/ERC5164/ERC5164MessageHook.sol/contract.ERC5164MessageHook.md +64 -0
  82. package/docs/src/contracts/hooks/ERC5164/README.md +5 -0
  83. package/docs/src/contracts/hooks/ERC5164/interfaces/IMessageDispatcher.sol/interface.IMessageDispatcher.md +25 -0
  84. package/docs/src/contracts/hooks/ERC5164/interfaces/README.md +4 -0
  85. package/docs/src/contracts/hooks/OptimismMessageHook.sol/contract.OptimismMessageHook.md +71 -0
  86. package/docs/src/contracts/hooks/README.md +5 -0
  87. package/docs/src/contracts/igps/InterchainGasPaymaster.sol/contract.InterchainGasPaymaster.md +231 -0
  88. package/docs/src/contracts/igps/OverheadIgp.sol/contract.OverheadIgp.md +161 -0
  89. package/docs/src/contracts/igps/README.md +6 -0
  90. package/docs/src/contracts/igps/gas-oracles/README.md +4 -0
  91. package/docs/src/contracts/igps/gas-oracles/StorageGasOracle.sol/contract.StorageGasOracle.md +114 -0
  92. package/docs/src/contracts/interfaces/IGasOracle.sol/interface.IGasOracle.md +25 -0
  93. package/docs/src/contracts/interfaces/IHyperlaneConnectionClient.sol/interface.IHyperlaneConnectionClient.md +43 -0
  94. package/docs/src/contracts/interfaces/IInterchainGasPaymaster.sol/interface.IInterchainGasPaymaster.md +33 -0
  95. package/docs/src/contracts/interfaces/IInterchainSecurityModule.sol/interface.IInterchainSecurityModule.md +55 -0
  96. package/docs/src/contracts/interfaces/IInterchainSecurityModule.sol/interface.ISpecifiesInterchainSecurityModule.md +12 -0
  97. package/docs/src/contracts/interfaces/ILiquidityLayerMessageRecipient.sol/interface.ILiquidityLayerMessageRecipient.md +13 -0
  98. package/docs/src/contracts/interfaces/ILiquidityLayerRouter.sol/interface.ILiquidityLayerRouter.md +19 -0
  99. package/docs/src/contracts/interfaces/IMailbox.sol/interface.IMailbox.md +103 -0
  100. package/docs/src/contracts/interfaces/IMessageRecipient.sol/interface.IMessageRecipient.md +12 -0
  101. package/docs/src/contracts/interfaces/IRouter.sol/interface.IRouter.md +33 -0
  102. package/docs/src/contracts/interfaces/IValidatorAnnounce.sol/interface.IValidatorAnnounce.md +78 -0
  103. package/docs/src/contracts/interfaces/README.md +17 -0
  104. package/docs/src/contracts/interfaces/hooks/IMessageHook.sol/interface.IMessageHook.md +12 -0
  105. package/docs/src/contracts/interfaces/hooks/README.md +4 -0
  106. package/docs/src/contracts/interfaces/isms/IAggregationIsm.sol/interface.IAggregationIsm.md +36 -0
  107. package/docs/src/contracts/interfaces/isms/IMultisigIsm.sol/interface.IMultisigIsm.md +36 -0
  108. package/docs/src/contracts/interfaces/isms/IRoutingIsm.sol/interface.IRoutingIsm.md +31 -0
  109. package/docs/src/contracts/interfaces/isms/README.md +6 -0
  110. package/docs/src/contracts/interfaces/middleware/IInterchainAccountRouter.sol/interface.IInterchainAccountRouter.md +64 -0
  111. package/docs/src/contracts/interfaces/middleware/IInterchainQueryRouter.sol/interface.IInterchainQueryRouter.md +21 -0
  112. package/docs/src/contracts/interfaces/middleware/README.md +5 -0
  113. package/docs/src/contracts/isms/README.md +7 -0
  114. package/docs/src/contracts/isms/aggregation/AbstractAggregationIsm.sol/abstract.AbstractAggregationIsm.md +60 -0
  115. package/docs/src/contracts/isms/aggregation/README.md +6 -0
  116. package/docs/src/contracts/isms/aggregation/StaticAggregationIsm.sol/contract.StaticAggregationIsm.md +30 -0
  117. package/docs/src/contracts/isms/aggregation/StaticAggregationIsmFactory.sol/contract.StaticAggregationIsmFactory.md +15 -0
  118. package/docs/src/contracts/isms/hook/AbstractHookISM.sol/abstract.AbstractHookISM.md +44 -0
  119. package/docs/src/contracts/isms/hook/CrossChainEnabled.sol/abstract.CrossChainEnabled.md +74 -0
  120. package/docs/src/contracts/isms/hook/ERC5164ISM.sol/contract.ERC5164ISM.md +57 -0
  121. package/docs/src/contracts/isms/hook/README.md +7 -0
  122. package/docs/src/contracts/isms/hook/optimism/CrossChainEnabledOptimism.sol/abstract.CrossChainEnabledOptimism.md +53 -0
  123. package/docs/src/contracts/isms/hook/optimism/LibOptimism.sol/library.LibOptimism.md +39 -0
  124. package/docs/src/contracts/isms/hook/optimism/OptimismISM.sol/contract.OptimismISM.md +66 -0
  125. package/docs/src/contracts/isms/hook/optimism/README.md +6 -0
  126. package/docs/src/contracts/isms/multisig/AbstractMerkleRootMultisigIsm.sol/abstract.AbstractMerkleRootMultisigIsm.md +78 -0
  127. package/docs/src/contracts/isms/multisig/AbstractMessageIdMultisigIsm.sol/abstract.AbstractMessageIdMultisigIsm.md +69 -0
  128. package/docs/src/contracts/isms/multisig/AbstractMultisigIsm.sol/abstract.AbstractMultisigIsm.md +102 -0
  129. package/docs/src/contracts/isms/multisig/LegacyMultisigIsm.sol/contract.LegacyMultisigIsm.md +355 -0
  130. package/docs/src/contracts/isms/multisig/README.md +12 -0
  131. package/docs/src/contracts/isms/multisig/StaticMultisigIsm.sol/abstract.AbstractMetaProxyMultisigIsm.md +36 -0
  132. package/docs/src/contracts/isms/multisig/StaticMultisigIsm.sol/contract.StaticMerkleRootMultisigIsm.md +11 -0
  133. package/docs/src/contracts/isms/multisig/StaticMultisigIsm.sol/contract.StaticMerkleRootMultisigIsmFactory.md +15 -0
  134. package/docs/src/contracts/isms/multisig/StaticMultisigIsm.sol/contract.StaticMessageIdMultisigIsm.md +10 -0
  135. package/docs/src/contracts/isms/multisig/StaticMultisigIsm.sol/contract.StaticMessageIdMultisigIsmFactory.md +15 -0
  136. package/docs/src/contracts/isms/routing/AbstractRoutingIsm.sol/abstract.AbstractRoutingIsm.md +55 -0
  137. package/docs/src/contracts/isms/routing/DomainRoutingIsm.sol/contract.DomainRoutingIsm.md +112 -0
  138. package/docs/src/contracts/isms/routing/DomainRoutingIsmFactory.sol/contract.DomainRoutingIsmFactory.md +47 -0
  139. package/docs/src/contracts/isms/routing/InterchainAccountIsm.sol/contract.InterchainAccountIsm.md +44 -0
  140. package/docs/src/contracts/isms/routing/README.md +7 -0
  141. package/docs/src/contracts/libs/Call.sol/library.CallLib.md +124 -0
  142. package/docs/src/contracts/libs/CheckpointLib.sol/library.CheckpointLib.md +61 -0
  143. package/docs/src/contracts/libs/EnumerableMapExtended.sol/library.EnumerableMapExtended.md +63 -0
  144. package/docs/src/contracts/libs/LegacyCheckpointLib.sol/library.LegacyCheckpointLib.md +55 -0
  145. package/docs/src/contracts/libs/Merkle.sol/library.MerkleLib.md +354 -0
  146. package/docs/src/contracts/libs/Message.sol/library.Message.md +304 -0
  147. package/docs/src/contracts/libs/MetaProxy.sol/library.MetaProxy.md +36 -0
  148. package/docs/src/contracts/libs/MinimalProxy.sol/library.MinimalProxy.md +34 -0
  149. package/docs/src/contracts/libs/README.md +16 -0
  150. package/docs/src/contracts/libs/StaticMOfNAddressSetFactory.sol/abstract.StaticMOfNAddressSetFactory.md +123 -0
  151. package/docs/src/contracts/libs/TypeCasts.sol/library.TypeCasts.md +19 -0
  152. package/docs/src/contracts/libs/ValidatorAnnouncements.sol/library.ValidatorAnnouncements.md +31 -0
  153. package/docs/src/contracts/libs/isms/AggregationIsmMetadata.sol/library.AggregationIsmMetadata.md +97 -0
  154. package/docs/src/contracts/libs/isms/LegacyMultisigIsmMetadata.sol/library.LegacyMultisigIsmMetadata.md +296 -0
  155. package/docs/src/contracts/libs/isms/MerkleRootMultisigIsmMetadata.sol/library.MerkleRootMultisigIsmMetadata.md +177 -0
  156. package/docs/src/contracts/libs/isms/MessageIdMultisigIsmMetadata.sol/library.MessageIdMultisigIsmMetadata.md +109 -0
  157. package/docs/src/contracts/libs/isms/README.md +7 -0
  158. package/docs/src/contracts/libs/middleware/InterchainAccountMessage.sol/library.InterchainAccountMessage.md +134 -0
  159. package/docs/src/contracts/libs/middleware/InterchainQueryMessage.sol/library.InterchainQueryMessage.md +203 -0
  160. package/docs/src/contracts/libs/middleware/README.md +5 -0
  161. package/docs/src/contracts/middleware/InterchainAccountRouter.sol/contract.InterchainAccountRouter.md +542 -0
  162. package/docs/src/contracts/middleware/InterchainQueryRouter.sol/contract.InterchainQueryRouter.md +119 -0
  163. package/docs/src/contracts/middleware/README.md +6 -0
  164. package/docs/src/contracts/middleware/liquidity-layer/LiquidityLayerRouter.sol/contract.LiquidityLayerRouter.md +81 -0
  165. package/docs/src/contracts/middleware/liquidity-layer/README.md +6 -0
  166. package/docs/src/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.sol/contract.CircleBridgeAdapter.md +197 -0
  167. package/docs/src/contracts/middleware/liquidity-layer/adapters/PortalAdapter.sol/contract.PortalAdapter.md +189 -0
  168. package/docs/src/contracts/middleware/liquidity-layer/adapters/README.md +5 -0
  169. package/docs/src/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter.sol/interface.ILiquidityLayerAdapter.md +23 -0
  170. package/docs/src/contracts/middleware/liquidity-layer/interfaces/README.md +6 -0
  171. package/docs/src/contracts/middleware/liquidity-layer/interfaces/circle/ICircleMessageTransmitter.sol/interface.ICircleMessageTransmitter.md +54 -0
  172. package/docs/src/contracts/middleware/liquidity-layer/interfaces/circle/ITokenMessenger.sol/interface.ITokenMessenger.md +92 -0
  173. package/docs/src/contracts/middleware/liquidity-layer/interfaces/circle/README.md +5 -0
  174. package/docs/src/contracts/middleware/liquidity-layer/interfaces/portal/IPortalTokenBridge.sol/interface.IPortalTokenBridge.md +131 -0
  175. package/docs/src/contracts/middleware/liquidity-layer/interfaces/portal/README.md +4 -0
  176. package/docs/src/contracts/mock/MockCircleMessageTransmitter.sol/contract.MockCircleMessageTransmitter.md +58 -0
  177. package/docs/src/contracts/mock/MockCircleTokenMessenger.sol/contract.MockCircleTokenMessenger.md +44 -0
  178. package/docs/src/contracts/mock/MockERC5164.sol/contract.MockMessageDispatcher.md +15 -0
  179. package/docs/src/contracts/mock/MockERC5164.sol/contract.MockMessageExecutor.md +11 -0
  180. package/docs/src/contracts/mock/MockHyperlaneEnvironment.sol/contract.MockHyperlaneEnvironment.md +69 -0
  181. package/docs/src/contracts/mock/MockMailbox.sol/contract.MockMailbox.md +137 -0
  182. package/docs/src/contracts/mock/MockPortalBridge.sol/contract.MockPortalBridge.md +82 -0
  183. package/docs/src/contracts/mock/MockToken.sol/contract.MockToken.md +22 -0
  184. package/docs/src/contracts/mock/README.md +11 -0
  185. package/docs/src/contracts/test/LightTestRecipient.sol/contract.LightTestRecipient.md +15 -0
  186. package/docs/src/contracts/test/README.md +20 -0
  187. package/docs/src/contracts/test/TestGasRouter.sol/contract.TestGasRouter.md +27 -0
  188. package/docs/src/contracts/test/TestHyperlaneConnectionClient.sol/contract.TestHyperlaneConnectionClient.md +29 -0
  189. package/docs/src/contracts/test/TestInterchainGasPaymaster.sol/contract.TestInterchainGasPaymaster.md +30 -0
  190. package/docs/src/contracts/test/TestLegacyMultisigIsm.sol/contract.TestLegacyMultisigIsm.md +15 -0
  191. package/docs/src/contracts/test/TestLiquidityLayerMessageRecipient.sol/contract.TestLiquidityLayerMessageRecipient.md +23 -0
  192. package/docs/src/contracts/test/TestMailbox.sol/contract.TestMailbox.md +29 -0
  193. package/docs/src/contracts/test/TestMerkle.sol/contract.TestMerkle.md +50 -0
  194. package/docs/src/contracts/test/TestMessage.sol/contract.TestMessage.md +68 -0
  195. package/docs/src/contracts/test/TestMultisigIsm.sol/contract.TestMultisigIsm.md +51 -0
  196. package/docs/src/contracts/test/TestQuery.sol/contract.TestQuery.md +45 -0
  197. package/docs/src/contracts/test/TestQuerySender.sol/contract.TestQuerySender.md +128 -0
  198. package/docs/src/contracts/test/TestRecipient.sol/contract.TestRecipient.md +78 -0
  199. package/docs/src/contracts/test/TestRouter.sol/contract.TestRouter.md +63 -0
  200. package/docs/src/contracts/test/TestSendReceiver.sol/contract.TestSendReceiver.md +49 -0
  201. package/docs/src/contracts/test/TestTokenRecipient.sol/contract.TestTokenRecipient.md +80 -0
  202. package/docs/src/contracts/test/bad-recipient/BadRecipient1.sol/contract.BadRecipient1.md +15 -0
  203. package/docs/src/contracts/test/bad-recipient/BadRecipient2.sol/contract.BadRecipient2.md +12 -0
  204. package/docs/src/contracts/test/bad-recipient/BadRecipient3.sol/contract.BadRecipient3.md +15 -0
  205. package/docs/src/contracts/test/bad-recipient/BadRecipient5.sol/contract.BadRecipient5.md +15 -0
  206. package/docs/src/contracts/test/bad-recipient/BadRecipient6.sol/contract.BadRecipient6.md +15 -0
  207. package/docs/src/contracts/test/bad-recipient/README.md +8 -0
  208. package/docs/src/contracts/upgrade/README.md +4 -0
  209. package/docs/src/contracts/upgrade/Versioned.sol/contract.Versioned.md +14 -0
  210. package/package.json +3 -3
@@ -12,7 +12,7 @@ export declare class TestRouter__factory extends ContractFactory {
12
12
  }): TransactionRequest;
13
13
  attach(address: string): TestRouter;
14
14
  connect(signer: Signer): TestRouter__factory;
15
- static readonly bytecode = "0x608060405234801561001057600080fd5b506119ae806100206000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100c0578063de523cf311610074578063f1bd6f0a11610059578063f1bd6f0a146103af578063f2fde38b146103cf578063f3c61d6b146103ef57600080fd5b8063de523cf314610362578063e9198bf91461038f57600080fd5b80638da5cb5b116100a55780638da5cb5b146102ea578063b49c53a714610315578063d5438eae1461033557600080fd5b8063715018a6146102b55780637249609f146102ca57600080fd5b806339bb4ad911610117578063485cc955116100fc578063485cc95514610262578063563e81e51461028257806356d5d4751461029557600080fd5b806339bb4ad9146101ee578063440df4f41461024057600080fd5b80630e72cc0614610149578063133b79a91461016b5780632e6a9e4b1461019e5780632ead72f6146101ce575b600080fd5b34801561015557600080fd5b50610169610164366004611404565b61040f565b005b34801561017757600080fd5b5061018b610186366004611433565b610423565b6040519081526020015b60405180910390f35b3480156101aa57600080fd5b506101be6101b936600461144e565b610434565b6040519015158152602001610195565b3480156101da57600080fd5b5061018b6101e9366004611433565b610447565b3480156101fa57600080fd5b5060665461021b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610195565b34801561024c57600080fd5b50610255610483565b6040516101959190611478565b34801561026e57600080fd5b5061016961027d3660046114c2565b61053e565b6101696102903660046115cf565b610702565b3480156102a157600080fd5b506101696102b0366004611641565b610717565b3480156102c157600080fd5b506101696107fb565b3480156102d657600080fd5b506101696102e53660046116c8565b61080f565b3480156102f657600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff1661021b565b34801561032157600080fd5b5061016961033036600461144e565b610819565b34801561034157600080fd5b5060655461021b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561036e57600080fd5b5060675461021b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561039b57600080fd5b506101696103aa366004611762565b61082f565b3480156103bb57600080fd5b506101696103ca366004611404565b610906565b3480156103db57600080fd5b506101696103ea366004611404565b610917565b3480156103fb57600080fd5b5061016961040a366004611404565b6109cb565b6104176109dc565b61042081610a5d565b50565b600061042e82610b6b565b92915050565b60006104408383610bd6565b9392505050565b600061045d609863ffffffff80851690610bea16565b156104765761042e609863ffffffff80851690610bf616565b506000919050565b919050565b609880546060919060008167ffffffffffffffff8111156104a6576104a66114f5565b6040519080825280602002602001820160405280156104cf578160200160208202803683370190505b50905060005b82811015610536578381815481106104ef576104ef6117ce565b906000526020600020015460001c82828151811061050f5761050f6117ce565b63ffffffff909216602092830291909101909101528061052e8161182c565b9150506104d5565b509392505050565b600054610100900460ff161580801561055e5750600054600160ff909116105b806105785750303b158015610578575060005460ff166001145b610609576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561066757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6106718383610c02565b6040517fb5673f91a88e1d934867629094eedba1c72a382fbe5f32a41bacb5098900fdf990600090a180156106fd57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61070f8585858585610cab565b505050505050565b60655473ffffffffffffffffffffffffffffffffffffffff163314610798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f216d61696c626f780000000000000000000000000000000000000000000000006044820152606401610600565b83836107a48282610bd6565b60405180608001604052806043815260200161193660439139906107f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060091906118c8565b5061070f565b6108036109dc565b61080d6000610d69565b565b6106fd8282610de0565b6108216109dc565b61082b8282610e92565b5050565b6108376109dc565b8281146108a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f216c656e677468000000000000000000000000000000000000000000000000006044820152606401610600565b8260005b8181101561070f576108f48686838181106108c1576108c16117ce565b90506020020160208101906108d69190611433565b8585848181106108e8576108e86117ce565b90506020020135610e92565b6108ff6001826118db565b90506108a4565b61090e6109dc565b61042081610eec565b61091f6109dc565b73ffffffffffffffffffffffffffffffffffffffff81166109c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610600565b61042081610d69565b6109d36109dc565b61042081610fdb565b60335473ffffffffffffffffffffffffffffffffffffffff16331461080d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610600565b73ffffffffffffffffffffffffffffffffffffffff81161580610a96575073ffffffffffffffffffffffffffffffffffffffff81163b15155b610afc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e747261637400000000000000000000000000000000000000000000006044820152606401610600565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ffec811ed4e60aebdaf7a79cad8a97196bf56e35362f039705598226d30c9d24890600090a250565b6000610b7682610447565b90506000801b8114156040518060800160405280604381526020016119366043913990610bd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060091906118c8565b50919050565b600081610be284610447565b149392505050565b600061044083836110ca565b600061044083836110d6565b600054610100900460ff16610c99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610600565b610ca281610eec565b61082b82611160565b6000610cb78686610de0565b6066546040517f11bf2c180000000000000000000000000000000000000000000000000000000081526004810183905263ffffffff891660248201526044810187905273ffffffffffffffffffffffffffffffffffffffff85811660648301529293509116906311bf2c189085906084016000604051808303818588803b158015610d4157600080fd5b505af1158015610d55573d6000803e3d6000fd5b505050505095945050505050565b50505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080610dec84610b6b565b6065546040517ffa31de0100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063fa31de0190610e47908790859088906004016118ee565b6020604051808303816000875af1158015610e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8a919061191c565b949350505050565b610ea8609863ffffffff80851690849061120816565b8163ffffffff167f97fd51fef1f80c854cbd0150c248e8b2ac4ecdc97cc05e742b5f61c9f4dc645882604051610ee091815260200190565b60405180910390a25050565b8073ffffffffffffffffffffffffffffffffffffffff81163b610f6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e747261637400000000000000000000000000000000000000000000006044820152606401610600565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fb87f5a0bface22cde699143559fb99f990ae54eea236995fc54178af91af859f90600090a25050565b8073ffffffffffffffffffffffffffffffffffffffff81163b61105a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e747261637400000000000000000000000000000000000000000000006044820152606401610600565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517f7a61e573722ff8b205c8962b59d37e7d30573f368965597a844a94872204ebd790600090a25050565b60006104408383611213565b6000818152600283016020526040812054801515806110fa57506110fa84846110ca565b610440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006044820152606401610600565b600054610100900460ff166111f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610600565b61120081610fdb565b61042061122b565b610d638383836112ca565b60008181526001830160205260408120541515610440565b600054610100900460ff166112c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610600565b61080d6112e7565b60008281526002840160205260408120829055610e8a8484611387565b600054610100900460ff1661137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610600565b61080d33610d69565b6000818152600183016020526040812054610440908490849084906113d85750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561042e565b50600061042e565b803573ffffffffffffffffffffffffffffffffffffffff8116811461047e57600080fd5b60006020828403121561141657600080fd5b610440826113e0565b803563ffffffff8116811461047e57600080fd5b60006020828403121561144557600080fd5b6104408261141f565b6000806040838503121561146157600080fd5b61146a8361141f565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156114b657835163ffffffff1683529284019291840191600101611494565b50909695505050505050565b600080604083850312156114d557600080fd5b6114de836113e0565b91506114ec602084016113e0565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261153557600080fd5b813567ffffffffffffffff80821115611550576115506114f5565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611596576115966114f5565b816040528381528660208588010111156115af57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156115e757600080fd5b6115f08661141f565b9450602086013567ffffffffffffffff81111561160c57600080fd5b61161888828901611524565b9450506040860135925060608601359150611635608087016113e0565b90509295509295909350565b6000806000806060858703121561165757600080fd5b6116608561141f565b935060208501359250604085013567ffffffffffffffff8082111561168457600080fd5b818701915087601f83011261169857600080fd5b8135818111156116a757600080fd5b8860208285010111156116b957600080fd5b95989497505060200194505050565b600080604083850312156116db57600080fd5b6116e48361141f565b9150602083013567ffffffffffffffff81111561170057600080fd5b61170c85828601611524565b9150509250929050565b60008083601f84011261172857600080fd5b50813567ffffffffffffffff81111561174057600080fd5b6020830191508360208260051b850101111561175b57600080fd5b9250929050565b6000806000806040858703121561177857600080fd5b843567ffffffffffffffff8082111561179057600080fd5b61179c88838901611716565b909650945060208701359150808211156117b557600080fd5b506117c287828801611716565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361185d5761185d6117fd565b5060010190565b6000815180845260005b8181101561188a5760208185018101518683018201520161186e565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104406020830184611864565b8082018082111561042e5761042e6117fd565b63ffffffff841681528260208201526060604082015260006119136060830184611864565b95945050505050565b60006020828403121561192e57600080fd5b505191905056fe4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e2e2044696420796f7520737065636966792074686520726967687420646f6d61696e2049443fa264697066735822122003b1b08209a522b5a4a68cae1f85d190bda648dfd74942faf275ea54d642057164736f6c63430008110033";
15
+ static readonly bytecode = "0x608060405234801561001057600080fd5b506119ae806100206000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100c0578063de523cf311610074578063f1bd6f0a11610059578063f1bd6f0a146103af578063f2fde38b146103cf578063f3c61d6b146103ef57600080fd5b8063de523cf314610362578063e9198bf91461038f57600080fd5b80638da5cb5b116100a55780638da5cb5b146102ea578063b49c53a714610315578063d5438eae1461033557600080fd5b8063715018a6146102b55780637249609f146102ca57600080fd5b806339bb4ad911610117578063485cc955116100fc578063485cc95514610262578063563e81e51461028257806356d5d4751461029557600080fd5b806339bb4ad9146101ee578063440df4f41461024057600080fd5b80630e72cc0614610149578063133b79a91461016b5780632e6a9e4b1461019e5780632ead72f6146101ce575b600080fd5b34801561015557600080fd5b50610169610164366004611404565b61040f565b005b34801561017757600080fd5b5061018b610186366004611433565b610423565b6040519081526020015b60405180910390f35b3480156101aa57600080fd5b506101be6101b936600461144e565b610434565b6040519015158152602001610195565b3480156101da57600080fd5b5061018b6101e9366004611433565b610447565b3480156101fa57600080fd5b5060665461021b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610195565b34801561024c57600080fd5b50610255610483565b6040516101959190611478565b34801561026e57600080fd5b5061016961027d3660046114c2565b61053e565b6101696102903660046115cf565b610702565b3480156102a157600080fd5b506101696102b0366004611641565b610717565b3480156102c157600080fd5b506101696107fb565b3480156102d657600080fd5b506101696102e53660046116c8565b61080f565b3480156102f657600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff1661021b565b34801561032157600080fd5b5061016961033036600461144e565b610819565b34801561034157600080fd5b5060655461021b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561036e57600080fd5b5060675461021b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561039b57600080fd5b506101696103aa366004611762565b61082f565b3480156103bb57600080fd5b506101696103ca366004611404565b610906565b3480156103db57600080fd5b506101696103ea366004611404565b610917565b3480156103fb57600080fd5b5061016961040a366004611404565b6109cb565b6104176109dc565b61042081610a5d565b50565b600061042e82610b6b565b92915050565b60006104408383610bd6565b9392505050565b600061045d609863ffffffff80851690610bea16565b156104765761042e609863ffffffff80851690610bf616565b506000919050565b919050565b609880546060919060008167ffffffffffffffff8111156104a6576104a66114f5565b6040519080825280602002602001820160405280156104cf578160200160208202803683370190505b50905060005b82811015610536578381815481106104ef576104ef6117ce565b906000526020600020015460001c82828151811061050f5761050f6117ce565b63ffffffff909216602092830291909101909101528061052e8161182c565b9150506104d5565b509392505050565b600054610100900460ff161580801561055e5750600054600160ff909116105b806105785750303b158015610578575060005460ff166001145b610609576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561066757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6106718383610c02565b6040517fb5673f91a88e1d934867629094eedba1c72a382fbe5f32a41bacb5098900fdf990600090a180156106fd57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61070f8585858585610cab565b505050505050565b60655473ffffffffffffffffffffffffffffffffffffffff163314610798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f216d61696c626f780000000000000000000000000000000000000000000000006044820152606401610600565b83836107a48282610bd6565b60405180608001604052806043815260200161193660439139906107f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060091906118c8565b5061070f565b6108036109dc565b61080d6000610d69565b565b6106fd8282610de0565b6108216109dc565b61082b8282610e92565b5050565b6108376109dc565b8281146108a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f216c656e677468000000000000000000000000000000000000000000000000006044820152606401610600565b8260005b8181101561070f576108f48686838181106108c1576108c16117ce565b90506020020160208101906108d69190611433565b8585848181106108e8576108e86117ce565b90506020020135610e92565b6108ff6001826118db565b90506108a4565b61090e6109dc565b61042081610eec565b61091f6109dc565b73ffffffffffffffffffffffffffffffffffffffff81166109c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610600565b61042081610d69565b6109d36109dc565b61042081610fdb565b60335473ffffffffffffffffffffffffffffffffffffffff16331461080d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610600565b73ffffffffffffffffffffffffffffffffffffffff81161580610a96575073ffffffffffffffffffffffffffffffffffffffff81163b15155b610afc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e747261637400000000000000000000000000000000000000000000006044820152606401610600565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ffec811ed4e60aebdaf7a79cad8a97196bf56e35362f039705598226d30c9d24890600090a250565b6000610b7682610447565b90506000801b8114156040518060800160405280604381526020016119366043913990610bd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060091906118c8565b50919050565b600081610be284610447565b149392505050565b600061044083836110ca565b600061044083836110d6565b600054610100900460ff16610c99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610600565b610ca281610eec565b61082b82611160565b6000610cb78686610de0565b6066546040517f11bf2c180000000000000000000000000000000000000000000000000000000081526004810183905263ffffffff891660248201526044810187905273ffffffffffffffffffffffffffffffffffffffff85811660648301529293509116906311bf2c189085906084016000604051808303818588803b158015610d4157600080fd5b505af1158015610d55573d6000803e3d6000fd5b505050505095945050505050565b50505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080610dec84610b6b565b6065546040517ffa31de0100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063fa31de0190610e47908790859088906004016118ee565b6020604051808303816000875af1158015610e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8a919061191c565b949350505050565b610ea8609863ffffffff80851690849061120816565b8163ffffffff167f97fd51fef1f80c854cbd0150c248e8b2ac4ecdc97cc05e742b5f61c9f4dc645882604051610ee091815260200190565b60405180910390a25050565b8073ffffffffffffffffffffffffffffffffffffffff81163b610f6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e747261637400000000000000000000000000000000000000000000006044820152606401610600565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fb87f5a0bface22cde699143559fb99f990ae54eea236995fc54178af91af859f90600090a25050565b8073ffffffffffffffffffffffffffffffffffffffff81163b61105a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e747261637400000000000000000000000000000000000000000000006044820152606401610600565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517f7a61e573722ff8b205c8962b59d37e7d30573f368965597a844a94872204ebd790600090a25050565b60006104408383611213565b6000818152600283016020526040812054801515806110fa57506110fa84846110ca565b610440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006044820152606401610600565b600054610100900460ff166111f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610600565b61120081610fdb565b61042061122b565b610d638383836112ca565b60008181526001830160205260408120541515610440565b600054610100900460ff166112c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610600565b61080d6112e7565b60008281526002840160205260408120829055610e8a8484611387565b600054610100900460ff1661137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610600565b61080d33610d69565b6000818152600183016020526040812054610440908490849084906113d85750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561042e565b50600061042e565b803573ffffffffffffffffffffffffffffffffffffffff8116811461047e57600080fd5b60006020828403121561141657600080fd5b610440826113e0565b803563ffffffff8116811461047e57600080fd5b60006020828403121561144557600080fd5b6104408261141f565b6000806040838503121561146157600080fd5b61146a8361141f565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156114b657835163ffffffff1683529284019291840191600101611494565b50909695505050505050565b600080604083850312156114d557600080fd5b6114de836113e0565b91506114ec602084016113e0565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261153557600080fd5b813567ffffffffffffffff80821115611550576115506114f5565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611596576115966114f5565b816040528381528660208588010111156115af57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156115e757600080fd5b6115f08661141f565b9450602086013567ffffffffffffffff81111561160c57600080fd5b61161888828901611524565b9450506040860135925060608601359150611635608087016113e0565b90509295509295909350565b6000806000806060858703121561165757600080fd5b6116608561141f565b935060208501359250604085013567ffffffffffffffff8082111561168457600080fd5b818701915087601f83011261169857600080fd5b8135818111156116a757600080fd5b8860208285010111156116b957600080fd5b95989497505060200194505050565b600080604083850312156116db57600080fd5b6116e48361141f565b9150602083013567ffffffffffffffff81111561170057600080fd5b61170c85828601611524565b9150509250929050565b60008083601f84011261172857600080fd5b50813567ffffffffffffffff81111561174057600080fd5b6020830191508360208260051b850101111561175b57600080fd5b9250929050565b6000806000806040858703121561177857600080fd5b843567ffffffffffffffff8082111561179057600080fd5b61179c88838901611716565b909650945060208701359150808211156117b557600080fd5b506117c287828801611716565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361185d5761185d6117fd565b5060010190565b6000815180845260005b8181101561188a5760208185018101518683018201520161186e565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104406020830184611864565b8082018082111561042e5761042e6117fd565b63ffffffff841681528260208201526060604082015260006119136060830184611864565b95945050505050565b60006020828403121561192e57600080fd5b505191905056fe4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e2e2044696420796f7520737065636966792074686520726967687420646f6d61696e2049443fa2646970667358221220007f2e75f7dc70e77a0e720bd90ef8775c37aaa6931c69e12ae225a4d8dd9c8c64736f6c63430008110033";
16
16
  static readonly abi: ({
17
17
  anonymous: boolean;
18
18
  inputs: {
@@ -415,7 +415,7 @@ const _abi = [
415
415
  type: "function",
416
416
  },
417
417
  ];
418
- const _bytecode = "0x608060405234801561001057600080fd5b506119ae806100206000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100c0578063de523cf311610074578063f1bd6f0a11610059578063f1bd6f0a146103af578063f2fde38b146103cf578063f3c61d6b146103ef57600080fd5b8063de523cf314610362578063e9198bf91461038f57600080fd5b80638da5cb5b116100a55780638da5cb5b146102ea578063b49c53a714610315578063d5438eae1461033557600080fd5b8063715018a6146102b55780637249609f146102ca57600080fd5b806339bb4ad911610117578063485cc955116100fc578063485cc95514610262578063563e81e51461028257806356d5d4751461029557600080fd5b806339bb4ad9146101ee578063440df4f41461024057600080fd5b80630e72cc0614610149578063133b79a91461016b5780632e6a9e4b1461019e5780632ead72f6146101ce575b600080fd5b34801561015557600080fd5b50610169610164366004611404565b61040f565b005b34801561017757600080fd5b5061018b610186366004611433565b610423565b6040519081526020015b60405180910390f35b3480156101aa57600080fd5b506101be6101b936600461144e565b610434565b6040519015158152602001610195565b3480156101da57600080fd5b5061018b6101e9366004611433565b610447565b3480156101fa57600080fd5b5060665461021b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610195565b34801561024c57600080fd5b50610255610483565b6040516101959190611478565b34801561026e57600080fd5b5061016961027d3660046114c2565b61053e565b6101696102903660046115cf565b610702565b3480156102a157600080fd5b506101696102b0366004611641565b610717565b3480156102c157600080fd5b506101696107fb565b3480156102d657600080fd5b506101696102e53660046116c8565b61080f565b3480156102f657600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff1661021b565b34801561032157600080fd5b5061016961033036600461144e565b610819565b34801561034157600080fd5b5060655461021b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561036e57600080fd5b5060675461021b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561039b57600080fd5b506101696103aa366004611762565b61082f565b3480156103bb57600080fd5b506101696103ca366004611404565b610906565b3480156103db57600080fd5b506101696103ea366004611404565b610917565b3480156103fb57600080fd5b5061016961040a366004611404565b6109cb565b6104176109dc565b61042081610a5d565b50565b600061042e82610b6b565b92915050565b60006104408383610bd6565b9392505050565b600061045d609863ffffffff80851690610bea16565b156104765761042e609863ffffffff80851690610bf616565b506000919050565b919050565b609880546060919060008167ffffffffffffffff8111156104a6576104a66114f5565b6040519080825280602002602001820160405280156104cf578160200160208202803683370190505b50905060005b82811015610536578381815481106104ef576104ef6117ce565b906000526020600020015460001c82828151811061050f5761050f6117ce565b63ffffffff909216602092830291909101909101528061052e8161182c565b9150506104d5565b509392505050565b600054610100900460ff161580801561055e5750600054600160ff909116105b806105785750303b158015610578575060005460ff166001145b610609576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561066757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6106718383610c02565b6040517fb5673f91a88e1d934867629094eedba1c72a382fbe5f32a41bacb5098900fdf990600090a180156106fd57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61070f8585858585610cab565b505050505050565b60655473ffffffffffffffffffffffffffffffffffffffff163314610798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f216d61696c626f780000000000000000000000000000000000000000000000006044820152606401610600565b83836107a48282610bd6565b60405180608001604052806043815260200161193660439139906107f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060091906118c8565b5061070f565b6108036109dc565b61080d6000610d69565b565b6106fd8282610de0565b6108216109dc565b61082b8282610e92565b5050565b6108376109dc565b8281146108a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f216c656e677468000000000000000000000000000000000000000000000000006044820152606401610600565b8260005b8181101561070f576108f48686838181106108c1576108c16117ce565b90506020020160208101906108d69190611433565b8585848181106108e8576108e86117ce565b90506020020135610e92565b6108ff6001826118db565b90506108a4565b61090e6109dc565b61042081610eec565b61091f6109dc565b73ffffffffffffffffffffffffffffffffffffffff81166109c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610600565b61042081610d69565b6109d36109dc565b61042081610fdb565b60335473ffffffffffffffffffffffffffffffffffffffff16331461080d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610600565b73ffffffffffffffffffffffffffffffffffffffff81161580610a96575073ffffffffffffffffffffffffffffffffffffffff81163b15155b610afc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e747261637400000000000000000000000000000000000000000000006044820152606401610600565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ffec811ed4e60aebdaf7a79cad8a97196bf56e35362f039705598226d30c9d24890600090a250565b6000610b7682610447565b90506000801b8114156040518060800160405280604381526020016119366043913990610bd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060091906118c8565b50919050565b600081610be284610447565b149392505050565b600061044083836110ca565b600061044083836110d6565b600054610100900460ff16610c99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610600565b610ca281610eec565b61082b82611160565b6000610cb78686610de0565b6066546040517f11bf2c180000000000000000000000000000000000000000000000000000000081526004810183905263ffffffff891660248201526044810187905273ffffffffffffffffffffffffffffffffffffffff85811660648301529293509116906311bf2c189085906084016000604051808303818588803b158015610d4157600080fd5b505af1158015610d55573d6000803e3d6000fd5b505050505095945050505050565b50505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080610dec84610b6b565b6065546040517ffa31de0100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063fa31de0190610e47908790859088906004016118ee565b6020604051808303816000875af1158015610e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8a919061191c565b949350505050565b610ea8609863ffffffff80851690849061120816565b8163ffffffff167f97fd51fef1f80c854cbd0150c248e8b2ac4ecdc97cc05e742b5f61c9f4dc645882604051610ee091815260200190565b60405180910390a25050565b8073ffffffffffffffffffffffffffffffffffffffff81163b610f6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e747261637400000000000000000000000000000000000000000000006044820152606401610600565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fb87f5a0bface22cde699143559fb99f990ae54eea236995fc54178af91af859f90600090a25050565b8073ffffffffffffffffffffffffffffffffffffffff81163b61105a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e747261637400000000000000000000000000000000000000000000006044820152606401610600565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517f7a61e573722ff8b205c8962b59d37e7d30573f368965597a844a94872204ebd790600090a25050565b60006104408383611213565b6000818152600283016020526040812054801515806110fa57506110fa84846110ca565b610440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006044820152606401610600565b600054610100900460ff166111f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610600565b61120081610fdb565b61042061122b565b610d638383836112ca565b60008181526001830160205260408120541515610440565b600054610100900460ff166112c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610600565b61080d6112e7565b60008281526002840160205260408120829055610e8a8484611387565b600054610100900460ff1661137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610600565b61080d33610d69565b6000818152600183016020526040812054610440908490849084906113d85750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561042e565b50600061042e565b803573ffffffffffffffffffffffffffffffffffffffff8116811461047e57600080fd5b60006020828403121561141657600080fd5b610440826113e0565b803563ffffffff8116811461047e57600080fd5b60006020828403121561144557600080fd5b6104408261141f565b6000806040838503121561146157600080fd5b61146a8361141f565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156114b657835163ffffffff1683529284019291840191600101611494565b50909695505050505050565b600080604083850312156114d557600080fd5b6114de836113e0565b91506114ec602084016113e0565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261153557600080fd5b813567ffffffffffffffff80821115611550576115506114f5565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611596576115966114f5565b816040528381528660208588010111156115af57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156115e757600080fd5b6115f08661141f565b9450602086013567ffffffffffffffff81111561160c57600080fd5b61161888828901611524565b9450506040860135925060608601359150611635608087016113e0565b90509295509295909350565b6000806000806060858703121561165757600080fd5b6116608561141f565b935060208501359250604085013567ffffffffffffffff8082111561168457600080fd5b818701915087601f83011261169857600080fd5b8135818111156116a757600080fd5b8860208285010111156116b957600080fd5b95989497505060200194505050565b600080604083850312156116db57600080fd5b6116e48361141f565b9150602083013567ffffffffffffffff81111561170057600080fd5b61170c85828601611524565b9150509250929050565b60008083601f84011261172857600080fd5b50813567ffffffffffffffff81111561174057600080fd5b6020830191508360208260051b850101111561175b57600080fd5b9250929050565b6000806000806040858703121561177857600080fd5b843567ffffffffffffffff8082111561179057600080fd5b61179c88838901611716565b909650945060208701359150808211156117b557600080fd5b506117c287828801611716565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361185d5761185d6117fd565b5060010190565b6000815180845260005b8181101561188a5760208185018101518683018201520161186e565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104406020830184611864565b8082018082111561042e5761042e6117fd565b63ffffffff841681528260208201526060604082015260006119136060830184611864565b95945050505050565b60006020828403121561192e57600080fd5b505191905056fe4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e2e2044696420796f7520737065636966792074686520726967687420646f6d61696e2049443fa264697066735822122003b1b08209a522b5a4a68cae1f85d190bda648dfd74942faf275ea54d642057164736f6c63430008110033";
418
+ const _bytecode = "0x608060405234801561001057600080fd5b506119ae806100206000396000f3fe6080604052600436106101445760003560e01c8063715018a6116100c0578063de523cf311610074578063f1bd6f0a11610059578063f1bd6f0a146103af578063f2fde38b146103cf578063f3c61d6b146103ef57600080fd5b8063de523cf314610362578063e9198bf91461038f57600080fd5b80638da5cb5b116100a55780638da5cb5b146102ea578063b49c53a714610315578063d5438eae1461033557600080fd5b8063715018a6146102b55780637249609f146102ca57600080fd5b806339bb4ad911610117578063485cc955116100fc578063485cc95514610262578063563e81e51461028257806356d5d4751461029557600080fd5b806339bb4ad9146101ee578063440df4f41461024057600080fd5b80630e72cc0614610149578063133b79a91461016b5780632e6a9e4b1461019e5780632ead72f6146101ce575b600080fd5b34801561015557600080fd5b50610169610164366004611404565b61040f565b005b34801561017757600080fd5b5061018b610186366004611433565b610423565b6040519081526020015b60405180910390f35b3480156101aa57600080fd5b506101be6101b936600461144e565b610434565b6040519015158152602001610195565b3480156101da57600080fd5b5061018b6101e9366004611433565b610447565b3480156101fa57600080fd5b5060665461021b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610195565b34801561024c57600080fd5b50610255610483565b6040516101959190611478565b34801561026e57600080fd5b5061016961027d3660046114c2565b61053e565b6101696102903660046115cf565b610702565b3480156102a157600080fd5b506101696102b0366004611641565b610717565b3480156102c157600080fd5b506101696107fb565b3480156102d657600080fd5b506101696102e53660046116c8565b61080f565b3480156102f657600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff1661021b565b34801561032157600080fd5b5061016961033036600461144e565b610819565b34801561034157600080fd5b5060655461021b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561036e57600080fd5b5060675461021b9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561039b57600080fd5b506101696103aa366004611762565b61082f565b3480156103bb57600080fd5b506101696103ca366004611404565b610906565b3480156103db57600080fd5b506101696103ea366004611404565b610917565b3480156103fb57600080fd5b5061016961040a366004611404565b6109cb565b6104176109dc565b61042081610a5d565b50565b600061042e82610b6b565b92915050565b60006104408383610bd6565b9392505050565b600061045d609863ffffffff80851690610bea16565b156104765761042e609863ffffffff80851690610bf616565b506000919050565b919050565b609880546060919060008167ffffffffffffffff8111156104a6576104a66114f5565b6040519080825280602002602001820160405280156104cf578160200160208202803683370190505b50905060005b82811015610536578381815481106104ef576104ef6117ce565b906000526020600020015460001c82828151811061050f5761050f6117ce565b63ffffffff909216602092830291909101909101528061052e8161182c565b9150506104d5565b509392505050565b600054610100900460ff161580801561055e5750600054600160ff909116105b806105785750303b158015610578575060005460ff166001145b610609576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561066757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6106718383610c02565b6040517fb5673f91a88e1d934867629094eedba1c72a382fbe5f32a41bacb5098900fdf990600090a180156106fd57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61070f8585858585610cab565b505050505050565b60655473ffffffffffffffffffffffffffffffffffffffff163314610798576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f216d61696c626f780000000000000000000000000000000000000000000000006044820152606401610600565b83836107a48282610bd6565b60405180608001604052806043815260200161193660439139906107f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060091906118c8565b5061070f565b6108036109dc565b61080d6000610d69565b565b6106fd8282610de0565b6108216109dc565b61082b8282610e92565b5050565b6108376109dc565b8281146108a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f216c656e677468000000000000000000000000000000000000000000000000006044820152606401610600565b8260005b8181101561070f576108f48686838181106108c1576108c16117ce565b90506020020160208101906108d69190611433565b8585848181106108e8576108e86117ce565b90506020020135610e92565b6108ff6001826118db565b90506108a4565b61090e6109dc565b61042081610eec565b61091f6109dc565b73ffffffffffffffffffffffffffffffffffffffff81166109c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610600565b61042081610d69565b6109d36109dc565b61042081610fdb565b60335473ffffffffffffffffffffffffffffffffffffffff16331461080d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610600565b73ffffffffffffffffffffffffffffffffffffffff81161580610a96575073ffffffffffffffffffffffffffffffffffffffff81163b15155b610afc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e747261637400000000000000000000000000000000000000000000006044820152606401610600565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ffec811ed4e60aebdaf7a79cad8a97196bf56e35362f039705598226d30c9d24890600090a250565b6000610b7682610447565b90506000801b8114156040518060800160405280604381526020016119366043913990610bd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060091906118c8565b50919050565b600081610be284610447565b149392505050565b600061044083836110ca565b600061044083836110d6565b600054610100900460ff16610c99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610600565b610ca281610eec565b61082b82611160565b6000610cb78686610de0565b6066546040517f11bf2c180000000000000000000000000000000000000000000000000000000081526004810183905263ffffffff891660248201526044810187905273ffffffffffffffffffffffffffffffffffffffff85811660648301529293509116906311bf2c189085906084016000604051808303818588803b158015610d4157600080fd5b505af1158015610d55573d6000803e3d6000fd5b505050505095945050505050565b50505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080610dec84610b6b565b6065546040517ffa31de0100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063fa31de0190610e47908790859088906004016118ee565b6020604051808303816000875af1158015610e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8a919061191c565b949350505050565b610ea8609863ffffffff80851690849061120816565b8163ffffffff167f97fd51fef1f80c854cbd0150c248e8b2ac4ecdc97cc05e742b5f61c9f4dc645882604051610ee091815260200190565b60405180910390a25050565b8073ffffffffffffffffffffffffffffffffffffffff81163b610f6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e747261637400000000000000000000000000000000000000000000006044820152606401610600565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fb87f5a0bface22cde699143559fb99f990ae54eea236995fc54178af91af859f90600090a25050565b8073ffffffffffffffffffffffffffffffffffffffff81163b61105a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e747261637400000000000000000000000000000000000000000000006044820152606401610600565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517f7a61e573722ff8b205c8962b59d37e7d30573f368965597a844a94872204ebd790600090a25050565b60006104408383611213565b6000818152600283016020526040812054801515806110fa57506110fa84846110ca565b610440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006044820152606401610600565b600054610100900460ff166111f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610600565b61120081610fdb565b61042061122b565b610d638383836112ca565b60008181526001830160205260408120541515610440565b600054610100900460ff166112c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610600565b61080d6112e7565b60008281526002840160205260408120829055610e8a8484611387565b600054610100900460ff1661137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610600565b61080d33610d69565b6000818152600183016020526040812054610440908490849084906113d85750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561042e565b50600061042e565b803573ffffffffffffffffffffffffffffffffffffffff8116811461047e57600080fd5b60006020828403121561141657600080fd5b610440826113e0565b803563ffffffff8116811461047e57600080fd5b60006020828403121561144557600080fd5b6104408261141f565b6000806040838503121561146157600080fd5b61146a8361141f565b946020939093013593505050565b6020808252825182820181905260009190848201906040850190845b818110156114b657835163ffffffff1683529284019291840191600101611494565b50909695505050505050565b600080604083850312156114d557600080fd5b6114de836113e0565b91506114ec602084016113e0565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261153557600080fd5b813567ffffffffffffffff80821115611550576115506114f5565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715611596576115966114f5565b816040528381528660208588010111156115af57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a086880312156115e757600080fd5b6115f08661141f565b9450602086013567ffffffffffffffff81111561160c57600080fd5b61161888828901611524565b9450506040860135925060608601359150611635608087016113e0565b90509295509295909350565b6000806000806060858703121561165757600080fd5b6116608561141f565b935060208501359250604085013567ffffffffffffffff8082111561168457600080fd5b818701915087601f83011261169857600080fd5b8135818111156116a757600080fd5b8860208285010111156116b957600080fd5b95989497505060200194505050565b600080604083850312156116db57600080fd5b6116e48361141f565b9150602083013567ffffffffffffffff81111561170057600080fd5b61170c85828601611524565b9150509250929050565b60008083601f84011261172857600080fd5b50813567ffffffffffffffff81111561174057600080fd5b6020830191508360208260051b850101111561175b57600080fd5b9250929050565b6000806000806040858703121561177857600080fd5b843567ffffffffffffffff8082111561179057600080fd5b61179c88838901611716565b909650945060208701359150808211156117b557600080fd5b506117c287828801611716565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361185d5761185d6117fd565b5060010190565b6000815180845260005b8181101561188a5760208185018101518683018201520161186e565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b6020815260006104406020830184611864565b8082018082111561042e5761042e6117fd565b63ffffffff841681528260208201526060604082015260006119136060830184611864565b95945050505050565b60006020828403121561192e57600080fd5b505191905056fe4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e2e2044696420796f7520737065636966792074686520726967687420646f6d61696e2049443fa2646970667358221220007f2e75f7dc70e77a0e720bd90ef8775c37aaa6931c69e12ae225a4d8dd9c8c64736f6c63430008110033";
419
419
  const isSuperArgs = (xs) => xs.length > 1;
420
420
  class TestRouter__factory extends ethers_1.ContractFactory {
421
421
  constructor(...args) {
@@ -12,7 +12,7 @@ export declare class TestSendReceiver__factory extends ContractFactory {
12
12
  }): TransactionRequest;
13
13
  attach(address: string): TestSendReceiver;
14
14
  connect(signer: Signer): TestSendReceiver__factory;
15
- static readonly bytecode = "0x608060405234801561001057600080fd5b506106ef806100206000396000f3fe6080604052600436106100345760003560e01c806312f762221461003957806356d5d47514610061578063a778af8714610083575b600080fd5b34801561004557600080fd5b5061004f61c35081565b60405190815260200160405180910390f35b34801561006d57600080fd5b5061008161007c3660046104af565b610096565b005b61008161009136600461052e565b610159565b60006100a061043a565b905060006100af6010836105d7565b159050801561011e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f626c6f636b206861736820656e647320696e2030000000000000000000000000604482015260640160405180910390fd5b6040518281527f1e8284519093f867c8c8de794693d723718c98d6ad442f387dfd50dd1e3d93ba9060200160405180910390a1505050505050565b6040517ffa31de0100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff87169063fa31de01906101b49087903090889088906004016105eb565b6020604051808303816000875af11580156101d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f7919061064c565b9050600061020361043a565b9050346102116005836105d7565b600003610393576000610225600283610665565b90506000610236600261c350610665565b6040517f11bf2c180000000000000000000000000000000000000000000000000000000081526004810187905263ffffffff8a1660248201526044810182905233606482015290915073ffffffffffffffffffffffffffffffffffffffff8a16906311bf2c189084906084016000604051808303818588803b1580156102bb57600080fd5b505af11580156102cf573d6000803e3d6000fd5b50505050508873ffffffffffffffffffffffffffffffffffffffff166311bf2c1883856102fc9190610679565b878b61030a8661c350610679565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152600481019390935263ffffffff91909116602483015260448201523360648201526084016000604051808303818588803b15801561037357600080fd5b505af1158015610387573d6000803e3d6000fd5b50505050505050610430565b6040517f11bf2c180000000000000000000000000000000000000000000000000000000081526004810184905263ffffffff8716602482015261c350604482015233606482015273ffffffffffffffffffffffffffffffffffffffff8816906311bf2c189083906084016000604051808303818588803b15801561041657600080fd5b505af115801561042a573d6000803e3d6000fd5b50505050505b5050505050505050565b6000610447600143610679565b40905090565b803563ffffffff8116811461046157600080fd5b919050565b60008083601f84011261047857600080fd5b50813567ffffffffffffffff81111561049057600080fd5b6020830191508360208285010111156104a857600080fd5b9250929050565b600080600080606085870312156104c557600080fd5b6104ce8561044d565b935060208501359250604085013567ffffffffffffffff8111156104f157600080fd5b6104fd87828801610466565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461052b57600080fd5b50565b60008060008060006080868803121561054657600080fd5b853561055181610509565b9450602086013561056181610509565b935061056f6040870161044d565b9250606086013567ffffffffffffffff81111561058b57600080fd5b61059788828901610466565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826105e6576105e66105a8565b500690565b63ffffffff8516815283602082015260606040820152816060820152818360808301376000818301608090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601019392505050565b60006020828403121561065e57600080fd5b5051919050565b600082610674576106746105a8565b500490565b818103818111156106b3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea264697066735822122089313bd2515bb39d32ce714a1014b4c87b1eeae32efb799a98259beec0e1faac64736f6c63430008110033";
15
+ static readonly bytecode = "0x608060405234801561001057600080fd5b506106ef806100206000396000f3fe6080604052600436106100345760003560e01c806312f762221461003957806356d5d47514610061578063a778af8714610083575b600080fd5b34801561004557600080fd5b5061004f61c35081565b60405190815260200160405180910390f35b34801561006d57600080fd5b5061008161007c3660046104af565b610096565b005b61008161009136600461052e565b610159565b60006100a061043a565b905060006100af6010836105d7565b159050801561011e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f626c6f636b206861736820656e647320696e2030000000000000000000000000604482015260640160405180910390fd5b6040518281527f1e8284519093f867c8c8de794693d723718c98d6ad442f387dfd50dd1e3d93ba9060200160405180910390a1505050505050565b6040517ffa31de0100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff87169063fa31de01906101b49087903090889088906004016105eb565b6020604051808303816000875af11580156101d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f7919061064c565b9050600061020361043a565b9050346102116005836105d7565b600003610393576000610225600283610665565b90506000610236600261c350610665565b6040517f11bf2c180000000000000000000000000000000000000000000000000000000081526004810187905263ffffffff8a1660248201526044810182905233606482015290915073ffffffffffffffffffffffffffffffffffffffff8a16906311bf2c189084906084016000604051808303818588803b1580156102bb57600080fd5b505af11580156102cf573d6000803e3d6000fd5b50505050508873ffffffffffffffffffffffffffffffffffffffff166311bf2c1883856102fc9190610679565b878b61030a8661c350610679565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152600481019390935263ffffffff91909116602483015260448201523360648201526084016000604051808303818588803b15801561037357600080fd5b505af1158015610387573d6000803e3d6000fd5b50505050505050610430565b6040517f11bf2c180000000000000000000000000000000000000000000000000000000081526004810184905263ffffffff8716602482015261c350604482015233606482015273ffffffffffffffffffffffffffffffffffffffff8816906311bf2c189083906084016000604051808303818588803b15801561041657600080fd5b505af115801561042a573d6000803e3d6000fd5b50505050505b5050505050505050565b6000610447600143610679565b40905090565b803563ffffffff8116811461046157600080fd5b919050565b60008083601f84011261047857600080fd5b50813567ffffffffffffffff81111561049057600080fd5b6020830191508360208285010111156104a857600080fd5b9250929050565b600080600080606085870312156104c557600080fd5b6104ce8561044d565b935060208501359250604085013567ffffffffffffffff8111156104f157600080fd5b6104fd87828801610466565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461052b57600080fd5b50565b60008060008060006080868803121561054657600080fd5b853561055181610509565b9450602086013561056181610509565b935061056f6040870161044d565b9250606086013567ffffffffffffffff81111561058b57600080fd5b61059788828901610466565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826105e6576105e66105a8565b500690565b63ffffffff8516815283602082015260606040820152816060820152818360808301376000818301608090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601019392505050565b60006020828403121561065e57600080fd5b5051919050565b600082610674576106746105a8565b500490565b818103818111156106b3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea26469706673582212202a4f687b010151e11880730ac39eb2d970f48acd8e0fe91198b2363592d48e1264736f6c63430008110033";
16
16
  static readonly abi: ({
17
17
  anonymous: boolean;
18
18
  inputs: {
@@ -82,7 +82,7 @@ const _abi = [
82
82
  type: "function",
83
83
  },
84
84
  ];
85
- const _bytecode = "0x608060405234801561001057600080fd5b506106ef806100206000396000f3fe6080604052600436106100345760003560e01c806312f762221461003957806356d5d47514610061578063a778af8714610083575b600080fd5b34801561004557600080fd5b5061004f61c35081565b60405190815260200160405180910390f35b34801561006d57600080fd5b5061008161007c3660046104af565b610096565b005b61008161009136600461052e565b610159565b60006100a061043a565b905060006100af6010836105d7565b159050801561011e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f626c6f636b206861736820656e647320696e2030000000000000000000000000604482015260640160405180910390fd5b6040518281527f1e8284519093f867c8c8de794693d723718c98d6ad442f387dfd50dd1e3d93ba9060200160405180910390a1505050505050565b6040517ffa31de0100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff87169063fa31de01906101b49087903090889088906004016105eb565b6020604051808303816000875af11580156101d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f7919061064c565b9050600061020361043a565b9050346102116005836105d7565b600003610393576000610225600283610665565b90506000610236600261c350610665565b6040517f11bf2c180000000000000000000000000000000000000000000000000000000081526004810187905263ffffffff8a1660248201526044810182905233606482015290915073ffffffffffffffffffffffffffffffffffffffff8a16906311bf2c189084906084016000604051808303818588803b1580156102bb57600080fd5b505af11580156102cf573d6000803e3d6000fd5b50505050508873ffffffffffffffffffffffffffffffffffffffff166311bf2c1883856102fc9190610679565b878b61030a8661c350610679565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152600481019390935263ffffffff91909116602483015260448201523360648201526084016000604051808303818588803b15801561037357600080fd5b505af1158015610387573d6000803e3d6000fd5b50505050505050610430565b6040517f11bf2c180000000000000000000000000000000000000000000000000000000081526004810184905263ffffffff8716602482015261c350604482015233606482015273ffffffffffffffffffffffffffffffffffffffff8816906311bf2c189083906084016000604051808303818588803b15801561041657600080fd5b505af115801561042a573d6000803e3d6000fd5b50505050505b5050505050505050565b6000610447600143610679565b40905090565b803563ffffffff8116811461046157600080fd5b919050565b60008083601f84011261047857600080fd5b50813567ffffffffffffffff81111561049057600080fd5b6020830191508360208285010111156104a857600080fd5b9250929050565b600080600080606085870312156104c557600080fd5b6104ce8561044d565b935060208501359250604085013567ffffffffffffffff8111156104f157600080fd5b6104fd87828801610466565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461052b57600080fd5b50565b60008060008060006080868803121561054657600080fd5b853561055181610509565b9450602086013561056181610509565b935061056f6040870161044d565b9250606086013567ffffffffffffffff81111561058b57600080fd5b61059788828901610466565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826105e6576105e66105a8565b500690565b63ffffffff8516815283602082015260606040820152816060820152818360808301376000818301608090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601019392505050565b60006020828403121561065e57600080fd5b5051919050565b600082610674576106746105a8565b500490565b818103818111156106b3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea264697066735822122089313bd2515bb39d32ce714a1014b4c87b1eeae32efb799a98259beec0e1faac64736f6c63430008110033";
85
+ const _bytecode = "0x608060405234801561001057600080fd5b506106ef806100206000396000f3fe6080604052600436106100345760003560e01c806312f762221461003957806356d5d47514610061578063a778af8714610083575b600080fd5b34801561004557600080fd5b5061004f61c35081565b60405190815260200160405180910390f35b34801561006d57600080fd5b5061008161007c3660046104af565b610096565b005b61008161009136600461052e565b610159565b60006100a061043a565b905060006100af6010836105d7565b159050801561011e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f626c6f636b206861736820656e647320696e2030000000000000000000000000604482015260640160405180910390fd5b6040518281527f1e8284519093f867c8c8de794693d723718c98d6ad442f387dfd50dd1e3d93ba9060200160405180910390a1505050505050565b6040517ffa31de0100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff87169063fa31de01906101b49087903090889088906004016105eb565b6020604051808303816000875af11580156101d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f7919061064c565b9050600061020361043a565b9050346102116005836105d7565b600003610393576000610225600283610665565b90506000610236600261c350610665565b6040517f11bf2c180000000000000000000000000000000000000000000000000000000081526004810187905263ffffffff8a1660248201526044810182905233606482015290915073ffffffffffffffffffffffffffffffffffffffff8a16906311bf2c189084906084016000604051808303818588803b1580156102bb57600080fd5b505af11580156102cf573d6000803e3d6000fd5b50505050508873ffffffffffffffffffffffffffffffffffffffff166311bf2c1883856102fc9190610679565b878b61030a8661c350610679565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b168152600481019390935263ffffffff91909116602483015260448201523360648201526084016000604051808303818588803b15801561037357600080fd5b505af1158015610387573d6000803e3d6000fd5b50505050505050610430565b6040517f11bf2c180000000000000000000000000000000000000000000000000000000081526004810184905263ffffffff8716602482015261c350604482015233606482015273ffffffffffffffffffffffffffffffffffffffff8816906311bf2c189083906084016000604051808303818588803b15801561041657600080fd5b505af115801561042a573d6000803e3d6000fd5b50505050505b5050505050505050565b6000610447600143610679565b40905090565b803563ffffffff8116811461046157600080fd5b919050565b60008083601f84011261047857600080fd5b50813567ffffffffffffffff81111561049057600080fd5b6020830191508360208285010111156104a857600080fd5b9250929050565b600080600080606085870312156104c557600080fd5b6104ce8561044d565b935060208501359250604085013567ffffffffffffffff8111156104f157600080fd5b6104fd87828801610466565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461052b57600080fd5b50565b60008060008060006080868803121561054657600080fd5b853561055181610509565b9450602086013561056181610509565b935061056f6040870161044d565b9250606086013567ffffffffffffffff81111561058b57600080fd5b61059788828901610466565b969995985093965092949392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826105e6576105e66105a8565b500690565b63ffffffff8516815283602082015260606040820152816060820152818360808301376000818301608090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01601019392505050565b60006020828403121561065e57600080fd5b5051919050565b600082610674576106746105a8565b500490565b818103818111156106b3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea26469706673582212202a4f687b010151e11880730ac39eb2d970f48acd8e0fe91198b2363592d48e1264736f6c63430008110033";
86
86
  const isSuperArgs = (xs) => xs.length > 1;
87
87
  class TestSendReceiver__factory extends ethers_1.ContractFactory {
88
88
  constructor(...args) {
package/docs/book.css ADDED
@@ -0,0 +1,13 @@
1
+ table {
2
+ margin: 0 auto;
3
+ border-collapse: collapse;
4
+ width: 100%;
5
+ }
6
+
7
+ table td:first-child {
8
+ width: 15%;
9
+ }
10
+
11
+ table td:nth-child(2) {
12
+ width: 25%;
13
+ }
package/docs/book.toml ADDED
@@ -0,0 +1,12 @@
1
+ [book]
2
+ src = "src"
3
+ title = ""
4
+
5
+ [output.html]
6
+ no-section-label = true
7
+ additional-js = ["solidity.min.js"]
8
+ additional-css = ["book.css"]
9
+ git-repository-url = "https://github.com/hyperlane-xyz/hyperlane-monorepo"
10
+
11
+ [output.html.fold]
12
+ enable = true
@@ -0,0 +1,74 @@
1
+ hljs.registerLanguage("solidity",(()=>{"use strict";function e(){try{return!0
2
+ }catch(e){return!1}}
3
+ var a=/-?(\b0[xX]([a-fA-F0-9]_?)*[a-fA-F0-9]|(\b[1-9](_?\d)*(\.((\d_?)*\d)?)?|\.\d(_?\d)*)([eE][-+]?\d(_?\d)*)?|\b0)(?!\w|\$)/
4
+ ;e()&&(a=a.source.replace(/\\b/g,"(?<!\\$)\\b"));var s={className:"number",
5
+ begin:a,relevance:0},n={
6
+ keyword:"assembly let function if switch case default for leave break continue u256 jump jumpi stop return revert selfdestruct invalid",
7
+ built_in:"add sub mul div sdiv mod smod exp not lt gt slt sgt eq iszero and or xor byte shl shr sar addmod mulmod signextend keccak256 pc pop dup1 dup2 dup3 dup4 dup5 dup6 dup7 dup8 dup9 dup10 dup11 dup12 dup13 dup14 dup15 dup16 swap1 swap2 swap3 swap4 swap5 swap6 swap7 swap8 swap9 swap10 swap11 swap12 swap13 swap14 swap15 swap16 mload mstore mstore8 sload sstore msize gas address balance selfbalance caller callvalue calldataload calldatasize calldatacopy codesize codecopy extcodesize extcodecopy returndatasize returndatacopy extcodehash create create2 call callcode delegatecall staticcall log0 log1 log2 log3 log4 chainid origin gasprice basefee blockhash coinbase timestamp number difficulty gaslimit",
8
+ literal:"true false"},i={className:"string",
9
+ begin:/\bhex'(([0-9a-fA-F]{2}_?)*[0-9a-fA-F]{2})?'/},t={className:"string",
10
+ begin:/\bhex"(([0-9a-fA-F]{2}_?)*[0-9a-fA-F]{2})?"/};function r(e){
11
+ return e.inherit(e.APOS_STRING_MODE,{begin:/(\bunicode)?'/})}function l(e){
12
+ return e.inherit(e.QUOTE_STRING_MODE,{begin:/(\bunicode)?"/})}var o={
13
+ SOL_ASSEMBLY_KEYWORDS:n,baseAssembly:e=>{
14
+ var a=r(e),o=l(e),c=/[A-Za-z_$][A-Za-z_$0-9.]*/,d=e.inherit(e.TITLE_MODE,{
15
+ begin:/[A-Za-z$_][0-9A-Za-z$_]*/,lexemes:c,keywords:n}),u={className:"params",
16
+ begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,lexemes:c,keywords:n,
17
+ contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,o,s]},_={
18
+ className:"operator",begin:/:=|->/};return{keywords:n,lexemes:c,
19
+ contains:[a,o,i,t,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,s,_,{
20
+ className:"function",lexemes:c,beginKeywords:"function",end:"{",excludeEnd:!0,
21
+ contains:[d,u,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,_]}]}},
22
+ solAposStringMode:r,solQuoteStringMode:l,HEX_APOS_STRING_MODE:i,
23
+ HEX_QUOTE_STRING_MODE:t,SOL_NUMBER:s,isNegativeLookbehindAvailable:e}
24
+ ;const{baseAssembly:c,solAposStringMode:d,solQuoteStringMode:u,HEX_APOS_STRING_MODE:_,HEX_QUOTE_STRING_MODE:m,SOL_NUMBER:b,isNegativeLookbehindAvailable:E}=o
25
+ ;return e=>{for(var a=d(e),s=u(e),n=[],i=0;i<32;i++)n[i]=i+1
26
+ ;var t=n.map((e=>8*e)),r=[];for(i=0;i<=80;i++)r[i]=i
27
+ ;var l=n.map((e=>"bytes"+e)).join(" ")+" ",o=t.map((e=>"uint"+e)).join(" ")+" ",g=t.map((e=>"int"+e)).join(" ")+" ",M=[].concat.apply([],t.map((e=>r.map((a=>e+"x"+a))))),p={
28
+ keyword:"var bool string int uint "+g+o+"byte bytes "+l+"fixed ufixed "+M.map((e=>"fixed"+e)).join(" ")+" "+M.map((e=>"ufixed"+e)).join(" ")+" enum struct mapping address new delete if else for while continue break return throw emit try catch revert unchecked _ function modifier event constructor fallback receive error virtual override constant immutable anonymous indexed storage memory calldata external public internal payable pure view private returns import from as using pragma contract interface library is abstract type assembly",
29
+ literal:"true false wei gwei szabo finney ether seconds minutes hours days weeks years",
30
+ built_in:"self this super selfdestruct suicide now msg block tx abi blockhash gasleft assert require Error Panic sha3 sha256 keccak256 ripemd160 ecrecover addmod mulmod log0 log1 log2 log3 log4"
31
+ },O={className:"operator",begin:/[+\-!~*\/%<>&^|=]/
32
+ },C=/[A-Za-z_$][A-Za-z_$0-9]*/,N={className:"params",begin:/\(/,end:/\)/,
33
+ excludeBegin:!0,excludeEnd:!0,lexemes:C,keywords:p,
34
+ contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,s,b,"self"]},f={
35
+ begin:/\.\s*/,end:/[^A-Za-z0-9$_\.]/,excludeBegin:!0,excludeEnd:!0,keywords:{
36
+ built_in:"gas value selector address length push pop send transfer call callcode delegatecall staticcall balance code codehash wrap unwrap name creationCode runtimeCode interfaceId min max"
37
+ },relevance:2},y=e.inherit(e.TITLE_MODE,{begin:/[A-Za-z$_][0-9A-Za-z$_]*/,
38
+ lexemes:C,keywords:p}),w={className:"built_in",
39
+ begin:(E()?"(?<!\\$)\\b":"\\b")+"(gas|value|salt)(?=:)"};function x(e,a){return{
40
+ begin:(E()?"(?<!\\$)\\b":"\\b")+e+"\\.\\s*",end:/[^A-Za-z0-9$_\.]/,
41
+ excludeBegin:!1,excludeEnd:!0,lexemes:C,keywords:{built_in:e+" "+a},
42
+ contains:[f],relevance:10}}var h=c(e),v=e.inherit(h,{
43
+ contains:h.contains.concat([{begin:/\./,end:/[^A-Za-z0-9$.]/,excludeBegin:!0,
44
+ excludeEnd:!0,keywords:{built_in:"slot offset length address selector"},
45
+ relevance:2},{begin:/_/,end:/[^A-Za-z0-9$.]/,excludeBegin:!0,excludeEnd:!0,
46
+ keywords:{built_in:"slot offset"},relevance:2}])});return{aliases:["sol"],
47
+ keywords:p,lexemes:C,
48
+ contains:[a,s,_,m,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,b,w,O,{
49
+ className:"function",lexemes:C,
50
+ beginKeywords:"function modifier event constructor fallback receive error",
51
+ end:/[{;]/,excludeEnd:!0,
52
+ contains:[y,N,w,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:/%/
53
+ },x("msg","gas value data sender sig"),x("block","blockhash coinbase difficulty gaslimit basefee number timestamp chainid"),x("tx","gasprice origin"),x("abi","decode encode encodePacked encodeWithSelector encodeWithSignature encodeCall"),x("bytes","concat"),f,{
54
+ className:"class",lexemes:C,beginKeywords:"contract interface library",end:"{",
55
+ excludeEnd:!0,illegal:/[:"\[\]]/,contains:[{beginKeywords:"is",lexemes:C
56
+ },y,N,w,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{lexemes:C,
57
+ beginKeywords:"struct enum",end:"{",excludeEnd:!0,illegal:/[:"\[\]]/,
58
+ contains:[y,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{
59
+ beginKeywords:"import",end:";",lexemes:C,keywords:"import from as",
60
+ contains:[y,a,s,_,m,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,O]},{
61
+ beginKeywords:"using",end:";",lexemes:C,keywords:"using for",
62
+ contains:[y,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,O]},{className:"meta",
63
+ beginKeywords:"pragma",end:";",lexemes:C,keywords:{
64
+ keyword:"pragma solidity experimental abicoder",
65
+ built_in:"ABIEncoderV2 SMTChecker v1 v2"},
66
+ contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.inherit(a,{
67
+ className:"meta-string"}),e.inherit(s,{className:"meta-string"})]},{
68
+ beginKeywords:"assembly",end:/\b\B/,
69
+ contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.inherit(v,{begin:"{",
70
+ end:"}",endsParent:!0,contains:v.contains.concat([e.inherit(v,{begin:"{",
71
+ end:"}",contains:v.contains.concat(["self"])})])})]}],illegal:/#/}}})());
72
+
73
+ // Ugly hack to reload HLJS
74
+ hljs.initHighlightingOnLoad();
@@ -0,0 +1,15 @@
1
+ # Hyperlane Solidity
2
+
3
+ On-chain implementations of Hyperlane in Solidity.
4
+
5
+ ## Setup
6
+
7
+ - `yarn install`
8
+
9
+ ## Build
10
+
11
+ - `yarn build`
12
+
13
+ ## Test
14
+
15
+ - `yarn test`
@@ -0,0 +1,139 @@
1
+ # Summary
2
+ - [Home](README.md)
3
+ # contracts
4
+ - [❱ hooks](contracts/hooks/README.md)
5
+ - [❱ ERC5164](contracts/hooks/ERC5164/README.md)
6
+ - [❱ interfaces](contracts/hooks/ERC5164/interfaces/README.md)
7
+ - [IMessageDispatcher](contracts/hooks/ERC5164/interfaces/IMessageDispatcher.sol/interface.IMessageDispatcher.md)
8
+ - [ERC5164MessageHook](contracts/hooks/ERC5164/ERC5164MessageHook.sol/contract.ERC5164MessageHook.md)
9
+ - [OptimismMessageHook](contracts/hooks/OptimismMessageHook.sol/contract.OptimismMessageHook.md)
10
+ - [❱ igps](contracts/igps/README.md)
11
+ - [❱ gas-oracles](contracts/igps/gas-oracles/README.md)
12
+ - [StorageGasOracle](contracts/igps/gas-oracles/StorageGasOracle.sol/contract.StorageGasOracle.md)
13
+ - [InterchainGasPaymaster](contracts/igps/InterchainGasPaymaster.sol/contract.InterchainGasPaymaster.md)
14
+ - [OverheadIgp](contracts/igps/OverheadIgp.sol/contract.OverheadIgp.md)
15
+ - [❱ interfaces](contracts/interfaces/README.md)
16
+ - [❱ hooks](contracts/interfaces/hooks/README.md)
17
+ - [IMessageHook](contracts/interfaces/hooks/IMessageHook.sol/interface.IMessageHook.md)
18
+ - [❱ isms](contracts/interfaces/isms/README.md)
19
+ - [IAggregationIsm](contracts/interfaces/isms/IAggregationIsm.sol/interface.IAggregationIsm.md)
20
+ - [IMultisigIsm](contracts/interfaces/isms/IMultisigIsm.sol/interface.IMultisigIsm.md)
21
+ - [IRoutingIsm](contracts/interfaces/isms/IRoutingIsm.sol/interface.IRoutingIsm.md)
22
+ - [❱ middleware](contracts/interfaces/middleware/README.md)
23
+ - [IInterchainAccountRouter](contracts/interfaces/middleware/IInterchainAccountRouter.sol/interface.IInterchainAccountRouter.md)
24
+ - [IInterchainQueryRouter](contracts/interfaces/middleware/IInterchainQueryRouter.sol/interface.IInterchainQueryRouter.md)
25
+ - [IGasOracle](contracts/interfaces/IGasOracle.sol/interface.IGasOracle.md)
26
+ - [IHyperlaneConnectionClient](contracts/interfaces/IHyperlaneConnectionClient.sol/interface.IHyperlaneConnectionClient.md)
27
+ - [IInterchainGasPaymaster](contracts/interfaces/IInterchainGasPaymaster.sol/interface.IInterchainGasPaymaster.md)
28
+ - [IInterchainSecurityModule](contracts/interfaces/IInterchainSecurityModule.sol/interface.IInterchainSecurityModule.md)
29
+ - [ISpecifiesInterchainSecurityModule](contracts/interfaces/IInterchainSecurityModule.sol/interface.ISpecifiesInterchainSecurityModule.md)
30
+ - [ILiquidityLayerMessageRecipient](contracts/interfaces/ILiquidityLayerMessageRecipient.sol/interface.ILiquidityLayerMessageRecipient.md)
31
+ - [ILiquidityLayerRouter](contracts/interfaces/ILiquidityLayerRouter.sol/interface.ILiquidityLayerRouter.md)
32
+ - [IMailbox](contracts/interfaces/IMailbox.sol/interface.IMailbox.md)
33
+ - [IMessageRecipient](contracts/interfaces/IMessageRecipient.sol/interface.IMessageRecipient.md)
34
+ - [IRouter](contracts/interfaces/IRouter.sol/interface.IRouter.md)
35
+ - [IValidatorAnnounce](contracts/interfaces/IValidatorAnnounce.sol/interface.IValidatorAnnounce.md)
36
+ - [❱ isms](contracts/isms/README.md)
37
+ - [❱ aggregation](contracts/isms/aggregation/README.md)
38
+ - [AbstractAggregationIsm](contracts/isms/aggregation/AbstractAggregationIsm.sol/abstract.AbstractAggregationIsm.md)
39
+ - [StaticAggregationIsm](contracts/isms/aggregation/StaticAggregationIsm.sol/contract.StaticAggregationIsm.md)
40
+ - [StaticAggregationIsmFactory](contracts/isms/aggregation/StaticAggregationIsmFactory.sol/contract.StaticAggregationIsmFactory.md)
41
+ - [❱ hook](contracts/isms/hook/README.md)
42
+ - [❱ optimism](contracts/isms/hook/optimism/README.md)
43
+ - [CrossChainEnabledOptimism](contracts/isms/hook/optimism/CrossChainEnabledOptimism.sol/abstract.CrossChainEnabledOptimism.md)
44
+ - [LibOptimism](contracts/isms/hook/optimism/LibOptimism.sol/library.LibOptimism.md)
45
+ - [OptimismISM](contracts/isms/hook/optimism/OptimismISM.sol/contract.OptimismISM.md)
46
+ - [AbstractHookISM](contracts/isms/hook/AbstractHookISM.sol/abstract.AbstractHookISM.md)
47
+ - [CrossChainEnabled](contracts/isms/hook/CrossChainEnabled.sol/abstract.CrossChainEnabled.md)
48
+ - [ERC5164ISM](contracts/isms/hook/ERC5164ISM.sol/contract.ERC5164ISM.md)
49
+ - [❱ multisig](contracts/isms/multisig/README.md)
50
+ - [AbstractMerkleRootMultisigIsm](contracts/isms/multisig/AbstractMerkleRootMultisigIsm.sol/abstract.AbstractMerkleRootMultisigIsm.md)
51
+ - [AbstractMessageIdMultisigIsm](contracts/isms/multisig/AbstractMessageIdMultisigIsm.sol/abstract.AbstractMessageIdMultisigIsm.md)
52
+ - [AbstractMultisigIsm](contracts/isms/multisig/AbstractMultisigIsm.sol/abstract.AbstractMultisigIsm.md)
53
+ - [LegacyMultisigIsm](contracts/isms/multisig/LegacyMultisigIsm.sol/contract.LegacyMultisigIsm.md)
54
+ - [AbstractMetaProxyMultisigIsm](contracts/isms/multisig/StaticMultisigIsm.sol/abstract.AbstractMetaProxyMultisigIsm.md)
55
+ - [StaticMerkleRootMultisigIsm](contracts/isms/multisig/StaticMultisigIsm.sol/contract.StaticMerkleRootMultisigIsm.md)
56
+ - [StaticMessageIdMultisigIsm](contracts/isms/multisig/StaticMultisigIsm.sol/contract.StaticMessageIdMultisigIsm.md)
57
+ - [StaticMerkleRootMultisigIsmFactory](contracts/isms/multisig/StaticMultisigIsm.sol/contract.StaticMerkleRootMultisigIsmFactory.md)
58
+ - [StaticMessageIdMultisigIsmFactory](contracts/isms/multisig/StaticMultisigIsm.sol/contract.StaticMessageIdMultisigIsmFactory.md)
59
+ - [❱ routing](contracts/isms/routing/README.md)
60
+ - [AbstractRoutingIsm](contracts/isms/routing/AbstractRoutingIsm.sol/abstract.AbstractRoutingIsm.md)
61
+ - [DomainRoutingIsm](contracts/isms/routing/DomainRoutingIsm.sol/contract.DomainRoutingIsm.md)
62
+ - [DomainRoutingIsmFactory](contracts/isms/routing/DomainRoutingIsmFactory.sol/contract.DomainRoutingIsmFactory.md)
63
+ - [InterchainAccountIsm](contracts/isms/routing/InterchainAccountIsm.sol/contract.InterchainAccountIsm.md)
64
+ - [❱ libs](contracts/libs/README.md)
65
+ - [❱ isms](contracts/libs/isms/README.md)
66
+ - [AggregationIsmMetadata](contracts/libs/isms/AggregationIsmMetadata.sol/library.AggregationIsmMetadata.md)
67
+ - [LegacyMultisigIsmMetadata](contracts/libs/isms/LegacyMultisigIsmMetadata.sol/library.LegacyMultisigIsmMetadata.md)
68
+ - [MerkleRootMultisigIsmMetadata](contracts/libs/isms/MerkleRootMultisigIsmMetadata.sol/library.MerkleRootMultisigIsmMetadata.md)
69
+ - [MessageIdMultisigIsmMetadata](contracts/libs/isms/MessageIdMultisigIsmMetadata.sol/library.MessageIdMultisigIsmMetadata.md)
70
+ - [❱ middleware](contracts/libs/middleware/README.md)
71
+ - [InterchainAccountMessage](contracts/libs/middleware/InterchainAccountMessage.sol/library.InterchainAccountMessage.md)
72
+ - [InterchainQueryMessage](contracts/libs/middleware/InterchainQueryMessage.sol/library.InterchainQueryMessage.md)
73
+ - [CallLib](contracts/libs/Call.sol/library.CallLib.md)
74
+ - [CheckpointLib](contracts/libs/CheckpointLib.sol/library.CheckpointLib.md)
75
+ - [EnumerableMapExtended](contracts/libs/EnumerableMapExtended.sol/library.EnumerableMapExtended.md)
76
+ - [LegacyCheckpointLib](contracts/libs/LegacyCheckpointLib.sol/library.LegacyCheckpointLib.md)
77
+ - [MerkleLib](contracts/libs/Merkle.sol/library.MerkleLib.md)
78
+ - [Message](contracts/libs/Message.sol/library.Message.md)
79
+ - [MetaProxy](contracts/libs/MetaProxy.sol/library.MetaProxy.md)
80
+ - [MinimalProxy](contracts/libs/MinimalProxy.sol/library.MinimalProxy.md)
81
+ - [StaticMOfNAddressSetFactory](contracts/libs/StaticMOfNAddressSetFactory.sol/abstract.StaticMOfNAddressSetFactory.md)
82
+ - [TypeCasts](contracts/libs/TypeCasts.sol/library.TypeCasts.md)
83
+ - [ValidatorAnnouncements](contracts/libs/ValidatorAnnouncements.sol/library.ValidatorAnnouncements.md)
84
+ - [❱ middleware](contracts/middleware/README.md)
85
+ - [❱ liquidity-layer](contracts/middleware/liquidity-layer/README.md)
86
+ - [❱ adapters](contracts/middleware/liquidity-layer/adapters/README.md)
87
+ - [CircleBridgeAdapter](contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.sol/contract.CircleBridgeAdapter.md)
88
+ - [PortalAdapter](contracts/middleware/liquidity-layer/adapters/PortalAdapter.sol/contract.PortalAdapter.md)
89
+ - [❱ interfaces](contracts/middleware/liquidity-layer/interfaces/README.md)
90
+ - [❱ circle](contracts/middleware/liquidity-layer/interfaces/circle/README.md)
91
+ - [ICircleMessageTransmitter](contracts/middleware/liquidity-layer/interfaces/circle/ICircleMessageTransmitter.sol/interface.ICircleMessageTransmitter.md)
92
+ - [ITokenMessenger](contracts/middleware/liquidity-layer/interfaces/circle/ITokenMessenger.sol/interface.ITokenMessenger.md)
93
+ - [❱ portal](contracts/middleware/liquidity-layer/interfaces/portal/README.md)
94
+ - [IPortalTokenBridge](contracts/middleware/liquidity-layer/interfaces/portal/IPortalTokenBridge.sol/interface.IPortalTokenBridge.md)
95
+ - [ILiquidityLayerAdapter](contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter.sol/interface.ILiquidityLayerAdapter.md)
96
+ - [LiquidityLayerRouter](contracts/middleware/liquidity-layer/LiquidityLayerRouter.sol/contract.LiquidityLayerRouter.md)
97
+ - [InterchainAccountRouter](contracts/middleware/InterchainAccountRouter.sol/contract.InterchainAccountRouter.md)
98
+ - [InterchainQueryRouter](contracts/middleware/InterchainQueryRouter.sol/contract.InterchainQueryRouter.md)
99
+ - [❱ mock](contracts/mock/README.md)
100
+ - [MockCircleMessageTransmitter](contracts/mock/MockCircleMessageTransmitter.sol/contract.MockCircleMessageTransmitter.md)
101
+ - [MockCircleTokenMessenger](contracts/mock/MockCircleTokenMessenger.sol/contract.MockCircleTokenMessenger.md)
102
+ - [MockMessageDispatcher](contracts/mock/MockERC5164.sol/contract.MockMessageDispatcher.md)
103
+ - [MockMessageExecutor](contracts/mock/MockERC5164.sol/contract.MockMessageExecutor.md)
104
+ - [MockHyperlaneEnvironment](contracts/mock/MockHyperlaneEnvironment.sol/contract.MockHyperlaneEnvironment.md)
105
+ - [MockMailbox](contracts/mock/MockMailbox.sol/contract.MockMailbox.md)
106
+ - [MockPortalBridge](contracts/mock/MockPortalBridge.sol/contract.MockPortalBridge.md)
107
+ - [MockToken](contracts/mock/MockToken.sol/contract.MockToken.md)
108
+ - [❱ test](contracts/test/README.md)
109
+ - [❱ bad-recipient](contracts/test/bad-recipient/README.md)
110
+ - [BadRecipient1](contracts/test/bad-recipient/BadRecipient1.sol/contract.BadRecipient1.md)
111
+ - [BadRecipient2](contracts/test/bad-recipient/BadRecipient2.sol/contract.BadRecipient2.md)
112
+ - [BadRecipient3](contracts/test/bad-recipient/BadRecipient3.sol/contract.BadRecipient3.md)
113
+ - [BadRecipient5](contracts/test/bad-recipient/BadRecipient5.sol/contract.BadRecipient5.md)
114
+ - [BadRecipient6](contracts/test/bad-recipient/BadRecipient6.sol/contract.BadRecipient6.md)
115
+ - [LightTestRecipient](contracts/test/LightTestRecipient.sol/contract.LightTestRecipient.md)
116
+ - [TestGasRouter](contracts/test/TestGasRouter.sol/contract.TestGasRouter.md)
117
+ - [TestHyperlaneConnectionClient](contracts/test/TestHyperlaneConnectionClient.sol/contract.TestHyperlaneConnectionClient.md)
118
+ - [TestInterchainGasPaymaster](contracts/test/TestInterchainGasPaymaster.sol/contract.TestInterchainGasPaymaster.md)
119
+ - [TestLegacyMultisigIsm](contracts/test/TestLegacyMultisigIsm.sol/contract.TestLegacyMultisigIsm.md)
120
+ - [TestLiquidityLayerMessageRecipient](contracts/test/TestLiquidityLayerMessageRecipient.sol/contract.TestLiquidityLayerMessageRecipient.md)
121
+ - [TestMailbox](contracts/test/TestMailbox.sol/contract.TestMailbox.md)
122
+ - [TestMerkle](contracts/test/TestMerkle.sol/contract.TestMerkle.md)
123
+ - [TestMessage](contracts/test/TestMessage.sol/contract.TestMessage.md)
124
+ - [TestMultisigIsm](contracts/test/TestMultisigIsm.sol/contract.TestMultisigIsm.md)
125
+ - [TestQuery](contracts/test/TestQuery.sol/contract.TestQuery.md)
126
+ - [TestQuerySender](contracts/test/TestQuerySender.sol/contract.TestQuerySender.md)
127
+ - [TestRecipient](contracts/test/TestRecipient.sol/contract.TestRecipient.md)
128
+ - [TestRouter](contracts/test/TestRouter.sol/contract.TestRouter.md)
129
+ - [TestSendReceiver](contracts/test/TestSendReceiver.sol/contract.TestSendReceiver.md)
130
+ - [TestTokenRecipient](contracts/test/TestTokenRecipient.sol/contract.TestTokenRecipient.md)
131
+ - [❱ upgrade](contracts/upgrade/README.md)
132
+ - [Versioned](contracts/upgrade/Versioned.sol/contract.Versioned.md)
133
+ - [GasRouter](contracts/GasRouter.sol/abstract.GasRouter.md)
134
+ - [HyperlaneConnectionClient](contracts/HyperlaneConnectionClient.sol/abstract.HyperlaneConnectionClient.md)
135
+ - [Mailbox](contracts/Mailbox.sol/contract.Mailbox.md)
136
+ - [OwnableMulticall](contracts/OwnableMulticall.sol/contract.OwnableMulticall.md)
137
+ - [PausableReentrancyGuardUpgradeable](contracts/PausableReentrancyGuard.sol/abstract.PausableReentrancyGuardUpgradeable.md)
138
+ - [Router](contracts/Router.sol/abstract.Router.md)
139
+ - [ValidatorAnnounce](contracts/ValidatorAnnounce.sol/contract.ValidatorAnnounce.md)
@@ -0,0 +1,124 @@
1
+ # GasRouter
2
+ [Git Source](https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/a5209dbd9b0f5eb34e0bc9df2ba157dda2b454d3/contracts/GasRouter.sol)
3
+
4
+ **Inherits:**
5
+ [Router](/contracts/Router.sol/abstract.Router.md)
6
+
7
+
8
+ ## State Variables
9
+ ### destinationGas
10
+
11
+ ```solidity
12
+ mapping(uint32 => uint256) public destinationGas;
13
+ ```
14
+
15
+
16
+ ## Functions
17
+ ### setDestinationGas
18
+
19
+ Sets the gas amount dispatched for each configured domain.
20
+
21
+
22
+ ```solidity
23
+ function setDestinationGas(GasRouterConfig[] calldata gasConfigs) external onlyOwner;
24
+ ```
25
+ **Parameters**
26
+
27
+ |Name|Type|Description|
28
+ |----|----|-----------|
29
+ |`gasConfigs`|`GasRouterConfig[]`|The array of GasRouterConfig structs|
30
+
31
+
32
+ ### quoteGasPayment
33
+
34
+ Returns the gas payment required to dispatch a message to the given domain's router.
35
+
36
+
37
+ ```solidity
38
+ function quoteGasPayment(uint32 _destinationDomain) external view returns (uint256 _gasPayment);
39
+ ```
40
+ **Parameters**
41
+
42
+ |Name|Type|Description|
43
+ |----|----|-----------|
44
+ |`_destinationDomain`|`uint32`|The domain of the router.|
45
+
46
+ **Returns**
47
+
48
+ |Name|Type|Description|
49
+ |----|----|-----------|
50
+ |`_gasPayment`|`uint256`|Payment computed by the registered InterchainGasPaymaster.|
51
+
52
+
53
+ ### _setDestinationGas
54
+
55
+
56
+ ```solidity
57
+ function _setDestinationGas(uint32 domain, uint256 gas) internal;
58
+ ```
59
+
60
+ ### _dispatchWithGas
61
+
62
+ Dispatches a message to an enrolled router via the local router's Mailbox
63
+ and pays for it to be relayed to the destination.
64
+
65
+ *Uses the destinationGas mapping to populate the gas amount for the message.*
66
+
67
+ *Reverts if there is no enrolled router for _destinationDomain.*
68
+
69
+
70
+ ```solidity
71
+ function _dispatchWithGas(
72
+ uint32 _destinationDomain,
73
+ bytes memory _messageBody,
74
+ uint256 _gasPayment,
75
+ address _gasPaymentRefundAddress
76
+ ) internal returns (bytes32 _messageId);
77
+ ```
78
+ **Parameters**
79
+
80
+ |Name|Type|Description|
81
+ |----|----|-----------|
82
+ |`_destinationDomain`|`uint32`|The domain of the chain to which to send the message.|
83
+ |`_messageBody`|`bytes`|Raw bytes content of message.|
84
+ |`_gasPayment`|`uint256`|The amount of native tokens to pay for the message to be relayed.|
85
+ |`_gasPaymentRefundAddress`|`address`|The address to refund any gas overpayment to.|
86
+
87
+
88
+ ### _dispatchWithGas
89
+
90
+ *Passes `msg.value` as gas payment and `msg.sender` as gas payment refund address.*
91
+
92
+ *Uses the destinationGas mapping to populate the gas amount for the message.*
93
+
94
+
95
+ ```solidity
96
+ function _dispatchWithGas(uint32 _destinationDomain, bytes memory _messageBody) internal returns (bytes32 _messageId);
97
+ ```
98
+ **Parameters**
99
+
100
+ |Name|Type|Description|
101
+ |----|----|-----------|
102
+ |`_destinationDomain`|`uint32`|The domain of the chain to send the message.|
103
+ |`_messageBody`|`bytes`|Raw bytes content of message.|
104
+
105
+
106
+ ## Events
107
+ ### DestinationGasSet
108
+ Emitted when a domain's destination gas is set.
109
+
110
+
111
+ ```solidity
112
+ event DestinationGasSet(uint32 indexed domain, uint256 gas);
113
+ ```
114
+
115
+ ## Structs
116
+ ### GasRouterConfig
117
+
118
+ ```solidity
119
+ struct GasRouterConfig {
120
+ uint32 domain;
121
+ uint256 gas;
122
+ }
123
+ ```
124
+