@hyperlane-xyz/core 1.4.3-beta1 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (362) hide show
  1. package/contracts/Router.sol +18 -17
  2. package/contracts/igps/InterchainGasPaymaster.sol +9 -1
  3. package/contracts/isms/PausableIsm.sol +34 -0
  4. package/contracts/isms/routing/DefaultFallbackRoutingIsm.sol +39 -0
  5. package/contracts/isms/routing/DomainRoutingIsm.sol +35 -19
  6. package/contracts/isms/routing/DomainRoutingIsmFactory.sol +39 -14
  7. package/contracts/libs/EnumerableMapExtended.sol +28 -2
  8. package/contracts/middleware/InterchainAccountRouter.sol +99 -97
  9. package/dist/@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.d.ts +6 -6
  10. package/dist/@eth-optimism/contracts/libraries/bridge/ICrossDomainMessenger.d.ts.map +1 -1
  11. package/dist/@openzeppelin/contracts/access/AccessControl.d.ts +6 -6
  12. package/dist/@openzeppelin/contracts/access/AccessControl.d.ts.map +1 -1
  13. package/dist/@openzeppelin/contracts/access/IAccessControl.d.ts +6 -6
  14. package/dist/@openzeppelin/contracts/access/IAccessControl.d.ts.map +1 -1
  15. package/dist/@openzeppelin/contracts/access/Ownable.d.ts +2 -2
  16. package/dist/@openzeppelin/contracts/access/Ownable.d.ts.map +1 -1
  17. package/dist/@openzeppelin/contracts/governance/TimelockController.d.ts +14 -14
  18. package/dist/@openzeppelin/contracts/governance/TimelockController.d.ts.map +1 -1
  19. package/dist/@openzeppelin/contracts/index.d.ts +2 -0
  20. package/dist/@openzeppelin/contracts/index.d.ts.map +1 -1
  21. package/dist/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.d.ts +6 -6
  22. package/dist/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.d.ts.map +1 -1
  23. package/dist/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.d.ts +6 -6
  24. package/dist/@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.d.ts.map +1 -1
  25. package/dist/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.d.ts +2 -2
  26. package/dist/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.d.ts.map +1 -1
  27. package/dist/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.d.ts +6 -6
  28. package/dist/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.d.ts.map +1 -1
  29. package/dist/@openzeppelin/contracts/security/Pausable.d.ts +63 -0
  30. package/dist/@openzeppelin/contracts/security/Pausable.d.ts.map +1 -0
  31. package/dist/@openzeppelin/contracts/security/Pausable.js +4 -0
  32. package/dist/@openzeppelin/contracts/security/Pausable.js.map +1 -0
  33. package/dist/@openzeppelin/contracts/security/index.d.ts +2 -0
  34. package/dist/@openzeppelin/contracts/security/index.d.ts.map +1 -0
  35. package/dist/@openzeppelin/contracts/security/index.js +3 -0
  36. package/dist/@openzeppelin/contracts/security/index.js.map +1 -0
  37. package/dist/@openzeppelin/contracts/token/ERC20/IERC20.d.ts +4 -4
  38. package/dist/@openzeppelin/contracts/token/ERC20/IERC20.d.ts.map +1 -1
  39. package/dist/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.d.ts +4 -4
  40. package/dist/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.d.ts.map +1 -1
  41. package/dist/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.d.ts +2 -2
  42. package/dist/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.d.ts.map +1 -1
  43. package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.d.ts +6 -6
  44. package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.d.ts.map +1 -1
  45. package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.d.ts +4 -4
  46. package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.d.ts.map +1 -1
  47. package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.d.ts +4 -4
  48. package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.d.ts.map +1 -1
  49. package/dist/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.d.ts +2 -2
  50. package/dist/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.d.ts.map +1 -1
  51. package/dist/common.d.ts +4 -4
  52. package/dist/common.d.ts.map +1 -1
  53. package/dist/contracts/GasRouter.d.ts +14 -14
  54. package/dist/contracts/GasRouter.d.ts.map +1 -1
  55. package/dist/contracts/HyperlaneConnectionClient.d.ts +10 -10
  56. package/dist/contracts/HyperlaneConnectionClient.d.ts.map +1 -1
  57. package/dist/contracts/Mailbox.d.ts +18 -18
  58. package/dist/contracts/Mailbox.d.ts.map +1 -1
  59. package/dist/contracts/PausableReentrancyGuard.sol/PausableReentrancyGuardUpgradeable.d.ts +2 -2
  60. package/dist/contracts/PausableReentrancyGuard.sol/PausableReentrancyGuardUpgradeable.d.ts.map +1 -1
  61. package/dist/contracts/Router.d.ts +12 -12
  62. package/dist/contracts/Router.d.ts.map +1 -1
  63. package/dist/contracts/ValidatorAnnounce.d.ts +2 -2
  64. package/dist/contracts/ValidatorAnnounce.d.ts.map +1 -1
  65. package/dist/contracts/hooks/ERC5164/interfaces/IMessageDispatcher.d.ts +2 -2
  66. package/dist/contracts/hooks/ERC5164/interfaces/IMessageDispatcher.d.ts.map +1 -1
  67. package/dist/contracts/igps/InterchainGasPaymaster.d.ts +10 -10
  68. package/dist/contracts/igps/InterchainGasPaymaster.d.ts.map +1 -1
  69. package/dist/contracts/igps/OverheadIgp.d.ts +6 -6
  70. package/dist/contracts/igps/OverheadIgp.d.ts.map +1 -1
  71. package/dist/contracts/igps/gas-oracles/StorageGasOracle.d.ts +4 -4
  72. package/dist/contracts/igps/gas-oracles/StorageGasOracle.d.ts.map +1 -1
  73. package/dist/contracts/interfaces/IInterchainGasPaymaster.d.ts +2 -2
  74. package/dist/contracts/interfaces/IInterchainGasPaymaster.d.ts.map +1 -1
  75. package/dist/contracts/interfaces/IMailbox.d.ts +8 -8
  76. package/dist/contracts/interfaces/IMailbox.d.ts.map +1 -1
  77. package/dist/contracts/isms/PausableIsm.d.ts +164 -0
  78. package/dist/contracts/isms/PausableIsm.d.ts.map +1 -0
  79. package/dist/contracts/isms/PausableIsm.js +4 -0
  80. package/dist/contracts/isms/PausableIsm.js.map +1 -0
  81. package/dist/contracts/isms/hook/AbstractHookISM.d.ts +4 -4
  82. package/dist/contracts/isms/hook/AbstractHookISM.d.ts.map +1 -1
  83. package/dist/contracts/isms/hook/ERC5164ISM.d.ts +4 -4
  84. package/dist/contracts/isms/hook/ERC5164ISM.d.ts.map +1 -1
  85. package/dist/contracts/isms/hook/OptimismISM.d.ts +4 -4
  86. package/dist/contracts/isms/hook/OptimismISM.d.ts.map +1 -1
  87. package/dist/contracts/isms/index.d.ts +1 -0
  88. package/dist/contracts/isms/index.d.ts.map +1 -1
  89. package/dist/contracts/isms/multisig/LegacyMultisigIsm.d.ts +10 -10
  90. package/dist/contracts/isms/multisig/LegacyMultisigIsm.d.ts.map +1 -1
  91. package/dist/contracts/isms/routing/DefaultFallbackRoutingIsm.d.ts +213 -0
  92. package/dist/contracts/isms/routing/DefaultFallbackRoutingIsm.d.ts.map +1 -0
  93. package/dist/contracts/isms/routing/DefaultFallbackRoutingIsm.js +4 -0
  94. package/dist/contracts/isms/routing/DefaultFallbackRoutingIsm.js.map +1 -0
  95. package/dist/contracts/isms/routing/DomainRoutingIsm.d.ts +25 -17
  96. package/dist/contracts/isms/routing/DomainRoutingIsm.d.ts.map +1 -1
  97. package/dist/contracts/isms/routing/DomainRoutingIsmFactory.sol/AbstractDomainRoutingIsmFactory.d.ts +64 -0
  98. package/dist/contracts/isms/routing/DomainRoutingIsmFactory.sol/AbstractDomainRoutingIsmFactory.d.ts.map +1 -0
  99. package/dist/contracts/isms/routing/DomainRoutingIsmFactory.sol/AbstractDomainRoutingIsmFactory.js +4 -0
  100. package/dist/contracts/isms/routing/DomainRoutingIsmFactory.sol/AbstractDomainRoutingIsmFactory.js.map +1 -0
  101. package/dist/contracts/isms/routing/DomainRoutingIsmFactory.sol/DefaultFallbackRoutingIsmFactory.d.ts +64 -0
  102. package/dist/contracts/isms/routing/DomainRoutingIsmFactory.sol/DefaultFallbackRoutingIsmFactory.d.ts.map +1 -0
  103. package/dist/contracts/isms/routing/DomainRoutingIsmFactory.sol/DefaultFallbackRoutingIsmFactory.js +4 -0
  104. package/dist/contracts/isms/routing/DomainRoutingIsmFactory.sol/DefaultFallbackRoutingIsmFactory.js.map +1 -0
  105. package/dist/contracts/isms/routing/{DomainRoutingIsmFactory.d.ts → DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory.d.ts} +3 -3
  106. package/dist/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory.d.ts.map +1 -0
  107. package/dist/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory.js.map +1 -0
  108. package/dist/contracts/isms/routing/DomainRoutingIsmFactory.sol/index.d.ts +4 -0
  109. package/dist/contracts/isms/routing/DomainRoutingIsmFactory.sol/index.d.ts.map +1 -0
  110. package/dist/contracts/isms/routing/DomainRoutingIsmFactory.sol/index.js +3 -0
  111. package/dist/contracts/isms/routing/DomainRoutingIsmFactory.sol/index.js.map +1 -0
  112. package/dist/contracts/isms/routing/index.d.ts +3 -1
  113. package/dist/contracts/isms/routing/index.d.ts.map +1 -1
  114. package/dist/contracts/isms/routing/index.js +1 -0
  115. package/dist/contracts/isms/routing/index.js.map +1 -1
  116. package/dist/contracts/middleware/InterchainAccountRouter.d.ts +50 -34
  117. package/dist/contracts/middleware/InterchainAccountRouter.d.ts.map +1 -1
  118. package/dist/contracts/middleware/InterchainQueryRouter.d.ts +18 -18
  119. package/dist/contracts/middleware/InterchainQueryRouter.d.ts.map +1 -1
  120. package/dist/contracts/middleware/liquidity-layer/LiquidityLayerRouter.d.ts +14 -14
  121. package/dist/contracts/middleware/liquidity-layer/LiquidityLayerRouter.d.ts.map +1 -1
  122. package/dist/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.d.ts +20 -20
  123. package/dist/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.d.ts.map +1 -1
  124. package/dist/contracts/middleware/liquidity-layer/adapters/PortalAdapter.d.ts +16 -16
  125. package/dist/contracts/middleware/liquidity-layer/adapters/PortalAdapter.d.ts.map +1 -1
  126. package/dist/contracts/middleware/liquidity-layer/interfaces/circle/ITokenMessenger.d.ts +2 -2
  127. package/dist/contracts/middleware/liquidity-layer/interfaces/circle/ITokenMessenger.d.ts.map +1 -1
  128. package/dist/contracts/middleware/liquidity-layer/interfaces/portal/IPortalTokenBridge.d.ts +2 -2
  129. package/dist/contracts/middleware/liquidity-layer/interfaces/portal/IPortalTokenBridge.d.ts.map +1 -1
  130. package/dist/contracts/mock/MockCircleTokenMessenger.d.ts +2 -2
  131. package/dist/contracts/mock/MockCircleTokenMessenger.d.ts.map +1 -1
  132. package/dist/contracts/mock/MockERC5164.sol/MockMessageDispatcher.d.ts +2 -2
  133. package/dist/contracts/mock/MockERC5164.sol/MockMessageDispatcher.d.ts.map +1 -1
  134. package/dist/contracts/mock/MockERC5164.sol/MockMessageExecutor.d.ts +2 -2
  135. package/dist/contracts/mock/MockERC5164.sol/MockMessageExecutor.d.ts.map +1 -1
  136. package/dist/contracts/mock/MockPortalBridge.d.ts +2 -2
  137. package/dist/contracts/mock/MockPortalBridge.d.ts.map +1 -1
  138. package/dist/contracts/mock/MockToken.d.ts +6 -6
  139. package/dist/contracts/mock/MockToken.d.ts.map +1 -1
  140. package/dist/contracts/test/LightTestRecipient.d.ts +6 -6
  141. package/dist/contracts/test/LightTestRecipient.d.ts.map +1 -1
  142. package/dist/contracts/test/TestGasRouter.d.ts +16 -16
  143. package/dist/contracts/test/TestGasRouter.d.ts.map +1 -1
  144. package/dist/contracts/test/TestHyperlaneConnectionClient.d.ts +10 -10
  145. package/dist/contracts/test/TestHyperlaneConnectionClient.d.ts.map +1 -1
  146. package/dist/contracts/test/TestInterchainGasPaymaster.d.ts +10 -10
  147. package/dist/contracts/test/TestInterchainGasPaymaster.d.ts.map +1 -1
  148. package/dist/contracts/test/TestLegacyMultisigIsm.d.ts +10 -10
  149. package/dist/contracts/test/TestLegacyMultisigIsm.d.ts.map +1 -1
  150. package/dist/contracts/test/TestLiquidityLayerMessageRecipient.d.ts +2 -2
  151. package/dist/contracts/test/TestLiquidityLayerMessageRecipient.d.ts.map +1 -1
  152. package/dist/contracts/test/TestMailbox.d.ts +18 -18
  153. package/dist/contracts/test/TestMailbox.d.ts.map +1 -1
  154. package/dist/contracts/test/TestQuery.d.ts +2 -2
  155. package/dist/contracts/test/TestQuery.d.ts.map +1 -1
  156. package/dist/contracts/test/TestQuerySender.d.ts +6 -6
  157. package/dist/contracts/test/TestQuerySender.d.ts.map +1 -1
  158. package/dist/contracts/test/TestRecipient.d.ts +6 -6
  159. package/dist/contracts/test/TestRecipient.d.ts.map +1 -1
  160. package/dist/contracts/test/TestRouter.d.ts +14 -14
  161. package/dist/contracts/test/TestRouter.d.ts.map +1 -1
  162. package/dist/contracts/test/TestSendReceiver.d.ts +2 -2
  163. package/dist/contracts/test/TestSendReceiver.d.ts.map +1 -1
  164. package/dist/contracts/test/TestTokenRecipient.d.ts +4 -4
  165. package/dist/contracts/test/TestTokenRecipient.d.ts.map +1 -1
  166. package/dist/factories/@openzeppelin/contracts/governance/TimelockController__factory.d.ts +1 -1
  167. package/dist/factories/@openzeppelin/contracts/governance/TimelockController__factory.d.ts.map +1 -1
  168. package/dist/factories/@openzeppelin/contracts/index.d.ts +1 -0
  169. package/dist/factories/@openzeppelin/contracts/index.d.ts.map +1 -1
  170. package/dist/factories/@openzeppelin/contracts/index.js +2 -1
  171. package/dist/factories/@openzeppelin/contracts/index.js.map +1 -1
  172. package/dist/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy__factory.d.ts +1 -1
  173. package/dist/factories/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy__factory.d.ts.map +1 -1
  174. package/dist/factories/@openzeppelin/contracts/proxy/transparent/ProxyAdmin__factory.d.ts +1 -1
  175. package/dist/factories/@openzeppelin/contracts/proxy/transparent/ProxyAdmin__factory.d.ts.map +1 -1
  176. package/dist/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy__factory.d.ts +1 -1
  177. package/dist/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy__factory.d.ts.map +1 -1
  178. package/dist/factories/@openzeppelin/contracts/security/Pausable__factory.d.ts +32 -0
  179. package/dist/factories/@openzeppelin/contracts/security/Pausable__factory.d.ts.map +1 -0
  180. package/dist/factories/@openzeppelin/contracts/security/Pausable__factory.js +57 -0
  181. package/dist/factories/@openzeppelin/contracts/security/Pausable__factory.js.map +1 -0
  182. package/dist/factories/@openzeppelin/contracts/security/index.d.ts +2 -0
  183. package/dist/factories/@openzeppelin/contracts/security/index.d.ts.map +1 -0
  184. package/dist/factories/@openzeppelin/contracts/security/index.js +9 -0
  185. package/dist/factories/@openzeppelin/contracts/security/index.js.map +1 -0
  186. package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable__factory.d.ts +1 -1
  187. package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable__factory.d.ts.map +1 -1
  188. package/dist/factories/contracts/Mailbox__factory.d.ts +1 -1
  189. package/dist/factories/contracts/Mailbox__factory.d.ts.map +1 -1
  190. package/dist/factories/contracts/OwnableMulticall__factory.d.ts +1 -1
  191. package/dist/factories/contracts/OwnableMulticall__factory.d.ts.map +1 -1
  192. package/dist/factories/contracts/ValidatorAnnounce__factory.d.ts +1 -1
  193. package/dist/factories/contracts/ValidatorAnnounce__factory.d.ts.map +1 -1
  194. package/dist/factories/contracts/hooks/ERC5164/ERC5164MessageHook__factory.d.ts +1 -1
  195. package/dist/factories/contracts/hooks/ERC5164/ERC5164MessageHook__factory.d.ts.map +1 -1
  196. package/dist/factories/contracts/hooks/OptimismMessageHook__factory.d.ts +1 -1
  197. package/dist/factories/contracts/hooks/OptimismMessageHook__factory.d.ts.map +1 -1
  198. package/dist/factories/contracts/igps/InterchainGasPaymaster__factory.d.ts +2 -2
  199. package/dist/factories/contracts/igps/InterchainGasPaymaster__factory.d.ts.map +1 -1
  200. package/dist/factories/contracts/igps/InterchainGasPaymaster__factory.js +1 -1
  201. package/dist/factories/contracts/igps/InterchainGasPaymaster__factory.js.map +1 -1
  202. package/dist/factories/contracts/igps/OverheadIgp__factory.d.ts +1 -1
  203. package/dist/factories/contracts/igps/OverheadIgp__factory.d.ts.map +1 -1
  204. package/dist/factories/contracts/igps/gas-oracles/StorageGasOracle__factory.d.ts +1 -1
  205. package/dist/factories/contracts/igps/gas-oracles/StorageGasOracle__factory.d.ts.map +1 -1
  206. package/dist/factories/contracts/isms/PausableIsm__factory.d.ts +48 -0
  207. package/dist/factories/contracts/isms/PausableIsm__factory.d.ts.map +1 -0
  208. package/dist/factories/contracts/isms/PausableIsm__factory.js +183 -0
  209. package/dist/factories/contracts/isms/PausableIsm__factory.js.map +1 -0
  210. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsmFactory__factory.d.ts +1 -1
  211. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsmFactory__factory.d.ts.map +1 -1
  212. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsm__factory.d.ts +1 -1
  213. package/dist/factories/contracts/isms/aggregation/StaticAggregationIsm__factory.d.ts.map +1 -1
  214. package/dist/factories/contracts/isms/hook/ERC5164ISM__factory.d.ts +1 -1
  215. package/dist/factories/contracts/isms/hook/ERC5164ISM__factory.d.ts.map +1 -1
  216. package/dist/factories/contracts/isms/hook/OptimismISM__factory.d.ts +1 -1
  217. package/dist/factories/contracts/isms/hook/OptimismISM__factory.d.ts.map +1 -1
  218. package/dist/factories/contracts/isms/index.d.ts +1 -0
  219. package/dist/factories/contracts/isms/index.d.ts.map +1 -1
  220. package/dist/factories/contracts/isms/index.js +3 -1
  221. package/dist/factories/contracts/isms/index.js.map +1 -1
  222. package/dist/factories/contracts/isms/multisig/LegacyMultisigIsm__factory.d.ts +1 -1
  223. package/dist/factories/contracts/isms/multisig/LegacyMultisigIsm__factory.d.ts.map +1 -1
  224. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsmFactory__factory.d.ts +1 -1
  225. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsmFactory__factory.d.ts.map +1 -1
  226. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsm__factory.d.ts +1 -1
  227. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsm__factory.d.ts.map +1 -1
  228. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsmFactory__factory.d.ts +1 -1
  229. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsmFactory__factory.d.ts.map +1 -1
  230. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsm__factory.d.ts +1 -1
  231. package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsm__factory.d.ts.map +1 -1
  232. package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.d.ts +59 -0
  233. package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.d.ts.map +1 -0
  234. package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.js +291 -0
  235. package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.js.map +1 -0
  236. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/AbstractDomainRoutingIsmFactory__factory.d.ts +36 -0
  237. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/AbstractDomainRoutingIsmFactory__factory.d.ts.map +1 -0
  238. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/AbstractDomainRoutingIsmFactory__factory.js +55 -0
  239. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/AbstractDomainRoutingIsmFactory__factory.js.map +1 -0
  240. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DefaultFallbackRoutingIsmFactory__factory.d.ts +59 -0
  241. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DefaultFallbackRoutingIsmFactory__factory.d.ts.map +1 -0
  242. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DefaultFallbackRoutingIsmFactory__factory.js +89 -0
  243. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DefaultFallbackRoutingIsmFactory__factory.js.map +1 -0
  244. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory__factory.d.ts +55 -0
  245. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory__factory.d.ts.map +1 -0
  246. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory__factory.js +83 -0
  247. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory__factory.js.map +1 -0
  248. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/index.d.ts +4 -0
  249. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/index.d.ts.map +1 -0
  250. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/index.js +13 -0
  251. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/index.js.map +1 -0
  252. package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.d.ts +2 -2
  253. package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.d.ts.map +1 -1
  254. package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.js +17 -4
  255. package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.js.map +1 -1
  256. package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.d.ts +1 -1
  257. package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.d.ts.map +1 -1
  258. package/dist/factories/contracts/isms/routing/index.d.ts +2 -1
  259. package/dist/factories/contracts/isms/routing/index.d.ts.map +1 -1
  260. package/dist/factories/contracts/isms/routing/index.js +27 -3
  261. package/dist/factories/contracts/isms/routing/index.js.map +1 -1
  262. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts +2 -2
  263. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts.map +1 -1
  264. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js +26 -3
  265. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js.map +1 -1
  266. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.d.ts +2 -2
  267. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.d.ts.map +1 -1
  268. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js +1 -1
  269. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js.map +1 -1
  270. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts +2 -2
  271. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts.map +1 -1
  272. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js +1 -1
  273. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js.map +1 -1
  274. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.d.ts +2 -2
  275. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.d.ts.map +1 -1
  276. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js +1 -1
  277. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js.map +1 -1
  278. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.d.ts +2 -2
  279. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.d.ts.map +1 -1
  280. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.js +1 -1
  281. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.js.map +1 -1
  282. package/dist/factories/contracts/mock/MockCircleMessageTransmitter__factory.d.ts +1 -1
  283. package/dist/factories/contracts/mock/MockCircleMessageTransmitter__factory.d.ts.map +1 -1
  284. package/dist/factories/contracts/mock/MockCircleTokenMessenger__factory.d.ts +1 -1
  285. package/dist/factories/contracts/mock/MockCircleTokenMessenger__factory.d.ts.map +1 -1
  286. package/dist/factories/contracts/mock/MockERC5164.sol/MockMessageDispatcher__factory.d.ts +1 -1
  287. package/dist/factories/contracts/mock/MockERC5164.sol/MockMessageDispatcher__factory.d.ts.map +1 -1
  288. package/dist/factories/contracts/mock/MockERC5164.sol/MockMessageExecutor__factory.d.ts +1 -1
  289. package/dist/factories/contracts/mock/MockERC5164.sol/MockMessageExecutor__factory.d.ts.map +1 -1
  290. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts +2 -2
  291. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts.map +1 -1
  292. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js +1 -1
  293. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js.map +1 -1
  294. package/dist/factories/contracts/mock/MockMailbox__factory.d.ts +1 -1
  295. package/dist/factories/contracts/mock/MockMailbox__factory.d.ts.map +1 -1
  296. package/dist/factories/contracts/mock/MockPortalBridge__factory.d.ts +1 -1
  297. package/dist/factories/contracts/mock/MockPortalBridge__factory.d.ts.map +1 -1
  298. package/dist/factories/contracts/mock/MockToken__factory.d.ts +1 -1
  299. package/dist/factories/contracts/mock/MockToken__factory.d.ts.map +1 -1
  300. package/dist/factories/contracts/test/LightTestRecipient__factory.d.ts +1 -1
  301. package/dist/factories/contracts/test/LightTestRecipient__factory.d.ts.map +1 -1
  302. package/dist/factories/contracts/test/TestGasRouter__factory.d.ts +2 -2
  303. package/dist/factories/contracts/test/TestGasRouter__factory.d.ts.map +1 -1
  304. package/dist/factories/contracts/test/TestGasRouter__factory.js +1 -1
  305. package/dist/factories/contracts/test/TestGasRouter__factory.js.map +1 -1
  306. package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.d.ts +1 -1
  307. package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.d.ts.map +1 -1
  308. package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.d.ts +2 -2
  309. package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.d.ts.map +1 -1
  310. package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.js +1 -1
  311. package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.js.map +1 -1
  312. package/dist/factories/contracts/test/TestLegacyMultisigIsm__factory.d.ts +1 -1
  313. package/dist/factories/contracts/test/TestLegacyMultisigIsm__factory.d.ts.map +1 -1
  314. package/dist/factories/contracts/test/TestLiquidityLayerMessageRecipient__factory.d.ts +1 -1
  315. package/dist/factories/contracts/test/TestLiquidityLayerMessageRecipient__factory.d.ts.map +1 -1
  316. package/dist/factories/contracts/test/TestMailbox__factory.d.ts +1 -1
  317. package/dist/factories/contracts/test/TestMailbox__factory.d.ts.map +1 -1
  318. package/dist/factories/contracts/test/TestMerkle__factory.d.ts +1 -1
  319. package/dist/factories/contracts/test/TestMerkle__factory.d.ts.map +1 -1
  320. package/dist/factories/contracts/test/TestMessage__factory.d.ts +1 -1
  321. package/dist/factories/contracts/test/TestMessage__factory.d.ts.map +1 -1
  322. package/dist/factories/contracts/test/TestMultisigIsm__factory.d.ts +1 -1
  323. package/dist/factories/contracts/test/TestMultisigIsm__factory.d.ts.map +1 -1
  324. package/dist/factories/contracts/test/TestQuerySender__factory.d.ts +1 -1
  325. package/dist/factories/contracts/test/TestQuerySender__factory.d.ts.map +1 -1
  326. package/dist/factories/contracts/test/TestQuery__factory.d.ts +2 -2
  327. package/dist/factories/contracts/test/TestQuery__factory.d.ts.map +1 -1
  328. package/dist/factories/contracts/test/TestQuery__factory.js +1 -1
  329. package/dist/factories/contracts/test/TestRecipient__factory.d.ts +1 -1
  330. package/dist/factories/contracts/test/TestRecipient__factory.d.ts.map +1 -1
  331. package/dist/factories/contracts/test/TestRouter__factory.d.ts +2 -2
  332. package/dist/factories/contracts/test/TestRouter__factory.d.ts.map +1 -1
  333. package/dist/factories/contracts/test/TestRouter__factory.js +1 -1
  334. package/dist/factories/contracts/test/TestRouter__factory.js.map +1 -1
  335. package/dist/factories/contracts/test/TestSendReceiver__factory.d.ts +1 -1
  336. package/dist/factories/contracts/test/TestSendReceiver__factory.d.ts.map +1 -1
  337. package/dist/factories/contracts/test/TestTokenRecipient__factory.d.ts +1 -1
  338. package/dist/factories/contracts/test/TestTokenRecipient__factory.d.ts.map +1 -1
  339. package/dist/factories/contracts/test/bad-recipient/BadRecipient1__factory.d.ts +1 -1
  340. package/dist/factories/contracts/test/bad-recipient/BadRecipient1__factory.d.ts.map +1 -1
  341. package/dist/factories/contracts/test/bad-recipient/BadRecipient2__factory.d.ts +1 -1
  342. package/dist/factories/contracts/test/bad-recipient/BadRecipient2__factory.d.ts.map +1 -1
  343. package/dist/factories/contracts/test/bad-recipient/BadRecipient3__factory.d.ts +1 -1
  344. package/dist/factories/contracts/test/bad-recipient/BadRecipient3__factory.d.ts.map +1 -1
  345. package/dist/factories/contracts/test/bad-recipient/BadRecipient5__factory.d.ts +1 -1
  346. package/dist/factories/contracts/test/bad-recipient/BadRecipient5__factory.d.ts.map +1 -1
  347. package/dist/factories/contracts/test/bad-recipient/BadRecipient6__factory.d.ts +1 -1
  348. package/dist/factories/contracts/test/bad-recipient/BadRecipient6__factory.d.ts.map +1 -1
  349. package/dist/factories/contracts/upgrade/Versioned__factory.d.ts +1 -1
  350. package/dist/factories/contracts/upgrade/Versioned__factory.d.ts.map +1 -1
  351. package/dist/index.d.ts +12 -2
  352. package/dist/index.d.ts.map +1 -1
  353. package/dist/index.js +14 -4
  354. package/dist/index.js.map +1 -1
  355. package/package.json +6 -8
  356. package/dist/contracts/isms/routing/DomainRoutingIsmFactory.d.ts.map +0 -1
  357. package/dist/contracts/isms/routing/DomainRoutingIsmFactory.js.map +0 -1
  358. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory__factory.d.ts +0 -55
  359. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory__factory.d.ts.map +0 -1
  360. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory__factory.js +0 -83
  361. package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory__factory.js.map +0 -1
  362. /package/dist/contracts/isms/routing/{DomainRoutingIsmFactory.js → DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory.js} +0 -0
