@layerzerolabs/protocol-v2-messagelib-evm-contracts 1.2.95 → 1.2.97

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 (272) hide show
  1. package/README.md +1 -1
  2. package/artifacts/contracts/Executor.sol/Executor.json +1413 -0
  3. package/artifacts/contracts/Executor.sol/ILayerZeroEndpointV2.json +230 -0
  4. package/artifacts/contracts/ExecutorFeeLib.sol/ExecutorFeeLib.json +546 -0
  5. package/artifacts/contracts/MessageLibBase.sol/MessageLibBase.json +16 -0
  6. package/artifacts/contracts/PriceFeed.sol/PriceFeed.json +694 -0
  7. package/artifacts/contracts/ReceiveLibBaseE2.sol/ReceiveLibBaseE2.json +154 -0
  8. package/artifacts/contracts/SendLibBase.sol/SendLibBase.json +381 -0
  9. package/artifacts/contracts/SendLibBaseE2.sol/SendLibBaseE2.json +819 -0
  10. package/artifacts/contracts/SimpleReadExecutor.sol/ILayerZeroEndpointV2.json +139 -0
  11. package/artifacts/contracts/SimpleReadExecutor.sol/SimpleReadExecutor.json +260 -0
  12. package/artifacts/contracts/Treasury.sol/Treasury.json +309 -0
  13. package/artifacts/contracts/Worker.sol/Worker.json +579 -0
  14. package/artifacts/contracts/decompressor/DVNDecoder.sol/DVNDecoder.json +10 -0
  15. package/artifacts/contracts/decompressor/DVNDecompressor.sol/DVNDecompressor.json +329 -0
  16. package/artifacts/contracts/decompressor/DecompressorExtension.sol/DecompressorExtension.json +92 -0
  17. package/artifacts/contracts/decompressor/ExecutorDecoder.sol/ExecutorDecoder.json +10 -0
  18. package/artifacts/contracts/decompressor/ExecutorDecompressor.sol/ExecutorDecompressor.json +220 -0
  19. package/artifacts/contracts/interfaces/IExecutor.sol/IExecutor.json +487 -0
  20. package/artifacts/contracts/interfaces/IExecutorFeeLib.sol/IExecutorFeeLib.json +410 -0
  21. package/artifacts/contracts/interfaces/ILayerZeroExecutor.sol/ILayerZeroExecutor.json +79 -0
  22. package/artifacts/contracts/interfaces/ILayerZeroPriceFeed.sol/ILayerZeroPriceFeed.json +222 -0
  23. package/artifacts/contracts/interfaces/ILayerZeroReadExecutor.sol/ILayerZeroReadExecutor.json +59 -0
  24. package/artifacts/contracts/interfaces/ILayerZeroTreasury.sol/ILayerZeroTreasury.json +79 -0
  25. package/artifacts/contracts/interfaces/IWorker.sol/IWorker.json +221 -0
  26. package/artifacts/contracts/libs/ExecutorOptions.sol/ExecutorOptions.json +31 -0
  27. package/artifacts/contracts/libs/SafeCall.sol/SafeCall.json +10 -0
  28. package/artifacts/contracts/lowlat/EssenceDVNWrapper.sol/EssenceDVNWrapper.json +369 -0
  29. package/artifacts/contracts/lowlat/MultiCall.sol/MultiCall.json +120 -0
  30. package/artifacts/contracts/mocks/DVNMock.sol/DVNMock.json +135 -0
  31. package/artifacts/contracts/mocks/ExecutorMock.sol/ExecutorMock.json +397 -0
  32. package/artifacts/contracts/uln/LzExecutor.sol/IReceiveUlnView.json +35 -0
  33. package/artifacts/contracts/uln/LzExecutor.sol/LzExecutor.json +515 -0
  34. package/artifacts/contracts/uln/ReceiveUlnBase.sol/ReceiveUlnBase.json +551 -0
  35. package/artifacts/contracts/uln/SendUlnBase.sol/SendUlnBase.json +412 -0
  36. package/artifacts/contracts/uln/UlnBase.sol/UlnBase.json +387 -0
  37. package/artifacts/contracts/uln/dvn/DVN.sol/DVN.json +1509 -0
  38. package/artifacts/contracts/uln/dvn/DVNFeeLib.sol/DVNFeeLib.json +695 -0
  39. package/artifacts/contracts/uln/dvn/DeadDVN.sol/DeadDVN.json +164 -0
  40. package/artifacts/contracts/uln/dvn/MultiSig.sol/MultiSig.json +217 -0
  41. package/artifacts/contracts/uln/dvn/SimpleReadDVN.sol/SimpleReadDVN.json +231 -0
  42. package/artifacts/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapter.sol/CCIPDVNAdapter.json +1040 -0
  43. package/artifacts/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapterFeeLib.sol/CCIPDVNAdapterFeeLib.json +417 -0
  44. package/artifacts/contracts/uln/dvn/adapters/DVNAdapterBase.sol/DVNAdapterBase.json +789 -0
  45. package/artifacts/contracts/uln/dvn/adapters/DVNAdapterBase.sol/IReceiveUln.json +34 -0
  46. package/artifacts/contracts/uln/dvn/adapters/DVNAdapterBase.sol/ISendLibBase.json +30 -0
  47. package/artifacts/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL1.sol/ArbitrumDVNAdapterL1.json +936 -0
  48. package/artifacts/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL2.sol/ArbitrumDVNAdapterL2.json +868 -0
  49. package/artifacts/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/AxelarDVNAdapter.json +1171 -0
  50. package/artifacts/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/ISendLibBase.json +30 -0
  51. package/artifacts/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapterFeeLib.sol/AxelarDVNAdapterFeeLib.json +574 -0
  52. package/artifacts/contracts/uln/dvn/adapters/libs/DVNAdapterMessageCodec.sol/DVNAdapterMessageCodec.json +16 -0
  53. package/artifacts/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL1.sol/OptimismDVNAdapterL1.json +924 -0
  54. package/artifacts/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL2.sol/OptimismDVNAdapterL2.json +891 -0
  55. package/artifacts/contracts/uln/interfaces/IDVN.sol/IDVN.json +438 -0
  56. package/artifacts/contracts/uln/interfaces/IDVNFeeLib.sol/IDVNFeeLib.json +374 -0
  57. package/artifacts/contracts/uln/interfaces/ILayerZeroDVN.sol/ILayerZeroDVN.json +96 -0
  58. package/artifacts/contracts/uln/interfaces/ILayerZeroReadDVN.sol/ILayerZeroReadDVN.json +79 -0
  59. package/artifacts/contracts/uln/interfaces/IReceiveUlnE2.sol/IReceiveUlnE2.json +52 -0
  60. package/artifacts/contracts/uln/interfaces/adapters/IAxelarDVNAdapter.sol/IAxelarDVNAdapter.json +160 -0
  61. package/artifacts/contracts/uln/interfaces/adapters/IAxelarDVNAdapterFeeLib.sol/IAxelarDVNAdapterFeeLib.json +293 -0
  62. package/artifacts/contracts/uln/interfaces/adapters/ICCIPDVNAdapter.sol/ICCIPDVNAdapter.json +78 -0
  63. package/artifacts/contracts/uln/interfaces/adapters/ICCIPDVNAdapterFeeLib.sol/ICCIPDVNAdapterFeeLib.json +301 -0
  64. package/artifacts/contracts/uln/libs/DVNOptions.sol/DVNOptions.json +27 -0
  65. package/artifacts/contracts/uln/libs/ReadCmdCodecV1.sol/ReadCmdCodecV1.json +26 -0
  66. package/artifacts/contracts/uln/libs/SupportedCmdTypes.sol/SupportedCmdTypesLib.json +16 -0
  67. package/artifacts/contracts/uln/libs/UlnOptions.sol/UlnOptions.json +54 -0
  68. package/artifacts/contracts/uln/readlib/ReadLib1002.sol/ReadLib1002.json +1288 -0
  69. package/artifacts/contracts/uln/readlib/ReadLib1002View.sol/ReadLib1002View.json +285 -0
  70. package/artifacts/contracts/uln/readlib/ReadLibBase.sol/ReadLibBase.json +387 -0
  71. package/artifacts/contracts/uln/uln301/AddressSizeConfig.sol/AddressSizeConfig.json +129 -0
  72. package/artifacts/contracts/uln/uln301/ReceiveLibBaseE1.sol/ILayerZeroReceiveLibrary.json +68 -0
  73. package/artifacts/contracts/uln/uln301/ReceiveLibBaseE1.sol/ReceiveLibBaseE1.json +416 -0
  74. package/artifacts/contracts/uln/uln301/ReceiveUln301.sol/ReceiveUln301.json +1000 -0
  75. package/artifacts/contracts/uln/uln301/ReceiveUln301View.sol/IReceiveUln301.json +178 -0
  76. package/artifacts/contracts/uln/uln301/ReceiveUln301View.sol/ReceiveUln301View.json +126 -0
  77. package/artifacts/contracts/uln/uln301/SendLibBaseE1.sol/SendLibBaseE1.json +804 -0
  78. package/artifacts/contracts/uln/uln301/SendUln301.sol/SendUln301.json +1278 -0
  79. package/artifacts/contracts/uln/uln301/TreasuryFeeHandler.sol/TreasuryFeeHandler.json +94 -0
  80. package/artifacts/contracts/uln/uln301/interfaces/IMessageLibE1.sol/IMessageLibE1.json +247 -0
  81. package/artifacts/contracts/uln/uln301/interfaces/INonceContract.sol/INonceContract.json +40 -0
  82. package/artifacts/contracts/uln/uln301/interfaces/ITreasuryFeeHandler.sol/ITreasuryFeeHandler.json +44 -0
  83. package/artifacts/contracts/uln/uln301/interfaces/IUltraLightNode301.sol/IUltraLightNode301.json +29 -0
  84. package/artifacts/contracts/uln/uln301/mocks/NonceContractMock.sol/NonceContractMock.json +93 -0
  85. package/artifacts/contracts/uln/uln302/ReceiveUln302.sol/ReceiveUln302.json +757 -0
  86. package/artifacts/contracts/uln/uln302/ReceiveUln302View.sol/IReceiveUln302.json +146 -0
  87. package/artifacts/contracts/uln/uln302/ReceiveUln302View.sol/ReceiveUln302View.json +251 -0
  88. package/artifacts/contracts/uln/uln302/SendUln302.sol/SendUln302.json +1259 -0
  89. package/artifacts/contracts/upgradeable/WorkerUpgradeable.sol/WorkerUpgradeable.json +592 -0
  90. package/artifacts/contracts/upgradeable/proxy/ProxyAdmin.sol/ProxyAdmin.json +181 -0
  91. package/artifacts/contracts/upgradeable/proxy/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +160 -0
  92. package/artifacts-tron/contracts/Executor.sol/Executor.json +1413 -0
  93. package/artifacts-tron/contracts/Executor.sol/ILayerZeroEndpointV2.json +230 -0
  94. package/artifacts-tron/contracts/ExecutorFeeLib.sol/ExecutorFeeLib.json +546 -0
  95. package/artifacts-tron/contracts/MessageLibBase.sol/MessageLibBase.json +16 -0
  96. package/artifacts-tron/contracts/PriceFeed.sol/PriceFeed.json +694 -0
  97. package/artifacts-tron/contracts/ReceiveLibBaseE2.sol/ReceiveLibBaseE2.json +154 -0
  98. package/artifacts-tron/contracts/SendLibBase.sol/SendLibBase.json +381 -0
  99. package/artifacts-tron/contracts/SendLibBaseE2.sol/SendLibBaseE2.json +819 -0
  100. package/artifacts-tron/contracts/SimpleReadExecutor.sol/ILayerZeroEndpointV2.json +139 -0
  101. package/artifacts-tron/contracts/SimpleReadExecutor.sol/SimpleReadExecutor.json +260 -0
  102. package/artifacts-tron/contracts/Treasury.sol/Treasury.json +309 -0
  103. package/artifacts-tron/contracts/Worker.sol/Worker.json +579 -0
  104. package/artifacts-tron/contracts/decompressor/DVNDecoder.sol/DVNDecoder.json +10 -0
  105. package/artifacts-tron/contracts/decompressor/DVNDecompressor.sol/DVNDecompressor.json +329 -0
  106. package/artifacts-tron/contracts/decompressor/DecompressorExtension.sol/DecompressorExtension.json +92 -0
  107. package/artifacts-tron/contracts/decompressor/ExecutorDecoder.sol/ExecutorDecoder.json +10 -0
  108. package/artifacts-tron/contracts/decompressor/ExecutorDecompressor.sol/ExecutorDecompressor.json +220 -0
  109. package/artifacts-tron/contracts/interfaces/IExecutor.sol/IExecutor.json +487 -0
  110. package/artifacts-tron/contracts/interfaces/IExecutorFeeLib.sol/IExecutorFeeLib.json +410 -0
  111. package/artifacts-tron/contracts/interfaces/ILayerZeroExecutor.sol/ILayerZeroExecutor.json +79 -0
  112. package/artifacts-tron/contracts/interfaces/ILayerZeroPriceFeed.sol/ILayerZeroPriceFeed.json +222 -0
  113. package/artifacts-tron/contracts/interfaces/ILayerZeroReadExecutor.sol/ILayerZeroReadExecutor.json +59 -0
  114. package/artifacts-tron/contracts/interfaces/ILayerZeroTreasury.sol/ILayerZeroTreasury.json +79 -0
  115. package/artifacts-tron/contracts/interfaces/IWorker.sol/IWorker.json +221 -0
  116. package/artifacts-tron/contracts/libs/ExecutorOptions.sol/ExecutorOptions.json +31 -0
  117. package/artifacts-tron/contracts/libs/SafeCall.sol/SafeCall.json +10 -0
  118. package/artifacts-tron/contracts/lowlat/EssenceDVNWrapper.sol/EssenceDVNWrapper.json +369 -0
  119. package/artifacts-tron/contracts/lowlat/MultiCall.sol/MultiCall.json +120 -0
  120. package/artifacts-tron/contracts/mocks/DVNMock.sol/DVNMock.json +135 -0
  121. package/artifacts-tron/contracts/mocks/ExecutorMock.sol/ExecutorMock.json +397 -0
  122. package/artifacts-tron/contracts/uln/LzExecutor.sol/IReceiveUlnView.json +35 -0
  123. package/artifacts-tron/contracts/uln/LzExecutor.sol/LzExecutor.json +515 -0
  124. package/artifacts-tron/contracts/uln/ReceiveUlnBase.sol/ReceiveUlnBase.json +551 -0
  125. package/artifacts-tron/contracts/uln/SendUlnBase.sol/SendUlnBase.json +412 -0
  126. package/artifacts-tron/contracts/uln/UlnBase.sol/UlnBase.json +387 -0
  127. package/artifacts-tron/contracts/uln/dvn/DVN.sol/DVN.json +1509 -0
  128. package/artifacts-tron/contracts/uln/dvn/DVNFeeLib.sol/DVNFeeLib.json +695 -0
  129. package/artifacts-tron/contracts/uln/dvn/DeadDVN.sol/DeadDVN.json +164 -0
  130. package/artifacts-tron/contracts/uln/dvn/MultiSig.sol/MultiSig.json +217 -0
  131. package/artifacts-tron/contracts/uln/dvn/SimpleReadDVN.sol/SimpleReadDVN.json +231 -0
  132. package/artifacts-tron/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapter.sol/CCIPDVNAdapter.json +1040 -0
  133. package/artifacts-tron/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapterFeeLib.sol/CCIPDVNAdapterFeeLib.json +417 -0
  134. package/artifacts-tron/contracts/uln/dvn/adapters/DVNAdapterBase.sol/DVNAdapterBase.json +789 -0
  135. package/artifacts-tron/contracts/uln/dvn/adapters/DVNAdapterBase.sol/IReceiveUln.json +34 -0
  136. package/artifacts-tron/contracts/uln/dvn/adapters/DVNAdapterBase.sol/ISendLibBase.json +30 -0
  137. package/artifacts-tron/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL1.sol/ArbitrumDVNAdapterL1.json +936 -0
  138. package/artifacts-tron/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL2.sol/ArbitrumDVNAdapterL2.json +868 -0
  139. package/artifacts-tron/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/AxelarDVNAdapter.json +1171 -0
  140. package/artifacts-tron/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/ISendLibBase.json +30 -0
  141. package/artifacts-tron/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapterFeeLib.sol/AxelarDVNAdapterFeeLib.json +574 -0
  142. package/artifacts-tron/contracts/uln/dvn/adapters/libs/DVNAdapterMessageCodec.sol/DVNAdapterMessageCodec.json +16 -0
  143. package/artifacts-tron/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL1.sol/OptimismDVNAdapterL1.json +924 -0
  144. package/artifacts-tron/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL2.sol/OptimismDVNAdapterL2.json +891 -0
  145. package/artifacts-tron/contracts/uln/interfaces/IDVN.sol/IDVN.json +438 -0
  146. package/artifacts-tron/contracts/uln/interfaces/IDVNFeeLib.sol/IDVNFeeLib.json +374 -0
  147. package/artifacts-tron/contracts/uln/interfaces/ILayerZeroDVN.sol/ILayerZeroDVN.json +96 -0
  148. package/artifacts-tron/contracts/uln/interfaces/ILayerZeroReadDVN.sol/ILayerZeroReadDVN.json +79 -0
  149. package/artifacts-tron/contracts/uln/interfaces/IReceiveUlnE2.sol/IReceiveUlnE2.json +52 -0
  150. package/artifacts-tron/contracts/uln/interfaces/adapters/IAxelarDVNAdapter.sol/IAxelarDVNAdapter.json +160 -0
  151. package/artifacts-tron/contracts/uln/interfaces/adapters/IAxelarDVNAdapterFeeLib.sol/IAxelarDVNAdapterFeeLib.json +293 -0
  152. package/artifacts-tron/contracts/uln/interfaces/adapters/ICCIPDVNAdapter.sol/ICCIPDVNAdapter.json +78 -0
  153. package/artifacts-tron/contracts/uln/interfaces/adapters/ICCIPDVNAdapterFeeLib.sol/ICCIPDVNAdapterFeeLib.json +301 -0
  154. package/artifacts-tron/contracts/uln/libs/DVNOptions.sol/DVNOptions.json +27 -0
  155. package/artifacts-tron/contracts/uln/libs/ReadCmdCodecV1.sol/ReadCmdCodecV1.json +26 -0
  156. package/artifacts-tron/contracts/uln/libs/SupportedCmdTypes.sol/SupportedCmdTypesLib.json +16 -0
  157. package/artifacts-tron/contracts/uln/libs/UlnOptions.sol/UlnOptions.json +54 -0
  158. package/artifacts-tron/contracts/uln/readlib/ReadLib1002.sol/ReadLib1002.json +1288 -0
  159. package/artifacts-tron/contracts/uln/readlib/ReadLib1002View.sol/ReadLib1002View.json +285 -0
  160. package/artifacts-tron/contracts/uln/readlib/ReadLibBase.sol/ReadLibBase.json +387 -0
  161. package/artifacts-tron/contracts/uln/uln301/AddressSizeConfig.sol/AddressSizeConfig.json +129 -0
  162. package/artifacts-tron/contracts/uln/uln301/ReceiveLibBaseE1.sol/ILayerZeroReceiveLibrary.json +68 -0
  163. package/artifacts-tron/contracts/uln/uln301/ReceiveLibBaseE1.sol/ReceiveLibBaseE1.json +416 -0
  164. package/artifacts-tron/contracts/uln/uln301/ReceiveUln301.sol/ReceiveUln301.json +1000 -0
  165. package/artifacts-tron/contracts/uln/uln301/ReceiveUln301View.sol/IReceiveUln301.json +178 -0
  166. package/artifacts-tron/contracts/uln/uln301/ReceiveUln301View.sol/ReceiveUln301View.json +126 -0
  167. package/artifacts-tron/contracts/uln/uln301/SendLibBaseE1.sol/SendLibBaseE1.json +804 -0
  168. package/artifacts-tron/contracts/uln/uln301/SendUln301.sol/SendUln301.json +1278 -0
  169. package/artifacts-tron/contracts/uln/uln301/TreasuryFeeHandler.sol/TreasuryFeeHandler.json +94 -0
  170. package/artifacts-tron/contracts/uln/uln301/interfaces/IMessageLibE1.sol/IMessageLibE1.json +247 -0
  171. package/artifacts-tron/contracts/uln/uln301/interfaces/INonceContract.sol/INonceContract.json +40 -0
  172. package/artifacts-tron/contracts/uln/uln301/interfaces/ITreasuryFeeHandler.sol/ITreasuryFeeHandler.json +44 -0
  173. package/artifacts-tron/contracts/uln/uln301/interfaces/IUltraLightNode301.sol/IUltraLightNode301.json +29 -0
  174. package/artifacts-tron/contracts/uln/uln301/mocks/NonceContractMock.sol/NonceContractMock.json +93 -0
  175. package/artifacts-tron/contracts/uln/uln302/ReceiveUln302.sol/ReceiveUln302.json +757 -0
  176. package/artifacts-tron/contracts/uln/uln302/ReceiveUln302View.sol/IReceiveUln302.json +146 -0
  177. package/artifacts-tron/contracts/uln/uln302/ReceiveUln302View.sol/ReceiveUln302View.json +251 -0
  178. package/artifacts-tron/contracts/uln/uln302/SendUln302.sol/SendUln302.json +1259 -0
  179. package/artifacts-tron/contracts/upgradeable/WorkerUpgradeable.sol/WorkerUpgradeable.json +592 -0
  180. package/artifacts-tron/contracts/upgradeable/proxy/ProxyAdmin.sol/ProxyAdmin.json +181 -0
  181. package/artifacts-tron/contracts/upgradeable/proxy/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +160 -0
  182. package/artifacts-zk/contracts/Executor.sol/Executor.json +1414 -0
  183. package/artifacts-zk/contracts/Executor.sol/ILayerZeroEndpointV2.json +231 -0
  184. package/artifacts-zk/contracts/ExecutorFeeLib.sol/ExecutorFeeLib.json +547 -0
  185. package/artifacts-zk/contracts/MessageLibBase.sol/MessageLibBase.json +17 -0
  186. package/artifacts-zk/contracts/PriceFeed.sol/PriceFeed.json +695 -0
  187. package/artifacts-zk/contracts/ReceiveLibBaseE2.sol/ReceiveLibBaseE2.json +155 -0
  188. package/artifacts-zk/contracts/SendLibBase.sol/SendLibBase.json +382 -0
  189. package/artifacts-zk/contracts/SendLibBaseE2.sol/SendLibBaseE2.json +820 -0
  190. package/artifacts-zk/contracts/SimpleReadExecutor.sol/ILayerZeroEndpointV2.json +140 -0
  191. package/artifacts-zk/contracts/SimpleReadExecutor.sol/SimpleReadExecutor.json +261 -0
  192. package/artifacts-zk/contracts/Treasury.sol/Treasury.json +310 -0
  193. package/artifacts-zk/contracts/Worker.sol/Worker.json +580 -0
  194. package/artifacts-zk/contracts/decompressor/DVNDecoder.sol/DVNDecoder.json +11 -0
  195. package/artifacts-zk/contracts/decompressor/DVNDecompressor.sol/DVNDecompressor.json +330 -0
  196. package/artifacts-zk/contracts/decompressor/DecompressorExtension.sol/DecompressorExtension.json +93 -0
  197. package/artifacts-zk/contracts/decompressor/ExecutorDecoder.sol/ExecutorDecoder.json +11 -0
  198. package/artifacts-zk/contracts/decompressor/ExecutorDecompressor.sol/ExecutorDecompressor.json +221 -0
  199. package/artifacts-zk/contracts/interfaces/IExecutor.sol/IExecutor.json +488 -0
  200. package/artifacts-zk/contracts/interfaces/IExecutorFeeLib.sol/IExecutorFeeLib.json +411 -0
  201. package/artifacts-zk/contracts/interfaces/ILayerZeroExecutor.sol/ILayerZeroExecutor.json +80 -0
  202. package/artifacts-zk/contracts/interfaces/ILayerZeroPriceFeed.sol/ILayerZeroPriceFeed.json +223 -0
  203. package/artifacts-zk/contracts/interfaces/ILayerZeroReadExecutor.sol/ILayerZeroReadExecutor.json +60 -0
  204. package/artifacts-zk/contracts/interfaces/ILayerZeroTreasury.sol/ILayerZeroTreasury.json +80 -0
  205. package/artifacts-zk/contracts/interfaces/IWorker.sol/IWorker.json +222 -0
  206. package/artifacts-zk/contracts/libs/ExecutorOptions.sol/ExecutorOptions.json +32 -0
  207. package/artifacts-zk/contracts/libs/SafeCall.sol/SafeCall.json +11 -0
  208. package/artifacts-zk/contracts/lowlat/EssenceDVNWrapper.sol/EssenceDVNWrapper.json +370 -0
  209. package/artifacts-zk/contracts/lowlat/MultiCall.sol/MultiCall.json +121 -0
  210. package/artifacts-zk/contracts/mocks/DVNMock.sol/DVNMock.json +136 -0
  211. package/artifacts-zk/contracts/mocks/ExecutorMock.sol/ExecutorMock.json +398 -0
  212. package/artifacts-zk/contracts/uln/LzExecutor.sol/IReceiveUlnView.json +36 -0
  213. package/artifacts-zk/contracts/uln/LzExecutor.sol/LzExecutor.json +516 -0
  214. package/artifacts-zk/contracts/uln/ReceiveUlnBase.sol/ReceiveUlnBase.json +552 -0
  215. package/artifacts-zk/contracts/uln/SendUlnBase.sol/SendUlnBase.json +413 -0
  216. package/artifacts-zk/contracts/uln/UlnBase.sol/UlnBase.json +388 -0
  217. package/artifacts-zk/contracts/uln/dvn/DVN.sol/DVN.json +1510 -0
  218. package/artifacts-zk/contracts/uln/dvn/DVNFeeLib.sol/DVNFeeLib.json +696 -0
  219. package/artifacts-zk/contracts/uln/dvn/DeadDVN.sol/DeadDVN.json +165 -0
  220. package/artifacts-zk/contracts/uln/dvn/MultiSig.sol/MultiSig.json +218 -0
  221. package/artifacts-zk/contracts/uln/dvn/SimpleReadDVN.sol/SimpleReadDVN.json +232 -0
  222. package/artifacts-zk/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapter.sol/CCIPDVNAdapter.json +1041 -0
  223. package/artifacts-zk/contracts/uln/dvn/adapters/CCIP/CCIPDVNAdapterFeeLib.sol/CCIPDVNAdapterFeeLib.json +418 -0
  224. package/artifacts-zk/contracts/uln/dvn/adapters/DVNAdapterBase.sol/DVNAdapterBase.json +790 -0
  225. package/artifacts-zk/contracts/uln/dvn/adapters/DVNAdapterBase.sol/IReceiveUln.json +35 -0
  226. package/artifacts-zk/contracts/uln/dvn/adapters/DVNAdapterBase.sol/ISendLibBase.json +31 -0
  227. package/artifacts-zk/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL1.sol/ArbitrumDVNAdapterL1.json +937 -0
  228. package/artifacts-zk/contracts/uln/dvn/adapters/arbitrum/ArbitrumDVNAdapterL2.sol/ArbitrumDVNAdapterL2.json +869 -0
  229. package/artifacts-zk/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/AxelarDVNAdapter.json +1172 -0
  230. package/artifacts-zk/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapter.sol/ISendLibBase.json +31 -0
  231. package/artifacts-zk/contracts/uln/dvn/adapters/axelar/AxelarDVNAdapterFeeLib.sol/AxelarDVNAdapterFeeLib.json +575 -0
  232. package/artifacts-zk/contracts/uln/dvn/adapters/libs/DVNAdapterMessageCodec.sol/DVNAdapterMessageCodec.json +17 -0
  233. package/artifacts-zk/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL1.sol/OptimismDVNAdapterL1.json +925 -0
  234. package/artifacts-zk/contracts/uln/dvn/adapters/optimism/OptimismDVNAdapterL2.sol/OptimismDVNAdapterL2.json +892 -0
  235. package/artifacts-zk/contracts/uln/interfaces/IDVN.sol/IDVN.json +439 -0
  236. package/artifacts-zk/contracts/uln/interfaces/IDVNFeeLib.sol/IDVNFeeLib.json +375 -0
  237. package/artifacts-zk/contracts/uln/interfaces/ILayerZeroDVN.sol/ILayerZeroDVN.json +97 -0
  238. package/artifacts-zk/contracts/uln/interfaces/ILayerZeroReadDVN.sol/ILayerZeroReadDVN.json +80 -0
  239. package/artifacts-zk/contracts/uln/interfaces/IReceiveUlnE2.sol/IReceiveUlnE2.json +53 -0
  240. package/artifacts-zk/contracts/uln/interfaces/adapters/IAxelarDVNAdapter.sol/IAxelarDVNAdapter.json +161 -0
  241. package/artifacts-zk/contracts/uln/interfaces/adapters/IAxelarDVNAdapterFeeLib.sol/IAxelarDVNAdapterFeeLib.json +294 -0
  242. package/artifacts-zk/contracts/uln/interfaces/adapters/ICCIPDVNAdapter.sol/ICCIPDVNAdapter.json +79 -0
  243. package/artifacts-zk/contracts/uln/interfaces/adapters/ICCIPDVNAdapterFeeLib.sol/ICCIPDVNAdapterFeeLib.json +302 -0
  244. package/artifacts-zk/contracts/uln/libs/DVNOptions.sol/DVNOptions.json +28 -0
  245. package/artifacts-zk/contracts/uln/libs/ReadCmdCodecV1.sol/ReadCmdCodecV1.json +27 -0
  246. package/artifacts-zk/contracts/uln/libs/SupportedCmdTypes.sol/SupportedCmdTypesLib.json +17 -0
  247. package/artifacts-zk/contracts/uln/libs/UlnOptions.sol/UlnOptions.json +55 -0
  248. package/artifacts-zk/contracts/uln/readlib/ReadLib1002.sol/ReadLib1002.json +1289 -0
  249. package/artifacts-zk/contracts/uln/readlib/ReadLib1002View.sol/ReadLib1002View.json +286 -0
  250. package/artifacts-zk/contracts/uln/readlib/ReadLibBase.sol/ReadLibBase.json +388 -0
  251. package/artifacts-zk/contracts/uln/uln301/AddressSizeConfig.sol/AddressSizeConfig.json +130 -0
  252. package/artifacts-zk/contracts/uln/uln301/ReceiveLibBaseE1.sol/ILayerZeroReceiveLibrary.json +69 -0
  253. package/artifacts-zk/contracts/uln/uln301/ReceiveLibBaseE1.sol/ReceiveLibBaseE1.json +417 -0
  254. package/artifacts-zk/contracts/uln/uln301/ReceiveUln301.sol/ReceiveUln301.json +1001 -0
  255. package/artifacts-zk/contracts/uln/uln301/ReceiveUln301View.sol/IReceiveUln301.json +179 -0
  256. package/artifacts-zk/contracts/uln/uln301/ReceiveUln301View.sol/ReceiveUln301View.json +127 -0
  257. package/artifacts-zk/contracts/uln/uln301/SendLibBaseE1.sol/SendLibBaseE1.json +805 -0
  258. package/artifacts-zk/contracts/uln/uln301/SendUln301.sol/SendUln301.json +1279 -0
  259. package/artifacts-zk/contracts/uln/uln301/TreasuryFeeHandler.sol/TreasuryFeeHandler.json +95 -0
  260. package/artifacts-zk/contracts/uln/uln301/interfaces/IMessageLibE1.sol/IMessageLibE1.json +248 -0
  261. package/artifacts-zk/contracts/uln/uln301/interfaces/INonceContract.sol/INonceContract.json +41 -0
  262. package/artifacts-zk/contracts/uln/uln301/interfaces/ITreasuryFeeHandler.sol/ITreasuryFeeHandler.json +45 -0
  263. package/artifacts-zk/contracts/uln/uln301/interfaces/IUltraLightNode301.sol/IUltraLightNode301.json +30 -0
  264. package/artifacts-zk/contracts/uln/uln301/mocks/NonceContractMock.sol/NonceContractMock.json +94 -0
  265. package/artifacts-zk/contracts/uln/uln302/ReceiveUln302.sol/ReceiveUln302.json +758 -0
  266. package/artifacts-zk/contracts/uln/uln302/ReceiveUln302View.sol/IReceiveUln302.json +147 -0
  267. package/artifacts-zk/contracts/uln/uln302/ReceiveUln302View.sol/ReceiveUln302View.json +252 -0
  268. package/artifacts-zk/contracts/uln/uln302/SendUln302.sol/SendUln302.json +1260 -0
  269. package/artifacts-zk/contracts/upgradeable/WorkerUpgradeable.sol/WorkerUpgradeable.json +593 -0
  270. package/artifacts-zk/contracts/upgradeable/proxy/ProxyAdmin.sol/ProxyAdmin.json +182 -0
  271. package/artifacts-zk/contracts/upgradeable/proxy/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +161 -0
  272. package/package.json +6 -6
