@hyperlane-xyz/core 1.1.4 → 1.2.1

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 (178) hide show
  1. package/README.md +3 -3
  2. package/contracts/igps/InterchainGasPaymaster.sol +125 -29
  3. package/contracts/igps/gas-oracles/StorageGasOracle.sol +104 -0
  4. package/contracts/mock/MockHyperlaneEnvironment.sol +2 -2
  5. package/contracts/mock/MockMailbox.sol +4 -0
  6. package/contracts/test/LightTestRecipient.sol +3 -0
  7. package/contracts/test/TestInterchainGasPaymaster.sol +4 -5
  8. package/dist/@openzeppelin/contracts/token/ERC20/index.d.ts +0 -2
  9. package/dist/@openzeppelin/contracts/token/ERC20/index.d.ts.map +1 -1
  10. package/dist/@openzeppelin/contracts/token/ERC20/index.js +0 -1
  11. package/dist/@openzeppelin/contracts/token/ERC20/index.js.map +1 -1
  12. package/dist/contracts/igps/InterchainGasPaymaster.d.ts +116 -8
  13. package/dist/contracts/igps/InterchainGasPaymaster.d.ts.map +1 -1
  14. package/dist/contracts/igps/OverheadIgp.d.ts +15 -0
  15. package/dist/contracts/igps/OverheadIgp.d.ts.map +1 -1
  16. package/dist/contracts/igps/gas-oracles/StorageGasOracle.d.ts +205 -0
  17. package/dist/contracts/igps/gas-oracles/StorageGasOracle.d.ts.map +1 -0
  18. package/dist/contracts/igps/{GasOverheadIgp.js → gas-oracles/StorageGasOracle.js} +1 -1
  19. package/dist/contracts/igps/gas-oracles/StorageGasOracle.js.map +1 -0
  20. package/dist/contracts/igps/gas-oracles/index.d.ts +2 -0
  21. package/dist/contracts/igps/gas-oracles/index.d.ts.map +1 -0
  22. package/dist/contracts/igps/gas-oracles/index.js.map +1 -0
  23. package/dist/contracts/igps/index.d.ts +2 -0
  24. package/dist/contracts/igps/index.d.ts.map +1 -1
  25. package/dist/contracts/igps/index.js +1 -0
  26. package/dist/contracts/igps/index.js.map +1 -1
  27. package/dist/contracts/mock/MockMailbox.d.ts +9 -1
  28. package/dist/contracts/mock/MockMailbox.d.ts.map +1 -1
  29. package/dist/contracts/test/TestInterchainGasPaymaster.d.ts +116 -16
  30. package/dist/contracts/test/TestInterchainGasPaymaster.d.ts.map +1 -1
  31. package/dist/factories/@openzeppelin/contracts/token/ERC20/index.d.ts +0 -1
  32. package/dist/factories/@openzeppelin/contracts/token/ERC20/index.d.ts.map +1 -1
  33. package/dist/factories/@openzeppelin/contracts/token/ERC20/index.js +1 -25
  34. package/dist/factories/@openzeppelin/contracts/token/ERC20/index.js.map +1 -1
  35. package/dist/factories/contracts/igps/InterchainGasPaymaster__factory.d.ts +24 -4
  36. package/dist/factories/contracts/igps/InterchainGasPaymaster__factory.d.ts.map +1 -1
  37. package/dist/factories/contracts/igps/InterchainGasPaymaster__factory.js +145 -7
  38. package/dist/factories/contracts/igps/InterchainGasPaymaster__factory.js.map +1 -1
  39. package/dist/factories/contracts/igps/OverheadIgp__factory.d.ts +1 -1
  40. package/dist/factories/contracts/igps/OverheadIgp__factory.d.ts.map +1 -1
  41. package/dist/factories/contracts/igps/OverheadIgp__factory.js +26 -1
  42. package/dist/factories/contracts/igps/OverheadIgp__factory.js.map +1 -1
  43. package/dist/factories/contracts/igps/gas-oracles/StorageGasOracle__factory.d.ts +64 -0
  44. package/dist/factories/contracts/igps/gas-oracles/StorageGasOracle__factory.d.ts.map +1 -0
  45. package/dist/factories/contracts/igps/gas-oracles/StorageGasOracle__factory.js +226 -0
  46. package/dist/factories/contracts/igps/gas-oracles/StorageGasOracle__factory.js.map +1 -0
  47. package/dist/factories/contracts/igps/gas-oracles/index.d.ts +2 -0
  48. package/dist/factories/contracts/igps/gas-oracles/index.d.ts.map +1 -0
  49. package/dist/factories/contracts/igps/gas-oracles/index.js +9 -0
  50. package/dist/factories/contracts/igps/gas-oracles/index.js.map +1 -0
  51. package/dist/factories/contracts/igps/index.d.ts +1 -0
  52. package/dist/factories/contracts/igps/index.d.ts.map +1 -1
  53. package/dist/factories/contracts/igps/index.js +25 -1
  54. package/dist/factories/contracts/igps/index.js.map +1 -1
  55. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts +1 -1
  56. package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js +1 -1
  57. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.d.ts +1 -1
  58. package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js +1 -1
  59. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts +1 -1
  60. package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js +1 -1
  61. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.d.ts +1 -1
  62. package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js +1 -1
  63. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.d.ts +1 -1
  64. package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.js +1 -1
  65. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts +1 -1
  66. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts.map +1 -1
  67. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js +1 -1
  68. package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js.map +1 -1
  69. package/dist/factories/contracts/mock/MockMailbox__factory.d.ts +1 -1
  70. package/dist/factories/contracts/mock/MockMailbox__factory.d.ts.map +1 -1
  71. package/dist/factories/contracts/mock/MockMailbox__factory.js +14 -1
  72. package/dist/factories/contracts/mock/MockMailbox__factory.js.map +1 -1
  73. package/dist/factories/contracts/test/LightTestRecipient__factory.d.ts +1 -1
  74. package/dist/factories/contracts/test/LightTestRecipient__factory.js +1 -1
  75. package/dist/factories/contracts/test/TestGasRouter__factory.d.ts +1 -1
  76. package/dist/factories/contracts/test/TestGasRouter__factory.js +1 -1
  77. package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.d.ts +1 -1
  78. package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.js +1 -1
  79. package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.d.ts +31 -4
  80. package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.d.ts.map +1 -1
  81. package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.js +153 -10
  82. package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.js.map +1 -1
  83. package/dist/factories/contracts/test/TestQuerySender__factory.d.ts +1 -1
  84. package/dist/factories/contracts/test/TestQuerySender__factory.js +1 -1
  85. package/dist/factories/contracts/test/TestQuery__factory.d.ts +1 -1
  86. package/dist/factories/contracts/test/TestQuery__factory.js +1 -1
  87. package/dist/factories/contracts/test/TestRouter__factory.d.ts +1 -1
  88. package/dist/factories/contracts/test/TestRouter__factory.js +1 -1
  89. package/dist/factories/contracts/test/TestSendReceiver__factory.d.ts +1 -1
  90. package/dist/factories/contracts/test/TestSendReceiver__factory.js +1 -1
  91. package/dist/factories/{@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit__factory.d.ts → interfaces/IGasOracle__factory.d.ts} +5 -5
  92. package/dist/factories/interfaces/IGasOracle__factory.d.ts.map +1 -0
  93. package/dist/factories/interfaces/IGasOracle__factory.js +42 -0
  94. package/dist/factories/interfaces/IGasOracle__factory.js.map +1 -0
  95. package/dist/factories/interfaces/IInterchainGasPaymaster__factory.d.ts +15 -2
  96. package/dist/factories/interfaces/IInterchainGasPaymaster__factory.d.ts.map +1 -1
  97. package/dist/factories/interfaces/IInterchainGasPaymaster__factory.js +25 -0
  98. package/dist/factories/interfaces/IInterchainGasPaymaster__factory.js.map +1 -1
  99. package/dist/factories/interfaces/index.d.ts +1 -0
  100. package/dist/factories/interfaces/index.d.ts.map +1 -1
  101. package/dist/factories/interfaces/index.js +3 -1
  102. package/dist/factories/interfaces/index.js.map +1 -1
  103. package/dist/index.d.ts +4 -2
  104. package/dist/index.d.ts.map +1 -1
  105. package/dist/index.js +6 -4
  106. package/dist/index.js.map +1 -1
  107. package/dist/interfaces/IGasOracle.d.ts +61 -0
  108. package/dist/interfaces/IGasOracle.d.ts.map +1 -0
  109. package/dist/{@openzeppelin/contracts/token/ERC20/extensions/index.js → interfaces/IGasOracle.js} +1 -1
  110. package/dist/interfaces/IGasOracle.js.map +1 -0
  111. package/dist/interfaces/IInterchainGasPaymaster.d.ts +20 -3
  112. package/dist/interfaces/IInterchainGasPaymaster.d.ts.map +1 -1
  113. package/dist/interfaces/index.d.ts +1 -0
  114. package/dist/interfaces/index.d.ts.map +1 -1
  115. package/interfaces/IGasOracle.sol +16 -0
  116. package/interfaces/IInterchainGasPaymaster.sol +12 -0
  117. package/package.json +2 -2
  118. package/dist/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.d.ts +0 -75
  119. package/dist/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.d.ts.map +0 -1
  120. package/dist/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.js +0 -4
  121. package/dist/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit.js.map +0 -1
  122. package/dist/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.d.ts +0 -2
  123. package/dist/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.d.ts.map +0 -1
  124. package/dist/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.js.map +0 -1
  125. package/dist/@openzeppelin/contracts/token/ERC20/extensions/index.d.ts +0 -3
  126. package/dist/@openzeppelin/contracts/token/ERC20/extensions/index.d.ts.map +0 -1
  127. package/dist/@openzeppelin/contracts/token/ERC20/extensions/index.js.map +0 -1
  128. package/dist/contracts/InterchainGasPaymaster.d.ts +0 -162
  129. package/dist/contracts/InterchainGasPaymaster.d.ts.map +0 -1
  130. package/dist/contracts/InterchainGasPaymaster.js +0 -4
  131. package/dist/contracts/InterchainGasPaymaster.js.map +0 -1
  132. package/dist/contracts/igps/GasOverheadIgp.d.ts +0 -194
  133. package/dist/contracts/igps/GasOverheadIgp.d.ts.map +0 -1
  134. package/dist/contracts/igps/GasOverheadIgp.js.map +0 -1
  135. package/dist/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge.d.ts +0 -78
  136. package/dist/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge.d.ts.map +0 -1
  137. package/dist/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge.js +0 -4
  138. package/dist/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge.js.map +0 -1
  139. package/dist/contracts/mock/MockCircleBridge.d.ts +0 -86
  140. package/dist/contracts/mock/MockCircleBridge.d.ts.map +0 -1
  141. package/dist/contracts/mock/MockCircleBridge.js +0 -4
  142. package/dist/contracts/mock/MockCircleBridge.js.map +0 -1
  143. package/dist/contracts/mock/MockInterchainAccountRouter.d.ts +0 -422
  144. package/dist/contracts/mock/MockInterchainAccountRouter.d.ts.map +0 -1
  145. package/dist/contracts/mock/MockInterchainAccountRouter.js +0 -4
  146. package/dist/contracts/mock/MockInterchainAccountRouter.js.map +0 -1
  147. package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit__factory.d.ts.map +0 -1
  148. package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit__factory.js +0 -93
  149. package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/IERC20Permit__factory.js.map +0 -1
  150. package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.d.ts +0 -2
  151. package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.d.ts.map +0 -1
  152. package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.js +0 -9
  153. package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol/index.js.map +0 -1
  154. package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/index.d.ts +0 -2
  155. package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/index.d.ts.map +0 -1
  156. package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/index.js +0 -31
  157. package/dist/factories/@openzeppelin/contracts/token/ERC20/extensions/index.js.map +0 -1
  158. package/dist/factories/contracts/InterchainGasPaymaster__factory.d.ts +0 -62
  159. package/dist/factories/contracts/InterchainGasPaymaster__factory.d.ts.map +0 -1
  160. package/dist/factories/contracts/InterchainGasPaymaster__factory.js +0 -178
  161. package/dist/factories/contracts/InterchainGasPaymaster__factory.js.map +0 -1
  162. package/dist/factories/contracts/igps/GasOverheadIgp__factory.d.ts +0 -75
  163. package/dist/factories/contracts/igps/GasOverheadIgp__factory.d.ts.map +0 -1
  164. package/dist/factories/contracts/igps/GasOverheadIgp__factory.js +0 -263
  165. package/dist/factories/contracts/igps/GasOverheadIgp__factory.js.map +0 -1
  166. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge__factory.d.ts +0 -36
  167. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge__factory.d.ts.map +0 -1
  168. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge__factory.js +0 -104
  169. package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge__factory.js.map +0 -1
  170. package/dist/factories/contracts/mock/MockCircleBridge__factory.d.ts +0 -59
  171. package/dist/factories/contracts/mock/MockCircleBridge__factory.d.ts.map +0 -1
  172. package/dist/factories/contracts/mock/MockCircleBridge__factory.js +0 -151
  173. package/dist/factories/contracts/mock/MockCircleBridge__factory.js.map +0 -1
  174. package/dist/factories/contracts/mock/MockInterchainAccountRouter__factory.d.ts +0 -69
  175. package/dist/factories/contracts/mock/MockInterchainAccountRouter__factory.d.ts.map +0 -1
  176. package/dist/factories/contracts/mock/MockInterchainAccountRouter__factory.js +0 -556
  177. package/dist/factories/contracts/mock/MockInterchainAccountRouter__factory.js.map +0 -1
  178. /package/dist/{@openzeppelin/contracts/token/ERC20/extensions/draft-IERC20Permit.sol → contracts/igps/gas-oracles}/index.js +0 -0
@@ -12,7 +12,7 @@ export declare class PortalAdapter__factory extends ContractFactory {
12
12
  }): TransactionRequest;
13
13
  attach(address: string): PortalAdapter;
14
14
  connect(signer: Signer): PortalAdapter__factory;