@@ -1,7 +1,7 @@
1
1
  import type { MockHyperlaneEnvironment, MockHyperlaneEnvironmentInterface } from "../../../contracts/mock/MockHyperlaneEnvironment";
2
2
  import type { Provider, TransactionRequest } from "@ethersproject/providers";
3
3
  import { Signer, ContractFactory, BigNumberish, Overrides } from "ethers";
4
- declare type MockHyperlaneEnvironmentConstructorParams = [signer?: Signer] | ConstructorParameters<typeof ContractFactory>;
4
+ type MockHyperlaneEnvironmentConstructorParams = [signer?: Signer] | ConstructorParameters<typeof ContractFactory>;
5
5
  export declare class MockHyperlaneEnvironment__factory extends ContractFactory {
6
6
  constructor(...args: MockHyperlaneEnvironmentConstructorParams);
7
7
  deploy(_originDomain: BigNumberish, _destinationDomain: BigNumberish, overrides?: Overrides & {
@@ -12,7 +12,7 @@ export declare class MockHyperlaneEnvironment__factory extends ContractFactory {
12
12
  }): TransactionRequest;
13
13
  attach(address: string): MockHyperlaneEnvironment;
14
14
  connect(signer: Signer): MockHyperlaneEnvironment__factory;
15
- static readonly bytecode = "0x608060405234801561001057600080fd5b5060405162005c4438038062005c448339810160408190526100319161079d565b6000805463ffffffff838116640100000000026001600160401b03199092169085161717815560405183906100659061074c565b63ffffffff9091168152602001604051809103906000f08015801561008e573d6000803e3d6000fd5b5090506000826040516100a09061074c565b63ffffffff9091168152602001604051809103906000f0801580156100c9573d6000803e3d6000fd5b506040516302cd9fb760e51b815263ffffffff851660048201526001600160a01b038083166024830152919250908316906359b3f6e090604401600060405180830381600087803b15801561011d57600080fd5b505af1158015610131573d6000803e3d6000fd5b50506040516302cd9fb760e51b815263ffffffff871660048201526001600160a01b038581166024830152841692506359b3f6e09150604401600060405180830381600087803b15801561018457600080fd5b505af1158015610198573d6000803e3d6000fd5b50505050306040516101a99061075a565b6001600160a01b039091168152602001604051809103906000f0801580156101d5573d6000803e3d6000fd5b506000805463ffffffff168152600260205260409081902080546001600160a01b0319166001600160a01b0393909316929092179091555130906102189061075a565b6001600160a01b039091168152602001604051809103906000f080158015610244573d6000803e3d6000fd5b5060008054640100000000900463ffffffff168152600260205260409081902080546001600160a01b0319166001600160a01b0393909316929092179091555161028d90610768565b604051809103906000f0801580156102a9573d6000803e3d6000fd5b506000805463ffffffff168152600360205260409081902080546001600160a01b0319166001600160a01b039390931692909217909155516102ea90610768565b604051809103906000f080158015610306573d6000803e3d6000fd5b5060008054640100000000900463ffffffff90811682526003602052604080832080546001600160a01b0319166001600160a01b039586161790558254909116825290819020549051637bca343d60e11b815290821660048201529083169063f794687a90602401600060405180830381600087803b15801561038857600080fd5b505af115801561039c573d6000803e3d6000fd5b505060008054640100000000900463ffffffff1681526003602052604090819020549051637bca343d60e11b81526001600160a01b039182166004820152908416925063f794687a9150602401600060405180830381600087803b15801561040357600080fd5b505af1158015610417573d6000803e3d6000fd5b50505063ffffffff80861660009081526001602052604080822080546001600160a01b038089166001600160a01b031992831617909255938816835281832080549187169190941617909255905190915061047190610776565b604051809103906000f08015801561048d573d6000803e3d6000fd5b509050600060405161049e90610776565b604051809103906000f0801580156104ba573d6000803e3d6000fd5b506000805463ffffffff16815260026020908152604080832054600390925291829020549151637c643b2f60e11b81526001600160a01b03888116600483015291821660248201529181166044830152306064830181905292935084169063f8c8765e90608401600060405180830381600087803b15801561053b57600080fd5b505af115801561054f573d6000803e3d6000fd5b505060008054640100000000900463ffffffff16815260026020908152604080832054600390925291829020549151637c643b2f60e11b81526001600160a01b0389811660048301529182166024820152918116604483015284811660648301528516925063f8c8765e9150608401600060405180830381600087803b1580156105d857600080fd5b505af11580156105ec573d6000803e3d6000fd5b50505050826001600160a01b031663b49c53a7876106138561074060201b61029e1760201c565b6040516001600160e01b031960e085901b16815263ffffffff9290921660048301526024820152604401600060405180830381600087803b15801561065757600080fd5b505af115801561066b573d6000803e3d6000fd5b50505050816001600160a01b031663b49c53a7886106928661074060201b61029e1760201c565b6040516001600160e01b031960e085901b16815263ffffffff9290921660048301526024820152604401600060405180830381600087803b1580156106d657600080fd5b505af11580156106ea573d6000803e3d6000fd5b5050505063ffffffff96871660009081526004602052604080822080546001600160a01b03199081166001600160a01b0397881617909155979098168152969096208054909516911617909255506107d0915050565b6001600160a01b031690565b61141f8062000afa83390190565b6113888062001f1983390190565b6103a480620032a183390190565b6125ff806200364583390190565b805163ffffffff8116811461079857600080fd5b919050565b600080604083850312156107b057600080fd5b6107b983610784565b91506107c760208401610784565b90509250929050565b61031a80620007e06000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063f11a367e11610050578063f11a367e14610142578063f9d2692d14610178578063f9f312ad1461018257600080fd5b80635a007b7e146100775780637a7eada3146100d6578063e9ee46951461010c575b600080fd5b6100ad6100853660046102b7565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100ad6100e43660046102b7565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100ad61011a3660046102b7565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100ad6101503660046102b7565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61018061018a565b005b61018061021d565b6000805463ffffffff168152600160205260408082205481517f1605c306000000000000000000000000000000000000000000000000000000008152915173ffffffffffffffffffffffffffffffffffffffff90911692631605c306926004808201939182900301818387803b15801561020357600080fd5b505af1158015610217573d6000803e3d6000fd5b50505050565b60008054640100000000900463ffffffff168152600160205260408082205481517f1605c306000000000000000000000000000000000000000000000000000000008152915173ffffffffffffffffffffffffffffffffffffffff90911692631605c306926004808201939182900301818387803b15801561020357600080fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b6000602082840312156102c957600080fd5b813563ffffffff811681146102dd57600080fd5b939250505056fea26469706673582212208034e3b2c77c3241dfadc390188b88e7013dd1809ee068aa875af93963d4dbe664736f6c6343000811003360a0604052600080546001600160601b031916905534801561002057600080fd5b5060405161141f38038061141f83398101604081905261003f9161004d565b63ffffffff1660805261007a565b60006020828403121561005f57600080fd5b815163ffffffff8116811461007357600080fd5b9392505050565b60805161137c6100a36000396000818161021801528181610a710152610c26015261137c6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806392d28b3d1161008c578063f794687a11610066578063f794687a146102b0578063fa31de0114610301578063fd10ebe514610314578063ffa1ad741461032457600080fd5b806392d28b3d1461023a578063a3b4919f1461025e578063d12164e41461029457600080fd5b80636b791ca1116100c85780636b791ca11461017e5780636e5f516e146101915780638209d312146101e65780638d3638f41461021357600080fd5b80631605c306146100ef578063522ae002146100f957806359b3f6e014610115575b600080fd5b6100f761033e565b005b61010261080081565b6040519081526020015b60405180910390f35b6100f7610123366004610cd5565b63ffffffff91909116600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6100f761018c366004610d55565b610660565b6000546101c1906c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010c565b6000546101fe90640100000000900463ffffffff1681565b60405163ffffffff909116815260200161010c565b6101fe7f000000000000000000000000000000000000000000000000000000000000000081565b61024d610248366004610ddf565b610833565b60405161010c959493929190610e66565b6101c161026c366004610ebe565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6000546101fe9068010000000000000000900463ffffffff1681565b6100f76102be366004610ee0565b6000805473ffffffffffffffffffffffffffffffffffffffff9092166c01000000000000000000000000026bffffffffffffffffffffffff909216919091179055565b61010261030f366004610efd565b61091c565b6000546101fe9063ffffffff1681565b61032c600081565b60405160ff909116815260200161010c565b6000805463ffffffff680100000000000000009182900481168352600260208181526040808620815160a0810183528154808716825264010000000081049096169381019390935273ffffffffffffffffffffffffffffffffffffffff9590940485169082015260018301549093166060840152810180546080840191906103c590610f57565b80601f01602080910402602001604051908101604052809291908181526020018280546103f190610f57565b801561043e5780601f106104135761010080835404028352916020019161043e565b820191906000526020600020905b81548152906001019060200180831161042157829003601f168201915b505050919092525050506060810151909150600061045b82610b17565b905073ffffffffffffffffffffffffffffffffffffffff811615610568578073ffffffffffffffffffffffffffffffffffffffff1663f7e83aee61049e85610bf5565b6040518263ffffffff1660e01b81526004016104ba9190610faa565b6020604051808303816000875af11580156104d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fd9190610fcb565b610568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f49534d20766572696679206661696c656400000000000000000000000000000060448201526064015b60405180910390fd5b826060015173ffffffffffffffffffffffffffffffffffffffff166356d5d47584602001516105c4866040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1690565b86608001516040518463ffffffff1660e01b81526004016105e793929190610fed565b600060405180830381600087803b15801561060157600080fd5b505af1158015610615573d6000803e3d6000fd5b50506000805468010000000000000000900463ffffffff1692509050600861063c8361101b565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050565b6040518060a001604052808763ffffffff1681526020018663ffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093909452505080546401000000009081900463ffffffff9081168352600260208181526040948590208751815492890151968901519085167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009093169290921795909316909302939093177fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff9384160217815560608501516001820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909316179091556080840151909250908201906107eb90826110e3565b505060008054640100000000900463ffffffff169150600461080c8361101b565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050505050565b600260208190526000918252604090912080546001820154928201805463ffffffff808416956401000000008504909116946801000000000000000090940473ffffffffffffffffffffffffffffffffffffffff90811694911692909161089990610f57565b80601f01602080910402602001604051908101604052809291908181526020018280546108c590610f57565b80156109125780601f106108e757610100808354040283529160200191610912565b820191906000526020600020905b8154815290600101906020018083116108f557829003601f168201915b5050505050905085565b600061080082111561098a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6d736720746f6f206c6f6e670000000000000000000000000000000000000000604482015260640161055f565b63ffffffff851660009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610a1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d697373696e672072656d6f7465206d61696c626f7800000000000000000000604482015260640161055f565b6000546040517f6b791ca100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831691636b791ca191610aa19163ffffffff16907f00000000000000000000000000000000000000000000000000000000000000009033908b908b908b906004016111fd565b600060405180830381600087803b158015610abb57600080fd5b505af1158015610acf573d6000803e3d6000fd5b50506000805463ffffffff169250905080610ae98361101b565b91906101000a81548163ffffffff021916908363ffffffff160217905550506000801b915050949350505050565b60008173ffffffffffffffffffffffffffffffffffffffff1663de523cf36040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b9e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610b9b9181019061128a565b60015b15610bc75773ffffffffffffffffffffffffffffffffffffffff811615610bc55792915050565b505b50506000546c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1690565b6060600082600001518360200151610c24856040015173ffffffffffffffffffffffffffffffffffffffff1690565b7f0000000000000000000000000000000000000000000000000000000000000000610c66876060015173ffffffffffffffffffffffffffffffffffffffff1690565b8760800151604051602001610c8197969594939291906112a7565b6040516020818303038152906040529050919050565b803563ffffffff81168114610cab57600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610cd257600080fd5b50565b60008060408385031215610ce857600080fd5b610cf183610c97565b91506020830135610d0181610cb0565b809150509250929050565b60008083601f840112610d1e57600080fd5b50813567ffffffffffffffff811115610d3657600080fd5b602083019150836020828501011115610d4e57600080fd5b9250929050565b60008060008060008060a08789031215610d6e57600080fd5b610d7787610c97565b9550610d8560208801610c97565b94506040870135610d9581610cb0565b93506060870135610da581610cb0565b9250608087013567ffffffffffffffff811115610dc157600080fd5b610dcd89828a01610d0c565b979a9699509497509295939492505050565b600060208284031215610df157600080fd5b5035919050565b60005b83811015610e13578181015183820152602001610dfb565b50506000910152565b60008151808452610e34816020860160208601610df8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b63ffffffff86811682528516602082015273ffffffffffffffffffffffffffffffffffffffff84811660408301528316606082015260a060808201819052600090610eb390830184610e1c565b979650505050505050565b600060208284031215610ed057600080fd5b610ed982610c97565b9392505050565b600060208284031215610ef257600080fd5b8135610ed981610cb0565b60008060008060608587031215610f1357600080fd5b610f1c85610c97565b935060208501359250604085013567ffffffffffffffff811115610f3f57600080fd5b610f4b87828801610d0c565b95989497509550505050565b600181811c90821680610f6b57607f821691505b602082108103610fa4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6040815260006040820152606060208201526000610ed96060830184610e1c565b600060208284031215610fdd57600080fd5b81518015158114610ed957600080fd5b63ffffffff841681528260208201526060604082015260006110126060830184610e1c565b95945050505050565b600063ffffffff80831681810361105b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6001019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f8211156110de57600081815260208120601f850160051c810160208610156110bb5750805b601f850160051c820191505b818110156110da578281556001016110c7565b5050505b505050565b815167ffffffffffffffff8111156110fd576110fd611065565b6111118161110b8454610f57565b84611094565b602080601f831160018114611164576000841561112e5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556110da565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156111b157888601518255948401946001909101908401611192565b50858210156111ed57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b63ffffffff87811682528616602082015273ffffffffffffffffffffffffffffffffffffffff85811660408301528416606082015260a06080820181905281018290526000828460c0840137600060c0848401015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168301019050979650505050505050565b60006020828403121561129c57600080fd5b8151610ed981610cb0565b7fff000000000000000000000000000000000000000000000000000000000000008860f81b16815260007fffffffff00000000000000000000000000000000000000000000000000000000808960e01b166001840152808860e01b166005840152866009840152808660e01b1660298401525083602d830152825161133381604d850160208701610df8565b91909101604d019897505050505050505056fea264697066735822122065b0f7b2155f8f53d2767c52080a8915df605ce13ec8e5c785cdf6c4e74abfb764736f6c6343000811003360806040523480156200001157600080fd5b506040516200138838038062001388833981016040819052620000349162000315565b62000040338262000047565b5062000347565b600054610100900460ff1615808015620000685750600054600160ff909116105b8062000098575062000085306200019160201b620009ec1760201c565b15801562000098575060005460ff166001145b620001015760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000125576000805461ff0019166101001790555b6200012f620001a0565b6200013a8362000208565b62000145826200025a565b80156200018c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b600054610100900460ff16620001fc5760405162461bcd60e51b815260206004820152602b60248201526000805160206200136883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000f8565b62000206620002ae565b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606680546001600160a01b0319166001600160a01b0383169081179091556040519081527f04d55a8be181fb8d75b76f2d48aa0b2ee40f47e53d6e61763eeeec46feea8a249060200160405180910390a150565b600054610100900460ff166200030a5760405162461bcd60e51b815260206004820152602b60248201526000805160206200136883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000f8565b620002063362000208565b6000602082840312156200032857600080fd5b81516001600160a01b03811681146200034057600080fd5b9392505050565b61101180620003576000396000f3fe6080604052600436106100d25760003560e01c80634e71d92d1161007f5780638da5cb5b116100595780638da5cb5b14610259578063a692979314610284578063f2fde38b146102b2578063fe173b97146102d257600080fd5b80634e71d92d146101e657806360fcef7c146101fb578063715018a61461024457600080fd5b80632f202650116100b05780632f2026501461017957806338af3eed14610199578063485cc955146101c657600080fd5b806311bf2c18146100d75780631c31f710146100ec5780631d16c8c81461010c575b600080fd5b6100ea6100e5366004610d83565b6102e7565b005b3480156100f857600080fd5b506100ea610107366004610dc9565b6104d2565b34801561011857600080fd5b5061014f610127366004610de4565b60656020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561018557600080fd5b506100ea610194366004610dff565b6104e6565b3480156101a557600080fd5b5060665461014f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d257600080fd5b506100ea6101e1366004610e74565b61056c565b3480156101f257600080fd5b506100ea610712565b34801561020757600080fd5b5061021b610216366004610de4565b6107dc565b604080516fffffffffffffffffffffffffffffffff938416815292909116602083015201610170565b34801561025057600080fd5b506100ea61090e565b34801561026557600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff1661014f565b34801561029057600080fd5b506102a461029f366004610ea7565b610922565b604051908152602001610170565b3480156102be57600080fd5b506100ea6102cd366004610dc9565b610938565b3480156102de57600080fd5b506102a4600a81565b60006102f38484610922565b90508034101561038a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f696e73756666696369656e7420696e746572636861696e20676173207061796d60448201527f656e74000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60006103968234610f00565b9050801561048f5760008373ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146103f8576040519150601f19603f3d011682016040523d82523d6000602084013e6103fd565b606091505b505090508061048d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f496e746572636861696e20676173207061796d656e7420726566756e6420666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152608401610381565b505b604080518581526020810184905287917ff715e66d2cd2a0179069dcda2a41a4da36a30e1aad12187fbb7c5d100afd621c910160405180910390a2505050505050565b6104da610a08565b6104e381610a89565b50565b6104ee610a08565b8060005b818110156105665761055484848381811061050f5761050f610f13565b6105259260206040909202019081019150610de4565b85858481811061053757610537610f13565b905060400201602001602081019061054f9190610dc9565b610b02565b8061055e81610f42565b9150506104f2565b50505050565b600054610100900460ff161580801561058c5750600054600160ff909116105b806105a65750303b1580156105a6575060005460ff166001145b610632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610381565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561069057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610698610b90565b6106a183610c2f565b6106aa82610a89565b801561070d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60665460405160009173ffffffffffffffffffffffffffffffffffffffff169047908381818185875af1925050503d806000811461076c576040519150601f19603f3d011682016040523d82523d6000602084013e610771565b606091505b50509050806104e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f217472616e7366657200000000000000000000000000000000000000000000006044820152606401610381565b63ffffffff8116600090815260656020526040812054819073ffffffffffffffffffffffffffffffffffffffff1680610871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21676173206f7261636c650000000000000000000000000000000000000000006044820152606401610381565b6040517f60fcef7c00000000000000000000000000000000000000000000000000000000815263ffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8216906360fcef7c906024016040805180830381865afa1580156108e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109049190610f9a565b9250925050915091565b610916610a08565b6109206000610c2f565b565b600061092f82600a610fc4565b90505b92915050565b610940610a08565b73ffffffffffffffffffffffffffffffffffffffff81166109e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610381565b6104e381610c2f565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60335473ffffffffffffffffffffffffffffffffffffffff163314610920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610381565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f04d55a8be181fb8d75b76f2d48aa0b2ee40f47e53d6e61763eeeec46feea8a249060200160405180910390a150565b63ffffffff821660008181526065602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f38b842e116ff320f6a79ba4cf434eee927fa156b226c65c90d62989de589b4e7910160405180910390a25050565b600054610100900460ff16610c27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610381565b610920610ca6565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610d3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610381565b61092033610c2f565b803563ffffffff81168114610d5a57600080fd5b919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610d5a57600080fd5b60008060008060808587031215610d9957600080fd5b84359350610da960208601610d46565b925060408501359150610dbe60608601610d5f565b905092959194509250565b600060208284031215610ddb57600080fd5b61092f82610d5f565b600060208284031215610df657600080fd5b61092f82610d46565b60008060208385031215610e1257600080fd5b823567ffffffffffffffff80821115610e2a57600080fd5b818501915085601f830112610e3e57600080fd5b813581811115610e4d57600080fd5b8660208260061b8501011115610e6257600080fd5b60209290920196919550909350505050565b60008060408385031215610e8757600080fd5b610e9083610d5f565b9150610e9e60208401610d5f565b90509250929050565b60008060408385031215610eba57600080fd5b610ec383610d46565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561093257610932610ed1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610f7357610f73610ed1565b5060010190565b80516fffffffffffffffffffffffffffffffff81168114610d5a57600080fd5b60008060408385031215610fad57600080fd5b610fb683610f7a565b9150610e9e60208401610f7a565b808202811582820484141761093257610932610ed156fea2646970667358221220c0c7e5463aed39a02073f1ebf4a03bb5c9fd30d0b97285dfad72394239fdc66c64736f6c63430008110033496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069608060405234801561001057600080fd5b506000805460ff191660011790556103778061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634fc3aa7c116100505780634fc3aa7c146100af5780636465e69f146100f0578063f7e83aee1461010a57600080fd5b80632852b71c1461006c5780632e0ed2341461008e575b600080fd5b6000546100799060ff1681565b60405190151581526020015b60405180910390f35b6100a161009c3660046101d7565b610126565b604051610085929190610219565b6100ee6100bd36600461027d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b005b6100f8600481565b60405160ff9091168152602001610085565b6100796101183660046102a6565b60005460ff16949350505050565b60408051600180825281830190925260609160009182916020808301908036833701905050905060008160008151811061016257610162610312565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101529150600190505b9250929050565b60008083601f8401126101a757600080fd5b50813567ffffffffffffffff8111156101bf57600080fd5b60208301915083602082850101111561018e57600080fd5b600080602083850312156101ea57600080fd5b823567ffffffffffffffff81111561020157600080fd5b61020d85828601610195565b90969095509350505050565b604080825283519082018190526000906020906060840190828701845b8281101561026857815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101610236565b50505060ff9490941692019190915250919050565b60006020828403121561028f57600080fd5b8135801515811461029f57600080fd5b9392505050565b600080600080604085870312156102bc57600080fd5b843567ffffffffffffffff808211156102d457600080fd5b6102e088838901610195565b909650945060208701359150808211156102f957600080fd5b5061030687828801610195565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea264697066735822122017c3918e1ebea8ac9a9de746c40c8b031b8fef948d0933d04030e580d6ee3bfa64736f6c63430008110033608060405234801561001057600080fd5b506125df806100206000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80638da5cb5b116100b2578063e9198bf911610081578063f2fde38b11610066578063f2fde38b1461028d578063f3c61d6b146102a0578063f8c8765e146102b357600080fd5b8063e9198bf914610267578063f1bd6f0a1461027a57600080fd5b80638da5cb5b146101f6578063b49c53a714610214578063d5438eae14610227578063de523cf31461024757600080fd5b8063440df4f4116100ee578063440df4f4146101b357806356d5d475146101c8578063715018a6146101db5780638cc02cab146101e357600080fd5b80630e72cc06146101205780632222b452146101355780632ead72f61461015b57806339bb4ad91461016e575b600080fd5b61013361012e366004611839565b6102c6565b005b61014861014336600461199d565b6102da565b6040519081526020015b60405180910390f35b610148610169366004611a22565b61032d565b60665461018e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610152565b6101bb61036f565b6040516101529190611a3d565b6101336101d6366004611a87565b61042a565b610133610522565b6101486101f1366004611b5a565b610536565b60335473ffffffffffffffffffffffffffffffffffffffff1661018e565b610133610222366004611bad565b610582565b60655461018e9073ffffffffffffffffffffffffffffffffffffffff1681565b60675461018e9073ffffffffffffffffffffffffffffffffffffffff1681565b610133610275366004611bd7565b610598565b610133610288366004611839565b61066f565b61013361029b366004611839565b610680565b6101336102ae366004611839565b610734565b6101336102c1366004611c43565b610745565b6102ce6108df565b6102d781610960565b50565b604051600090339063ffffffff8716907f11c97c784c298562a796345417aa40e1ce110e6b100f41b801ab23414f72d7e5908490a36103248561031f33878787610a6e565b610b22565b95945050505050565b6000610343609863ffffffff80851690610bcc16565b156103625761035c609863ffffffff80851690610bdf16565b92915050565b506000919050565b919050565b609880546060919060008167ffffffffffffffff81111561039257610392611868565b6040519080825280602002602001820160405280156103bb578160200160208202803683370190505b50905060005b82811015610422578381815481106103db576103db611c97565b906000526020600020015460001c8282815181106103fb576103fb611c97565b63ffffffff909216602092830291909101909101528061041a81611cf5565b9150506103c1565b509392505050565b60655473ffffffffffffffffffffffffffffffffffffffff1633146104b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f216d61696c626f7800000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b83836104bc8282610beb565b604051806080016040528060438152602001612542604391399061050d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a79190611d9b565b5061051a86868686610bff565b505050505050565b61052a6108df565b6105346000610d23565b565b604051600090339063ffffffff8616907f11c97c784c298562a796345417aa40e1ce110e6b100f41b801ab23414f72d7e5908490a361057a8461031f338686610d9a565b949350505050565b61058a6108df565b6105948282610dcc565b5050565b6105a06108df565b828114610609576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f216c656e6774680000000000000000000000000000000000000000000000000060448201526064016104a7565b8260005b8181101561051a5761065d86868381811061062a5761062a611c97565b905060200201602081019061063f9190611a22565b85858481811061065157610651611c97565b90506020020135610dcc565b610668600182611dae565b905061060d565b6106776108df565b6102d781610e26565b6106886108df565b73ffffffffffffffffffffffffffffffffffffffff811661072b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104a7565b6102d781610d23565b61073c6108df565b6102d781610f15565b600054610100900460ff16158080156107655750600054600160ff909116105b8061077f5750303b15801561077f575060005460ff166001145b61080b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016104a7565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561086957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61087585858585611004565b80156108d857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a7565b73ffffffffffffffffffffffffffffffffffffffff81161580610999575073ffffffffffffffffffffffffffffffffffffffff81163b15155b6109ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e7472616374000000000000000000000000000000000000000000000060448201526064016104a7565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ffec811ed4e60aebdaf7a79cad8a97196bf56e35362f039705598226d30c9d24890600090a250565b60408051600180825281830190925260609160009190816020015b610ab46040805160808101825260009181019182526060808201529081908152602001606081525090565b815260200190600190039081610a89579050509050610ad48585856110c5565b81600081518110610ae757610ae7611c97565b602002602001018190525085600082604051602001610b0893929190611e2b565b604051602081830303815290604052915050949350505050565b600080610b2e84611115565b6065546040517ffa31de0100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063fa31de0190610b8990879085908890600401611ef6565b6020604051808303816000875af1158015610ba8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057a9190611f1b565b6000610bd88383611180565b9392505050565b6000610bd8838361118c565b600081610bf78461032d565b149392505050565b6000610c0b8383611216565b90506000610c198484611250565b90506000826001811115610c2f57610c2f611dc1565b03610c99576000610c408585611268565b90506000610c4d826112a0565b9050828863ffffffff167fb689f7016112eaacc7edebd6ea5eb700790a103e79c39ce0118e075de87d797660405160405180910390a3610c918861031f858461134b565b50505061051a565b6001826001811115610cad57610cad611dc1565b03610d1b57806000610cbf868661137a565b9050610ccb82826113b2565b60405173ffffffffffffffffffffffffffffffffffffffff83169063ffffffff8a16907fc4416e2fcdf8514178829e5ead195eb13f3241ea71c0e38f998868fe81e4226990600090a3505061051a565b61051a611f34565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60608360008484604051602001610db4949392919061204d565b60405160208183030381529060405290509392505050565b610de2609863ffffffff8085169084906113ef16565b8163ffffffff167f97fd51fef1f80c854cbd0150c248e8b2ac4ecdc97cc05e742b5f61c9f4dc645882604051610e1a91815260200190565b60405180910390a25050565b8073ffffffffffffffffffffffffffffffffffffffff81163b610ea5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e7472616374000000000000000000000000000000000000000000000060448201526064016104a7565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fb87f5a0bface22cde699143559fb99f990ae54eea236995fc54178af91af859f90600090a25050565b8073ffffffffffffffffffffffffffffffffffffffff81163b610f94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e7472616374000000000000000000000000000000000000000000000060448201526064016104a7565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517f7a61e573722ff8b205c8962b59d37e7d30573f368965597a844a94872204ebd790600090a25050565b600054610100900460ff1661109b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104a7565b6110a484610f15565b6110ad83610e26565b6110b682610960565b6110bf81610d23565b50505050565b6110f06040805160808101825260009181019182526060808201529081908152602001606081525090565b604051806040016040528061110586866113fa565b8152602001929092525092915050565b60006111208261032d565b90506000801b811415604051806080016040528060438152602001612542604391399061117a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a79190611d9b565b50919050565b6000610bd8838361144c565b6000818152600283016020526040812054801515806111b057506111b08484611180565b610bd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b6579000060448201526064016104a7565b6000828261122660016040612128565b81811061123557611235611c97565b919091013560f81c90506001811115610bd857610bd8611dc1565b600061125f602082848661213b565b610bd891612165565b606060006112768484611216565b600181111561128757611287611dc1565b1461129457611294611f34565b610324828401846121d4565b8051606090600090818167ffffffffffffffff8111156112c2576112c2611868565b6040519080825280602002602001820160405280156112f557816020015b60608152602001906001900390816112e05790505b5090505b8183101561057a5761132385848151811061131657611316611c97565b6020026020010151611464565b81848151811061133557611335611c97565b60200260200101819052508260010192506112f9565b60608260018360405160200161136393929190612393565b604051602081830303815290604052905092915050565b606060016113888484611216565b600181111561139957611399611dc1565b146113a6576113a6611f34565b61032482840184612429565b80516000905b808210156110bf576113e3848484815181106113d6576113d6611c97565b602002602001015161149f565b508160010191506113b8565b6110bf8383836114e3565b6040805180820182526000808252606060208084018290528451808601865292835291820152825180840190935273ffffffffffffffffffffffffffffffffffffffff85168352820183905290610bd8565b60008181526001830160205260408120541515610bd8565b606081602001516114788360000151611500565b6040516020016114899291906124f6565b6040516020818303038152906040529050919050565b6060610bd8838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250611513565b6000828152600284016020526040812082905561057a848461162c565b805160609061035c908360200151611638565b6060824710156115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016104a7565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516115ce9190612525565b60006040518083038185875af1925050503d806000811461160b576040519150601f19603f3d011682016040523d82523d6000602084013e611610565b606091505b50915091506116218783838761165d565b979650505050505050565b6000610bd883836116fd565b6060610bd883836040518060600160405280602581526020016125856025913961174c565b606083156116f35782516000036116ec5773ffffffffffffffffffffffffffffffffffffffff85163b6116ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104a7565b508161057a565b61057a83836117d1565b60008181526001830160205260408120546117445750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561035c565b50600061035c565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516117769190612525565b600060405180830381855afa9150503d80600081146117b1576040519150601f19603f3d011682016040523d82523d6000602084013e6117b6565b606091505b50915091506117c78683838761165d565b9695505050505050565b8151156117e15781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a79190611d9b565b803573ffffffffffffffffffffffffffffffffffffffff8116811461036a57600080fd5b60006020828403121561184b57600080fd5b610bd882611815565b803563ffffffff8116811461036a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156118ba576118ba611868565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561190757611907611868565b604052919050565b600082601f83011261192057600080fd5b813567ffffffffffffffff81111561193a5761193a611868565b61196b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016118c0565b81815284602083860101111561198057600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156119b357600080fd5b6119bc85611854565b93506119ca60208601611815565b9250604085013567ffffffffffffffff808211156119e757600080fd5b6119f38883890161190f565b93506060870135915080821115611a0957600080fd5b50611a168782880161190f565b91505092959194509250565b600060208284031215611a3457600080fd5b610bd882611854565b6020808252825182820181905260009190848201906040850190845b81811015611a7b57835163ffffffff1683529284019291840191600101611a59565b50909695505050505050565b60008060008060608587031215611a9d57600080fd5b611aa685611854565b935060208501359250604085013567ffffffffffffffff80821115611aca57600080fd5b818701915087601f830112611ade57600080fd5b813581811115611aed57600080fd5b886020828501011115611aff57600080fd5b95989497505060200194505050565b60008083601f840112611b2057600080fd5b50813567ffffffffffffffff811115611b3857600080fd5b6020830191508360208260051b8501011115611b5357600080fd5b9250929050565b600080600060408486031215611b6f57600080fd5b611b7884611854565b9250602084013567ffffffffffffffff811115611b9457600080fd5b611ba086828701611b0e565b9497909650939450505050565b60008060408385031215611bc057600080fd5b611bc983611854565b946020939093013593505050565b60008060008060408587031215611bed57600080fd5b843567ffffffffffffffff80821115611c0557600080fd5b611c1188838901611b0e565b90965094506020870135915080821115611c2a57600080fd5b50611c3787828801611b0e565b95989497509550505050565b60008060008060808587031215611c5957600080fd5b611c6285611815565b9350611c7060208601611815565b9250611c7e60408601611815565b9150611c8c60608601611815565b905092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611d2657611d26611cc6565b5060010190565b60005b83811015611d48578181015183820152602001611d30565b50506000910152565b60008151808452611d69816020860160208601611d2d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610bd86020830184611d51565b8082018082111561035c5761035c611cc6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110611e27577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600060608083018684526020611e4381860188611df0565b60408381870152828751808552608094508488019150848160051b890101848a0160005b83811015611ee4578a83037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80018552815180518785528051888601528801518a8501889052611eb88a860182611d51565b91890151858303868b0152919050611ed08183611d51565b968901969450505090860190600101611e67565b50909c9b505050505050505050505050565b63ffffffff841681528260208201526060604082015260006103246060830184611d51565b600060208284031215611f2d57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112611f9757600080fd5b90910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611fd557600080fd5b830160208101925035905067ffffffffffffffff811115611ff557600080fd5b803603821315611b5357600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006060808301878452602061206581860189611df0565b604085810184905291869052608091828601600588901b870184018960005b8a811015611ee4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a84030184526120bd828d611f63565b6120c78182611f63565b8685528035878601526120dc88820182611fa0565b9150878b8701526120f08a87018383612004565b9150506120ff88830183611fa0565b925085820389870152612113828483612004565b96890196955050509186019150600101612084565b8181038181111561035c5761035c611cc6565b6000808585111561214b57600080fd5b8386111561215857600080fd5b5050820193919092039150565b8035602083101561035c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b80356002811061036a57600080fd5b600067ffffffffffffffff8211156121ca576121ca611868565b5060051b60200190565b6000806000606084860312156121e957600080fd5b833592506121f9602085016121a1565b915067ffffffffffffffff6040850135111561221457600080fd5b6040840135840185601f82011261222a57600080fd5b61223c61223782356121b0565b6118c0565b81358082526020808301929160051b84010188101561225a57600080fd5b602083015b6020843560051b8501018110156123855767ffffffffffffffff8135111561228657600080fd5b803584017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604081838d030112156122bd57600080fd5b6122c5611897565b67ffffffffffffffff602084013511156122de57600080fd5b60208301358301604083828f030112156122f757600080fd5b6122ff611897565b92506020810135835267ffffffffffffffff6040820135111561232157600080fd5b6123348d6020604084013584010161190f565b60208401525081815267ffffffffffffffff6040840135111561235657600080fd5b6123698c6020604086013586010161190f565b602082015280865250505060208301925060208101905061225f565b508093505050509250925092565b60006060820185835260206123aa81850187611df0565b6060604085015281855180845260808601915060808160051b870101935082870160005b8281101561241a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80888703018452612408868351611d51565b955092840192908401906001016123ce565b50939998505050505050505050565b60008060006060848603121561243e57600080fd5b83359250602061244f8186016121a1565b9250604085013567ffffffffffffffff8082111561246c57600080fd5b818701915087601f83011261248057600080fd5b813561248e612237826121b0565b81815260059190911b8301840190848101908a8311156124ad57600080fd5b8585015b838110156124e5578035858111156124c95760008081fd5b6124d78d89838a010161190f565b8452509186019186016124b1565b508096505050505050509250925092565b60008351612508818460208801611d2d565b83519083019061251c818360208801611d2d565b01949350505050565b60008251612537818460208701611d2d565b919091019291505056fe4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e2e2044696420796f7520737065636966792074686520726967687420646f6d61696e2049443f416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564a26469706673582212209c66069227b42b4fca2a0189103b448e8ac3091670fffe8af86dca32ade2822a64736f6c63430008110033";
15
+ static readonly bytecode = "0x608060405234801561001057600080fd5b5060405162005f8438038062005f848339810160408190526100319161079d565b6000805463ffffffff838116640100000000026001600160401b03199092169085161717815560405183906100659061074c565b63ffffffff9091168152602001604051809103906000f08015801561008e573d6000803e3d6000fd5b5090506000826040516100a09061074c565b63ffffffff9091168152602001604051809103906000f0801580156100c9573d6000803e3d6000fd5b506040516302cd9fb760e51b815263ffffffff851660048201526001600160a01b038083166024830152919250908316906359b3f6e090604401600060405180830381600087803b15801561011d57600080fd5b505af1158015610131573d6000803e3d6000fd5b50506040516302cd9fb760e51b815263ffffffff871660048201526001600160a01b038581166024830152841692506359b3f6e09150604401600060405180830381600087803b15801561018457600080fd5b505af1158015610198573d6000803e3d6000fd5b50505050306040516101a99061075a565b6001600160a01b039091168152602001604051809103906000f0801580156101d5573d6000803e3d6000fd5b506000805463ffffffff168152600260205260409081902080546001600160a01b0319166001600160a01b0393909316929092179091555130906102189061075a565b6001600160a01b039091168152602001604051809103906000f080158015610244573d6000803e3d6000fd5b5060008054640100000000900463ffffffff168152600260205260409081902080546001600160a01b0319166001600160a01b0393909316929092179091555161028d90610768565b604051809103906000f0801580156102a9573d6000803e3d6000fd5b506000805463ffffffff168152600360205260409081902080546001600160a01b0319166001600160a01b039390931692909217909155516102ea90610768565b604051809103906000f080158015610306573d6000803e3d6000fd5b5060008054640100000000900463ffffffff90811682526003602052604080832080546001600160a01b0319166001600160a01b039586161790558254909116825290819020549051637bca343d60e11b815290821660048201529083169063f794687a90602401600060405180830381600087803b15801561038857600080fd5b505af115801561039c573d6000803e3d6000fd5b505060008054640100000000900463ffffffff1681526003602052604090819020549051637bca343d60e11b81526001600160a01b039182166004820152908416925063f794687a9150602401600060405180830381600087803b15801561040357600080fd5b505af1158015610417573d6000803e3d6000fd5b50505063ffffffff80861660009081526001602052604080822080546001600160a01b038089166001600160a01b031992831617909255938816835281832080549187169190941617909255905190915061047190610776565b604051809103906000f08015801561048d573d6000803e3d6000fd5b509050600060405161049e90610776565b604051809103906000f0801580156104ba573d6000803e3d6000fd5b506000805463ffffffff16815260026020908152604080832054600390925291829020549151637c643b2f60e11b81526001600160a01b03888116600483015291821660248201529181166044830152306064830181905292935084169063f8c8765e90608401600060405180830381600087803b15801561053b57600080fd5b505af115801561054f573d6000803e3d6000fd5b505060008054640100000000900463ffffffff16815260026020908152604080832054600390925291829020549151637c643b2f60e11b81526001600160a01b0389811660048301529182166024820152918116604483015284811660648301528516925063f8c8765e9150608401600060405180830381600087803b1580156105d857600080fd5b505af11580156105ec573d6000803e3d6000fd5b50505050826001600160a01b031663b49c53a7876106138561074060201b61029e1760201c565b6040516001600160e01b031960e085901b16815263ffffffff9290921660048301526024820152604401600060405180830381600087803b15801561065757600080fd5b505af115801561066b573d6000803e3d6000fd5b50505050816001600160a01b031663b49c53a7886106928661074060201b61029e1760201c565b6040516001600160e01b031960e085901b16815263ffffffff9290921660048301526024820152604401600060405180830381600087803b1580156106d657600080fd5b505af11580156106ea573d6000803e3d6000fd5b5050505063ffffffff96871660009081526004602052604080822080546001600160a01b03199081166001600160a01b0397881617909155979098168152969096208054909516911617909255506107d0915050565b6001600160a01b031690565b61141f8062000afa83390190565b6116388062001f1983390190565b6103a4806200355183390190565b61268f80620038f583390190565b805163ffffffff8116811461079857600080fd5b919050565b600080604083850312156107b057600080fd5b6107b983610784565b91506107c760208401610784565b90509250929050565b61031a80620007e06000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063f11a367e11610050578063f11a367e14610142578063f9d2692d14610178578063f9f312ad1461018257600080fd5b80635a007b7e146100775780637a7eada3146100d6578063e9ee46951461010c575b600080fd5b6100ad6100853660046102b7565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100ad6100e43660046102b7565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100ad61011a3660046102b7565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100ad6101503660046102b7565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61018061018a565b005b61018061021d565b6000805463ffffffff168152600160205260408082205481517f1605c306000000000000000000000000000000000000000000000000000000008152915173ffffffffffffffffffffffffffffffffffffffff90911692631605c306926004808201939182900301818387803b15801561020357600080fd5b505af1158015610217573d6000803e3d6000fd5b50505050565b60008054640100000000900463ffffffff168152600160205260408082205481517f1605c306000000000000000000000000000000000000000000000000000000008152915173ffffffffffffffffffffffffffffffffffffffff90911692631605c306926004808201939182900301818387803b15801561020357600080fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b6000602082840312156102c957600080fd5b813563ffffffff811681146102dd57600080fd5b939250505056fea2646970667358221220256e8ff7308409572211f59609b34df9592549afad1e4019f005eed2c1f9ed6264736f6c6343000811003360a0604052600080546001600160601b031916905534801561002057600080fd5b5060405161141f38038061141f83398101604081905261003f9161004d565b63ffffffff1660805261007a565b60006020828403121561005f57600080fd5b815163ffffffff8116811461007357600080fd5b9392505050565b60805161137c6100a36000396000818161021801528181610a710152610c26015261137c6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806392d28b3d1161008c578063f794687a11610066578063f794687a146102b0578063fa31de0114610301578063fd10ebe514610314578063ffa1ad741461032457600080fd5b806392d28b3d1461023a578063a3b4919f1461025e578063d12164e41461029457600080fd5b80636b791ca1116100c85780636b791ca11461017e5780636e5f516e146101915780638209d312146101e65780638d3638f41461021357600080fd5b80631605c306146100ef578063522ae002146100f957806359b3f6e014610115575b600080fd5b6100f761033e565b005b61010261080081565b6040519081526020015b60405180910390f35b6100f7610123366004610cd5565b63ffffffff91909116600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6100f761018c366004610d55565b610660565b6000546101c1906c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010c565b6000546101fe90640100000000900463ffffffff1681565b60405163ffffffff909116815260200161010c565b6101fe7f000000000000000000000000000000000000000000000000000000000000000081565b61024d610248366004610ddf565b610833565b60405161010c959493929190610e66565b6101c161026c366004610ebe565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6000546101fe9068010000000000000000900463ffffffff1681565b6100f76102be366004610ee0565b6000805473ffffffffffffffffffffffffffffffffffffffff9092166c01000000000000000000000000026bffffffffffffffffffffffff909216919091179055565b61010261030f366004610efd565b61091c565b6000546101fe9063ffffffff1681565b61032c600081565b60405160ff909116815260200161010c565b6000805463ffffffff680100000000000000009182900481168352600260208181526040808620815160a0810183528154808716825264010000000081049096169381019390935273ffffffffffffffffffffffffffffffffffffffff9590940485169082015260018301549093166060840152810180546080840191906103c590610f57565b80601f01602080910402602001604051908101604052809291908181526020018280546103f190610f57565b801561043e5780601f106104135761010080835404028352916020019161043e565b820191906000526020600020905b81548152906001019060200180831161042157829003601f168201915b505050919092525050506060810151909150600061045b82610b17565b905073ffffffffffffffffffffffffffffffffffffffff811615610568578073ffffffffffffffffffffffffffffffffffffffff1663f7e83aee61049e85610bf5565b6040518263ffffffff1660e01b81526004016104ba9190610faa565b6020604051808303816000875af11580156104d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fd9190610fcb565b610568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f49534d20766572696679206661696c656400000000000000000000000000000060448201526064015b60405180910390fd5b826060015173ffffffffffffffffffffffffffffffffffffffff166356d5d47584602001516105c4866040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1690565b86608001516040518463ffffffff1660e01b81526004016105e793929190610fed565b600060405180830381600087803b15801561060157600080fd5b505af1158015610615573d6000803e3d6000fd5b50506000805468010000000000000000900463ffffffff1692509050600861063c8361101b565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050565b6040518060a001604052808763ffffffff1681526020018663ffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093909452505080546401000000009081900463ffffffff9081168352600260208181526040948590208751815492890151968901519085167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009093169290921795909316909302939093177fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff9384160217815560608501516001820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909316179091556080840151909250908201906107eb90826110e3565b505060008054640100000000900463ffffffff169150600461080c8361101b565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050505050565b600260208190526000918252604090912080546001820154928201805463ffffffff808416956401000000008504909116946801000000000000000090940473ffffffffffffffffffffffffffffffffffffffff90811694911692909161089990610f57565b80601f01602080910402602001604051908101604052809291908181526020018280546108c590610f57565b80156109125780601f106108e757610100808354040283529160200191610912565b820191906000526020600020905b8154815290600101906020018083116108f557829003601f168201915b5050505050905085565b600061080082111561098a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6d736720746f6f206c6f6e670000000000000000000000000000000000000000604482015260640161055f565b63ffffffff851660009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610a1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d697373696e672072656d6f7465206d61696c626f7800000000000000000000604482015260640161055f565b6000546040517f6b791ca100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831691636b791ca191610aa19163ffffffff16907f00000000000000000000000000000000000000000000000000000000000000009033908b908b908b906004016111fd565b600060405180830381600087803b158015610abb57600080fd5b505af1158015610acf573d6000803e3d6000fd5b50506000805463ffffffff169250905080610ae98361101b565b91906101000a81548163ffffffff021916908363ffffffff160217905550506000801b915050949350505050565b60008173ffffffffffffffffffffffffffffffffffffffff1663de523cf36040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b9e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610b9b9181019061128a565b60015b15610bc75773ffffffffffffffffffffffffffffffffffffffff811615610bc55792915050565b505b50506000546c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1690565b6060600082600001518360200151610c24856040015173ffffffffffffffffffffffffffffffffffffffff1690565b7f0000000000000000000000000000000000000000000000000000000000000000610c66876060015173ffffffffffffffffffffffffffffffffffffffff1690565b8760800151604051602001610c8197969594939291906112a7565b6040516020818303038152906040529050919050565b803563ffffffff81168114610cab57600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610cd257600080fd5b50565b60008060408385031215610ce857600080fd5b610cf183610c97565b91506020830135610d0181610cb0565b809150509250929050565b60008083601f840112610d1e57600080fd5b50813567ffffffffffffffff811115610d3657600080fd5b602083019150836020828501011115610d4e57600080fd5b9250929050565b60008060008060008060a08789031215610d6e57600080fd5b610d7787610c97565b9550610d8560208801610c97565b94506040870135610d9581610cb0565b93506060870135610da581610cb0565b9250608087013567ffffffffffffffff811115610dc157600080fd5b610dcd89828a01610d0c565b979a9699509497509295939492505050565b600060208284031215610df157600080fd5b5035919050565b60005b83811015610e13578181015183820152602001610dfb565b50506000910152565b60008151808452610e34816020860160208601610df8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b63ffffffff86811682528516602082015273ffffffffffffffffffffffffffffffffffffffff84811660408301528316606082015260a060808201819052600090610eb390830184610e1c565b979650505050505050565b600060208284031215610ed057600080fd5b610ed982610c97565b9392505050565b600060208284031215610ef257600080fd5b8135610ed981610cb0565b60008060008060608587031215610f1357600080fd5b610f1c85610c97565b935060208501359250604085013567ffffffffffffffff811115610f3f57600080fd5b610f4b87828801610d0c565b95989497509550505050565b600181811c90821680610f6b57607f821691505b602082108103610fa4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6040815260006040820152606060208201526000610ed96060830184610e1c565b600060208284031215610fdd57600080fd5b81518015158114610ed957600080fd5b63ffffffff841681528260208201526060604082015260006110126060830184610e1c565b95945050505050565b600063ffffffff80831681810361105b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6001019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f8211156110de57600081815260208120601f850160051c810160208610156110bb5750805b601f850160051c820191505b818110156110da578281556001016110c7565b5050505b505050565b815167ffffffffffffffff8111156110fd576110fd611065565b6111118161110b8454610f57565b84611094565b602080601f831160018114611164576000841561112e5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556110da565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156111b157888601518255948401946001909101908401611192565b50858210156111ed57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b63ffffffff87811682528616602082015273ffffffffffffffffffffffffffffffffffffffff85811660408301528416606082015260a06080820181905281018290526000828460c0840137600060c0848401015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168301019050979650505050505050565b60006020828403121561129c57600080fd5b8151610ed981610cb0565b7fff000000000000000000000000000000000000000000000000000000000000008860f81b16815260007fffffffff00000000000000000000000000000000000000000000000000000000808960e01b166001840152808860e01b166005840152866009840152808660e01b1660298401525083602d830152825161133381604d850160208701610df8565b91909101604d019897505050505050505056fea264697066735822122065b0f7b2155f8f53d2767c52080a8915df605ce13ec8e5c785cdf6c4e74abfb764736f6c6343000811003360806040523480156200001157600080fd5b506040516200163838038062001638833981016040819052620000349162000315565b62000040338262000047565b5062000347565b600054610100900460ff1615808015620000685750600054600160ff909116105b8062000098575062000085306200019160201b620009ed1760201c565b15801562000098575060005460ff166001145b620001015760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000125576000805461ff0019166101001790555b6200012f620001a0565b6200013a8362000208565b62000145826200025a565b80156200018c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b600054610100900460ff16620001fc5760405162461bcd60e51b815260206004820152602b60248201526000805160206200161883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000f8565b62000206620002ae565b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606680546001600160a01b0319166001600160a01b0383169081179091556040519081527f04d55a8be181fb8d75b76f2d48aa0b2ee40f47e53d6e61763eeeec46feea8a249060200160405180910390a150565b600054610100900460ff166200030a5760405162461bcd60e51b815260206004820152602b60248201526000805160206200161883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000f8565b620002063362000208565b6000602082840312156200032857600080fd5b81516001600160a01b03811681146200034057600080fd5b9392505050565b6112c180620003576000396000f3fe6080604052600436106100d25760003560e01c80634e71d92d1161007f5780638da5cb5b116100595780638da5cb5b14610259578063a692979314610284578063f2fde38b146102b2578063fe173b97146102d257600080fd5b80634e71d92d146101e657806360fcef7c146101fb578063715018a61461024457600080fd5b80632f202650116100b05780632f2026501461017957806338af3eed14610199578063485cc955146101c657600080fd5b806311bf2c18146100d75780631c31f710146100ec5780631d16c8c81461010c575b600080fd5b6100ea6100e5366004610f24565b6102e7565b005b3480156100f857600080fd5b506100ea610107366004610f6a565b6104d2565b34801561011857600080fd5b5061014f610127366004610f85565b60656020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561018557600080fd5b506100ea610194366004610fa0565b6104e6565b3480156101a557600080fd5b5060665461014f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d257600080fd5b506100ea6101e1366004611015565b61056c565b3480156101f257600080fd5b506100ea610712565b34801561020757600080fd5b5061021b610216366004610f85565b6107dc565b604080516fffffffffffffffffffffffffffffffff938416815292909116602083015201610170565b34801561025057600080fd5b506100ea61090f565b34801561026557600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff1661014f565b34801561029057600080fd5b506102a461029f366004611048565b610923565b604051908152602001610170565b3480156102be57600080fd5b506100ea6102cd366004610f6a565b610939565b3480156102de57600080fd5b506102a4600a81565b60006102f38484610923565b90508034101561038a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f696e73756666696369656e7420696e746572636861696e20676173207061796d60448201527f656e74000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b600061039682346110a1565b9050801561048f5760008373ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146103f8576040519150601f19603f3d011682016040523d82523d6000602084013e6103fd565b606091505b505090508061048d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f496e746572636861696e20676173207061796d656e7420726566756e6420666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152608401610381565b505b604080518581526020810184905287917ff715e66d2cd2a0179069dcda2a41a4da36a30e1aad12187fbb7c5d100afd621c910160405180910390a2505050505050565b6104da610a09565b6104e381610a8a565b50565b6104ee610a09565b8060005b818110156105665761055484848381811061050f5761050f6110b4565b6105259260206040909202019081019150610f85565b858584818110610537576105376110b4565b905060400201602001602081019061054f9190610f6a565b610b03565b8061055e816110e3565b9150506104f2565b50505050565b600054610100900460ff161580801561058c5750600054600160ff909116105b806105a65750303b1580156105a6575060005460ff166001145b610632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610381565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561069057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610698610b91565b6106a183610c30565b6106aa82610a8a565b801561070d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60665460405160009173ffffffffffffffffffffffffffffffffffffffff169047908381818185875af1925050503d806000811461076c576040519150601f19603f3d011682016040523d82523d6000602084013e610771565b606091505b50509050806104e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f217472616e7366657200000000000000000000000000000000000000000000006044820152606401610381565b63ffffffff81166000818152606560205260408120549091829173ffffffffffffffffffffffffffffffffffffffff16908115159061081a90610ca7565b60405160200161082a919061113f565b60405160208183030381529060405290610871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038191906111aa565b506040517f60fcef7c00000000000000000000000000000000000000000000000000000000815263ffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8216906360fcef7c906024016040805180830381865afa1580156108e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610905919061121b565b9250925050915091565b610917610a09565b6109216000610c30565b565b600061093082600a611245565b90505b92915050565b610941610a09565b73ffffffffffffffffffffffffffffffffffffffff81166109e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610381565b6104e381610c30565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60335473ffffffffffffffffffffffffffffffffffffffff163314610921576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610381565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f04d55a8be181fb8d75b76f2d48aa0b2ee40f47e53d6e61763eeeec46feea8a249060200160405180910390a150565b63ffffffff821660008181526065602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f38b842e116ff320f6a79ba4cf434eee927fa156b226c65c90d62989de589b4e7910160405180910390a25050565b600054610100900460ff16610c28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610381565b610921610d65565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606000610cb483610e05565b600101905060008167ffffffffffffffff811115610cd457610cd461125c565b6040519080825280601f01601f191660200182016040528015610cfe576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610d0857509392505050565b600054610100900460ff16610dfc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610381565b61092133610c30565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310610e4e577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310610e7a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610e9857662386f26fc10000830492506010015b6305f5e1008310610eb0576305f5e100830492506008015b6127108310610ec457612710830492506004015b60648310610ed6576064830492506002015b600a83106109335760010192915050565b803563ffffffff81168114610efb57600080fd5b919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610efb57600080fd5b60008060008060808587031215610f3a57600080fd5b84359350610f4a60208601610ee7565b925060408501359150610f5f60608601610f00565b905092959194509250565b600060208284031215610f7c57600080fd5b61093082610f00565b600060208284031215610f9757600080fd5b61093082610ee7565b60008060208385031215610fb357600080fd5b823567ffffffffffffffff80821115610fcb57600080fd5b818501915085601f830112610fdf57600080fd5b813581811115610fee57600080fd5b8660208260061b850101111561100357600080fd5b60209290920196919550909350505050565b6000806040838503121561102857600080fd5b61103183610f00565b915061103f60208401610f00565b90509250929050565b6000806040838503121561105b57600080fd5b61106483610ee7565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561093357610933611072565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361111457611114611072565b5060010190565b60005b8381101561113657818101518382015260200161111e565b50506000910152565b7f436f6e666967757265642049475020646f65736e277420737570706f7274206481527f6f6d61696e20000000000000000000000000000000000000000000000000000060208201526000825161119d81602685016020870161111b565b9190910160260192915050565b60208152600082518060208401526111c981604085016020870161111b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b80516fffffffffffffffffffffffffffffffff81168114610efb57600080fd5b6000806040838503121561122e57600080fd5b611237836111fb565b915061103f602084016111fb565b808202811582820484141761093357610933611072565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea26469706673582212202f82fbe9e6a228aa8f469fd8afecb32fce0023b4f54a632c347db98cbd8b640f64736f6c63430008110033496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069608060405234801561001057600080fd5b506000805460ff191660011790556103778061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634fc3aa7c116100505780634fc3aa7c146100af5780636465e69f146100f0578063f7e83aee1461010a57600080fd5b80632852b71c1461006c5780632e0ed2341461008e575b600080fd5b6000546100799060ff1681565b60405190151581526020015b60405180910390f35b6100a161009c3660046101d7565b610126565b604051610085929190610219565b6100ee6100bd36600461027d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b005b6100f8600481565b60405160ff9091168152602001610085565b6100796101183660046102a6565b60005460ff16949350505050565b60408051600180825281830190925260609160009182916020808301908036833701905050905060008160008151811061016257610162610312565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101529150600190505b9250929050565b60008083601f8401126101a757600080fd5b50813567ffffffffffffffff8111156101bf57600080fd5b60208301915083602082850101111561018e57600080fd5b600080602083850312156101ea57600080fd5b823567ffffffffffffffff81111561020157600080fd5b61020d85828601610195565b90969095509350505050565b604080825283519082018190526000906020906060840190828701845b8281101561026857815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101610236565b50505060ff9490941692019190915250919050565b60006020828403121561028f57600080fd5b8135801515811461029f57600080fd5b9392505050565b600080600080604085870312156102bc57600080fd5b843567ffffffffffffffff808211156102d457600080fd5b6102e088838901610195565b909650945060208701359150808211156102f957600080fd5b5061030687828801610195565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea264697066735822122017c3918e1ebea8ac9a9de746c40c8b031b8fef948d0933d04030e580d6ee3bfa64736f6c63430008110033608060405234801561001057600080fd5b5061266f806100206000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80638da5cb5b116100b2578063e9198bf911610081578063f2fde38b11610066578063f2fde38b1461028d578063f3c61d6b146102a0578063f8c8765e146102b357600080fd5b8063e9198bf914610267578063f1bd6f0a1461027a57600080fd5b80638da5cb5b146101f6578063b49c53a714610214578063d5438eae14610227578063de523cf31461024757600080fd5b8063440df4f4116100ee578063440df4f4146101b357806356d5d475146101c8578063715018a6146101db5780638cc02cab146101e357600080fd5b80630e72cc06146101205780632222b452146101355780632ead72f61461015b57806339bb4ad91461016e575b600080fd5b61013361012e3660046118d0565b6102c6565b005b610148610143366004611a34565b6102da565b6040519081526020015b60405180910390f35b610148610169366004611ab9565b61032d565b60665461018e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610152565b6101bb61034c565b6040516101529190611ad4565b6101336101d6366004611b1e565b61035d565b610133610455565b6101486101f1366004611bea565b610469565b60335473ffffffffffffffffffffffffffffffffffffffff1661018e565b610133610222366004611c3d565b6104ad565b60655461018e9073ffffffffffffffffffffffffffffffffffffffff1681565b60675461018e9073ffffffffffffffffffffffffffffffffffffffff1681565b610133610275366004611c67565b6104c3565b6101336102883660046118d0565b61059a565b61013361029b3660046118d0565b6105ab565b6101336102ae3660046118d0565b61065f565b6101336102c1366004611cd3565b610670565b6102ce61080a565b6102d78161088b565b50565b604051600090339063ffffffff8716907f11c97c784c298562a796345417aa40e1ce110e6b100f41b801ab23414f72d7e5908490a36103248561031f33878787610999565b610a4d565b95945050505050565b600080610344609863ffffffff80861690610b0116565b949350505050565b60606103586098610b1a565b905090565b60655473ffffffffffffffffffffffffffffffffffffffff1633146103e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f216d61696c626f7800000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b83836103ef8282610bd5565b6040518060800160405280604381526020016125d26043913990610440576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103da9190611d95565b5061044d86868686610be9565b505050505050565b61045d61080a565b6104676000610d0d565b565b604051600090339063ffffffff8616907f11c97c784c298562a796345417aa40e1ce110e6b100f41b801ab23414f72d7e5908490a36103448461031f338686610d84565b6104b561080a565b6104bf8282610db6565b5050565b6104cb61080a565b828114610534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f216c656e6774680000000000000000000000000000000000000000000000000060448201526064016103da565b8260005b8181101561044d5761058886868381811061055557610555611da8565b905060200201602081019061056a9190611ab9565b85858481811061057c5761057c611da8565b90506020020135610db6565b610593600182611e06565b9050610538565b6105a261080a565b6102d781610e10565b6105b361080a565b73ffffffffffffffffffffffffffffffffffffffff8116610656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103da565b6102d781610d0d565b61066761080a565b6102d781610eff565b600054610100900460ff16158080156106905750600054600160ff909116105b806106aa5750303b1580156106aa575060005460ff166001145b610736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103da565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561079457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6107a085858585610fee565b801561080357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103da565b73ffffffffffffffffffffffffffffffffffffffff811615806108c4575073ffffffffffffffffffffffffffffffffffffffff81163b15155b61092a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e7472616374000000000000000000000000000000000000000000000060448201526064016103da565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ffec811ed4e60aebdaf7a79cad8a97196bf56e35362f039705598226d30c9d24890600090a250565b60408051600180825281830190925260609160009190816020015b6109df6040805160808101825260009181019182526060808201529081908152602001606081525090565b8152602001906001900390816109b45790505090506109ff8585856110af565b81600081518110610a1257610a12611da8565b602002602001018190525085600082604051602001610a3393929190611e83565b604051602081830303815290604052915050949350505050565b600080610a59846110ff565b6065546040517ffa31de0100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063fa31de0190610ab490879085908890600401611f4e565b6020604051808303816000875af1158015610ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af79190611f73565b9150505b92915050565b600080610b0e8484611175565b915091505b9250929050565b60606000610b27836111af565b9050805167ffffffffffffffff811115610b4357610b436118ff565b604051908082528060200260200182016040528015610b6c578160200160208202803683370190505b50915060005b8151811015610bce57818181518110610b8d57610b8d611da8565b6020026020010151838281518110610ba757610ba7611da8565b63ffffffff9092166020928302919091019091015280610bc681611f8c565b915050610b72565b5050919050565b600081610be18461032d565b149392505050565b6000610bf5838361124a565b90506000610c03848461128b565b90506000826001811115610c1957610c19611e19565b03610c83576000610c2a85856112a3565b90506000610c37826112db565b9050828863ffffffff167fb689f7016112eaacc7edebd6ea5eb700790a103e79c39ce0118e075de87d797660405160405180910390a3610c7b8861031f8584611386565b50505061044d565b6001826001811115610c9757610c97611e19565b03610d0557806000610ca986866113b5565b9050610cb582826113ed565b60405173ffffffffffffffffffffffffffffffffffffffff83169063ffffffff8a16907fc4416e2fcdf8514178829e5ead195eb13f3241ea71c0e38f998868fe81e4226990600090a3505061044d565b61044d611fc4565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60608360008484604051602001610d9e94939291906120dd565b60405160208183030381529060405290509392505050565b610dcc609863ffffffff80851690849061142a16565b8163ffffffff167f97fd51fef1f80c854cbd0150c248e8b2ac4ecdc97cc05e742b5f61c9f4dc645882604051610e0491815260200190565b60405180910390a25050565b8073ffffffffffffffffffffffffffffffffffffffff81163b610e8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e7472616374000000000000000000000000000000000000000000000060448201526064016103da565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fb87f5a0bface22cde699143559fb99f990ae54eea236995fc54178af91af859f90600090a25050565b8073ffffffffffffffffffffffffffffffffffffffff81163b610f7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e7472616374000000000000000000000000000000000000000000000060448201526064016103da565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517f7a61e573722ff8b205c8962b59d37e7d30573f368965597a844a94872204ebd790600090a25050565b600054610100900460ff16611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016103da565b61108e84610eff565b61109783610e10565b6110a08261088b565b6110a981610d0d565b50505050565b6110da6040805160808101825260009181019182526060808201529081908152602001606081525090565b60405180604001604052806110ef8686611435565b8152602001929092525092915050565b60008080611117609863ffffffff80871690610b0116565b91509150816040518060800160405280604381526020016125d2604391399061116d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103da9190611d95565b509392505050565b60008181526002830160205260408120548190806111a4576111978585611487565b925060009150610b139050565b600192509050610b13565b606060006111bc83611493565b90508067ffffffffffffffff8111156111d7576111d76118ff565b604051908082528060200260200182016040528015611200578160200160208202803683370190505b50915060005b81811015610bce57611218848261149e565b60001c83828151811061122d5761122d611da8565b60209081029190910101528061124281611f8c565b915050611206565b6000828261125a600160406121b8565b81811061126957611269611da8565b919091013560f81c9050600181111561128457611284611e19565b9392505050565b600061129a60208284866121cb565b611284916121f5565b606060006112b1848461124a565b60018111156112c2576112c2611e19565b146112cf576112cf611fc4565b61032482840184612264565b8051606090600090818167ffffffffffffffff8111156112fd576112fd6118ff565b60405190808252806020026020018201604052801561133057816020015b606081526020019060019003908161131b5790505b5090505b818310156103445761135e85848151811061135157611351611da8565b60200260200101516114aa565b81848151811061137057611370611da8565b6020026020010181905250826001019250611334565b60608260018360405160200161139e93929190612423565b604051602081830303815290604052905092915050565b606060016113c3848461124a565b60018111156113d4576113d4611e19565b146113e1576113e1611fc4565b610324828401846124b9565b80516000905b808210156110a95761141e8484848151811061141157611411611da8565b60200260200101516114e5565b508160010191506113f3565b6110a9838383611529565b6040805180820182526000808252606060208084018290528451808601865292835291820152825180840190935273ffffffffffffffffffffffffffffffffffffffff85168352820183905290611284565b60006112848383611546565b6000610afb8261155e565b60006112848383611568565b606081602001516114be8360000151611592565b6040516020016114cf929190612586565b6040516020818303038152906040529050919050565b6060611284838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506115a5565b6000828152600284016020526040812082905561034484846116be565b60008181526001830160205260408120541515611284565b6000610afb825490565b600082600001828154811061157f5761157f611da8565b9060005260206000200154905092915050565b8051606090610afb9083602001516116ca565b606082471015611637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016103da565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161166091906125b5565b60006040518083038185875af1925050503d806000811461169d576040519150601f19603f3d011682016040523d82523d6000602084013e6116a2565b606091505b50915091506116b3878383876116ef565b979650505050505050565b6000611284838361178f565b60606112848383604051806060016040528060258152602001612615602591396117de565b6060831561178557825160000361177e5773ffffffffffffffffffffffffffffffffffffffff85163b61177e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103da565b5081610344565b6103448383611863565b60008181526001830160205260408120546117d657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610afb565b506000610afb565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161180891906125b5565b600060405180830381855afa9150503d8060008114611843576040519150601f19603f3d011682016040523d82523d6000602084013e611848565b606091505b5091509150611859868383876116ef565b9695505050505050565b8151156118735781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103da9190611d95565b803573ffffffffffffffffffffffffffffffffffffffff811681146118cb57600080fd5b919050565b6000602082840312156118e257600080fd5b611284826118a7565b803563ffffffff811681146118cb57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611951576119516118ff565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561199e5761199e6118ff565b604052919050565b600082601f8301126119b757600080fd5b813567ffffffffffffffff8111156119d1576119d16118ff565b611a0260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611957565b818152846020838601011115611a1757600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611a4a57600080fd5b611a53856118eb565b9350611a61602086016118a7565b9250604085013567ffffffffffffffff80821115611a7e57600080fd5b611a8a888389016119a6565b93506060870135915080821115611aa057600080fd5b50611aad878288016119a6565b91505092959194509250565b600060208284031215611acb57600080fd5b611284826118eb565b6020808252825182820181905260009190848201906040850190845b81811015611b1257835163ffffffff1683529284019291840191600101611af0565b50909695505050505050565b60008060008060608587031215611b3457600080fd5b611b3d856118eb565b935060208501359250604085013567ffffffffffffffff80821115611b6157600080fd5b818701915087601f830112611b7557600080fd5b813581811115611b8457600080fd5b886020828501011115611b9657600080fd5b95989497505060200194505050565b60008083601f840112611bb757600080fd5b50813567ffffffffffffffff811115611bcf57600080fd5b6020830191508360208260051b8501011115610b1357600080fd5b600080600060408486031215611bff57600080fd5b611c08846118eb565b9250602084013567ffffffffffffffff811115611c2457600080fd5b611c3086828701611ba5565b9497909650939450505050565b60008060408385031215611c5057600080fd5b611c59836118eb565b946020939093013593505050565b60008060008060408587031215611c7d57600080fd5b843567ffffffffffffffff80821115611c9557600080fd5b611ca188838901611ba5565b90965094506020870135915080821115611cba57600080fd5b50611cc787828801611ba5565b95989497509550505050565b60008060008060808587031215611ce957600080fd5b611cf2856118a7565b9350611d00602086016118a7565b9250611d0e604086016118a7565b9150611d1c606086016118a7565b905092959194509250565b60005b83811015611d42578181015183820152602001611d2a565b50506000910152565b60008151808452611d63816020860160208601611d27565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006112846020830184611d4b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610afb57610afb611dd7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110611e7f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600060608083018684526020611e9b81860188611e48565b60408381870152828751808552608094508488019150848160051b890101848a0160005b83811015611f3c578a83037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80018552815180518785528051888601528801518a8501889052611f108a860182611d4b565b91890151858303868b0152919050611f288183611d4b565b968901969450505090860190600101611ebf565b50909c9b505050505050505050505050565b63ffffffff841681528260208201526060604082015260006103246060830184611d4b565b600060208284031215611f8557600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611fbd57611fbd611dd7565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261202757600080fd5b90910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261206557600080fd5b830160208101925035905067ffffffffffffffff81111561208557600080fd5b803603821315610b1357600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6000606080830187845260206120f581860189611e48565b604085810184905291869052608091828601600588901b870184018960005b8a811015611f3c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a840301845261214d828d611ff3565b6121578182611ff3565b86855280358786015261216c88820182612030565b9150878b8701526121808a87018383612094565b91505061218f88830183612030565b9250858203898701526121a3828483612094565b96890196955050509186019150600101612114565b81810381811115610afb57610afb611dd7565b600080858511156121db57600080fd5b838611156121e857600080fd5b5050820193919092039150565b80356020831015610afb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b8035600281106118cb57600080fd5b600067ffffffffffffffff82111561225a5761225a6118ff565b5060051b60200190565b60008060006060848603121561227957600080fd5b8335925061228960208501612231565b915067ffffffffffffffff604085013511156122a457600080fd5b6040840135840185601f8201126122ba57600080fd5b6122cc6122c78235612240565b611957565b81358082526020808301929160051b8401018810156122ea57600080fd5b602083015b6020843560051b8501018110156124155767ffffffffffffffff8135111561231657600080fd5b803584017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604081838d0301121561234d57600080fd5b61235561192e565b67ffffffffffffffff6020840135111561236e57600080fd5b60208301358301604083828f0301121561238757600080fd5b61238f61192e565b92506020810135835267ffffffffffffffff604082013511156123b157600080fd5b6123c48d602060408401358401016119a6565b60208401525081815267ffffffffffffffff604084013511156123e657600080fd5b6123f98c602060408601358601016119a6565b60208201528086525050506020830192506020810190506122ef565b508093505050509250925092565b600060608201858352602061243a81850187611e48565b6060604085015281855180845260808601915060808160051b870101935082870160005b828110156124aa577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80888703018452612498868351611d4b565b9550928401929084019060010161245e565b50939998505050505050505050565b6000806000606084860312156124ce57600080fd5b8335925060206124df818601612231565b9250604085013567ffffffffffffffff808211156124fc57600080fd5b818701915087601f83011261251057600080fd5b813561251e6122c782612240565b81815260059190911b8301840190848101908a83111561253d57600080fd5b8585015b83811015612575578035858111156125595760008081fd5b6125678d89838a01016119a6565b845250918601918601612541565b508096505050505050509250925092565b60008351612598818460208801611d27565b8351908301906125ac818360208801611d27565b01949350505050565b600082516125c7818460208701611d27565b919091019291505056fe4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e2e2044696420796f7520737065636966792074686520726967687420646f6d61696e2049443f416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564a26469706673582212202db54ae2565b4596f47a5733d76d03ceff1296b19167c3ad7eafc3d56e136bab64736f6c63430008110033";
16
16
  static readonly abi: ({
17
17
  inputs: {
18
18
  internalType: string;
@@ -1 +1 @@
1
- {"version":3,"file":"MockHyperlaneEnvironment__factory.d.ts","sourceRoot":"","sources":["../../../../types/factories/contracts/mock/MockHyperlaneEnvironment__factory.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,wBAAwB,EACxB,iCAAiC,EAClC,MAAM,kDAAkD,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EACL,MAAM,EAGN,eAAe,EACf,YAAY,EACZ,SAAS,EACV,MAAM,QAAQ,CAAC;AAkHhB,aAAK,yCAAyC,GAC1C,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GACjB,qBAAqB,CAAC,OAAO,eAAe,CAAC,CAAC;AAMlD,qBAAa,iCAAkC,SAAQ,eAAe;gBACxD,GAAG,IAAI,EAAE,yCAAyC;IAQrD,MAAM,CACb,aAAa,EAAE,YAAY,EAC3B,kBAAkB,EAAE,YAAY,EAChC,SAAS,CAAC,EAAE,SAAS,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAC1D,OAAO,CAAC,wBAAwB,CAAC;IAO3B,oBAAoB,CAC3B,aAAa,EAAE,YAAY,EAC3B,kBAAkB,EAAE,YAAY,EAChC,SAAS,CAAC,EAAE,SAAS,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAC1D,kBAAkB;IAOZ,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,wBAAwB;IAGjD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,iCAAiC;IAInE,MAAM,CAAC,QAAQ,CAAC,QAAQ,gp8CAAa;IACrC,MAAM,CAAC,QAAQ,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;SAAQ;IAC3B,MAAM,CAAC,eAAe,IAAI,iCAAiC;IAG3D,MAAM,CAAC,OAAO,CACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,QAAQ,GAClC,wBAAwB;CAO5B"}
1
+ {"version":3,"file":"MockHyperlaneEnvironment__factory.d.ts","sourceRoot":"","sources":["../../../../types/factories/contracts/mock/MockHyperlaneEnvironment__factory.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,wBAAwB,EACxB,iCAAiC,EAClC,MAAM,kDAAkD,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EACL,MAAM,EAGN,eAAe,EACf,YAAY,EACZ,SAAS,EACV,MAAM,QAAQ,CAAC;AAkHhB,KAAK,yCAAyC,GAC1C,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GACjB,qBAAqB,CAAC,OAAO,eAAe,CAAC,CAAC;AAMlD,qBAAa,iCAAkC,SAAQ,eAAe;gBACxD,GAAG,IAAI,EAAE,yCAAyC;IAQrD,MAAM,CACb,aAAa,EAAE,YAAY,EAC3B,kBAAkB,EAAE,YAAY,EAChC,SAAS,CAAC,EAAE,SAAS,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAC1D,OAAO,CAAC,wBAAwB,CAAC;IAO3B,oBAAoB,CAC3B,aAAa,EAAE,YAAY,EAC3B,kBAAkB,EAAE,YAAY,EAChC,SAAS,CAAC,EAAE,SAAS,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAC1D,kBAAkB;IAOZ,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,wBAAwB;IAGjD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,iCAAiC;IAInE,MAAM,CAAC,QAAQ,CAAC,QAAQ,gx/CAAa;IACrC,MAAM,CAAC,QAAQ,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;SAAQ;IAC3B,MAAM,CAAC,eAAe,IAAI,iCAAiC;IAG3D,MAAM,CAAC,OAAO,CACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,QAAQ,GAClC,wBAAwB;CAO5B"}
@@ -111,7 +111,7 @@ const _abi = [
111
111
  type: "function",
112
112
  },
113
113
  ];
114
- const _bytecode = "0x608060405234801561001057600080fd5b5060405162005c4438038062005c448339810160408190526100319161079d565b6000805463ffffffff838116640100000000026001600160401b03199092169085161717815560405183906100659061074c565b63ffffffff9091168152602001604051809103906000f08015801561008e573d6000803e3d6000fd5b5090506000826040516100a09061074c565b63ffffffff9091168152602001604051809103906000f0801580156100c9573d6000803e3d6000fd5b506040516302cd9fb760e51b815263ffffffff851660048201526001600160a01b038083166024830152919250908316906359b3f6e090604401600060405180830381600087803b15801561011d57600080fd5b505af1158015610131573d6000803e3d6000fd5b50506040516302cd9fb760e51b815263ffffffff871660048201526001600160a01b038581166024830152841692506359b3f6e09150604401600060405180830381600087803b15801561018457600080fd5b505af1158015610198573d6000803e3d6000fd5b50505050306040516101a99061075a565b6001600160a01b039091168152602001604051809103906000f0801580156101d5573d6000803e3d6000fd5b506000805463ffffffff168152600260205260409081902080546001600160a01b0319166001600160a01b0393909316929092179091555130906102189061075a565b6001600160a01b039091168152602001604051809103906000f080158015610244573d6000803e3d6000fd5b5060008054640100000000900463ffffffff168152600260205260409081902080546001600160a01b0319166001600160a01b0393909316929092179091555161028d90610768565b604051809103906000f0801580156102a9573d6000803e3d6000fd5b506000805463ffffffff168152600360205260409081902080546001600160a01b0319166001600160a01b039390931692909217909155516102ea90610768565b604051809103906000f080158015610306573d6000803e3d6000fd5b5060008054640100000000900463ffffffff90811682526003602052604080832080546001600160a01b0319166001600160a01b039586161790558254909116825290819020549051637bca343d60e11b815290821660048201529083169063f794687a90602401600060405180830381600087803b15801561038857600080fd5b505af115801561039c573d6000803e3d6000fd5b505060008054640100000000900463ffffffff1681526003602052604090819020549051637bca343d60e11b81526001600160a01b039182166004820152908416925063f794687a9150602401600060405180830381600087803b15801561040357600080fd5b505af1158015610417573d6000803e3d6000fd5b50505063ffffffff80861660009081526001602052604080822080546001600160a01b038089166001600160a01b031992831617909255938816835281832080549187169190941617909255905190915061047190610776565b604051809103906000f08015801561048d573d6000803e3d6000fd5b509050600060405161049e90610776565b604051809103906000f0801580156104ba573d6000803e3d6000fd5b506000805463ffffffff16815260026020908152604080832054600390925291829020549151637c643b2f60e11b81526001600160a01b03888116600483015291821660248201529181166044830152306064830181905292935084169063f8c8765e90608401600060405180830381600087803b15801561053b57600080fd5b505af115801561054f573d6000803e3d6000fd5b505060008054640100000000900463ffffffff16815260026020908152604080832054600390925291829020549151637c643b2f60e11b81526001600160a01b0389811660048301529182166024820152918116604483015284811660648301528516925063f8c8765e9150608401600060405180830381600087803b1580156105d857600080fd5b505af11580156105ec573d6000803e3d6000fd5b50505050826001600160a01b031663b49c53a7876106138561074060201b61029e1760201c565b6040516001600160e01b031960e085901b16815263ffffffff9290921660048301526024820152604401600060405180830381600087803b15801561065757600080fd5b505af115801561066b573d6000803e3d6000fd5b50505050816001600160a01b031663b49c53a7886106928661074060201b61029e1760201c565b6040516001600160e01b031960e085901b16815263ffffffff9290921660048301526024820152604401600060405180830381600087803b1580156106d657600080fd5b505af11580156106ea573d6000803e3d6000fd5b5050505063ffffffff96871660009081526004602052604080822080546001600160a01b03199081166001600160a01b0397881617909155979098168152969096208054909516911617909255506107d0915050565b6001600160a01b031690565b61141f8062000afa83390190565b6113888062001f1983390190565b6103a480620032a183390190565b6125ff806200364583390190565b805163ffffffff8116811461079857600080fd5b919050565b600080604083850312156107b057600080fd5b6107b983610784565b91506107c760208401610784565b90509250929050565b61031a80620007e06000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063f11a367e11610050578063f11a367e14610142578063f9d2692d14610178578063f9f312ad1461018257600080fd5b80635a007b7e146100775780637a7eada3146100d6578063e9ee46951461010c575b600080fd5b6100ad6100853660046102b7565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100ad6100e43660046102b7565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100ad61011a3660046102b7565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100ad6101503660046102b7565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61018061018a565b005b61018061021d565b6000805463ffffffff168152600160205260408082205481517f1605c306000000000000000000000000000000000000000000000000000000008152915173ffffffffffffffffffffffffffffffffffffffff90911692631605c306926004808201939182900301818387803b15801561020357600080fd5b505af1158015610217573d6000803e3d6000fd5b50505050565b60008054640100000000900463ffffffff168152600160205260408082205481517f1605c306000000000000000000000000000000000000000000000000000000008152915173ffffffffffffffffffffffffffffffffffffffff90911692631605c306926004808201939182900301818387803b15801561020357600080fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b6000602082840312156102c957600080fd5b813563ffffffff811681146102dd57600080fd5b939250505056fea26469706673582212208034e3b2c77c3241dfadc390188b88e7013dd1809ee068aa875af93963d4dbe664736f6c6343000811003360a0604052600080546001600160601b031916905534801561002057600080fd5b5060405161141f38038061141f83398101604081905261003f9161004d565b63ffffffff1660805261007a565b60006020828403121561005f57600080fd5b815163ffffffff8116811461007357600080fd5b9392505050565b60805161137c6100a36000396000818161021801528181610a710152610c26015261137c6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806392d28b3d1161008c578063f794687a11610066578063f794687a146102b0578063fa31de0114610301578063fd10ebe514610314578063ffa1ad741461032457600080fd5b806392d28b3d1461023a578063a3b4919f1461025e578063d12164e41461029457600080fd5b80636b791ca1116100c85780636b791ca11461017e5780636e5f516e146101915780638209d312146101e65780638d3638f41461021357600080fd5b80631605c306146100ef578063522ae002146100f957806359b3f6e014610115575b600080fd5b6100f761033e565b005b61010261080081565b6040519081526020015b60405180910390f35b6100f7610123366004610cd5565b63ffffffff91909116600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6100f761018c366004610d55565b610660565b6000546101c1906c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010c565b6000546101fe90640100000000900463ffffffff1681565b60405163ffffffff909116815260200161010c565b6101fe7f000000000000000000000000000000000000000000000000000000000000000081565b61024d610248366004610ddf565b610833565b60405161010c959493929190610e66565b6101c161026c366004610ebe565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6000546101fe9068010000000000000000900463ffffffff1681565b6100f76102be366004610ee0565b6000805473ffffffffffffffffffffffffffffffffffffffff9092166c01000000000000000000000000026bffffffffffffffffffffffff909216919091179055565b61010261030f366004610efd565b61091c565b6000546101fe9063ffffffff1681565b61032c600081565b60405160ff909116815260200161010c565b6000805463ffffffff680100000000000000009182900481168352600260208181526040808620815160a0810183528154808716825264010000000081049096169381019390935273ffffffffffffffffffffffffffffffffffffffff9590940485169082015260018301549093166060840152810180546080840191906103c590610f57565b80601f01602080910402602001604051908101604052809291908181526020018280546103f190610f57565b801561043e5780601f106104135761010080835404028352916020019161043e565b820191906000526020600020905b81548152906001019060200180831161042157829003601f168201915b505050919092525050506060810151909150600061045b82610b17565b905073ffffffffffffffffffffffffffffffffffffffff811615610568578073ffffffffffffffffffffffffffffffffffffffff1663f7e83aee61049e85610bf5565b6040518263ffffffff1660e01b81526004016104ba9190610faa565b6020604051808303816000875af11580156104d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fd9190610fcb565b610568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f49534d20766572696679206661696c656400000000000000000000000000000060448201526064015b60405180910390fd5b826060015173ffffffffffffffffffffffffffffffffffffffff166356d5d47584602001516105c4866040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1690565b86608001516040518463ffffffff1660e01b81526004016105e793929190610fed565b600060405180830381600087803b15801561060157600080fd5b505af1158015610615573d6000803e3d6000fd5b50506000805468010000000000000000900463ffffffff1692509050600861063c8361101b565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050565b6040518060a001604052808763ffffffff1681526020018663ffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093909452505080546401000000009081900463ffffffff9081168352600260208181526040948590208751815492890151968901519085167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009093169290921795909316909302939093177fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff9384160217815560608501516001820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909316179091556080840151909250908201906107eb90826110e3565b505060008054640100000000900463ffffffff169150600461080c8361101b565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050505050565b600260208190526000918252604090912080546001820154928201805463ffffffff808416956401000000008504909116946801000000000000000090940473ffffffffffffffffffffffffffffffffffffffff90811694911692909161089990610f57565b80601f01602080910402602001604051908101604052809291908181526020018280546108c590610f57565b80156109125780601f106108e757610100808354040283529160200191610912565b820191906000526020600020905b8154815290600101906020018083116108f557829003601f168201915b5050505050905085565b600061080082111561098a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6d736720746f6f206c6f6e670000000000000000000000000000000000000000604482015260640161055f565b63ffffffff851660009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610a1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d697373696e672072656d6f7465206d61696c626f7800000000000000000000604482015260640161055f565b6000546040517f6b791ca100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831691636b791ca191610aa19163ffffffff16907f00000000000000000000000000000000000000000000000000000000000000009033908b908b908b906004016111fd565b600060405180830381600087803b158015610abb57600080fd5b505af1158015610acf573d6000803e3d6000fd5b50506000805463ffffffff169250905080610ae98361101b565b91906101000a81548163ffffffff021916908363ffffffff160217905550506000801b915050949350505050565b60008173ffffffffffffffffffffffffffffffffffffffff1663de523cf36040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b9e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610b9b9181019061128a565b60015b15610bc75773ffffffffffffffffffffffffffffffffffffffff811615610bc55792915050565b505b50506000546c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1690565b6060600082600001518360200151610c24856040015173ffffffffffffffffffffffffffffffffffffffff1690565b7f0000000000000000000000000000000000000000000000000000000000000000610c66876060015173ffffffffffffffffffffffffffffffffffffffff1690565b8760800151604051602001610c8197969594939291906112a7565b6040516020818303038152906040529050919050565b803563ffffffff81168114610cab57600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610cd257600080fd5b50565b60008060408385031215610ce857600080fd5b610cf183610c97565b91506020830135610d0181610cb0565b809150509250929050565b60008083601f840112610d1e57600080fd5b50813567ffffffffffffffff811115610d3657600080fd5b602083019150836020828501011115610d4e57600080fd5b9250929050565b60008060008060008060a08789031215610d6e57600080fd5b610d7787610c97565b9550610d8560208801610c97565b94506040870135610d9581610cb0565b93506060870135610da581610cb0565b9250608087013567ffffffffffffffff811115610dc157600080fd5b610dcd89828a01610d0c565b979a9699509497509295939492505050565b600060208284031215610df157600080fd5b5035919050565b60005b83811015610e13578181015183820152602001610dfb565b50506000910152565b60008151808452610e34816020860160208601610df8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b63ffffffff86811682528516602082015273ffffffffffffffffffffffffffffffffffffffff84811660408301528316606082015260a060808201819052600090610eb390830184610e1c565b979650505050505050565b600060208284031215610ed057600080fd5b610ed982610c97565b9392505050565b600060208284031215610ef257600080fd5b8135610ed981610cb0565b60008060008060608587031215610f1357600080fd5b610f1c85610c97565b935060208501359250604085013567ffffffffffffffff811115610f3f57600080fd5b610f4b87828801610d0c565b95989497509550505050565b600181811c90821680610f6b57607f821691505b602082108103610fa4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6040815260006040820152606060208201526000610ed96060830184610e1c565b600060208284031215610fdd57600080fd5b81518015158114610ed957600080fd5b63ffffffff841681528260208201526060604082015260006110126060830184610e1c565b95945050505050565b600063ffffffff80831681810361105b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6001019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f8211156110de57600081815260208120601f850160051c810160208610156110bb5750805b601f850160051c820191505b818110156110da578281556001016110c7565b5050505b505050565b815167ffffffffffffffff8111156110fd576110fd611065565b6111118161110b8454610f57565b84611094565b602080601f831160018114611164576000841561112e5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556110da565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156111b157888601518255948401946001909101908401611192565b50858210156111ed57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b63ffffffff87811682528616602082015273ffffffffffffffffffffffffffffffffffffffff85811660408301528416606082015260a06080820181905281018290526000828460c0840137600060c0848401015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168301019050979650505050505050565b60006020828403121561129c57600080fd5b8151610ed981610cb0565b7fff000000000000000000000000000000000000000000000000000000000000008860f81b16815260007fffffffff00000000000000000000000000000000000000000000000000000000808960e01b166001840152808860e01b166005840152866009840152808660e01b1660298401525083602d830152825161133381604d850160208701610df8565b91909101604d019897505050505050505056fea264697066735822122065b0f7b2155f8f53d2767c52080a8915df605ce13ec8e5c785cdf6c4e74abfb764736f6c6343000811003360806040523480156200001157600080fd5b506040516200138838038062001388833981016040819052620000349162000315565b62000040338262000047565b5062000347565b600054610100900460ff1615808015620000685750600054600160ff909116105b8062000098575062000085306200019160201b620009ec1760201c565b15801562000098575060005460ff166001145b620001015760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000125576000805461ff0019166101001790555b6200012f620001a0565b6200013a8362000208565b62000145826200025a565b80156200018c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b600054610100900460ff16620001fc5760405162461bcd60e51b815260206004820152602b60248201526000805160206200136883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000f8565b62000206620002ae565b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606680546001600160a01b0319166001600160a01b0383169081179091556040519081527f04d55a8be181fb8d75b76f2d48aa0b2ee40f47e53d6e61763eeeec46feea8a249060200160405180910390a150565b600054610100900460ff166200030a5760405162461bcd60e51b815260206004820152602b60248201526000805160206200136883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000f8565b620002063362000208565b6000602082840312156200032857600080fd5b81516001600160a01b03811681146200034057600080fd5b9392505050565b61101180620003576000396000f3fe6080604052600436106100d25760003560e01c80634e71d92d1161007f5780638da5cb5b116100595780638da5cb5b14610259578063a692979314610284578063f2fde38b146102b2578063fe173b97146102d257600080fd5b80634e71d92d146101e657806360fcef7c146101fb578063715018a61461024457600080fd5b80632f202650116100b05780632f2026501461017957806338af3eed14610199578063485cc955146101c657600080fd5b806311bf2c18146100d75780631c31f710146100ec5780631d16c8c81461010c575b600080fd5b6100ea6100e5366004610d83565b6102e7565b005b3480156100f857600080fd5b506100ea610107366004610dc9565b6104d2565b34801561011857600080fd5b5061014f610127366004610de4565b60656020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561018557600080fd5b506100ea610194366004610dff565b6104e6565b3480156101a557600080fd5b5060665461014f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d257600080fd5b506100ea6101e1366004610e74565b61056c565b3480156101f257600080fd5b506100ea610712565b34801561020757600080fd5b5061021b610216366004610de4565b6107dc565b604080516fffffffffffffffffffffffffffffffff938416815292909116602083015201610170565b34801561025057600080fd5b506100ea61090e565b34801561026557600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff1661014f565b34801561029057600080fd5b506102a461029f366004610ea7565b610922565b604051908152602001610170565b3480156102be57600080fd5b506100ea6102cd366004610dc9565b610938565b3480156102de57600080fd5b506102a4600a81565b60006102f38484610922565b90508034101561038a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f696e73756666696369656e7420696e746572636861696e20676173207061796d60448201527f656e74000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60006103968234610f00565b9050801561048f5760008373ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146103f8576040519150601f19603f3d011682016040523d82523d6000602084013e6103fd565b606091505b505090508061048d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f496e746572636861696e20676173207061796d656e7420726566756e6420666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152608401610381565b505b604080518581526020810184905287917ff715e66d2cd2a0179069dcda2a41a4da36a30e1aad12187fbb7c5d100afd621c910160405180910390a2505050505050565b6104da610a08565b6104e381610a89565b50565b6104ee610a08565b8060005b818110156105665761055484848381811061050f5761050f610f13565b6105259260206040909202019081019150610de4565b85858481811061053757610537610f13565b905060400201602001602081019061054f9190610dc9565b610b02565b8061055e81610f42565b9150506104f2565b50505050565b600054610100900460ff161580801561058c5750600054600160ff909116105b806105a65750303b1580156105a6575060005460ff166001145b610632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610381565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561069057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610698610b90565b6106a183610c2f565b6106aa82610a89565b801561070d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60665460405160009173ffffffffffffffffffffffffffffffffffffffff169047908381818185875af1925050503d806000811461076c576040519150601f19603f3d011682016040523d82523d6000602084013e610771565b606091505b50509050806104e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f217472616e7366657200000000000000000000000000000000000000000000006044820152606401610381565b63ffffffff8116600090815260656020526040812054819073ffffffffffffffffffffffffffffffffffffffff1680610871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21676173206f7261636c650000000000000000000000000000000000000000006044820152606401610381565b6040517f60fcef7c00000000000000000000000000000000000000000000000000000000815263ffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8216906360fcef7c906024016040805180830381865afa1580156108e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109049190610f9a565b9250925050915091565b610916610a08565b6109206000610c2f565b565b600061092f82600a610fc4565b90505b92915050565b610940610a08565b73ffffffffffffffffffffffffffffffffffffffff81166109e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610381565b6104e381610c2f565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60335473ffffffffffffffffffffffffffffffffffffffff163314610920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610381565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f04d55a8be181fb8d75b76f2d48aa0b2ee40f47e53d6e61763eeeec46feea8a249060200160405180910390a150565b63ffffffff821660008181526065602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f38b842e116ff320f6a79ba4cf434eee927fa156b226c65c90d62989de589b4e7910160405180910390a25050565b600054610100900460ff16610c27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610381565b610920610ca6565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610d3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610381565b61092033610c2f565b803563ffffffff81168114610d5a57600080fd5b919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610d5a57600080fd5b60008060008060808587031215610d9957600080fd5b84359350610da960208601610d46565b925060408501359150610dbe60608601610d5f565b905092959194509250565b600060208284031215610ddb57600080fd5b61092f82610d5f565b600060208284031215610df657600080fd5b61092f82610d46565b60008060208385031215610e1257600080fd5b823567ffffffffffffffff80821115610e2a57600080fd5b818501915085601f830112610e3e57600080fd5b813581811115610e4d57600080fd5b8660208260061b8501011115610e6257600080fd5b60209290920196919550909350505050565b60008060408385031215610e8757600080fd5b610e9083610d5f565b9150610e9e60208401610d5f565b90509250929050565b60008060408385031215610eba57600080fd5b610ec383610d46565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561093257610932610ed1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610f7357610f73610ed1565b5060010190565b80516fffffffffffffffffffffffffffffffff81168114610d5a57600080fd5b60008060408385031215610fad57600080fd5b610fb683610f7a565b9150610e9e60208401610f7a565b808202811582820484141761093257610932610ed156fea2646970667358221220c0c7e5463aed39a02073f1ebf4a03bb5c9fd30d0b97285dfad72394239fdc66c64736f6c63430008110033496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069608060405234801561001057600080fd5b506000805460ff191660011790556103778061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634fc3aa7c116100505780634fc3aa7c146100af5780636465e69f146100f0578063f7e83aee1461010a57600080fd5b80632852b71c1461006c5780632e0ed2341461008e575b600080fd5b6000546100799060ff1681565b60405190151581526020015b60405180910390f35b6100a161009c3660046101d7565b610126565b604051610085929190610219565b6100ee6100bd36600461027d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b005b6100f8600481565b60405160ff9091168152602001610085565b6100796101183660046102a6565b60005460ff16949350505050565b60408051600180825281830190925260609160009182916020808301908036833701905050905060008160008151811061016257610162610312565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101529150600190505b9250929050565b60008083601f8401126101a757600080fd5b50813567ffffffffffffffff8111156101bf57600080fd5b60208301915083602082850101111561018e57600080fd5b600080602083850312156101ea57600080fd5b823567ffffffffffffffff81111561020157600080fd5b61020d85828601610195565b90969095509350505050565b604080825283519082018190526000906020906060840190828701845b8281101561026857815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101610236565b50505060ff9490941692019190915250919050565b60006020828403121561028f57600080fd5b8135801515811461029f57600080fd5b9392505050565b600080600080604085870312156102bc57600080fd5b843567ffffffffffffffff808211156102d457600080fd5b6102e088838901610195565b909650945060208701359150808211156102f957600080fd5b5061030687828801610195565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea264697066735822122017c3918e1ebea8ac9a9de746c40c8b031b8fef948d0933d04030e580d6ee3bfa64736f6c63430008110033608060405234801561001057600080fd5b506125df806100206000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80638da5cb5b116100b2578063e9198bf911610081578063f2fde38b11610066578063f2fde38b1461028d578063f3c61d6b146102a0578063f8c8765e146102b357600080fd5b8063e9198bf914610267578063f1bd6f0a1461027a57600080fd5b80638da5cb5b146101f6578063b49c53a714610214578063d5438eae14610227578063de523cf31461024757600080fd5b8063440df4f4116100ee578063440df4f4146101b357806356d5d475146101c8578063715018a6146101db5780638cc02cab146101e357600080fd5b80630e72cc06146101205780632222b452146101355780632ead72f61461015b57806339bb4ad91461016e575b600080fd5b61013361012e366004611839565b6102c6565b005b61014861014336600461199d565b6102da565b6040519081526020015b60405180910390f35b610148610169366004611a22565b61032d565b60665461018e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610152565b6101bb61036f565b6040516101529190611a3d565b6101336101d6366004611a87565b61042a565b610133610522565b6101486101f1366004611b5a565b610536565b60335473ffffffffffffffffffffffffffffffffffffffff1661018e565b610133610222366004611bad565b610582565b60655461018e9073ffffffffffffffffffffffffffffffffffffffff1681565b60675461018e9073ffffffffffffffffffffffffffffffffffffffff1681565b610133610275366004611bd7565b610598565b610133610288366004611839565b61066f565b61013361029b366004611839565b610680565b6101336102ae366004611839565b610734565b6101336102c1366004611c43565b610745565b6102ce6108df565b6102d781610960565b50565b604051600090339063ffffffff8716907f11c97c784c298562a796345417aa40e1ce110e6b100f41b801ab23414f72d7e5908490a36103248561031f33878787610a6e565b610b22565b95945050505050565b6000610343609863ffffffff80851690610bcc16565b156103625761035c609863ffffffff80851690610bdf16565b92915050565b506000919050565b919050565b609880546060919060008167ffffffffffffffff81111561039257610392611868565b6040519080825280602002602001820160405280156103bb578160200160208202803683370190505b50905060005b82811015610422578381815481106103db576103db611c97565b906000526020600020015460001c8282815181106103fb576103fb611c97565b63ffffffff909216602092830291909101909101528061041a81611cf5565b9150506103c1565b509392505050565b60655473ffffffffffffffffffffffffffffffffffffffff1633146104b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f216d61696c626f7800000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b83836104bc8282610beb565b604051806080016040528060438152602001612542604391399061050d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a79190611d9b565b5061051a86868686610bff565b505050505050565b61052a6108df565b6105346000610d23565b565b604051600090339063ffffffff8616907f11c97c784c298562a796345417aa40e1ce110e6b100f41b801ab23414f72d7e5908490a361057a8461031f338686610d9a565b949350505050565b61058a6108df565b6105948282610dcc565b5050565b6105a06108df565b828114610609576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f216c656e6774680000000000000000000000000000000000000000000000000060448201526064016104a7565b8260005b8181101561051a5761065d86868381811061062a5761062a611c97565b905060200201602081019061063f9190611a22565b85858481811061065157610651611c97565b90506020020135610dcc565b610668600182611dae565b905061060d565b6106776108df565b6102d781610e26565b6106886108df565b73ffffffffffffffffffffffffffffffffffffffff811661072b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104a7565b6102d781610d23565b61073c6108df565b6102d781610f15565b600054610100900460ff16158080156107655750600054600160ff909116105b8061077f5750303b15801561077f575060005460ff166001145b61080b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016104a7565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561086957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61087585858585611004565b80156108d857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104a7565b73ffffffffffffffffffffffffffffffffffffffff81161580610999575073ffffffffffffffffffffffffffffffffffffffff81163b15155b6109ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e7472616374000000000000000000000000000000000000000000000060448201526064016104a7565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ffec811ed4e60aebdaf7a79cad8a97196bf56e35362f039705598226d30c9d24890600090a250565b60408051600180825281830190925260609160009190816020015b610ab46040805160808101825260009181019182526060808201529081908152602001606081525090565b815260200190600190039081610a89579050509050610ad48585856110c5565b81600081518110610ae757610ae7611c97565b602002602001018190525085600082604051602001610b0893929190611e2b565b604051602081830303815290604052915050949350505050565b600080610b2e84611115565b6065546040517ffa31de0100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063fa31de0190610b8990879085908890600401611ef6565b6020604051808303816000875af1158015610ba8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057a9190611f1b565b6000610bd88383611180565b9392505050565b6000610bd8838361118c565b600081610bf78461032d565b149392505050565b6000610c0b8383611216565b90506000610c198484611250565b90506000826001811115610c2f57610c2f611dc1565b03610c99576000610c408585611268565b90506000610c4d826112a0565b9050828863ffffffff167fb689f7016112eaacc7edebd6ea5eb700790a103e79c39ce0118e075de87d797660405160405180910390a3610c918861031f858461134b565b50505061051a565b6001826001811115610cad57610cad611dc1565b03610d1b57806000610cbf868661137a565b9050610ccb82826113b2565b60405173ffffffffffffffffffffffffffffffffffffffff83169063ffffffff8a16907fc4416e2fcdf8514178829e5ead195eb13f3241ea71c0e38f998868fe81e4226990600090a3505061051a565b61051a611f34565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60608360008484604051602001610db4949392919061204d565b60405160208183030381529060405290509392505050565b610de2609863ffffffff8085169084906113ef16565b8163ffffffff167f97fd51fef1f80c854cbd0150c248e8b2ac4ecdc97cc05e742b5f61c9f4dc645882604051610e1a91815260200190565b60405180910390a25050565b8073ffffffffffffffffffffffffffffffffffffffff81163b610ea5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e7472616374000000000000000000000000000000000000000000000060448201526064016104a7565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fb87f5a0bface22cde699143559fb99f990ae54eea236995fc54178af91af859f90600090a25050565b8073ffffffffffffffffffffffffffffffffffffffff81163b610f94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e7472616374000000000000000000000000000000000000000000000060448201526064016104a7565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517f7a61e573722ff8b205c8962b59d37e7d30573f368965597a844a94872204ebd790600090a25050565b600054610100900460ff1661109b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104a7565b6110a484610f15565b6110ad83610e26565b6110b682610960565b6110bf81610d23565b50505050565b6110f06040805160808101825260009181019182526060808201529081908152602001606081525090565b604051806040016040528061110586866113fa565b8152602001929092525092915050565b60006111208261032d565b90506000801b811415604051806080016040528060438152602001612542604391399061117a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a79190611d9b565b50919050565b6000610bd8838361144c565b6000818152600283016020526040812054801515806111b057506111b08484611180565b610bd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b6579000060448201526064016104a7565b6000828261122660016040612128565b81811061123557611235611c97565b919091013560f81c90506001811115610bd857610bd8611dc1565b600061125f602082848661213b565b610bd891612165565b606060006112768484611216565b600181111561128757611287611dc1565b1461129457611294611f34565b610324828401846121d4565b8051606090600090818167ffffffffffffffff8111156112c2576112c2611868565b6040519080825280602002602001820160405280156112f557816020015b60608152602001906001900390816112e05790505b5090505b8183101561057a5761132385848151811061131657611316611c97565b6020026020010151611464565b81848151811061133557611335611c97565b60200260200101819052508260010192506112f9565b60608260018360405160200161136393929190612393565b604051602081830303815290604052905092915050565b606060016113888484611216565b600181111561139957611399611dc1565b146113a6576113a6611f34565b61032482840184612429565b80516000905b808210156110bf576113e3848484815181106113d6576113d6611c97565b602002602001015161149f565b508160010191506113b8565b6110bf8383836114e3565b6040805180820182526000808252606060208084018290528451808601865292835291820152825180840190935273ffffffffffffffffffffffffffffffffffffffff85168352820183905290610bd8565b60008181526001830160205260408120541515610bd8565b606081602001516114788360000151611500565b6040516020016114899291906124f6565b6040516020818303038152906040529050919050565b6060610bd8838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250611513565b6000828152600284016020526040812082905561057a848461162c565b805160609061035c908360200151611638565b6060824710156115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016104a7565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516115ce9190612525565b60006040518083038185875af1925050503d806000811461160b576040519150601f19603f3d011682016040523d82523d6000602084013e611610565b606091505b50915091506116218783838761165d565b979650505050505050565b6000610bd883836116fd565b6060610bd883836040518060600160405280602581526020016125856025913961174c565b606083156116f35782516000036116ec5773ffffffffffffffffffffffffffffffffffffffff85163b6116ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104a7565b508161057a565b61057a83836117d1565b60008181526001830160205260408120546117445750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561035c565b50600061035c565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516117769190612525565b600060405180830381855afa9150503d80600081146117b1576040519150601f19603f3d011682016040523d82523d6000602084013e6117b6565b606091505b50915091506117c78683838761165d565b9695505050505050565b8151156117e15781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104a79190611d9b565b803573ffffffffffffffffffffffffffffffffffffffff8116811461036a57600080fd5b60006020828403121561184b57600080fd5b610bd882611815565b803563ffffffff8116811461036a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156118ba576118ba611868565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561190757611907611868565b604052919050565b600082601f83011261192057600080fd5b813567ffffffffffffffff81111561193a5761193a611868565b61196b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016118c0565b81815284602083860101111561198057600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156119b357600080fd5b6119bc85611854565b93506119ca60208601611815565b9250604085013567ffffffffffffffff808211156119e757600080fd5b6119f38883890161190f565b93506060870135915080821115611a0957600080fd5b50611a168782880161190f565b91505092959194509250565b600060208284031215611a3457600080fd5b610bd882611854565b6020808252825182820181905260009190848201906040850190845b81811015611a7b57835163ffffffff1683529284019291840191600101611a59565b50909695505050505050565b60008060008060608587031215611a9d57600080fd5b611aa685611854565b935060208501359250604085013567ffffffffffffffff80821115611aca57600080fd5b818701915087601f830112611ade57600080fd5b813581811115611aed57600080fd5b886020828501011115611aff57600080fd5b95989497505060200194505050565b60008083601f840112611b2057600080fd5b50813567ffffffffffffffff811115611b3857600080fd5b6020830191508360208260051b8501011115611b5357600080fd5b9250929050565b600080600060408486031215611b6f57600080fd5b611b7884611854565b9250602084013567ffffffffffffffff811115611b9457600080fd5b611ba086828701611b0e565b9497909650939450505050565b60008060408385031215611bc057600080fd5b611bc983611854565b946020939093013593505050565b60008060008060408587031215611bed57600080fd5b843567ffffffffffffffff80821115611c0557600080fd5b611c1188838901611b0e565b90965094506020870135915080821115611c2a57600080fd5b50611c3787828801611b0e565b95989497509550505050565b60008060008060808587031215611c5957600080fd5b611c6285611815565b9350611c7060208601611815565b9250611c7e60408601611815565b9150611c8c60608601611815565b905092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611d2657611d26611cc6565b5060010190565b60005b83811015611d48578181015183820152602001611d30565b50506000910152565b60008151808452611d69816020860160208601611d2d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610bd86020830184611d51565b8082018082111561035c5761035c611cc6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110611e27577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600060608083018684526020611e4381860188611df0565b60408381870152828751808552608094508488019150848160051b890101848a0160005b83811015611ee4578a83037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80018552815180518785528051888601528801518a8501889052611eb88a860182611d51565b91890151858303868b0152919050611ed08183611d51565b968901969450505090860190600101611e67565b50909c9b505050505050505050505050565b63ffffffff841681528260208201526060604082015260006103246060830184611d51565b600060208284031215611f2d57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112611f9757600080fd5b90910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611fd557600080fd5b830160208101925035905067ffffffffffffffff811115611ff557600080fd5b803603821315611b5357600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60006060808301878452602061206581860189611df0565b604085810184905291869052608091828601600588901b870184018960005b8a811015611ee4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a84030184526120bd828d611f63565b6120c78182611f63565b8685528035878601526120dc88820182611fa0565b9150878b8701526120f08a87018383612004565b9150506120ff88830183611fa0565b925085820389870152612113828483612004565b96890196955050509186019150600101612084565b8181038181111561035c5761035c611cc6565b6000808585111561214b57600080fd5b8386111561215857600080fd5b5050820193919092039150565b8035602083101561035c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b80356002811061036a57600080fd5b600067ffffffffffffffff8211156121ca576121ca611868565b5060051b60200190565b6000806000606084860312156121e957600080fd5b833592506121f9602085016121a1565b915067ffffffffffffffff6040850135111561221457600080fd5b6040840135840185601f82011261222a57600080fd5b61223c61223782356121b0565b6118c0565b81358082526020808301929160051b84010188101561225a57600080fd5b602083015b6020843560051b8501018110156123855767ffffffffffffffff8135111561228657600080fd5b803584017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604081838d030112156122bd57600080fd5b6122c5611897565b67ffffffffffffffff602084013511156122de57600080fd5b60208301358301604083828f030112156122f757600080fd5b6122ff611897565b92506020810135835267ffffffffffffffff6040820135111561232157600080fd5b6123348d6020604084013584010161190f565b60208401525081815267ffffffffffffffff6040840135111561235657600080fd5b6123698c6020604086013586010161190f565b602082015280865250505060208301925060208101905061225f565b508093505050509250925092565b60006060820185835260206123aa81850187611df0565b6060604085015281855180845260808601915060808160051b870101935082870160005b8281101561241a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80888703018452612408868351611d51565b955092840192908401906001016123ce565b50939998505050505050505050565b60008060006060848603121561243e57600080fd5b83359250602061244f8186016121a1565b9250604085013567ffffffffffffffff8082111561246c57600080fd5b818701915087601f83011261248057600080fd5b813561248e612237826121b0565b81815260059190911b8301840190848101908a8311156124ad57600080fd5b8585015b838110156124e5578035858111156124c95760008081fd5b6124d78d89838a010161190f565b8452509186019186016124b1565b508096505050505050509250925092565b60008351612508818460208801611d2d565b83519083019061251c818360208801611d2d565b01949350505050565b60008251612537818460208701611d2d565b919091019291505056fe4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e2e2044696420796f7520737065636966792074686520726967687420646f6d61696e2049443f416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564a26469706673582212209c66069227b42b4fca2a0189103b448e8ac3091670fffe8af86dca32ade2822a64736f6c63430008110033";
114
+ const _bytecode = "0x608060405234801561001057600080fd5b5060405162005f8438038062005f848339810160408190526100319161079d565b6000805463ffffffff838116640100000000026001600160401b03199092169085161717815560405183906100659061074c565b63ffffffff9091168152602001604051809103906000f08015801561008e573d6000803e3d6000fd5b5090506000826040516100a09061074c565b63ffffffff9091168152602001604051809103906000f0801580156100c9573d6000803e3d6000fd5b506040516302cd9fb760e51b815263ffffffff851660048201526001600160a01b038083166024830152919250908316906359b3f6e090604401600060405180830381600087803b15801561011d57600080fd5b505af1158015610131573d6000803e3d6000fd5b50506040516302cd9fb760e51b815263ffffffff871660048201526001600160a01b038581166024830152841692506359b3f6e09150604401600060405180830381600087803b15801561018457600080fd5b505af1158015610198573d6000803e3d6000fd5b50505050306040516101a99061075a565b6001600160a01b039091168152602001604051809103906000f0801580156101d5573d6000803e3d6000fd5b506000805463ffffffff168152600260205260409081902080546001600160a01b0319166001600160a01b0393909316929092179091555130906102189061075a565b6001600160a01b039091168152602001604051809103906000f080158015610244573d6000803e3d6000fd5b5060008054640100000000900463ffffffff168152600260205260409081902080546001600160a01b0319166001600160a01b0393909316929092179091555161028d90610768565b604051809103906000f0801580156102a9573d6000803e3d6000fd5b506000805463ffffffff168152600360205260409081902080546001600160a01b0319166001600160a01b039390931692909217909155516102ea90610768565b604051809103906000f080158015610306573d6000803e3d6000fd5b5060008054640100000000900463ffffffff90811682526003602052604080832080546001600160a01b0319166001600160a01b039586161790558254909116825290819020549051637bca343d60e11b815290821660048201529083169063f794687a90602401600060405180830381600087803b15801561038857600080fd5b505af115801561039c573d6000803e3d6000fd5b505060008054640100000000900463ffffffff1681526003602052604090819020549051637bca343d60e11b81526001600160a01b039182166004820152908416925063f794687a9150602401600060405180830381600087803b15801561040357600080fd5b505af1158015610417573d6000803e3d6000fd5b50505063ffffffff80861660009081526001602052604080822080546001600160a01b038089166001600160a01b031992831617909255938816835281832080549187169190941617909255905190915061047190610776565b604051809103906000f08015801561048d573d6000803e3d6000fd5b509050600060405161049e90610776565b604051809103906000f0801580156104ba573d6000803e3d6000fd5b506000805463ffffffff16815260026020908152604080832054600390925291829020549151637c643b2f60e11b81526001600160a01b03888116600483015291821660248201529181166044830152306064830181905292935084169063f8c8765e90608401600060405180830381600087803b15801561053b57600080fd5b505af115801561054f573d6000803e3d6000fd5b505060008054640100000000900463ffffffff16815260026020908152604080832054600390925291829020549151637c643b2f60e11b81526001600160a01b0389811660048301529182166024820152918116604483015284811660648301528516925063f8c8765e9150608401600060405180830381600087803b1580156105d857600080fd5b505af11580156105ec573d6000803e3d6000fd5b50505050826001600160a01b031663b49c53a7876106138561074060201b61029e1760201c565b6040516001600160e01b031960e085901b16815263ffffffff9290921660048301526024820152604401600060405180830381600087803b15801561065757600080fd5b505af115801561066b573d6000803e3d6000fd5b50505050816001600160a01b031663b49c53a7886106928661074060201b61029e1760201c565b6040516001600160e01b031960e085901b16815263ffffffff9290921660048301526024820152604401600060405180830381600087803b1580156106d657600080fd5b505af11580156106ea573d6000803e3d6000fd5b5050505063ffffffff96871660009081526004602052604080822080546001600160a01b03199081166001600160a01b0397881617909155979098168152969096208054909516911617909255506107d0915050565b6001600160a01b031690565b61141f8062000afa83390190565b6116388062001f1983390190565b6103a4806200355183390190565b61268f80620038f583390190565b805163ffffffff8116811461079857600080fd5b919050565b600080604083850312156107b057600080fd5b6107b983610784565b91506107c760208401610784565b90509250929050565b61031a80620007e06000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063f11a367e11610050578063f11a367e14610142578063f9d2692d14610178578063f9f312ad1461018257600080fd5b80635a007b7e146100775780637a7eada3146100d6578063e9ee46951461010c575b600080fd5b6100ad6100853660046102b7565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100ad6100e43660046102b7565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100ad61011a3660046102b7565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100ad6101503660046102b7565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61018061018a565b005b61018061021d565b6000805463ffffffff168152600160205260408082205481517f1605c306000000000000000000000000000000000000000000000000000000008152915173ffffffffffffffffffffffffffffffffffffffff90911692631605c306926004808201939182900301818387803b15801561020357600080fd5b505af1158015610217573d6000803e3d6000fd5b50505050565b60008054640100000000900463ffffffff168152600160205260408082205481517f1605c306000000000000000000000000000000000000000000000000000000008152915173ffffffffffffffffffffffffffffffffffffffff90911692631605c306926004808201939182900301818387803b15801561020357600080fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b6000602082840312156102c957600080fd5b813563ffffffff811681146102dd57600080fd5b939250505056fea2646970667358221220256e8ff7308409572211f59609b34df9592549afad1e4019f005eed2c1f9ed6264736f6c6343000811003360a0604052600080546001600160601b031916905534801561002057600080fd5b5060405161141f38038061141f83398101604081905261003f9161004d565b63ffffffff1660805261007a565b60006020828403121561005f57600080fd5b815163ffffffff8116811461007357600080fd5b9392505050565b60805161137c6100a36000396000818161021801528181610a710152610c26015261137c6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806392d28b3d1161008c578063f794687a11610066578063f794687a146102b0578063fa31de0114610301578063fd10ebe514610314578063ffa1ad741461032457600080fd5b806392d28b3d1461023a578063a3b4919f1461025e578063d12164e41461029457600080fd5b80636b791ca1116100c85780636b791ca11461017e5780636e5f516e146101915780638209d312146101e65780638d3638f41461021357600080fd5b80631605c306146100ef578063522ae002146100f957806359b3f6e014610115575b600080fd5b6100f761033e565b005b61010261080081565b6040519081526020015b60405180910390f35b6100f7610123366004610cd5565b63ffffffff91909116600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6100f761018c366004610d55565b610660565b6000546101c1906c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161010c565b6000546101fe90640100000000900463ffffffff1681565b60405163ffffffff909116815260200161010c565b6101fe7f000000000000000000000000000000000000000000000000000000000000000081565b61024d610248366004610ddf565b610833565b60405161010c959493929190610e66565b6101c161026c366004610ebe565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6000546101fe9068010000000000000000900463ffffffff1681565b6100f76102be366004610ee0565b6000805473ffffffffffffffffffffffffffffffffffffffff9092166c01000000000000000000000000026bffffffffffffffffffffffff909216919091179055565b61010261030f366004610efd565b61091c565b6000546101fe9063ffffffff1681565b61032c600081565b60405160ff909116815260200161010c565b6000805463ffffffff680100000000000000009182900481168352600260208181526040808620815160a0810183528154808716825264010000000081049096169381019390935273ffffffffffffffffffffffffffffffffffffffff9590940485169082015260018301549093166060840152810180546080840191906103c590610f57565b80601f01602080910402602001604051908101604052809291908181526020018280546103f190610f57565b801561043e5780601f106104135761010080835404028352916020019161043e565b820191906000526020600020905b81548152906001019060200180831161042157829003601f168201915b505050919092525050506060810151909150600061045b82610b17565b905073ffffffffffffffffffffffffffffffffffffffff811615610568578073ffffffffffffffffffffffffffffffffffffffff1663f7e83aee61049e85610bf5565b6040518263ffffffff1660e01b81526004016104ba9190610faa565b6020604051808303816000875af11580156104d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fd9190610fcb565b610568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f49534d20766572696679206661696c656400000000000000000000000000000060448201526064015b60405180910390fd5b826060015173ffffffffffffffffffffffffffffffffffffffff166356d5d47584602001516105c4866040015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1690565b86608001516040518463ffffffff1660e01b81526004016105e793929190610fed565b600060405180830381600087803b15801561060157600080fd5b505af1158015610615573d6000803e3d6000fd5b50506000805468010000000000000000900463ffffffff1692509050600861063c8361101b565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050565b6040518060a001604052808763ffffffff1681526020018663ffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093909452505080546401000000009081900463ffffffff9081168352600260208181526040948590208751815492890151968901519085167fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009093169290921795909316909302939093177fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff9384160217815560608501516001820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909316179091556080840151909250908201906107eb90826110e3565b505060008054640100000000900463ffffffff169150600461080c8361101b565b91906101000a81548163ffffffff021916908363ffffffff16021790555050505050505050565b600260208190526000918252604090912080546001820154928201805463ffffffff808416956401000000008504909116946801000000000000000090940473ffffffffffffffffffffffffffffffffffffffff90811694911692909161089990610f57565b80601f01602080910402602001604051908101604052809291908181526020018280546108c590610f57565b80156109125780601f106108e757610100808354040283529160200191610912565b820191906000526020600020905b8154815290600101906020018083116108f557829003601f168201915b5050505050905085565b600061080082111561098a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6d736720746f6f206c6f6e670000000000000000000000000000000000000000604482015260640161055f565b63ffffffff851660009081526001602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610a1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d697373696e672072656d6f7465206d61696c626f7800000000000000000000604482015260640161055f565b6000546040517f6b791ca100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831691636b791ca191610aa19163ffffffff16907f00000000000000000000000000000000000000000000000000000000000000009033908b908b908b906004016111fd565b600060405180830381600087803b158015610abb57600080fd5b505af1158015610acf573d6000803e3d6000fd5b50506000805463ffffffff169250905080610ae98361101b565b91906101000a81548163ffffffff021916908363ffffffff160217905550506000801b915050949350505050565b60008173ffffffffffffffffffffffffffffffffffffffff1663de523cf36040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b9e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610b9b9181019061128a565b60015b15610bc75773ffffffffffffffffffffffffffffffffffffffff811615610bc55792915050565b505b50506000546c01000000000000000000000000900473ffffffffffffffffffffffffffffffffffffffff1690565b6060600082600001518360200151610c24856040015173ffffffffffffffffffffffffffffffffffffffff1690565b7f0000000000000000000000000000000000000000000000000000000000000000610c66876060015173ffffffffffffffffffffffffffffffffffffffff1690565b8760800151604051602001610c8197969594939291906112a7565b6040516020818303038152906040529050919050565b803563ffffffff81168114610cab57600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610cd257600080fd5b50565b60008060408385031215610ce857600080fd5b610cf183610c97565b91506020830135610d0181610cb0565b809150509250929050565b60008083601f840112610d1e57600080fd5b50813567ffffffffffffffff811115610d3657600080fd5b602083019150836020828501011115610d4e57600080fd5b9250929050565b60008060008060008060a08789031215610d6e57600080fd5b610d7787610c97565b9550610d8560208801610c97565b94506040870135610d9581610cb0565b93506060870135610da581610cb0565b9250608087013567ffffffffffffffff811115610dc157600080fd5b610dcd89828a01610d0c565b979a9699509497509295939492505050565b600060208284031215610df157600080fd5b5035919050565b60005b83811015610e13578181015183820152602001610dfb565b50506000910152565b60008151808452610e34816020860160208601610df8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b63ffffffff86811682528516602082015273ffffffffffffffffffffffffffffffffffffffff84811660408301528316606082015260a060808201819052600090610eb390830184610e1c565b979650505050505050565b600060208284031215610ed057600080fd5b610ed982610c97565b9392505050565b600060208284031215610ef257600080fd5b8135610ed981610cb0565b60008060008060608587031215610f1357600080fd5b610f1c85610c97565b935060208501359250604085013567ffffffffffffffff811115610f3f57600080fd5b610f4b87828801610d0c565b95989497509550505050565b600181811c90821680610f6b57607f821691505b602082108103610fa4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6040815260006040820152606060208201526000610ed96060830184610e1c565b600060208284031215610fdd57600080fd5b81518015158114610ed957600080fd5b63ffffffff841681528260208201526060604082015260006110126060830184610e1c565b95945050505050565b600063ffffffff80831681810361105b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6001019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f8211156110de57600081815260208120601f850160051c810160208610156110bb5750805b601f850160051c820191505b818110156110da578281556001016110c7565b5050505b505050565b815167ffffffffffffffff8111156110fd576110fd611065565b6111118161110b8454610f57565b84611094565b602080601f831160018114611164576000841561112e5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556110da565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156111b157888601518255948401946001909101908401611192565b50858210156111ed57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b63ffffffff87811682528616602082015273ffffffffffffffffffffffffffffffffffffffff85811660408301528416606082015260a06080820181905281018290526000828460c0840137600060c0848401015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168301019050979650505050505050565b60006020828403121561129c57600080fd5b8151610ed981610cb0565b7fff000000000000000000000000000000000000000000000000000000000000008860f81b16815260007fffffffff00000000000000000000000000000000000000000000000000000000808960e01b166001840152808860e01b166005840152866009840152808660e01b1660298401525083602d830152825161133381604d850160208701610df8565b91909101604d019897505050505050505056fea264697066735822122065b0f7b2155f8f53d2767c52080a8915df605ce13ec8e5c785cdf6c4e74abfb764736f6c6343000811003360806040523480156200001157600080fd5b506040516200163838038062001638833981016040819052620000349162000315565b62000040338262000047565b5062000347565b600054610100900460ff1615808015620000685750600054600160ff909116105b8062000098575062000085306200019160201b620009ed1760201c565b15801562000098575060005460ff166001145b620001015760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000125576000805461ff0019166101001790555b6200012f620001a0565b6200013a8362000208565b62000145826200025a565b80156200018c576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b600054610100900460ff16620001fc5760405162461bcd60e51b815260206004820152602b60248201526000805160206200161883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000f8565b62000206620002ae565b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606680546001600160a01b0319166001600160a01b0383169081179091556040519081527f04d55a8be181fb8d75b76f2d48aa0b2ee40f47e53d6e61763eeeec46feea8a249060200160405180910390a150565b600054610100900460ff166200030a5760405162461bcd60e51b815260206004820152602b60248201526000805160206200161883398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000f8565b620002063362000208565b6000602082840312156200032857600080fd5b81516001600160a01b03811681146200034057600080fd5b9392505050565b6112c180620003576000396000f3fe6080604052600436106100d25760003560e01c80634e71d92d1161007f5780638da5cb5b116100595780638da5cb5b14610259578063a692979314610284578063f2fde38b146102b2578063fe173b97146102d257600080fd5b80634e71d92d146101e657806360fcef7c146101fb578063715018a61461024457600080fd5b80632f202650116100b05780632f2026501461017957806338af3eed14610199578063485cc955146101c657600080fd5b806311bf2c18146100d75780631c31f710146100ec5780631d16c8c81461010c575b600080fd5b6100ea6100e5366004610f24565b6102e7565b005b3480156100f857600080fd5b506100ea610107366004610f6a565b6104d2565b34801561011857600080fd5b5061014f610127366004610f85565b60656020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561018557600080fd5b506100ea610194366004610fa0565b6104e6565b3480156101a557600080fd5b5060665461014f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d257600080fd5b506100ea6101e1366004611015565b61056c565b3480156101f257600080fd5b506100ea610712565b34801561020757600080fd5b5061021b610216366004610f85565b6107dc565b604080516fffffffffffffffffffffffffffffffff938416815292909116602083015201610170565b34801561025057600080fd5b506100ea61090f565b34801561026557600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff1661014f565b34801561029057600080fd5b506102a461029f366004611048565b610923565b604051908152602001610170565b3480156102be57600080fd5b506100ea6102cd366004610f6a565b610939565b3480156102de57600080fd5b506102a4600a81565b60006102f38484610923565b90508034101561038a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f696e73756666696369656e7420696e746572636861696e20676173207061796d60448201527f656e74000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b600061039682346110a1565b9050801561048f5760008373ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146103f8576040519150601f19603f3d011682016040523d82523d6000602084013e6103fd565b606091505b505090508061048d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f496e746572636861696e20676173207061796d656e7420726566756e6420666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152608401610381565b505b604080518581526020810184905287917ff715e66d2cd2a0179069dcda2a41a4da36a30e1aad12187fbb7c5d100afd621c910160405180910390a2505050505050565b6104da610a09565b6104e381610a8a565b50565b6104ee610a09565b8060005b818110156105665761055484848381811061050f5761050f6110b4565b6105259260206040909202019081019150610f85565b858584818110610537576105376110b4565b905060400201602001602081019061054f9190610f6a565b610b03565b8061055e816110e3565b9150506104f2565b50505050565b600054610100900460ff161580801561058c5750600054600160ff909116105b806105a65750303b1580156105a6575060005460ff166001145b610632576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610381565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561069057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610698610b91565b6106a183610c30565b6106aa82610a8a565b801561070d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60665460405160009173ffffffffffffffffffffffffffffffffffffffff169047908381818185875af1925050503d806000811461076c576040519150601f19603f3d011682016040523d82523d6000602084013e610771565b606091505b50509050806104e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f217472616e7366657200000000000000000000000000000000000000000000006044820152606401610381565b63ffffffff81166000818152606560205260408120549091829173ffffffffffffffffffffffffffffffffffffffff16908115159061081a90610ca7565b60405160200161082a919061113f565b60405160208183030381529060405290610871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038191906111aa565b506040517f60fcef7c00000000000000000000000000000000000000000000000000000000815263ffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8216906360fcef7c906024016040805180830381865afa1580156108e1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610905919061121b565b9250925050915091565b610917610a09565b6109216000610c30565b565b600061093082600a611245565b90505b92915050565b610941610a09565b73ffffffffffffffffffffffffffffffffffffffff81166109e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610381565b6104e381610c30565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60335473ffffffffffffffffffffffffffffffffffffffff163314610921576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610381565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f04d55a8be181fb8d75b76f2d48aa0b2ee40f47e53d6e61763eeeec46feea8a249060200160405180910390a150565b63ffffffff821660008181526065602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f38b842e116ff320f6a79ba4cf434eee927fa156b226c65c90d62989de589b4e7910160405180910390a25050565b600054610100900460ff16610c28576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610381565b610921610d65565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606000610cb483610e05565b600101905060008167ffffffffffffffff811115610cd457610cd461125c565b6040519080825280601f01601f191660200182016040528015610cfe576020820181803683370190505b5090508181016020015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610d0857509392505050565b600054610100900460ff16610dfc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610381565b61092133610c30565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310610e4e577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310610e7a576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610e9857662386f26fc10000830492506010015b6305f5e1008310610eb0576305f5e100830492506008015b6127108310610ec457612710830492506004015b60648310610ed6576064830492506002015b600a83106109335760010192915050565b803563ffffffff81168114610efb57600080fd5b919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610efb57600080fd5b60008060008060808587031215610f3a57600080fd5b84359350610f4a60208601610ee7565b925060408501359150610f5f60608601610f00565b905092959194509250565b600060208284031215610f7c57600080fd5b61093082610f00565b600060208284031215610f9757600080fd5b61093082610ee7565b60008060208385031215610fb357600080fd5b823567ffffffffffffffff80821115610fcb57600080fd5b818501915085601f830112610fdf57600080fd5b813581811115610fee57600080fd5b8660208260061b850101111561100357600080fd5b60209290920196919550909350505050565b6000806040838503121561102857600080fd5b61103183610f00565b915061103f60208401610f00565b90509250929050565b6000806040838503121561105b57600080fd5b61106483610ee7565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561093357610933611072565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361111457611114611072565b5060010190565b60005b8381101561113657818101518382015260200161111e565b50506000910152565b7f436f6e666967757265642049475020646f65736e277420737570706f7274206481527f6f6d61696e20000000000000000000000000000000000000000000000000000060208201526000825161119d81602685016020870161111b565b9190910160260192915050565b60208152600082518060208401526111c981604085016020870161111b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b80516fffffffffffffffffffffffffffffffff81168114610efb57600080fd5b6000806040838503121561122e57600080fd5b611237836111fb565b915061103f602084016111fb565b808202811582820484141761093357610933611072565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fdfea26469706673582212202f82fbe9e6a228aa8f469fd8afecb32fce0023b4f54a632c347db98cbd8b640f64736f6c63430008110033496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069608060405234801561001057600080fd5b506000805460ff191660011790556103778061002d6000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634fc3aa7c116100505780634fc3aa7c146100af5780636465e69f146100f0578063f7e83aee1461010a57600080fd5b80632852b71c1461006c5780632e0ed2341461008e575b600080fd5b6000546100799060ff1681565b60405190151581526020015b60405180910390f35b6100a161009c3660046101d7565b610126565b604051610085929190610219565b6100ee6100bd36600461027d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b005b6100f8600481565b60405160ff9091168152602001610085565b6100796101183660046102a6565b60005460ff16949350505050565b60408051600180825281830190925260609160009182916020808301908036833701905050905060008160008151811061016257610162610312565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101529150600190505b9250929050565b60008083601f8401126101a757600080fd5b50813567ffffffffffffffff8111156101bf57600080fd5b60208301915083602082850101111561018e57600080fd5b600080602083850312156101ea57600080fd5b823567ffffffffffffffff81111561020157600080fd5b61020d85828601610195565b90969095509350505050565b604080825283519082018190526000906020906060840190828701845b8281101561026857815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101610236565b50505060ff9490941692019190915250919050565b60006020828403121561028f57600080fd5b8135801515811461029f57600080fd5b9392505050565b600080600080604085870312156102bc57600080fd5b843567ffffffffffffffff808211156102d457600080fd5b6102e088838901610195565b909650945060208701359150808211156102f957600080fd5b5061030687828801610195565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea264697066735822122017c3918e1ebea8ac9a9de746c40c8b031b8fef948d0933d04030e580d6ee3bfa64736f6c63430008110033608060405234801561001057600080fd5b5061266f806100206000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c80638da5cb5b116100b2578063e9198bf911610081578063f2fde38b11610066578063f2fde38b1461028d578063f3c61d6b146102a0578063f8c8765e146102b357600080fd5b8063e9198bf914610267578063f1bd6f0a1461027a57600080fd5b80638da5cb5b146101f6578063b49c53a714610214578063d5438eae14610227578063de523cf31461024757600080fd5b8063440df4f4116100ee578063440df4f4146101b357806356d5d475146101c8578063715018a6146101db5780638cc02cab146101e357600080fd5b80630e72cc06146101205780632222b452146101355780632ead72f61461015b57806339bb4ad91461016e575b600080fd5b61013361012e3660046118d0565b6102c6565b005b610148610143366004611a34565b6102da565b6040519081526020015b60405180910390f35b610148610169366004611ab9565b61032d565b60665461018e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610152565b6101bb61034c565b6040516101529190611ad4565b6101336101d6366004611b1e565b61035d565b610133610455565b6101486101f1366004611bea565b610469565b60335473ffffffffffffffffffffffffffffffffffffffff1661018e565b610133610222366004611c3d565b6104ad565b60655461018e9073ffffffffffffffffffffffffffffffffffffffff1681565b60675461018e9073ffffffffffffffffffffffffffffffffffffffff1681565b610133610275366004611c67565b6104c3565b6101336102883660046118d0565b61059a565b61013361029b3660046118d0565b6105ab565b6101336102ae3660046118d0565b61065f565b6101336102c1366004611cd3565b610670565b6102ce61080a565b6102d78161088b565b50565b604051600090339063ffffffff8716907f11c97c784c298562a796345417aa40e1ce110e6b100f41b801ab23414f72d7e5908490a36103248561031f33878787610999565b610a4d565b95945050505050565b600080610344609863ffffffff80861690610b0116565b949350505050565b60606103586098610b1a565b905090565b60655473ffffffffffffffffffffffffffffffffffffffff1633146103e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f216d61696c626f7800000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b83836103ef8282610bd5565b6040518060800160405280604381526020016125d26043913990610440576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103da9190611d95565b5061044d86868686610be9565b505050505050565b61045d61080a565b6104676000610d0d565b565b604051600090339063ffffffff8616907f11c97c784c298562a796345417aa40e1ce110e6b100f41b801ab23414f72d7e5908490a36103448461031f338686610d84565b6104b561080a565b6104bf8282610db6565b5050565b6104cb61080a565b828114610534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f216c656e6774680000000000000000000000000000000000000000000000000060448201526064016103da565b8260005b8181101561044d5761058886868381811061055557610555611da8565b905060200201602081019061056a9190611ab9565b85858481811061057c5761057c611da8565b90506020020135610db6565b610593600182611e06565b9050610538565b6105a261080a565b6102d781610e10565b6105b361080a565b73ffffffffffffffffffffffffffffffffffffffff8116610656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103da565b6102d781610d0d565b61066761080a565b6102d781610eff565b600054610100900460ff16158080156106905750600054600160ff909116105b806106aa5750303b1580156106aa575060005460ff166001145b610736576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103da565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561079457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6107a085858585610fee565b801561080357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103da565b73ffffffffffffffffffffffffffffffffffffffff811615806108c4575073ffffffffffffffffffffffffffffffffffffffff81163b15155b61092a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e7472616374000000000000000000000000000000000000000000000060448201526064016103da565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ffec811ed4e60aebdaf7a79cad8a97196bf56e35362f039705598226d30c9d24890600090a250565b60408051600180825281830190925260609160009190816020015b6109df6040805160808101825260009181019182526060808201529081908152602001606081525090565b8152602001906001900390816109b45790505090506109ff8585856110af565b81600081518110610a1257610a12611da8565b602002602001018190525085600082604051602001610a3393929190611e83565b604051602081830303815290604052915050949350505050565b600080610a59846110ff565b6065546040517ffa31de0100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063fa31de0190610ab490879085908890600401611f4e565b6020604051808303816000875af1158015610ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af79190611f73565b9150505b92915050565b600080610b0e8484611175565b915091505b9250929050565b60606000610b27836111af565b9050805167ffffffffffffffff811115610b4357610b436118ff565b604051908082528060200260200182016040528015610b6c578160200160208202803683370190505b50915060005b8151811015610bce57818181518110610b8d57610b8d611da8565b6020026020010151838281518110610ba757610ba7611da8565b63ffffffff9092166020928302919091019091015280610bc681611f8c565b915050610b72565b5050919050565b600081610be18461032d565b149392505050565b6000610bf5838361124a565b90506000610c03848461128b565b90506000826001811115610c1957610c19611e19565b03610c83576000610c2a85856112a3565b90506000610c37826112db565b9050828863ffffffff167fb689f7016112eaacc7edebd6ea5eb700790a103e79c39ce0118e075de87d797660405160405180910390a3610c7b8861031f8584611386565b50505061044d565b6001826001811115610c9757610c97611e19565b03610d0557806000610ca986866113b5565b9050610cb582826113ed565b60405173ffffffffffffffffffffffffffffffffffffffff83169063ffffffff8a16907fc4416e2fcdf8514178829e5ead195eb13f3241ea71c0e38f998868fe81e4226990600090a3505061044d565b61044d611fc4565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60608360008484604051602001610d9e94939291906120dd565b60405160208183030381529060405290509392505050565b610dcc609863ffffffff80851690849061142a16565b8163ffffffff167f97fd51fef1f80c854cbd0150c248e8b2ac4ecdc97cc05e742b5f61c9f4dc645882604051610e0491815260200190565b60405180910390a25050565b8073ffffffffffffffffffffffffffffffffffffffff81163b610e8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e7472616374000000000000000000000000000000000000000000000060448201526064016103da565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fb87f5a0bface22cde699143559fb99f990ae54eea236995fc54178af91af859f90600090a25050565b8073ffffffffffffffffffffffffffffffffffffffff81163b610f7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e7472616374000000000000000000000000000000000000000000000060448201526064016103da565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517f7a61e573722ff8b205c8962b59d37e7d30573f368965597a844a94872204ebd790600090a25050565b600054610100900460ff16611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016103da565b61108e84610eff565b61109783610e10565b6110a08261088b565b6110a981610d0d565b50505050565b6110da6040805160808101825260009181019182526060808201529081908152602001606081525090565b60405180604001604052806110ef8686611435565b8152602001929092525092915050565b60008080611117609863ffffffff80871690610b0116565b91509150816040518060800160405280604381526020016125d2604391399061116d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103da9190611d95565b509392505050565b60008181526002830160205260408120548190806111a4576111978585611487565b925060009150610b139050565b600192509050610b13565b606060006111bc83611493565b90508067ffffffffffffffff8111156111d7576111d76118ff565b604051908082528060200260200182016040528015611200578160200160208202803683370190505b50915060005b81811015610bce57611218848261149e565b60001c83828151811061122d5761122d611da8565b60209081029190910101528061124281611f8c565b915050611206565b6000828261125a600160406121b8565b81811061126957611269611da8565b919091013560f81c9050600181111561128457611284611e19565b9392505050565b600061129a60208284866121cb565b611284916121f5565b606060006112b1848461124a565b60018111156112c2576112c2611e19565b146112cf576112cf611fc4565b61032482840184612264565b8051606090600090818167ffffffffffffffff8111156112fd576112fd6118ff565b60405190808252806020026020018201604052801561133057816020015b606081526020019060019003908161131b5790505b5090505b818310156103445761135e85848151811061135157611351611da8565b60200260200101516114aa565b81848151811061137057611370611da8565b6020026020010181905250826001019250611334565b60608260018360405160200161139e93929190612423565b604051602081830303815290604052905092915050565b606060016113c3848461124a565b60018111156113d4576113d4611e19565b146113e1576113e1611fc4565b610324828401846124b9565b80516000905b808210156110a95761141e8484848151811061141157611411611da8565b60200260200101516114e5565b508160010191506113f3565b6110a9838383611529565b6040805180820182526000808252606060208084018290528451808601865292835291820152825180840190935273ffffffffffffffffffffffffffffffffffffffff85168352820183905290611284565b60006112848383611546565b6000610afb8261155e565b60006112848383611568565b606081602001516114be8360000151611592565b6040516020016114cf929190612586565b6040516020818303038152906040529050919050565b6060611284838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506115a5565b6000828152600284016020526040812082905561034484846116be565b60008181526001830160205260408120541515611284565b6000610afb825490565b600082600001828154811061157f5761157f611da8565b9060005260206000200154905092915050565b8051606090610afb9083602001516116ca565b606082471015611637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016103da565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161166091906125b5565b60006040518083038185875af1925050503d806000811461169d576040519150601f19603f3d011682016040523d82523d6000602084013e6116a2565b606091505b50915091506116b3878383876116ef565b979650505050505050565b6000611284838361178f565b60606112848383604051806060016040528060258152602001612615602591396117de565b6060831561178557825160000361177e5773ffffffffffffffffffffffffffffffffffffffff85163b61177e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103da565b5081610344565b6103448383611863565b60008181526001830160205260408120546117d657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610afb565b506000610afb565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161180891906125b5565b600060405180830381855afa9150503d8060008114611843576040519150601f19603f3d011682016040523d82523d6000602084013e611848565b606091505b5091509150611859868383876116ef565b9695505050505050565b8151156118735781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103da9190611d95565b803573ffffffffffffffffffffffffffffffffffffffff811681146118cb57600080fd5b919050565b6000602082840312156118e257600080fd5b611284826118a7565b803563ffffffff811681146118cb57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611951576119516118ff565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561199e5761199e6118ff565b604052919050565b600082601f8301126119b757600080fd5b813567ffffffffffffffff8111156119d1576119d16118ff565b611a0260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611957565b818152846020838601011115611a1757600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611a4a57600080fd5b611a53856118eb565b9350611a61602086016118a7565b9250604085013567ffffffffffffffff80821115611a7e57600080fd5b611a8a888389016119a6565b93506060870135915080821115611aa057600080fd5b50611aad878288016119a6565b91505092959194509250565b600060208284031215611acb57600080fd5b611284826118eb565b6020808252825182820181905260009190848201906040850190845b81811015611b1257835163ffffffff1683529284019291840191600101611af0565b50909695505050505050565b60008060008060608587031215611b3457600080fd5b611b3d856118eb565b935060208501359250604085013567ffffffffffffffff80821115611b6157600080fd5b818701915087601f830112611b7557600080fd5b813581811115611b8457600080fd5b886020828501011115611b9657600080fd5b95989497505060200194505050565b60008083601f840112611bb757600080fd5b50813567ffffffffffffffff811115611bcf57600080fd5b6020830191508360208260051b8501011115610b1357600080fd5b600080600060408486031215611bff57600080fd5b611c08846118eb565b9250602084013567ffffffffffffffff811115611c2457600080fd5b611c3086828701611ba5565b9497909650939450505050565b60008060408385031215611c5057600080fd5b611c59836118eb565b946020939093013593505050565b60008060008060408587031215611c7d57600080fd5b843567ffffffffffffffff80821115611c9557600080fd5b611ca188838901611ba5565b90965094506020870135915080821115611cba57600080fd5b50611cc787828801611ba5565b95989497509550505050565b60008060008060808587031215611ce957600080fd5b611cf2856118a7565b9350611d00602086016118a7565b9250611d0e604086016118a7565b9150611d1c606086016118a7565b905092959194509250565b60005b83811015611d42578181015183820152602001611d2a565b50506000910152565b60008151808452611d63816020860160208601611d27565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006112846020830184611d4b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610afb57610afb611dd7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60028110611e7f577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600060608083018684526020611e9b81860188611e48565b60408381870152828751808552608094508488019150848160051b890101848a0160005b83811015611f3c578a83037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80018552815180518785528051888601528801518a8501889052611f108a860182611d4b565b91890151858303868b0152919050611f288183611d4b565b968901969450505090860190600101611ebf565b50909c9b505050505050505050505050565b63ffffffff841681528260208201526060604082015260006103246060830184611d4b565b600060208284031215611f8557600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611fbd57611fbd611dd7565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261202757600080fd5b90910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261206557600080fd5b830160208101925035905067ffffffffffffffff81111561208557600080fd5b803603821315610b1357600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6000606080830187845260206120f581860189611e48565b604085810184905291869052608091828601600588901b870184018960005b8a811015611f3c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a840301845261214d828d611ff3565b6121578182611ff3565b86855280358786015261216c88820182612030565b9150878b8701526121808a87018383612094565b91505061218f88830183612030565b9250858203898701526121a3828483612094565b96890196955050509186019150600101612114565b81810381811115610afb57610afb611dd7565b600080858511156121db57600080fd5b838611156121e857600080fd5b5050820193919092039150565b80356020831015610afb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b8035600281106118cb57600080fd5b600067ffffffffffffffff82111561225a5761225a6118ff565b5060051b60200190565b60008060006060848603121561227957600080fd5b8335925061228960208501612231565b915067ffffffffffffffff604085013511156122a457600080fd5b6040840135840185601f8201126122ba57600080fd5b6122cc6122c78235612240565b611957565b81358082526020808301929160051b8401018810156122ea57600080fd5b602083015b6020843560051b8501018110156124155767ffffffffffffffff8135111561231657600080fd5b803584017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604081838d0301121561234d57600080fd5b61235561192e565b67ffffffffffffffff6020840135111561236e57600080fd5b60208301358301604083828f0301121561238757600080fd5b61238f61192e565b92506020810135835267ffffffffffffffff604082013511156123b157600080fd5b6123c48d602060408401358401016119a6565b60208401525081815267ffffffffffffffff604084013511156123e657600080fd5b6123f98c602060408601358601016119a6565b60208201528086525050506020830192506020810190506122ef565b508093505050509250925092565b600060608201858352602061243a81850187611e48565b6060604085015281855180845260808601915060808160051b870101935082870160005b828110156124aa577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80888703018452612498868351611d4b565b9550928401929084019060010161245e565b50939998505050505050505050565b6000806000606084860312156124ce57600080fd5b8335925060206124df818601612231565b9250604085013567ffffffffffffffff808211156124fc57600080fd5b818701915087601f83011261251057600080fd5b813561251e6122c782612240565b81815260059190911b8301840190848101908a83111561253d57600080fd5b8585015b83811015612575578035858111156125595760008081fd5b6125678d89838a01016119a6565b845250918601918601612541565b508096505050505050509250925092565b60008351612598818460208801611d27565b8351908301906125ac818360208801611d27565b01949350505050565b600082516125c7818460208701611d27565b919091019291505056fe4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e2e2044696420796f7520737065636966792074686520726967687420646f6d61696e2049443f416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564a26469706673582212202db54ae2565b4596f47a5733d76d03ceff1296b19167c3ad7eafc3d56e136bab64736f6c63430008110033";
115
115
  const isSuperArgs = (xs) => xs.length > 1;
116
116
  class MockHyperlaneEnvironment__factory extends ethers_1.ContractFactory {
117
117
  constructor(...args) {
@@ -1 +1 @@
1
- {"version":3,"file":"MockHyperlaneEnvironment__factory.js","sourceRoot":"","sources":["../../../../types/factories/contracts/mock/MockHyperlaneEnvironment__factory.ts"],"names":[],"mappings":";AAAA,+CAA+C;;;AAU/C,mCAOgB;AAEhB,MAAM,IAAI,GAAG;IACX;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,QAAQ;aACf;YACD;gBACE,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE,oBAAoB;gBAC1B,IAAI,EAAE,QAAQ;aACf;SACF;QACD,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,aAAa;KACpB;IACD;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,QAAQ;aACf;SACF;QACD,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,qCAAqC;gBACnD,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,QAAQ;aACf;SACF;QACD,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,oCAAoC;gBAClD,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,QAAQ;aACf;SACF;QACD,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,sBAAsB;gBACpC,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,2BAA2B;QACjC,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,0CAA0C;QAChD,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,QAAQ;aACf;SACF;QACD,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,gCAAgC;gBAC9C,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACF,CAAC;AAEF,MAAM,SAAS,GACb,4o8CAA4o8C,CAAC;AAM/o8C,MAAM,WAAW,GAAG,CAClB,EAA6C,EACQ,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAExE,MAAa,iCAAkC,SAAQ,wBAAe;IACpE,YAAY,GAAG,IAA+C;QAC5D,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;YACrB,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;SAChB;aAAM;YACL,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SACjC;IACH,CAAC;IAEQ,MAAM,CACb,aAA2B,EAC3B,kBAAgC,EAChC,SAA2D;QAE3D,OAAO,KAAK,CAAC,MAAM,CACjB,aAAa,EACb,kBAAkB,EAClB,SAAS,IAAI,EAAE,CACqB,CAAC;IACzC,CAAC;IACQ,oBAAoB,CAC3B,aAA2B,EAC3B,kBAAgC,EAChC,SAA2D;QAE3D,OAAO,KAAK,CAAC,oBAAoB,CAC/B,aAAa,EACb,kBAAkB,EAClB,SAAS,IAAI,EAAE,CAChB,CAAC;IACJ,CAAC;IACQ,MAAM,CAAC,OAAe;QAC7B,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAA6B,CAAC;IAC3D,CAAC;IACQ,OAAO,CAAC,MAAc;QAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAsC,CAAC;IACpE,CAAC;IAID,MAAM,CAAC,eAAe;QACpB,OAAO,IAAI,cAAK,CAAC,SAAS,CAAC,IAAI,CAAsC,CAAC;IACxE,CAAC;IACD,MAAM,CAAC,OAAO,CACZ,OAAe,EACf,gBAAmC;QAEnC,OAAO,IAAI,iBAAQ,CACjB,OAAO,EACP,IAAI,EACJ,gBAAgB,CACW,CAAC;IAChC,CAAC;;AApDH,8EAqDC;AAfiB,0CAAQ,GAAG,SAAS,CAAC;AACrB,qCAAG,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"MockHyperlaneEnvironment__factory.js","sourceRoot":"","sources":["../../../../types/factories/contracts/mock/MockHyperlaneEnvironment__factory.ts"],"names":[],"mappings":";AAAA,+CAA+C;;;AAU/C,mCAOgB;AAEhB,MAAM,IAAI,GAAG;IACX;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE,eAAe;gBACrB,IAAI,EAAE,QAAQ;aACf;YACD;gBACE,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE,oBAAoB;gBAC1B,IAAI,EAAE,QAAQ;aACf;SACF;QACD,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,aAAa;KACpB;IACD;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,QAAQ;aACf;SACF;QACD,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,qCAAqC;gBACnD,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,QAAQ;aACf;SACF;QACD,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,oCAAoC;gBAClD,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,QAAQ;aACf;SACF;QACD,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,sBAAsB;gBACpC,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,2BAA2B;QACjC,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,0CAA0C;QAChD,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACjB;IACD;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,QAAQ;aACf;SACF;QACD,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,gCAAgC;gBAC9C,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACF,CAAC;AAEF,MAAM,SAAS,GACb,4w/CAA4w/C,CAAC;AAM/w/C,MAAM,WAAW,GAAG,CAClB,EAA6C,EACQ,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAExE,MAAa,iCAAkC,SAAQ,wBAAe;IACpE,YAAY,GAAG,IAA+C;QAC5D,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE;YACrB,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;SAChB;aAAM;YACL,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;SACjC;IACH,CAAC;IAEQ,MAAM,CACb,aAA2B,EAC3B,kBAAgC,EAChC,SAA2D;QAE3D,OAAO,KAAK,CAAC,MAAM,CACjB,aAAa,EACb,kBAAkB,EAClB,SAAS,IAAI,EAAE,CACqB,CAAC;IACzC,CAAC;IACQ,oBAAoB,CAC3B,aAA2B,EAC3B,kBAAgC,EAChC,SAA2D;QAE3D,OAAO,KAAK,CAAC,oBAAoB,CAC/B,aAAa,EACb,kBAAkB,EAClB,SAAS,IAAI,EAAE,CAChB,CAAC;IACJ,CAAC;IACQ,MAAM,CAAC,OAAe;QAC7B,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAA6B,CAAC;IAC3D,CAAC;IACQ,OAAO,CAAC,MAAc;QAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAsC,CAAC;IACpE,CAAC;IAID,MAAM,CAAC,eAAe;QACpB,OAAO,IAAI,cAAK,CAAC,SAAS,CAAC,IAAI,CAAsC,CAAC;IACxE,CAAC;IACD,MAAM,CAAC,OAAO,CACZ,OAAe,EACf,gBAAmC;QAEnC,OAAO,IAAI,iBAAQ,CACjB,OAAO,EACP,IAAI,EACJ,gBAAgB,CACW,CAAC;IAChC,CAAC;;AApDH,8EAqDC;AAfiB,0CAAQ,GAAG,SAAS,CAAC;AACrB,qCAAG,GAAG,IAAI,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import type { MockMailbox, MockMailboxInterface } from "../../../contracts/mock/MockMailbox";
2
2
  import type { Provider, TransactionRequest } from "@ethersproject/providers";
3
3
  import { Signer, ContractFactory, BigNumberish, Overrides } from "ethers";
4
- declare type MockMailboxConstructorParams = [signer?: Signer] | ConstructorParameters<typeof ContractFactory>;
4
+ type MockMailboxConstructorParams = [signer?: Signer] | ConstructorParameters<typeof ContractFactory>;
5
5
  export declare class MockMailbox__factory extends ContractFactory {
6
6
  constructor(...args: MockMailboxConstructorParams);
7
7
  deploy(_domain: BigNumberish, overrides?: Overrides & {
@@ -1 +1 @@
1
- {"version":3,"file":"MockMailbox__factory.d.ts","sourceRoot":"","sources":["../../../../types/factories/contracts/mock/MockMailbox__factory.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,WAAW,EACX,oBAAoB,EACrB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EACL,MAAM,EAGN,eAAe,EACf,YAAY,EACZ,SAAS,EACV,MAAM,QAAQ,CAAC;AA4QhB,aAAK,4BAA4B,GAC7B,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GACjB,qBAAqB,CAAC,OAAO,eAAe,CAAC,CAAC;AAMlD,qBAAa,oBAAqB,SAAQ,eAAe;gBAC3C,GAAG,IAAI,EAAE,4BAA4B;IAQxC,MAAM,CACb,OAAO,EAAE,YAAY,EACrB,SAAS,CAAC,EAAE,SAAS,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAC1D,OAAO,CAAC,WAAW,CAAC;IAGd,oBAAoB,CAC3B,OAAO,EAAE,YAAY,EACrB,SAAS,CAAC,EAAE,SAAS,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAC1D,kBAAkB;IAGZ,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IAGpC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB;IAItD,MAAM,CAAC,QAAQ,CAAC,QAAQ,skUAAa;IACrC,MAAM,CAAC,QAAQ,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;SAAQ;IAC3B,MAAM,CAAC,eAAe,IAAI,oBAAoB;IAG9C,MAAM,CAAC,OAAO,CACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,QAAQ,GAClC,WAAW;CAGf"}
1
+ {"version":3,"file":"MockMailbox__factory.d.ts","sourceRoot":"","sources":["../../../../types/factories/contracts/mock/MockMailbox__factory.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,WAAW,EACX,oBAAoB,EACrB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EACL,MAAM,EAGN,eAAe,EACf,YAAY,EACZ,SAAS,EACV,MAAM,QAAQ,CAAC;AA4QhB,KAAK,4BAA4B,GAC7B,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GACjB,qBAAqB,CAAC,OAAO,eAAe,CAAC,CAAC;AAMlD,qBAAa,oBAAqB,SAAQ,eAAe;gBAC3C,GAAG,IAAI,EAAE,4BAA4B;IAQxC,MAAM,CACb,OAAO,EAAE,YAAY,EACrB,SAAS,CAAC,EAAE,SAAS,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAC1D,OAAO,CAAC,WAAW,CAAC;IAGd,oBAAoB,CAC3B,OAAO,EAAE,YAAY,EACrB,SAAS,CAAC,EAAE,SAAS,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAC1D,kBAAkB;IAGZ,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IAGpC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB;IAItD,MAAM,CAAC,QAAQ,CAAC,QAAQ,skUAAa;IACrC,MAAM,CAAC,QAAQ,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;SAAQ;IAC3B,MAAM,CAAC,eAAe,IAAI,oBAAoB;IAG9C,MAAM,CAAC,OAAO,CACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,QAAQ,GAClC,WAAW;CAGf"}
@@ -1,7 +1,7 @@
1
1
  import type { MockPortalBridge, MockPortalBridgeInterface } from "../../../contracts/mock/MockPortalBridge";
2
2
  import type { Provider, TransactionRequest } from "@ethersproject/providers";
3
3
  import { Signer, ContractFactory, Overrides } from "ethers";
4
- declare type MockPortalBridgeConstructorParams = [signer?: Signer] | ConstructorParameters<typeof ContractFactory>;
4
+ type MockPortalBridgeConstructorParams = [signer?: Signer] | ConstructorParameters<typeof ContractFactory>;
5
5
  export declare class MockPortalBridge__factory extends ContractFactory {
6
6
  constructor(...args: MockPortalBridgeConstructorParams);
7
7
  deploy(_token: string, overrides?: Overrides & {
@@ -1 +1 @@
1
- {"version":3,"file":"MockPortalBridge__factory.d.ts","sourceRoot":"","sources":["../../../../types/factories/contracts/mock/MockPortalBridge__factory.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,gBAAgB,EAChB,yBAAyB,EAC1B,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAmB,eAAe,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAuQ7E,aAAK,iCAAiC,GAClC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GACjB,qBAAqB,CAAC,OAAO,eAAe,CAAC,CAAC;AAMlD,qBAAa,yBAA0B,SAAQ,eAAe;gBAChD,GAAG,IAAI,EAAE,iCAAiC;IAQ7C,MAAM,CACb,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,SAAS,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAC1D,OAAO,CAAC,gBAAgB,CAAC;IAGnB,oBAAoB,CAC3B,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,SAAS,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAC1D,kBAAkB;IAGZ,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB;IAGzC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,yBAAyB;IAI3D,MAAM,CAAC,QAAQ,CAAC,QAAQ,sxLAAa;IACrC,MAAM,CAAC,QAAQ,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAAQ;IAC3B,MAAM,CAAC,eAAe,IAAI,yBAAyB;IAGnD,MAAM,CAAC,OAAO,CACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,QAAQ,GAClC,gBAAgB;CAGpB"}
1
+ {"version":3,"file":"MockPortalBridge__factory.d.ts","sourceRoot":"","sources":["../../../../types/factories/contracts/mock/MockPortalBridge__factory.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,gBAAgB,EAChB,yBAAyB,EAC1B,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAmB,eAAe,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAuQ7E,KAAK,iCAAiC,GAClC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GACjB,qBAAqB,CAAC,OAAO,eAAe,CAAC,CAAC;AAMlD,qBAAa,yBAA0B,SAAQ,eAAe;gBAChD,GAAG,IAAI,EAAE,iCAAiC;IAQ7C,MAAM,CACb,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,SAAS,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAC1D,OAAO,CAAC,gBAAgB,CAAC;IAGnB,oBAAoB,CAC3B,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,SAAS,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAC1D,kBAAkB;IAGZ,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB;IAGzC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,yBAAyB;IAI3D,MAAM,CAAC,QAAQ,CAAC,QAAQ,sxLAAa;IACrC,MAAM,CAAC,QAAQ,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAAQ;IAC3B,MAAM,CAAC,eAAe,IAAI,yBAAyB;IAGnD,MAAM,CAAC,OAAO,CACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,QAAQ,GAClC,gBAAgB;CAGpB"}
@@ -1,7 +1,7 @@
1
1
  import type { MockToken, MockTokenInterface } from "../../../contracts/mock/MockToken";
2
2
  import type { Provider, TransactionRequest } from "@ethersproject/providers";
3
3
  import { Signer, ContractFactory, Overrides } from "ethers";
4
- declare type MockTokenConstructorParams = [signer?: Signer] | ConstructorParameters<typeof ContractFactory>;
4
+ type MockTokenConstructorParams = [signer?: Signer] | ConstructorParameters<typeof ContractFactory>;
5
5
  export declare class MockToken__factory extends ContractFactory {
6
6
  constructor(...args: MockTokenConstructorParams);
7
7
  deploy(overrides?: Overrides & {
@@ -1 +1 @@
1
- {"version":3,"file":"MockToken__factory.d.ts","sourceRoot":"","sources":["../../../../types/factories/contracts/mock/MockToken__factory.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,SAAS,EACT,kBAAkB,EACnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAmB,eAAe,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAkU7E,aAAK,0BAA0B,GAC3B,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GACjB,qBAAqB,CAAC,OAAO,eAAe,CAAC,CAAC;AAMlD,qBAAa,kBAAmB,SAAQ,eAAe;gBACzC,GAAG,IAAI,EAAE,0BAA0B;IAQtC,MAAM,CACb,SAAS,CAAC,EAAE,SAAS,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAC1D,OAAO,CAAC,SAAS,CAAC;IAGZ,oBAAoB,CAC3B,SAAS,CAAC,EAAE,SAAS,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAC1D,kBAAkB;IAGZ,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS;IAGlC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB;IAIpD,MAAM,CAAC,QAAQ,CAAC,QAAQ,wtOAAa;IACrC,MAAM,CAAC,QAAQ,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;SAAQ;IAC3B,MAAM,CAAC,eAAe,IAAI,kBAAkB;IAG5C,MAAM,CAAC,OAAO,CACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,QAAQ,GAClC,SAAS;CAGb"}
1
+ {"version":3,"file":"MockToken__factory.d.ts","sourceRoot":"","sources":["../../../../types/factories/contracts/mock/MockToken__factory.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,SAAS,EACT,kBAAkB,EACnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAmB,eAAe,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAkU7E,KAAK,0BAA0B,GAC3B,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GACjB,qBAAqB,CAAC,OAAO,eAAe,CAAC,CAAC;AAMlD,qBAAa,kBAAmB,SAAQ,eAAe;gBACzC,GAAG,IAAI,EAAE,0BAA0B;IAQtC,MAAM,CACb,SAAS,CAAC,EAAE,SAAS,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAC1D,OAAO,CAAC,SAAS,CAAC;IAGZ,oBAAoB,CAC3B,SAAS,CAAC,EAAE,SAAS,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAC1D,kBAAkB;IAGZ,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS;IAGlC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB;IAIpD,MAAM,CAAC,QAAQ,CAAC,QAAQ,wtOAAa;IACrC,MAAM,CAAC,QAAQ,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;SAAQ;IAC3B,MAAM,CAAC,eAAe,IAAI,kBAAkB;IAG5C,MAAM,CAAC,OAAO,CACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,QAAQ,GAClC,SAAS;CAGb"}
@@ -1,7 +1,7 @@
1
1
  import type { LightTestRecipient, LightTestRecipientInterface } from "../../../contracts/test/LightTestRecipient";
2
2
  import type { Provider, TransactionRequest } from "@ethersproject/providers";
3
3
  import { Signer, ContractFactory, Overrides } from "ethers";
4
- declare type LightTestRecipientConstructorParams = [signer?: Signer] | ConstructorParameters<typeof ContractFactory>;
4
+ type LightTestRecipientConstructorParams = [signer?: Signer] | ConstructorParameters<typeof ContractFactory>;
5
5
  export declare class LightTestRecipient__factory extends ContractFactory {
6
6
  constructor(...args: LightTestRecipientConstructorParams);
7
7
  deploy(overrides?: Overrides & {
@@ -1 +1 @@
1
- {"version":3,"file":"LightTestRecipient__factory.d.ts","sourceRoot":"","sources":["../../../../types/factories/contracts/test/LightTestRecipient__factory.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,kBAAkB,EAClB,2BAA2B,EAC5B,MAAM,4CAA4C,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAmB,eAAe,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAqO7E,aAAK,mCAAmC,GACpC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GACjB,qBAAqB,CAAC,OAAO,eAAe,CAAC,CAAC;AAMlD,qBAAa,2BAA4B,SAAQ,eAAe;gBAClD,GAAG,IAAI,EAAE,mCAAmC;IAQ/C,MAAM,CACb,SAAS,CAAC,EAAE,SAAS,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAC1D,OAAO,CAAC,kBAAkB,CAAC;IAGrB,oBAAoB,CAC3B,SAAS,CAAC,EAAE,SAAS,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAC1D,kBAAkB;IAGZ,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB;IAG3C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,2BAA2B;IAI7D,MAAM,CAAC,QAAQ,CAAC,QAAQ,s4JAAa;IACrC,MAAM,CAAC,QAAQ,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAAQ;IAC3B,MAAM,CAAC,eAAe,IAAI,2BAA2B;IAGrD,MAAM,CAAC,OAAO,CACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,QAAQ,GAClC,kBAAkB;CAGtB"}
1
+ {"version":3,"file":"LightTestRecipient__factory.d.ts","sourceRoot":"","sources":["../../../../types/factories/contracts/test/LightTestRecipient__factory.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,kBAAkB,EAClB,2BAA2B,EAC5B,MAAM,4CAA4C,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAmB,eAAe,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAqO7E,KAAK,mCAAmC,GACpC,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GACjB,qBAAqB,CAAC,OAAO,eAAe,CAAC,CAAC;AAMlD,qBAAa,2BAA4B,SAAQ,eAAe;gBAClD,GAAG,IAAI,EAAE,mCAAmC;IAQ/C,MAAM,CACb,SAAS,CAAC,EAAE,SAAS,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAC1D,OAAO,CAAC,kBAAkB,CAAC;IAGrB,oBAAoB,CAC3B,SAAS,CAAC,EAAE,SAAS,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAC1D,kBAAkB;IAGZ,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB;IAG3C,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,2BAA2B;IAI7D,MAAM,CAAC,QAAQ,CAAC,QAAQ,s4JAAa;IACrC,MAAM,CAAC,QAAQ,CAAC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAAQ;IAC3B,MAAM,CAAC,eAAe,IAAI,2BAA2B;IAGrD,MAAM,CAAC,OAAO,CACZ,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,GAAG,QAAQ,GAClC,kBAAkB;CAGtB"}