@@ -0,0 +1,1413 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "Executor",
4
+ "sourceName": "contracts/Executor.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "_to",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "uint256",
15
+ "name": "_value",
16
+ "type": "uint256"
17
+ }
18
+ ],
19
+ "name": "Transfer_NativeFailed",
20
+ "type": "error"
21
+ },
22
+ {
23
+ "inputs": [],
24
+ "name": "Transfer_ToAddressIsZero",
25
+ "type": "error"
26
+ },
27
+ {
28
+ "inputs": [],
29
+ "name": "Worker_NotAllowed",
30
+ "type": "error"
31
+ },
32
+ {
33
+ "inputs": [],
34
+ "name": "Worker_OnlyMessageLib",
35
+ "type": "error"
36
+ },
37
+ {
38
+ "inputs": [],
39
+ "name": "Worker_RoleRenouncingDisabled",
40
+ "type": "error"
41
+ },
42
+ {
43
+ "anonymous": false,
44
+ "inputs": [
45
+ {
46
+ "components": [
47
+ {
48
+ "internalType": "uint32",
49
+ "name": "dstEid",
50
+ "type": "uint32"
51
+ },
52
+ {
53
+ "internalType": "uint64",
54
+ "name": "lzReceiveBaseGas",
55
+ "type": "uint64"
56
+ },
57
+ {
58
+ "internalType": "uint64",
59
+ "name": "lzComposeBaseGas",
60
+ "type": "uint64"
61
+ },
62
+ {
63
+ "internalType": "uint16",
64
+ "name": "multiplierBps",
65
+ "type": "uint16"
66
+ },
67
+ {
68
+ "internalType": "uint128",
69
+ "name": "floorMarginUSD",
70
+ "type": "uint128"
71
+ },
72
+ {
73
+ "internalType": "uint128",
74
+ "name": "nativeCap",
75
+ "type": "uint128"
76
+ }
77
+ ],
78
+ "indexed": false,
79
+ "internalType": "struct IExecutor.DstConfigParam[]",
80
+ "name": "params",
81
+ "type": "tuple[]"
82
+ }
83
+ ],
84
+ "name": "DstConfigSet",
85
+ "type": "event"
86
+ },
87
+ {
88
+ "anonymous": false,
89
+ "inputs": [
90
+ {
91
+ "indexed": false,
92
+ "internalType": "uint8",
93
+ "name": "version",
94
+ "type": "uint8"
95
+ }
96
+ ],
97
+ "name": "Initialized",
98
+ "type": "event"
99
+ },
100
+ {
101
+ "anonymous": false,
102
+ "inputs": [
103
+ {
104
+ "components": [
105
+ {
106
+ "internalType": "uint32",
107
+ "name": "srcEid",
108
+ "type": "uint32"
109
+ },
110
+ {
111
+ "internalType": "bytes32",
112
+ "name": "sender",
113
+ "type": "bytes32"
114
+ },
115
+ {
116
+ "internalType": "uint64",
117
+ "name": "nonce",
118
+ "type": "uint64"
119
+ }
120
+ ],
121
+ "indexed": false,
122
+ "internalType": "struct Origin",
123
+ "name": "origin",
124
+ "type": "tuple"
125
+ },
126
+ {
127
+ "indexed": false,
128
+ "internalType": "uint32",
129
+ "name": "dstEid",
130
+ "type": "uint32"
131
+ },
132
+ {
133
+ "indexed": false,
134
+ "internalType": "address",
135
+ "name": "oapp",
136
+ "type": "address"
137
+ },
138
+ {
139
+ "components": [
140
+ {
141
+ "internalType": "address",
142
+ "name": "receiver",
143
+ "type": "address"
144
+ },
145
+ {
146
+ "internalType": "uint256",
147
+ "name": "amount",
148
+ "type": "uint256"
149
+ }
150
+ ],
151
+ "indexed": false,
152
+ "internalType": "struct IExecutor.NativeDropParams[]",
153
+ "name": "params",
154
+ "type": "tuple[]"
155
+ },
156
+ {
157
+ "indexed": false,
158
+ "internalType": "bool[]",
159
+ "name": "success",
160
+ "type": "bool[]"
161
+ }
162
+ ],
163
+ "name": "NativeDropApplied",
164
+ "type": "event"
165
+ },
166
+ {
167
+ "anonymous": false,
168
+ "inputs": [
169
+ {
170
+ "indexed": false,
171
+ "internalType": "address",
172
+ "name": "account",
173
+ "type": "address"
174
+ }
175
+ ],
176
+ "name": "Paused",
177
+ "type": "event"
178
+ },
179
+ {
180
+ "anonymous": false,
181
+ "inputs": [
182
+ {
183
+ "indexed": true,
184
+ "internalType": "address",
185
+ "name": "sender",
186
+ "type": "address"
187
+ },
188
+ {
189
+ "indexed": false,
190
+ "internalType": "bool",
191
+ "name": "whitelisted",
192
+ "type": "bool"
193
+ }
194
+ ],
195
+ "name": "PriceFloorWhitelistSet",
196
+ "type": "event"
197
+ },
198
+ {
199
+ "anonymous": false,
200
+ "inputs": [
201
+ {
202
+ "indexed": false,
203
+ "internalType": "address",
204
+ "name": "receiveUln301",
205
+ "type": "address"
206
+ }
207
+ ],
208
+ "name": "ReceiveUln301Set",
209
+ "type": "event"
210
+ },
211
+ {
212
+ "anonymous": false,
213
+ "inputs": [
214
+ {
215
+ "indexed": true,
216
+ "internalType": "bytes32",
217
+ "name": "role",
218
+ "type": "bytes32"
219
+ },
220
+ {
221
+ "indexed": true,
222
+ "internalType": "bytes32",
223
+ "name": "previousAdminRole",
224
+ "type": "bytes32"
225
+ },
226
+ {
227
+ "indexed": true,
228
+ "internalType": "bytes32",
229
+ "name": "newAdminRole",
230
+ "type": "bytes32"
231
+ }
232
+ ],
233
+ "name": "RoleAdminChanged",
234
+ "type": "event"
235
+ },
236
+ {
237
+ "anonymous": false,
238
+ "inputs": [
239
+ {
240
+ "indexed": true,
241
+ "internalType": "bytes32",
242
+ "name": "role",
243
+ "type": "bytes32"
244
+ },
245
+ {
246
+ "indexed": true,
247
+ "internalType": "address",
248
+ "name": "account",
249
+ "type": "address"
250
+ },
251
+ {
252
+ "indexed": true,
253
+ "internalType": "address",
254
+ "name": "sender",
255
+ "type": "address"
256
+ }
257
+ ],
258
+ "name": "RoleGranted",
259
+ "type": "event"
260
+ },
261
+ {
262
+ "anonymous": false,
263
+ "inputs": [
264
+ {
265
+ "indexed": true,
266
+ "internalType": "bytes32",
267
+ "name": "role",
268
+ "type": "bytes32"
269
+ },
270
+ {
271
+ "indexed": true,
272
+ "internalType": "address",
273
+ "name": "account",
274
+ "type": "address"
275
+ },
276
+ {
277
+ "indexed": true,
278
+ "internalType": "address",
279
+ "name": "sender",
280
+ "type": "address"
281
+ }
282
+ ],
283
+ "name": "RoleRevoked",
284
+ "type": "event"
285
+ },
286
+ {
287
+ "anonymous": false,
288
+ "inputs": [
289
+ {
290
+ "indexed": false,
291
+ "internalType": "uint16",
292
+ "name": "multiplierBps",
293
+ "type": "uint16"
294
+ }
295
+ ],
296
+ "name": "SetDefaultMultiplierBps",
297
+ "type": "event"
298
+ },
299
+ {
300
+ "anonymous": false,
301
+ "inputs": [
302
+ {
303
+ "indexed": false,
304
+ "internalType": "address",
305
+ "name": "priceFeed",
306
+ "type": "address"
307
+ }
308
+ ],
309
+ "name": "SetPriceFeed",
310
+ "type": "event"
311
+ },
312
+ {
313
+ "anonymous": false,
314
+ "inputs": [
315
+ {
316
+ "indexed": false,
317
+ "internalType": "uint32",
318
+ "name": "dstEid",
319
+ "type": "uint32"
320
+ },
321
+ {
322
+ "indexed": false,
323
+ "internalType": "uint8[]",
324
+ "name": "optionTypes",
325
+ "type": "uint8[]"
326
+ }
327
+ ],
328
+ "name": "SetSupportedOptionTypes",
329
+ "type": "event"
330
+ },
331
+ {
332
+ "anonymous": false,
333
+ "inputs": [
334
+ {
335
+ "indexed": false,
336
+ "internalType": "address",
337
+ "name": "workerLib",
338
+ "type": "address"
339
+ }
340
+ ],
341
+ "name": "SetWorkerLib",
342
+ "type": "event"
343
+ },
344
+ {
345
+ "anonymous": false,
346
+ "inputs": [
347
+ {
348
+ "indexed": false,
349
+ "internalType": "address",
350
+ "name": "account",
351
+ "type": "address"
352
+ }
353
+ ],
354
+ "name": "Unpaused",
355
+ "type": "event"
356
+ },
357
+ {
358
+ "anonymous": false,
359
+ "inputs": [
360
+ {
361
+ "indexed": false,
362
+ "internalType": "address",
363
+ "name": "lib",
364
+ "type": "address"
365
+ },
366
+ {
367
+ "indexed": false,
368
+ "internalType": "address",
369
+ "name": "to",
370
+ "type": "address"
371
+ },
372
+ {
373
+ "indexed": false,
374
+ "internalType": "uint256",
375
+ "name": "amount",
376
+ "type": "uint256"
377
+ }
378
+ ],
379
+ "name": "Withdraw",
380
+ "type": "event"
381
+ },
382
+ {
383
+ "inputs": [],
384
+ "name": "DEFAULT_ADMIN_ROLE",
385
+ "outputs": [
386
+ {
387
+ "internalType": "bytes32",
388
+ "name": "",
389
+ "type": "bytes32"
390
+ }
391
+ ],
392
+ "stateMutability": "view",
393
+ "type": "function"
394
+ },
395
+ {
396
+ "inputs": [],
397
+ "name": "allowlistSize",
398
+ "outputs": [
399
+ {
400
+ "internalType": "uint64",
401
+ "name": "",
402
+ "type": "uint64"
403
+ }
404
+ ],
405
+ "stateMutability": "view",
406
+ "type": "function"
407
+ },
408
+ {
409
+ "inputs": [
410
+ {
411
+ "internalType": "uint32",
412
+ "name": "_dstEid",
413
+ "type": "uint32"
414
+ },
415
+ {
416
+ "internalType": "address",
417
+ "name": "_sender",
418
+ "type": "address"
419
+ },
420
+ {
421
+ "internalType": "uint256",
422
+ "name": "_calldataSize",
423
+ "type": "uint256"
424
+ },
425
+ {
426
+ "internalType": "bytes",
427
+ "name": "_options",
428
+ "type": "bytes"
429
+ }
430
+ ],
431
+ "name": "assignJob",
432
+ "outputs": [
433
+ {
434
+ "internalType": "uint256",
435
+ "name": "fee",
436
+ "type": "uint256"
437
+ }
438
+ ],
439
+ "stateMutability": "nonpayable",
440
+ "type": "function"
441
+ },
442
+ {
443
+ "inputs": [
444
+ {
445
+ "internalType": "address",
446
+ "name": "_sender",
447
+ "type": "address"
448
+ },
449
+ {
450
+ "internalType": "bytes",
451
+ "name": "_options",
452
+ "type": "bytes"
453
+ }
454
+ ],
455
+ "name": "assignJob",
456
+ "outputs": [
457
+ {
458
+ "internalType": "uint256",
459
+ "name": "fee",
460
+ "type": "uint256"
461
+ }
462
+ ],
463
+ "stateMutability": "nonpayable",
464
+ "type": "function"
465
+ },
466
+ {
467
+ "inputs": [
468
+ {
469
+ "internalType": "address",
470
+ "name": "_from",
471
+ "type": "address"
472
+ },
473
+ {
474
+ "internalType": "address",
475
+ "name": "_to",
476
+ "type": "address"
477
+ },
478
+ {
479
+ "internalType": "bytes32",
480
+ "name": "_guid",
481
+ "type": "bytes32"
482
+ },
483
+ {
484
+ "internalType": "uint16",
485
+ "name": "_index",
486
+ "type": "uint16"
487
+ },
488
+ {
489
+ "internalType": "bytes",
490
+ "name": "_message",
491
+ "type": "bytes"
492
+ },
493
+ {
494
+ "internalType": "bytes",
495
+ "name": "_extraData",
496
+ "type": "bytes"
497
+ },
498
+ {
499
+ "internalType": "uint256",
500
+ "name": "_gasLimit",
501
+ "type": "uint256"
502
+ }
503
+ ],
504
+ "name": "compose302",
505
+ "outputs": [],
506
+ "stateMutability": "payable",
507
+ "type": "function"
508
+ },
509
+ {
510
+ "inputs": [],
511
+ "name": "defaultMultiplierBps",
512
+ "outputs": [
513
+ {
514
+ "internalType": "uint16",
515
+ "name": "",
516
+ "type": "uint16"
517
+ }
518
+ ],
519
+ "stateMutability": "view",
520
+ "type": "function"
521
+ },
522
+ {
523
+ "inputs": [
524
+ {
525
+ "internalType": "uint32",
526
+ "name": "dstEid",
527
+ "type": "uint32"
528
+ }
529
+ ],
530
+ "name": "dstConfig",
531
+ "outputs": [
532
+ {
533
+ "internalType": "uint64",
534
+ "name": "lzReceiveBaseGas",
535
+ "type": "uint64"
536
+ },
537
+ {
538
+ "internalType": "uint16",
539
+ "name": "multiplierBps",
540
+ "type": "uint16"
541
+ },
542
+ {
543
+ "internalType": "uint128",
544
+ "name": "floorMarginUSD",
545
+ "type": "uint128"
546
+ },
547
+ {
548
+ "internalType": "uint128",
549
+ "name": "nativeCap",
550
+ "type": "uint128"
551
+ },
552
+ {
553
+ "internalType": "uint64",
554
+ "name": "lzComposeBaseGas",
555
+ "type": "uint64"
556
+ }
557
+ ],
558
+ "stateMutability": "view",
559
+ "type": "function"
560
+ },
561
+ {
562
+ "inputs": [],
563
+ "name": "endpoint",
564
+ "outputs": [
565
+ {
566
+ "internalType": "address",
567
+ "name": "",
568
+ "type": "address"
569
+ }
570
+ ],
571
+ "stateMutability": "view",
572
+ "type": "function"
573
+ },
574
+ {
575
+ "inputs": [
576
+ {
577
+ "internalType": "bytes",
578
+ "name": "_packet",
579
+ "type": "bytes"
580
+ },
581
+ {
582
+ "internalType": "uint256",
583
+ "name": "_gasLimit",
584
+ "type": "uint256"
585
+ }
586
+ ],
587
+ "name": "execute301",
588
+ "outputs": [],
589
+ "stateMutability": "nonpayable",
590
+ "type": "function"
591
+ },
592
+ {
593
+ "inputs": [
594
+ {
595
+ "components": [
596
+ {
597
+ "internalType": "address",
598
+ "name": "receiver",
599
+ "type": "address"
600
+ },
601
+ {
602
+ "components": [
603
+ {
604
+ "internalType": "uint32",
605
+ "name": "srcEid",
606
+ "type": "uint32"
607
+ },
608
+ {
609
+ "internalType": "bytes32",
610
+ "name": "sender",
611
+ "type": "bytes32"
612
+ },
613
+ {
614
+ "internalType": "uint64",
615
+ "name": "nonce",
616
+ "type": "uint64"
617
+ }
618
+ ],
619
+ "internalType": "struct Origin",
620
+ "name": "origin",
621
+ "type": "tuple"
622
+ },
623
+ {
624
+ "internalType": "bytes32",
625
+ "name": "guid",
626
+ "type": "bytes32"
627
+ },
628
+ {
629
+ "internalType": "bytes",
630
+ "name": "message",
631
+ "type": "bytes"
632
+ },
633
+ {
634
+ "internalType": "bytes",
635
+ "name": "extraData",
636
+ "type": "bytes"
637
+ },
638
+ {
639
+ "internalType": "uint256",
640
+ "name": "gasLimit",
641
+ "type": "uint256"
642
+ }
643
+ ],
644
+ "internalType": "struct IExecutor.ExecutionParams",
645
+ "name": "_executionParams",
646
+ "type": "tuple"
647
+ }
648
+ ],
649
+ "name": "execute302",
650
+ "outputs": [],
651
+ "stateMutability": "payable",
652
+ "type": "function"
653
+ },
654
+ {
655
+ "inputs": [
656
+ {
657
+ "internalType": "uint32",
658
+ "name": "_dstEid",
659
+ "type": "uint32"
660
+ },
661
+ {
662
+ "internalType": "address",
663
+ "name": "_sender",
664
+ "type": "address"
665
+ },
666
+ {
667
+ "internalType": "uint256",
668
+ "name": "_calldataSize",
669
+ "type": "uint256"
670
+ },
671
+ {
672
+ "internalType": "bytes",
673
+ "name": "_options",
674
+ "type": "bytes"
675
+ }
676
+ ],
677
+ "name": "getFee",
678
+ "outputs": [
679
+ {
680
+ "internalType": "uint256",
681
+ "name": "fee",
682
+ "type": "uint256"
683
+ }
684
+ ],
685
+ "stateMutability": "view",
686
+ "type": "function"
687
+ },
688
+ {
689
+ "inputs": [
690
+ {
691
+ "internalType": "address",
692
+ "name": "_sender",
693
+ "type": "address"
694
+ },
695
+ {
696
+ "internalType": "bytes",
697
+ "name": "_options",
698
+ "type": "bytes"
699
+ }
700
+ ],
701
+ "name": "getFee",
702
+ "outputs": [
703
+ {
704
+ "internalType": "uint256",
705
+ "name": "fee",
706
+ "type": "uint256"
707
+ }
708
+ ],
709
+ "stateMutability": "view",
710
+ "type": "function"
711
+ },
712
+ {
713
+ "inputs": [
714
+ {
715
+ "internalType": "bytes32",
716
+ "name": "role",
717
+ "type": "bytes32"
718
+ }
719
+ ],
720
+ "name": "getRoleAdmin",
721
+ "outputs": [
722
+ {
723
+ "internalType": "bytes32",
724
+ "name": "",
725
+ "type": "bytes32"
726
+ }
727
+ ],
728
+ "stateMutability": "view",
729
+ "type": "function"
730
+ },
731
+ {
732
+ "inputs": [
733
+ {
734
+ "internalType": "uint32",
735
+ "name": "_eid",
736
+ "type": "uint32"
737
+ }
738
+ ],
739
+ "name": "getSupportedOptionTypes",
740
+ "outputs": [
741
+ {
742
+ "internalType": "uint8[]",
743
+ "name": "",
744
+ "type": "uint8[]"
745
+ }
746
+ ],
747
+ "stateMutability": "view",
748
+ "type": "function"
749
+ },
750
+ {
751
+ "inputs": [
752
+ {
753
+ "internalType": "bytes32",
754
+ "name": "role",
755
+ "type": "bytes32"
756
+ },
757
+ {
758
+ "internalType": "address",
759
+ "name": "account",
760
+ "type": "address"
761
+ }
762
+ ],
763
+ "name": "grantRole",
764
+ "outputs": [],
765
+ "stateMutability": "nonpayable",
766
+ "type": "function"
767
+ },
768
+ {
769
+ "inputs": [
770
+ {
771
+ "internalType": "address",
772
+ "name": "_sender",
773
+ "type": "address"
774
+ }
775
+ ],
776
+ "name": "hasAcl",
777
+ "outputs": [
778
+ {
779
+ "internalType": "bool",
780
+ "name": "",
781
+ "type": "bool"
782
+ }
783
+ ],
784
+ "stateMutability": "view",
785
+ "type": "function"
786
+ },
787
+ {
788
+ "inputs": [
789
+ {
790
+ "internalType": "bytes32",
791
+ "name": "role",
792
+ "type": "bytes32"
793
+ },
794
+ {
795
+ "internalType": "address",
796
+ "name": "account",
797
+ "type": "address"
798
+ }
799
+ ],
800
+ "name": "hasRole",
801
+ "outputs": [
802
+ {
803
+ "internalType": "bool",
804
+ "name": "",
805
+ "type": "bool"
806
+ }
807
+ ],
808
+ "stateMutability": "view",
809
+ "type": "function"
810
+ },
811
+ {
812
+ "inputs": [
813
+ {
814
+ "internalType": "address",
815
+ "name": "_endpoint",
816
+ "type": "address"
817
+ },
818
+ {
819
+ "internalType": "address",
820
+ "name": "_receiveUln301",
821
+ "type": "address"
822
+ },
823
+ {
824
+ "internalType": "address[]",
825
+ "name": "_messageLibs",
826
+ "type": "address[]"
827
+ },
828
+ {
829
+ "internalType": "address",
830
+ "name": "_priceFeed",
831
+ "type": "address"
832
+ },
833
+ {
834
+ "internalType": "address",
835
+ "name": "_roleAdmin",
836
+ "type": "address"
837
+ },
838
+ {
839
+ "internalType": "address[]",
840
+ "name": "_admins",
841
+ "type": "address[]"
842
+ }
843
+ ],
844
+ "name": "initialize",
845
+ "outputs": [],
846
+ "stateMutability": "nonpayable",
847
+ "type": "function"
848
+ },
849
+ {
850
+ "inputs": [],
851
+ "name": "localEidV2",
852
+ "outputs": [
853
+ {
854
+ "internalType": "uint32",
855
+ "name": "",
856
+ "type": "uint32"
857
+ }
858
+ ],
859
+ "stateMutability": "view",
860
+ "type": "function"
861
+ },
862
+ {
863
+ "inputs": [
864
+ {
865
+ "components": [
866
+ {
867
+ "internalType": "uint32",
868
+ "name": "srcEid",
869
+ "type": "uint32"
870
+ },
871
+ {
872
+ "internalType": "bytes32",
873
+ "name": "sender",
874
+ "type": "bytes32"
875
+ },
876
+ {
877
+ "internalType": "uint64",
878
+ "name": "nonce",
879
+ "type": "uint64"
880
+ }
881
+ ],
882
+ "internalType": "struct Origin",
883
+ "name": "_origin",
884
+ "type": "tuple"
885
+ },
886
+ {
887
+ "internalType": "uint32",
888
+ "name": "_dstEid",
889
+ "type": "uint32"
890
+ },
891
+ {
892
+ "internalType": "address",
893
+ "name": "_oapp",
894
+ "type": "address"
895
+ },
896
+ {
897
+ "components": [
898
+ {
899
+ "internalType": "address",
900
+ "name": "receiver",
901
+ "type": "address"
902
+ },
903
+ {
904
+ "internalType": "uint256",
905
+ "name": "amount",
906
+ "type": "uint256"
907
+ }
908
+ ],
909
+ "internalType": "struct IExecutor.NativeDropParams[]",
910
+ "name": "_nativeDropParams",
911
+ "type": "tuple[]"
912
+ },
913
+ {
914
+ "internalType": "uint256",
915
+ "name": "_nativeDropGasLimit",
916
+ "type": "uint256"
917
+ }
918
+ ],
919
+ "name": "nativeDrop",
920
+ "outputs": [],
921
+ "stateMutability": "payable",
922
+ "type": "function"
923
+ },
924
+ {
925
+ "inputs": [
926
+ {
927
+ "components": [
928
+ {
929
+ "internalType": "uint32",
930
+ "name": "srcEid",
931
+ "type": "uint32"
932
+ },
933
+ {
934
+ "internalType": "bytes32",
935
+ "name": "sender",
936
+ "type": "bytes32"
937
+ },
938
+ {
939
+ "internalType": "uint64",
940
+ "name": "nonce",
941
+ "type": "uint64"
942
+ }
943
+ ],
944
+ "internalType": "struct Origin",
945
+ "name": "_origin",
946
+ "type": "tuple"
947
+ },
948
+ {
949
+ "components": [
950
+ {
951
+ "internalType": "address",
952
+ "name": "receiver",
953
+ "type": "address"
954
+ },
955
+ {
956
+ "internalType": "uint256",
957
+ "name": "amount",
958
+ "type": "uint256"
959
+ }
960
+ ],
961
+ "internalType": "struct IExecutor.NativeDropParams[]",
962
+ "name": "_nativeDropParams",
963
+ "type": "tuple[]"
964
+ },
965
+ {
966
+ "internalType": "uint256",
967
+ "name": "_nativeDropGasLimit",
968
+ "type": "uint256"
969
+ },
970
+ {
971
+ "internalType": "bytes",
972
+ "name": "_packet",
973
+ "type": "bytes"
974
+ },
975
+ {
976
+ "internalType": "uint256",
977
+ "name": "_gasLimit",
978
+ "type": "uint256"
979
+ }
980
+ ],
981
+ "name": "nativeDropAndExecute301",
982
+ "outputs": [],
983
+ "stateMutability": "payable",
984
+ "type": "function"
985
+ },
986
+ {
987
+ "inputs": [
988
+ {
989
+ "components": [
990
+ {
991
+ "internalType": "address",
992
+ "name": "receiver",
993
+ "type": "address"
994
+ },
995
+ {
996
+ "internalType": "uint256",
997
+ "name": "amount",
998
+ "type": "uint256"
999
+ }
1000
+ ],
1001
+ "internalType": "struct IExecutor.NativeDropParams[]",
1002
+ "name": "_nativeDropParams",
1003
+ "type": "tuple[]"
1004
+ },
1005
+ {
1006
+ "internalType": "uint256",
1007
+ "name": "_nativeDropGasLimit",
1008
+ "type": "uint256"
1009
+ },
1010
+ {
1011
+ "components": [
1012
+ {
1013
+ "internalType": "address",
1014
+ "name": "receiver",
1015
+ "type": "address"
1016
+ },
1017
+ {
1018
+ "components": [
1019
+ {
1020
+ "internalType": "uint32",
1021
+ "name": "srcEid",
1022
+ "type": "uint32"
1023
+ },
1024
+ {
1025
+ "internalType": "bytes32",
1026
+ "name": "sender",
1027
+ "type": "bytes32"
1028
+ },
1029
+ {
1030
+ "internalType": "uint64",
1031
+ "name": "nonce",
1032
+ "type": "uint64"
1033
+ }
1034
+ ],
1035
+ "internalType": "struct Origin",
1036
+ "name": "origin",
1037
+ "type": "tuple"
1038
+ },
1039
+ {
1040
+ "internalType": "bytes32",
1041
+ "name": "guid",
1042
+ "type": "bytes32"
1043
+ },
1044
+ {
1045
+ "internalType": "bytes",
1046
+ "name": "message",
1047
+ "type": "bytes"
1048
+ },
1049
+ {
1050
+ "internalType": "bytes",
1051
+ "name": "extraData",
1052
+ "type": "bytes"
1053
+ },
1054
+ {
1055
+ "internalType": "uint256",
1056
+ "name": "gasLimit",
1057
+ "type": "uint256"
1058
+ }
1059
+ ],
1060
+ "internalType": "struct IExecutor.ExecutionParams",
1061
+ "name": "_executionParams",
1062
+ "type": "tuple"
1063
+ }
1064
+ ],
1065
+ "name": "nativeDropAndExecute302",
1066
+ "outputs": [],
1067
+ "stateMutability": "payable",
1068
+ "type": "function"
1069
+ },
1070
+ {
1071
+ "inputs": [
1072
+ {
1073
+ "internalType": "address",
1074
+ "name": "_receiveUln301",
1075
+ "type": "address"
1076
+ }
1077
+ ],
1078
+ "name": "onUpgrade",
1079
+ "outputs": [],
1080
+ "stateMutability": "nonpayable",
1081
+ "type": "function"
1082
+ },
1083
+ {
1084
+ "inputs": [],
1085
+ "name": "paused",
1086
+ "outputs": [
1087
+ {
1088
+ "internalType": "bool",
1089
+ "name": "",
1090
+ "type": "bool"
1091
+ }
1092
+ ],
1093
+ "stateMutability": "view",
1094
+ "type": "function"
1095
+ },
1096
+ {
1097
+ "inputs": [],
1098
+ "name": "priceFeed",
1099
+ "outputs": [
1100
+ {
1101
+ "internalType": "address",
1102
+ "name": "",
1103
+ "type": "address"
1104
+ }
1105
+ ],
1106
+ "stateMutability": "view",
1107
+ "type": "function"
1108
+ },
1109
+ {
1110
+ "inputs": [
1111
+ {
1112
+ "internalType": "address",
1113
+ "name": "sender",
1114
+ "type": "address"
1115
+ }
1116
+ ],
1117
+ "name": "priceFloorWhitelist",
1118
+ "outputs": [
1119
+ {
1120
+ "internalType": "bool",
1121
+ "name": "whitelisted",
1122
+ "type": "bool"
1123
+ }
1124
+ ],
1125
+ "stateMutability": "view",
1126
+ "type": "function"
1127
+ },
1128
+ {
1129
+ "inputs": [],
1130
+ "name": "receiveUln301",
1131
+ "outputs": [
1132
+ {
1133
+ "internalType": "address",
1134
+ "name": "",
1135
+ "type": "address"
1136
+ }
1137
+ ],
1138
+ "stateMutability": "view",
1139
+ "type": "function"
1140
+ },
1141
+ {
1142
+ "inputs": [
1143
+ {
1144
+ "internalType": "bytes32",
1145
+ "name": "",
1146
+ "type": "bytes32"
1147
+ },
1148
+ {
1149
+ "internalType": "address",
1150
+ "name": "",
1151
+ "type": "address"
1152
+ }
1153
+ ],
1154
+ "name": "renounceRole",
1155
+ "outputs": [],
1156
+ "stateMutability": "pure",
1157
+ "type": "function"
1158
+ },
1159
+ {
1160
+ "inputs": [
1161
+ {
1162
+ "internalType": "bytes32",
1163
+ "name": "role",
1164
+ "type": "bytes32"
1165
+ },
1166
+ {
1167
+ "internalType": "address",
1168
+ "name": "account",
1169
+ "type": "address"
1170
+ }
1171
+ ],
1172
+ "name": "revokeRole",
1173
+ "outputs": [],
1174
+ "stateMutability": "nonpayable",
1175
+ "type": "function"
1176
+ },
1177
+ {
1178
+ "inputs": [
1179
+ {
1180
+ "internalType": "uint16",
1181
+ "name": "_multiplierBps",
1182
+ "type": "uint16"
1183
+ }
1184
+ ],
1185
+ "name": "setDefaultMultiplierBps",
1186
+ "outputs": [],
1187
+ "stateMutability": "nonpayable",
1188
+ "type": "function"
1189
+ },
1190
+ {
1191
+ "inputs": [
1192
+ {
1193
+ "components": [
1194
+ {
1195
+ "internalType": "uint32",
1196
+ "name": "dstEid",
1197
+ "type": "uint32"
1198
+ },
1199
+ {
1200
+ "internalType": "uint64",
1201
+ "name": "lzReceiveBaseGas",
1202
+ "type": "uint64"
1203
+ },
1204
+ {
1205
+ "internalType": "uint64",
1206
+ "name": "lzComposeBaseGas",
1207
+ "type": "uint64"
1208
+ },
1209
+ {
1210
+ "internalType": "uint16",
1211
+ "name": "multiplierBps",
1212
+ "type": "uint16"
1213
+ },
1214
+ {
1215
+ "internalType": "uint128",
1216
+ "name": "floorMarginUSD",
1217
+ "type": "uint128"
1218
+ },
1219
+ {
1220
+ "internalType": "uint128",
1221
+ "name": "nativeCap",
1222
+ "type": "uint128"
1223
+ }
1224
+ ],
1225
+ "internalType": "struct IExecutor.DstConfigParam[]",
1226
+ "name": "_params",
1227
+ "type": "tuple[]"
1228
+ }
1229
+ ],
1230
+ "name": "setDstConfig",
1231
+ "outputs": [],
1232
+ "stateMutability": "nonpayable",
1233
+ "type": "function"
1234
+ },
1235
+ {
1236
+ "inputs": [
1237
+ {
1238
+ "internalType": "bool",
1239
+ "name": "_paused",
1240
+ "type": "bool"
1241
+ }
1242
+ ],
1243
+ "name": "setPaused",
1244
+ "outputs": [],
1245
+ "stateMutability": "nonpayable",
1246
+ "type": "function"
1247
+ },
1248
+ {
1249
+ "inputs": [
1250
+ {
1251
+ "internalType": "address",
1252
+ "name": "_priceFeed",
1253
+ "type": "address"
1254
+ }
1255
+ ],
1256
+ "name": "setPriceFeed",
1257
+ "outputs": [],
1258
+ "stateMutability": "nonpayable",
1259
+ "type": "function"
1260
+ },
1261
+ {
1262
+ "inputs": [
1263
+ {
1264
+ "components": [
1265
+ {
1266
+ "internalType": "address",
1267
+ "name": "sender",
1268
+ "type": "address"
1269
+ },
1270
+ {
1271
+ "internalType": "bool",
1272
+ "name": "whitelisted",
1273
+ "type": "bool"
1274
+ }
1275
+ ],
1276
+ "internalType": "struct Executor.SetPriceFloorWhitelistParam[]",
1277
+ "name": "_params",
1278
+ "type": "tuple[]"
1279
+ }
1280
+ ],
1281
+ "name": "setPriceFloorWhitelist",
1282
+ "outputs": [],
1283
+ "stateMutability": "nonpayable",
1284
+ "type": "function"
1285
+ },
1286
+ {
1287
+ "inputs": [
1288
+ {
1289
+ "internalType": "address",
1290
+ "name": "_receiveUln301",
1291
+ "type": "address"
1292
+ }
1293
+ ],
1294
+ "name": "setReceiveUln301",
1295
+ "outputs": [],
1296
+ "stateMutability": "nonpayable",
1297
+ "type": "function"
1298
+ },
1299
+ {
1300
+ "inputs": [
1301
+ {
1302
+ "internalType": "uint32",
1303
+ "name": "_eid",
1304
+ "type": "uint32"
1305
+ },
1306
+ {
1307
+ "internalType": "uint8[]",
1308
+ "name": "_optionTypes",
1309
+ "type": "uint8[]"
1310
+ }
1311
+ ],
1312
+ "name": "setSupportedOptionTypes",
1313
+ "outputs": [],
1314
+ "stateMutability": "nonpayable",
1315
+ "type": "function"
1316
+ },
1317
+ {
1318
+ "inputs": [
1319
+ {
1320
+ "internalType": "address",
1321
+ "name": "_workerFeeLib",
1322
+ "type": "address"
1323
+ }
1324
+ ],
1325
+ "name": "setWorkerFeeLib",
1326
+ "outputs": [],
1327
+ "stateMutability": "nonpayable",
1328
+ "type": "function"
1329
+ },
1330
+ {
1331
+ "inputs": [
1332
+ {
1333
+ "internalType": "bytes4",
1334
+ "name": "interfaceId",
1335
+ "type": "bytes4"
1336
+ }
1337
+ ],
1338
+ "name": "supportsInterface",
1339
+ "outputs": [
1340
+ {
1341
+ "internalType": "bool",
1342
+ "name": "",
1343
+ "type": "bool"
1344
+ }
1345
+ ],
1346
+ "stateMutability": "view",
1347
+ "type": "function"
1348
+ },
1349
+ {
1350
+ "inputs": [
1351
+ {
1352
+ "internalType": "address",
1353
+ "name": "_lib",
1354
+ "type": "address"
1355
+ },
1356
+ {
1357
+ "internalType": "address",
1358
+ "name": "_to",
1359
+ "type": "address"
1360
+ },
1361
+ {
1362
+ "internalType": "uint256",
1363
+ "name": "_amount",
1364
+ "type": "uint256"
1365
+ }
1366
+ ],
1367
+ "name": "withdrawFee",
1368
+ "outputs": [],
1369
+ "stateMutability": "nonpayable",
1370
+ "type": "function"
1371
+ },
1372
+ {
1373
+ "inputs": [
1374
+ {
1375
+ "internalType": "address",
1376
+ "name": "_token",
1377
+ "type": "address"
1378
+ },
1379
+ {
1380
+ "internalType": "address",
1381
+ "name": "_to",
1382
+ "type": "address"
1383
+ },
1384
+ {
1385
+ "internalType": "uint256",
1386
+ "name": "_amount",
1387
+ "type": "uint256"
1388
+ }
1389
+ ],
1390
+ "name": "withdrawToken",
1391
+ "outputs": [],
1392
+ "stateMutability": "nonpayable",
1393
+ "type": "function"
1394
+ },
1395
+ {
1396
+ "inputs": [],
1397
+ "name": "workerFeeLib",
1398
+ "outputs": [
1399
+ {
1400
+ "internalType": "address",
1401
+ "name": "",
1402
+ "type": "address"
1403
+ }
1404
+ ],
1405
+ "stateMutability": "view",
1406
+ "type": "function"
1407
+ }
1408
+ ],
1409
+ "bytecode": "0x608060405234801561001057600080fd5b50614fbd806100206000396000f3fe6080604052600436106102c45760003560e01c8063709eb66411610179578063c2803b2c116100d6578063cd88b9031161008a578063d547741f11610064578063d547741f14610933578063e395eb5c14610953578063fa34c84e1461099e57600080fd5b8063cd88b903146108ae578063cfc32570146108ce578063d2ae2104146108e157600080fd5b8063c416aa51116100bb578063c416aa5114610841578063c7b2370b1461086e578063c8f8dcd11461088e57600080fd5b8063c2803b2c146107f3578063c358de0a1461082157600080fd5b80638624ba071161012d5780639e944965116101125780639e944965146106e1578063a217fddf146107be578063c015bb7d146107d357600080fd5b80638624ba071461067b57806391d148541461068e57600080fd5b8063724e78da1161015e578063724e78da1461061b578063741bef1a1461063b5780637cd447341461066857600080fd5b8063709eb664146105db578063717e8a42146105fb57600080fd5b80632f2ff15d116102275780633d85ac33116101db578063475b6d9e116101c0578063475b6d9e1461055d5780635c975abb146105705780635e280f111461058857600080fd5b80633d85ac331461051d57806344bb7e281461053d57600080fd5b806336568abe1161020c57806336568abe146104b95780633927c075146104d95780633bd0db9f146104ec57600080fd5b80632f2ff15d146104795780633146646a1461049957600080fd5b80631095b6d71161027e578063248a9ca311610263578063248a9ca3146103ee57806326e67a371461042c5780632de113761461045957600080fd5b80631095b6d7146103ae57806316c38b3c146103ce57600080fd5b806301e33667116102af57806301e336671461033e57806301ffc9a71461035e57806302e723d91461038e57600080fd5b80629fc681146102c9578062bf2e80146102eb575b600080fd5b3480156102d557600080fd5b506102e96102e4366004613d63565b6109be565b005b3480156102f757600080fd5b5060c954610326907c0100000000000000000000000000000000000000000000000000000000900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b34801561034a57600080fd5b506102e9610359366004613e08565b610d5d565b34801561036a57600080fd5b5061037e610379366004613e44565b610d98565b6040519015158152602001610335565b34801561039a57600080fd5b506102e96103a9366004613e86565b610e31565b3480156103ba57600080fd5b506102e96103c9366004613e08565b610ed7565b3480156103da57600080fd5b506102e96103e9366004613eaf565b611066565b3480156103fa57600080fd5b5061041e610409366004613ecc565b60009081526065602052604090206001015490565b604051908152602001610335565b34801561043857600080fd5b5061044c610447366004613ef7565b61108b565b6040516103359190613f14565b34801561046557600080fd5b5061037e610474366004613e86565b611112565b34801561048557600080fd5b506102e9610494366004613f5b565b6111f6565b3480156104a557600080fd5b506102e96104b4366004613fd0565b611220565b3480156104c557600080fd5b506102e96104d4366004613f5b565b6112e9565b6102e96104e7366004614079565b61131b565b3480156104f857600080fd5b5061037e610507366004613e86565b6101306020526000908152604090205460ff1681565b34801561052957600080fd5b506102e9610538366004614157565b611405565b34801561054957600080fd5b506102e961055836600461425f565b6115df565b6102e961056b3660046142a1565b611718565b34801561057c57600080fd5b5060975460ff1661037e565b34801561059457600080fd5b5061012e546105b69073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610335565b3480156105e757600080fd5b5061041e6105f6366004614322565b61176c565b34801561060757600080fd5b5061041e610616366004614322565b6118a7565b34801561062757600080fd5b506102e9610636366004613e86565b611a0f565b34801561064757600080fd5b5060ca546105b69073ffffffffffffffffffffffffffffffffffffffff1681565b6102e9610676366004614393565b611aac565b6102e9610689366004614459565b611c61565b34801561069a57600080fd5b5061037e6106a9366004613f5b565b600091825260656020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b3480156106ed57600080fd5b506107716106fc366004613ef7565b61012d602052600090815260409020805460019091015467ffffffffffffffff8083169261ffff68010000000000000000820416926fffffffffffffffffffffffffffffffff6a0100000000000000000000909204821692918116917001000000000000000000000000000000009091041685565b6040805167ffffffffffffffff968716815261ffff90951660208601526fffffffffffffffffffffffffffffffff938416908501529116606083015291909116608082015260a001610335565b3480156107ca57600080fd5b5061041e600081565b3480156107df57600080fd5b5061041e6107ee3660046144cc565b611e77565b3480156107ff57600080fd5b5061012f546105b69073ffffffffffffffffffffffffffffffffffffffff1681565b34801561082d57600080fd5b506102e961083c36600461451f565b611fef565b34801561084d57600080fd5b5060c9546105b69073ffffffffffffffffffffffffffffffffffffffff1681565b34801561087a57600080fd5b506102e9610889366004613e86565b61209c565b34801561089a57600080fd5b5061041e6108a93660046144cc565b612139565b3480156108ba57600080fd5b506102e96108c936600461453a565b612284565b6102e96108dc3660046145c2565b6122ce565b3480156108ed57600080fd5b5060c95461091a9074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610335565b34801561093f57600080fd5b506102e961094e366004613f5b565b61248a565b34801561095f57600080fd5b5061012e546109899074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610335565b3480156109aa57600080fd5b506102e96109b9366004613e86565b6124af565b60006109e87fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff8116610a415773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355610a63565b3373ffffffffffffffffffffffffffffffffffffffff821614610a6357600080fd5b600054610100900460ff1615808015610a835750600054600160ff909116105b80610a9d5750303b158015610a9d575060005460ff166001145b610b2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610b8c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610b9461259d565b610ba38686612ee0878761263e565b61012e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16908117909155604080517f416ecebf000000000000000000000000000000000000000000000000000000008152905163416ecebf916004808201926020929091908290030181865afa158015610c3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5f91906145f7565b61012e80547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff939093169290920291909117905561012f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89161790558015610d5357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610d87816126fa565b610d92848484612707565b50505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610e2b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610e5b816126fa565b61012f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f2a2a4b95cee71747feecad6bcdaa0016f908444a79c1c31c1987b262ba4e6dbe906020015b60405180910390a15050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610f01816126fa565b73ffffffffffffffffffffffffffffffffffffffff841660009081527fe3a3b2721d010eec8988605a93cd7c15d969808c0e2b42f6155dc2b4fa13c081602052604090205460ff16610f7f576040517f5ee08b9700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517ffd9be52200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820184905285169063fd9be52290604401600060405180830381600087803b158015610fef57600080fd5b505af1158015611003573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff8089168252871660208201529081018590527f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9250606001905060405180910390a150505050565b6000611071816126fa565b81156110835761107f612737565b5050565b61107f6127bc565b63ffffffff8116600090815260cb602090815260409182902080548351818402810184019094528084526060939283018282801561110657602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116110d75790505b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f0f6a9529577ef7bf1cbc8fccda1cc3c881f755c7e92e34c7c4deac1fa3c1c791602052604081205460ff161561116757506000919050565b60c95474010000000000000000000000000000000000000000900467ffffffffffffffff1615806111dc575073ffffffffffffffffffffffffffffffffffffffff821660009081527f35c5067391a9036240763c1067bfa438a7b0131204a675a2fe562dd73782ce85602052604090205460ff165b156111e957506001919050565b506000919050565b919050565b600082815260656020526040902060010154611211816126fa565b61121b8383612813565b505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561124a816126fa565b6112526128da565b61012f546040517fe65106f800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063e65106f8906112ad9087908790879060040161465d565b600060405180830381600087803b1580156112c757600080fd5b505af11580156112db573d6000803e3d6000fd5b50505050610d92600160fb55565b6040517fdec9f03100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611345816126fa565b61134d6128da565b61136d8861135b8686612954565b6113658787612977565b8a8a8a612990565b5061012f546040517fe65106f800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063e65106f8906113c99087908790879060040161465d565b600060405180830381600087803b1580156113e357600080fd5b505af11580156113f7573d6000803e3d6000fd5b50505050610d53600160fb55565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561142f816126fa565b60005b82518110156115af57600083828151811061144f5761144f614681565b6020908102919091018101516040805160a080820183528385015167ffffffffffffffff908116835260608086015161ffff9081168589019081526080808901516fffffffffffffffffffffffffffffffff908116888a01908152968a01518116948801948552888a01518616918801918252985163ffffffff16600090815261012d909a5296909820945185549851945188166a0100000000000000000000027fffffffffffff00000000000000000000000000000000ffffffffffffffffffff9590921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000090991690841617979097179290921695909517825551600191820180549351909516700100000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090931693169290921717909155919091019050611432565b507fb99f6de5e22c60c178b03bfacf2daeb4b6089f5b37e0fe2c48a5d5141191fc5382604051610ecb91906146b0565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611609816126fa565b60005b82811015610d92573684848381811061162757611627614681565b90506040020190508060200160208101906116429190613eaf565b61013060006116546020850185613e86565b73ffffffffffffffffffffffffffffffffffffffff16815260208082019290925260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016921515929092179091556116b590820182613e86565b73ffffffffffffffffffffffffffffffffffffffff167ffafc7bfa3c73f8a408d873ba109b7145dc715107b809e460e7afe60d5402c6a26116fc6040840160208501613eaf565b604051901515815260200160405180910390a25060010161160c565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611742816126fa565b61174a6128da565b611758878787878787612990565b50611763600160fb55565b50505050505050565b60008461177881611112565b6117ae576040517f4ab5ebcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117b6612b05565b6040805160a08101825260ca5473ffffffffffffffffffffffffffffffffffffffff908116825263ffffffff8a166020830152888116928201929092526060810187905260c95461ffff7c0100000000000000000000000000000000000000000000000000000000820416608083015290911663434ee016826118398b8b612b72565b88886040518563ffffffff1660e01b815260040161185a9493929190614757565b602060405180830381865afa158015611877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189b9190614813565b98975050505050505050565b60007f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de6118d3816126fa565b856118dd81611112565b611913576040517f4ab5ebcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61191b612b05565b6040805160a08101825260ca5473ffffffffffffffffffffffffffffffffffffffff908116825263ffffffff8b166020830152898116928201929092526060810188905260c95461ffff7c0100000000000000000000000000000000000000000000000000000000820416608083015290911663566ef7628261199e8c8c612b72565b89896040518563ffffffff1660e01b81526004016119bf9493929190614757565b6020604051808303816000875af11580156119de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a029190614813565b9998505050505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611a39816126fa565b60ca80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527ff724a45d041687842411f2b977ef22ab8f43c8f1104f4592b42a00f9b34a643d90602001610ecb565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611ad6816126fa565b611ade6128da565b61012e546040517f91d20fa100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906391d20fa19084903490611b47908f908f908f908f908f908f908f908f9060040161482c565b6000604051808303818589803b158015611b6057600080fd5b5088f19450505050508015611b73575060015b611c4b573d808015611ba1576040519150601f19603f3d011682016040523d82523d6000602084013e611ba6565b606091505b5061012e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663697fe6b68c8c8c8c88348e8e8e8e8c6040518c63ffffffff1660e01b8152600401611c179b9a99989796959493929190614906565b600060405180830381600087803b158015611c3157600080fd5b505af1158015611c45573d6000803e3d6000fd5b50505050505b611c55600160fb55565b50505050505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611c8b816126fa565b611c936128da565b61012e54600090611cd390602085019074010000000000000000000000000000000000000000900463ffffffff16611ccb8287613e86565b898989612990565b90506000611ce182346149c8565b61012e5490915073ffffffffffffffffffffffffffffffffffffffff16630c0c389e60e08601358360208801611d17818a613e86565b60808a0135611d2960a08c018c6149db565b611d3660c08e018e6149db565b6040518a63ffffffff1660e01b8152600401611d589796959493929190614a7c565b6000604051808303818589803b158015611d7157600080fd5b5088f19450505050508015611d84575060015b611e64573d808015611db2576040519150601f19603f3d011682016040523d82523d6000602084013e611db7565b606091505b5061012e5473ffffffffffffffffffffffffffffffffffffffff16636bf73fa360208701611de58189613e86565b608089013560e08a013587611dfd60a08d018d6149db565b611e0a60c08f018f6149db565b8b6040518b63ffffffff1660e01b8152600401611e309a99989796959493929190614ae0565b600060405180830381600087803b158015611e4a57600080fd5b505af1158015611e5e573d6000803e3d6000fd5b50505050505b5050611e70600160fb55565b5050505050565b60007f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de611ea3816126fa565b84611ead81611112565b611ee3576040517f4ab5ebcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611eeb612b05565b6040805160608101825260ca5473ffffffffffffffffffffffffffffffffffffffff9081168252888116602083015260c9547c0100000000000000000000000000000000000000000000000000000000810461ffff169383019390935261012e54919216906365003784908390611f809074010000000000000000000000000000000000000000900463ffffffff168b612b72565b89896040518563ffffffff1660e01b8152600401611fa19493929190614b6c565b6020604051808303816000875af1158015611fc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe49190614813565b979650505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775612019816126fa565b60c980547fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000061ffff8516908102919091179091556040519081527f7af0ac740036ffb1c97b03697859d729e80a44ae5030543d64971c313565ab4d90602001610ecb565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756120c6816126fa565b60c980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f1399be28223800f8669b3ba5f8721d9fc16fc4e8d0bbf98378791c8c5a3015e090602001610ecb565b60008361214581611112565b61217b576040517f4ab5ebcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612183612b05565b6040805160608101825260ca5473ffffffffffffffffffffffffffffffffffffffff9081168252878116602083015260c9547c0100000000000000000000000000000000000000000000000000000000810461ffff169383019390935261012e549192169063337c7a9e9083906122189074010000000000000000000000000000000000000000900463ffffffff168a612b72565b88886040518563ffffffff1660e01b81526004016122399493929190614b6c565b602060405180830381865afa158015612256573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227a9190614813565b9695505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756122ae816126fa565b63ffffffff8416600090815260cb60205260409020611e70908484613b40565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756122f8816126fa565b6123006128da565b61012e5473ffffffffffffffffffffffffffffffffffffffff16630c0c389e60e084013534602086016123338188613e86565b608088013561234560a08a018a6149db565b61235260c08c018c6149db565b6040518a63ffffffff1660e01b81526004016123749796959493929190614a7c565b6000604051808303818589803b15801561238d57600080fd5b5088f194505050505080156123a0575060015b612480573d8080156123ce576040519150601f19603f3d011682016040523d82523d6000602084013e6123d3565b606091505b5061012e5473ffffffffffffffffffffffffffffffffffffffff16636bf73fa3602085016124018187613e86565b608087013560e08801353461241960a08b018b6149db565b61242660c08d018d6149db565b8b6040518b63ffffffff1660e01b815260040161244c9a99989796959493929190614ae0565b600060405180830381600087803b15801561246657600080fd5b505af115801561247a573d6000803e3d6000fd5b50505050505b61107f600160fb55565b6000828152606560205260409020600101546124a5816126fa565b61121b8383612c6b565b60006124d97fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff81166125325773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355612554565b3373ffffffffffffffffffffffffffffffffffffffff82161461255457600080fd5b5061012f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600054610100900460ff16612634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b25565b61263c612d31565b565b600054610100900460ff166126d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b25565b6126dd612dc8565b6126e5612dc8565b6126ed612e5f565b611e708585858585612f20565b6127048133613105565b50565b73ffffffffffffffffffffffffffffffffffffffff831661272c5761121b82826131bf565b61121b8383836132c5565b61273f612b05565b609780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586127923390565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6127c4613333565b609780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33612792565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca821480156128725750600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16155b156128d05760c980546014906128a99074010000000000000000000000000000000000000000900467ffffffffffffffff16614c1d565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b61107f828261339f565b600260fb5403612946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b25565b600260fb55565b600160fb55565b60006129646031602d8486614c44565b61296d91614c6e565b60e01c9392505050565b60006129896129868484613493565b90565b9392505050565b6000808367ffffffffffffffff8111156129ac576129ac613c22565b6040519080825280602002602001820160405280156129d5578160200160208202803683370190505b50905060005b84811015612ab85760008686838181106129f7576129f7614681565b905060400201803603810190612a0d9190614cb6565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1682602001518790604051600060405180830381858888f193505050503d8060008114612a74576040519150601f19603f3d011682016040523d82523d6000602084013e612a79565b606091505b5050905080848481518110612a9057612a90614681565b911515602092830291909101820152820151612aac9086614d0d565b945050506001016129db565b507f1f48172553121d8bf273ce457a5a3dd180d464e0add3e0143045b7fa039c3468888888888886604051612af296959493929190614d5e565b60405180910390a1509695505050505050565b60975460ff161561263c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610b25565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091525063ffffffff8216600090815261012d60209081526040808320815160a081018352815467ffffffffffffffff808216835261ffff68010000000000000000830416838701526fffffffffffffffffffffffffffffffff6a010000000000000000000090920482168386015260019093015490811660608301527001000000000000000000000000000000009004909116608082015273ffffffffffffffffffffffffffffffffffffffff851684526101309092529091205460ff1615610e2b576000604082015292915050565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca82148015612cc95750600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff165b15612d275760c98054601490612d009074010000000000000000000000000000000000000000900467ffffffffffffffff16614df0565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b61107f82826134ac565b600054610100900460ff1661294d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b25565b600054610100900460ff1661263c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b25565b600054610100900460ff16612ef6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b25565b609780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b600054610100900460ff16612fb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b25565b60c980547fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000061ffff86160217905560ca80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8681169190911790915582161561305b5761305b600083612813565b60005b85518110156130b2576130aa7f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de87838151811061309d5761309d614681565b6020026020010151612813565b60010161305e565b5060005b81518110156130fd576130f57fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177583838151811061309d5761309d614681565b6001016130b6565b505050505050565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661107f5761314581613567565b613150836020613586565b604051602001613161929190614e32565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610b2591600401614eb3565b73ffffffffffffffffffffffffffffffffffffffff821661320c576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114613266576040519150601f19603f3d011682016040523d82523d6000602084013e61326b565b606091505b505090508061121b576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610b25565b73ffffffffffffffffffffffffffffffffffffffff8216613312576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61121b73ffffffffffffffffffffffffffffffffffffffff841683836137c9565b60975460ff1661263c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610b25565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661107f57600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556134353390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006134a3605160318486614c44565b61298991614ec6565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff161561107f57600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6060610e2b73ffffffffffffffffffffffffffffffffffffffff831660145b60606000613595836002614f02565b6135a0906002614d0d565b67ffffffffffffffff8111156135b8576135b8613c22565b6040519080825280601f01601f1916602001820160405280156135e2576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061361957613619614681565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061367c5761367c614681565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006136b8846002614f02565b6136c3906001614d0d565b90505b6001811115613760577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061370457613704614681565b1a60f81b82828151811061371a5761371a614681565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361375981614f19565b90506136c6565b508315612989576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610b25565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261121b92869291600091613894918516908490613941565b90508051600014806138b55750808060200190518101906138b59190614f4e565b61121b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610b25565b60606139508484600085613958565b949350505050565b6060824710156139ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610b25565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613a139190614f6b565b60006040518083038185875af1925050503d8060008114613a50576040519150601f19603f3d011682016040523d82523d6000602084013e613a55565b606091505b5091509150611fe48783838760608315613af7578251600003613af05773ffffffffffffffffffffffffffffffffffffffff85163b613af0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b25565b5081613950565b6139508383815115613b0c5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b259190614eb3565b82805482825590600052602060002090601f01602090048101928215613bd95791602002820160005b83821115613baa57833560ff1683826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302613b69565b8015613bd75782816101000a81549060ff0219169055600101602081600001049283019260010302613baa565b505b50613be5929150613be9565b5090565b5b80821115613be55760008155600101613bea565b803573ffffffffffffffffffffffffffffffffffffffff811681146111f157600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715613c7457613c74613c22565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613cc157613cc1613c22565b604052919050565b600067ffffffffffffffff821115613ce357613ce3613c22565b5060051b60200190565b600082601f830112613cfe57600080fd5b81356020613d13613d0e83613cc9565b613c7a565b8083825260208201915060208460051b870101935086841115613d3557600080fd5b602086015b84811015613d5857613d4b81613bfe565b8352918301918301613d3a565b509695505050505050565b60008060008060008060c08789031215613d7c57600080fd5b613d8587613bfe565b9550613d9360208801613bfe565b9450604087013567ffffffffffffffff80821115613db057600080fd5b613dbc8a838b01613ced565b9550613dca60608a01613bfe565b9450613dd860808a01613bfe565b935060a0890135915080821115613dee57600080fd5b50613dfb89828a01613ced565b9150509295509295509295565b600080600060608486031215613e1d57600080fd5b613e2684613bfe565b9250613e3460208501613bfe565b9150604084013590509250925092565b600060208284031215613e5657600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461298957600080fd5b600060208284031215613e9857600080fd5b61298982613bfe565b801515811461270457600080fd5b600060208284031215613ec157600080fd5b813561298981613ea1565b600060208284031215613ede57600080fd5b5035919050565b63ffffffff8116811461270457600080fd5b600060208284031215613f0957600080fd5b813561298981613ee5565b6020808252825182820181905260009190848201906040850190845b81811015613f4f57835160ff1683529284019291840191600101613f30565b50909695505050505050565b60008060408385031215613f6e57600080fd5b82359150613f7e60208401613bfe565b90509250929050565b60008083601f840112613f9957600080fd5b50813567ffffffffffffffff811115613fb157600080fd5b602083019150836020828501011115613fc957600080fd5b9250929050565b600080600060408486031215613fe557600080fd5b833567ffffffffffffffff811115613ffc57600080fd5b61400886828701613f87565b909790965060209590950135949350505050565b60006060828403121561402e57600080fd5b50919050565b60008083601f84011261404657600080fd5b50813567ffffffffffffffff81111561405e57600080fd5b6020830191508360208260061b8501011115613fc957600080fd5b600080600080600080600060e0888a03121561409457600080fd5b61409e898961401c565b9650606088013567ffffffffffffffff808211156140bb57600080fd5b6140c78b838c01614034565b909850965060808a0135955060a08a01359150808211156140e757600080fd5b506140f48a828b01613f87565b989b979a5095989497959660c090950135949350505050565b803567ffffffffffffffff811681146111f157600080fd5b803561ffff811681146111f157600080fd5b80356fffffffffffffffffffffffffffffffff811681146111f157600080fd5b6000602080838503121561416a57600080fd5b823567ffffffffffffffff81111561418157600080fd5b8301601f8101851361419257600080fd5b80356141a0613d0e82613cc9565b81815260c091820283018401918482019190888411156141bf57600080fd5b938501935b838510156142535780858a0312156141dc5760008081fd5b6141e4613c51565b85356141ef81613ee5565b81526141fc86880161410d565b87820152604061420d81880161410d565b90820152606061421e878201614125565b90820152608061422f878201614137565b9082015260a0614240878201614137565b90820152835293840193918501916141c4565b50979650505050505050565b6000806020838503121561427257600080fd5b823567ffffffffffffffff81111561428957600080fd5b61429585828601614034565b90969095509350505050565b60008060008060008060e087890312156142ba57600080fd5b6142c4888861401c565b955060608701356142d481613ee5565b94506142e260808801613bfe565b935060a087013567ffffffffffffffff8111156142fe57600080fd5b61430a89828a01614034565b979a969950949794969560c090950135949350505050565b60008060008060006080868803121561433a57600080fd5b853561434581613ee5565b945061435360208701613bfe565b935060408601359250606086013567ffffffffffffffff81111561437657600080fd5b61438288828901613f87565b969995985093965092949392505050565b600080600080600080600080600060e08a8c0312156143b157600080fd5b6143ba8a613bfe565b98506143c860208b01613bfe565b975060408a013596506143dd60608b01614125565b955060808a013567ffffffffffffffff808211156143fa57600080fd5b6144068d838e01613f87565b909750955060a08c013591508082111561441f57600080fd5b5061442c8c828d01613f87565b9a9d999c50979a9699959894979660c00135949350505050565b6000610100828403121561402e57600080fd5b6000806000806060858703121561446f57600080fd5b843567ffffffffffffffff8082111561448757600080fd5b61449388838901614034565b90965094506020870135935060408701359150808211156144b357600080fd5b506144c087828801614446565b91505092959194509250565b6000806000604084860312156144e157600080fd5b6144ea84613bfe565b9250602084013567ffffffffffffffff81111561450657600080fd5b61451286828701613f87565b9497909650939450505050565b60006020828403121561453157600080fd5b61298982614125565b60008060006040848603121561454f57600080fd5b833561455a81613ee5565b9250602084013567ffffffffffffffff8082111561457757600080fd5b818601915086601f83011261458b57600080fd5b81358181111561459a57600080fd5b8760208260051b85010111156145af57600080fd5b6020830194508093505050509250925092565b6000602082840312156145d457600080fd5b813567ffffffffffffffff8111156145eb57600080fd5b61395084828501614446565b60006020828403121561460957600080fd5b815161298981613ee5565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b604081526000614671604083018587614614565b9050826020830152949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b8281101561474a578151805163ffffffff1685528681015167ffffffffffffffff9081168887015286820151168686015260608082015161ffff16908601526080808201516fffffffffffffffffffffffffffffffff9081169187019190915260a091820151169085015260c090930192908501906001016146cd565b5091979650505050505050565b845173ffffffffffffffffffffffffffffffffffffffff908116825260208087015163ffffffff1681840152604080880151909216828401526060808801518185015260808089015161ffff90811682870152885167ffffffffffffffff90811660a0880152938901511660c0860152928701516fffffffffffffffffffffffffffffffff90811660e086015290870151166101008401529085015116610120820152600061016080610140840152611fe48184018587614614565b60006020828403121561482557600080fd5b5051919050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525087604083015261ffff8716606083015260c0608083015261487660c083018688614614565b82810360a0840152614889818587614614565b9b9a5050505050505050505050565b60005b838110156148b357818101518382015260200161489b565b50506000910152565b600081518084526148d4816020860160208601614898565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600061012073ffffffffffffffffffffffffffffffffffffffff808f168452808e166020850152508b604084015261ffff8b1660608401528960808401528860a08401528060c084015261495d818401888a614614565b905082810360e0840152614972818688614614565b905082810361010084015261498781856148bc565b9e9d5050505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610e2b57610e2b614999565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614a1057600080fd5b83018035915067ffffffffffffffff821115614a2b57600080fd5b602001915036819003821315613fc957600080fd5b8035614a4b81613ee5565b63ffffffff1682526020818101359083015267ffffffffffffffff614a726040830161410d565b1660408301525050565b614a868189614a40565b73ffffffffffffffffffffffffffffffffffffffff8716606082015285608082015260e060a08201526000614abf60e083018688614614565b82810360c0840152614ad2818587614614565b9a9950505050505050505050565b6000610140614aef838e614a40565b73ffffffffffffffffffffffffffffffffffffffff8c1660608401528a60808401528960a08401528860c08401528060e0840152614b30818401888a614614565b9050828103610100840152614b46818688614614565b9050828103610120840152614b5b81856148bc565b9d9c50505050505050505050505050565b600061012073ffffffffffffffffffffffffffffffffffffffff8088511684528060208901511660208501525061ffff6040880151166040840152614c09606084018767ffffffffffffffff80825116835261ffff602083015116602084015260408201516fffffffffffffffffffffffffffffffff80821660408601528060608501511660608601525050806080830151166080840152505050565b80610100840152611fe48184018587614614565b600067ffffffffffffffff808316818103614c3a57614c3a614999565b6001019392505050565b60008085851115614c5457600080fd5b83861115614c6157600080fd5b5050820193919092039150565b7fffffffff000000000000000000000000000000000000000000000000000000008135818116916004851015614cae5780818660040360031b1b83161692505b505092915050565b600060408284031215614cc857600080fd5b6040516040810181811067ffffffffffffffff82111715614ceb57614ceb613c22565b604052614cf783613bfe565b8152602083013560208201528091505092915050565b80820180821115610e2b57610e2b614999565b60008151808452602080850194506020840160005b83811015614d53578151151587529582019590820190600101614d35565b509495945050505050565b600060e08201614d6e838a614a40565b63ffffffff8816606084015273ffffffffffffffffffffffffffffffffffffffff878116608085015260e060a0850152908590528590610100840160005b87811015614ddd5782614dbe85613bfe565b1682526020848101359083015260409384019390910190600101614dac565b5084810360c08601526148898187614d20565b600067ffffffffffffffff821680614e0a57614e0a614999565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351614e6a816017850160208801614898565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351614ea7816028840160208801614898565b01602801949350505050565b60208152600061298960208301846148bc565b80356020831015610e2b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b8082028115828204841417610e2b57610e2b614999565b600081614f2857614f28614999565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600060208284031215614f6057600080fd5b815161298981613ea1565b60008251614f7d818460208701614898565b919091019291505056fea26469706673582212203b28a234321c2000527547a23e9ce395d6222210ffc2c50537f8404d3385ebf964736f6c63430008160033",
1410
+ "deployedBytecode": "0x6080604052600436106102c45760003560e01c8063709eb66411610179578063c2803b2c116100d6578063cd88b9031161008a578063d547741f11610064578063d547741f14610933578063e395eb5c14610953578063fa34c84e1461099e57600080fd5b8063cd88b903146108ae578063cfc32570146108ce578063d2ae2104146108e157600080fd5b8063c416aa51116100bb578063c416aa5114610841578063c7b2370b1461086e578063c8f8dcd11461088e57600080fd5b8063c2803b2c146107f3578063c358de0a1461082157600080fd5b80638624ba071161012d5780639e944965116101125780639e944965146106e1578063a217fddf146107be578063c015bb7d146107d357600080fd5b80638624ba071461067b57806391d148541461068e57600080fd5b8063724e78da1161015e578063724e78da1461061b578063741bef1a1461063b5780637cd447341461066857600080fd5b8063709eb664146105db578063717e8a42146105fb57600080fd5b80632f2ff15d116102275780633d85ac33116101db578063475b6d9e116101c0578063475b6d9e1461055d5780635c975abb146105705780635e280f111461058857600080fd5b80633d85ac331461051d57806344bb7e281461053d57600080fd5b806336568abe1161020c57806336568abe146104b95780633927c075146104d95780633bd0db9f146104ec57600080fd5b80632f2ff15d146104795780633146646a1461049957600080fd5b80631095b6d71161027e578063248a9ca311610263578063248a9ca3146103ee57806326e67a371461042c5780632de113761461045957600080fd5b80631095b6d7146103ae57806316c38b3c146103ce57600080fd5b806301e33667116102af57806301e336671461033e57806301ffc9a71461035e57806302e723d91461038e57600080fd5b80629fc681146102c9578062bf2e80146102eb575b600080fd5b3480156102d557600080fd5b506102e96102e4366004613d63565b6109be565b005b3480156102f757600080fd5b5060c954610326907c0100000000000000000000000000000000000000000000000000000000900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b34801561034a57600080fd5b506102e9610359366004613e08565b610d5d565b34801561036a57600080fd5b5061037e610379366004613e44565b610d98565b6040519015158152602001610335565b34801561039a57600080fd5b506102e96103a9366004613e86565b610e31565b3480156103ba57600080fd5b506102e96103c9366004613e08565b610ed7565b3480156103da57600080fd5b506102e96103e9366004613eaf565b611066565b3480156103fa57600080fd5b5061041e610409366004613ecc565b60009081526065602052604090206001015490565b604051908152602001610335565b34801561043857600080fd5b5061044c610447366004613ef7565b61108b565b6040516103359190613f14565b34801561046557600080fd5b5061037e610474366004613e86565b611112565b34801561048557600080fd5b506102e9610494366004613f5b565b6111f6565b3480156104a557600080fd5b506102e96104b4366004613fd0565b611220565b3480156104c557600080fd5b506102e96104d4366004613f5b565b6112e9565b6102e96104e7366004614079565b61131b565b3480156104f857600080fd5b5061037e610507366004613e86565b6101306020526000908152604090205460ff1681565b34801561052957600080fd5b506102e9610538366004614157565b611405565b34801561054957600080fd5b506102e961055836600461425f565b6115df565b6102e961056b3660046142a1565b611718565b34801561057c57600080fd5b5060975460ff1661037e565b34801561059457600080fd5b5061012e546105b69073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610335565b3480156105e757600080fd5b5061041e6105f6366004614322565b61176c565b34801561060757600080fd5b5061041e610616366004614322565b6118a7565b34801561062757600080fd5b506102e9610636366004613e86565b611a0f565b34801561064757600080fd5b5060ca546105b69073ffffffffffffffffffffffffffffffffffffffff1681565b6102e9610676366004614393565b611aac565b6102e9610689366004614459565b611c61565b34801561069a57600080fd5b5061037e6106a9366004613f5b565b600091825260656020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b3480156106ed57600080fd5b506107716106fc366004613ef7565b61012d602052600090815260409020805460019091015467ffffffffffffffff8083169261ffff68010000000000000000820416926fffffffffffffffffffffffffffffffff6a0100000000000000000000909204821692918116917001000000000000000000000000000000009091041685565b6040805167ffffffffffffffff968716815261ffff90951660208601526fffffffffffffffffffffffffffffffff938416908501529116606083015291909116608082015260a001610335565b3480156107ca57600080fd5b5061041e600081565b3480156107df57600080fd5b5061041e6107ee3660046144cc565b611e77565b3480156107ff57600080fd5b5061012f546105b69073ffffffffffffffffffffffffffffffffffffffff1681565b34801561082d57600080fd5b506102e961083c36600461451f565b611fef565b34801561084d57600080fd5b5060c9546105b69073ffffffffffffffffffffffffffffffffffffffff1681565b34801561087a57600080fd5b506102e9610889366004613e86565b61209c565b34801561089a57600080fd5b5061041e6108a93660046144cc565b612139565b3480156108ba57600080fd5b506102e96108c936600461453a565b612284565b6102e96108dc3660046145c2565b6122ce565b3480156108ed57600080fd5b5060c95461091a9074010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610335565b34801561093f57600080fd5b506102e961094e366004613f5b565b61248a565b34801561095f57600080fd5b5061012e546109899074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610335565b3480156109aa57600080fd5b506102e96109b9366004613e86565b6124af565b60006109e87fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff8116610a415773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355610a63565b3373ffffffffffffffffffffffffffffffffffffffff821614610a6357600080fd5b600054610100900460ff1615808015610a835750600054600160ff909116105b80610a9d5750303b158015610a9d575060005460ff166001145b610b2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610b8c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610b9461259d565b610ba38686612ee0878761263e565b61012e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16908117909155604080517f416ecebf000000000000000000000000000000000000000000000000000000008152905163416ecebf916004808201926020929091908290030181865afa158015610c3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c5f91906145f7565b61012e80547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff939093169290920291909117905561012f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89161790558015610d5357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610d87816126fa565b610d92848484612707565b50505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b000000000000000000000000000000000000000000000000000000001480610e2b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610e5b816126fa565b61012f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f2a2a4b95cee71747feecad6bcdaa0016f908444a79c1c31c1987b262ba4e6dbe906020015b60405180910390a15050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610f01816126fa565b73ffffffffffffffffffffffffffffffffffffffff841660009081527fe3a3b2721d010eec8988605a93cd7c15d969808c0e2b42f6155dc2b4fa13c081602052604090205460ff16610f7f576040517f5ee08b9700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517ffd9be52200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820184905285169063fd9be52290604401600060405180830381600087803b158015610fef57600080fd5b505af1158015611003573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff8089168252871660208201529081018590527f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9250606001905060405180910390a150505050565b6000611071816126fa565b81156110835761107f612737565b5050565b61107f6127bc565b63ffffffff8116600090815260cb602090815260409182902080548351818402810184019094528084526060939283018282801561110657602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116110d75790505b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff811660009081527f0f6a9529577ef7bf1cbc8fccda1cc3c881f755c7e92e34c7c4deac1fa3c1c791602052604081205460ff161561116757506000919050565b60c95474010000000000000000000000000000000000000000900467ffffffffffffffff1615806111dc575073ffffffffffffffffffffffffffffffffffffffff821660009081527f35c5067391a9036240763c1067bfa438a7b0131204a675a2fe562dd73782ce85602052604090205460ff165b156111e957506001919050565b506000919050565b919050565b600082815260656020526040902060010154611211816126fa565b61121b8383612813565b505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561124a816126fa565b6112526128da565b61012f546040517fe65106f800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063e65106f8906112ad9087908790879060040161465d565b600060405180830381600087803b1580156112c757600080fd5b505af11580156112db573d6000803e3d6000fd5b50505050610d92600160fb55565b6040517fdec9f03100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611345816126fa565b61134d6128da565b61136d8861135b8686612954565b6113658787612977565b8a8a8a612990565b5061012f546040517fe65106f800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063e65106f8906113c99087908790879060040161465d565b600060405180830381600087803b1580156113e357600080fd5b505af11580156113f7573d6000803e3d6000fd5b50505050610d53600160fb55565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561142f816126fa565b60005b82518110156115af57600083828151811061144f5761144f614681565b6020908102919091018101516040805160a080820183528385015167ffffffffffffffff908116835260608086015161ffff9081168589019081526080808901516fffffffffffffffffffffffffffffffff908116888a01908152968a01518116948801948552888a01518616918801918252985163ffffffff16600090815261012d909a5296909820945185549851945188166a0100000000000000000000027fffffffffffff00000000000000000000000000000000ffffffffffffffffffff9590921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000090991690841617979097179290921695909517825551600191820180549351909516700100000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090931693169290921717909155919091019050611432565b507fb99f6de5e22c60c178b03bfacf2daeb4b6089f5b37e0fe2c48a5d5141191fc5382604051610ecb91906146b0565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611609816126fa565b60005b82811015610d92573684848381811061162757611627614681565b90506040020190508060200160208101906116429190613eaf565b61013060006116546020850185613e86565b73ffffffffffffffffffffffffffffffffffffffff16815260208082019290925260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016921515929092179091556116b590820182613e86565b73ffffffffffffffffffffffffffffffffffffffff167ffafc7bfa3c73f8a408d873ba109b7145dc715107b809e460e7afe60d5402c6a26116fc6040840160208501613eaf565b604051901515815260200160405180910390a25060010161160c565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611742816126fa565b61174a6128da565b611758878787878787612990565b50611763600160fb55565b50505050505050565b60008461177881611112565b6117ae576040517f4ab5ebcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6117b6612b05565b6040805160a08101825260ca5473ffffffffffffffffffffffffffffffffffffffff908116825263ffffffff8a166020830152888116928201929092526060810187905260c95461ffff7c0100000000000000000000000000000000000000000000000000000000820416608083015290911663434ee016826118398b8b612b72565b88886040518563ffffffff1660e01b815260040161185a9493929190614757565b602060405180830381865afa158015611877573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189b9190614813565b98975050505050505050565b60007f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de6118d3816126fa565b856118dd81611112565b611913576040517f4ab5ebcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61191b612b05565b6040805160a08101825260ca5473ffffffffffffffffffffffffffffffffffffffff908116825263ffffffff8b166020830152898116928201929092526060810188905260c95461ffff7c0100000000000000000000000000000000000000000000000000000000820416608083015290911663566ef7628261199e8c8c612b72565b89896040518563ffffffff1660e01b81526004016119bf9493929190614757565b6020604051808303816000875af11580156119de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a029190614813565b9998505050505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611a39816126fa565b60ca80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527ff724a45d041687842411f2b977ef22ab8f43c8f1104f4592b42a00f9b34a643d90602001610ecb565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611ad6816126fa565b611ade6128da565b61012e546040517f91d20fa100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906391d20fa19084903490611b47908f908f908f908f908f908f908f908f9060040161482c565b6000604051808303818589803b158015611b6057600080fd5b5088f19450505050508015611b73575060015b611c4b573d808015611ba1576040519150601f19603f3d011682016040523d82523d6000602084013e611ba6565b606091505b5061012e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663697fe6b68c8c8c8c88348e8e8e8e8c6040518c63ffffffff1660e01b8152600401611c179b9a99989796959493929190614906565b600060405180830381600087803b158015611c3157600080fd5b505af1158015611c45573d6000803e3d6000fd5b50505050505b611c55600160fb55565b50505050505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611c8b816126fa565b611c936128da565b61012e54600090611cd390602085019074010000000000000000000000000000000000000000900463ffffffff16611ccb8287613e86565b898989612990565b90506000611ce182346149c8565b61012e5490915073ffffffffffffffffffffffffffffffffffffffff16630c0c389e60e08601358360208801611d17818a613e86565b60808a0135611d2960a08c018c6149db565b611d3660c08e018e6149db565b6040518a63ffffffff1660e01b8152600401611d589796959493929190614a7c565b6000604051808303818589803b158015611d7157600080fd5b5088f19450505050508015611d84575060015b611e64573d808015611db2576040519150601f19603f3d011682016040523d82523d6000602084013e611db7565b606091505b5061012e5473ffffffffffffffffffffffffffffffffffffffff16636bf73fa360208701611de58189613e86565b608089013560e08a013587611dfd60a08d018d6149db565b611e0a60c08f018f6149db565b8b6040518b63ffffffff1660e01b8152600401611e309a99989796959493929190614ae0565b600060405180830381600087803b158015611e4a57600080fd5b505af1158015611e5e573d6000803e3d6000fd5b50505050505b5050611e70600160fb55565b5050505050565b60007f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de611ea3816126fa565b84611ead81611112565b611ee3576040517f4ab5ebcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611eeb612b05565b6040805160608101825260ca5473ffffffffffffffffffffffffffffffffffffffff9081168252888116602083015260c9547c0100000000000000000000000000000000000000000000000000000000810461ffff169383019390935261012e54919216906365003784908390611f809074010000000000000000000000000000000000000000900463ffffffff168b612b72565b89896040518563ffffffff1660e01b8152600401611fa19493929190614b6c565b6020604051808303816000875af1158015611fc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe49190614813565b979650505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775612019816126fa565b60c980547fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000061ffff8516908102919091179091556040519081527f7af0ac740036ffb1c97b03697859d729e80a44ae5030543d64971c313565ab4d90602001610ecb565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756120c6816126fa565b60c980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527f1399be28223800f8669b3ba5f8721d9fc16fc4e8d0bbf98378791c8c5a3015e090602001610ecb565b60008361214581611112565b61217b576040517f4ab5ebcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612183612b05565b6040805160608101825260ca5473ffffffffffffffffffffffffffffffffffffffff9081168252878116602083015260c9547c0100000000000000000000000000000000000000000000000000000000810461ffff169383019390935261012e549192169063337c7a9e9083906122189074010000000000000000000000000000000000000000900463ffffffff168a612b72565b88886040518563ffffffff1660e01b81526004016122399493929190614b6c565b602060405180830381865afa158015612256573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227a9190614813565b9695505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756122ae816126fa565b63ffffffff8416600090815260cb60205260409020611e70908484613b40565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756122f8816126fa565b6123006128da565b61012e5473ffffffffffffffffffffffffffffffffffffffff16630c0c389e60e084013534602086016123338188613e86565b608088013561234560a08a018a6149db565b61235260c08c018c6149db565b6040518a63ffffffff1660e01b81526004016123749796959493929190614a7c565b6000604051808303818589803b15801561238d57600080fd5b5088f194505050505080156123a0575060015b612480573d8080156123ce576040519150601f19603f3d011682016040523d82523d6000602084013e6123d3565b606091505b5061012e5473ffffffffffffffffffffffffffffffffffffffff16636bf73fa3602085016124018187613e86565b608087013560e08801353461241960a08b018b6149db565b61242660c08d018d6149db565b8b6040518b63ffffffff1660e01b815260040161244c9a99989796959493929190614ae0565b600060405180830381600087803b15801561246657600080fd5b505af115801561247a573d6000803e3d6000fd5b50505050505b61107f600160fb55565b6000828152606560205260409020600101546124a5816126fa565b61121b8383612c6b565b60006124d97fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b905073ffffffffffffffffffffffffffffffffffffffff81166125325773ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355612554565b3373ffffffffffffffffffffffffffffffffffffffff82161461255457600080fd5b5061012f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600054610100900460ff16612634576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b25565b61263c612d31565b565b600054610100900460ff166126d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b25565b6126dd612dc8565b6126e5612dc8565b6126ed612e5f565b611e708585858585612f20565b6127048133613105565b50565b73ffffffffffffffffffffffffffffffffffffffff831661272c5761121b82826131bf565b61121b8383836132c5565b61273f612b05565b609780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586127923390565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6127c4613333565b609780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33612792565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca821480156128725750600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16155b156128d05760c980546014906128a99074010000000000000000000000000000000000000000900467ffffffffffffffff16614c1d565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b61107f828261339f565b600260fb5403612946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610b25565b600260fb55565b600160fb55565b60006129646031602d8486614c44565b61296d91614c6e565b60e01c9392505050565b60006129896129868484613493565b90565b9392505050565b6000808367ffffffffffffffff8111156129ac576129ac613c22565b6040519080825280602002602001820160405280156129d5578160200160208202803683370190505b50905060005b84811015612ab85760008686838181106129f7576129f7614681565b905060400201803603810190612a0d9190614cb6565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff1682602001518790604051600060405180830381858888f193505050503d8060008114612a74576040519150601f19603f3d011682016040523d82523d6000602084013e612a79565b606091505b5050905080848481518110612a9057612a90614681565b911515602092830291909101820152820151612aac9086614d0d565b945050506001016129db565b507f1f48172553121d8bf273ce457a5a3dd180d464e0add3e0143045b7fa039c3468888888888886604051612af296959493929190614d5e565b60405180910390a1509695505050505050565b60975460ff161561263c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610b25565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091525063ffffffff8216600090815261012d60209081526040808320815160a081018352815467ffffffffffffffff808216835261ffff68010000000000000000830416838701526fffffffffffffffffffffffffffffffff6a010000000000000000000090920482168386015260019093015490811660608301527001000000000000000000000000000000009004909116608082015273ffffffffffffffffffffffffffffffffffffffff851684526101309092529091205460ff1615610e2b576000604082015292915050565b7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca82148015612cc95750600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff165b15612d275760c98054601490612d009074010000000000000000000000000000000000000000900467ffffffffffffffff16614df0565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b61107f82826134ac565b600054610100900460ff1661294d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b25565b600054610100900460ff1661263c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b25565b600054610100900460ff16612ef6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b25565b609780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b600054610100900460ff16612fb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610b25565b60c980547fffff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000061ffff86160217905560ca80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8681169190911790915582161561305b5761305b600083612813565b60005b85518110156130b2576130aa7f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de87838151811061309d5761309d614681565b6020026020010151612813565b60010161305e565b5060005b81518110156130fd576130f57fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177583838151811061309d5761309d614681565b6001016130b6565b505050505050565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661107f5761314581613567565b613150836020613586565b604051602001613161929190614e32565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610b2591600401614eb3565b73ffffffffffffffffffffffffffffffffffffffff821661320c576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114613266576040519150601f19603f3d011682016040523d82523d6000602084013e61326b565b606091505b505090508061121b576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416600482015260248101839052604401610b25565b73ffffffffffffffffffffffffffffffffffffffff8216613312576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61121b73ffffffffffffffffffffffffffffffffffffffff841683836137c9565b60975460ff1661263c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610b25565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661107f57600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556134353390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006134a3605160318486614c44565b61298991614ec6565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff161561107f57600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6060610e2b73ffffffffffffffffffffffffffffffffffffffff831660145b60606000613595836002614f02565b6135a0906002614d0d565b67ffffffffffffffff8111156135b8576135b8613c22565b6040519080825280601f01601f1916602001820160405280156135e2576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061361957613619614681565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061367c5761367c614681565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006136b8846002614f02565b6136c3906001614d0d565b90505b6001811115613760577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061370457613704614681565b1a60f81b82828151811061371a5761371a614681565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361375981614f19565b90506136c6565b508315612989576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610b25565b6040805173ffffffffffffffffffffffffffffffffffffffff848116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261121b92869291600091613894918516908490613941565b90508051600014806138b55750808060200190518101906138b59190614f4e565b61121b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610b25565b60606139508484600085613958565b949350505050565b6060824710156139ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610b25565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613a139190614f6b565b60006040518083038185875af1925050503d8060008114613a50576040519150601f19603f3d011682016040523d82523d6000602084013e613a55565b606091505b5091509150611fe48783838760608315613af7578251600003613af05773ffffffffffffffffffffffffffffffffffffffff85163b613af0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b25565b5081613950565b6139508383815115613b0c5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b259190614eb3565b82805482825590600052602060002090601f01602090048101928215613bd95791602002820160005b83821115613baa57833560ff1683826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302613b69565b8015613bd75782816101000a81549060ff0219169055600101602081600001049283019260010302613baa565b505b50613be5929150613be9565b5090565b5b80821115613be55760008155600101613bea565b803573ffffffffffffffffffffffffffffffffffffffff811681146111f157600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160c0810167ffffffffffffffff81118282101715613c7457613c74613c22565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613cc157613cc1613c22565b604052919050565b600067ffffffffffffffff821115613ce357613ce3613c22565b5060051b60200190565b600082601f830112613cfe57600080fd5b81356020613d13613d0e83613cc9565b613c7a565b8083825260208201915060208460051b870101935086841115613d3557600080fd5b602086015b84811015613d5857613d4b81613bfe565b8352918301918301613d3a565b509695505050505050565b60008060008060008060c08789031215613d7c57600080fd5b613d8587613bfe565b9550613d9360208801613bfe565b9450604087013567ffffffffffffffff80821115613db057600080fd5b613dbc8a838b01613ced565b9550613dca60608a01613bfe565b9450613dd860808a01613bfe565b935060a0890135915080821115613dee57600080fd5b50613dfb89828a01613ced565b9150509295509295509295565b600080600060608486031215613e1d57600080fd5b613e2684613bfe565b9250613e3460208501613bfe565b9150604084013590509250925092565b600060208284031215613e5657600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461298957600080fd5b600060208284031215613e9857600080fd5b61298982613bfe565b801515811461270457600080fd5b600060208284031215613ec157600080fd5b813561298981613ea1565b600060208284031215613ede57600080fd5b5035919050565b63ffffffff8116811461270457600080fd5b600060208284031215613f0957600080fd5b813561298981613ee5565b6020808252825182820181905260009190848201906040850190845b81811015613f4f57835160ff1683529284019291840191600101613f30565b50909695505050505050565b60008060408385031215613f6e57600080fd5b82359150613f7e60208401613bfe565b90509250929050565b60008083601f840112613f9957600080fd5b50813567ffffffffffffffff811115613fb157600080fd5b602083019150836020828501011115613fc957600080fd5b9250929050565b600080600060408486031215613fe557600080fd5b833567ffffffffffffffff811115613ffc57600080fd5b61400886828701613f87565b909790965060209590950135949350505050565b60006060828403121561402e57600080fd5b50919050565b60008083601f84011261404657600080fd5b50813567ffffffffffffffff81111561405e57600080fd5b6020830191508360208260061b8501011115613fc957600080fd5b600080600080600080600060e0888a03121561409457600080fd5b61409e898961401c565b9650606088013567ffffffffffffffff808211156140bb57600080fd5b6140c78b838c01614034565b909850965060808a0135955060a08a01359150808211156140e757600080fd5b506140f48a828b01613f87565b989b979a5095989497959660c090950135949350505050565b803567ffffffffffffffff811681146111f157600080fd5b803561ffff811681146111f157600080fd5b80356fffffffffffffffffffffffffffffffff811681146111f157600080fd5b6000602080838503121561416a57600080fd5b823567ffffffffffffffff81111561418157600080fd5b8301601f8101851361419257600080fd5b80356141a0613d0e82613cc9565b81815260c091820283018401918482019190888411156141bf57600080fd5b938501935b838510156142535780858a0312156141dc5760008081fd5b6141e4613c51565b85356141ef81613ee5565b81526141fc86880161410d565b87820152604061420d81880161410d565b90820152606061421e878201614125565b90820152608061422f878201614137565b9082015260a0614240878201614137565b90820152835293840193918501916141c4565b50979650505050505050565b6000806020838503121561427257600080fd5b823567ffffffffffffffff81111561428957600080fd5b61429585828601614034565b90969095509350505050565b60008060008060008060e087890312156142ba57600080fd5b6142c4888861401c565b955060608701356142d481613ee5565b94506142e260808801613bfe565b935060a087013567ffffffffffffffff8111156142fe57600080fd5b61430a89828a01614034565b979a969950949794969560c090950135949350505050565b60008060008060006080868803121561433a57600080fd5b853561434581613ee5565b945061435360208701613bfe565b935060408601359250606086013567ffffffffffffffff81111561437657600080fd5b61438288828901613f87565b969995985093965092949392505050565b600080600080600080600080600060e08a8c0312156143b157600080fd5b6143ba8a613bfe565b98506143c860208b01613bfe565b975060408a013596506143dd60608b01614125565b955060808a013567ffffffffffffffff808211156143fa57600080fd5b6144068d838e01613f87565b909750955060a08c013591508082111561441f57600080fd5b5061442c8c828d01613f87565b9a9d999c50979a9699959894979660c00135949350505050565b6000610100828403121561402e57600080fd5b6000806000806060858703121561446f57600080fd5b843567ffffffffffffffff8082111561448757600080fd5b61449388838901614034565b90965094506020870135935060408701359150808211156144b357600080fd5b506144c087828801614446565b91505092959194509250565b6000806000604084860312156144e157600080fd5b6144ea84613bfe565b9250602084013567ffffffffffffffff81111561450657600080fd5b61451286828701613f87565b9497909650939450505050565b60006020828403121561453157600080fd5b61298982614125565b60008060006040848603121561454f57600080fd5b833561455a81613ee5565b9250602084013567ffffffffffffffff8082111561457757600080fd5b818601915086601f83011261458b57600080fd5b81358181111561459a57600080fd5b8760208260051b85010111156145af57600080fd5b6020830194508093505050509250925092565b6000602082840312156145d457600080fd5b813567ffffffffffffffff8111156145eb57600080fd5b61395084828501614446565b60006020828403121561460957600080fd5b815161298981613ee5565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b604081526000614671604083018587614614565b9050826020830152949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602080825282518282018190526000919060409081850190868401855b8281101561474a578151805163ffffffff1685528681015167ffffffffffffffff9081168887015286820151168686015260608082015161ffff16908601526080808201516fffffffffffffffffffffffffffffffff9081169187019190915260a091820151169085015260c090930192908501906001016146cd565b5091979650505050505050565b845173ffffffffffffffffffffffffffffffffffffffff908116825260208087015163ffffffff1681840152604080880151909216828401526060808801518185015260808089015161ffff90811682870152885167ffffffffffffffff90811660a0880152938901511660c0860152928701516fffffffffffffffffffffffffffffffff90811660e086015290870151166101008401529085015116610120820152600061016080610140840152611fe48184018587614614565b60006020828403121561482557600080fd5b5051919050565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525087604083015261ffff8716606083015260c0608083015261487660c083018688614614565b82810360a0840152614889818587614614565b9b9a5050505050505050505050565b60005b838110156148b357818101518382015260200161489b565b50506000910152565b600081518084526148d4816020860160208601614898565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600061012073ffffffffffffffffffffffffffffffffffffffff808f168452808e166020850152508b604084015261ffff8b1660608401528960808401528860a08401528060c084015261495d818401888a614614565b905082810360e0840152614972818688614614565b905082810361010084015261498781856148bc565b9e9d5050505050505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b81810381811115610e2b57610e2b614999565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614a1057600080fd5b83018035915067ffffffffffffffff821115614a2b57600080fd5b602001915036819003821315613fc957600080fd5b8035614a4b81613ee5565b63ffffffff1682526020818101359083015267ffffffffffffffff614a726040830161410d565b1660408301525050565b614a868189614a40565b73ffffffffffffffffffffffffffffffffffffffff8716606082015285608082015260e060a08201526000614abf60e083018688614614565b82810360c0840152614ad2818587614614565b9a9950505050505050505050565b6000610140614aef838e614a40565b73ffffffffffffffffffffffffffffffffffffffff8c1660608401528a60808401528960a08401528860c08401528060e0840152614b30818401888a614614565b9050828103610100840152614b46818688614614565b9050828103610120840152614b5b81856148bc565b9d9c50505050505050505050505050565b600061012073ffffffffffffffffffffffffffffffffffffffff8088511684528060208901511660208501525061ffff6040880151166040840152614c09606084018767ffffffffffffffff80825116835261ffff602083015116602084015260408201516fffffffffffffffffffffffffffffffff80821660408601528060608501511660608601525050806080830151166080840152505050565b80610100840152611fe48184018587614614565b600067ffffffffffffffff808316818103614c3a57614c3a614999565b6001019392505050565b60008085851115614c5457600080fd5b83861115614c6157600080fd5b5050820193919092039150565b7fffffffff000000000000000000000000000000000000000000000000000000008135818116916004851015614cae5780818660040360031b1b83161692505b505092915050565b600060408284031215614cc857600080fd5b6040516040810181811067ffffffffffffffff82111715614ceb57614ceb613c22565b604052614cf783613bfe565b8152602083013560208201528091505092915050565b80820180821115610e2b57610e2b614999565b60008151808452602080850194506020840160005b83811015614d53578151151587529582019590820190600101614d35565b509495945050505050565b600060e08201614d6e838a614a40565b63ffffffff8816606084015273ffffffffffffffffffffffffffffffffffffffff878116608085015260e060a0850152908590528590610100840160005b87811015614ddd5782614dbe85613bfe565b1682526020848101359083015260409384019390910190600101614dac565b5084810360c08601526148898187614d20565b600067ffffffffffffffff821680614e0a57614e0a614999565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351614e6a816017850160208801614898565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351614ea7816028840160208801614898565b01602801949350505050565b60208152600061298960208301846148bc565b80356020831015610e2b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b8082028115828204841417610e2b57610e2b614999565b600081614f2857614f28614999565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600060208284031215614f6057600080fd5b815161298981613ea1565b60008251614f7d818460208701614898565b919091019291505056fea26469706673582212203b28a234321c2000527547a23e9ce395d6222210ffc2c50537f8404d3385ebf964736f6c63430008160033",
1411
+ "linkReferences": {},
1412
+ "deployedLinkReferences": {}
1413
+ }