15
- static readonly bytecode = "0x608060405260d0805463ffffffff16905534801561001c57600080fd5b5061254b8061002c6000396000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c80638da5cb5b116100ee578063d5438eae11610097578063f1bd6f0a11610071578063f1bd6f0a1461047e578063f2fde38b14610491578063f3c61d6b146104a4578063fb6bf74c146104b757600080fd5b8063d5438eae1461042b578063de523cf31461044b578063e9198bf91461046b57600080fd5b8063b9508d7f116100c8578063b9508d7f146103c1578063c6009704146103f8578063c68785191461041857600080fd5b80638da5cb5b14610333578063affed0e014610351578063b49c53a7146103ae57600080fd5b8063458ab0141161015057806356d5d4751161012a57806356d5d47514610305578063715018a61461031857806381005b9f1461032057600080fd5b8063458ab01414610293578063476eea39146102d257806348035d54146102f257600080fd5b80632ead72f6116101815780632ead72f61461023d57806339bb4ad91461025e578063440df4f41461027e57600080fd5b80630879b4a7146101a85780630e72cc0614610208578063297e18b11461021d575b600080fd5b6101de6101b6366004611b53565b60cf6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61021b610216366004611b8e565b6104ca565b005b60cd546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b61025061024b366004611bbd565b6104de565b6040519081526020016101ff565b6066546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b610286610520565b6040516101ff9190611bda565b6102a66102a1366004611c6d565b6105db565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101ff565b6102e56102e0366004611ce0565b61084d565b6040516101ff9190611d96565b61021b610300366004611db9565b610c1b565b61021b610313366004611df2565b610c9f565b61021b610d92565b61025061032e366004611e78565b610da6565b60335473ffffffffffffffffffffffffffffffffffffffff166101de565b60d0546103819064010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b6040517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911681526020016101ff565b61021b6103bc366004611ea6565b610e27565b6103e56103cf366004611bbd565b60ce6020526000908152604090205461ffff1681565b60405161ffff90911681526020016101ff565b60cc546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b61021b610426366004611fc0565b610e3d565b6065546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b6067546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b61021b610479366004612085565b61111c565b61021b61048c366004611b8e565b6111f9565b61021b61049f366004611b8e565b61120a565b61021b6104b2366004611b8e565b6112be565b61021b6104c53660046120e5565b6112cf565b6104d26114ec565b6104db8161156d565b50565b60006104f4609863ffffffff8085169061167b16565b156105135761050d609863ffffffff8085169061168716565b92915050565b506000919050565b919050565b609880546060919060009067ffffffffffffffff81111561054357610543611ed2565b60405190808252806020026020018201604052801561056c578160200160208202803683370190505b50905060005b82548110156105d45782818154811061058d5761058d612141565b906000526020600020015460001c8282815181106105ad576105ad612141565b63ffffffff90921660209283029190910190910152806105cc8161219f565b915050610572565b5092915050565b60cd54600090819073ffffffffffffffffffffffffffffffffffffffff163314610666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f216c69717569646974794c61796572526f75746572000000000000000000000060448201526064015b60405180910390fd5b6000610674848601866121d7565b9050600060cf60006106868b85610da6565b815260208101919091526040016000205473ffffffffffffffffffffffffffffffffffffffff1690508061073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f506f7274616c205472616e7366657220686173206e6f7420796574206265656e60448201527f20636f6d706c6574656400000000000000000000000000000000000000000000606482015260840161065d565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301526024820189905282919082169063a9059cbb906044016020604051808303816000875af11580156107b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d891906121f4565b61083e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f217472616e73666572206f757400000000000000000000000000000000000000604482015260640161065d565b50989597509495505050505050565b60cd5460609073ffffffffffffffffffffffffffffffffffffffff1633146108d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f216c69717569646974794c61796572526f757465720000000000000000000000604482015260640161065d565b60d0546109059064010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001612216565b60d080547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092166401000000000263ffffffff9283161790558516600090815260ce602052604081205461ffff169061095b87611693565b60cc546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810187905291925086169063095ea7b3906044016020604051808303816000875af11580156109d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fa91906121f4565b610a60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21617070726f76616c0000000000000000000000000000000000000000000000604482015260640161065d565b60cc5460d0546040805163ffffffff831660208201526401000000009092047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168282015280518083038201815260608301918290527fc5a5ebda0000000000000000000000000000000000000000000000000000000090915260009273ffffffffffffffffffffffffffffffffffffffff169163c5a5ebda91610b0d918a918a918991899189919060640161224b565b6020604051808303816000875af1158015610b2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5091906122a8565b60d054604080516401000000009092047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16825267ffffffffffffffff8316602083015263ffffffff8b16908201529091507ff308a69d8646d23ad24a283ae906d5d85d72ba1b9ef7add7769bca145655937f9060600160405180910390a160d054604080516401000000009092047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166020830152016040516020818303038152906040529350505050949350505050565b610c236114ec565b63ffffffff8216600081815260ce602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff861690811790915591519182527f86eee369bdd5e8620b595131597759ddadaf57f38cc5f5f76172ad2b60c9c1f4910160405180910390a25050565b60655473ffffffffffffffffffffffffffffffffffffffff163314610d20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f216d61696c626f78000000000000000000000000000000000000000000000000604482015260640161065d565b8383610d2c82826116fe565b6040518060800160405280604381526020016124d36043913990610d7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065d9190611d96565b50610d8a86868686611712565b505050505050565b610d9a6114ec565b610da46000611774565b565b6040805160e084901b7fffffffff000000000000000000000000000000000000000000000000000000001660208083019190915283901b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016602482015260009101604051602081830303815290604052610e20906122d2565b9392505050565b610e2f6114ec565b610e3982826117eb565b5050565b60cc546040517fc3f511c100000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff169063c3f511c190610e94908590600401611d96565b6000604051808303816000875af1158015610eb3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610ef99190810190612359565b60cc546040517fea63738d00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063ea63738d90610f55908590600401611d96565b600060405180830381865afa158015610f72573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610fb891908101906123aa565b90506000808260e00151806020019051810190610fd59190612473565b60d05463ffffffff16600090815260ce602052604081205460608701519395509193509161ffff9081169116146110b15760cc54606085015160408087015190517f1ff1e28600000000000000000000000000000000000000000000000000000000815261ffff9092166004830152602482015273ffffffffffffffffffffffffffffffffffffffff90911690631ff1e28690604401602060405180830381865afa158015611088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ac91906124a2565b6110b7565b60408401515b90508060cf60006110c88686610da6565b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050565b6111246114ec565b82811461118d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f216c656e67746800000000000000000000000000000000000000000000000000604482015260640161065d565b60005b838110156111f2576111e08585838181106111ad576111ad612141565b90506020020160208101906111c29190611bbd565b8484848181106111d4576111d4612141565b905060200201356117eb565b6111eb6001826124bf565b9050611190565b5050505050565b6112016114ec565b6104db81611838565b6112126114ec565b73ffffffffffffffffffffffffffffffffffffffff81166112b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161065d565b6104db81611774565b6112c66114ec565b6104db81611927565b600054610100900460ff16158080156112ef5750600054600160ff909116105b806113095750303b158015611309575060005460ff166001145b611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161065d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156113f357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6113fc84611774565b60d0805463ffffffff87167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090911617905560cc805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560cd80549285169290911691909117905580156111f257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610da4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065d565b73ffffffffffffffffffffffffffffffffffffffff811615806115a6575073ffffffffffffffffffffffffffffffffffffffff81163b15155b61160c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e74726163740000000000000000000000000000000000000000000000604482015260640161065d565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ffec811ed4e60aebdaf7a79cad8a97196bf56e35362f039705598226d30c9d24890600090a250565b6000610e208383611a16565b6000610e208383611a22565b600061169e826104de565b90506000801b8114156040518060800160405280604381526020016124d360439139906116f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065d9190611d96565b50919050565b60008161170a846104de565b149392505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f206d65737361676573206578706563746564000000000000000000000000604482015260640161065d565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611801609863ffffffff808516908490611aac16565b604051819063ffffffff8416907f97fd51fef1f80c854cbd0150c248e8b2ac4ecdc97cc05e742b5f61c9f4dc645890600090a35050565b8073ffffffffffffffffffffffffffffffffffffffff81163b6118b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e74726163740000000000000000000000000000000000000000000000604482015260640161065d565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fb87f5a0bface22cde699143559fb99f990ae54eea236995fc54178af91af859f90600090a25050565b8073ffffffffffffffffffffffffffffffffffffffff81163b6119a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e74726163740000000000000000000000000000000000000000000000604482015260640161065d565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517f7a61e573722ff8b205c8962b59d37e7d30573f368965597a844a94872204ebd790600090a25050565b6000610e208383611abd565b600081815260028301602052604081205480151580611a465750611a468484611a16565b610e20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b65790000604482015260640161065d565b611ab7838383611ad5565b50505050565b60008181526001830160205260408120541515610e20565b60008281526002840160205260408120829055611af28484611afa565b949350505050565b6000818152600183016020526040812054610e2090849084908490611b4b5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561050d565b50600061050d565b600060208284031215611b6557600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146104db57600080fd5b600060208284031215611ba057600080fd5b8135610e2081611b6c565b63ffffffff811681146104db57600080fd5b600060208284031215611bcf57600080fd5b8135610e2081611bab565b6020808252825182820181905260009190848201906040850190845b81811015611c1857835163ffffffff1683529284019291840191600101611bf6565b50909695505050505050565b60008083601f840112611c3657600080fd5b50813567ffffffffffffffff811115611c4e57600080fd5b602083019150836020828501011115611c6657600080fd5b9250929050565b600080600080600060808688031215611c8557600080fd5b8535611c9081611bab565b94506020860135611ca081611b6c565b935060408601359250606086013567ffffffffffffffff811115611cc357600080fd5b611ccf88828901611c24565b969995985093965092949392505050565b60008060008060808587031215611cf657600080fd5b8435611d0181611bab565b9350602085013592506040850135611d1881611b6c565b9396929550929360600135925050565b60005b83811015611d43578181015183820152602001611d2b565b50506000910152565b60008151808452611d64816020860160208601611d28565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610e206020830184611d4c565b61ffff811681146104db57600080fd5b60008060408385031215611dcc57600080fd5b8235611dd781611bab565b91506020830135611de781611da9565b809150509250929050565b60008060008060608587031215611e0857600080fd5b8435611e1381611bab565b935060208501359250604085013567ffffffffffffffff811115611e3657600080fd5b611e4287828801611c24565b95989497509550505050565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811681146104db57600080fd5b60008060408385031215611e8b57600080fd5b8235611e9681611bab565b91506020830135611de781611e4e565b60008060408385031215611eb957600080fd5b8235611ec481611bab565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715611f2557611f25611ed2565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611f7257611f72611ed2565b604052919050565b600067ffffffffffffffff821115611f9457611f94611ed2565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600060208284031215611fd257600080fd5b813567ffffffffffffffff811115611fe957600080fd5b8201601f81018413611ffa57600080fd5b803561200d61200882611f7a565b611f2b565b81815285602083850101111561202257600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083601f84011261205257600080fd5b50813567ffffffffffffffff81111561206a57600080fd5b6020830191508360208260051b8501011115611c6657600080fd5b6000806000806040858703121561209b57600080fd5b843567ffffffffffffffff808211156120b357600080fd5b6120bf88838901612040565b909650945060208701359150808211156120d857600080fd5b50611e4287828801612040565b600080600080608085870312156120fb57600080fd5b843561210681611bab565b9350602085013561211681611b6c565b9250604085013561212681611b6c565b9150606085013561213681611b6c565b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036121d0576121d0612170565b5060010190565b6000602082840312156121e957600080fd5b8135610e2081611e4e565b60006020828403121561220657600080fd5b81518015158114610e2057600080fd5b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8181168382160190808211156105d4576105d4612170565b73ffffffffffffffffffffffffffffffffffffffff8716815285602082015261ffff8516604082015283606082015263ffffffff8316608082015260c060a0820152600061229c60c0830184611d4c565b98975050505050505050565b6000602082840312156122ba57600080fd5b815167ffffffffffffffff81168114610e2057600080fd5b805160208083015191908110156116f8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b600082601f83011261232557600080fd5b815161233361200882611f7a565b81815284602083860101111561234857600080fd5b611af2826020830160208701611d28565b60006020828403121561236b57600080fd5b815167ffffffffffffffff81111561238257600080fd5b611af284828501612314565b805160ff8116811461051b57600080fd5b805161051b81611da9565b6000602082840312156123bc57600080fd5b815167ffffffffffffffff808211156123d457600080fd5b9083019061010082860312156123e957600080fd5b6123f1611f01565b6123fa8361238e565b8152602083015160208201526040830151604082015261241c6060840161239f565b60608201526080830151608082015261243760a0840161239f565b60a082015260c083015160c082015260e08301518281111561245857600080fd5b61246487828601612314565b60e08301525095945050505050565b6000806040838503121561248657600080fd5b825161249181611bab565b6020840151909250611de781611e4e565b6000602082840312156124b457600080fd5b8151610e2081611b6c565b8082018082111561050d5761050d61217056fe4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e2e2044696420796f7520737065636966792074686520726967687420646f6d61696e2049443fa26469706673582212209990467cda30f096a39ec6f4e58cedb401c9262f7fc408989f05619a5e900c8064736f6c63430008110033";
15
+ static readonly bytecode = "0x608060405260d0805463ffffffff16905534801561001c57600080fd5b5061254b8061002c6000396000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c80638da5cb5b116100ee578063d5438eae11610097578063f1bd6f0a11610071578063f1bd6f0a1461047e578063f2fde38b14610491578063f3c61d6b146104a4578063fb6bf74c146104b757600080fd5b8063d5438eae1461042b578063de523cf31461044b578063e9198bf91461046b57600080fd5b8063b9508d7f116100c8578063b9508d7f146103c1578063c6009704146103f8578063c68785191461041857600080fd5b80638da5cb5b14610333578063affed0e014610351578063b49c53a7146103ae57600080fd5b8063458ab0141161015057806356d5d4751161012a57806356d5d47514610305578063715018a61461031857806381005b9f1461032057600080fd5b8063458ab01414610293578063476eea39146102d257806348035d54146102f257600080fd5b80632ead72f6116101815780632ead72f61461023d57806339bb4ad91461025e578063440df4f41461027e57600080fd5b80630879b4a7146101a85780630e72cc0614610208578063297e18b11461021d575b600080fd5b6101de6101b6366004611b53565b60cf6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61021b610216366004611b8e565b6104ca565b005b60cd546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b61025061024b366004611bbd565b6104de565b6040519081526020016101ff565b6066546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b610286610520565b6040516101ff9190611bda565b6102a66102a1366004611c6d565b6105db565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101ff565b6102e56102e0366004611ce0565b61084d565b6040516101ff9190611d96565b61021b610300366004611db9565b610c1b565b61021b610313366004611df2565b610c9f565b61021b610d92565b61025061032e366004611e78565b610da6565b60335473ffffffffffffffffffffffffffffffffffffffff166101de565b60d0546103819064010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b6040517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911681526020016101ff565b61021b6103bc366004611ea6565b610e27565b6103e56103cf366004611bbd565b60ce6020526000908152604090205461ffff1681565b60405161ffff90911681526020016101ff565b60cc546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b61021b610426366004611fc0565b610e3d565b6065546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b6067546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b61021b610479366004612085565b61111c565b61021b61048c366004611b8e565b6111f9565b61021b61049f366004611b8e565b61120a565b61021b6104b2366004611b8e565b6112be565b61021b6104c53660046120e5565b6112cf565b6104d26114ec565b6104db8161156d565b50565b60006104f4609863ffffffff8085169061167b16565b156105135761050d609863ffffffff8085169061168716565b92915050565b506000919050565b919050565b609880546060919060009067ffffffffffffffff81111561054357610543611ed2565b60405190808252806020026020018201604052801561056c578160200160208202803683370190505b50905060005b82548110156105d45782818154811061058d5761058d612141565b906000526020600020015460001c8282815181106105ad576105ad612141565b63ffffffff90921660209283029190910190910152806105cc8161219f565b915050610572565b5092915050565b60cd54600090819073ffffffffffffffffffffffffffffffffffffffff163314610666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f216c69717569646974794c61796572526f75746572000000000000000000000060448201526064015b60405180910390fd5b6000610674848601866121d7565b9050600060cf60006106868b85610da6565b815260208101919091526040016000205473ffffffffffffffffffffffffffffffffffffffff1690508061073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f506f7274616c205472616e7366657220686173206e6f7420796574206265656e60448201527f20636f6d706c6574656400000000000000000000000000000000000000000000606482015260840161065d565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301526024820189905282919082169063a9059cbb906044016020604051808303816000875af11580156107b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d891906121f4565b61083e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f217472616e73666572206f757400000000000000000000000000000000000000604482015260640161065d565b50989597509495505050505050565b60cd5460609073ffffffffffffffffffffffffffffffffffffffff1633146108d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f216c69717569646974794c61796572526f757465720000000000000000000000604482015260640161065d565b60d0546109059064010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001612216565b60d080547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092166401000000000263ffffffff9283161790558516600090815260ce602052604081205461ffff169061095b87611693565b60cc546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810187905291925086169063095ea7b3906044016020604051808303816000875af11580156109d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fa91906121f4565b610a60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21617070726f76616c0000000000000000000000000000000000000000000000604482015260640161065d565b60cc5460d0546040805163ffffffff831660208201526401000000009092047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168282015280518083038201815260608301918290527fc5a5ebda0000000000000000000000000000000000000000000000000000000090915260009273ffffffffffffffffffffffffffffffffffffffff169163c5a5ebda91610b0d918a918a918991899189919060640161224b565b6020604051808303816000875af1158015610b2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5091906122a8565b60d054604080516401000000009092047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16825267ffffffffffffffff8316602083015263ffffffff8b16908201529091507ff308a69d8646d23ad24a283ae906d5d85d72ba1b9ef7add7769bca145655937f9060600160405180910390a160d054604080516401000000009092047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166020830152016040516020818303038152906040529350505050949350505050565b610c236114ec565b63ffffffff8216600081815260ce602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff861690811790915591519182527f86eee369bdd5e8620b595131597759ddadaf57f38cc5f5f76172ad2b60c9c1f4910160405180910390a25050565b60655473ffffffffffffffffffffffffffffffffffffffff163314610d20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f216d61696c626f78000000000000000000000000000000000000000000000000604482015260640161065d565b8383610d2c82826116fe565b6040518060800160405280604381526020016124d36043913990610d7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065d9190611d96565b50610d8a86868686611712565b505050505050565b610d9a6114ec565b610da46000611774565b565b6040805160e084901b7fffffffff000000000000000000000000000000000000000000000000000000001660208083019190915283901b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016602482015260009101604051602081830303815290604052610e20906122d2565b9392505050565b610e2f6114ec565b610e3982826117eb565b5050565b60cc546040517fc3f511c100000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff169063c3f511c190610e94908590600401611d96565b6000604051808303816000875af1158015610eb3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610ef99190810190612359565b60cc546040517fea63738d00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063ea63738d90610f55908590600401611d96565b600060405180830381865afa158015610f72573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610fb891908101906123aa565b90506000808260e00151806020019051810190610fd59190612473565b60d05463ffffffff16600090815260ce602052604081205460608701519395509193509161ffff9081169116146110b15760cc54606085015160408087015190517f1ff1e28600000000000000000000000000000000000000000000000000000000815261ffff9092166004830152602482015273ffffffffffffffffffffffffffffffffffffffff90911690631ff1e28690604401602060405180830381865afa158015611088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ac91906124a2565b6110b7565b60408401515b90508060cf60006110c88686610da6565b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050565b6111246114ec565b82811461118d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f216c656e67746800000000000000000000000000000000000000000000000000604482015260640161065d565b60005b838110156111f2576111e08585838181106111ad576111ad612141565b90506020020160208101906111c29190611bbd565b8484848181106111d4576111d4612141565b905060200201356117eb565b6111eb6001826124bf565b9050611190565b5050505050565b6112016114ec565b6104db81611838565b6112126114ec565b73ffffffffffffffffffffffffffffffffffffffff81166112b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161065d565b6104db81611774565b6112c66114ec565b6104db81611927565b600054610100900460ff16158080156112ef5750600054600160ff909116105b806113095750303b158015611309575060005460ff166001145b611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161065d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156113f357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6113fc84611774565b60d0805463ffffffff87167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090911617905560cc805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560cd80549285169290911691909117905580156111f257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610da4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065d565b73ffffffffffffffffffffffffffffffffffffffff811615806115a6575073ffffffffffffffffffffffffffffffffffffffff81163b15155b61160c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e74726163740000000000000000000000000000000000000000000000604482015260640161065d565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ffec811ed4e60aebdaf7a79cad8a97196bf56e35362f039705598226d30c9d24890600090a250565b6000610e208383611a16565b6000610e208383611a22565b600061169e826104de565b90506000801b8114156040518060800160405280604381526020016124d360439139906116f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065d9190611d96565b50919050565b60008161170a846104de565b149392505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f206d65737361676573206578706563746564000000000000000000000000604482015260640161065d565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611801609863ffffffff808516908490611aac16565b604051819063ffffffff8416907f97fd51fef1f80c854cbd0150c248e8b2ac4ecdc97cc05e742b5f61c9f4dc645890600090a35050565b8073ffffffffffffffffffffffffffffffffffffffff81163b6118b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e74726163740000000000000000000000000000000000000000000000604482015260640161065d565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fb87f5a0bface22cde699143559fb99f990ae54eea236995fc54178af91af859f90600090a25050565b8073ffffffffffffffffffffffffffffffffffffffff81163b6119a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e74726163740000000000000000000000000000000000000000000000604482015260640161065d565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517f7a61e573722ff8b205c8962b59d37e7d30573f368965597a844a94872204ebd790600090a25050565b6000610e208383611abd565b600081815260028301602052604081205480151580611a465750611a468484611a16565b610e20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b65790000604482015260640161065d565b611ab7838383611ad5565b50505050565b60008181526001830160205260408120541515610e20565b60008281526002840160205260408120829055611af28484611afa565b949350505050565b6000818152600183016020526040812054610e2090849084908490611b4b5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561050d565b50600061050d565b600060208284031215611b6557600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146104db57600080fd5b600060208284031215611ba057600080fd5b8135610e2081611b6c565b63ffffffff811681146104db57600080fd5b600060208284031215611bcf57600080fd5b8135610e2081611bab565b6020808252825182820181905260009190848201906040850190845b81811015611c1857835163ffffffff1683529284019291840191600101611bf6565b50909695505050505050565b60008083601f840112611c3657600080fd5b50813567ffffffffffffffff811115611c4e57600080fd5b602083019150836020828501011115611c6657600080fd5b9250929050565b600080600080600060808688031215611c8557600080fd5b8535611c9081611bab565b94506020860135611ca081611b6c565b935060408601359250606086013567ffffffffffffffff811115611cc357600080fd5b611ccf88828901611c24565b969995985093965092949392505050565b60008060008060808587031215611cf657600080fd5b8435611d0181611bab565b9350602085013592506040850135611d1881611b6c565b9396929550929360600135925050565b60005b83811015611d43578181015183820152602001611d2b565b50506000910152565b60008151808452611d64816020860160208601611d28565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610e206020830184611d4c565b61ffff811681146104db57600080fd5b60008060408385031215611dcc57600080fd5b8235611dd781611bab565b91506020830135611de781611da9565b809150509250929050565b60008060008060608587031215611e0857600080fd5b8435611e1381611bab565b935060208501359250604085013567ffffffffffffffff811115611e3657600080fd5b611e4287828801611c24565b95989497509550505050565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811681146104db57600080fd5b60008060408385031215611e8b57600080fd5b8235611e9681611bab565b91506020830135611de781611e4e565b60008060408385031215611eb957600080fd5b8235611ec481611bab565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715611f2557611f25611ed2565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611f7257611f72611ed2565b604052919050565b600067ffffffffffffffff821115611f9457611f94611ed2565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600060208284031215611fd257600080fd5b813567ffffffffffffffff811115611fe957600080fd5b8201601f81018413611ffa57600080fd5b803561200d61200882611f7a565b611f2b565b81815285602083850101111561202257600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083601f84011261205257600080fd5b50813567ffffffffffffffff81111561206a57600080fd5b6020830191508360208260051b8501011115611c6657600080fd5b6000806000806040858703121561209b57600080fd5b843567ffffffffffffffff808211156120b357600080fd5b6120bf88838901612040565b909650945060208701359150808211156120d857600080fd5b50611e4287828801612040565b600080600080608085870312156120fb57600080fd5b843561210681611bab565b9350602085013561211681611b6c565b9250604085013561212681611b6c565b9150606085013561213681611b6c565b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036121d0576121d0612170565b5060010190565b6000602082840312156121e957600080fd5b8135610e2081611e4e565b60006020828403121561220657600080fd5b81518015158114610e2057600080fd5b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8181168382160190808211156105d4576105d4612170565b73ffffffffffffffffffffffffffffffffffffffff8716815285602082015261ffff8516604082015283606082015263ffffffff8316608082015260c060a0820152600061229c60c0830184611d4c565b98975050505050505050565b6000602082840312156122ba57600080fd5b815167ffffffffffffffff81168114610e2057600080fd5b805160208083015191908110156116f8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b600082601f83011261232557600080fd5b815161233361200882611f7a565b81815284602083860101111561234857600080fd5b611af2826020830160208701611d28565b60006020828403121561236b57600080fd5b815167ffffffffffffffff81111561238257600080fd5b611af284828501612314565b805160ff8116811461051b57600080fd5b805161051b81611da9565b6000602082840312156123bc57600080fd5b815167ffffffffffffffff808211156123d457600080fd5b9083019061010082860312156123e957600080fd5b6123f1611f01565b6123fa8361238e565b8152602083015160208201526040830151604082015261241c6060840161239f565b60608201526080830151608082015261243760a0840161239f565b60a082015260c083015160c082015260e08301518281111561245857600080fd5b61246487828601612314565b60e08301525095945050505050565b6000806040838503121561248657600080fd5b825161249181611bab565b6020840151909250611de781611e4e565b6000602082840312156124b457600080fd5b8151610e2081611b6c565b8082018082111561050d5761050d61217056fe4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e2e2044696420796f7520737065636966792074686520726967687420646f6d61696e2049443fa2646970667358221220cbeefaedc9813dda3ef06d5b6fd892101b76e1cedda211b06336ef6f6741a3a664736f6c63430008110033";
16
16
  static readonly abi: ({
17
17
  anonymous: boolean;
18
18
  inputs: {
@@ -574,7 +574,7 @@ const _abi = [
574
574
  type: "function",
575
575
  },
576
576
  ];
577
- const _bytecode = "0x608060405260d0805463ffffffff16905534801561001c57600080fd5b5061254b8061002c6000396000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c80638da5cb5b116100ee578063d5438eae11610097578063f1bd6f0a11610071578063f1bd6f0a1461047e578063f2fde38b14610491578063f3c61d6b146104a4578063fb6bf74c146104b757600080fd5b8063d5438eae1461042b578063de523cf31461044b578063e9198bf91461046b57600080fd5b8063b9508d7f116100c8578063b9508d7f146103c1578063c6009704146103f8578063c68785191461041857600080fd5b80638da5cb5b14610333578063affed0e014610351578063b49c53a7146103ae57600080fd5b8063458ab0141161015057806356d5d4751161012a57806356d5d47514610305578063715018a61461031857806381005b9f1461032057600080fd5b8063458ab01414610293578063476eea39146102d257806348035d54146102f257600080fd5b80632ead72f6116101815780632ead72f61461023d57806339bb4ad91461025e578063440df4f41461027e57600080fd5b80630879b4a7146101a85780630e72cc0614610208578063297e18b11461021d575b600080fd5b6101de6101b6366004611b53565b60cf6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61021b610216366004611b8e565b6104ca565b005b60cd546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b61025061024b366004611bbd565b6104de565b6040519081526020016101ff565b6066546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b610286610520565b6040516101ff9190611bda565b6102a66102a1366004611c6d565b6105db565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101ff565b6102e56102e0366004611ce0565b61084d565b6040516101ff9190611d96565b61021b610300366004611db9565b610c1b565b61021b610313366004611df2565b610c9f565b61021b610d92565b61025061032e366004611e78565b610da6565b60335473ffffffffffffffffffffffffffffffffffffffff166101de565b60d0546103819064010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b6040517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911681526020016101ff565b61021b6103bc366004611ea6565b610e27565b6103e56103cf366004611bbd565b60ce6020526000908152604090205461ffff1681565b60405161ffff90911681526020016101ff565b60cc546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b61021b610426366004611fc0565b610e3d565b6065546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b6067546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b61021b610479366004612085565b61111c565b61021b61048c366004611b8e565b6111f9565b61021b61049f366004611b8e565b61120a565b61021b6104b2366004611b8e565b6112be565b61021b6104c53660046120e5565b6112cf565b6104d26114ec565b6104db8161156d565b50565b60006104f4609863ffffffff8085169061167b16565b156105135761050d609863ffffffff8085169061168716565b92915050565b506000919050565b919050565b609880546060919060009067ffffffffffffffff81111561054357610543611ed2565b60405190808252806020026020018201604052801561056c578160200160208202803683370190505b50905060005b82548110156105d45782818154811061058d5761058d612141565b906000526020600020015460001c8282815181106105ad576105ad612141565b63ffffffff90921660209283029190910190910152806105cc8161219f565b915050610572565b5092915050565b60cd54600090819073ffffffffffffffffffffffffffffffffffffffff163314610666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f216c69717569646974794c61796572526f75746572000000000000000000000060448201526064015b60405180910390fd5b6000610674848601866121d7565b9050600060cf60006106868b85610da6565b815260208101919091526040016000205473ffffffffffffffffffffffffffffffffffffffff1690508061073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f506f7274616c205472616e7366657220686173206e6f7420796574206265656e60448201527f20636f6d706c6574656400000000000000000000000000000000000000000000606482015260840161065d565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301526024820189905282919082169063a9059cbb906044016020604051808303816000875af11580156107b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d891906121f4565b61083e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f217472616e73666572206f757400000000000000000000000000000000000000604482015260640161065d565b50989597509495505050505050565b60cd5460609073ffffffffffffffffffffffffffffffffffffffff1633146108d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f216c69717569646974794c61796572526f757465720000000000000000000000604482015260640161065d565b60d0546109059064010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001612216565b60d080547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092166401000000000263ffffffff9283161790558516600090815260ce602052604081205461ffff169061095b87611693565b60cc546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810187905291925086169063095ea7b3906044016020604051808303816000875af11580156109d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fa91906121f4565b610a60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21617070726f76616c0000000000000000000000000000000000000000000000604482015260640161065d565b60cc5460d0546040805163ffffffff831660208201526401000000009092047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168282015280518083038201815260608301918290527fc5a5ebda0000000000000000000000000000000000000000000000000000000090915260009273ffffffffffffffffffffffffffffffffffffffff169163c5a5ebda91610b0d918a918a918991899189919060640161224b565b6020604051808303816000875af1158015610b2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5091906122a8565b60d054604080516401000000009092047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16825267ffffffffffffffff8316602083015263ffffffff8b16908201529091507ff308a69d8646d23ad24a283ae906d5d85d72ba1b9ef7add7769bca145655937f9060600160405180910390a160d054604080516401000000009092047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166020830152016040516020818303038152906040529350505050949350505050565b610c236114ec565b63ffffffff8216600081815260ce602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff861690811790915591519182527f86eee369bdd5e8620b595131597759ddadaf57f38cc5f5f76172ad2b60c9c1f4910160405180910390a25050565b60655473ffffffffffffffffffffffffffffffffffffffff163314610d20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f216d61696c626f78000000000000000000000000000000000000000000000000604482015260640161065d565b8383610d2c82826116fe565b6040518060800160405280604381526020016124d36043913990610d7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065d9190611d96565b50610d8a86868686611712565b505050505050565b610d9a6114ec565b610da46000611774565b565b6040805160e084901b7fffffffff000000000000000000000000000000000000000000000000000000001660208083019190915283901b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016602482015260009101604051602081830303815290604052610e20906122d2565b9392505050565b610e2f6114ec565b610e3982826117eb565b5050565b60cc546040517fc3f511c100000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff169063c3f511c190610e94908590600401611d96565b6000604051808303816000875af1158015610eb3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610ef99190810190612359565b60cc546040517fea63738d00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063ea63738d90610f55908590600401611d96565b600060405180830381865afa158015610f72573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610fb891908101906123aa565b90506000808260e00151806020019051810190610fd59190612473565b60d05463ffffffff16600090815260ce602052604081205460608701519395509193509161ffff9081169116146110b15760cc54606085015160408087015190517f1ff1e28600000000000000000000000000000000000000000000000000000000815261ffff9092166004830152602482015273ffffffffffffffffffffffffffffffffffffffff90911690631ff1e28690604401602060405180830381865afa158015611088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ac91906124a2565b6110b7565b60408401515b90508060cf60006110c88686610da6565b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050565b6111246114ec565b82811461118d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f216c656e67746800000000000000000000000000000000000000000000000000604482015260640161065d565b60005b838110156111f2576111e08585838181106111ad576111ad612141565b90506020020160208101906111c29190611bbd565b8484848181106111d4576111d4612141565b905060200201356117eb565b6111eb6001826124bf565b9050611190565b5050505050565b6112016114ec565b6104db81611838565b6112126114ec565b73ffffffffffffffffffffffffffffffffffffffff81166112b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161065d565b6104db81611774565b6112c66114ec565b6104db81611927565b600054610100900460ff16158080156112ef5750600054600160ff909116105b806113095750303b158015611309575060005460ff166001145b611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161065d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156113f357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6113fc84611774565b60d0805463ffffffff87167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090911617905560cc805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560cd80549285169290911691909117905580156111f257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610da4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065d565b73ffffffffffffffffffffffffffffffffffffffff811615806115a6575073ffffffffffffffffffffffffffffffffffffffff81163b15155b61160c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e74726163740000000000000000000000000000000000000000000000604482015260640161065d565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ffec811ed4e60aebdaf7a79cad8a97196bf56e35362f039705598226d30c9d24890600090a250565b6000610e208383611a16565b6000610e208383611a22565b600061169e826104de565b90506000801b8114156040518060800160405280604381526020016124d360439139906116f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065d9190611d96565b50919050565b60008161170a846104de565b149392505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f206d65737361676573206578706563746564000000000000000000000000604482015260640161065d565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611801609863ffffffff808516908490611aac16565b604051819063ffffffff8416907f97fd51fef1f80c854cbd0150c248e8b2ac4ecdc97cc05e742b5f61c9f4dc645890600090a35050565b8073ffffffffffffffffffffffffffffffffffffffff81163b6118b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e74726163740000000000000000000000000000000000000000000000604482015260640161065d565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fb87f5a0bface22cde699143559fb99f990ae54eea236995fc54178af91af859f90600090a25050565b8073ffffffffffffffffffffffffffffffffffffffff81163b6119a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e74726163740000000000000000000000000000000000000000000000604482015260640161065d565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517f7a61e573722ff8b205c8962b59d37e7d30573f368965597a844a94872204ebd790600090a25050565b6000610e208383611abd565b600081815260028301602052604081205480151580611a465750611a468484611a16565b610e20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b65790000604482015260640161065d565b611ab7838383611ad5565b50505050565b60008181526001830160205260408120541515610e20565b60008281526002840160205260408120829055611af28484611afa565b949350505050565b6000818152600183016020526040812054610e2090849084908490611b4b5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561050d565b50600061050d565b600060208284031215611b6557600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146104db57600080fd5b600060208284031215611ba057600080fd5b8135610e2081611b6c565b63ffffffff811681146104db57600080fd5b600060208284031215611bcf57600080fd5b8135610e2081611bab565b6020808252825182820181905260009190848201906040850190845b81811015611c1857835163ffffffff1683529284019291840191600101611bf6565b50909695505050505050565b60008083601f840112611c3657600080fd5b50813567ffffffffffffffff811115611c4e57600080fd5b602083019150836020828501011115611c6657600080fd5b9250929050565b600080600080600060808688031215611c8557600080fd5b8535611c9081611bab565b94506020860135611ca081611b6c565b935060408601359250606086013567ffffffffffffffff811115611cc357600080fd5b611ccf88828901611c24565b969995985093965092949392505050565b60008060008060808587031215611cf657600080fd5b8435611d0181611bab565b9350602085013592506040850135611d1881611b6c565b9396929550929360600135925050565b60005b83811015611d43578181015183820152602001611d2b565b50506000910152565b60008151808452611d64816020860160208601611d28565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610e206020830184611d4c565b61ffff811681146104db57600080fd5b60008060408385031215611dcc57600080fd5b8235611dd781611bab565b91506020830135611de781611da9565b809150509250929050565b60008060008060608587031215611e0857600080fd5b8435611e1381611bab565b935060208501359250604085013567ffffffffffffffff811115611e3657600080fd5b611e4287828801611c24565b95989497509550505050565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811681146104db57600080fd5b60008060408385031215611e8b57600080fd5b8235611e9681611bab565b91506020830135611de781611e4e565b60008060408385031215611eb957600080fd5b8235611ec481611bab565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715611f2557611f25611ed2565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611f7257611f72611ed2565b604052919050565b600067ffffffffffffffff821115611f9457611f94611ed2565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600060208284031215611fd257600080fd5b813567ffffffffffffffff811115611fe957600080fd5b8201601f81018413611ffa57600080fd5b803561200d61200882611f7a565b611f2b565b81815285602083850101111561202257600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083601f84011261205257600080fd5b50813567ffffffffffffffff81111561206a57600080fd5b6020830191508360208260051b8501011115611c6657600080fd5b6000806000806040858703121561209b57600080fd5b843567ffffffffffffffff808211156120b357600080fd5b6120bf88838901612040565b909650945060208701359150808211156120d857600080fd5b50611e4287828801612040565b600080600080608085870312156120fb57600080fd5b843561210681611bab565b9350602085013561211681611b6c565b9250604085013561212681611b6c565b9150606085013561213681611b6c565b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036121d0576121d0612170565b5060010190565b6000602082840312156121e957600080fd5b8135610e2081611e4e565b60006020828403121561220657600080fd5b81518015158114610e2057600080fd5b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8181168382160190808211156105d4576105d4612170565b73ffffffffffffffffffffffffffffffffffffffff8716815285602082015261ffff8516604082015283606082015263ffffffff8316608082015260c060a0820152600061229c60c0830184611d4c565b98975050505050505050565b6000602082840312156122ba57600080fd5b815167ffffffffffffffff81168114610e2057600080fd5b805160208083015191908110156116f8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b600082601f83011261232557600080fd5b815161233361200882611f7a565b81815284602083860101111561234857600080fd5b611af2826020830160208701611d28565b60006020828403121561236b57600080fd5b815167ffffffffffffffff81111561238257600080fd5b611af284828501612314565b805160ff8116811461051b57600080fd5b805161051b81611da9565b6000602082840312156123bc57600080fd5b815167ffffffffffffffff808211156123d457600080fd5b9083019061010082860312156123e957600080fd5b6123f1611f01565b6123fa8361238e565b8152602083015160208201526040830151604082015261241c6060840161239f565b60608201526080830151608082015261243760a0840161239f565b60a082015260c083015160c082015260e08301518281111561245857600080fd5b61246487828601612314565b60e08301525095945050505050565b6000806040838503121561248657600080fd5b825161249181611bab565b6020840151909250611de781611e4e565b6000602082840312156124b457600080fd5b8151610e2081611b6c565b8082018082111561050d5761050d61217056fe4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e2e2044696420796f7520737065636966792074686520726967687420646f6d61696e2049443fa26469706673582212209990467cda30f096a39ec6f4e58cedb401c9262f7fc408989f05619a5e900c8064736f6c63430008110033";
577
+ const _bytecode = "0x608060405260d0805463ffffffff16905534801561001c57600080fd5b5061254b8061002c6000396000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c80638da5cb5b116100ee578063d5438eae11610097578063f1bd6f0a11610071578063f1bd6f0a1461047e578063f2fde38b14610491578063f3c61d6b146104a4578063fb6bf74c146104b757600080fd5b8063d5438eae1461042b578063de523cf31461044b578063e9198bf91461046b57600080fd5b8063b9508d7f116100c8578063b9508d7f146103c1578063c6009704146103f8578063c68785191461041857600080fd5b80638da5cb5b14610333578063affed0e014610351578063b49c53a7146103ae57600080fd5b8063458ab0141161015057806356d5d4751161012a57806356d5d47514610305578063715018a61461031857806381005b9f1461032057600080fd5b8063458ab01414610293578063476eea39146102d257806348035d54146102f257600080fd5b80632ead72f6116101815780632ead72f61461023d57806339bb4ad91461025e578063440df4f41461027e57600080fd5b80630879b4a7146101a85780630e72cc0614610208578063297e18b11461021d575b600080fd5b6101de6101b6366004611b53565b60cf6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61021b610216366004611b8e565b6104ca565b005b60cd546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b61025061024b366004611bbd565b6104de565b6040519081526020016101ff565b6066546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b610286610520565b6040516101ff9190611bda565b6102a66102a1366004611c6d565b6105db565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101ff565b6102e56102e0366004611ce0565b61084d565b6040516101ff9190611d96565b61021b610300366004611db9565b610c1b565b61021b610313366004611df2565b610c9f565b61021b610d92565b61025061032e366004611e78565b610da6565b60335473ffffffffffffffffffffffffffffffffffffffff166101de565b60d0546103819064010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681565b6040517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911681526020016101ff565b61021b6103bc366004611ea6565b610e27565b6103e56103cf366004611bbd565b60ce6020526000908152604090205461ffff1681565b60405161ffff90911681526020016101ff565b60cc546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b61021b610426366004611fc0565b610e3d565b6065546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b6067546101de9073ffffffffffffffffffffffffffffffffffffffff1681565b61021b610479366004612085565b61111c565b61021b61048c366004611b8e565b6111f9565b61021b61049f366004611b8e565b61120a565b61021b6104b2366004611b8e565b6112be565b61021b6104c53660046120e5565b6112cf565b6104d26114ec565b6104db8161156d565b50565b60006104f4609863ffffffff8085169061167b16565b156105135761050d609863ffffffff8085169061168716565b92915050565b506000919050565b919050565b609880546060919060009067ffffffffffffffff81111561054357610543611ed2565b60405190808252806020026020018201604052801561056c578160200160208202803683370190505b50905060005b82548110156105d45782818154811061058d5761058d612141565b906000526020600020015460001c8282815181106105ad576105ad612141565b63ffffffff90921660209283029190910190910152806105cc8161219f565b915050610572565b5092915050565b60cd54600090819073ffffffffffffffffffffffffffffffffffffffff163314610666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f216c69717569646974794c61796572526f75746572000000000000000000000060448201526064015b60405180910390fd5b6000610674848601866121d7565b9050600060cf60006106868b85610da6565b815260208101919091526040016000205473ffffffffffffffffffffffffffffffffffffffff1690508061073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f506f7274616c205472616e7366657220686173206e6f7420796574206265656e60448201527f20636f6d706c6574656400000000000000000000000000000000000000000000606482015260840161065d565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301526024820189905282919082169063a9059cbb906044016020604051808303816000875af11580156107b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d891906121f4565b61083e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f217472616e73666572206f757400000000000000000000000000000000000000604482015260640161065d565b50989597509495505050505050565b60cd5460609073ffffffffffffffffffffffffffffffffffffffff1633146108d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f216c69717569646974794c61796572526f757465720000000000000000000000604482015260640161065d565b60d0546109059064010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166001612216565b60d080547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092166401000000000263ffffffff9283161790558516600090815260ce602052604081205461ffff169061095b87611693565b60cc546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201526024810187905291925086169063095ea7b3906044016020604051808303816000875af11580156109d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109fa91906121f4565b610a60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21617070726f76616c0000000000000000000000000000000000000000000000604482015260640161065d565b60cc5460d0546040805163ffffffff831660208201526401000000009092047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168282015280518083038201815260608301918290527fc5a5ebda0000000000000000000000000000000000000000000000000000000090915260009273ffffffffffffffffffffffffffffffffffffffff169163c5a5ebda91610b0d918a918a918991899189919060640161224b565b6020604051808303816000875af1158015610b2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5091906122a8565b60d054604080516401000000009092047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16825267ffffffffffffffff8316602083015263ffffffff8b16908201529091507ff308a69d8646d23ad24a283ae906d5d85d72ba1b9ef7add7769bca145655937f9060600160405180910390a160d054604080516401000000009092047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166020830152016040516020818303038152906040529350505050949350505050565b610c236114ec565b63ffffffff8216600081815260ce602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff861690811790915591519182527f86eee369bdd5e8620b595131597759ddadaf57f38cc5f5f76172ad2b60c9c1f4910160405180910390a25050565b60655473ffffffffffffffffffffffffffffffffffffffff163314610d20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f216d61696c626f78000000000000000000000000000000000000000000000000604482015260640161065d565b8383610d2c82826116fe565b6040518060800160405280604381526020016124d36043913990610d7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065d9190611d96565b50610d8a86868686611712565b505050505050565b610d9a6114ec565b610da46000611774565b565b6040805160e084901b7fffffffff000000000000000000000000000000000000000000000000000000001660208083019190915283901b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016602482015260009101604051602081830303815290604052610e20906122d2565b9392505050565b610e2f6114ec565b610e3982826117eb565b5050565b60cc546040517fc3f511c100000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff169063c3f511c190610e94908590600401611d96565b6000604051808303816000875af1158015610eb3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610ef99190810190612359565b60cc546040517fea63738d00000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063ea63738d90610f55908590600401611d96565b600060405180830381865afa158015610f72573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610fb891908101906123aa565b90506000808260e00151806020019051810190610fd59190612473565b60d05463ffffffff16600090815260ce602052604081205460608701519395509193509161ffff9081169116146110b15760cc54606085015160408087015190517f1ff1e28600000000000000000000000000000000000000000000000000000000815261ffff9092166004830152602482015273ffffffffffffffffffffffffffffffffffffffff90911690631ff1e28690604401602060405180830381865afa158015611088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ac91906124a2565b6110b7565b60408401515b90508060cf60006110c88686610da6565b815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050565b6111246114ec565b82811461118d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f216c656e67746800000000000000000000000000000000000000000000000000604482015260640161065d565b60005b838110156111f2576111e08585838181106111ad576111ad612141565b90506020020160208101906111c29190611bbd565b8484848181106111d4576111d4612141565b905060200201356117eb565b6111eb6001826124bf565b9050611190565b5050505050565b6112016114ec565b6104db81611838565b6112126114ec565b73ffffffffffffffffffffffffffffffffffffffff81166112b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161065d565b6104db81611774565b6112c66114ec565b6104db81611927565b600054610100900460ff16158080156112ef5750600054600160ff909116105b806113095750303b158015611309575060005460ff166001145b611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161065d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156113f357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6113fc84611774565b60d0805463ffffffff87167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090911617905560cc805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560cd80549285169290911691909117905580156111f257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b60335473ffffffffffffffffffffffffffffffffffffffff163314610da4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065d565b73ffffffffffffffffffffffffffffffffffffffff811615806115a6575073ffffffffffffffffffffffffffffffffffffffff81163b15155b61160c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e74726163740000000000000000000000000000000000000000000000604482015260640161065d565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ffec811ed4e60aebdaf7a79cad8a97196bf56e35362f039705598226d30c9d24890600090a250565b6000610e208383611a16565b6000610e208383611a22565b600061169e826104de565b90506000801b8114156040518060800160405280604381526020016124d360439139906116f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065d9190611d96565b50919050565b60008161170a846104de565b149392505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4e6f206d65737361676573206578706563746564000000000000000000000000604482015260640161065d565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611801609863ffffffff808516908490611aac16565b604051819063ffffffff8416907f97fd51fef1f80c854cbd0150c248e8b2ac4ecdc97cc05e742b5f61c9f4dc645890600090a35050565b8073ffffffffffffffffffffffffffffffffffffffff81163b6118b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e74726163740000000000000000000000000000000000000000000000604482015260640161065d565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fb87f5a0bface22cde699143559fb99f990ae54eea236995fc54178af91af859f90600090a25050565b8073ffffffffffffffffffffffffffffffffffffffff81163b6119a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e74726163740000000000000000000000000000000000000000000000604482015260640161065d565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517f7a61e573722ff8b205c8962b59d37e7d30573f368965597a844a94872204ebd790600090a25050565b6000610e208383611abd565b600081815260028301602052604081205480151580611a465750611a468484611a16565b610e20576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b65790000604482015260640161065d565b611ab7838383611ad5565b50505050565b60008181526001830160205260408120541515610e20565b60008281526002840160205260408120829055611af28484611afa565b949350505050565b6000818152600183016020526040812054610e2090849084908490611b4b5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561050d565b50600061050d565b600060208284031215611b6557600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146104db57600080fd5b600060208284031215611ba057600080fd5b8135610e2081611b6c565b63ffffffff811681146104db57600080fd5b600060208284031215611bcf57600080fd5b8135610e2081611bab565b6020808252825182820181905260009190848201906040850190845b81811015611c1857835163ffffffff1683529284019291840191600101611bf6565b50909695505050505050565b60008083601f840112611c3657600080fd5b50813567ffffffffffffffff811115611c4e57600080fd5b602083019150836020828501011115611c6657600080fd5b9250929050565b600080600080600060808688031215611c8557600080fd5b8535611c9081611bab565b94506020860135611ca081611b6c565b935060408601359250606086013567ffffffffffffffff811115611cc357600080fd5b611ccf88828901611c24565b969995985093965092949392505050565b60008060008060808587031215611cf657600080fd5b8435611d0181611bab565b9350602085013592506040850135611d1881611b6c565b9396929550929360600135925050565b60005b83811015611d43578181015183820152602001611d2b565b50506000910152565b60008151808452611d64816020860160208601611d28565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610e206020830184611d4c565b61ffff811681146104db57600080fd5b60008060408385031215611dcc57600080fd5b8235611dd781611bab565b91506020830135611de781611da9565b809150509250929050565b60008060008060608587031215611e0857600080fd5b8435611e1381611bab565b935060208501359250604085013567ffffffffffffffff811115611e3657600080fd5b611e4287828801611c24565b95989497509550505050565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811681146104db57600080fd5b60008060408385031215611e8b57600080fd5b8235611e9681611bab565b91506020830135611de781611e4e565b60008060408385031215611eb957600080fd5b8235611ec481611bab565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715611f2557611f25611ed2565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611f7257611f72611ed2565b604052919050565b600067ffffffffffffffff821115611f9457611f94611ed2565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600060208284031215611fd257600080fd5b813567ffffffffffffffff811115611fe957600080fd5b8201601f81018413611ffa57600080fd5b803561200d61200882611f7a565b611f2b565b81815285602083850101111561202257600080fd5b81602084016020830137600091810160200191909152949350505050565b60008083601f84011261205257600080fd5b50813567ffffffffffffffff81111561206a57600080fd5b6020830191508360208260051b8501011115611c6657600080fd5b6000806000806040858703121561209b57600080fd5b843567ffffffffffffffff808211156120b357600080fd5b6120bf88838901612040565b909650945060208701359150808211156120d857600080fd5b50611e4287828801612040565b600080600080608085870312156120fb57600080fd5b843561210681611bab565b9350602085013561211681611b6c565b9250604085013561212681611b6c565b9150606085013561213681611b6c565b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036121d0576121d0612170565b5060010190565b6000602082840312156121e957600080fd5b8135610e2081611e4e565b60006020828403121561220657600080fd5b81518015158114610e2057600080fd5b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8181168382160190808211156105d4576105d4612170565b73ffffffffffffffffffffffffffffffffffffffff8716815285602082015261ffff8516604082015283606082015263ffffffff8316608082015260c060a0820152600061229c60c0830184611d4c565b98975050505050505050565b6000602082840312156122ba57600080fd5b815167ffffffffffffffff81168114610e2057600080fd5b805160208083015191908110156116f8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910360031b1b16919050565b600082601f83011261232557600080fd5b815161233361200882611f7a565b81815284602083860101111561234857600080fd5b611af2826020830160208701611d28565b60006020828403121561236b57600080fd5b815167ffffffffffffffff81111561238257600080fd5b611af284828501612314565b805160ff8116811461051b57600080fd5b805161051b81611da9565b6000602082840312156123bc57600080fd5b815167ffffffffffffffff808211156123d457600080fd5b9083019061010082860312156123e957600080fd5b6123f1611f01565b6123fa8361238e565b8152602083015160208201526040830151604082015261241c6060840161239f565b60608201526080830151608082015261243760a0840161239f565b60a082015260c083015160c082015260e08301518281111561245857600080fd5b61246487828601612314565b60e08301525095945050505050565b6000806040838503121561248657600080fd5b825161249181611bab565b6020840151909250611de781611e4e565b6000602082840312156124b457600080fd5b8151610e2081611b6c565b8082018082111561050d5761050d61217056fe4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e2e2044696420796f7520737065636966792074686520726967687420646f6d61696e2049443fa2646970667358221220cbeefaedc9813dda3ef06d5b6fd892101b76e1cedda211b06336ef6f6741a3a664736f6c63430008110033";
578
578
  const isSuperArgs = (xs) => xs.length > 1;
579
579
  class PortalAdapter__factory extends ethers_1.ContractFactory {
580
580
  constructor(...args) {
@@ -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 = "0x608060405234801561001057600080fd5b50604051614a5d380380614a5d83398101604081905261002f91610682565b6000805463ffffffff838116640100000000026001600160401b031990921690851617178155604051839061006390610635565b63ffffffff9091168152602001604051809103906000f08015801561008c573d6000803e3d6000fd5b50905060008260405161009e90610635565b63ffffffff9091168152602001604051809103906000f0801580156100c7573d6000803e3d6000fd5b506040516302cd9fb760e51b815263ffffffff851660048201526001600160a01b038083166024830152919250908316906359b3f6e090604401600060405180830381600087803b15801561011b57600080fd5b505af115801561012f573d6000803e3d6000fd5b50506040516302cd9fb760e51b815263ffffffff871660048201526001600160a01b038581166024830152841692506359b3f6e09150604401600060405180830381600087803b15801561018257600080fd5b505af1158015610196573d6000803e3d6000fd5b505050506040516101a690610642565b604051809103906000f0801580156101c2573d6000803e3d6000fd5b506000805463ffffffff168152600260205260409081902080546001600160a01b0319166001600160a01b0393909316929092179091555161020390610642565b604051809103906000f08015801561021f573d6000803e3d6000fd5b5060008054640100000000900463ffffffff168152600260205260409081902080546001600160a01b0319166001600160a01b039390931692909217909155516102689061064f565b604051809103906000f080158015610284573d6000803e3d6000fd5b506000805463ffffffff168152600360205260409081902080546001600160a01b0319166001600160a01b039390931692909217909155516102c59061064f565b604051809103906000f0801580156102e1573d6000803e3d6000fd5b5060008054640100000000900463ffffffff908116825260036020908152604080842080546001600160a01b03199081166001600160a01b039788161790915589841685526001909252808420805483168887161790559187168352818320805490911693851693909317909255905161035a9061065c565b604051809103906000f080158015610376573d6000803e3d6000fd5b50905060006040516103879061065c565b604051809103906000f0801580156103a3573d6000803e3d6000fd5b506000805463ffffffff16815260026020908152604080832054600390925291829020549151637c643b2f60e11b81526001600160a01b03888116600483015291821660248201529181166044830152306064830181905292935084169063f8c8765e90608401600060405180830381600087803b15801561042457600080fd5b505af1158015610438573d6000803e3d6000fd5b505060008054640100000000900463ffffffff16815260026020908152604080832054600390925291829020549151637c643b2f60e11b81526001600160a01b0389811660048301529182166024820152918116604483015284811660648301528516925063f8c8765e9150608401600060405180830381600087803b1580156104c157600080fd5b505af11580156104d5573d6000803e3d6000fd5b50505050826001600160a01b031663b49c53a7876104fc8561062960201b61029e1760201c565b6040516001600160e01b031960e085901b16815263ffffffff9290921660048301526024820152604401600060405180830381600087803b15801561054057600080fd5b505af1158015610554573d6000803e3d6000fd5b50505050816001600160a01b031663b49c53a78861057b8661062960201b61029e1760201c565b6040516001600160e01b031960e085901b16815263ffffffff9290921660048301526024820152604401600060405180830381600087803b1580156105bf57600080fd5b505af11580156105d3573d6000803e3d6000fd5b5050505063ffffffff96871660009081526004602052604080822080546001600160a01b03199081166001600160a01b0397881617909155979098168152969096208054909516911617909255506106b5915050565b6001600160a01b031690565b610e2e806109de83390190565b610d348061180c83390190565b61021e8061254083390190565b6122ff8061275e83390190565b805163ffffffff8116811461067d57600080fd5b919050565b6000806040838503121561069557600080fd5b61069e83610669565b91506106ac60208401610669565b90509250929050565b61031a806106c46000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063f11a367e11610050578063f11a367e14610142578063f9d2692d14610178578063f9f312ad1461018257600080fd5b80635a007b7e146100775780637a7eada3146100d6578063e9ee46951461010c575b600080fd5b6100ad6100853660046102b7565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100ad6100e43660046102b7565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100ad61011a3660046102b7565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100ad6101503660046102b7565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61018061018a565b005b61018061021d565b6000805463ffffffff168152600160205260408082205481517f1605c306000000000000000000000000000000000000000000000000000000008152915173ffffffffffffffffffffffffffffffffffffffff90911692631605c306926004808201939182900301818387803b15801561020357600080fd5b505af1158015610217573d6000803e3d6000fd5b50505050565b60008054640100000000900463ffffffff168152600160205260408082205481517f1605c306000000000000000000000000000000000000000000000000000000008152915173ffffffffffffffffffffffffffffffffffffffff90911692631605c306926004808201939182900301818387803b15801561020357600080fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b6000602082840312156102c957600080fd5b813563ffffffff811681146102dd57600080fd5b939250505056fea2646970667358221220ed6bc93d6c20dc605683518581a0e2938200763bcf1f1d77ae8697e30597681764736f6c6343000811003360c0604052600060a0819052808055600181905560025534801561002257600080fd5b50604051610e2e380380610e2e8339810160408190526100419161004f565b63ffffffff1660805261007c565b60006020828403121561006157600080fd5b815163ffffffff8116811461007557600080fd5b9392505050565b60805160a051610d866100a8600039600061025401526000818161016201526107500152610d866000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806392d28b3d11610081578063fa31de011161005b578063fa31de0114610233578063fd10ebe514610246578063ffa1ad741461024f57600080fd5b806392d28b3d146101ac578063a3b4919f146101cf578063d12164e41461022a57600080fd5b80638209d312116100b25780638209d312146101415780638d3638f41461015d578063924324aa1461019957600080fd5b80631605c306146100ce57806359b3f6e0146100d8575b600080fd5b6100d6610276565b005b6100d66100e6366004610811565b63ffffffff91909116600090815260036020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b61014a60015481565b6040519081526020015b60405180910390f35b6101847f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610154565b6100d66101a7366004610891565b61043a565b6101bf6101ba36600461090b565b610599565b6040516101549493929190610988565b6102056101dd3660046109d7565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610154565b61014a60025481565b61014a6102413660046109f9565b61066f565b61014a60005481565b6101847f000000000000000000000000000000000000000000000000000000000000000081565b6002805460009081526004602090815260408083208151608081018352815463ffffffff8116825273ffffffffffffffffffffffffffffffffffffffff6401000000009091048116948201949094526001820154909316918301919091529283018054929391926060840191906102ec90610a53565b80601f016020809104026020016040519081016040528092919081815260200182805461031890610a53565b80156103655780601f1061033a57610100808354040283529160200191610365565b820191906000526020600020905b81548152906001019060200180831161034857829003601f168201915b5050505050815250509050806040015173ffffffffffffffffffffffffffffffffffffffff166356d5d47582600001516103cc846020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1690565b84606001516040518463ffffffff1660e01b81526004016103ef93929190610aa6565b600060405180830381600087803b15801561040957600080fd5b505af115801561041d573d6000803e3d6000fd5b50506002805492509050600061043283610ad4565b919050555050565b60405180608001604052808663ffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093909452505060018054825260046020908152604092839020855181549287015163ffffffff9091167fffffffffffffffff0000000000000000000000000000000000000000000000009093169290921764010000000073ffffffffffffffffffffffffffffffffffffffff938416021781559285015191830180547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790556060830151909150600282019061057a9082610bb1565b5050600180549150600061058d83610ad4565b91905055505050505050565b60046020526000908152604090208054600182015460028301805463ffffffff84169464010000000090940473ffffffffffffffffffffffffffffffffffffffff9081169493169291906105ec90610a53565b80601f016020809104026020016040519081016040528092919081815260200182805461061890610a53565b80156106655780601f1061063a57610100808354040283529160200191610665565b820191906000526020600020905b81548152906001019060200180831161064857829003601f168201915b5050505050905084565b63ffffffff841660009081526003602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610706576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d697373696e672072656d6f7465206d61696c626f7800000000000000000000604482015260640160405180910390fd5b6040517f924324aa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063924324aa90610780907f00000000000000000000000000000000000000000000000000000000000000009033908a908a908a90600401610ccb565b600060405180830381600087803b15801561079a57600080fd5b505af11580156107ae573d6000803e3d6000fd5b50506000805492509050806107c283610ad4565b909155506000979650505050505050565b803563ffffffff811681146107e757600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461080e57600080fd5b50565b6000806040838503121561082457600080fd5b61082d836107d3565b9150602083013561083d816107ec565b809150509250929050565b60008083601f84011261085a57600080fd5b50813567ffffffffffffffff81111561087257600080fd5b60208301915083602082850101111561088a57600080fd5b9250929050565b6000806000806000608086880312156108a957600080fd5b6108b2866107d3565b945060208601356108c2816107ec565b935060408601356108d2816107ec565b9250606086013567ffffffffffffffff8111156108ee57600080fd5b6108fa88828901610848565b969995985093965092949392505050565b60006020828403121561091d57600080fd5b5035919050565b6000815180845260005b8181101561094a5760208185018101518683018201520161092e565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b63ffffffff85168152600073ffffffffffffffffffffffffffffffffffffffff8086166020840152808516604084015250608060608301526109cd6080830184610924565b9695505050505050565b6000602082840312156109e957600080fd5b6109f2826107d3565b9392505050565b60008060008060608587031215610a0f57600080fd5b610a18856107d3565b935060208501359250604085013567ffffffffffffffff811115610a3b57600080fd5b610a4787828801610848565b95989497509550505050565b600181811c90821680610a6757607f821691505b602082108103610aa0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b63ffffffff84168152826020820152606060408201526000610acb6060830184610924565b95945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610b2c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f821115610bac57600081815260208120601f850160051c81016020861015610b895750805b601f850160051c820191505b81811015610ba857828155600101610b95565b5050505b505050565b815167ffffffffffffffff811115610bcb57610bcb610b33565b610bdf81610bd98454610a53565b84610b62565b602080601f831160018114610c325760008415610bfc5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610ba8565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015610c7f57888601518255948401946001909101908401610c60565b5085821015610cbb57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b63ffffffff86168152600073ffffffffffffffffffffffffffffffffffffffff808716602084015280861660408401525060806060830152826080830152828460a0840137600060a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168301019050969550505050505056fea2646970667358221220279cc4c42a2de41ad9187b3351e9c0ea0527e76fcc182238a7cb83bd3b95f32264736f6c63430008110033608060405260006065553480156200001657600080fd5b506200002162000027565b62000283565b600054610100900460ff1615808015620000485750600054600160ff909116105b8062000078575062000065306200015960201b620006c31760201c565b15801562000078575060005460ff166001145b620000e15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000105576000805461ff0019166101001790555b6200010f62000168565b801562000156576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b03163b151590565b600054610100900460ff16620001c45760405162461bcd60e51b815260206004820152602b602482015260008051602062000d1483398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000d8565b620001ce620001d0565b565b600054610100900460ff166200022c5760405162461bcd60e51b815260206004820152602b602482015260008051602062000d1483398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000d8565b620001ce33603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610a8180620002936000396000f3fe60806040526004361061007b5760003560e01c80638da5cb5b1161004e5780638da5cb5b146100d4578063a69297931461010e578063bf1fe4201461013c578063f2fde38b1461015c57600080fd5b806311bf2c18146100805780634e71d92d14610095578063715018a6146100aa5780638129fc1c146100bf575b600080fd5b61009361008e36600461094e565b61017c565b005b3480156100a157600080fd5b50610093610366565b3480156100b657600080fd5b50610093610451565b3480156100cb57600080fd5b50610093610465565b3480156100e057600080fd5b5060335460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561011a57600080fd5b5061012e610129366004610994565b6105f6565b604051908152602001610105565b34801561014857600080fd5b506100936101573660046109be565b606555565b34801561016857600080fd5b506100936101773660046109d7565b61060f565b600061018884846105f6565b90508034101561021f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f696e73756666696369656e7420696e746572636861696e20676173207061796d60448201527f656e74000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b600061022b8234610a21565b905080156103245760008373ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461028d576040519150601f19603f3d011682016040523d82523d6000602084013e610292565b606091505b5050905080610322576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f496e746572636861696e20676173207061796d656e7420726566756e6420666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152608401610216565b505b6040805185815234602082015287917ff715e66d2cd2a0179069dcda2a41a4da36a30e1aad12187fbb7c5d100afd621c910160405180910390a2505050505050565b600061038760335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff164760405160006040518083038185875af1925050503d80600081146103de576040519150601f19603f3d011682016040523d82523d6000602084013e6103e3565b606091505b505090508061044e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f217472616e7366657200000000000000000000000000000000000000000000006044820152606401610216565b50565b6104596106df565b6104636000610760565b565b600054610100900460ff16158080156104855750600054600160ff909116105b8061049f5750303b15801561049f575060005460ff166001145b61052b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610216565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561058957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105916107d7565b801561044e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000816065546106069190610a34565b90505b92915050565b6106176106df565b73ffffffffffffffffffffffffffffffffffffffff81166106ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610216565b61044e81610760565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60335473ffffffffffffffffffffffffffffffffffffffff163314610463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610216565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1661086e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610216565b610463600054610100900460ff16610908576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610216565b61046333610760565b803563ffffffff8116811461092557600080fd5b919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461092557600080fd5b6000806000806080858703121561096457600080fd5b8435935061097460208601610911565b9250604085013591506109896060860161092a565b905092959194509250565b600080604083850312156109a757600080fd5b6109b083610911565b946020939093013593505050565b6000602082840312156109d057600080fd5b5035919050565b6000602082840312156109e957600080fd5b6106068261092a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610609576106096109f2565b8082028115828204841417610609576106096109f256fea2646970667358221220ec134023fdda4f1ae2066cc06f4f62dcaf75381f98d343fff1019b6582eae18164736f6c63430008110033496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069608060405234801561001057600080fd5b506101fe806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632852b71c146100515780634fc3aa7c146100735780636465e69f146100b4578063f7e83aee146100ce575b600080fd5b60005461005e9060ff1681565b60405190151581526020015b60405180910390f35b6100b26100813660046100ea565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b005b6100bc600081565b60405160ff909116815260200161006a565b61005e6100dc36600461015c565b60005460ff16949350505050565b6000602082840312156100fc57600080fd5b8135801515811461010c57600080fd5b9392505050565b60008083601f84011261012557600080fd5b50813567ffffffffffffffff81111561013d57600080fd5b60208301915083602082850101111561015557600080fd5b9250929050565b6000806000806040858703121561017257600080fd5b843567ffffffffffffffff8082111561018a57600080fd5b61019688838901610113565b909650945060208701359150808211156101af57600080fd5b506101bc87828801610113565b9598949750955050505056fea2646970667358221220a1a05fbfc54039f64706d6b983d8ed604b13adbd5a9e4e8990057c4b1a77b1d764736f6c63430008110033608060405234801561001057600080fd5b506122df806100206000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063b49c53a711610097578063f1bd6f0a11610066578063f1bd6f0a1461024c578063f2fde38b1461025f578063f3c61d6b14610272578063f8c8765e1461028557600080fd5b8063b49c53a7146101e6578063d5438eae146101f9578063de523cf314610219578063e9198bf91461023957600080fd5b806356d5d475116100d357806356d5d4751461019a578063715018a6146101ad5780638cc02cab146101b55780638da5cb5b146101c857600080fd5b80630e72cc06146101055780632ead72f61461011a57806339bb4ad914610140578063440df4f414610185575b600080fd5b610118610113366004611677565b610298565b005b61012d6101283660046116a6565b6102ac565b6040519081526020015b60405180910390f35b6066546101609073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610137565b61018d6102ee565b60405161013791906116c1565b6101186101a836600461170b565b6103a9565b6101186104a1565b61012d6101c33660046117de565b6104b5565b60335473ffffffffffffffffffffffffffffffffffffffff16610160565b6101186101f4366004611831565b610506565b6065546101609073ffffffffffffffffffffffffffffffffffffffff1681565b6067546101609073ffffffffffffffffffffffffffffffffffffffff1681565b61011861024736600461185b565b61051c565b61011861025a366004611677565b6105f9565b61011861026d366004611677565b61060a565b610118610280366004611677565b6106be565b6101186102933660046118c7565b6106cf565b6102a0610868565b6102a9816108e9565b50565b60006102c2609863ffffffff808516906109f716565b156102e1576102db609863ffffffff80851690610a0a16565b92915050565b506000919050565b919050565b609880546060919060009067ffffffffffffffff8111156103115761031161191b565b60405190808252806020026020018201604052801561033a578160200160208202803683370190505b50905060005b82548110156103a25782818154811061035b5761035b61194a565b906000526020600020015460001c82828151811061037b5761037b61194a565b63ffffffff909216602092830291909101909101528061039a816119a8565b915050610340565b5092915050565b60655473ffffffffffffffffffffffffffffffffffffffff16331461042f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f216d61696c626f7800000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b838361043b8282610a16565b604051806080016040528060438152602001612242604391399061048c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104269190611a4e565b5061049986868686610a2a565b505050505050565b6104a9610868565b6104b36000610b4e565b565b604051600090339063ffffffff8616907f11c97c784c298562a796345417aa40e1ce110e6b100f41b801ab23414f72d7e5908490a36104fe846104f9858533610bc5565b610bf7565b949350505050565b61050e610868565b6105188282610ca1565b5050565b610524610868565b82811461058d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f216c656e677468000000000000000000000000000000000000000000000000006044820152606401610426565b60005b838110156105f2576105e08585838181106105ad576105ad61194a565b90506020020160208101906105c291906116a6565b8484848181106105d4576105d461194a565b90506020020135610ca1565b6105eb600182611a61565b9050610590565b5050505050565b610601610868565b6102a981610cee565b610612610868565b73ffffffffffffffffffffffffffffffffffffffff81166106b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610426565b6102a981610b4e565b6106c6610868565b6102a981610ddd565b600054610100900460ff16158080156106ef5750600054600160ff909116105b806107095750303b158015610709575060005460ff166001145b610795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610426565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156107f357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6107ff85858585610ecc565b80156105f257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b60335473ffffffffffffffffffffffffffffffffffffffff1633146104b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610426565b73ffffffffffffffffffffffffffffffffffffffff81161580610922575073ffffffffffffffffffffffffffffffffffffffff81163b15155b610988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e747261637400000000000000000000000000000000000000000000006044820152606401610426565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ffec811ed4e60aebdaf7a79cad8a97196bf56e35362f039705598226d30c9d24890600090a250565b6000610a038383610f8d565b9392505050565b6000610a038383610f99565b600081610a22846102ac565b149392505050565b6000610a368383611023565b90506000610a44848461105d565b90506002826003811115610a5a57610a5a611a74565b03610ac4576000610a6b8585611075565b90506000610a78826110b6565b9050828863ffffffff167fb689f7016112eaacc7edebd6ea5eb700790a103e79c39ce0118e075de87d797660405160405180910390a3610abc886104f98386611161565b505050610499565b6003826003811115610ad857610ad8611a74565b03610b4657806000610aea8686611190565b9050610af682826111c8565b60405173ffffffffffffffffffffffffffffffffffffffff83169063ffffffff8a16907fc4416e2fcdf8514178829e5ead195eb13f3241ea71c0e38f998868fe81e4226990600090a35050610499565b610499611aa3565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60608160028585604051602001610bdf9493929190611bf7565b60405160208183030381529060405290509392505050565b600080610c0384611205565b6065546040517ffa31de0100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063fa31de0190610c5e90879085908890600401611ce4565b6020604051808303816000875af1158015610c7d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fe9190611d09565b610cb7609863ffffffff80851690849061127016565b604051819063ffffffff8416907f97fd51fef1f80c854cbd0150c248e8b2ac4ecdc97cc05e742b5f61c9f4dc645890600090a35050565b8073ffffffffffffffffffffffffffffffffffffffff81163b610d6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e747261637400000000000000000000000000000000000000000000006044820152606401610426565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fb87f5a0bface22cde699143559fb99f990ae54eea236995fc54178af91af859f90600090a25050565b8073ffffffffffffffffffffffffffffffffffffffff81163b610e5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e747261637400000000000000000000000000000000000000000000006044820152606401610426565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517f7a61e573722ff8b205c8962b59d37e7d30573f368965597a844a94872204ebd790600090a25050565b600054610100900460ff16610f63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610426565b610f6c84610ddd565b610f7583610cee565b610f7e826108e9565b610f8781610b4e565b50505050565b6000610a03838361127b565b600081815260028301602052604081205480151580610fbd5750610fbd8484610f8d565b610a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006044820152606401610426565b6000828261103360016040611d22565b8181106110425761104261194a565b919091013560f81c90506003811115610a0357610a03611a74565b600061106c6020828486611d35565b610a0391611d5f565b606060026110838484611023565b600381111561109457611094611a74565b146110a1576110a1611aa3565b6110ad82840184611ed4565b95945050505050565b8051606090600090818167ffffffffffffffff8111156110d8576110d861191b565b60405190808252806020026020018201604052801561110b57816020015b60608152602001906001900390816110f65790505b5090505b818310156104fe5761113985848151811061112c5761112c61194a565b6020026020010151611293565b81848151811061114b5761114b61194a565b602002602001018190525082600101925061110f565b60608160038460405160200161117993929190612093565b604051602081830303815290604052905092915050565b6060600361119e8484611023565b60038111156111af576111af611a74565b146111bc576111bc611aa3565b6110ad82840184612129565b80516000905b80821015610f87576111f9848484815181106111ec576111ec61194a565b60200260200101516112ce565b508160010191506111ce565b6000611210826102ac565b90506000801b811415604051806080016040528060438152602001612242604391399061126a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104269190611a4e565b50919050565b610f87838383611312565b60008181526001830160205260408120541515610a03565b606081602001516112a7836000015161132f565b6040516020016112b89291906121f6565b6040516020818303038152906040529050919050565b6060610a03838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250611347565b600082815260028401602052604081208290556104fe8484611460565b60606102db61133d8361146c565b8360200151611476565b6060824710156113d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610426565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516114029190612225565b60006040518083038185875af1925050503d806000811461143f576040519150601f19603f3d011682016040523d82523d6000602084013e611444565b606091505b50915091506114558783838761149b565b979650505050505050565b6000610a03838361153b565b80516000906102db565b6060610a0383836040518060600160405280602581526020016122856025913961158a565b6060831561153157825160000361152a5773ffffffffffffffffffffffffffffffffffffffff85163b61152a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610426565b50816104fe565b6104fe838361160f565b6000818152600183016020526040812054611582575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556102db565b5060006102db565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516115b49190612225565b600060405180830381855afa9150503d80600081146115ef576040519150601f19603f3d011682016040523d82523d6000602084013e6115f4565b606091505b50915091506116058683838761149b565b9695505050505050565b81511561161f5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104269190611a4e565b803573ffffffffffffffffffffffffffffffffffffffff811681146102e957600080fd5b60006020828403121561168957600080fd5b610a0382611653565b803563ffffffff811681146102e957600080fd5b6000602082840312156116b857600080fd5b610a0382611692565b6020808252825182820181905260009190848201906040850190845b818110156116ff57835163ffffffff16835292840192918401916001016116dd565b50909695505050505050565b6000806000806060858703121561172157600080fd5b61172a85611692565b935060208501359250604085013567ffffffffffffffff8082111561174e57600080fd5b818701915087601f83011261176257600080fd5b81358181111561177157600080fd5b88602082850101111561178357600080fd5b95989497505060200194505050565b60008083601f8401126117a457600080fd5b50813567ffffffffffffffff8111156117bc57600080fd5b6020830191508360208260051b85010111156117d757600080fd5b9250929050565b6000806000604084860312156117f357600080fd5b6117fc84611692565b9250602084013567ffffffffffffffff81111561181857600080fd5b61182486828701611792565b9497909650939450505050565b6000806040838503121561184457600080fd5b61184d83611692565b946020939093013593505050565b6000806000806040858703121561187157600080fd5b843567ffffffffffffffff8082111561188957600080fd5b61189588838901611792565b909650945060208701359150808211156118ae57600080fd5b506118bb87828801611792565b95989497509550505050565b600080600080608085870312156118dd57600080fd5b6118e685611653565b93506118f460208601611653565b925061190260408601611653565b915061191060608601611653565b905092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036119d9576119d9611979565b5060010190565b60005b838110156119fb5781810151838201526020016119e3565b50506000910152565b60008151808452611a1c8160208601602086016119e0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610a036020830184611a04565b808201808211156102db576102db611979565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60048110611b09577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112611b4157600080fd5b90910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b7f57600080fd5b830160208101925035905067ffffffffffffffff811115611b9f57600080fd5b8036038213156117d757600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600060608083018784526020611c0f81860189611ad2565b604085810184905291869052608091828601600588901b870184018960005b8a811015611cd2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a8403018452611c67828d611b0d565b611c718182611b0d565b868552803587860152611c8688820182611b4a565b9150878b870152611c9a8a87018383611bae565b915050611ca988830183611b4a565b925085820389870152611cbd828483611bae565b96890196955050509186019150600101611c2e565b50909c9b505050505050505050505050565b63ffffffff841681528260208201526060604082015260006110ad6060830184611a04565b600060208284031215611d1b57600080fd5b5051919050565b818103818111156102db576102db611979565b60008085851115611d4557600080fd5b83861115611d5257600080fd5b5050820193919092039150565b803560208310156102db577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b8035600481106102e957600080fd5b6040805190810167ffffffffffffffff81118282101715611dcd57611dcd61191b565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611e1a57611e1a61191b565b604052919050565b600067ffffffffffffffff821115611e3c57611e3c61191b565b5060051b60200190565b600082601f830112611e5757600080fd5b813567ffffffffffffffff811115611e7157611e7161191b565b611ea260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611dd3565b818152846020838601011115611eb757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215611ee957600080fd5b83359250611ef960208501611d9b565b915067ffffffffffffffff60408501351115611f1457600080fd5b6040840135840185601f820112611f2a57600080fd5b611f3c611f378235611e22565b611dd3565b81358082526020808301929160051b840101881015611f5a57600080fd5b602083015b6020843560051b8501018110156120855767ffffffffffffffff81351115611f8657600080fd5b803584017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604081838d03011215611fbd57600080fd5b611fc5611daa565b67ffffffffffffffff60208401351115611fde57600080fd5b60208301358301604083828f03011215611ff757600080fd5b611fff611daa565b92506020810135835267ffffffffffffffff6040820135111561202157600080fd5b6120348d60206040840135840101611e46565b60208401525081815267ffffffffffffffff6040840135111561205657600080fd5b6120698c60206040860135860101611e46565b6020820152808652505050602083019250602081019050611f5f565b508093505050509250925092565b60006060820185835260206120aa81850187611ad2565b6060604085015281855180845260808601915060808160051b870101935082870160005b8281101561211a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80888703018452612108868351611a04565b955092840192908401906001016120ce565b50939998505050505050505050565b60008060006060848603121561213e57600080fd5b83359250602061214f818601611d9b565b9250604085013567ffffffffffffffff8082111561216c57600080fd5b818701915087601f83011261218057600080fd5b813561218e611f3782611e22565b81815260059190911b8301840190848101908a8311156121ad57600080fd5b8585015b838110156121e5578035858111156121c95760008081fd5b6121d78d89838a0101611e46565b8452509186019186016121b1565b508096505050505050509250925092565b600083516122088184602088016119e0565b83519083019061221c8183602088016119e0565b01949350505050565b600082516122378184602087016119e0565b919091019291505056fe4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e2e2044696420796f7520737065636966792074686520726967687420646f6d61696e2049443f416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564a26469706673582212203e2eba22949e76deabcaaeb10d557be15edf3bffae2c7c4080d256c6970464bb64736f6c63430008110033";
15
+ static readonly bytecode = "0x608060405234801561001057600080fd5b506040516200511438038062005114833981016040819052610031916106ab565b6000805463ffffffff838116640100000000026001600160401b03199092169085161717815560405183906100659061065a565b63ffffffff9091168152602001604051809103906000f08015801561008e573d6000803e3d6000fd5b5090506000826040516100a09061065a565b63ffffffff9091168152602001604051809103906000f0801580156100c9573d6000803e3d6000fd5b506040516302cd9fb760e51b815263ffffffff851660048201526001600160a01b038083166024830152919250908316906359b3f6e090604401600060405180830381600087803b15801561011d57600080fd5b505af1158015610131573d6000803e3d6000fd5b50506040516302cd9fb760e51b815263ffffffff871660048201526001600160a01b038581166024830152841692506359b3f6e09150604401600060405180830381600087803b15801561018457600080fd5b505af1158015610198573d6000803e3d6000fd5b50505050306040516101a990610668565b6001600160a01b039091168152602001604051809103906000f0801580156101d5573d6000803e3d6000fd5b506000805463ffffffff168152600260205260409081902080546001600160a01b0319166001600160a01b03939093169290921790915551309061021890610668565b6001600160a01b039091168152602001604051809103906000f080158015610244573d6000803e3d6000fd5b5060008054640100000000900463ffffffff168152600260205260409081902080546001600160a01b0319166001600160a01b0393909316929092179091555161028d90610676565b604051809103906000f0801580156102a9573d6000803e3d6000fd5b506000805463ffffffff168152600360205260409081902080546001600160a01b0319166001600160a01b039390931692909217909155516102ea90610676565b604051809103906000f080158015610306573d6000803e3d6000fd5b5060008054640100000000900463ffffffff908116825260036020908152604080842080546001600160a01b03199081166001600160a01b039788161790915589841685526001909252808420805483168887161790559187168352818320805490911693851693909317909255905161037f90610684565b604051809103906000f08015801561039b573d6000803e3d6000fd5b50905060006040516103ac90610684565b604051809103906000f0801580156103c8573d6000803e3d6000fd5b506000805463ffffffff16815260026020908152604080832054600390925291829020549151637c643b2f60e11b81526001600160a01b03888116600483015291821660248201529181166044830152306064830181905292935084169063f8c8765e90608401600060405180830381600087803b15801561044957600080fd5b505af115801561045d573d6000803e3d6000fd5b505060008054640100000000900463ffffffff16815260026020908152604080832054600390925291829020549151637c643b2f60e11b81526001600160a01b0389811660048301529182166024820152918116604483015284811660648301528516925063f8c8765e9150608401600060405180830381600087803b1580156104e657600080fd5b505af11580156104fa573d6000803e3d6000fd5b50505050826001600160a01b031663b49c53a7876105218561064e60201b61029e1760201c565b6040516001600160e01b031960e085901b16815263ffffffff9290921660048301526024820152604401600060405180830381600087803b15801561056557600080fd5b505af1158015610579573d6000803e3d6000fd5b50505050816001600160a01b031663b49c53a7886105a08661064e60201b61029e1760201c565b6040516001600160e01b031960e085901b16815263ffffffff9290921660048301526024820152604401600060405180830381600087803b1580156105e457600080fd5b505af11580156105f8573d6000803e3d6000fd5b5050505063ffffffff96871660009081526004602052604080822080546001600160a01b03199081166001600160a01b0397881617909155979098168152969096208054909516911617909255506106de915050565b6001600160a01b031690565b610eb18062000a0883390190565b61133e80620018b983390190565b61021e8062002bf783390190565b6122ff8062002e1583390190565b805163ffffffff811681146106a657600080fd5b919050565b600080604083850312156106be57600080fd5b6106c783610692565b91506106d560208401610692565b90509250929050565b61031a80620006ee6000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063f11a367e11610050578063f11a367e14610142578063f9d2692d14610178578063f9f312ad1461018257600080fd5b80635a007b7e146100775780637a7eada3146100d6578063e9ee46951461010c575b600080fd5b6100ad6100853660046102b7565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100ad6100e43660046102b7565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100ad61011a3660046102b7565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100ad6101503660046102b7565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61018061018a565b005b61018061021d565b6000805463ffffffff168152600160205260408082205481517f1605c306000000000000000000000000000000000000000000000000000000008152915173ffffffffffffffffffffffffffffffffffffffff90911692631605c306926004808201939182900301818387803b15801561020357600080fd5b505af1158015610217573d6000803e3d6000fd5b50505050565b60008054640100000000900463ffffffff168152600160205260408082205481517f1605c306000000000000000000000000000000000000000000000000000000008152915173ffffffffffffffffffffffffffffffffffffffff90911692631605c306926004808201939182900301818387803b15801561020357600080fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b6000602082840312156102c957600080fd5b813563ffffffff811681146102dd57600080fd5b939250505056fea26469706673582212204728c9aaaf228ef0dd61be21557ca00d9265c26c31274174847a92a0dca91ef364736f6c6343000811003360c0604052600060a0819052808055600181905560025534801561002257600080fd5b50604051610eb1380380610eb18339810160408190526100419161004f565b63ffffffff1660805261007c565b60006020828403121561006157600080fd5b815163ffffffff8116811461007557600080fd5b9392505050565b60805160a051610e096100a8600039600061026801526000818161017601526107d30152610e096000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806392d28b3d11610081578063fa31de011161005b578063fa31de0114610247578063fd10ebe51461025a578063ffa1ad741461026357600080fd5b806392d28b3d146101c0578063a3b4919f146101e3578063d12164e41461023e57600080fd5b80638209d312116100b25780638209d312146101685780638d3638f414610171578063924324aa146101ad57600080fd5b80631605c306146100d9578063522ae002146100e357806359b3f6e0146100ff575b600080fd5b6100e161028a565b005b6100ec61080081565b6040519081526020015b60405180910390f35b6100e161010d366004610894565b63ffffffff91909116600090815260036020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6100ec60015481565b6101987f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016100f6565b6100e16101bb366004610914565b61044e565b6101d36101ce36600461098e565b6105ad565b6040516100f69493929190610a0b565b6102196101f1366004610a5a565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f6565b6100ec60025481565b6100ec610255366004610a7c565b610683565b6100ec60005481565b6101987f000000000000000000000000000000000000000000000000000000000000000081565b6002805460009081526004602090815260408083208151608081018352815463ffffffff8116825273ffffffffffffffffffffffffffffffffffffffff64010000000090910481169482019490945260018201549093169183019190915292830180549293919260608401919061030090610ad6565b80601f016020809104026020016040519081016040528092919081815260200182805461032c90610ad6565b80156103795780601f1061034e57610100808354040283529160200191610379565b820191906000526020600020905b81548152906001019060200180831161035c57829003601f168201915b5050505050815250509050806040015173ffffffffffffffffffffffffffffffffffffffff166356d5d47582600001516103e0846020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1690565b84606001516040518463ffffffff1660e01b815260040161040393929190610b29565b600060405180830381600087803b15801561041d57600080fd5b505af1158015610431573d6000803e3d6000fd5b50506002805492509050600061044683610b57565b919050555050565b60405180608001604052808663ffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093909452505060018054825260046020908152604092839020855181549287015163ffffffff9091167fffffffffffffffff0000000000000000000000000000000000000000000000009093169290921764010000000073ffffffffffffffffffffffffffffffffffffffff938416021781559285015191830180547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790556060830151909150600282019061058e9082610c34565b505060018054915060006105a183610b57565b91905055505050505050565b60046020526000908152604090208054600182015460028301805463ffffffff84169464010000000090940473ffffffffffffffffffffffffffffffffffffffff90811694931692919061060090610ad6565b80601f016020809104026020016040519081016040528092919081815260200182805461062c90610ad6565b80156106795780601f1061064e57610100808354040283529160200191610679565b820191906000526020600020905b81548152906001019060200180831161065c57829003601f168201915b5050505050905084565b60006108008211156106f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6d736720746f6f206c6f6e67000000000000000000000000000000000000000060448201526064015b60405180910390fd5b63ffffffff851660009081526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d697373696e672072656d6f7465206d61696c626f780000000000000000000060448201526064016106ed565b6040517f924324aa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063924324aa90610803907f00000000000000000000000000000000000000000000000000000000000000009033908a908a908a90600401610d4e565b600060405180830381600087803b15801561081d57600080fd5b505af1158015610831573d6000803e3d6000fd5b505060008054925090508061084583610b57565b909155506000979650505050505050565b803563ffffffff8116811461086a57600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b50565b600080604083850312156108a757600080fd5b6108b083610856565b915060208301356108c08161086f565b809150509250929050565b60008083601f8401126108dd57600080fd5b50813567ffffffffffffffff8111156108f557600080fd5b60208301915083602082850101111561090d57600080fd5b9250929050565b60008060008060006080868803121561092c57600080fd5b61093586610856565b945060208601356109458161086f565b935060408601356109558161086f565b9250606086013567ffffffffffffffff81111561097157600080fd5b61097d888289016108cb565b969995985093965092949392505050565b6000602082840312156109a057600080fd5b5035919050565b6000815180845260005b818110156109cd576020818501810151868301820152016109b1565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b63ffffffff85168152600073ffffffffffffffffffffffffffffffffffffffff808616602084015280851660408401525060806060830152610a5060808301846109a7565b9695505050505050565b600060208284031215610a6c57600080fd5b610a7582610856565b9392505050565b60008060008060608587031215610a9257600080fd5b610a9b85610856565b935060208501359250604085013567ffffffffffffffff811115610abe57600080fd5b610aca878288016108cb565b95989497509550505050565b600181811c90821680610aea57607f821691505b602082108103610b23577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b63ffffffff84168152826020820152606060408201526000610b4e60608301846109a7565b95945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610baf577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f821115610c2f57600081815260208120601f850160051c81016020861015610c0c5750805b601f850160051c820191505b81811015610c2b57828155600101610c18565b5050505b505050565b815167ffffffffffffffff811115610c4e57610c4e610bb6565b610c6281610c5c8454610ad6565b84610be5565b602080601f831160018114610cb55760008415610c7f5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610c2b565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015610d0257888601518255948401946001909101908401610ce3565b5085821015610d3e57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b63ffffffff86168152600073ffffffffffffffffffffffffffffffffffffffff808716602084015280861660408401525060806060830152826080830152828460a0840137600060a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168301019050969550505050505056fea264697066735822122064e2ab6d41d9ca4bedffeb54c82b828f31f63f77cacd000dd06daf868802e51464736f6c6343000811003360806040523480156200001157600080fd5b506040516200133e3803806200133e833981016040819052620000349162000304565b80620000408162000048565b505062000336565b600054610100900460ff1615808015620000695750600054600160ff909116105b8062000099575062000086306200018660201b620009e21760201c565b15801562000099575060005460ff166001145b620001025760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000126576000805461ff0019166101001790555b6200013062000195565b6200013b82620001fd565b801562000182576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b03163b151590565b600054610100900460ff16620001f15760405162461bcd60e51b815260206004820152602b60248201526000805160206200131e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000f9565b620001fb62000251565b565b606680546001600160a01b0319166001600160a01b0383169081179091556040519081527f04d55a8be181fb8d75b76f2d48aa0b2ee40f47e53d6e61763eeeec46feea8a249060200160405180910390a150565b600054610100900460ff16620002ad5760405162461bcd60e51b815260206004820152602b60248201526000805160206200131e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000f9565b620001fb33603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200031757600080fd5b81516001600160a01b03811681146200032f57600080fd5b9392505050565b610fd880620003466000396000f3fe6080604052600436106100d25760003560e01c806360fcef7c1161007f578063a692979311610059578063a692979314610264578063c4d66de814610292578063f2fde38b146102b2578063fe173b97146102d257600080fd5b806360fcef7c146101db578063715018a6146102245780638da5cb5b1461023957600080fd5b80632f202650116100b05780632f2026501461017957806338af3eed146101995780634e71d92d146101c657600080fd5b806311bf2c18146100d75780631c31f710146100ec5780631d16c8c81461010c575b600080fd5b6100ea6100e5366004610d74565b6102e7565b005b3480156100f857600080fd5b506100ea610107366004610dba565b6104d2565b34801561011857600080fd5b5061014f610127366004610dd5565b60656020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561018557600080fd5b506100ea610194366004610df0565b6104e6565b3480156101a557600080fd5b5060665461014f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d257600080fd5b506100ea61056c565b3480156101e757600080fd5b506101fb6101f6366004610dd5565b610636565b604080516fffffffffffffffffffffffffffffffff938416815292909116602083015201610170565b34801561023057600080fd5b506100ea610768565b34801561024557600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff1661014f565b34801561027057600080fd5b5061028461027f366004610e65565b61077c565b604051908152602001610170565b34801561029e57600080fd5b506100ea6102ad366004610dba565b610792565b3480156102be57600080fd5b506100ea6102cd366004610dba565b61092e565b3480156102de57600080fd5b50610284600a81565b60006102f3848461077c565b90508034101561038a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f696e73756666696369656e7420696e746572636861696e20676173207061796d60448201527f656e74000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60006103968234610ebe565b9050801561048f5760008373ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146103f8576040519150601f19603f3d011682016040523d82523d6000602084013e6103fd565b606091505b505090508061048d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f496e746572636861696e20676173207061796d656e7420726566756e6420666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152608401610381565b505b604080518581526020810184905287917ff715e66d2cd2a0179069dcda2a41a4da36a30e1aad12187fbb7c5d100afd621c910160405180910390a2505050505050565b6104da6109fe565b6104e381610a7f565b50565b6104ee6109fe565b8060005b818110156105665761055484848381811061050f5761050f610ed1565b6105259260206040909202019081019150610dd5565b85858481811061053757610537610ed1565b905060400201602001602081019061054f9190610dba565b610af8565b8061055e81610f00565b9150506104f2565b50505050565b60665460405160009173ffffffffffffffffffffffffffffffffffffffff169047908381818185875af1925050503d80600081146105c6576040519150601f19603f3d011682016040523d82523d6000602084013e6105cb565b606091505b50509050806104e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f217472616e7366657200000000000000000000000000000000000000000000006044820152606401610381565b63ffffffff8116600090815260656020526040812054819073ffffffffffffffffffffffffffffffffffffffff16806106cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21676173206f7261636c650000000000000000000000000000000000000000006044820152606401610381565b6040517f60fcef7c00000000000000000000000000000000000000000000000000000000815263ffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8216906360fcef7c906024016040805180830381865afa15801561073a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075e9190610f58565b9250925050915091565b6107706109fe565b61077a6000610b86565b565b600061078982600a610f8b565b90505b92915050565b600054610100900460ff16158080156107b25750600054600160ff909116105b806107cc5750303b1580156107cc575060005460ff166001145b610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610381565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156108b657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6108be610bfd565b6108c782610a7f565b801561092a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6109366109fe565b73ffffffffffffffffffffffffffffffffffffffff81166109d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610381565b6104e381610b86565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60335473ffffffffffffffffffffffffffffffffffffffff16331461077a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610381565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f04d55a8be181fb8d75b76f2d48aa0b2ee40f47e53d6e61763eeeec46feea8a249060200160405180910390a150565b63ffffffff821660008181526065602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f38b842e116ff320f6a79ba4cf434eee927fa156b226c65c90d62989de589b4e7910160405180910390a25050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610c94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610381565b61077a600054610100900460ff16610d2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610381565b61077a33610b86565b803563ffffffff81168114610d4b57600080fd5b919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610d4b57600080fd5b60008060008060808587031215610d8a57600080fd5b84359350610d9a60208601610d37565b925060408501359150610daf60608601610d50565b905092959194509250565b600060208284031215610dcc57600080fd5b61078982610d50565b600060208284031215610de757600080fd5b61078982610d37565b60008060208385031215610e0357600080fd5b823567ffffffffffffffff80821115610e1b57600080fd5b818501915085601f830112610e2f57600080fd5b813581811115610e3e57600080fd5b8660208260061b8501011115610e5357600080fd5b60209290920196919550909350505050565b60008060408385031215610e7857600080fd5b610e8183610d37565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561078c5761078c610e8f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610f3157610f31610e8f565b5060010190565b80516fffffffffffffffffffffffffffffffff81168114610d4b57600080fd5b60008060408385031215610f6b57600080fd5b610f7483610f38565b9150610f8260208401610f38565b90509250929050565b808202811582820484141761078c5761078c610e8f56fea2646970667358221220e2c2899830f0e6eed3d68e809ccfa35812d72360d58ae657f5c87cbc96ae5e5964736f6c63430008110033496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069608060405234801561001057600080fd5b506101fe806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632852b71c146100515780634fc3aa7c146100735780636465e69f146100b4578063f7e83aee146100ce575b600080fd5b60005461005e9060ff1681565b60405190151581526020015b60405180910390f35b6100b26100813660046100ea565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b005b6100bc600081565b60405160ff909116815260200161006a565b61005e6100dc36600461015c565b60005460ff16949350505050565b6000602082840312156100fc57600080fd5b8135801515811461010c57600080fd5b9392505050565b60008083601f84011261012557600080fd5b50813567ffffffffffffffff81111561013d57600080fd5b60208301915083602082850101111561015557600080fd5b9250929050565b6000806000806040858703121561017257600080fd5b843567ffffffffffffffff8082111561018a57600080fd5b61019688838901610113565b909650945060208701359150808211156101af57600080fd5b506101bc87828801610113565b9598949750955050505056fea2646970667358221220a1a05fbfc54039f64706d6b983d8ed604b13adbd5a9e4e8990057c4b1a77b1d764736f6c63430008110033608060405234801561001057600080fd5b506122df806100206000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063b49c53a711610097578063f1bd6f0a11610066578063f1bd6f0a1461024c578063f2fde38b1461025f578063f3c61d6b14610272578063f8c8765e1461028557600080fd5b8063b49c53a7146101e6578063d5438eae146101f9578063de523cf314610219578063e9198bf91461023957600080fd5b806356d5d475116100d357806356d5d4751461019a578063715018a6146101ad5780638cc02cab146101b55780638da5cb5b146101c857600080fd5b80630e72cc06146101055780632ead72f61461011a57806339bb4ad914610140578063440df4f414610185575b600080fd5b610118610113366004611677565b610298565b005b61012d6101283660046116a6565b6102ac565b6040519081526020015b60405180910390f35b6066546101609073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610137565b61018d6102ee565b60405161013791906116c1565b6101186101a836600461170b565b6103a9565b6101186104a1565b61012d6101c33660046117de565b6104b5565b60335473ffffffffffffffffffffffffffffffffffffffff16610160565b6101186101f4366004611831565b610506565b6065546101609073ffffffffffffffffffffffffffffffffffffffff1681565b6067546101609073ffffffffffffffffffffffffffffffffffffffff1681565b61011861024736600461185b565b61051c565b61011861025a366004611677565b6105f9565b61011861026d366004611677565b61060a565b610118610280366004611677565b6106be565b6101186102933660046118c7565b6106cf565b6102a0610868565b6102a9816108e9565b50565b60006102c2609863ffffffff808516906109f716565b156102e1576102db609863ffffffff80851690610a0a16565b92915050565b506000919050565b919050565b609880546060919060009067ffffffffffffffff8111156103115761031161191b565b60405190808252806020026020018201604052801561033a578160200160208202803683370190505b50905060005b82548110156103a25782818154811061035b5761035b61194a565b906000526020600020015460001c82828151811061037b5761037b61194a565b63ffffffff909216602092830291909101909101528061039a816119a8565b915050610340565b5092915050565b60655473ffffffffffffffffffffffffffffffffffffffff16331461042f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f216d61696c626f7800000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b838361043b8282610a16565b604051806080016040528060438152602001612242604391399061048c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104269190611a4e565b5061049986868686610a2a565b505050505050565b6104a9610868565b6104b36000610b4e565b565b604051600090339063ffffffff8616907f11c97c784c298562a796345417aa40e1ce110e6b100f41b801ab23414f72d7e5908490a36104fe846104f9858533610bc5565b610bf7565b949350505050565b61050e610868565b6105188282610ca1565b5050565b610524610868565b82811461058d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f216c656e677468000000000000000000000000000000000000000000000000006044820152606401610426565b60005b838110156105f2576105e08585838181106105ad576105ad61194a565b90506020020160208101906105c291906116a6565b8484848181106105d4576105d461194a565b90506020020135610ca1565b6105eb600182611a61565b9050610590565b5050505050565b610601610868565b6102a981610cee565b610612610868565b73ffffffffffffffffffffffffffffffffffffffff81166106b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610426565b6102a981610b4e565b6106c6610868565b6102a981610ddd565b600054610100900460ff16158080156106ef5750600054600160ff909116105b806107095750303b158015610709575060005460ff166001145b610795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610426565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156107f357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6107ff85858585610ecc565b80156105f257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b60335473ffffffffffffffffffffffffffffffffffffffff1633146104b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610426565b73ffffffffffffffffffffffffffffffffffffffff81161580610922575073ffffffffffffffffffffffffffffffffffffffff81163b15155b610988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e747261637400000000000000000000000000000000000000000000006044820152606401610426565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ffec811ed4e60aebdaf7a79cad8a97196bf56e35362f039705598226d30c9d24890600090a250565b6000610a038383610f8d565b9392505050565b6000610a038383610f99565b600081610a22846102ac565b149392505050565b6000610a368383611023565b90506000610a44848461105d565b90506002826003811115610a5a57610a5a611a74565b03610ac4576000610a6b8585611075565b90506000610a78826110b6565b9050828863ffffffff167fb689f7016112eaacc7edebd6ea5eb700790a103e79c39ce0118e075de87d797660405160405180910390a3610abc886104f98386611161565b505050610499565b6003826003811115610ad857610ad8611a74565b03610b4657806000610aea8686611190565b9050610af682826111c8565b60405173ffffffffffffffffffffffffffffffffffffffff83169063ffffffff8a16907fc4416e2fcdf8514178829e5ead195eb13f3241ea71c0e38f998868fe81e4226990600090a35050610499565b610499611aa3565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60608160028585604051602001610bdf9493929190611bf7565b60405160208183030381529060405290509392505050565b600080610c0384611205565b6065546040517ffa31de0100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063fa31de0190610c5e90879085908890600401611ce4565b6020604051808303816000875af1158015610c7d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fe9190611d09565b610cb7609863ffffffff80851690849061127016565b604051819063ffffffff8416907f97fd51fef1f80c854cbd0150c248e8b2ac4ecdc97cc05e742b5f61c9f4dc645890600090a35050565b8073ffffffffffffffffffffffffffffffffffffffff81163b610d6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e747261637400000000000000000000000000000000000000000000006044820152606401610426565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fb87f5a0bface22cde699143559fb99f990ae54eea236995fc54178af91af859f90600090a25050565b8073ffffffffffffffffffffffffffffffffffffffff81163b610e5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e747261637400000000000000000000000000000000000000000000006044820152606401610426565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517f7a61e573722ff8b205c8962b59d37e7d30573f368965597a844a94872204ebd790600090a25050565b600054610100900460ff16610f63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610426565b610f6c84610ddd565b610f7583610cee565b610f7e826108e9565b610f8781610b4e565b50505050565b6000610a03838361127b565b600081815260028301602052604081205480151580610fbd5750610fbd8484610f8d565b610a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006044820152606401610426565b6000828261103360016040611d22565b8181106110425761104261194a565b919091013560f81c90506003811115610a0357610a03611a74565b600061106c6020828486611d35565b610a0391611d5f565b606060026110838484611023565b600381111561109457611094611a74565b146110a1576110a1611aa3565b6110ad82840184611ed4565b95945050505050565b8051606090600090818167ffffffffffffffff8111156110d8576110d861191b565b60405190808252806020026020018201604052801561110b57816020015b60608152602001906001900390816110f65790505b5090505b818310156104fe5761113985848151811061112c5761112c61194a565b6020026020010151611293565b81848151811061114b5761114b61194a565b602002602001018190525082600101925061110f565b60608160038460405160200161117993929190612093565b604051602081830303815290604052905092915050565b6060600361119e8484611023565b60038111156111af576111af611a74565b146111bc576111bc611aa3565b6110ad82840184612129565b80516000905b80821015610f87576111f9848484815181106111ec576111ec61194a565b60200260200101516112ce565b508160010191506111ce565b6000611210826102ac565b90506000801b811415604051806080016040528060438152602001612242604391399061126a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104269190611a4e565b50919050565b610f87838383611312565b60008181526001830160205260408120541515610a03565b606081602001516112a7836000015161132f565b6040516020016112b89291906121f6565b6040516020818303038152906040529050919050565b6060610a03838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250611347565b600082815260028401602052604081208290556104fe8484611460565b60606102db61133d8361146c565b8360200151611476565b6060824710156113d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610426565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516114029190612225565b60006040518083038185875af1925050503d806000811461143f576040519150601f19603f3d011682016040523d82523d6000602084013e611444565b606091505b50915091506114558783838761149b565b979650505050505050565b6000610a03838361153b565b80516000906102db565b6060610a0383836040518060600160405280602581526020016122856025913961158a565b6060831561153157825160000361152a5773ffffffffffffffffffffffffffffffffffffffff85163b61152a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610426565b50816104fe565b6104fe838361160f565b6000818152600183016020526040812054611582575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556102db565b5060006102db565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516115b49190612225565b600060405180830381855afa9150503d80600081146115ef576040519150601f19603f3d011682016040523d82523d6000602084013e6115f4565b606091505b50915091506116058683838761149b565b9695505050505050565b81511561161f5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104269190611a4e565b803573ffffffffffffffffffffffffffffffffffffffff811681146102e957600080fd5b60006020828403121561168957600080fd5b610a0382611653565b803563ffffffff811681146102e957600080fd5b6000602082840312156116b857600080fd5b610a0382611692565b6020808252825182820181905260009190848201906040850190845b818110156116ff57835163ffffffff16835292840192918401916001016116dd565b50909695505050505050565b6000806000806060858703121561172157600080fd5b61172a85611692565b935060208501359250604085013567ffffffffffffffff8082111561174e57600080fd5b818701915087601f83011261176257600080fd5b81358181111561177157600080fd5b88602082850101111561178357600080fd5b95989497505060200194505050565b60008083601f8401126117a457600080fd5b50813567ffffffffffffffff8111156117bc57600080fd5b6020830191508360208260051b85010111156117d757600080fd5b9250929050565b6000806000604084860312156117f357600080fd5b6117fc84611692565b9250602084013567ffffffffffffffff81111561181857600080fd5b61182486828701611792565b9497909650939450505050565b6000806040838503121561184457600080fd5b61184d83611692565b946020939093013593505050565b6000806000806040858703121561187157600080fd5b843567ffffffffffffffff8082111561188957600080fd5b61189588838901611792565b909650945060208701359150808211156118ae57600080fd5b506118bb87828801611792565b95989497509550505050565b600080600080608085870312156118dd57600080fd5b6118e685611653565b93506118f460208601611653565b925061190260408601611653565b915061191060608601611653565b905092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036119d9576119d9611979565b5060010190565b60005b838110156119fb5781810151838201526020016119e3565b50506000910152565b60008151808452611a1c8160208601602086016119e0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610a036020830184611a04565b808201808211156102db576102db611979565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60048110611b09577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112611b4157600080fd5b90910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b7f57600080fd5b830160208101925035905067ffffffffffffffff811115611b9f57600080fd5b8036038213156117d757600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600060608083018784526020611c0f81860189611ad2565b604085810184905291869052608091828601600588901b870184018960005b8a811015611cd2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a8403018452611c67828d611b0d565b611c718182611b0d565b868552803587860152611c8688820182611b4a565b9150878b870152611c9a8a87018383611bae565b915050611ca988830183611b4a565b925085820389870152611cbd828483611bae565b96890196955050509186019150600101611c2e565b50909c9b505050505050505050505050565b63ffffffff841681528260208201526060604082015260006110ad6060830184611a04565b600060208284031215611d1b57600080fd5b5051919050565b818103818111156102db576102db611979565b60008085851115611d4557600080fd5b83861115611d5257600080fd5b5050820193919092039150565b803560208310156102db577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b8035600481106102e957600080fd5b6040805190810167ffffffffffffffff81118282101715611dcd57611dcd61191b565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611e1a57611e1a61191b565b604052919050565b600067ffffffffffffffff821115611e3c57611e3c61191b565b5060051b60200190565b600082601f830112611e5757600080fd5b813567ffffffffffffffff811115611e7157611e7161191b565b611ea260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611dd3565b818152846020838601011115611eb757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215611ee957600080fd5b83359250611ef960208501611d9b565b915067ffffffffffffffff60408501351115611f1457600080fd5b6040840135840185601f820112611f2a57600080fd5b611f3c611f378235611e22565b611dd3565b81358082526020808301929160051b840101881015611f5a57600080fd5b602083015b6020843560051b8501018110156120855767ffffffffffffffff81351115611f8657600080fd5b803584017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604081838d03011215611fbd57600080fd5b611fc5611daa565b67ffffffffffffffff60208401351115611fde57600080fd5b60208301358301604083828f03011215611ff757600080fd5b611fff611daa565b92506020810135835267ffffffffffffffff6040820135111561202157600080fd5b6120348d60206040840135840101611e46565b60208401525081815267ffffffffffffffff6040840135111561205657600080fd5b6120698c60206040860135860101611e46565b6020820152808652505050602083019250602081019050611f5f565b508093505050509250925092565b60006060820185835260206120aa81850187611ad2565b6060604085015281855180845260808601915060808160051b870101935082870160005b8281101561211a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80888703018452612108868351611a04565b955092840192908401906001016120ce565b50939998505050505050505050565b60008060006060848603121561213e57600080fd5b83359250602061214f818601611d9b565b9250604085013567ffffffffffffffff8082111561216c57600080fd5b818701915087601f83011261218057600080fd5b813561218e611f3782611e22565b81815260059190911b8301840190848101908a8311156121ad57600080fd5b8585015b838110156121e5578035858111156121c95760008081fd5b6121d78d89838a0101611e46565b8452509186019186016121b1565b508096505050505050509250925092565b600083516122088184602088016119e0565b83519083019061221c8183602088016119e0565b01949350505050565b600082516122378184602087016119e0565b919091019291505056fe4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e2e2044696420796f7520737065636966792074686520726967687420646f6d61696e2049443f416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564a26469706673582212202313370fdaf5173ec45eadff15397647af9c8c814de57f2eb4fede8a98026a5664736f6c63430008110033";
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,ksqCAAa;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,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,gjxCAAa;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 = "0x608060405234801561001057600080fd5b50604051614a5d380380614a5d83398101604081905261002f91610682565b6000805463ffffffff838116640100000000026001600160401b031990921690851617178155604051839061006390610635565b63ffffffff9091168152602001604051809103906000f08015801561008c573d6000803e3d6000fd5b50905060008260405161009e90610635565b63ffffffff9091168152602001604051809103906000f0801580156100c7573d6000803e3d6000fd5b506040516302cd9fb760e51b815263ffffffff851660048201526001600160a01b038083166024830152919250908316906359b3f6e090604401600060405180830381600087803b15801561011b57600080fd5b505af115801561012f573d6000803e3d6000fd5b50506040516302cd9fb760e51b815263ffffffff871660048201526001600160a01b038581166024830152841692506359b3f6e09150604401600060405180830381600087803b15801561018257600080fd5b505af1158015610196573d6000803e3d6000fd5b505050506040516101a690610642565b604051809103906000f0801580156101c2573d6000803e3d6000fd5b506000805463ffffffff168152600260205260409081902080546001600160a01b0319166001600160a01b0393909316929092179091555161020390610642565b604051809103906000f08015801561021f573d6000803e3d6000fd5b5060008054640100000000900463ffffffff168152600260205260409081902080546001600160a01b0319166001600160a01b039390931692909217909155516102689061064f565b604051809103906000f080158015610284573d6000803e3d6000fd5b506000805463ffffffff168152600360205260409081902080546001600160a01b0319166001600160a01b039390931692909217909155516102c59061064f565b604051809103906000f0801580156102e1573d6000803e3d6000fd5b5060008054640100000000900463ffffffff908116825260036020908152604080842080546001600160a01b03199081166001600160a01b039788161790915589841685526001909252808420805483168887161790559187168352818320805490911693851693909317909255905161035a9061065c565b604051809103906000f080158015610376573d6000803e3d6000fd5b50905060006040516103879061065c565b604051809103906000f0801580156103a3573d6000803e3d6000fd5b506000805463ffffffff16815260026020908152604080832054600390925291829020549151637c643b2f60e11b81526001600160a01b03888116600483015291821660248201529181166044830152306064830181905292935084169063f8c8765e90608401600060405180830381600087803b15801561042457600080fd5b505af1158015610438573d6000803e3d6000fd5b505060008054640100000000900463ffffffff16815260026020908152604080832054600390925291829020549151637c643b2f60e11b81526001600160a01b0389811660048301529182166024820152918116604483015284811660648301528516925063f8c8765e9150608401600060405180830381600087803b1580156104c157600080fd5b505af11580156104d5573d6000803e3d6000fd5b50505050826001600160a01b031663b49c53a7876104fc8561062960201b61029e1760201c565b6040516001600160e01b031960e085901b16815263ffffffff9290921660048301526024820152604401600060405180830381600087803b15801561054057600080fd5b505af1158015610554573d6000803e3d6000fd5b50505050816001600160a01b031663b49c53a78861057b8661062960201b61029e1760201c565b6040516001600160e01b031960e085901b16815263ffffffff9290921660048301526024820152604401600060405180830381600087803b1580156105bf57600080fd5b505af11580156105d3573d6000803e3d6000fd5b5050505063ffffffff96871660009081526004602052604080822080546001600160a01b03199081166001600160a01b0397881617909155979098168152969096208054909516911617909255506106b5915050565b6001600160a01b031690565b610e2e806109de83390190565b610d348061180c83390190565b61021e8061254083390190565b6122ff8061275e83390190565b805163ffffffff8116811461067d57600080fd5b919050565b6000806040838503121561069557600080fd5b61069e83610669565b91506106ac60208401610669565b90509250929050565b61031a806106c46000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063f11a367e11610050578063f11a367e14610142578063f9d2692d14610178578063f9f312ad1461018257600080fd5b80635a007b7e146100775780637a7eada3146100d6578063e9ee46951461010c575b600080fd5b6100ad6100853660046102b7565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100ad6100e43660046102b7565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100ad61011a3660046102b7565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100ad6101503660046102b7565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61018061018a565b005b61018061021d565b6000805463ffffffff168152600160205260408082205481517f1605c306000000000000000000000000000000000000000000000000000000008152915173ffffffffffffffffffffffffffffffffffffffff90911692631605c306926004808201939182900301818387803b15801561020357600080fd5b505af1158015610217573d6000803e3d6000fd5b50505050565b60008054640100000000900463ffffffff168152600160205260408082205481517f1605c306000000000000000000000000000000000000000000000000000000008152915173ffffffffffffffffffffffffffffffffffffffff90911692631605c306926004808201939182900301818387803b15801561020357600080fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b6000602082840312156102c957600080fd5b813563ffffffff811681146102dd57600080fd5b939250505056fea2646970667358221220ed6bc93d6c20dc605683518581a0e2938200763bcf1f1d77ae8697e30597681764736f6c6343000811003360c0604052600060a0819052808055600181905560025534801561002257600080fd5b50604051610e2e380380610e2e8339810160408190526100419161004f565b63ffffffff1660805261007c565b60006020828403121561006157600080fd5b815163ffffffff8116811461007557600080fd5b9392505050565b60805160a051610d866100a8600039600061025401526000818161016201526107500152610d866000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c806392d28b3d11610081578063fa31de011161005b578063fa31de0114610233578063fd10ebe514610246578063ffa1ad741461024f57600080fd5b806392d28b3d146101ac578063a3b4919f146101cf578063d12164e41461022a57600080fd5b80638209d312116100b25780638209d312146101415780638d3638f41461015d578063924324aa1461019957600080fd5b80631605c306146100ce57806359b3f6e0146100d8575b600080fd5b6100d6610276565b005b6100d66100e6366004610811565b63ffffffff91909116600090815260036020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b61014a60015481565b6040519081526020015b60405180910390f35b6101847f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff9091168152602001610154565b6100d66101a7366004610891565b61043a565b6101bf6101ba36600461090b565b610599565b6040516101549493929190610988565b6102056101dd3660046109d7565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610154565b61014a60025481565b61014a6102413660046109f9565b61066f565b61014a60005481565b6101847f000000000000000000000000000000000000000000000000000000000000000081565b6002805460009081526004602090815260408083208151608081018352815463ffffffff8116825273ffffffffffffffffffffffffffffffffffffffff6401000000009091048116948201949094526001820154909316918301919091529283018054929391926060840191906102ec90610a53565b80601f016020809104026020016040519081016040528092919081815260200182805461031890610a53565b80156103655780601f1061033a57610100808354040283529160200191610365565b820191906000526020600020905b81548152906001019060200180831161034857829003601f168201915b5050505050815250509050806040015173ffffffffffffffffffffffffffffffffffffffff166356d5d47582600001516103cc846020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1690565b84606001516040518463ffffffff1660e01b81526004016103ef93929190610aa6565b600060405180830381600087803b15801561040957600080fd5b505af115801561041d573d6000803e3d6000fd5b50506002805492509050600061043283610ad4565b919050555050565b60405180608001604052808663ffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093909452505060018054825260046020908152604092839020855181549287015163ffffffff9091167fffffffffffffffff0000000000000000000000000000000000000000000000009093169290921764010000000073ffffffffffffffffffffffffffffffffffffffff938416021781559285015191830180547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790556060830151909150600282019061057a9082610bb1565b5050600180549150600061058d83610ad4565b91905055505050505050565b60046020526000908152604090208054600182015460028301805463ffffffff84169464010000000090940473ffffffffffffffffffffffffffffffffffffffff9081169493169291906105ec90610a53565b80601f016020809104026020016040519081016040528092919081815260200182805461061890610a53565b80156106655780601f1061063a57610100808354040283529160200191610665565b820191906000526020600020905b81548152906001019060200180831161064857829003601f168201915b5050505050905084565b63ffffffff841660009081526003602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610706576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d697373696e672072656d6f7465206d61696c626f7800000000000000000000604482015260640160405180910390fd5b6040517f924324aa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063924324aa90610780907f00000000000000000000000000000000000000000000000000000000000000009033908a908a908a90600401610ccb565b600060405180830381600087803b15801561079a57600080fd5b505af11580156107ae573d6000803e3d6000fd5b50506000805492509050806107c283610ad4565b909155506000979650505050505050565b803563ffffffff811681146107e757600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461080e57600080fd5b50565b6000806040838503121561082457600080fd5b61082d836107d3565b9150602083013561083d816107ec565b809150509250929050565b60008083601f84011261085a57600080fd5b50813567ffffffffffffffff81111561087257600080fd5b60208301915083602082850101111561088a57600080fd5b9250929050565b6000806000806000608086880312156108a957600080fd5b6108b2866107d3565b945060208601356108c2816107ec565b935060408601356108d2816107ec565b9250606086013567ffffffffffffffff8111156108ee57600080fd5b6108fa88828901610848565b969995985093965092949392505050565b60006020828403121561091d57600080fd5b5035919050565b6000815180845260005b8181101561094a5760208185018101518683018201520161092e565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b63ffffffff85168152600073ffffffffffffffffffffffffffffffffffffffff8086166020840152808516604084015250608060608301526109cd6080830184610924565b9695505050505050565b6000602082840312156109e957600080fd5b6109f2826107d3565b9392505050565b60008060008060608587031215610a0f57600080fd5b610a18856107d3565b935060208501359250604085013567ffffffffffffffff811115610a3b57600080fd5b610a4787828801610848565b95989497509550505050565b600181811c90821680610a6757607f821691505b602082108103610aa0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b63ffffffff84168152826020820152606060408201526000610acb6060830184610924565b95945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610b2c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f821115610bac57600081815260208120601f850160051c81016020861015610b895750805b601f850160051c820191505b81811015610ba857828155600101610b95565b5050505b505050565b815167ffffffffffffffff811115610bcb57610bcb610b33565b610bdf81610bd98454610a53565b84610b62565b602080601f831160018114610c325760008415610bfc5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610ba8565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015610c7f57888601518255948401946001909101908401610c60565b5085821015610cbb57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b63ffffffff86168152600073ffffffffffffffffffffffffffffffffffffffff808716602084015280861660408401525060806060830152826080830152828460a0840137600060a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168301019050969550505050505056fea2646970667358221220279cc4c42a2de41ad9187b3351e9c0ea0527e76fcc182238a7cb83bd3b95f32264736f6c63430008110033608060405260006065553480156200001657600080fd5b506200002162000027565b62000283565b600054610100900460ff1615808015620000485750600054600160ff909116105b8062000078575062000065306200015960201b620006c31760201c565b15801562000078575060005460ff166001145b620000e15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000105576000805461ff0019166101001790555b6200010f62000168565b801562000156576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b03163b151590565b600054610100900460ff16620001c45760405162461bcd60e51b815260206004820152602b602482015260008051602062000d1483398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000d8565b620001ce620001d0565b565b600054610100900460ff166200022c5760405162461bcd60e51b815260206004820152602b602482015260008051602062000d1483398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000d8565b620001ce33603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610a8180620002936000396000f3fe60806040526004361061007b5760003560e01c80638da5cb5b1161004e5780638da5cb5b146100d4578063a69297931461010e578063bf1fe4201461013c578063f2fde38b1461015c57600080fd5b806311bf2c18146100805780634e71d92d14610095578063715018a6146100aa5780638129fc1c146100bf575b600080fd5b61009361008e36600461094e565b61017c565b005b3480156100a157600080fd5b50610093610366565b3480156100b657600080fd5b50610093610451565b3480156100cb57600080fd5b50610093610465565b3480156100e057600080fd5b5060335460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561011a57600080fd5b5061012e610129366004610994565b6105f6565b604051908152602001610105565b34801561014857600080fd5b506100936101573660046109be565b606555565b34801561016857600080fd5b506100936101773660046109d7565b61060f565b600061018884846105f6565b90508034101561021f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f696e73756666696369656e7420696e746572636861696e20676173207061796d60448201527f656e74000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b600061022b8234610a21565b905080156103245760008373ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461028d576040519150601f19603f3d011682016040523d82523d6000602084013e610292565b606091505b5050905080610322576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f496e746572636861696e20676173207061796d656e7420726566756e6420666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152608401610216565b505b6040805185815234602082015287917ff715e66d2cd2a0179069dcda2a41a4da36a30e1aad12187fbb7c5d100afd621c910160405180910390a2505050505050565b600061038760335473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff164760405160006040518083038185875af1925050503d80600081146103de576040519150601f19603f3d011682016040523d82523d6000602084013e6103e3565b606091505b505090508061044e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f217472616e7366657200000000000000000000000000000000000000000000006044820152606401610216565b50565b6104596106df565b6104636000610760565b565b600054610100900460ff16158080156104855750600054600160ff909116105b8061049f5750303b15801561049f575060005460ff166001145b61052b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610216565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561058957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105916107d7565b801561044e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000816065546106069190610a34565b90505b92915050565b6106176106df565b73ffffffffffffffffffffffffffffffffffffffff81166106ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610216565b61044e81610760565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60335473ffffffffffffffffffffffffffffffffffffffff163314610463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610216565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff1661086e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610216565b610463600054610100900460ff16610908576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610216565b61046333610760565b803563ffffffff8116811461092557600080fd5b919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461092557600080fd5b6000806000806080858703121561096457600080fd5b8435935061097460208601610911565b9250604085013591506109896060860161092a565b905092959194509250565b600080604083850312156109a757600080fd5b6109b083610911565b946020939093013593505050565b6000602082840312156109d057600080fd5b5035919050565b6000602082840312156109e957600080fd5b6106068261092a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610609576106096109f2565b8082028115828204841417610609576106096109f256fea2646970667358221220ec134023fdda4f1ae2066cc06f4f62dcaf75381f98d343fff1019b6582eae18164736f6c63430008110033496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069608060405234801561001057600080fd5b506101fe806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632852b71c146100515780634fc3aa7c146100735780636465e69f146100b4578063f7e83aee146100ce575b600080fd5b60005461005e9060ff1681565b60405190151581526020015b60405180910390f35b6100b26100813660046100ea565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b005b6100bc600081565b60405160ff909116815260200161006a565b61005e6100dc36600461015c565b60005460ff16949350505050565b6000602082840312156100fc57600080fd5b8135801515811461010c57600080fd5b9392505050565b60008083601f84011261012557600080fd5b50813567ffffffffffffffff81111561013d57600080fd5b60208301915083602082850101111561015557600080fd5b9250929050565b6000806000806040858703121561017257600080fd5b843567ffffffffffffffff8082111561018a57600080fd5b61019688838901610113565b909650945060208701359150808211156101af57600080fd5b506101bc87828801610113565b9598949750955050505056fea2646970667358221220a1a05fbfc54039f64706d6b983d8ed604b13adbd5a9e4e8990057c4b1a77b1d764736f6c63430008110033608060405234801561001057600080fd5b506122df806100206000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063b49c53a711610097578063f1bd6f0a11610066578063f1bd6f0a1461024c578063f2fde38b1461025f578063f3c61d6b14610272578063f8c8765e1461028557600080fd5b8063b49c53a7146101e6578063d5438eae146101f9578063de523cf314610219578063e9198bf91461023957600080fd5b806356d5d475116100d357806356d5d4751461019a578063715018a6146101ad5780638cc02cab146101b55780638da5cb5b146101c857600080fd5b80630e72cc06146101055780632ead72f61461011a57806339bb4ad914610140578063440df4f414610185575b600080fd5b610118610113366004611677565b610298565b005b61012d6101283660046116a6565b6102ac565b6040519081526020015b60405180910390f35b6066546101609073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610137565b61018d6102ee565b60405161013791906116c1565b6101186101a836600461170b565b6103a9565b6101186104a1565b61012d6101c33660046117de565b6104b5565b60335473ffffffffffffffffffffffffffffffffffffffff16610160565b6101186101f4366004611831565b610506565b6065546101609073ffffffffffffffffffffffffffffffffffffffff1681565b6067546101609073ffffffffffffffffffffffffffffffffffffffff1681565b61011861024736600461185b565b61051c565b61011861025a366004611677565b6105f9565b61011861026d366004611677565b61060a565b610118610280366004611677565b6106be565b6101186102933660046118c7565b6106cf565b6102a0610868565b6102a9816108e9565b50565b60006102c2609863ffffffff808516906109f716565b156102e1576102db609863ffffffff80851690610a0a16565b92915050565b506000919050565b919050565b609880546060919060009067ffffffffffffffff8111156103115761031161191b565b60405190808252806020026020018201604052801561033a578160200160208202803683370190505b50905060005b82548110156103a25782818154811061035b5761035b61194a565b906000526020600020015460001c82828151811061037b5761037b61194a565b63ffffffff909216602092830291909101909101528061039a816119a8565b915050610340565b5092915050565b60655473ffffffffffffffffffffffffffffffffffffffff16331461042f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f216d61696c626f7800000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b838361043b8282610a16565b604051806080016040528060438152602001612242604391399061048c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104269190611a4e565b5061049986868686610a2a565b505050505050565b6104a9610868565b6104b36000610b4e565b565b604051600090339063ffffffff8616907f11c97c784c298562a796345417aa40e1ce110e6b100f41b801ab23414f72d7e5908490a36104fe846104f9858533610bc5565b610bf7565b949350505050565b61050e610868565b6105188282610ca1565b5050565b610524610868565b82811461058d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f216c656e677468000000000000000000000000000000000000000000000000006044820152606401610426565b60005b838110156105f2576105e08585838181106105ad576105ad61194a565b90506020020160208101906105c291906116a6565b8484848181106105d4576105d461194a565b90506020020135610ca1565b6105eb600182611a61565b9050610590565b5050505050565b610601610868565b6102a981610cee565b610612610868565b73ffffffffffffffffffffffffffffffffffffffff81166106b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610426565b6102a981610b4e565b6106c6610868565b6102a981610ddd565b600054610100900460ff16158080156106ef5750600054600160ff909116105b806107095750303b158015610709575060005460ff166001145b610795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610426565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156107f357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6107ff85858585610ecc565b80156105f257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b60335473ffffffffffffffffffffffffffffffffffffffff1633146104b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610426565b73ffffffffffffffffffffffffffffffffffffffff81161580610922575073ffffffffffffffffffffffffffffffffffffffff81163b15155b610988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e747261637400000000000000000000000000000000000000000000006044820152606401610426565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ffec811ed4e60aebdaf7a79cad8a97196bf56e35362f039705598226d30c9d24890600090a250565b6000610a038383610f8d565b9392505050565b6000610a038383610f99565b600081610a22846102ac565b149392505050565b6000610a368383611023565b90506000610a44848461105d565b90506002826003811115610a5a57610a5a611a74565b03610ac4576000610a6b8585611075565b90506000610a78826110b6565b9050828863ffffffff167fb689f7016112eaacc7edebd6ea5eb700790a103e79c39ce0118e075de87d797660405160405180910390a3610abc886104f98386611161565b505050610499565b6003826003811115610ad857610ad8611a74565b03610b4657806000610aea8686611190565b9050610af682826111c8565b60405173ffffffffffffffffffffffffffffffffffffffff83169063ffffffff8a16907fc4416e2fcdf8514178829e5ead195eb13f3241ea71c0e38f998868fe81e4226990600090a35050610499565b610499611aa3565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60608160028585604051602001610bdf9493929190611bf7565b60405160208183030381529060405290509392505050565b600080610c0384611205565b6065546040517ffa31de0100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063fa31de0190610c5e90879085908890600401611ce4565b6020604051808303816000875af1158015610c7d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fe9190611d09565b610cb7609863ffffffff80851690849061127016565b604051819063ffffffff8416907f97fd51fef1f80c854cbd0150c248e8b2ac4ecdc97cc05e742b5f61c9f4dc645890600090a35050565b8073ffffffffffffffffffffffffffffffffffffffff81163b610d6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e747261637400000000000000000000000000000000000000000000006044820152606401610426565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fb87f5a0bface22cde699143559fb99f990ae54eea236995fc54178af91af859f90600090a25050565b8073ffffffffffffffffffffffffffffffffffffffff81163b610e5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e747261637400000000000000000000000000000000000000000000006044820152606401610426565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517f7a61e573722ff8b205c8962b59d37e7d30573f368965597a844a94872204ebd790600090a25050565b600054610100900460ff16610f63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610426565b610f6c84610ddd565b610f7583610cee565b610f7e826108e9565b610f8781610b4e565b50505050565b6000610a03838361127b565b600081815260028301602052604081205480151580610fbd5750610fbd8484610f8d565b610a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006044820152606401610426565b6000828261103360016040611d22565b8181106110425761104261194a565b919091013560f81c90506003811115610a0357610a03611a74565b600061106c6020828486611d35565b610a0391611d5f565b606060026110838484611023565b600381111561109457611094611a74565b146110a1576110a1611aa3565b6110ad82840184611ed4565b95945050505050565b8051606090600090818167ffffffffffffffff8111156110d8576110d861191b565b60405190808252806020026020018201604052801561110b57816020015b60608152602001906001900390816110f65790505b5090505b818310156104fe5761113985848151811061112c5761112c61194a565b6020026020010151611293565b81848151811061114b5761114b61194a565b602002602001018190525082600101925061110f565b60608160038460405160200161117993929190612093565b604051602081830303815290604052905092915050565b6060600361119e8484611023565b60038111156111af576111af611a74565b146111bc576111bc611aa3565b6110ad82840184612129565b80516000905b80821015610f87576111f9848484815181106111ec576111ec61194a565b60200260200101516112ce565b508160010191506111ce565b6000611210826102ac565b90506000801b811415604051806080016040528060438152602001612242604391399061126a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104269190611a4e565b50919050565b610f87838383611312565b60008181526001830160205260408120541515610a03565b606081602001516112a7836000015161132f565b6040516020016112b89291906121f6565b6040516020818303038152906040529050919050565b6060610a03838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250611347565b600082815260028401602052604081208290556104fe8484611460565b60606102db61133d8361146c565b8360200151611476565b6060824710156113d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610426565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516114029190612225565b60006040518083038185875af1925050503d806000811461143f576040519150601f19603f3d011682016040523d82523d6000602084013e611444565b606091505b50915091506114558783838761149b565b979650505050505050565b6000610a03838361153b565b80516000906102db565b6060610a0383836040518060600160405280602581526020016122856025913961158a565b6060831561153157825160000361152a5773ffffffffffffffffffffffffffffffffffffffff85163b61152a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610426565b50816104fe565b6104fe838361160f565b6000818152600183016020526040812054611582575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556102db565b5060006102db565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516115b49190612225565b600060405180830381855afa9150503d80600081146115ef576040519150601f19603f3d011682016040523d82523d6000602084013e6115f4565b606091505b50915091506116058683838761149b565b9695505050505050565b81511561161f5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104269190611a4e565b803573ffffffffffffffffffffffffffffffffffffffff811681146102e957600080fd5b60006020828403121561168957600080fd5b610a0382611653565b803563ffffffff811681146102e957600080fd5b6000602082840312156116b857600080fd5b610a0382611692565b6020808252825182820181905260009190848201906040850190845b818110156116ff57835163ffffffff16835292840192918401916001016116dd565b50909695505050505050565b6000806000806060858703121561172157600080fd5b61172a85611692565b935060208501359250604085013567ffffffffffffffff8082111561174e57600080fd5b818701915087601f83011261176257600080fd5b81358181111561177157600080fd5b88602082850101111561178357600080fd5b95989497505060200194505050565b60008083601f8401126117a457600080fd5b50813567ffffffffffffffff8111156117bc57600080fd5b6020830191508360208260051b85010111156117d757600080fd5b9250929050565b6000806000604084860312156117f357600080fd5b6117fc84611692565b9250602084013567ffffffffffffffff81111561181857600080fd5b61182486828701611792565b9497909650939450505050565b6000806040838503121561184457600080fd5b61184d83611692565b946020939093013593505050565b6000806000806040858703121561187157600080fd5b843567ffffffffffffffff8082111561188957600080fd5b61189588838901611792565b909650945060208701359150808211156118ae57600080fd5b506118bb87828801611792565b95989497509550505050565b600080600080608085870312156118dd57600080fd5b6118e685611653565b93506118f460208601611653565b925061190260408601611653565b915061191060608601611653565b905092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036119d9576119d9611979565b5060010190565b60005b838110156119fb5781810151838201526020016119e3565b50506000910152565b60008151808452611a1c8160208601602086016119e0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610a036020830184611a04565b808201808211156102db576102db611979565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60048110611b09577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112611b4157600080fd5b90910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b7f57600080fd5b830160208101925035905067ffffffffffffffff811115611b9f57600080fd5b8036038213156117d757600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600060608083018784526020611c0f81860189611ad2565b604085810184905291869052608091828601600588901b870184018960005b8a811015611cd2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a8403018452611c67828d611b0d565b611c718182611b0d565b868552803587860152611c8688820182611b4a565b9150878b870152611c9a8a87018383611bae565b915050611ca988830183611b4a565b925085820389870152611cbd828483611bae565b96890196955050509186019150600101611c2e565b50909c9b505050505050505050505050565b63ffffffff841681528260208201526060604082015260006110ad6060830184611a04565b600060208284031215611d1b57600080fd5b5051919050565b818103818111156102db576102db611979565b60008085851115611d4557600080fd5b83861115611d5257600080fd5b5050820193919092039150565b803560208310156102db577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b8035600481106102e957600080fd5b6040805190810167ffffffffffffffff81118282101715611dcd57611dcd61191b565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611e1a57611e1a61191b565b604052919050565b600067ffffffffffffffff821115611e3c57611e3c61191b565b5060051b60200190565b600082601f830112611e5757600080fd5b813567ffffffffffffffff811115611e7157611e7161191b565b611ea260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611dd3565b818152846020838601011115611eb757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215611ee957600080fd5b83359250611ef960208501611d9b565b915067ffffffffffffffff60408501351115611f1457600080fd5b6040840135840185601f820112611f2a57600080fd5b611f3c611f378235611e22565b611dd3565b81358082526020808301929160051b840101881015611f5a57600080fd5b602083015b6020843560051b8501018110156120855767ffffffffffffffff81351115611f8657600080fd5b803584017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604081838d03011215611fbd57600080fd5b611fc5611daa565b67ffffffffffffffff60208401351115611fde57600080fd5b60208301358301604083828f03011215611ff757600080fd5b611fff611daa565b92506020810135835267ffffffffffffffff6040820135111561202157600080fd5b6120348d60206040840135840101611e46565b60208401525081815267ffffffffffffffff6040840135111561205657600080fd5b6120698c60206040860135860101611e46565b6020820152808652505050602083019250602081019050611f5f565b508093505050509250925092565b60006060820185835260206120aa81850187611ad2565b6060604085015281855180845260808601915060808160051b870101935082870160005b8281101561211a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80888703018452612108868351611a04565b955092840192908401906001016120ce565b50939998505050505050505050565b60008060006060848603121561213e57600080fd5b83359250602061214f818601611d9b565b9250604085013567ffffffffffffffff8082111561216c57600080fd5b818701915087601f83011261218057600080fd5b813561218e611f3782611e22565b81815260059190911b8301840190848101908a8311156121ad57600080fd5b8585015b838110156121e5578035858111156121c95760008081fd5b6121d78d89838a0101611e46565b8452509186019186016121b1565b508096505050505050509250925092565b600083516122088184602088016119e0565b83519083019061221c8183602088016119e0565b01949350505050565b600082516122378184602087016119e0565b919091019291505056fe4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e2e2044696420796f7520737065636966792074686520726967687420646f6d61696e2049443f416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564a26469706673582212203e2eba22949e76deabcaaeb10d557be15edf3bffae2c7c4080d256c6970464bb64736f6c63430008110033";
114
+ const _bytecode = "0x608060405234801561001057600080fd5b506040516200511438038062005114833981016040819052610031916106ab565b6000805463ffffffff838116640100000000026001600160401b03199092169085161717815560405183906100659061065a565b63ffffffff9091168152602001604051809103906000f08015801561008e573d6000803e3d6000fd5b5090506000826040516100a09061065a565b63ffffffff9091168152602001604051809103906000f0801580156100c9573d6000803e3d6000fd5b506040516302cd9fb760e51b815263ffffffff851660048201526001600160a01b038083166024830152919250908316906359b3f6e090604401600060405180830381600087803b15801561011d57600080fd5b505af1158015610131573d6000803e3d6000fd5b50506040516302cd9fb760e51b815263ffffffff871660048201526001600160a01b038581166024830152841692506359b3f6e09150604401600060405180830381600087803b15801561018457600080fd5b505af1158015610198573d6000803e3d6000fd5b50505050306040516101a990610668565b6001600160a01b039091168152602001604051809103906000f0801580156101d5573d6000803e3d6000fd5b506000805463ffffffff168152600260205260409081902080546001600160a01b0319166001600160a01b03939093169290921790915551309061021890610668565b6001600160a01b039091168152602001604051809103906000f080158015610244573d6000803e3d6000fd5b5060008054640100000000900463ffffffff168152600260205260409081902080546001600160a01b0319166001600160a01b0393909316929092179091555161028d90610676565b604051809103906000f0801580156102a9573d6000803e3d6000fd5b506000805463ffffffff168152600360205260409081902080546001600160a01b0319166001600160a01b039390931692909217909155516102ea90610676565b604051809103906000f080158015610306573d6000803e3d6000fd5b5060008054640100000000900463ffffffff908116825260036020908152604080842080546001600160a01b03199081166001600160a01b039788161790915589841685526001909252808420805483168887161790559187168352818320805490911693851693909317909255905161037f90610684565b604051809103906000f08015801561039b573d6000803e3d6000fd5b50905060006040516103ac90610684565b604051809103906000f0801580156103c8573d6000803e3d6000fd5b506000805463ffffffff16815260026020908152604080832054600390925291829020549151637c643b2f60e11b81526001600160a01b03888116600483015291821660248201529181166044830152306064830181905292935084169063f8c8765e90608401600060405180830381600087803b15801561044957600080fd5b505af115801561045d573d6000803e3d6000fd5b505060008054640100000000900463ffffffff16815260026020908152604080832054600390925291829020549151637c643b2f60e11b81526001600160a01b0389811660048301529182166024820152918116604483015284811660648301528516925063f8c8765e9150608401600060405180830381600087803b1580156104e657600080fd5b505af11580156104fa573d6000803e3d6000fd5b50505050826001600160a01b031663b49c53a7876105218561064e60201b61029e1760201c565b6040516001600160e01b031960e085901b16815263ffffffff9290921660048301526024820152604401600060405180830381600087803b15801561056557600080fd5b505af1158015610579573d6000803e3d6000fd5b50505050816001600160a01b031663b49c53a7886105a08661064e60201b61029e1760201c565b6040516001600160e01b031960e085901b16815263ffffffff9290921660048301526024820152604401600060405180830381600087803b1580156105e457600080fd5b505af11580156105f8573d6000803e3d6000fd5b5050505063ffffffff96871660009081526004602052604080822080546001600160a01b03199081166001600160a01b0397881617909155979098168152969096208054909516911617909255506106de915050565b6001600160a01b031690565b610eb18062000a0883390190565b61133e80620018b983390190565b61021e8062002bf783390190565b6122ff8062002e1583390190565b805163ffffffff811681146106a657600080fd5b919050565b600080604083850312156106be57600080fd5b6106c783610692565b91506106d560208401610692565b90509250929050565b61031a80620006ee6000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063f11a367e11610050578063f11a367e14610142578063f9d2692d14610178578063f9f312ad1461018257600080fd5b80635a007b7e146100775780637a7eada3146100d6578063e9ee46951461010c575b600080fd5b6100ad6100853660046102b7565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b6100ad6100e43660046102b7565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100ad61011a3660046102b7565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6100ad6101503660046102b7565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61018061018a565b005b61018061021d565b6000805463ffffffff168152600160205260408082205481517f1605c306000000000000000000000000000000000000000000000000000000008152915173ffffffffffffffffffffffffffffffffffffffff90911692631605c306926004808201939182900301818387803b15801561020357600080fd5b505af1158015610217573d6000803e3d6000fd5b50505050565b60008054640100000000900463ffffffff168152600160205260408082205481517f1605c306000000000000000000000000000000000000000000000000000000008152915173ffffffffffffffffffffffffffffffffffffffff90911692631605c306926004808201939182900301818387803b15801561020357600080fd5b73ffffffffffffffffffffffffffffffffffffffff1690565b6000602082840312156102c957600080fd5b813563ffffffff811681146102dd57600080fd5b939250505056fea26469706673582212204728c9aaaf228ef0dd61be21557ca00d9265c26c31274174847a92a0dca91ef364736f6c6343000811003360c0604052600060a0819052808055600181905560025534801561002257600080fd5b50604051610eb1380380610eb18339810160408190526100419161004f565b63ffffffff1660805261007c565b60006020828403121561006157600080fd5b815163ffffffff8116811461007557600080fd5b9392505050565b60805160a051610e096100a8600039600061026801526000818161017601526107d30152610e096000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806392d28b3d11610081578063fa31de011161005b578063fa31de0114610247578063fd10ebe51461025a578063ffa1ad741461026357600080fd5b806392d28b3d146101c0578063a3b4919f146101e3578063d12164e41461023e57600080fd5b80638209d312116100b25780638209d312146101685780638d3638f414610171578063924324aa146101ad57600080fd5b80631605c306146100d9578063522ae002146100e357806359b3f6e0146100ff575b600080fd5b6100e161028a565b005b6100ec61080081565b6040519081526020015b60405180910390f35b6100e161010d366004610894565b63ffffffff91909116600090815260036020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b6100ec60015481565b6101987f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff90911681526020016100f6565b6100e16101bb366004610914565b61044e565b6101d36101ce36600461098e565b6105ad565b6040516100f69493929190610a0b565b6102196101f1366004610a5a565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100f6565b6100ec60025481565b6100ec610255366004610a7c565b610683565b6100ec60005481565b6101987f000000000000000000000000000000000000000000000000000000000000000081565b6002805460009081526004602090815260408083208151608081018352815463ffffffff8116825273ffffffffffffffffffffffffffffffffffffffff64010000000090910481169482019490945260018201549093169183019190915292830180549293919260608401919061030090610ad6565b80601f016020809104026020016040519081016040528092919081815260200182805461032c90610ad6565b80156103795780601f1061034e57610100808354040283529160200191610379565b820191906000526020600020905b81548152906001019060200180831161035c57829003601f168201915b5050505050815250509050806040015173ffffffffffffffffffffffffffffffffffffffff166356d5d47582600001516103e0846020015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1690565b84606001516040518463ffffffff1660e01b815260040161040393929190610b29565b600060405180830381600087803b15801561041d57600080fd5b505af1158015610431573d6000803e3d6000fd5b50506002805492509050600061044683610b57565b919050555050565b60405180608001604052808663ffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff16815260200183838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525093909452505060018054825260046020908152604092839020855181549287015163ffffffff9091167fffffffffffffffff0000000000000000000000000000000000000000000000009093169290921764010000000073ffffffffffffffffffffffffffffffffffffffff938416021781559285015191830180547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790556060830151909150600282019061058e9082610c34565b505060018054915060006105a183610b57565b91905055505050505050565b60046020526000908152604090208054600182015460028301805463ffffffff84169464010000000090940473ffffffffffffffffffffffffffffffffffffffff90811694931692919061060090610ad6565b80601f016020809104026020016040519081016040528092919081815260200182805461062c90610ad6565b80156106795780601f1061064e57610100808354040283529160200191610679565b820191906000526020600020905b81548152906001019060200180831161065c57829003601f168201915b5050505050905084565b60006108008211156106f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6d736720746f6f206c6f6e67000000000000000000000000000000000000000060448201526064015b60405180910390fd5b63ffffffff851660009081526003602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610789576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d697373696e672072656d6f7465206d61696c626f780000000000000000000060448201526064016106ed565b6040517f924324aa00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063924324aa90610803907f00000000000000000000000000000000000000000000000000000000000000009033908a908a908a90600401610d4e565b600060405180830381600087803b15801561081d57600080fd5b505af1158015610831573d6000803e3d6000fd5b505060008054925090508061084583610b57565b909155506000979650505050505050565b803563ffffffff8116811461086a57600080fd5b919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461089157600080fd5b50565b600080604083850312156108a757600080fd5b6108b083610856565b915060208301356108c08161086f565b809150509250929050565b60008083601f8401126108dd57600080fd5b50813567ffffffffffffffff8111156108f557600080fd5b60208301915083602082850101111561090d57600080fd5b9250929050565b60008060008060006080868803121561092c57600080fd5b61093586610856565b945060208601356109458161086f565b935060408601356109558161086f565b9250606086013567ffffffffffffffff81111561097157600080fd5b61097d888289016108cb565b969995985093965092949392505050565b6000602082840312156109a057600080fd5b5035919050565b6000815180845260005b818110156109cd576020818501810151868301820152016109b1565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b63ffffffff85168152600073ffffffffffffffffffffffffffffffffffffffff808616602084015280851660408401525060806060830152610a5060808301846109a7565b9695505050505050565b600060208284031215610a6c57600080fd5b610a7582610856565b9392505050565b60008060008060608587031215610a9257600080fd5b610a9b85610856565b935060208501359250604085013567ffffffffffffffff811115610abe57600080fd5b610aca878288016108cb565b95989497509550505050565b600181811c90821680610aea57607f821691505b602082108103610b23577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b63ffffffff84168152826020820152606060408201526000610b4e60608301846109a7565b95945050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610baf577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f821115610c2f57600081815260208120601f850160051c81016020861015610c0c5750805b601f850160051c820191505b81811015610c2b57828155600101610c18565b5050505b505050565b815167ffffffffffffffff811115610c4e57610c4e610bb6565b610c6281610c5c8454610ad6565b84610be5565b602080601f831160018114610cb55760008415610c7f5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555610c2b565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015610d0257888601518255948401946001909101908401610ce3565b5085821015610d3e57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b63ffffffff86168152600073ffffffffffffffffffffffffffffffffffffffff808716602084015280861660408401525060806060830152826080830152828460a0840137600060a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168301019050969550505050505056fea264697066735822122064e2ab6d41d9ca4bedffeb54c82b828f31f63f77cacd000dd06daf868802e51464736f6c6343000811003360806040523480156200001157600080fd5b506040516200133e3803806200133e833981016040819052620000349162000304565b80620000408162000048565b505062000336565b600054610100900460ff1615808015620000695750600054600160ff909116105b8062000099575062000086306200018660201b620009e21760201c565b15801562000099575060005460ff166001145b620001025760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000126576000805461ff0019166101001790555b6200013062000195565b6200013b82620001fd565b801562000182576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b03163b151590565b600054610100900460ff16620001f15760405162461bcd60e51b815260206004820152602b60248201526000805160206200131e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000f9565b620001fb62000251565b565b606680546001600160a01b0319166001600160a01b0383169081179091556040519081527f04d55a8be181fb8d75b76f2d48aa0b2ee40f47e53d6e61763eeeec46feea8a249060200160405180910390a150565b600054610100900460ff16620002ad5760405162461bcd60e51b815260206004820152602b60248201526000805160206200131e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000f9565b620001fb33603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156200031757600080fd5b81516001600160a01b03811681146200032f57600080fd5b9392505050565b610fd880620003466000396000f3fe6080604052600436106100d25760003560e01c806360fcef7c1161007f578063a692979311610059578063a692979314610264578063c4d66de814610292578063f2fde38b146102b2578063fe173b97146102d257600080fd5b806360fcef7c146101db578063715018a6146102245780638da5cb5b1461023957600080fd5b80632f202650116100b05780632f2026501461017957806338af3eed146101995780634e71d92d146101c657600080fd5b806311bf2c18146100d75780631c31f710146100ec5780631d16c8c81461010c575b600080fd5b6100ea6100e5366004610d74565b6102e7565b005b3480156100f857600080fd5b506100ea610107366004610dba565b6104d2565b34801561011857600080fd5b5061014f610127366004610dd5565b60656020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561018557600080fd5b506100ea610194366004610df0565b6104e6565b3480156101a557600080fd5b5060665461014f9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156101d257600080fd5b506100ea61056c565b3480156101e757600080fd5b506101fb6101f6366004610dd5565b610636565b604080516fffffffffffffffffffffffffffffffff938416815292909116602083015201610170565b34801561023057600080fd5b506100ea610768565b34801561024557600080fd5b5060335473ffffffffffffffffffffffffffffffffffffffff1661014f565b34801561027057600080fd5b5061028461027f366004610e65565b61077c565b604051908152602001610170565b34801561029e57600080fd5b506100ea6102ad366004610dba565b610792565b3480156102be57600080fd5b506100ea6102cd366004610dba565b61092e565b3480156102de57600080fd5b50610284600a81565b60006102f3848461077c565b90508034101561038a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f696e73756666696369656e7420696e746572636861696e20676173207061796d60448201527f656e74000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60006103968234610ebe565b9050801561048f5760008373ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d80600081146103f8576040519150601f19603f3d011682016040523d82523d6000602084013e6103fd565b606091505b505090508061048d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f496e746572636861696e20676173207061796d656e7420726566756e6420666160448201527f696c6564000000000000000000000000000000000000000000000000000000006064820152608401610381565b505b604080518581526020810184905287917ff715e66d2cd2a0179069dcda2a41a4da36a30e1aad12187fbb7c5d100afd621c910160405180910390a2505050505050565b6104da6109fe565b6104e381610a7f565b50565b6104ee6109fe565b8060005b818110156105665761055484848381811061050f5761050f610ed1565b6105259260206040909202019081019150610dd5565b85858481811061053757610537610ed1565b905060400201602001602081019061054f9190610dba565b610af8565b8061055e81610f00565b9150506104f2565b50505050565b60665460405160009173ffffffffffffffffffffffffffffffffffffffff169047908381818185875af1925050503d80600081146105c6576040519150601f19603f3d011682016040523d82523d6000602084013e6105cb565b606091505b50509050806104e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f217472616e7366657200000000000000000000000000000000000000000000006044820152606401610381565b63ffffffff8116600090815260656020526040812054819073ffffffffffffffffffffffffffffffffffffffff16806106cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f21676173206f7261636c650000000000000000000000000000000000000000006044820152606401610381565b6040517f60fcef7c00000000000000000000000000000000000000000000000000000000815263ffffffff8516600482015273ffffffffffffffffffffffffffffffffffffffff8216906360fcef7c906024016040805180830381865afa15801561073a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075e9190610f58565b9250925050915091565b6107706109fe565b61077a6000610b86565b565b600061078982600a610f8b565b90505b92915050565b600054610100900460ff16158080156107b25750600054600160ff909116105b806107cc5750303b1580156107cc575060005460ff166001145b610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610381565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156108b657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6108be610bfd565b6108c782610a7f565b801561092a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6109366109fe565b73ffffffffffffffffffffffffffffffffffffffff81166109d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610381565b6104e381610b86565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60335473ffffffffffffffffffffffffffffffffffffffff16331461077a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610381565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f04d55a8be181fb8d75b76f2d48aa0b2ee40f47e53d6e61763eeeec46feea8a249060200160405180910390a150565b63ffffffff821660008181526065602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915591519182527f38b842e116ff320f6a79ba4cf434eee927fa156b226c65c90d62989de589b4e7910160405180910390a25050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16610c94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610381565b61077a600054610100900460ff16610d2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610381565b61077a33610b86565b803563ffffffff81168114610d4b57600080fd5b919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610d4b57600080fd5b60008060008060808587031215610d8a57600080fd5b84359350610d9a60208601610d37565b925060408501359150610daf60608601610d50565b905092959194509250565b600060208284031215610dcc57600080fd5b61078982610d50565b600060208284031215610de757600080fd5b61078982610d37565b60008060208385031215610e0357600080fd5b823567ffffffffffffffff80821115610e1b57600080fd5b818501915085601f830112610e2f57600080fd5b813581811115610e3e57600080fd5b8660208260061b8501011115610e5357600080fd5b60209290920196919550909350505050565b60008060408385031215610e7857600080fd5b610e8183610d37565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561078c5761078c610e8f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610f3157610f31610e8f565b5060010190565b80516fffffffffffffffffffffffffffffffff81168114610d4b57600080fd5b60008060408385031215610f6b57600080fd5b610f7483610f38565b9150610f8260208401610f38565b90509250929050565b808202811582820484141761078c5761078c610e8f56fea2646970667358221220e2c2899830f0e6eed3d68e809ccfa35812d72360d58ae657f5c87cbc96ae5e5964736f6c63430008110033496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069608060405234801561001057600080fd5b506101fe806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632852b71c146100515780634fc3aa7c146100735780636465e69f146100b4578063f7e83aee146100ce575b600080fd5b60005461005e9060ff1681565b60405190151581526020015b60405180910390f35b6100b26100813660046100ea565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b005b6100bc600081565b60405160ff909116815260200161006a565b61005e6100dc36600461015c565b60005460ff16949350505050565b6000602082840312156100fc57600080fd5b8135801515811461010c57600080fd5b9392505050565b60008083601f84011261012557600080fd5b50813567ffffffffffffffff81111561013d57600080fd5b60208301915083602082850101111561015557600080fd5b9250929050565b6000806000806040858703121561017257600080fd5b843567ffffffffffffffff8082111561018a57600080fd5b61019688838901610113565b909650945060208701359150808211156101af57600080fd5b506101bc87828801610113565b9598949750955050505056fea2646970667358221220a1a05fbfc54039f64706d6b983d8ed604b13adbd5a9e4e8990057c4b1a77b1d764736f6c63430008110033608060405234801561001057600080fd5b506122df806100206000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063b49c53a711610097578063f1bd6f0a11610066578063f1bd6f0a1461024c578063f2fde38b1461025f578063f3c61d6b14610272578063f8c8765e1461028557600080fd5b8063b49c53a7146101e6578063d5438eae146101f9578063de523cf314610219578063e9198bf91461023957600080fd5b806356d5d475116100d357806356d5d4751461019a578063715018a6146101ad5780638cc02cab146101b55780638da5cb5b146101c857600080fd5b80630e72cc06146101055780632ead72f61461011a57806339bb4ad914610140578063440df4f414610185575b600080fd5b610118610113366004611677565b610298565b005b61012d6101283660046116a6565b6102ac565b6040519081526020015b60405180910390f35b6066546101609073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610137565b61018d6102ee565b60405161013791906116c1565b6101186101a836600461170b565b6103a9565b6101186104a1565b61012d6101c33660046117de565b6104b5565b60335473ffffffffffffffffffffffffffffffffffffffff16610160565b6101186101f4366004611831565b610506565b6065546101609073ffffffffffffffffffffffffffffffffffffffff1681565b6067546101609073ffffffffffffffffffffffffffffffffffffffff1681565b61011861024736600461185b565b61051c565b61011861025a366004611677565b6105f9565b61011861026d366004611677565b61060a565b610118610280366004611677565b6106be565b6101186102933660046118c7565b6106cf565b6102a0610868565b6102a9816108e9565b50565b60006102c2609863ffffffff808516906109f716565b156102e1576102db609863ffffffff80851690610a0a16565b92915050565b506000919050565b919050565b609880546060919060009067ffffffffffffffff8111156103115761031161191b565b60405190808252806020026020018201604052801561033a578160200160208202803683370190505b50905060005b82548110156103a25782818154811061035b5761035b61194a565b906000526020600020015460001c82828151811061037b5761037b61194a565b63ffffffff909216602092830291909101909101528061039a816119a8565b915050610340565b5092915050565b60655473ffffffffffffffffffffffffffffffffffffffff16331461042f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f216d61696c626f7800000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b838361043b8282610a16565b604051806080016040528060438152602001612242604391399061048c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104269190611a4e565b5061049986868686610a2a565b505050505050565b6104a9610868565b6104b36000610b4e565b565b604051600090339063ffffffff8616907f11c97c784c298562a796345417aa40e1ce110e6b100f41b801ab23414f72d7e5908490a36104fe846104f9858533610bc5565b610bf7565b949350505050565b61050e610868565b6105188282610ca1565b5050565b610524610868565b82811461058d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f216c656e677468000000000000000000000000000000000000000000000000006044820152606401610426565b60005b838110156105f2576105e08585838181106105ad576105ad61194a565b90506020020160208101906105c291906116a6565b8484848181106105d4576105d461194a565b90506020020135610ca1565b6105eb600182611a61565b9050610590565b5050505050565b610601610868565b6102a981610cee565b610612610868565b73ffffffffffffffffffffffffffffffffffffffff81166106b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610426565b6102a981610b4e565b6106c6610868565b6102a981610ddd565b600054610100900460ff16158080156106ef5750600054600160ff909116105b806107095750303b158015610709575060005460ff166001145b610795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610426565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156107f357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6107ff85858585610ecc565b80156105f257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050505050565b60335473ffffffffffffffffffffffffffffffffffffffff1633146104b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610426565b73ffffffffffffffffffffffffffffffffffffffff81161580610922575073ffffffffffffffffffffffffffffffffffffffff81163b15155b610988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e747261637400000000000000000000000000000000000000000000006044820152606401610426565b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517ffec811ed4e60aebdaf7a79cad8a97196bf56e35362f039705598226d30c9d24890600090a250565b6000610a038383610f8d565b9392505050565b6000610a038383610f99565b600081610a22846102ac565b149392505050565b6000610a368383611023565b90506000610a44848461105d565b90506002826003811115610a5a57610a5a611a74565b03610ac4576000610a6b8585611075565b90506000610a78826110b6565b9050828863ffffffff167fb689f7016112eaacc7edebd6ea5eb700790a103e79c39ce0118e075de87d797660405160405180910390a3610abc886104f98386611161565b505050610499565b6003826003811115610ad857610ad8611a74565b03610b4657806000610aea8686611190565b9050610af682826111c8565b60405173ffffffffffffffffffffffffffffffffffffffff83169063ffffffff8a16907fc4416e2fcdf8514178829e5ead195eb13f3241ea71c0e38f998868fe81e4226990600090a35050610499565b610499611aa3565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60608160028585604051602001610bdf9493929190611bf7565b60405160208183030381529060405290509392505050565b600080610c0384611205565b6065546040517ffa31de0100000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff169063fa31de0190610c5e90879085908890600401611ce4565b6020604051808303816000875af1158015610c7d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104fe9190611d09565b610cb7609863ffffffff80851690849061127016565b604051819063ffffffff8416907f97fd51fef1f80c854cbd0150c248e8b2ac4ecdc97cc05e742b5f61c9f4dc645890600090a35050565b8073ffffffffffffffffffffffffffffffffffffffff81163b610d6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e747261637400000000000000000000000000000000000000000000006044820152606401610426565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517fb87f5a0bface22cde699143559fb99f990ae54eea236995fc54178af91af859f90600090a25050565b8073ffffffffffffffffffffffffffffffffffffffff81163b610e5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21636f6e747261637400000000000000000000000000000000000000000000006044820152606401610426565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040517f7a61e573722ff8b205c8962b59d37e7d30573f368965597a844a94872204ebd790600090a25050565b600054610100900460ff16610f63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610426565b610f6c84610ddd565b610f7583610cee565b610f7e826108e9565b610f8781610b4e565b50505050565b6000610a03838361127b565b600081815260028301602052604081205480151580610fbd5750610fbd8484610f8d565b610a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f456e756d657261626c654d61703a206e6f6e6578697374656e74206b657900006044820152606401610426565b6000828261103360016040611d22565b8181106110425761104261194a565b919091013560f81c90506003811115610a0357610a03611a74565b600061106c6020828486611d35565b610a0391611d5f565b606060026110838484611023565b600381111561109457611094611a74565b146110a1576110a1611aa3565b6110ad82840184611ed4565b95945050505050565b8051606090600090818167ffffffffffffffff8111156110d8576110d861191b565b60405190808252806020026020018201604052801561110b57816020015b60608152602001906001900390816110f65790505b5090505b818310156104fe5761113985848151811061112c5761112c61194a565b6020026020010151611293565b81848151811061114b5761114b61194a565b602002602001018190525082600101925061110f565b60608160038460405160200161117993929190612093565b604051602081830303815290604052905092915050565b6060600361119e8484611023565b60038111156111af576111af611a74565b146111bc576111bc611aa3565b6110ad82840184612129565b80516000905b80821015610f87576111f9848484815181106111ec576111ec61194a565b60200260200101516112ce565b508160010191506111ce565b6000611210826102ac565b90506000801b811415604051806080016040528060438152602001612242604391399061126a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104269190611a4e565b50919050565b610f87838383611312565b60008181526001830160205260408120541515610a03565b606081602001516112a7836000015161132f565b6040516020016112b89291906121f6565b6040516020818303038152906040529050919050565b6060610a03838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c65640000815250611347565b600082815260028401602052604081208290556104fe8484611460565b60606102db61133d8361146c565b8360200151611476565b6060824710156113d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610426565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516114029190612225565b60006040518083038185875af1925050503d806000811461143f576040519150601f19603f3d011682016040523d82523d6000602084013e611444565b606091505b50915091506114558783838761149b565b979650505050505050565b6000610a03838361153b565b80516000906102db565b6060610a0383836040518060600160405280602581526020016122856025913961158a565b6060831561153157825160000361152a5773ffffffffffffffffffffffffffffffffffffffff85163b61152a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610426565b50816104fe565b6104fe838361160f565b6000818152600183016020526040812054611582575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556102db565b5060006102db565b60606000808573ffffffffffffffffffffffffffffffffffffffff16856040516115b49190612225565b600060405180830381855afa9150503d80600081146115ef576040519150601f19603f3d011682016040523d82523d6000602084013e6115f4565b606091505b50915091506116058683838761149b565b9695505050505050565b81511561161f5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104269190611a4e565b803573ffffffffffffffffffffffffffffffffffffffff811681146102e957600080fd5b60006020828403121561168957600080fd5b610a0382611653565b803563ffffffff811681146102e957600080fd5b6000602082840312156116b857600080fd5b610a0382611692565b6020808252825182820181905260009190848201906040850190845b818110156116ff57835163ffffffff16835292840192918401916001016116dd565b50909695505050505050565b6000806000806060858703121561172157600080fd5b61172a85611692565b935060208501359250604085013567ffffffffffffffff8082111561174e57600080fd5b818701915087601f83011261176257600080fd5b81358181111561177157600080fd5b88602082850101111561178357600080fd5b95989497505060200194505050565b60008083601f8401126117a457600080fd5b50813567ffffffffffffffff8111156117bc57600080fd5b6020830191508360208260051b85010111156117d757600080fd5b9250929050565b6000806000604084860312156117f357600080fd5b6117fc84611692565b9250602084013567ffffffffffffffff81111561181857600080fd5b61182486828701611792565b9497909650939450505050565b6000806040838503121561184457600080fd5b61184d83611692565b946020939093013593505050565b6000806000806040858703121561187157600080fd5b843567ffffffffffffffff8082111561188957600080fd5b61189588838901611792565b909650945060208701359150808211156118ae57600080fd5b506118bb87828801611792565b95989497509550505050565b600080600080608085870312156118dd57600080fd5b6118e685611653565b93506118f460208601611653565b925061190260408601611653565b915061191060608601611653565b905092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036119d9576119d9611979565b5060010190565b60005b838110156119fb5781810151838201526020016119e3565b50506000910152565b60008151808452611a1c8160208601602086016119e0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610a036020830184611a04565b808201808211156102db576102db611979565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60048110611b09577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112611b4157600080fd5b90910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611b7f57600080fd5b830160208101925035905067ffffffffffffffff811115611b9f57600080fd5b8036038213156117d757600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600060608083018784526020611c0f81860189611ad2565b604085810184905291869052608091828601600588901b870184018960005b8a811015611cd2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808a8403018452611c67828d611b0d565b611c718182611b0d565b868552803587860152611c8688820182611b4a565b9150878b870152611c9a8a87018383611bae565b915050611ca988830183611b4a565b925085820389870152611cbd828483611bae565b96890196955050509186019150600101611c2e565b50909c9b505050505050505050505050565b63ffffffff841681528260208201526060604082015260006110ad6060830184611a04565b600060208284031215611d1b57600080fd5b5051919050565b818103818111156102db576102db611979565b60008085851115611d4557600080fd5b83861115611d5257600080fd5b5050820193919092039150565b803560208310156102db577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b8035600481106102e957600080fd5b6040805190810167ffffffffffffffff81118282101715611dcd57611dcd61191b565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611e1a57611e1a61191b565b604052919050565b600067ffffffffffffffff821115611e3c57611e3c61191b565b5060051b60200190565b600082601f830112611e5757600080fd5b813567ffffffffffffffff811115611e7157611e7161191b565b611ea260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611dd3565b818152846020838601011115611eb757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215611ee957600080fd5b83359250611ef960208501611d9b565b915067ffffffffffffffff60408501351115611f1457600080fd5b6040840135840185601f820112611f2a57600080fd5b611f3c611f378235611e22565b611dd3565b81358082526020808301929160051b840101881015611f5a57600080fd5b602083015b6020843560051b8501018110156120855767ffffffffffffffff81351115611f8657600080fd5b803584017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0604081838d03011215611fbd57600080fd5b611fc5611daa565b67ffffffffffffffff60208401351115611fde57600080fd5b60208301358301604083828f03011215611ff757600080fd5b611fff611daa565b92506020810135835267ffffffffffffffff6040820135111561202157600080fd5b6120348d60206040840135840101611e46565b60208401525081815267ffffffffffffffff6040840135111561205657600080fd5b6120698c60206040860135860101611e46565b6020820152808652505050602083019250602081019050611f5f565b508093505050509250925092565b60006060820185835260206120aa81850187611ad2565b6060604085015281855180845260808601915060808160051b870101935082870160005b8281101561211a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80888703018452612108868351611a04565b955092840192908401906001016120ce565b50939998505050505050505050565b60008060006060848603121561213e57600080fd5b83359250602061214f818601611d9b565b9250604085013567ffffffffffffffff8082111561216c57600080fd5b818701915087601f83011261218057600080fd5b813561218e611f3782611e22565b81815260059190911b8301840190848101908a8311156121ad57600080fd5b8585015b838110156121e5578035858111156121c95760008081fd5b6121d78d89838a0101611e46565b8452509186019186016121b1565b508096505050505050509250925092565b600083516122088184602088016119e0565b83519083019061221c8183602088016119e0565b01949350505050565b600082516122378184602087016119e0565b919091019291505056fe4e6f20726f7574657220656e726f6c6c656420666f7220646f6d61696e2e2044696420796f7520737065636966792074686520726967687420646f6d61696e2049443f416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564a26469706673582212202313370fdaf5173ec45eadff15397647af9c8c814de57f2eb4fede8a98026a5664736f6c63430008110033";
115
115
  const isSuperArgs = (xs) => xs.length > 1;
116
116
  class MockHyperlaneEnvironment__factory extends ethers_1.ContractFactory {
117
117
  constructor(...args) {