@layerzerolabs/protocol-stellar-v2 0.2.15 → 0.2.19

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 (262) hide show
  1. package/.turbo/turbo-build.log +365 -297
  2. package/.turbo/turbo-lint.log +142 -110
  3. package/.turbo/turbo-test.log +1273 -1222
  4. package/Cargo.lock +20 -5
  5. package/Cargo.toml +4 -1
  6. package/contracts/ERROR_SPEC.md +44 -0
  7. package/contracts/common-macros/src/auth.rs +113 -0
  8. package/contracts/common-macros/src/contract_ttl.rs +84 -0
  9. package/contracts/common-macros/src/lib.rs +181 -30
  10. package/contracts/common-macros/src/lz_contract.rs +83 -0
  11. package/contracts/common-macros/src/tests/{ownable.rs → auth.rs} +48 -15
  12. package/contracts/common-macros/src/tests/contract_ttl.rs +662 -0
  13. package/contracts/common-macros/src/tests/mod.rs +2 -2
  14. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_multisig_code.snap +20 -0
  15. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_ownable_code.snap +24 -0
  16. package/contracts/common-macros/src/tests/snapshots/{common_macros__tests__ownable__snapshot_only_owner_preserves_function_signature.snap → common_macros__tests__auth__snapshot_only_auth_preserves_function_signature.snap} +4 -4
  17. package/contracts/common-macros/src/tests/snapshots/{common_macros__tests__contract_impl__snapshot_generated_contract_impl_code.snap → common_macros__tests__contract_ttl__snapshot_generated_contractimpl_code.snap} +3 -3
  18. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_ttl__snapshot_generated_contracttrait_code.snap +69 -0
  19. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ttl_configurable__snapshot_generated_ttl_configurable_code.snap +7 -21
  20. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__upgradeable__snapshot_generated_upgradeable_code.snap +2 -2
  21. package/contracts/common-macros/src/ttl_configurable.rs +19 -34
  22. package/contracts/common-macros/src/ttl_extendable.rs +36 -0
  23. package/contracts/common-macros/src/upgradeable.rs +5 -5
  24. package/contracts/common-macros/src/utils.rs +9 -0
  25. package/contracts/endpoint-v2/src/constants.rs +4 -4
  26. package/contracts/endpoint-v2/src/endpoint_v2.rs +38 -40
  27. package/contracts/endpoint-v2/src/errors.rs +4 -3
  28. package/contracts/endpoint-v2/src/events.rs +1 -1
  29. package/contracts/endpoint-v2/src/message_lib_manager.rs +18 -5
  30. package/contracts/endpoint-v2/src/messaging_channel.rs +11 -1
  31. package/contracts/endpoint-v2/src/messaging_composer.rs +11 -1
  32. package/contracts/endpoint-v2/src/storage.rs +1 -1
  33. package/contracts/endpoint-v2/src/tests/endpoint_v2/pay_messaging_fees.rs +3 -3
  34. package/contracts/endpoint-v2/src/tests/endpoint_v2/quote.rs +1 -1
  35. package/contracts/endpoint-v2/src/tests/endpoint_v2/require_oapp_auth.rs +2 -2
  36. package/contracts/endpoint-v2/src/tests/endpoint_v2/send.rs +3 -3
  37. package/contracts/endpoint-v2/src/tests/endpoint_v2/set_zro.rs +4 -4
  38. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_receive_lib_for_eid.rs +3 -3
  39. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_registered.rs +1 -1
  40. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_send_lib_for_eid.rs +3 -3
  41. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_supported_eid.rs +1 -1
  42. package/contracts/endpoint-v2/src/tests/messaging_channel/clear_payload.rs +4 -4
  43. package/contracts/endpoint-v2/src/tests/messaging_channel/inbound.rs +1 -1
  44. package/contracts/layerzero-views/src/layerzero_view.rs +3 -6
  45. package/contracts/macro-integration-tests/tests/runtime/ownable/mod.rs +2 -2
  46. package/contracts/macro-integration-tests/tests/runtime/ownable/{only_owner_guard.rs → only_auth_guard.rs} +1 -1
  47. package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/configuration.rs +1 -1
  48. package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/freeze.rs +1 -1
  49. package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/mod.rs +0 -1
  50. package/contracts/macro-integration-tests/tests/ui/ownable/fail/{only_owner_missing_env.rs → only_auth_missing_env.rs} +3 -3
  51. package/contracts/macro-integration-tests/tests/ui/ownable/fail/{only_owner_missing_env.stderr → only_auth_missing_env.stderr} +4 -4
  52. package/contracts/macro-integration-tests/tests/ui/ownable/pass/namespacing_and_imports.rs +2 -3
  53. package/contracts/macro-integration-tests/tests/ui/ownable/pass/{only_owner_env_param_variants.rs → only_auth_env_param_variants.rs} +9 -9
  54. package/contracts/macro-integration-tests/tests/ui/ttl_configurable/pass/minimal_contract.rs +6 -6
  55. package/contracts/message-libs/message-lib-common/src/errors.rs +7 -2
  56. package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/decode_packet_header.rs +3 -3
  57. package/contracts/message-libs/message-lib-common/src/tests/worker_options/append_lz_receive_option.rs +1 -2
  58. package/contracts/message-libs/message-lib-common/src/tests/worker_options/append_native_drop_option.rs +1 -2
  59. package/contracts/message-libs/message-lib-common/src/tests/worker_options/convert_legacy_options.rs +9 -9
  60. package/contracts/message-libs/message-lib-common/src/tests/worker_options/extract_type_3_options.rs +1 -1
  61. package/contracts/message-libs/message-lib-common/src/tests/worker_options/left_pad_to_bytes32.rs +1 -1
  62. package/contracts/message-libs/message-lib-common/src/tests/worker_options/split_worker_options.rs +2 -2
  63. package/contracts/message-libs/simple-message-lib/src/simple_message_lib.rs +7 -9
  64. package/contracts/message-libs/treasury/src/errors.rs +2 -2
  65. package/contracts/message-libs/treasury/src/events.rs +1 -1
  66. package/contracts/message-libs/treasury/src/interfaces/zro_fee_lib.rs +2 -2
  67. package/contracts/message-libs/treasury/src/storage.rs +1 -1
  68. package/contracts/message-libs/treasury/src/tests/treasury_tests.rs +1 -1
  69. package/contracts/message-libs/treasury/src/treasury.rs +14 -16
  70. package/contracts/message-libs/uln-302/src/receive_uln.rs +13 -2
  71. package/contracts/message-libs/uln-302/src/send_uln.rs +24 -4
  72. package/contracts/message-libs/uln-302/src/uln302.rs +6 -24
  73. package/contracts/oapps/counter/Cargo.toml +14 -1
  74. package/contracts/oapps/counter/integration_tests/mod.rs +4 -1
  75. package/contracts/oapps/counter/integration_tests/{setup.rs → setup_sml.rs} +48 -80
  76. package/contracts/oapps/counter/integration_tests/setup_uln.rs +997 -0
  77. package/contracts/oapps/counter/integration_tests/signing.rs +62 -0
  78. package/contracts/oapps/counter/integration_tests/test_with_sml.rs +24 -55
  79. package/contracts/oapps/counter/integration_tests/test_with_uln.rs +314 -0
  80. package/contracts/oapps/counter/integration_tests/utils.rs +196 -53
  81. package/contracts/oapps/counter/src/counter.rs +67 -43
  82. package/contracts/oapps/counter/src/tests/mod.rs +0 -13
  83. package/contracts/oapps/counter/src/tests/test_counter.rs +5 -7
  84. package/contracts/oapps/oapp/src/errors.rs +5 -1
  85. package/contracts/oapps/oapp/src/macro_tests/test_macros.rs +93 -78
  86. package/contracts/oapps/oapp/src/oapp_core.rs +36 -21
  87. package/contracts/oapps/oapp/src/oapp_options_type3.rs +48 -12
  88. package/contracts/oapps/oapp/src/oapp_receiver.rs +106 -41
  89. package/contracts/oapps/oapp/src/oapp_sender.rs +26 -34
  90. package/contracts/oapps/oapp/src/tests/test_oapp_core.rs +9 -8
  91. package/contracts/oapps/oapp/src/tests/test_oapp_options_type3.rs +25 -17
  92. package/contracts/oapps/oapp/src/tests/test_oapp_receiver.rs +7 -7
  93. package/contracts/oapps/oapp/src/tests/test_oapp_sender.rs +14 -15
  94. package/contracts/oapps/oapp-macros/src/generators.rs +128 -0
  95. package/contracts/oapps/oapp-macros/src/lib.rs +113 -56
  96. package/contracts/oapps/oft/Cargo.toml +10 -7
  97. package/contracts/oapps/{oft-std → oft}/integration-tests/extensions/test_oft_fee.rs +3 -4
  98. package/contracts/oapps/{oft-std → oft}/integration-tests/extensions/test_pausable.rs +2 -3
  99. package/contracts/oapps/{oft-std → oft}/integration-tests/extensions/test_rate_limiter.rs +1 -1
  100. package/contracts/oapps/oft/integration-tests/mod.rs +1 -1
  101. package/contracts/oapps/oft/integration-tests/setup.rs +29 -110
  102. package/contracts/oapps/oft/integration-tests/utils.rs +254 -21
  103. package/contracts/oapps/oft/src/extensions/oft_fee.rs +13 -14
  104. package/contracts/oapps/oft/src/extensions/pausable.rs +4 -4
  105. package/contracts/oapps/oft/src/extensions/rate_limiter.rs +5 -5
  106. package/contracts/oapps/oft/src/lib.rs +11 -13
  107. package/contracts/oapps/oft/src/oft.rs +147 -225
  108. package/contracts/oapps/oft/src/oft_types/lock_unlock.rs +9 -13
  109. package/contracts/oapps/oft/src/oft_types/mint_burn.rs +31 -14
  110. package/contracts/oapps/oft/src/oft_types/mod.rs +13 -0
  111. package/contracts/oapps/{oft-std → oft-core}/Cargo.toml +6 -4
  112. package/contracts/oapps/{oft-std → oft-core}/integration-tests/mod.rs +1 -1
  113. package/contracts/oapps/{oft-std → oft-core}/integration-tests/setup.rs +129 -30
  114. package/contracts/oapps/{oft → oft-core}/integration-tests/test_with_sml.rs +3 -3
  115. package/contracts/oapps/oft-core/integration-tests/utils.rs +201 -0
  116. package/contracts/oapps/oft-core/src/errors.rs +13 -0
  117. package/contracts/oapps/oft-core/src/lib.rs +18 -0
  118. package/contracts/oapps/oft-core/src/oft_core.rs +439 -0
  119. package/contracts/oapps/{oft → oft-core}/src/storage.rs +2 -0
  120. package/contracts/oapps/{oft → oft-core}/src/tests/mod.rs +0 -2
  121. package/contracts/oapps/{oft → oft-core}/src/tests/test_decimals.rs +2 -2
  122. package/contracts/oapps/{oft → oft-core}/src/tests/test_lz_receive.rs +7 -7
  123. package/contracts/oapps/{oft → oft-core}/src/tests/test_oft_msg_codec.rs +4 -5
  124. package/contracts/oapps/{oft → oft-core}/src/tests/test_resolve_address.rs +3 -3
  125. package/contracts/oapps/{oft → oft-core}/src/tests/test_utils.rs +78 -37
  126. package/contracts/oapps/oft-core/src/types.rs +58 -0
  127. package/contracts/oapps/{oft → oft-core}/src/utils.rs +1 -1
  128. package/contracts/upgrader/src/lib.rs +4 -4
  129. package/contracts/utils/src/auth.rs +44 -0
  130. package/contracts/utils/src/errors.rs +31 -5
  131. package/contracts/utils/src/lib.rs +3 -0
  132. package/contracts/utils/src/multisig.rs +211 -0
  133. package/contracts/utils/src/ownable.rs +137 -13
  134. package/contracts/utils/src/tests/buffer_reader.rs +6 -6
  135. package/contracts/utils/src/tests/buffer_writer.rs +6 -6
  136. package/contracts/utils/src/tests/bytes_ext.rs +2 -4
  137. package/contracts/utils/src/tests/mod.rs +1 -0
  138. package/contracts/utils/src/tests/multisig.rs +731 -0
  139. package/contracts/utils/src/tests/option_ext.rs +2 -5
  140. package/contracts/utils/src/tests/ownable.rs +456 -7
  141. package/contracts/utils/src/tests/ttl_configurable.rs +27 -16
  142. package/contracts/utils/src/tests/upgradeable.rs +4 -2
  143. package/contracts/utils/src/ttl_configurable.rs +23 -8
  144. package/contracts/utils/src/ttl_extendable.rs +27 -0
  145. package/contracts/utils/src/upgradeable.rs +2 -0
  146. package/contracts/workers/dvn/Cargo.toml +1 -1
  147. package/contracts/workers/dvn/src/auth.rs +7 -7
  148. package/contracts/workers/dvn/src/dvn.rs +10 -38
  149. package/contracts/workers/dvn/src/errors.rs +0 -7
  150. package/contracts/workers/dvn/src/events.rs +1 -14
  151. package/contracts/workers/dvn/src/interfaces/dvn.rs +2 -2
  152. package/contracts/workers/dvn/src/interfaces/mod.rs +0 -2
  153. package/contracts/workers/dvn/src/storage.rs +3 -13
  154. package/contracts/workers/dvn/src/tests/auth.rs +4 -4
  155. package/contracts/workers/dvn/src/tests/dvn.rs +1 -2
  156. package/contracts/workers/dvn/src/tests/multisig/set_signer.rs +7 -8
  157. package/contracts/workers/dvn/src/tests/multisig/set_threshold.rs +11 -8
  158. package/contracts/workers/dvn/src/tests/multisig/verify_signatures.rs +11 -12
  159. package/contracts/workers/dvn/src/tests/setup.rs +5 -5
  160. package/contracts/workers/dvn-fee-lib/Cargo.toml +1 -1
  161. package/contracts/workers/dvn-fee-lib/src/dvn_fee_lib.rs +3 -6
  162. package/contracts/workers/executor/src/auth.rs +80 -16
  163. package/contracts/workers/executor/src/executor.rs +5 -31
  164. package/contracts/workers/executor/src/storage.rs +2 -9
  165. package/contracts/workers/executor-fee-lib/Cargo.toml +1 -1
  166. package/contracts/workers/executor-fee-lib/src/executor_fee_lib.rs +3 -6
  167. package/contracts/workers/executor-helper/Cargo.toml +1 -1
  168. package/contracts/workers/executor-helper/src/executor_helper.rs +53 -73
  169. package/contracts/workers/price-feed/Cargo.toml +1 -1
  170. package/contracts/workers/price-feed/src/price_feed.rs +7 -10
  171. package/contracts/workers/worker/src/errors.rs +4 -0
  172. package/contracts/workers/worker/src/tests/worker.rs +7 -6
  173. package/contracts/workers/worker/src/worker.rs +20 -16
  174. package/package.json +7 -5
  175. package/sdk/.turbo/turbo-build.log +1 -0
  176. package/sdk/.turbo/turbo-test.log +1019 -0
  177. package/sdk/dist/generated/bml.d.ts +95 -8
  178. package/sdk/dist/generated/bml.js +95 -36
  179. package/sdk/dist/generated/counter.d.ts +289 -44
  180. package/sdk/dist/generated/counter.js +119 -49
  181. package/sdk/dist/generated/dvn.d.ts +312 -229
  182. package/sdk/dist/generated/dvn.js +144 -83
  183. package/sdk/dist/generated/dvn_fee_lib.d.ts +258 -63
  184. package/sdk/dist/generated/dvn_fee_lib.js +95 -26
  185. package/sdk/dist/generated/endpoint.d.ts +219 -24
  186. package/sdk/dist/generated/endpoint.js +108 -41
  187. package/sdk/dist/generated/executor.d.ts +239 -87
  188. package/sdk/dist/generated/executor.js +135 -63
  189. package/sdk/dist/generated/executor_fee_lib.d.ts +278 -74
  190. package/sdk/dist/generated/executor_fee_lib.js +135 -59
  191. package/sdk/dist/generated/executor_helper.d.ts +163 -21
  192. package/sdk/dist/generated/executor_helper.js +124 -52
  193. package/sdk/dist/generated/oft.d.ts +1842 -0
  194. package/sdk/dist/generated/oft.js +345 -0
  195. package/sdk/dist/generated/price_feed.d.ts +258 -63
  196. package/sdk/dist/generated/price_feed.js +95 -26
  197. package/sdk/dist/generated/sml.d.ts +235 -34
  198. package/sdk/dist/generated/sml.js +126 -53
  199. package/sdk/dist/generated/treasury.d.ts +1016 -0
  200. package/sdk/dist/generated/treasury.js +248 -0
  201. package/sdk/dist/generated/uln302.d.ts +235 -34
  202. package/sdk/dist/generated/uln302.js +126 -53
  203. package/sdk/dist/generated/upgrader.d.ts +17 -2
  204. package/sdk/dist/generated/upgrader.js +19 -1
  205. package/sdk/dist/index.d.ts +2 -1
  206. package/sdk/dist/index.js +2 -1
  207. package/sdk/package.json +6 -3
  208. package/sdk/src/index.ts +2 -1
  209. package/sdk/test/counter-sml.test.ts +376 -0
  210. package/sdk/test/counter-uln.test.ts +493 -0
  211. package/sdk/test/{oft.test.ts → oft-sml.test.ts} +196 -321
  212. package/sdk/test/suites/constants.ts +22 -2
  213. package/sdk/test/suites/globalSetup.ts +450 -0
  214. package/sdk/test/suites/localnet.ts +23 -6
  215. package/sdk/test/upgrader.test.ts +7 -16
  216. package/sdk/test/utils.ts +558 -85
  217. package/sdk/turbo.json +8 -0
  218. package/sdk/vitest.config.ts +21 -0
  219. package/tools/ts-bindings-gen/Cargo.toml +2 -0
  220. package/tools/ts-bindings-gen/src/main.rs +52 -4
  221. package/contracts/common-macros/src/contract_impl.rs +0 -52
  222. package/contracts/common-macros/src/ownable.rs +0 -41
  223. package/contracts/common-macros/src/tests/contract_impl.rs +0 -386
  224. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ownable__snapshot_generated_ownable_code.snap +0 -12
  225. package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/extend_instance_ttl.rs +0 -50
  226. package/contracts/oapps/oapp-macros/src/oapp_core.rs +0 -41
  227. package/contracts/oapps/oapp-macros/src/oapp_full.rs +0 -21
  228. package/contracts/oapps/oapp-macros/src/oapp_options_type3.rs +0 -31
  229. package/contracts/oapps/oapp-macros/src/oapp_receiver.rs +0 -48
  230. package/contracts/oapps/oapp-macros/src/oapp_sender.rs +0 -21
  231. package/contracts/oapps/oapp-macros/src/util.rs +0 -107
  232. package/contracts/oapps/oft/src/constants.rs +0 -5
  233. package/contracts/oapps/oft/src/default_oft_impl.rs +0 -152
  234. package/contracts/oapps/oft/src/errors.rs +0 -8
  235. package/contracts/oapps/oft/src/interfaces/mint_burn_token.rs +0 -23
  236. package/contracts/oapps/oft/src/interfaces/mod.rs +0 -3
  237. package/contracts/oapps/oft/src/tests/extensions/mod.rs +0 -11
  238. package/contracts/oapps/oft/src/tests/extensions/setup.rs +0 -903
  239. package/contracts/oapps/oft/src/tests/extensions/test_oft_fee.rs +0 -749
  240. package/contracts/oapps/oft/src/tests/extensions/test_pausable.rs +0 -432
  241. package/contracts/oapps/oft/src/tests/extensions/test_rate_limiter.rs +0 -1078
  242. package/contracts/oapps/oft/src/types.rs +0 -38
  243. package/contracts/oapps/oft-std/integration-tests/utils.rs +0 -427
  244. package/contracts/oapps/oft-std/src/lib.rs +0 -16
  245. package/contracts/oapps/oft-std/src/oft.rs +0 -156
  246. package/contracts/workers/dvn/src/interfaces/multisig.rs +0 -56
  247. package/contracts/workers/dvn/src/multisig.rs +0 -157
  248. package/sdk/dist/generated/oft_std.d.ts +0 -1544
  249. package/sdk/dist/generated/oft_std.js +0 -271
  250. package/sdk/test/index.test.ts +0 -375
  251. /package/contracts/oapps/{oft-std → oft}/integration-tests/extensions/mod.rs +0 -0
  252. /package/contracts/oapps/{oft → oft-core}/src/codec/mod.rs +0 -0
  253. /package/contracts/oapps/{oft → oft-core}/src/codec/oft_compose_msg_codec.rs +0 -0
  254. /package/contracts/oapps/{oft → oft-core}/src/codec/oft_msg_codec.rs +0 -0
  255. /package/contracts/oapps/{oft → oft-core}/src/events.rs +0 -0
  256. /package/contracts/oapps/{oft → oft-core}/src/tests/test_oft_compose_msg_codec.rs +0 -0
  257. /package/contracts/oapps/{oft → oft-core}/src/tests/test_oft_version.rs +0 -0
  258. /package/contracts/oapps/{oft → oft-core}/src/tests/test_quote_oft.rs +0 -0
  259. /package/contracts/oapps/{oft → oft-core}/src/tests/test_quote_send.rs +0 -0
  260. /package/contracts/oapps/{oft → oft-core}/src/tests/test_send.rs +0 -0
  261. /package/contracts/oapps/{oft → oft-core}/src/tests/test_token.rs +0 -0
  262. /package/sdk/test/suites/{testUpgradeable.ts → dummyContractClient.ts} +0 -0
@@ -0,0 +1,1842 @@
1
+ import { Buffer } from "buffer";
2
+ import { AssembledTransaction, Client as ContractClient, ClientOptions as ContractClientOptions, MethodOptions } from '@stellar/stellar-sdk/contract';
3
+ import type { u32, u64, i128, Option } from '@stellar/stellar-sdk/contract';
4
+ export * from '@stellar/stellar-sdk';
5
+ export * as contract from '@stellar/stellar-sdk/contract';
6
+ export * as rpc from '@stellar/stellar-sdk/rpc';
7
+ export type MigrationData = void;
8
+ /**
9
+ * Embedded WASM bytecode (base64-encoded)
10
+ * Size: 59520 bytes (58.12 KB)
11
+ */
12
+ export declare const WASM_BASE64 = "AGFzbQEAAAAB+gEoYAF+AX5gAn5+AX5gA35+fgF+YAR+fn5+AX5gAAF+YAF+AX9gAn9/AX9gBX5+fn5+AGACf38BfmADfn5+AGADf39/AGAEf39/fwBgBH9/fn4AYAN/f38BfmABfwBgAn9/AGACfn8BfmABfgBgAn5+AX9gAn9+AGAAAGAAAX9gAX8BfmACfn8AYAN/fn4AYAV/fn9+fgBgA35/fwBgAX8Bf2ACf34Bf2AFfn9/f38AYAR/f39/AX5gBn9+fn5+fwBgBX9+fn5+AGAGfn5+fn5+AX5gBH5+fn4AYAJ+fwF/YAR+fn9/AX5gAn5+AGAEf35+fwBgA39/fwF/AuUBJgF2ATMAAAF2ATEAAQFiAW0AAgFsATcAAwFsAV8AAgFiATgAAAFiAWUAAQFsATEAAQFiATQABAFhATAAAAFiAV8AAAFiAWYAAgF4ATEAAQFsATIAAQF2AV8ABAF4ATcABAFkAV8AAgFhATYAAAFpAV8AAAFpATAAAAFiATEAAwFiATMAAQF2AWcAAQFpATgAAAFpATcAAAFpATYAAQFiAWoAAQFiATIAAwFtATkAAgFtAWEAAwF4ATAAAQFiATAAAAF4ATQABAF4ATMABAF4ATgABAFsATAAAQFsATgAAQF4ATUAAAO2AbQBBQYHAQgJBwoICwgMAA0ODwgOEBEIEg4LDwgTCgQUFRYUBAQOFxQOFg4EChMPBBYYERkOExoTGxwcFA4EBBQVCgYKBA8KDAwEEw8bDhYdExgTHgofAwgAAQEBAQABAAASAAAEAAQABAATCCACFhMgBAQFFAQEAxUAEyERIhYEBAEAAgATASEWCCMBFCQCBAQAAQEAARMVChYEDwQEAQQEACUBFBgEBBQKEwoPHyYgICYgJycgBAUBcAEBAQUDAQARBiEEfwFBgIDAAAt/AEGQicAAC38AQb6LwAALfwBBwIvAAAsHqwc2Bm1lbW9yeQIADnNldF9yYXRlX2xpbWl0AHoQdW5zZXRfcmF0ZV9saW1pdAB9EXJhdGVfbGltaXRfY29uZmlnAH4UcmF0ZV9saW1pdF9pbl9mbGlnaHQAfxNyYXRlX2xpbWl0X2NhcGFjaXR5AIABE3NldF9kZWZhdWx0X2ZlZV9icHMAgQELc2V0X2ZlZV9icHMAggENdW5zZXRfZmVlX2JwcwCDARdzZXRfZmVlX2RlcG9zaXRfYWRkcmVzcwCEAQtoYXNfZmVlX2JwcwCGARFlZmZlY3RpdmVfZmVlX2JwcwCHAQ9kZWZhdWx0X2ZlZV9icHMAiAEHZmVlX2JwcwCJARNmZWVfZGVwb3NpdF9hZGRyZXNzAIoBCnNldF9wYXVzZWQAiwEJaXNfcGF1c2VkAIwBCXF1b3RlX29mdACNAQpxdW90ZV9zZW5kAJEBBXRva2VuAJUBD3NoYXJlZF9kZWNpbWFscwCWARdkZWNpbWFsX2NvbnZlcnNpb25fcmF0ZQCZARFhcHByb3ZhbF9yZXF1aXJlZACaAQRzZW5kAJsBDV9fY29uc3RydWN0b3IAnwEIb2Z0X3R5cGUAowEKYXV0aG9yaXplcgCkARBlbmZvcmNlZF9vcHRpb25zAKUBFHNldF9lbmZvcmNlZF9vcHRpb25zAKYBD2NvbWJpbmVfb3B0aW9ucwCnARVhbGxvd19pbml0aWFsaXplX3BhdGgAqAEKbmV4dF9ub25jZQCqAQpsel9yZWNlaXZlAKsBFWlzX2NvbXBvc2VfbXNnX3NlbmRlcgCyAQxvYXBwX3ZlcnNpb24AswEIZW5kcG9pbnQAtAEEcGVlcgC1AQhzZXRfcGVlcgC3AQxzZXRfZGVsZWdhdGUAuAEPc2V0X3R0bF9jb25maWdzALkBC3R0bF9jb25maWdzAL4BEmZyZWV6ZV90dGxfY29uZmlncwDAARVpc190dGxfY29uZmlnc19mcm96ZW4AwQETZXh0ZW5kX2luc3RhbmNlX3R0bADCAQVvd25lcgDDAQ1wZW5kaW5nX293bmVyAMQBEnRyYW5zZmVyX293bmVyc2hpcADFARpwcm9wb3NlX293bmVyc2hpcF90cmFuc2ZlcgDHARBhY2NlcHRfb3duZXJzaGlwAMoBEnJlbm91bmNlX293bmVyc2hpcADLAQFfAwELb2Z0X3ZlcnNpb24AswEKX19kYXRhX2VuZAMCC19faGVhcF9iYXNlAwMKzusBtAGuAQMBfwF+An9BAiEBAkAgAEL/AYNCywBSDQAgABCAgICAACICQoCAgIAQVA0AAkAgAEIEEIGAgIAAIgCnQf8BcSIDQcoARg0AIANBDkcNAQsgAkIgiKchAwJAAkACQCAAQeCBwIAArUIghkIEhEKEgICAIBCCgICAAEIgiKcOAgABAwtBASADEKeAgIAADQJBACEEDAELQQEhBEEBIAMQp4CAgAANAQsgBCEBCyABCxkAAkAgASAASQ0AIAEgAGsPCxDfgICAAAALsQEBAn8jgICAgABBMGsiBSSAgICAACAFIAMgBBCpgICAADcDECAFIAI3AwggBSABNwMAQQAhBgNAAkAgBkEYRw0AQQAhBgJAA0AgBkEYRg0BIAVBGGogBmogBSAGaikDADcDACAGQQhqIQYMAAsLIABCju7qlb623vMAIAVBGGpBAxCqgICAABCrgICAACAFQTBqJICAgIAADwsgBUEYaiAGakICNwMAIAZBCGohBgwACwtDAQF/I4CAgIAAQRBrIgIkgICAgAAgAiAAIAEQ9YCAgAACQCACKAIAQQFHDQAACyACKQMIIQEgAkEQaiSAgICAACABCxoAIACtQiCGQgSEIAGtQiCGQgSEEJaAgIAACyEAAkAgACABIAIQkICAgABC/wGDQgJRDQAQ34CAgAAACwuxAQECfyOAgICAAEEwayIFJICAgIAAIAUgAyAEEKmAgIAANwMQIAUgAjcDCCAFIAE3AwBBACEGA0ACQCAGQRhHDQBBACEGAkADQCAGQRhGDQEgBUEYaiAGaiAFIAZqKQMANwMAIAZBCGohBgwACwsgAEKO7uqVvrbe8wAgBUEYakEDEKqAgIAAEKuAgIAAIAVBMGokgICAgAAPCyAFQRhqIAZqQgI3AwAgBkEIaiEGDAALCycAQQEgABCugICAAEIBIAGtQiCGQgSEIAKtQiCGQgSEEIOAgIAAGgvHAQIBfwF+I4CAgIAAQRBrIgIkgICAgAACQAJAAkACQAJAAkAgAA4DAAECAAsgAkGAgMCAAEENENCAgIAAIAIoAgANAyACIAIpAwgQ0YCAgAAMAgsgAkGNgMCAAEEGENCAgIAAIAIoAgANAiACIAIpAwggAa1CIIZCBIQQ1YCAgAAMAQsgAkGTgMCAAEERENCAgIAAIAIoAgANASACIAIpAwgQ0YCAgAALIAIpAwghAyACKQMAUA0BCwALIAJBEGokgICAgAAgAwsnACAAIAEQsICAgABCASACrUIghkIEhCADrUIghkIEhBCDgICAABoL+gECAX8CfiOAgICAAEEwayICJICAgIAAIAJBIGpByILAgABBCRDQgICAAAJAAkAgAigCIA0AIAIpAyghAwJAAkAgAUEBcUUNACACQSBqQdeBwIAAQQgQ0ICAgAAgAigCIA0CIAJBIGogAikDKBDRgICAAAwBCyACQSBqQdCBwIAAQQcQ0ICAgAAgAigCIA0BIAJBIGogAikDKBDRgICAAAsgAikDKCEEIAIpAyCnDQAgAiAENwMQIAIgAzcDCCACIACtQiCGQgSENwMYIAJBIGogAkEIahDSgICAACACKAIgRQ0BCwALIAIpAyghAyACQTBqJICAgIAAIAMLHQAgACABEK6AgIAAIAIQsoCAgAAgAxCEgICAABoLQQEBfyOAgICAAEEQayIBJICAgIAAIAEgABD2gICAAAJAIAEoAgBBAUcNAAALIAEpAwghACABQRBqJICAgIAAIAALzwECAX8DfiOAgICAAEEQayIDJICAgIAAIANBBGoQtICAgAACQCADKAIEQQFHDQAgAygCCCADKAIMELWAgIAACyAAIAEQtoCAgAAiBBCFgICAACEFIAIpAwAhBgJAAkAgBUKAgICAEFQNAAJAIAYQhYCAgABCgICAgBBaDQAgBCEGDAELIAYQhYCAgABC/////x9YDQEgAhC3gICAACAEIAZBAhC4gICAABCGgICAACEGCyADQRBqJICAgIAAIAYPC0KDgICAgPoBELmAgIAAAAsMACAAQQEQ0IGAgAALGwAgAK1CIIZCBIQgAa1CIIZCBIQQpICAgAAaC70BBAF/AX4BfwF+I4CAgIAAQRBrIgIkgICAgAAgAkEEahC0gICAAAJAIAIoAgRBAUcNACACKAIIIAIoAgwQtYCAgAALAkACQCAAIAEQuoCAgAAiA0IBELuAgIAAIgRFDQAgA0IBEIeAgIAAIgVC/wGDQsgAUg0BIAJBBGoQvICAgAAgAigCBEEBRw0AIAAgASACKAIIIAIoAgwQvYCAgAALEIiAgIAAIQMgAkEQaiSAgICAACAFIAMgBBsPCwALvQECAX8BfiOAgICAAEEQayIBJICAgIAAIAFBADYCCCABIAA2AgQCQAJAAkAgAUEEakECEK2BgIAAIgIQhYCAgABCgICAgHCDQoCAgIAgUg0AIAFBADsBDiACEIWAgIAAQoCAgIBwg0KAgICAIFINASACIAFBDmpBAhDagICAACABLwEOQYAGRw0CIAFBEGokgICAgAAPC0KDgICAgIIBELmAgIAAAAsQsIGAgAAAC0KDgICAgPoBELmAgIAAAAslACAAIAGtQiCGQgSEIAAQhYCAgABCgICAgHCDQgSEEIuAgIAACwsAIAAQpYCAgAAaC4oBAgF/AX4jgICAgABBMGsiAiSAgICAACACQSBqQeCFwIAAQQ8Q0ICAgAACQAJAIAIoAiANACACIAIpAyg3AwggAiABrUIghkIEhDcDGCACIACtQiCGQgSENwMQIAJBIGogAkEIahDSgICAACACKAIgRQ0BCwALIAIpAyghAyACQTBqJICAgIAAIAMLDwAgACABEKOAgIAAQgFRCwwAIABBAhDQgYCAAAsnACAAIAEQuoCAgABCASACrUIghkIEhCADrUIghkIEhBCDgICAABoLxgECAX8BfiOAgICAAEEQayICJICAgIAAIAIQtICAgAACQCACKAIAQQFHDQAgAigCBCACKAIIELWAgIAACwJAAkACQEEBIAEQv4CAgAAiA0IBELuAgIAARQ0AIAIgA0IBEIeAgIAAEMCAgIAAIAIoAgBBAUcNAQALIABCADcDAAwBCyACKQMIIQMgAEIBNwMAIAAgAzcDCCACELyAgIAAIAIoAgBBAUcNACABIAIoAgQgAigCCBDBgICAAAsgAkEQaiSAgICAAAubAQIBfwF+I4CAgIAAQRBrIgIkgICAgAACQAJAAkACQCAAQQFxRQ0AIAJBnIXAgABBBBDQgICAACACKAIADQIgAiACKQMIIAGtQiCGQgSEENWAgIAADAELIAJBlIXAgABBCBDQgICAACACKAIADQEgAiACKQMIENGAgIAACyACKQMIIQMgAikDAFANAQsACyACQRBqJICAgIAAIAMLIwACQCABQv8Bg0LIAFENACAAQgE3AwAPCyAAIAEQ24CAgAALJwBBASAAEL+AgIAAQgEgAa1CIIZCBIQgAq1CIIZCBIQQg4CAgAAaC4cBAgF/AX4jgICAgABBEGsiACSAgICAACAAQQRqELSAgIAAAkAgACgCBEEBRw0AIAAoAgggACgCDBC1gICAAAsCQAJAQQAgABC/gICAACIBQgIQu4CAgABFDQAgAUICEIeAgIAAIgFC/wGDQs0AUQ0BAAsQw4CAgAAACyAAQRBqJICAgIAAIAELCQAQ34CAgAAAC4sBAgJ/AX4jgICAgABBEGsiACSAgICAACAAQQRqELSAgIAAAkAgACgCBEEBRw0AIAAoAgggACgCDBC1gICAAAtBACEBAkBBABDFgICAACICQgIQu4CAgABFDQBBASEBAkACQCACQgIQh4CAgACnQf8BcQ4CAQIACwALQQAhAQsgAEEQaiSAgICAACABC8IBAgF/AX4jgICAgABBEGsiASSAgICAAAJAAkACQAJAAkACQCAAQf8BcQ4DAAECAAsgAUGmi8CAAEEGENCAgIAAIAEoAgANAyABIAEpAwgQ0YCAgAAMAgsgAUGsi8CAAEEIENCAgIAAIAEoAgANAiABIAEpAwgQ0YCAgAAMAQsgAUG0i8CAAEEKENCAgIAAIAEoAgANASABIAEpAwgQ0YCAgAALIAEpAwghAiABKQMAUA0BCwALIAFBEGokgICAgAAgAgsPABDHgICAABCJgICAABoLZgIBfwF+I4CAgIAAQRBrIgAkgICAgAAgABC0gICAAAJAIAAoAgBBAUcNACAAKAIEIAAoAggQtYCAgAALIAAQyYCAgAAgACkDCCEBIAApAwBBiggQyoCAgAAgAEEQaiSAgICAACABC0oCAX8BfiOAgICAAEEQayIAJICAgIAAIAAQyYCAgAAgACkDCCEBIAApAwBBiggQyoCAgAAgARCJgICAABogAEEQaiSAgICAACABC1ABAX8jgICAgABBEGsiASSAgICAACABQQRqELSAgIAAAkAgASgCBEEBRw0AIAEoAgggASgCDBC1gICAAAsgABDOgICAACABQRBqJICAgIAACykAAkAgAKdBAXFFDQAPCyABQfp3aq1CIIZCg4CAgOCAAXwQuYCAgAAAC0IBAX8jgICAgABBEGsiACSAgICAACAAEMyAgIAAAkAgACkDAFANAEKDgICAsIEBELmAgIAAAAsgAEEQaiSAgICAAAuTAQIBfwJ+I4CAgIAAQRBrIgEkgICAgAAgAUEEahC0gICAAAJAIAEoAgRBAUcNACABKAIIIAEoAgwQtYCAgAALQgAhAgJAAkBBARDNgICAACIDQgAQu4CAgABFDQAgA0IAEIeAgIAAIgJC/wGDQs0AUg0BIAAgAjcDCEIBIQILIAAgAjcDACABQRBqJICAgIAADwsAC5IBAgF/AX4jgICAgABBEGsiASSAgICAAAJAAkACQAJAIABBAXFFDQAgAUG5isCAAEEMENCAgIAAIAEoAgANAiABIAEpAwgQ0YCAgAAMAQsgAUG0isCAAEEFENCAgIAAIAEoAgANASABIAEpAwgQ0YCAgAALIAEpAwghAiABKQMAUA0BCwALIAFBEGokgICAgAAgAgtNAQJ+QgAhAQJAAkBBABDNgICAACICQgIQu4CAgABFDQAgAkICEIeAgIAAIgFC/wGDQs0AUg0BIAAgATcDCEIBIQELIAAgATcDAA8LAAtgAgF/AX4jgICAgABBEGsiACSAgICAACAAQcODwIAAQQcQ0ICAgAACQAJAIAAoAgANACAAIAApAwgQ0YCAgAAgACgCAEEBRw0BCwALIAApAwghASAAQRBqJICAgIAAIAELUQIBfwF+I4CAgIAAQRBrIgMkgICAgAAgAyABIAIQzYGAgABCASEEAkAgAygCAA0AIAAgAykDCDcDCEIAIQQLIAAgBDcDACADQRBqJICAgIAAC0QBAX8jgICAgABBEGsiAiSAgICAACACIAE3AwggAkEIakEBEKqAgIAAIQEgAEIANwMAIAAgATcDCCACQRBqJICAgIAAC10CAX8BfiOAgICAAEEgayICJICAgIAAIAIgASkDEDcDGCACIAEpAwg3AxAgAiABKQMANwMIIAJBCGpBAxCqgICAACEDIABCADcDACAAIAM3AwggAkEgaiSAgICAAAtgAgF/AX4jgICAgABBEGsiACSAgICAACAAQbCBwIAAQQYQ0ICAgAACQAJAIAAoAgANACAAIAApAwgQ0YCAgAAgACgCAEEBRw0BCwALIAApAwghASAAQRBqJICAgIAAIAELkgECAX8BfiOAgICAAEEQayIBJICAgIAAAkACQAJAAkAgAEEBcUUNACABQdeBwIAAQQgQ0ICAgAAgASgCAA0CIAEgASkDCBDRgICAAAwBCyABQdCBwIAAQQcQ0ICAgAAgASgCAA0BIAEgASkDCBDRgICAAAsgASkDCCECIAEpAwBQDQELAAsgAUEQaiSAgICAACACC0gBAX8jgICAgABBEGsiAySAgICAACADIAI3AwggAyABNwMAIANBAhCqgICAACECIABCADcDACAAIAI3AwggA0EQaiSAgICAAAseAAJAIACnQQFxRQ0ADwtCg4CAgJD6ARC5gICAAAAL7gUDAX8FfgN/I4CAgIAAQdAAayIFJICAgIAAIAIpAzAiBhCFgICAACEHIAVBEGoQ2ICAgAACQAJAAkACQCAFKQMQIgggBSkDGCIJhFANACACKQMgIQoCQCADIARCgICAgICAgICAf4WEQgBSDQAgCCAJg0J/UQ0BCyAFIAMgBCAIIAkQ1IGAgAAgBSkDCEIBWQ0BIAUpAwAhBAJAAkAgB0L/////D1YNACAFIAQ3AzggBSAKNwMwQgAhBiAFQgA3AxAgBUEgaiELQQEhDAwBCyAFQRBqIAEQioCAgABBBBC4gICAACIDQgRChICAgMAAEIuAgIAAENmAgIAAIAUoAhBBAUYNBCAFKQMYIQggBUEANgJAIAggBUHAAGpBBBDagICAACAFKAJAIgtB////B3ENAwJAAkACQCALQRh2DgIAAQYLIAVBwABqIANChICAgMAAQoSAgICAARCLgICAABDZgICAACAFKAJAQQFGDQYgBSkDSCEIIAVBADYCQCAIIAVBwABqQQQQ2oCAgAAgBSgCQA0FIAVBwABqIANChICAgIABQoSAgICABRCLgICAABDbgICAACAFKAJAQQFHDQEMBgsgBUHAAGogA0KEgICAwABChICAgMAEEIuAgIAAENuAgIAAIAUoAkBBAUYNBQsgBSkDSCEDIAVBKGohCyAFIAQ3AzggBSAKNwMwIAVCATcDICAFIAM3AxggBUIBNwMQQQIhDAsgCyAGNwMAIAVBEGoQ3ICAgAAhCyAFEIiAgIAANwNAIAVBwABqIAoQ3YCAgAAgBBDegICAACENAkACQCALDQAgDSkDACEEDAELIAdC/////w9YDQMgDSADEN2AgIAAIQsgBSgCIEUNAyALKQMAIAUpAygQhoCAgAAhBAsgACACKAJAIAwgAkEoahCzgICAADcDCCAAIAQ3AwAgBUHQAGokgICAgAAPCxDfgICAAAALQoOAgICg9wIQuYCAgAAACxDDgICAAAALAAuBAQIBfwF+I4CAgIAAQSBrIgEkgICAgAACQAJAQQAQooGAgAAiAkICELuAgIAARQ0AIAEgAkICEIeAgIAAEPSAgIAAIAEoAgBBAUcNAQALQoOAgICQ9wIQuYCAgAAACyABKQMQIQIgACABKQMYNwMIIAAgAjcDACABQSBqJICAgIAACzYBAX5CASECAkAgARCFgICAAEKAgICAcINCgICAgMAAUg0AIAAgATcDCEIAIQILIAAgAjcDAAsfACAAQgQgAa1CIIZCBIQgAq1CIIZCBIQQlICAgAAaCzYBAX5CASECAkAgARCFgICAAEKAgICAcINCgICAgIAEUg0AIAAgATcDCEIAIQILIAAgAjcDAAszAQF/QQAhAQJAIAApAwBQDQAgACgCEEEBRw0AIAApAxgQhYCAgABC/////w9WIQELIAELwgEBBH8jgICAgABBwABrIgIkgICAgAAgAkEgakEYaiIDQgA3AwAgAkEgakEQaiIEQgA3AwAgAkEgakEIaiIFQgA3AwAgAkIANwMgIAEgAkEgakEgENqAgIAAIAJBGGogAykDADcDACACQRBqIAQpAwA3AwAgAkEIaiAFKQMANwMAIAIgAikDIDcDACAAKQMAIQEgACABIAEQhYCAgABCgICAgHCDQgSEIAJBIBCxgYCAADcDACACQcAAaiSAgICAACAAC6cBAQF/I4CAgIAAQRBrIgIkgICAgAAgAiABQjiGIAFCgP4Dg0IohoQgAUKAgPwHg0IYhiABQoCAgPgPg0IIhoSEIAFCCIhCgICA+A+DIAFCGIhCgID8B4OEIAFCKIhCgP4DgyABQjiIhISENwMIIAApAwAhASAAIAEgARCFgICAAEKAgICAcINCBIQgAkEIakEIELGBgIAANwMAIAJBEGokgICAgAAgAAsJABDMgYCAAAALUAEBfyOAgICAAEEQayIBJICAgIAAIAFBBGoQtICAgAACQCABKAIEQQFHDQAgASgCCCABKAIMELWAgIAACyAAENiAgIAAIAFBEGokgICAgAALVAIBfwF+I4CAgIAAQRBrIgAkgICAgAAgAEEEahC0gICAAAJAIAAoAgRBAUcNACAAKAIIIAAoAgwQtYCAgAALEOKAgIAAIQEgAEEQaiSAgICAACABC0cBAX4CQAJAQQEQooGAgAAiAEICELuAgIAARQ0AIABCAhCHgICAACIAQv8Bg0LNAFENAQALQoOAgICQ9wIQuYCAgAAACyAACx0AAkAQ5ICAgAANAA8LQoOAgIDAnwIQuYCAgAAAC0UCAX8BfkEAIQACQBDTgICAACIBQgIQu4CAgABFDQBBASEAAkACQCABQgIQh4CAgACnQf8BcQ4CAQIACwALQQAhAAsgAAvNAgIBfwd+I4CAgIAAQfAAayIDJICAgIAAQgAhBEIAIQUCQAJAAkACQCABIAIQ5oCAgABFDQAgA0EwaiABIAIQ54CAgAAgAygCMEEBcUUNAiADKQNYIQYgAykDUCEHIAMpA0ghBCADKQNAIQggAykDYCEJIAMpA2ghBRDogICAACIKIAVUDQMgA0EANgIsIANBEGogCiAFfUIAIAggBCADQSxqENGBgIAAIAMoAiwNASAJUA0BQgAhBCADIAMpAxAgAykDGCAJQgAQ1IGAgABCACEFIAMpAwAiCCAHWiADKQMIIgkgBlkgCSAGURsNACAGIAmFIAYgBiAJfSAHIAhUrX0iBYWDQgBTDQEgByAIfSEECyAAIAQ3AwAgACAFNwMIIANB8ABqJICAgIAADwsQ34CAgAAACxDDgICAAAALQoOAgICQrAIQuYCAgAAAC2UBAn8jgICAgABBEGsiAiSAgICAAAJAIAEgABCwgICAAEIBELuAgIAAIgNFDQAgAkEEahC8gICAACACKAIEQQFHDQAgASAAIAIoAgggAigCDBCvgICAAAsgAkEQaiSAgICAACADC5oDBAF/AX4BfwV+I4CAgIAAQcAAayIDJICAgIAAAkACQAJAIAIgARCwgICAACIEQgEQu4CAgABFDQAgBEIBEIeAgIAAIQRBACEFAkADQCAFQSBGDQEgAyAFakICNwMAIAVBCGohBQwACwsCQCAEQv8Bg0LMAFINACAEQaiCwIAAQQQgA0EEEPOAgIAAIANBIGogAykDABD0gICAACADKAIgQQFGDQAgAykDOCEEIAMpAzAhBiADQSBqIAMpAwgQ7oCAgAAgAygCIA0AIAMpAyghByADQSBqIAMpAxAQ9ICAgAAgAygCIEEBRg0AIAMpAzghCCADKQMwIQkgA0EgaiADKQMYEO6AgIAAIAMoAiBBAUcNAgsACyAAQgA3AwggAEIANwMADAELIAMpAyghCiAAIAY3AyAgACAJNwMQIABCADcDCCAAQgE3AwAgACAHNwM4IAAgCjcDMCAAIAQ3AyggACAINwMYIANBIGoQvICAgAAgAygCIEUNACACIAEgAygCJCADKAIoEK+AgIAACyADQcAAaiSAgICAAAs9AgF+AX8CQBCggICAACIAp0H/AXEiAUEGRg0AAkAgAUHAAEcNACAAEJOAgIAADwsQ34CAgAAACyAAQgiIC5kBAgF/An4jgICAgABB8ABrIgIkgICAgAAgAkEwaiAAIAEQ5YCAgAAgAikDOCEDIAIpAzAhBCACQTBqIAAgARDngICAAAJAIAIoAjBBAXENABDDgICAAAALIAIgAkHAAGpBMBDYgYCAACICIAM3AxggAiAENwMQIAIQ6ICAgAA3AyggACABIAIQ6oCAgAAgAkHwAGokgICAgAALlgICAX8EfiOAgICAAEEwayIDJICAgIAAIAEgABCwgICAACEEIANBIGogAikDECACKQMYEPWAgIAAAkAgAygCIA0AIAMpAyghBSADQSBqIAIpAygQ9oCAgAAgAygCIA0AIAMpAyghBiADQSBqIAIpAwAgAikDCBD1gICAACADKAIgDQAgAykDKCEHIANBIGogAikDIBD2gICAACADKAIgQQFGDQAgAyADKQMoNwMYIAMgBzcDECADIAY3AwggAyAFNwMAIARBqILAgABBBCADQQQQ94CAgABCARCEgICAABogAxC8gICAAAJAIAMoAgBBAUcNACABIAAgAygCBCADKAIIEK+AgIAACyADQTBqJICAgIAADwsAC7gCBAF/An4BfwR+I4CAgIAAQfAAayIEJICAgIAAAkACQAJAAkAgACABEOaAgIAARQ0AIAAgARDpgICAACAEQTBqIAAgARDngICAACAEKAIwQQFxRQ0CQgAhBUIAIQYCQCAEIARBwABqQTAQ2IGAgAAiBykDACIIIAcpAxAiCVYgBykDCCIKIAcpAxgiC1UgCiALURtFDQAgCiALhSAKIAogC30gCCAJVK19IgaFg0IAUw0CIAggCX0hBQsgAiAFViADIAZVIAMgBlEbDQMgCyADhUJ/hSALIAsgA3wgCSACfCIDIAlUrXwiAoWDQgBTDQEgByADNwMQIAcgAjcDGCAAIAEgBxDqgICAAAsgBEHwAGokgICAgAAPCxDfgICAAAALEMOAgIAAAAtCg4CAgICsAhC5gICAAAAL5gEEAX8CfgF/An4jgICAgABB8ABrIgQkgICAgAACQAJAAkAgACABEOaAgIAARQ0AIAAgARDpgICAACAEQTBqIAAgARDngICAACAEKAIwQQFxRQ0BQgAhBUIAIQYCQCACIAQgBEHAAGpBMBDYgYCAACIHKQMQIghUIAMgBykDGCIJUyADIAlRG0UNACAJIAOFIAkgCSADfSAIIAJUrX0iBoWDQgBTDQMgCCACfSEFCyAHIAU3AxAgByAGNwMYIAAgASAHEOqAgIAACyAEQfAAaiSAgICAAA8LEMOAgIAAAAsQ34CAgAAAC2oCAX8CfiOAgICAAEEQayIAJICAgIAAQgAhAQJAAkBBACAAEK6AgIAAIgJCAhC7gICAAEUNACAAIAJCAhCHgICAABDugICAACAAKAIAQQFGDQEgACkDCCEBCyAAQRBqJICAgIAAIAEPCwALXQIBfwF+AkACQCABp0H/AXEiAkHAAEYNAAJAIAJBBkYNAEIBIQNCg5CAgIABIQEMAgsgAUIIiCEBQgAhAwwBC0IAIQMgARCTgICAACEBCyAAIAM3AwAgACABNwMIC58BAgF/AX4jgICAgABBEGsiAiSAgICAAAJAAkACQEEBIAEQroCAgAAiA0IBELuAgIAARQ0AIAIgA0IBEIeAgIAAEO6AgIAAIAIoAgBBAUcNAQALIABCADcDAAwBCyACKQMIIQMgAEIBNwMAIAAgAzcDCCACELyAgIAAIAIoAgBFDQAgASACKAIEIAIoAggQrYCAgAALIAJBEGokgICAgAALYwECfyOAgICAAEEQayIBJICAgIAAAkBBASAAEK6AgIAAQgEQu4CAgAAiAkUNACABQQRqELyAgIAAIAEoAgRBAUcNACAAIAEoAgggASgCDBCtgICAAAsgAUEQaiSAgICAACACC08BAn5CACEBAkACQEECIAAQroCAgAAiAkICELuAgIAARQ0AIAJCAhCHgICAACIBQv8Bg0LNAFINASAAIAE3AwhCASEBCyAAIAE3AwAPCwALhwECAX8BfiOAgICAAEEQayIBJICAgIAAIAEQtICAgAACQCABKAIAQQFHDQAgASgCBCABKAIIELWAgIAACwJAAkACQCAAEPCAgIAADQAQ7YCAgAAhAgwBCyABIAAQ74CAgAAgASgCAEUNASABKQMIIQILIAFBEGokgICAgAAgAg8LEMOAgIAAAAsxAAJAIAIgBEYNAAALIAAgAa1CIIZCBIQgA61CIIZCBIQgAq1CIIZCBIQQnYCAgAAaC30CAX8BfgJAAkACQAJAIAGnQf8BcSICQcUARg0AIAJBC0cNAiAAIAFCP4c3AxggACABQgiHNwMQDAELIAEQl4CAgAAhAyABEJiAgIAAIQEgACADNwMYIAAgATcDEAtCACEBDAELIABCg5CAgIABNwMIQgEhAQsgACABNwMAC1sAAkACQCABQoCAgICAgIDAAHxC//////////8AVg0AIAEgAYUgAiABQj+HhYRCAFINACABQgiGQguEIQEMAQsgAiABEJmAgIAAIQELIABCADcDACAAIAE3AwgLOwACQAJAIAFC//////////8AVg0AIAFCCIZCBoQhAQwBCyABEJKAgIAAIQELIABCADcDACAAIAE3AwgLLgACQCABIANGDQAACyAArUIghkIEhCACrUIghkIEhCABrUIghkIEhBCcgICAAAuKAgIBfwZ+I4CAgIAAQcAAayIDJICAgIAAIAMQtICAgAACQCADKAIAQQFHDQAgAygCBCADKAIIELWAgIAACwJAAkACQAJAIAEgAhDmgICAAA0AQv///////////wAhBEJ/IQUMAQsgAyABIAIQ54CAgAAgAygCAEEBcUUNAiADKQMQIQYgAykDGCEHIAMgASACEOWAgIAAQgAhBUIAIQQgBiADKQMAIghWIAcgAykDCCIJVSAHIAlRG0UNACAHIAmFIAcgByAJfSAGIAhUrX0iBIWDQgBTDQEgBiAIfSEFCyAAIAU3AwAgACAENwMIIANBwABqJICAgIAADwsQ34CAgAAACxDDgICAAAALjQQCAX8FfiOAgICAAEHwAGsiBiSAgICAACAGQeAAahDggICAACAGKQNoIQcgBikDYCEIAkACQAJAAkACQAJAIAUQ8ICAgAANABDtgICAACEJDAELIAZB4ABqIAUQ74CAgAAgBigCYEUNASAGKQNoIQkLAkACQCAJUEUNAEIAIQpCACEJDAELIAZB4ABqEPGAgIAAIAYoAmBFDQIgBkEANgJcIAZBwABqIAEgAiAJQgAgBkHcAGoQ0YGAgAAgBigCXA0DIAZBMGogBikDQCAGKQNIQpDOAEIAENSBgIAAIAYpAzghCSAGKQMwIQoLIAIgCYUgAiACIAl9IAEgClStfSILhYNCAFMNAiAIIAeEUA0CAkAgASAKfSICIAtCgICAgICAgICAf4WEQgBSDQAgCCAHg0J/UQ0DCyAGQSBqIAIgCyAIIAcQ1IGAgAAgBkEANgIcIAYgBikDICAGKQMoIAggByAGQRxqENGBgIAAIAYoAhwNAiAGKQMIIgIgCYVCf4UgAiACIAl8IAYpAwAiCSAKfCIHIAlUrXwiCIWDQgBTDQIgCSADVCACIARTIAIgBFEbDQMgACAJNwMQIAAgBzcDACAAIAI3AxggACAINwMIIAZB8ABqJICAgIAADwsQw4CAgAAAC0KDgICAkJMCELmAgIAAAAsQ34CAgAAAC0KDgICAsPcCELmAgIAAAAvnBQMDfwJ+AX8jgICAgABB8ABrIgQkgICAgAACQAJAAkACQAJAIAAQpoCAgABB/wFxIgVBAkYNACABQv8Bg0IEUg0AIARBMGogAhD0gICAACAEKAIwQQFGDQAgBCkDSCEAIAQpA0AhAiAEQTBqIAMQ7oCAgAAgBCgCMEEBRg0AIAQpAzghAxDGgICAACAEQTBqELSAgIAAAkAgBCgCMEEBRw0AIAQoAjQgBCgCOBC1gICAAAsgAkIAUiAAQgBVIABQG0UNASADQgBRDQICQAJAIAUgAUIgiKciBhDmgICAAA0AEOiAgIAAIQcgBCAANwM4IAQgAjcDMCAEQgA3A0ggBEIANwNAIAQgAzcDUCAEIAc3A1ggBSAGIARBMGoQ6oCAgABB0YLAgABBDhD7gICAABD8gICAACEHIAUQ1ICAgAAhCCACIAAQqYCAgAAhACAEIAMQsoCAgAA3A0ggBCAANwNAIAQgAUKEgICAcIM3AzggBCAINwMwIAdB6ILAgABBBCAEQTBqQQQQ94CAgAAQjICAgAAaDAELIARBMGogBSAGEOeAgIAAIAQoAjBBAXFFDQQCQCACIAQpA0CFIAAgBCkDSIWEQgBSDQAgAyAEKQNgUQ0GCyAFIAYQ6YCAgAAgBEEwaiAFIAYQ54CAgAAgBCgCMEEBcUUNBCAEIARBwABqQTAQ2IGAgAAiCSAANwMIIAkgAjcDACAJIAM3AyAgBSAGIAkQ6oCAgABBiIPAgABBEhD7gICAABD8gICAACEHIAUQ1ICAgAAhCCACIAAQqYCAgAAhACAJIAMQsoCAgAA3A0ggCSAANwNAIAkgAUKEgICAcIM3AzggCSAINwMwIAdB6ILAgABBBCAJQTBqQQQQ94CAgAAQjICAgAAaCyAEQfAAaiSAgICAAEICDwsAC0KDgICAsKwCELmAgIAAAAtCg4CAgKCsAhC5gICAAAALEMOAgIAAAAtCg4CAgMCsAhC5gICAAAALRQIBfwF+I4CAgIAAQRBrIgIkgICAgAAgAiAAIAEQzYGAgAACQCACKAIAQQFHDQAACyACKQMIIQMgAkEQaiSAgICAACADC2MDAX8BfgF/I4CAgIAAQRBrIgEkgICAgAAgASAANwMAQgIhAkEBIQMCQANAIANFDQEgA0F/aiEDIAAhAgwACwsgASACNwMIIAFBCGpBARCqgICAACEAIAFBEGokgICAgAAgAAv8AQIDfwF+I4CAgIAAQRBrIgIkgICAgAACQAJAIAAQpoCAgABB/wFxIgNBAkYNACABQv8Bg0IEUg0AIAFCIIinIQQQxoCAgAAgAhC0gICAAAJAIAIoAgBBAUcNACACKAIEIAIoAggQtYCAgAALIAMgBBDmgICAAEUNASAEIAMQsICAgABCARCNgICAABpBmoPAgABBEBD7gICAABD8gICAACEAIAMQ1ICAgAAhBSACIAFChICAgHCDNwMIIAIgBTcDACAAQayDwIAAQQIgAkECEPeAgIAAEIyAgIAAGiACQRBqJICAgIAAQgIPCwALQoOAgIDArAIQuYCAgAAAC50CAgN/AX4jgICAgABB0ABrIgIkgICAgAACQAJAAkAgABCmgICAAEH/AXEiA0ECRg0AIAFC/wGDQgRSDQAgAUIgiKchBCACELSAgIAAAkAgAigCAEEBRw0AIAIoAgQgAigCCBC1gICAAAsCQAJAIAMgBBDmgICAAA0AQgAhBUIAIQFCACEADAELIAIgAyAEEOeAgIAAIAIoAgBBAXFFDQIgAikDGCEAIAIpAxAhASACKQMwIQULIAIgASAAEPWAgIAAIAIoAgANACACKQMIIQEgAiAFEPaAgIAAIAIoAgBBAUcNAgsACxDDgICAAAALIAIgAikDCDcDSCACIAE3A0AgAkHAAGpBAhCqgICAACEBIAJB0ABqJICAgIAAIAELjAEBAn8jgICAgABBEGsiAiSAgICAAAJAIAAQpoCAgABB/wFxIgNBAkYNACABQv8Bg0IEUg0AIAIQtICAgAACQCACKAIAQQFHDQAgAigCBCACKAIIELWAgIAACyACIAMgAUIgiKcQ5YCAgAAgAikDACACKQMIEKmAgIAAIQEgAkEQaiSAgICAACABDwsAC2cBAn8jgICAgABBEGsiAiSAgICAAAJAIAAQpoCAgABB/wFxIgNBAkYNACABQv8Bg0IEUg0AIAIgAyABQiCIpxD4gICAACACKQMAIAIpAwgQqYCAgAAhASACQRBqJICAgIAAIAEPCwAL8wECAX8BfiOAgICAAEEQayIBJICAgIAAIAEgABDugICAAAJAAkACQCABKAIAQQFGDQAgASkDCCEAEMaAgIAAIAEQtICAgAACQCABKAIAQQFHDQAgASgCBCABKAIIELWAgIAACyAAQpHOAFoNARDtgICAACAAUQ0CQQAgASAAQgIQsYCAgABBpIDAgABBExD7gICAABD8gICAACECIAEgABCygICAADcDACACQcCAwIAAQQEgAUEBEPeAgIAAEIyAgIAAGiABQRBqJICAgIAAQgIPCwALQoOAgICAkwIQuYCAgAAAC0KDgICAsJMCELmAgIAAAAvdAgICfwF+I4CAgIAAQRBrIgIkgICAgAACQAJAAkACQCAAQv8Bg0IEUg0AIAIgARDugICAACACKAIAQQFGDQAgAikDCCEBEMaAgIAAIAIQtICAgAACQCACKAIAQQFHDQAgAigCBCACKAIIELWAgIAACyABQpHOAFoNASAAQiCIpyIDEPCAgIAARQ0DIAIgAxDvgICAACACKAIARQ0CIAIpAwggAVINA0KDgICAsJMCELmAgIAACwALQoOAgICAkwIQuYCAgAAACxDDgICAAAALQQEgAyABQgEQsYCAgAAgAhC8gICAAAJAIAIoAgBBAUcNACADIAIoAgQgAigCCBCtgICAAAtByIDAgABBCxD7gICAABD8gICAACEEIAIgARCygICAADcDCCACIABChICAgHCDNwMAIARB1IDAgABBAiACQQIQ94CAgAAQjICAgAAaIAJBEGokgICAgABCAgvWAQICfwF+I4CAgIAAQRBrIgEkgICAgAACQAJAIABC/wGDQgRSDQAgAEIgiKchAhDGgICAACABELSAgIAAAkAgASgCAEEBRw0AIAEoAgQgASgCCBC1gICAAAsgAhDwgICAAEUNAUEBIAIQroCAgABCARCNgICAABpB5IDAgABBDRD7gICAABD8gICAACEDIAEgAEKEgICAcIM3AwAgA0H0gMCAAEEBIAFBARD3gICAABCMgICAABogAUEQaiSAgICAAEICDwsAC0KDgICAoJMCELmAgIAAAAvjAQIBfwF+I4CAgIAAQRBrIgEkgICAgAACQAJAIABC/wGDQs0AUg0AEMaAgIAAIAEQtICAgAACQCABKAIAQQFHDQAgASgCBCABKAIIELWAgIAACyABEPGAgIAAAkAgASgCAEEBRw0AIAEpAwggABCFgYCAAA0CC0ECIAEQroCAgAAgAEICEISAgIAAGkH8gMCAAEEXEPuAgIAAEPyAgIAAIQIgASAANwMAIAJBqIHAgABBASABQQEQ94CAgAAQjICAgAAaIAFBEGokgICAgABCAg8LAAtCg4CAgLCTAhC5gICAAAALDQAgACABEJ6AgIAAUAtsAQF/I4CAgIAAQRBrIgEkgICAgAACQCAAQv8Bg0IEUg0AIAFBBGoQtICAgAACQCABKAIEQQFHDQAgASgCCCABKAIMELWAgIAACyAAQiCIpxDygICAACEAIAFBEGokgICAgAAgAEIAUq0PCwALIwACQCAAQv8Bg0IEUQ0AAAsgAEIgiKcQ8oCAgAAQsoCAgAALWgIBfwF+I4CAgIAAQRBrIgAkgICAgAAgAEEEahC0gICAAAJAIAAoAgRBAUcNACAAKAIIIAAoAgwQtYCAgAALEO2AgIAAELKAgIAAIQEgAEEQaiSAgICAACABC6ABAQJ/I4CAgIAAQSBrIgEkgICAgAACQCAAQv8Bg0IEUg0AIABCIIinIQIgAUEQahC0gICAAAJAIAEoAhBBAUcNACABKAIUIAEoAhgQtYCAgAALIAEgAhDvgICAAAJAAkAgASgCAA0AQgIhAAwBCyABQRBqIAEpAwgQ9oCAgAAgASgCEEEBcQ0BIAEpAxghAAsgAUEgaiSAgICAACAADwsAC3ECAX8BfiOAgICAAEEQayIAJICAgIAAIAAQtICAgAACQCAAKAIAQQFHDQAgACgCBCAAKAIIELWAgIAACyAAEPGAgIAAAkAgACgCAA0AQoOAgICQkwIQuYCAgAAACyAAKQMIIQEgAEEQaiSAgICAACABC98BAgJ/AX4jgICAgABBEGsiASSAgICAAAJAAkBBASAAp0H/AXEiAkEAR0EBdCACQQFGGyICQQJGDQAQxoCAgAAgARC0gICAAAJAIAEoAgBBAUcNACABKAIEIAEoAggQtYCAgAALEOSAgIAAIAJzQQFxRQ0BENOAgIAAIAKtIgBCAhCEgICAABpBtoHAgABBChD7gICAABD8gICAACEDIAEgADcDACADQciBwIAAQQEgAUEBEPeAgIAAEIyAgIAAGiABQRBqJICAgIAAQgIPCwALQoOAgIDQnwIQuYCAgAAAC1MBAn8jgICAgABBEGsiACSAgICAACAAQQRqELSAgIAAAkAgACgCBEEBRw0AIAAoAgggACgCDBC1gICAAAsQ5ICAgAAhASAAQRBqJICAgIAAIAGtC4sFBwF/A34BfwJ+AX8BfgJ/I4CAgIAAQaABayIBJICAgIAAIAEgABCOgYCAAAJAAkACQCABKAIAQQFxDQAgASkDKCEAIAEpAyAhAiABKQMYIQMgASkDECEEIAEoAlAhBSABELSAgIAAAkAgASgCAEEBRw0AIAEoAgQgASgCCBC1gICAAAsQ44CAgAAgASAEIAMgAiAAIAUQ+YCAgAAgASkDCCICIAEpAxgiA4UgAiACIAN9IAEpAwAiBCABKQMQIgZUrX0iAIWDQgBTDQECQAJAIAQgBn0iB0IAUiAAQgBVIABQGw0AEI6AgIAAIQAMAQsgAUEgaiEIQbyDwIAAQQcQj4GAgAAhCSABIAA3AwggASAHNwMAIAEgCTcDECABQgI3A4ABIAEhCkEBIQsCQANAIAtBAXFFDQEgCkEQaikDACEAIAFB6ABqIAopAwAgCikDCBD1gICAACABKAJoQQFGDQMgASABKQNwNwOYASABIAA3A5ABIAFBgInAgABBAiABQZABakECEPeAgIAANwOAAUEAIQsgCCEKDAALCyABQYABakEBEKqAgIAAIQALIAFBEGpBASAFEPiAgIAAIAFBkAFqIAEpAxAgASkDGBD1gICAACABKAKQAQ0AIAEpA5gBIQcgAUGQAWpCAEIAEPWAgIAAIAEoApABQQFGDQAgASABKQOYATcDiAEgASAHNwOAAUHIiMCAAEECIAFBgAFqQQIQ94CAgAAhByABQZABaiAEIAIgBiADEJCBgIAAIAEoApABQQFHDQILAAsQ34CAgAAACyABIAEpA5gBNwN4IAEgADcDcCABIAc3A2ggAUHoAGpBAxCqgICAACEAIAFBoAFqJICAgIAAIAALhgMCAn8JfiOAgICAAEHgAGsiAiSAgICAAEEAIQMCQANAIANBOEYNASACQQhqIANqQgI3AwAgA0EIaiEDDAALC0IAIQRCASEFAkAgAUL/AYNCzABSDQAgAUGAiMCAAEEHIAJBCGpBBxDzgICAACACQcAAaiACKQMIEPSAgIAAIAIoAkBBAUYNACACKQMQIgFC/wGDQsgAUg0AIAIpAxgiBkL/AYNCBFINACACKQMgIgdC/wGDQsgAUg0AIAIpA1ghCCACKQNQIQkgAkHAAGogAikDKBD0gICAACACKAJAQQFGDQAgAikDMCIKQv8Bg0LIAFINACACKQNYIQsgAikDUCEMIAJBwABqIAIpAzgQwICAgAAgAigCQA0AIAIpA0ghBCAAIAw3AyAgACAJNwMQIAAgBkIgiKc2AlAgACAKNwNIIAAgATcDQCAAIAc3AzggACAENwMwIAAgCzcDKCAAIAg3AxhCACEFQgAhBAsgACAFNwMAIAAgBDcDCCACQeAAaiSAgICAAAsaACAArUIghkIEhCABrUIghkIEhBCVgICAAAuHAQEBfyOAgICAAEEQayIFJICAgIAAIAUgAyAEEPWAgIAAQgEhBAJAIAUoAgANACAFKQMIIQMgBSABIAIQ9YCAgAAgBSgCAA0AIAUgBSkDCDcDCCAFIAM3AwAgAEHYiMCAAEECIAVBAhD3gICAADcDCEIAIQQLIAAgBDcDACAFQRBqJICAgIAAC70EAgN/An4jgICAgABB4AFrIgMkgICAgAACQCAAQv8Bg0LNAFINACADQdAAaiABEI6BgIAAIAMoAlBBAXENACADIANB4ABqQdAAENiBgIAAIQRBASACp0H/AXEiA0EAR0EBdCADQQFGGyIFQQJGDQAgBEHQAGoQtICAgAACQCAEKAJQQQFHDQAgBCgCVCAEKAJYELWAgIAACxDjgICAACAEQdAAaiAEKQMAIAQpAwggBCkDECAEKQMYIAQoAkAiAxD5gICAACAEQdAAaiAAIAQgBCkDYCAEKQNoENeAgIAAIAQpA1AhACAEKQNYIQEgBEHQAGogAxC+gICAACAEKQNYIQIgBCkDUBDWgICAABDCgICAACEGEI+AgIAAIQcgBCAFOgDMASAEIAE3A8ABIAQgADcDuAEgBCACNwOwASAEIAM2AsgBIAQgBEGwAWoQkoGAgAA3A9gBIAQgBzcD0AFBACEDAkACQANAAkAgA0EQRw0AQQAhAwJAA0AgA0EQRg0BIARB0ABqIANqIARB0AFqIANqKQMANwMAIANBCGohAwwACwsgBEHQAGogBkKO1Lna7gYgBEHQAGpBAhCqgICAABCQgICAABCTgYCAACAEKAJQQQFxDQIgBEHQAGogBCkDYCAEKQNoIAQpA3AgBCkDeBCUgYCAACAEKAJQQQFHDQMMBAsgBEHQAGogA2pCAjcDACADQQhqIQMMAAsLEN+AgIAAAAsgBCkDWCEAIARB4AFqJICAgIAAIAAPCwALcwIBfwF+I4CAgIAAQTBrIgEkgICAgAAgASAAKQMANwMoIAEgADEAHDcDICABIAApAxA3AxggASAAKQMINwMQIAEgADUCGEIghkIEhDcDCEHkg8CAAEEFIAFBCGpBBRD3gICAACECIAFBMGokgICAgAAgAgvvAQICfwN+I4CAgIAAQTBrIgIkgICAgABBACEDAkADQCADQRBGDQEgAiADakICNwMAIANBCGohAwwACwtCACEEQgEhBQJAIAFC/wGDQswAUg0AIAFBxITAgABBAiACQQIQ84CAgAAgAkEQaiACKQMAEPSAgIAAIAIoAhBBAUYNACACKQMoIQEgAikDICEGIAJBEGogAikDCBD0gICAACACKAIQQQFGDQAgAikDICEEIAAgAikDKDcDKCAAIAQ3AyAgACABNwMYIAAgBjcDEEIAIQVCACEECyAAIAU3AwAgACAENwMIIAJBMGokgICAgAALhwEBAX8jgICAgABBEGsiBSSAgICAACAFIAEgAhD1gICAAEIBIQICQCAFKAIADQAgBSkDCCEBIAUgAyAEEPWAgIAAIAUoAgANACAFIAUpAwg3AwggBSABNwMAIABBxITAgABBAiAFQQIQ94CAgAA3AwhCACECCyAAIAI3AwAgBUEQaiSAgICAAAsIABDhgICAAAvkAwMCfwJ+A38jgICAgABBMGsiACSAgICAACAAQSBqELSAgIAAAkAgACgCIEEBRw0AIAAoAiQgACgCKBC1gICAAAsQ4oCAgAAQl4GAgAAhASAAQSBqENiAgIAAAkACQCAAKQMgIgJCAFIgACkDKCIDQgBVIANQIgQbRQ0AAkACQCACQv////+P8LvWhX9WIANC24K16+KdAVYgA0LbgrXr4p0BURsNACAAQRBqIAIgA0KAgIT+pt7hEUIAENaBgIAAQQpBACAAKQMQIAIgAkL//4P+pt7hEVYgA0IAUiAEGyIFGyIDQv/Hr6AlViIGGyEEIAVBBHQhBQJAIANCgMivoCWAIAMgBhsiA0KgjQZUDQAgBEEFciEEIANCoI0GgCEDCyAEIAVqIAOnIgRB9v8XaiAEQZz/H2pxIARBmPg3aiAEQfCxH2pxc0ERdmohBAwBCyAAIAIgA0KAgICAkPC71oV/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gICAABoQz4CAgAAgA0ICEISAgIAAGiAGQdAAaiSAgICAAEICCw4AQQAgAEICEMmBgIAAC7YBAwF/AX4BfyOAgICAAEEgayIEJICAgIAAQfyEwIAAQQwQ+4CAgAAhBSAEIAIgAxC2gYCAADcDCCAEIAE3AwBBACEGA0ACQCAGQRBHDQBBACEGAkADQCAGQRBGDQEgBEEQaiAGaiAEIAZqKQMANwMAIAZBCGohBgwACwsgACAFIARBEGpBAhCqgICAABCrgICAACAEQSBqJICAgIAADwsgBEEQaiAGakICNwMAIAZBCGohBgwACwuSAQIBfwF+I4CAgIAAQRBrIgEkgICAgAACQAJAAkACQCAAQQFxRQ0AIAFBxYfAgABBBRDQgICAACABKAIADQIgASABKQMIENGAgIAADAELIAFBsIfAgABBFRDQgICAACABKAIADQEgASABKQMIENGAgIAACyABKQMIIQIgASkDAFANAQsACyABQRBqJICAgIAAIAILEQBChICAgBBCBBCcgYCAABsLCAAQx4CAgAALLwACQCAAQv8Bg0IEUg0AIAFC/wGDQgRSDQAgAEIgiKcgAUIgiKcQtoCAgAAPCwALjwQHAX8DfgF/AX4BfwF+An8jgICAgABBMGsiASSAgICAAAJAAkAgAEL/AYNCywBSDQAQxoCAgAAgAUEIahC0gICAAAJAIAEoAghBAUcNACABKAIMIAEoAhAQtYCAgAALIAAQgICAgABCIIghAkIAIQMCQANAIAMgAlENASAAIANCIIZCBIQQgYCAgAAhBEEAIQUCQANAIAVBGEYNASABQQhqIAVqQgI3AwAgBUEIaiEFDAALC0EBIQUCQCAEQv8Bg0LMAFINACAEQciFwIAAQQMgAUEIakEDEPOAgIAAIAEpAwgiBEL/AYNCBFINACABKQMQIgZC/wGDQgRSDQAgByAGQiCIpyABKQMYIgZC/wGDQsgAUiIFGyEHIAggBiAFGyEIIAkgBEIgiKcgBRshCQsgA0L/////D1ENAyAFDQMgASAHNgIUIAEgCTYCECABIAg3AwggAUEIahC3gICAACABKQMIIQQgASgCECIFIAEoAhQiChC6gICAACAEQgEQhICAgAAaIAFBJGoQvICAgAACQCABKAIkQQFHDQAgBSAKIAEoAiggASgCLBC9gICAAAsgA0IBfCEDDAALC0HvhcCAAEETEPuAgIAAEPyAgIAAIQMgASAANwMIIANBmIbAgABBASABQQhqQQEQ94CAgAAQjICAgAAaIAFBMGokgICAgABCAg8LAAsQ34CAgAAAC2kBAX8jgICAgABBEGsiAySAgICAAAJAIABC/wGDQgRSDQAgAUL/AYNCBFINACACQv8Bg0LIAFINACADIAI3AwggAEIgiKcgAUIgiKcgA0EIahCzgICAACEAIANBEGokgICAgAAgAA8LAAubAQICfwF+I4CAgIAAQSBrIgEkgICAgAAgASAAEKmBgIAAAkAgASgCAEEBRg0AIAEoAhghAiABKQMIIQMgARC0gICAAAJAIAEoAgBBAUcNACABKAIEIAEoAggQtYCAgAALIAEgAhC+gICAAEIAIQACQCABKAIAQQFHDQAgASkDCCADEIWBgIAArSEACyABQSBqJICAgIAAIAAPCwAL4gECAn8CfiOAgICAAEEwayICJICAgIAAQQAhAwJAA0AgA0EYRg0BIAJBCGogA2pCAjcDACADQQhqIQMMAAsLQgEhBAJAIAFC/wGDQswAUg0AIAFBmITAgABBAyACQQhqQQMQ84CAgAAgAkEgaiACKQMIEO6AgIAAIAIoAiANACACKQMoIQEgAkEgaiACKQMQEMCAgIAAIAIoAiANACACKQMYIgVC/wGDQgRSDQAgAikDKCEEIAAgATcDECAAIAQ3AwggACAFQiCIPgIYQgAhBAsgACAENwMAIAJBMGokgICAgAALdQEBfyOAgICAAEEQayICJICAgIAAAkAgAEL/AYNCBFINACACIAEQwICAgAAgAigCAEEBRg0AIAIQtICAgAACQCACKAIAQQFHDQAgAigCBCACKAIIELWAgIAAC0IAELKAgIAAIQAgAkEQaiSAgICAACAADwsAC7oPBAJ/A34BfwF+I4CAgIAAQbABayIGJICAgIAAAkACQAJAIABC/wGDQs0AUg0AIAZBIGogARCpgYCAACAGKAIgQQFGDQAgBigCOCEHIAYpAzAhCCAGKQMoIQEgBkEgaiACEMCAgIAAIAYoAiBBAUYNACADQv8Bg0LIAFINACAGKQMoIQkgBiADNwMYIARC/wGDQsgAUg0AIAZBIGogBRD0gICAACAGKAIgQQFGDQAgBikDOCECIAYpAzAhBCAGQSBqELSAgIAAAkAg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gICAAAJAAkAgAEEgEK2BgIAAIgIQhYCAgABCgICAgHCDQoCAgICABFINACABQSBqQRhqIgBCADcDACABQSBqQRBqIgNCADcDACABQSBqQQhqIgRCADcDACABQgA3AyAgAhCFgICAAEKAgICAcINCgICAgIAEUg0BIAIgAUEgakEgENqAgIAAIAFBGGogACkDADcDACABQRBqIAMpAwA3AwAgAUEIaiAEKQMANwMAIAEgASkDIDcDACABQSAQj4GAgAAhAiABQcAAaiSAgICAACACDwtCg4CAgICCARC5gICAAAALELCBgIAAAAt1AgJ/AX4CQAJAIAAoAgQiAiABaiIBIAJJDQAgASAAKAIAIgMpAwAQhYCAgABCIIinSw0BIAMpAwAgAq1CIIZCBIQgAa1CIIZCBIQQi4CAgAAhBCAAIAE2AgQgBA8LEN+AgIAAAAtCg4CAgID9ABC5gICAAAALJwEBfwJAIAAQhYCAgABCIIinIgIgAUkNACACIAFrDwsQ34CAgAAAC0YBAX8CQEGcicCAAEGQicCAACAAp0EBcSICG0EIQQwgAhsQj4GAgAAgARCGgICAABCfgICAACIAQv8Bg0LNAFENAAALIAALCQAQ34CAgAAACx4AIAAgASACrUIghkIEhCADrUIghkIEhBCbgICAAAuJAQECfyOAgICAAEEgayIDJICAgIAAIAMgABCpgYCAAAJAIAMoAgBBAUYNACABQv8Bg0LIAFINACACQv8Bg0LNAFINACADELSAgIAAAkAgAygCAEEBRw0AIAMoAgQgAygCCBC1gICAAAsQj4CAgAAgAhCFgYCAACEEIANBIGokgICAgAAgBK0PCwALogECAX8BfiOAgICAAEEgayIAJICAgIAAIABBEGoQtICAgAACQCAAKAIQQQFHDQAgACgCFCAAKAIYELWAgIAACyAAQRBqQgEQ9oCAgAACQAJAIAAoAhANACAAKQMYIQEgAEEQakIBEPaAgIAAIAAoAhBBAUcNAQsACyAAIAApAxg3AwggACABNwMAIABBAhCqgICAACEBIABBIGokgICAgAAgAQsIABDCgICAAAtRAQF/I4CAgIAAQRBrIgEkgICAgAACQCAAQv8Bg0IEUQ0AAAsgASAAQiCIpxC+gICAACABKQMAIAEpAwgQtoGAgAAhACABQRBqJICAgIAAIAALDQAgAUICIACnQQFxGwu6AgQBfwF+AX8BfiOAgICAAEEQayICJICAgIAAAkAgAEL/AYNCBFINAAJAAkAgAUICUg0AQgAhAQwBCyACIAEQwICAgAAgAigCAEEBRg0BIAIpAwghA0IBIQELEMaAgIAAIAIQtICAgAACQCACKAIAQQFHDQAgAigCBCACKAIIELWAgIAAC0EBIABCIIinIgQQv4CAgAAhBQJAAkAgAVANACAFIANCARCEgICAABogAhC8gICAACACKAIAQQFHDQEgBCACKAIEIAIoAggQwYCAgAAMAQsgBUIBEI2AgIAAGgtCjvKqvPDWqusAEPyAgIAAIQUgAiABIAMQtoGAgAA3AwggAiAAQoSAgIBwgzcDACAFQaiFwIAAQQIgAkECEPeAgIAAEIyAgIAAGiACQRBqJICAgIAAQgIPCwALhwECAX8BfiOAgICAAEEQayIBJICAgIAAIAEgABCegYCAAAJAIAEpAwAiAEICUQ0AIAEpAwghAhDGgICAACABELSAgIAAAkAgASgCAEEBRw0AIAEoAgQgASgCCBC1gICAAAsQwoCAgAAQj4CAgAAgACACEKGBgIAAIAFBEGokgICAgABCAg8LAAviBAEFfyOAgICAAEHQAGsiAiSAgICAACACQShqIAAQuoGAgAACQCACKAIoQQJGDQAgAkEIakEIaiACQShqQQhqIgMoAgA2AgAgAiACKQIoNwMIIAJBKGogARC6gYCAACACKAIoQQJGDQAgAkEYakEIaiADKAIANgIAIAIgAikCKDcDGCACQShqELSAgIAAAkAgAigCKEEBRw0AIAIoAiwgAigCMBC1gICAAAsQxoCAgAACQAJAAkAQxICAgAANABC7gYCAACIDQYD7gAMgA0GA+4ADSRshBCACIAJBGGo2AiwgAiACQQhqNgIoQQAhAwNAIANBCEYNAwJAIAJBKGogA2ooAgAiBSgCAEEBcUUNACAFKAIIIgYgBEsNAyAFKAIEIAZLDQMLIANBBGohAwwACwtCg4CAgND/ABC5gICAAAALQoOAgIDA/wAQuYCAgAAACwJAAkAgAigCCEEBRw0AQQEgAigCDCACKAIQELyBgIAADAELQQEQxYCAgABCAhCNgICAABoLAkACQCACKAIYQQFHDQBBAiACKAIcIAIoAiAQvIGAgAAMAQtBAhDFgICAAEICEI2AgIAAGgsgAkEoakEIaiACQQhqQQhqKAIANgIAIAJBPGogAkEYakEIaigCADYCACACIAIpAwg3AyggAiACKQMYNwI0QeCKwIAAQQ8Q+4CAgAAQ/ICAgAAhACACQShqEL2BgIAAIQEgAiACQTRqEL2BgIAANwNIIAIgATcDQCAAQYSLwIAAQQIgAkHAAGpBAhD3gICAABCMgICAABogAkHQAGokgICAgABCAg8LAAtoAQF/I4CAgIAAQRBrIgIkgICAgAACQAJAIAFCAlENACACQQRqIAEQzoGAgAACQCACKAIERQ0AIABBAjYCAAwCCyAAIAIpAgg3AgQgAEEBNgIADAELIABBADYCAAsgAkEQaiSAgICAAAszAQJ+EKGAgIAAIQACQBCigICAAEIgiCIBIABCIIgiAFQNACABpyAAp2sPCxDfgICAAAALVgIBfwF+I4CAgIAAQRBrIgMkgICAgAAgABDFgICAACEEIAMgASACEM+BgIAAAkAgAygCAEEBRw0AAAsgBCADKQMIQgIQhICAgAAaIANBEGokgICAgAALQwIBfwF+I4CAgIAAQRBrIgEkgICAgAAgASAAEL+BgIAAAkAgASgCAEEBRw0AAAsgASkDCCECIAFBEGokgICAgAAgAgvCAQICfwF+I4CAgIAAQcAAayIAJICAgIAAIABBCGoQtICAgAACQCAAKAIIQQFHDQAgACgCDCAAKAIQELWAgIAACyAAQQhqELSAgIAAIABBFGoiARC8gICAACAAQTBqIABBCGoQv4GAgAACQAJAIAAoAjANACAAKQM4IQIgAEEwaiABEL+BgIAAIAAoAjBBAUcNAQsACyAAIAApAzg3AyggACACNwMgIABBIGpBAhCqgICAACECIABBwABqJICAgIAAIAILMAACQCABKAIAQQFHDQAgACABKAIEIAEoAggQz4GAgAAPCyAAQgA3AwAgAEICNwMIC6oBAQF/I4CAgIAAQSBrIgAkgICAgAAgAEEMahC0gICAAAJAIAAoAgxBAUcNACAAKAIQIAAoAhQQtYCAgAALEMaAgIAAAkAQxICAgABFDQBCg4CAgOD/ABC5gICAAAALQQAQxYCAgABCAUICEISAgIAAGkGUi8CAAEESEPuAgIAAEPyAgIAAQQRBACAAQRhqQQAQ94CAgAAQjICAgAAaIABBIGokgICAgABCAgsJABDEgICAAK0LMQACQCAAQv8Bg0IEUg0AIAFC/wGDQgRSDQAgAEIgiKcgAUIgiKcQtYCAgABCAg8LAAs+AgF/AX4jgICAgABBEGsiACSAgICAACAAEMmAgIAAIAApAwAgACkDCBC2gYCAACEBIABBEGokgICAgAAgAQs+AgF/AX4jgICAgABBEGsiACSAgICAACAAEMyAgIAAIAApAwAgACkDCBC2gYCAACEBIABBEGokgICAgAAgAQt9AgF/AX4jgICAgABBEGsiASSAgICAAAJAIABC/wGDQs0AUg0AIAFBBGoQtICAgAACQCABKAIEQQFHDQAgASgCCCABKAIMELWAgIAACxDIgICAACECEMuAgIAAIAAQoIGAgAAgAiAAEMaBgIAAIAFBEGokgICAgABCAg8LAAthAgF/AX4jgICAgABBEGsiAiSAgICAAEGticCAAEEVEPuAgIAAEPyAgIAAIQMgAiAANwMIIAIgATcDACADQdSJwIAAQQIgAkECEPeAgIAAEIyAgIAAGiACQRBqJICAgIAAC9wCAgF/An4jgICAgABBIGsiAiSAgICAAAJAAkACQCAAQv8Bg0LNAFINACABQv8Bg0IEUg0AIAJBCGoQtICAgAACQCACKAIIQQFHDQAgAigCDCACKAIQELWAgIAACxDIgICAACEDAkACQCABQv////8PVg0AIAJBCGoQzICAgAAgAikDECEBIAIpAwhBiAgQyoCAgAAgASAAEIWBgIAARQ0DEMiBgIAADAELELuBgIAAIAFCIIinSQ0DQQEgAEIAEMmBgIAAQQEQzYCAgABCACABQoSAgIBwgyIBIAEQg4CAgAAaQeSJwIAAQRYQ+4CAgAAQ/ICAgAAhBCACIAE3AxggAiADNwMQIAIgADcDCCAEQYCKwIAAQQMgAkEIakEDEPeAgIAAEIyAgIAAGgsgAkEgaiSAgICAAEICDwsAC0KDgICA4IABELmAgIAAAAtCg4CAgPCAARC5gICAAAALEwBBARDNgICAAEIAEI2AgIAAGgsVACAAEM2AgIAAIAEgAhCEgICAABoLpwECAX8CfiOAgICAAEEQayIAJICAgIAAIAAQtICAgAACQCAAKAIAQQFHDQAgACgCBCAAKAIIELWAgIAACyAAEMyAgIAAIAApAwghASAAKQMAQYgIEMqAgIAA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AABuYXRpdmVfZmVlenJvX2ZlZQAAADACEAAKAAAAOgIQAAcAAABmZWUAVAIQAAMAAABLAxAABAAAAAwCEAAFAAAAbmF0aXZlX3Rva2Vuc2V0X2RlbGVnYXRlc2VuZF9jb21wb3NlRW5kcG9pbnRQZWVyZWlkcGVlcgCgAhAAAwAAAKMCEAAEAAAAbXNnX3R5cGVvcHRpb25zAKACEAADAAAAuAIQAAgAAADAAhAABwAAAEVuZm9yY2VkT3B0aW9uc2VuZm9yY2VkX29wdGlvbl9zZXRlbmZvcmNlZF9vcHRpb25fcGFyYW1zAgMQABYAAABhbW91bnRfcmVjZWl2ZWRfbGRhbW91bnRfc2VudF9sZGRzdF9laWRmcm9tZ3VpZAAgAxAAEgAAADIDEAAOAAAAQAMQAAcAAABHAxAABAAAAEsDEAAEAAAAb2Z0X3JlY2VpdmVkc3JjX2VpZHRvAAAAIAMQABIAAABLAxAABAAAAIQDEAAHAAAAiwMQAAIAAABEZWNpbWFsQ29udmVyc2lvblJhdGVUb2tlbmFtb3VudF9sZGNvbXBvc2VfbXNnZXh0cmFfb3B0aW9uc21pbl9hbW91bnRfbGRvZnRfY21kAMoDEAAJAAAA0wMQAAsAAABAAxAABwAAAN4DEAANAAAA6wMQAA0AAAD4AxAABwAAAIsDEAACAAAAbWF4X2Ftb3VudF9sZAAAADgEEAANAAAA6wMQAA0AAAAgAxAAEgAAADIDEAAOAAAAZGVzY3JpcHRpb25mZWVfYW1vdW50X2xkaAQQAAsAAABzBBAADQAAAAAAABIAAAAAAAAAAAAAABIAAAABdGhyZXNob2xkb3duZXJzaGlwX3RyYW5zZmVycmVkbmV3X293bmVyb2xkX293bmVywgQQAAkAAADLBBAACQAAAG93bmVyc2hpcF90cmFuc2ZlcnJpbmd0dGwAAADCBBAACQAAAMsEEAAJAAAA+gQQAAMAAABvd25lcnNoaXBfcmVub3VuY2VkAMsEEAAJAAAAT3duZXJQZW5kaW5nT3duZXJleHRlbmRfdG8AAEUFEAAJAAAApAQQAAkAAAB0dGxfY29uZmlnc19zZXRpbnN0YW5jZXBlcnNpc3RlbnQAAABvBRAACAAAAHcFEAAKAAAAdHRsX2NvbmZpZ3NfZnJvemVuRnJvemVuSW5zdGFu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AAAmUmV0dXJucyBPRlQgdmVyc2lvbiBhcyAobWFqb3IsIG1pbm9yKS4AAAAAAAtvZnRfdmVyc2lvbgAAAAAAAAAAAQAAA+0AAAACAAAABgAAAAYAAAAAAAAAQVJldHJpZXZlcyB0aGUgc2hhcmVkIGRlY2ltYWxzIHVzZWQgZm9yIGNyb3NzLWNoYWluIG5vcm1hbGl6YXRpb24uAAAAAAAAD3NoYXJlZF9kZWNpbWFscwAAAAAAAAAAAQAAAAQAAAAAAAAASVJldHJpZXZlcyB0aGUgZGVjaW1hbCBjb252ZXJzaW9uIHJhdGUgdXNlZCBmb3IgY3Jvc3MtY2hhaW4gbm9ybWFsaXphdGlvbi4AAAAAAAAXZGVjaW1hbF9jb252ZXJzaW9uX3JhdGUAAAAAAAAAAAEAAAALAAAAAAAAAOpXaGV0aGVyIGEgc2VwYXJhdGUgdG9rZW4gYXBwcm92YWwgaXMgcmVxdWlyZWQgYmVmb3JlIHNlbmRpbmcuCgpIZWxwcyB3YWxsZXQgaW1wbGVtZW50ZXJzIGRldGVybWluZSBpbnRlZ3JhdGlvbiByZXF1aXJlbWVudHMuCgojIFJldHVybnMKLSBgdHJ1ZWAgaWYgYSBzZXBhcmF0ZSB0b2tlbiBhcHByb3ZhbCBzdGVwIGlzIHJlcXVpcmVkCi0gYGZhbHNlYCBpZiBubyBzZXBhcmF0ZSBhcHByb3ZhbCBpcyBuZWVkZWQAAAAAABFhcHByb3ZhbF9yZXF1aXJlZAAAAAAAAAAAAAABAAAAAQAAAAAAAAB2U2VuZHMgdG9rZW5zIGNyb3NzLWNoYWluIHRvIGFub3RoZXIgZW5kcG9pbnQuCgpTZW5kZXIgbXVzdCBiZSBhdXRoZW50aWNhdGVkLgoKIyBSZXR1cm5zCihNZXNzYWdpbmdSZWNlaXB0LCBPRlRSZWNlaXB0KQAAAAAABHNlbmQAAAAEAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAACnNlbmRfcGFyYW0AAAAAB9AAAAAJU2VuZFBhcmFtAAAAAAAAAAAAAANmZWUAAAAH0AAAAAxNZXNzYWdpbmdGZWUAAAAAAAAADnJlZnVuZF9hZGRyZXNzAAAAAAATAAAAAQAAA+0AAAACAAAH0AAAABBNZXNzYWdpbmdSZWNlaXB0AAAH0AAAAApPRlRSZWNlaXB0AAAAAAAAAAAAAAAAAA1fX2NvbnN0cnVjdG9yAAAAAAAABgAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAAAAAAVvd25lcgAAAAAAABMAAAAAAAAACGVuZHBvaW50AAAAEwAAAAAAAAAIZGVsZWdhdGUAAAPoAAAAEwAAAAAAAAAPc2hhcmVkX2RlY2ltYWxzAAAAAAQAAAAAAAAACG9mdF90eXBlAAAH0AAAAAdPZnRUeXBlAAAAAAAAAAAAAAAAQ1JldHVybnMgdGhlIHR5cGUgb2Ygb3BlcmF0aW9uIGZvciB0aGlzIE9GVCAoTG9ja1VubG9jayBvciBNaW50QnVybikAAAAACG9mdF90eXBlAAAAAAAAAAEAAAfQAAAAB09mdFR5cGUAAAAAAAAAAAAAAAAKYXV0aG9yaXplcgAAAAAAAAAAAAEAAAATAAAAAAAAANlSZXRyaWV2ZXMgdGhlIGVuZm9yY2VkIG9wdGlvbnMgZm9yIGEgZ2l2ZW4gZW5kcG9pbnQgYW5kIG1lc3NhZ2UgdHlwZS4KCiMgQXJndW1lbnRzCiogYGVpZGAgLSBUaGUgZW5kcG9pbnQgSUQKKiBgbXNnX3R5cGVgIC0gVGhlIE9BcHAgbWVzc2FnZSB0eXBlCgojIFJldHVybnMKVGhlIGVuZm9yY2VkIG9wdGlvbnMgZm9yIHRoZSBnaXZlbiBlbmRwb2ludCBhbmQgbWVzc2FnZSB0eXBlAAAAAAAAEGVuZm9yY2VkX29wdGlvbnMAAAACAAAAAAAAAANlaWQAAAAABAAAAAAAAAAIbXNnX3R5cGUAAAAEAAAAAQAAAA4AAAAAAAACm1NldHMgdGhlIGVuZm9yY2VkIG9wdGlvbnMgZm9yIHNwZWNpZmljIGVuZHBvaW50IGFuZCBtZXNzYWdlIHR5cGUgY29tYmluYXRpb25zLgoKT25seSB0aGUgYGF1dGhvcml6ZXJgIG9mIHRoZSBPQXBwIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24uClByb3ZpZGVzIGEgd2F5IGZvciB0aGUgT0FwcCB0byBlbmZvcmNlIHRoaW5ncyBsaWtlIHBheWluZyBmb3IgUHJlQ3JpbWUsIEFORC9PUiBtaW5pbXVtIGRzdCBselJlY2VpdmUgZ2FzIGFtb3VudHMgZXRjLgpUaGVzZSBlbmZvcmNlZCBvcHRpb25zIGNhbiB2YXJ5IGFzIHRoZSBwb3RlbnRpYWwgb3B0aW9ucy9leGVjdXRpb24gb24gdGhlIHJlbW90ZSBtYXkgZGlmZmVyIGFzIHBlciB0aGUgbXNnX3R5cGUuCmUuZy4gQW1vdW50IG9mIGx6UmVjZWl2ZSgpIGdhcyBuZWNlc3NhcnkgdG8gZGVsaXZlciBhIGx6Q29tcG9zZSgpIG1lc3NhZ2UgYWRkcyBvdmVyaGVhZCB5b3UgZG9uJ3Qgd2FudCB0byBwYXkKaWYgeW91IGFyZSBvbmx5IG1ha2luZyBhIHN0YW5kYXJkIExheWVyWmVybyBtZXNzYWdlIGllLiBselJlY2VpdmUoKSBXSVRIT1VUIHNlbmRDb21wb3NlKCkuCgojIEFyZ3VtZW50cwoqIGBvcHRpb25zYCAtIEEgdmVjdG9yIG9mIEVuZm9yY2VkT3B0aW9uUGFyYW0gc3RydWN0dXJlcyBzcGVjaWZ5aW5nIGVuZm9yY2VkIG9wdGlvbnMAAAAAFHNldF9lbmZvcmNlZF9vcHRpb25zAAAAAQAAAAAAAAAHb3B0aW9ucwAAAAPqAAAH0AAAABNFbmZvcmNlZE9wdGlvblBhcmFtAAAAAAAAAAAAAAACekNvbWJpbmVzIG9wdGlvbnMgZm9yIGEgZ2l2ZW4gZW5kcG9pbnQgYW5kIG1lc3NhZ2UgdHlwZS4KCklmIHRoZXJlIGlzIGFuIGVuZm9yY2VkIGx6UmVjZWl2ZSBvcHRpb246Ci0ge2dhc19saW1pdDogMjAwaywgdmFsdWU6IDEgWExNfSBBTkQgYSBjYWxsZXIgc3VwcGxpZXMgYSBselJlY2VpdmUgb3B0aW9uOiB7Z2FzX2xpbWl0OiAxMDBrLCB2YWx1ZTogMC41IFhMTX0KLSBUaGUgcmVzdWx0aW5nIG9wdGlvbnMgd2lsbCBiZSB7Z2FzX2xpbWl0OiAzMDBrLCB2YWx1ZTogMS41IFhMTX0gd2hlbiB0aGUgbWVzc2FnZSBpcyBleGVjdXRlZCBvbiB0aGUgcmVtb3RlIGx6X3JlY2VpdmUoKSBmdW5jdGlvbi4KVGhlIHByZXNlbmNlIG9mIGR1cGxpY2F0ZWQgb3B0aW9ucyBpcyBoYW5kbGVkIG9mZi1jaGFpbiBpbiB0aGUgdmVyaWZpZXIvZXhlY3V0b3IuCgojIEFyZ3VtZW50cwoqIGBlaWRgIC0gVGhlIGVuZHBvaW50IElECiogYG1zZ190eXBlYCAtIFRoZSBPQXBwIG1lc3NhZ2UgdHlwZQoqIGBleHRyYV9vcHRpb25zYCAtIEFkZGl0aW9uYWwgb3B0aW9ucyBwYXNzZWQgYnkgdGhlIGNhbGxlcgoKIyBSZXR1cm5zClRoZSBjb21iaW5hdGlvbiBvZiBjYWxsZXIgc3BlY2lmaWVkIG9wdGlvbnMgQU5EIGVuZm9yY2VkIG9wdGlvbnMAAAAAAA9jb21iaW5lX29wdGlvbnMAAAAAAwAAAAAAAAADZWlkAAAAAAQAAAAAAAAACG1zZ190eXBlAAAABAAAAAAAAAANZXh0cmFfb3B0aW9ucwAAAAAAAA4AAAABAAAADgAAAAAAAAC3Q2hlY2tzIGlmIGEgbWVzc2FnaW5nIHBhdGggY2FuIGJlIGluaXRpYWxpemVkIGZvciB0aGUgZ2l2ZW4gb3JpZ2luLgoKIyBBcmd1bWVudHMKKiBgb3JpZ2luYCAtIFRoZSBvcmlnaW4gb2YgdGhlIG1lc3NhZ2UKCiMgUmV0dXJucwpUcnVlIGlmIHRoZSBwYXRoIGNhbiBiZSBpbml0aWFsaXplZCwgZmFsc2Ugb3RoZXJ3aXNlAAAAABVhbGxvd19pbml0aWFsaXplX3BhdGgAAAAAAAABAAAAAAAAAAZvcmlnaW4AAAAAB9AAAAAGT3JpZ2luAAAAAAABAAAAAQAAAAAAAAH4UmV0cmlldmVzIHRoZSBuZXh0IG5vbmNlIGZvciBhIGdpdmVuIHNvdXJjZSBlbmRwb2ludCBhbmQgc2VuZGVyIGFkZHJlc3MuCgpUaGUgcGF0aCBub25jZSBzdGFydHMgZnJvbSAxLiBJZiAwIGlzIHJldHVybmVkIGl0IG1lYW5zIHRoYXQgdGhlcmUgaXMgTk8gbm9uY2Ugb3JkZXJlZCBlbmZvcmNlbWVudC4KVGhpcyBpcyByZXF1aXJlZCBieSB0aGUgb2ZmLWNoYWluIGV4ZWN1dG9yIHRvIGRldGVybWluZSBpZiB0aGUgT0FwcCBleHBlY3RzIG1lc3NhZ2UgZXhlY3V0aW9uIHRvIGJlIG9yZGVyZWQuClRoaXMgaXMgYWxzbyBlbmZvcmNlZCBieSB0aGUgT0FwcC4KQnkgZGVmYXVsdCB0aGlzIGlzIE5PVCBlbmFibGVkLCBpLmUuIG5leHRfbm9uY2UgaXMgaGFyZGNvZGVkIHRvIHJldHVybiAwLgoKIyBBcmd1bWVudHMKKiBgc3JjX2VpZGAgLSBUaGUgc291cmNlIGVuZHBvaW50IElECiogYHNlbmRlcmAgLSBUaGUgc2VuZGVyIE9BcHAgYWRkcmVzcwoKIyBSZXR1cm5zClRoZSBuZXh0IG5vbmNlAAAACm5leHRfbm9uY2UAAAAAAAIAAAAAAAAAB3NyY19laWQAAAAABAAAAAAAAAAGc2VuZGVyAAAAAAPuAAAAIAAAAAEAAAAGAAAAAAAAAyNFbnRyeSBwb2ludCBmb3IgcmVjZWl2aW5nIG1lc3NhZ2VzIG9yIHBhY2tldHMgZnJvbSB0aGUgTGF5ZXJaZXJvIGVuZHBvaW50LgoKVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gY2FsbHMgYGNsZWFyX3BheWxvYWRfYW5kX3RyYW5zZmVyYCB0byB2YWxpZGF0ZSB0aGUgbWVzc2FnZQphbmQgY2xlYXIgaXQgZnJvbSB0aGUgZW5kcG9pbnQsIHRoZW4gZGVsZWdhdGVzIHRvIGBfX2x6X3JlY2VpdmVgIGZvciBhcHBsaWNhdGlvbiBsb2dpYy4KCiMgQXJndW1lbnRzCiogYGV4ZWN1dG9yYCAtIFRoZSBhZGRyZXNzIG9mIHRoZSBleGVjdXRvciBmb3IgdGhlIHJlY2VpdmVkIG1lc3NhZ2UKKiBgb3JpZ2luYCAtIFRoZSBvcmlnaW4gaW5mb3JtYXRpb24gY29udGFpbmluZyB0aGUgc291cmNlIGVuZHBvaW50IGFuZCBzZW5kZXIgYWRkcmVzczoKLSBgc3JjX2VpZGA6IFRoZSBzb3VyY2UgY2hhaW4gZW5kcG9pbnQgSUQKLSBgc2VuZGVyYDogVGhlIHNlbmRlciBhZGRyZXNzIG9uIHRoZSBzb3VyY2UgY2hhaW4KLSBgbm9uY2VgOiBUaGUgbm9uY2Ugb2YgdGhlIG1lc3NhZ2UKKiBgZ3VpZGAgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSByZWNlaXZlZCBMYXllclplcm8gbWVzc2FnZQoqIGBtZXNzYWdlYCAtIFRoZSBwYXlsb2FkIG9mIHRoZSByZWNlaXZlZCBtZXNzYWdlCiogYGV4dHJhX2RhdGFgIC0gQWRkaXRpb25hbCBhcmJpdHJhcnkgZGF0YSBwcm92aWRlZCBieSB0aGUgY29ycmVzcG9uZGluZyBleGVjdXRvcgoqIGB2YWx1ZWAgLSBUaGUgbmF0aXZlIHRva2VuIHZhbHVlIHNlbnQgd2l0aCB0aGUgbWVzc2FnZQAAAAAKbHpfcmVjZWl2ZQAAAAAABgAAAAAAAAAIZXhlY3V0b3IAAAATAAAAAAAAAAZvcmlnaW4AAAAAB9AAAAAGT3JpZ2luAAAAAAAAAAAABGd1aWQAAAPuAAAAIAAAAAAAAAAHbWVzc2FnZQAAAAAOAAAAAAAAAApleHRyYV9kYXRhAAAAAAAOAAAAAAAAAAV2YWx1ZQAAAAAAAAsAAAAAAAAAAAAAAexJbmRpY2F0ZXMgd2hldGhlciBhbiBhZGRyZXNzIGlzIGFuIGFwcHJvdmVkIGNvbXBvc2VNc2cgc2VuZGVyIHRvIHRoZSBFbmRwb2ludC4KCkFwcGxpY2F0aW9ucyBjYW4gb3B0aW9uYWxseSBjaG9vc2UgdG8gaW1wbGVtZW50IHNlcGFyYXRlIGNvbXBvc2VNc2cgc2VuZGVycyB0aGF0IGFyZSBOT1QgdGhlIGJyaWRnaW5nIGxheWVyLgpUaGUgZGVmYXVsdCBzZW5kZXIgSVMgdGhlIE9BcHBSZWNlaXZlciBpbXBsZW1lbnRlci4KCiMgQXJndW1lbnRzCiogYG9yaWdpbmAgLSBUaGUgb3JpZ2luIGluZm9ybWF0aW9uIGNvbnRhaW5pbmcgdGhlIHNvdXJjZSBlbmRwb2ludCBhbmQgc2VuZGVyIGFkZHJlc3MKKiBgbWVzc2FnZWAgLSBUaGUgbHpSZWNlaXZlIHBheWxvYWQKKiBgc2VuZGVyYCAtIFRoZSBzZW5kZXIgYWRkcmVzcyB0byBjaGVjawoKIyBSZXR1cm5zClRydWUgaWYgdGhlIHNlbmRlciBpcyBhIHZhbGlkIGNvbXBvc2VNc2cgc2VuZGVyLCBmYWxzZSBvdGhlcndpc2UAAAAVaXNfY29tcG9zZV9tc2dfc2VuZGVyAAAAAAAAAwAAAAAAAAAGb3JpZ2luAAAAAAfQAAAABk9yaWdpbgAAAAAAAAAAAAdtZXNzYWdlAAAAAA4AAAAAAAAABnNlbmRlcgAAAAAAEwAAAAEAAAABAAAAAAAAAK5SZXRyaWV2ZXMgdGhlIE9BcHAgdmVyc2lvbiBpbmZvcm1hdGlvbi4KCiMgUmV0dXJucwpBIHR1cGxlIGNvbnRhaW5pbmc6Ci0gYHNlbmRlcl92ZXJzaW9uYDogVGhlIHZlcnNpb24gb2YgdGhlIE9BcHBTZW5kZXIKLSBgcmVjZWl2ZXJfdmVyc2lvbmA6IFRoZSB2ZXJzaW9uIG9mIHRoZSBPQXBwUmVjZWl2ZXIAAAAAAAxvYXBwX3ZlcnNpb24AAAAAAAAAAQAAA+0AAAACAAAABgAAAAYAAAAAAAAAbFJldHJpZXZlcyB0aGUgTGF5ZXJaZXJvIGVuZHBvaW50IGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBPQXBwLgoKIyBSZXR1cm5zClRoZSBMYXllclplcm8gZW5kcG9pbnQgYWRkcmVzcwAAAAhlbmRwb2ludAAAAAAAAAABAAAAEwAAAAAAAADBUmV0cmlldmVzIHRoZSBwZWVyIChPQXBwKSBhc3NvY2lhdGVkIHdpdGggYSBjb3JyZXNwb25kaW5nIGVuZHBvaW50LgoKIyBBcmd1bWVudHMKKiBgZWlkYCAtIFRoZSBlbmRwb2ludCBJRAoKIyBSZXR1cm5zClRoZSBwZWVyIGFkZHJlc3MgKE9BcHAgaW5zdGFuY2UpIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBlbmRwb2ludAAAAAAAAARwZWVyAAAAAQAAAAAAAAADZWlkAAAAAAQAAAABAAAD6AAAA+4AAAAgAAAAAAAAAOVTZXRzIG9yIHJlbW92ZXMgdGhlIHBlZXIgYWRkcmVzcyAoT0FwcCBpbnN0YW5jZSkgZm9yIGEgY29ycmVzcG9uZGluZyBlbmRwb2ludC4KCiMgQXJndW1lbnRzCiogYGVpZGAgLSBUaGUgZW5kcG9pbnQgSUQKKiBgcGVlcmAgLSBUaGUgYWRkcmVzcyBvZiB0aGUgcGVlciB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgZW5kcG9pbnQsIG9yIE5vbmUgdG8gcmVtb3ZlIHRoZSBwZWVyAAAAAAAACHNldF9wZWVyAAAAAgAAAAAAAAADZWlkAAAAAAQAAAAAAAAABHBlZXIAAAPoAAAD7gAAACAAAAAAAAAAAAAAAI5TZXRzIHRoZSBkZWxlZ2F0ZSBhZGRyZXNzIGZvciB0aGUgT0FwcCBDb3JlLgoKIyBBcmd1bWVudHMKKiBgZGVsZWdhdGVgIC0gVGhlIGFkZHJlc3Mgb2YgdGhlIGRlbGVnYXRlIHRvIGJlIHNldCwgb3IgTm9uZSB0byByZW1vdmUgdGhlIGRlbGVnYXRlAAAAAAAMc2V0X2RlbGVnYXRlAAAAAQAAAAAAAAAIZGVsZWdhdGUAAAPoAAAAEwAAAAAAAAAAAAABj1NldHMgVFRMIGNvbmZpZ3MgZm9yIGluc3RhbmNlIGFuZCBwZXJzaXN0ZW50IHN0b3JhZ2UuCgotIGBOb25lYCB2YWx1ZXMgcmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIGNvbmZpZyAoZGlzYWJsZXMgYXV0by1leHRlbnNpb24gZm9yIHRoYXQgdHlwZSkKLSBWYWxpZGF0ZXMgdGhhdCBgdGhyZXNob2xkIDw9IGV4dGVuZF90byA8PSBNQVhfVFRMYAoKIyBBcmd1bWVudHMKLSBgaW5zdGFuY2VgIC0gVFRMIGNvbmZpZyBmb3IgaW5zdGFuY2Ugc3RvcmFnZQotIGBwZXJzaXN0ZW50YCAtIFRUTCBjb25maWcgZm9yIHBlcnNpc3RlbnQgc3RvcmFnZQoKIyBQYW5pY3MKLSBgVHRsQ29uZmlnRnJvemVuYCBpZiBjb25maWdzIGFyZSBmcm96ZW4KLSBgSW52YWxpZFR0bENvbmZpZ2AgaWYgdmFsaWRhdGlvbiBmYWlscwAAAAAPc2V0X3R0bF9jb25maWdzAAAAAAIAAAAAAAAACGluc3RhbmNlAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAApwZXJzaXN0ZW50AAAAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAAAAAAAAAAAAEhSZXR1cm5zIHRoZSBjdXJyZW50IFRUTCBjb25maWdzIGFzIChpbnN0YW5jZV9jb25maWcsIHBlcnNpc3RlbnRfY29uZmlnKS4AAAALdHRsX2NvbmZpZ3MAAAAAAAAAAAEAAAPtAAAAAgAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAADhUGVybWFuZW50bHkgZnJlZXplcyBUVEwgY29uZmlncywgcHJldmVudGluZyBhbnkgZnV0dXJlIG1vZGlmaWNhdGlvbnMuCgpUaGlzIGlzIGlycmV2ZXJzaWJsZSBhbmQgcHJvdmlkZXMgaW1tdXRhYmlsaXR5IGd1YXJhbnRlZXMgdG8gdXNlcnMuCkVtaXRzIGBUdGxDb25maWdzRnJvemVuYCBldmVudC4KCiMgUGFuaWNzCi0gYFR0bENvbmZpZ0FscmVhZHlGcm96ZW5gIGlmIGFscmVhZHkgZnJvemVuAAAAAAAAEmZyZWV6ZV90dGxfY29uZmlncwAAAAAAAAAAAAAAAAAAAAAAJ1JldHVybnMgd2hldGhlciBUVEwgY29uZmlncyBhcmUgZnJvemVuLgAAAAAVaXNfdHRsX2NvbmZpZ3NfZnJvemVuAAAAAAAAAAAAAAEAAAABAAAAAAAAAKVFeHRlbmRzIHRoZSBpbnN0YW5jZSBUVEwuCgojIEFyZ3VtZW50cwoKKiBgdGhyZXNob2xkYCAtIFRoZSB0aHJlc2hvbGQgdG8gZXh0ZW5kIHRoZSBUVEwgKGlmIGN1cnJlbnQgVFRMIGlzIGJlbG93IHRoaXMsIGV4dGVuZCkuCiogYGV4dGVuZF90b2AgLSBUaGUgVFRMIHRvIGV4dGVuZCB0by4AAAAAAAATZXh0ZW5kX2luc3RhbmNlX3R0bAAAAAACAAAAAAAAAAl0aHJlc2hvbGQAAAAAAAAEAAAAAAAAAAlleHRlbmRfdG8AAAAAAAAEAAAAAAAAAAAAAAA+UmV0dXJucyB0aGUgY3VycmVudCBvd25lciBhZGRyZXNzLCBvciBOb25lIGlmIG5vIG93bmVyIGlzIHNldC4AAAAAAAVvd25lcgAAAAAAAAAAAAABAAAD6AAAABMAAAAAAAAAWVJldHVybnMgdGhlIHBlbmRpbmcgb3duZXIgYWRkcmVzcyBmb3IgMi1zdGVwIHRyYW5zZmVyLCBvciBOb25lIGlmIG5vIHRyYW5zZmVyIGlzIHBlbmRpbmcuAAAAAAAADXBlbmRpbmdfb3duZXIAAAAAAAAAAAAAAQAAA+gAAAATAAAAAAAAAStUcmFuc2ZlcnMgb3duZXJzaGlwIGltbWVkaWF0ZWx5IHRvIGEgbmV3IGFkZHJlc3MuCgpVc2Ugd2l0aCBjYXV0aW9uIC0gaWYgeW91IHRyYW5zZmVyIHRvIGEgd3JvbmcgYWRkcmVzcywgb3duZXJzaGlwIGlzIGxvc3QgZm9yZXZlci4KQ29uc2lkZXIgdXNpbmcgYHByb3Bvc2Vfb3duZXJzaGlwX3RyYW5zZmVyYCBpbnN0ZWFkLgoKIyBQYW5pY3MKLSBgT3duZXJOb3RTZXRgIGlmIG5vIG93bmVyIGlzIGN1cnJlbnRseSBzZXQKLSBgVHJhbnNmZXJJblByb2dyZXNzYCBpZiBhIDItc3RlcCB0cmFuc2ZlciBpcyBpbiBwcm9ncmVzcwAAAAASdHJhbnNmZXJfb3duZXJzaGlwAAAAAAABAAAAAAAAAAluZXdfb3duZXIAAAAAAAATAAAAAAAAAAAAAAJcUHJvcG9zZXMgYW4gb3duZXJzaGlwIHRyYW5zZmVyIHRvIGEgbmV3IGFkZHJlc3MuCgpUaGUgbmV3IG93bmVyIG11c3QgY2FsbCBgYWNjZXB0X293bmVyc2hpcCgpYCB3aXRoaW4gYHR0bGAgbGVkZ2Vycwp0byBjb21wbGV0ZSB0aGUgdHJhbnNmZXIuIFRoZSBwZW5kaW5nIHRyYW5zZmVyIHdpbGwgYXV0b21hdGljYWxseSBleHBpcmUgYWZ0ZXIuCgojIEFyZ3VtZW50cwotIGBuZXdfb3duZXJgIC0gVGhlIHByb3Bvc2VkIG5ldyBvd25lcgotIGB0dGxgIC0gTnVtYmVyIG9mIGxlZGdlcnMgdGhlIG5ldyBvd25lciBoYXMgdG8gYWNjZXB0LgpVc2UgYDBgIHRvIGNhbmNlbCBhIHBlbmRpbmcgdHJhbnNmZXIgKG5ld19vd25lciBtdXN0IG1hdGNoIHBlbmRpbmcpLgoKIyBQYW5pY3MKLSBgT3duZXJOb3RTZXRgIGlmIG5vIG93bmVyIGlzIGN1cnJlbnRseSBzZXQKLSBgTm9QZW5kaW5nVHJhbnNmZXJgIHdoZW4gY2FuY2VsbGluZyBhbmQgbm8gcGVuZGluZyB0cmFuc2ZlciBleGlzdHMKLSBgSW52YWxpZFR0bGAgaWYgdHRsIGV4Y2VlZHMgbWF4IFRUTAotIGBJbnZhbGlkUGVuZGluZ093bmVyYCB3aGVuIGNhbmNlbGxpbmcgd2l0aCB3cm9uZyBuZXdfb3duZXIgYWRkcmVzcwAAABpwcm9wb3NlX293bmVyc2hpcF90cmFuc2ZlcgAAAAAAAgAAAAAAAAAJbmV3X293bmVyAAAAAAAAEwAAAAAAAAADdHRsAAAAAAQAAAAAAAAAAAAAALlBY2NlcHRzIGEgcGVuZGluZyAyLXN0ZXAgb3duZXJzaGlwIHRyYW5zZmVyLgoKTXVzdCBiZSBjYWxsZWQgYnkgdGhlIHBlbmRpbmcgb3duZXIgYmVmb3JlIHRoZSBUVEwgZXhwaXJlcy4KCiMgUGFuaWNzCi0gYE5vUGVuZGluZ1RyYW5zZmVyYCBpZiB0aGVyZSBpcyBubyBwZW5kaW5nIHRyYW5zZmVyIChvciBpdCBleHBpcmVkKQAAAAAAABBhY2NlcHRfb3duZXJzaGlwAAAAAAAAAAAAAAAAAAAApFBlcm1hbmVudGx5IHJlbm91bmNlcyBvd25lcnNoaXAuCgojIFBhbmljcwotIGBPd25lck5vdFNldGAgaWYgbm8gb3duZXIgaXMgY3VycmVudGx5IHNldAotIGBUcmFuc2ZlckluUHJvZ3Jlc3NgIGlmIGEgMi1zdGVwIHRyYW5zZmVyIGlzIGluIHByb2dyZXNzIChjYW5jZWwgaXQgZmlyc3QpAAAAEnJlbm91bmNlX293bmVyc2hpcAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAANRW5kcG9pbnRFcnJvcgAAAAAAABkAAAAAAAAAEUFscmVhZHlSZWdpc3RlcmVkAAAAAAAAAQAAAAAAAAANQ29tcG9zZUV4aXN0cwAAAAAAAAIAAAAAAAAAD0NvbXBvc2VOb3RGb3VuZAAAAAADAAAAAAAAABxEZWZhdWx0UmVjZWl2ZUxpYlVuYXZhaWxhYmxlAAAABAAAAAAAAAAZRGVmYXVsdFNlbmRMaWJVbmF2YWlsYWJsZQAAAAAAAAUAAAAAAAAAFUluc3VmZmljaWVudE5hdGl2ZUZlZQAAAAAAAAYAAAAAAAAAEkluc3VmZmljaWVudFpyb0ZlZQAAAAAABwAAAAAAAAAQSW52YWxpZEZlZUFtb3VudAAAAAgAAAAAAAAADUludmFs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bmF0aW9uIGVuZHBvaW50IElEIChjaGFpbiBpZGVudGlmaWVyKS4AAAAAB2RzdF9laWQAAAAABAAAABxUaGUgbWVzc2FnZSBwYXlsb2FkIHRvIHNlbmQuAAAAB21lc3NhZ2UAAAAADgAAACFFbmNvZGVkIGV4ZWN1dG9yIGFuZCBEVk4gb3B0aW9ucy4AAAAAAAAHb3B0aW9ucwAAAAAOAAAAOVdoZXRoZXIgdG8gcGF5IGZlZXMgaW4gWlJPIHRva2VuIGluc3RlYWQgb2YgbmF0aXZlIHRva2VuLgAAAAAAAApwYXlfaW5fenJvAAAAAAABAAAANVJlY2VpdmVyIGFkZHJlc3Mgb24gdGhlIGRlc3RpbmF0aW9uIGNoYWluICgzMiBieXRlcykuAAAAAAAACHJlY2VpdmVyAAAD7gAAACAAAAABAAAATVNvdXJjZSBtZXNzYWdlIGluZm9ybWF0aW9uIGlkZW50aWZ5aW5nIHdoZXJlIGEgY3Jvc3MtY2hhaW4gbWVzc2FnZSBjYW1lIGZyb20uAAAAAAAAAAAAAAZPcmlnaW4AAAAAAAMAAAAXTm9uY2UgZm9yIHRoaXMgcGF0aHdheS4AAAAABW5vbmNlAAAAAAAABgAAAC5TZW5kZXIgYWRkcmVzcyBvbiB0aGUgc291cmNlIGNoYWluICgzMiBieXRlcykuAAAAAAAGc2VuZGVyAAAAAAPuAAAAIAAAACZTb3VyY2UgZW5kcG9pbnQgSUQgKGNoYWluIGlkZW50aWZpZXIpLgAAAAAAB3NyY19laWQAAAAABAAAAAEAAAAoRmVlIHN0cnVjdHVyZSBmb3IgY3Jvc3MtY2hhaW4gbWVzc2FnaW5nLgAAAAAAAAAMTWVzc2FnaW5nRmVlAAAAAgAAAB9GZWUgcGFpZCBpbiBuYXRpdmUgdG9rZW4gKFhMTSkuAAAAAApuYXRpdmVfZmVlAAAAAAALAAAAKEZlZSBwYWlkIGluIFpSTyB0b2tlbiAoTGF5ZXJaZXJvIHRva2VuKS4AAAAHenJvX2ZlZQAAAAALAAAAAQAAAEJSZWNlaXB0IHJldHVybmVkIGFmdGVyIHN1Y2Nlc3NmdWxseSBzZW5kaW5nIGEgY3Jvc3MtY2hhaW4gbWVzc2FnZS4AAAAAAAAAAAAQTWVzc2FnaW5nUmVjZWlwdAAAAAMAAAApVGhlIGZlZXMgY2hhcmdlZCBmb3Igc2VuZGluZyB0aGUgbWVzc2FnZS4AAAAAAAADZmVlAAAAB9AAAAAMTWVzc2FnaW5nRmVlAAAAK0dsb2JhbGx5IHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgbWVzc2FnZS4AAAAABGd1aWQAAAPuAAAAIAAAACRUaGUgb3V0Ym91bmQgbm9uY2UgZm9yIHRoaXMgcGF0aHdheS4AAAAFbm9uY2UAAAAAAAAGAAAAAgAAADhUeXBlIG9mIG1lc3NhZ2UgbGlicmFyeSBpbmRpY2F0aW5nIHN1cHBvcnRlZCBvcGVyYXRpb25zLgAAAAAAAAAOTWVzc2FnZUxpYlR5cGUAAAAAAAMAAAAAAAAAH1N1cHBvcnRzIG9ubHkgc2VuZGluZyBtZXNzYWdlcy4AAAAABFNlbmQAAAAAAAAAIVN1cHBvcnRzIG9ubHkgcmVjZWl2aW5nIG1lc3NhZ2VzLgAAAAAAAAdSZWNlaXZlAAAAAAAAAAAtU3VwcG9ydHMgYm90aCBzZW5kaW5nIGFuZCByZWNlaXZpbmcgbWVzc2FnZXMuAAAAAAAADlNlbmRBbmRSZWNlaXZlAAAAAAABAAAAt1ZlcnNpb24gaW5mb3JtYXRpb24gZm9yIGEgbWVzc2FnZSBsaWJyYXJ5LgoKTm90ZTogYG1pbm9yYCBhbmQgYGVuZHBvaW50X3ZlcnNpb25gIHVzZSBgdTMyYCBpbnN0ZWFkIG9mIGB1OGAgYmVjYXVzZSBTdGVsbGFyIGRvZXMgbm90CnN1cHBvcnQgYHU4YCB0eXBlcyBpbiBjb250cmFjdCBpbnRlcmZhY2UgZnVuY3Rpb25zLgAAAAAAAAAAEU1lc3NhZ2VMaWJWZXJzaW9uAAAAAAAAAwAAADNFbmRwb2ludCB2ZXJzaW9uIChzaG91bGQgbm90IGV4Y2VlZCB1ODo6TUFYID0gMjU1KS4AAAAAEGVuZHBvaW50X3ZlcnNpb24AAAAEAAAAFU1ham9yIHZlcnNpb24gbnVtYmVyLgAAAAAAAAVtYWpvcgAAAAAAAAYAAAA3TWlub3IgdmVyc2lvbiBudW1iZXIgKHNob3VsZCBub3QgZXhjZWVkIHU4OjpNQVggPSAyNTUpLgAAAAAFbWlub3IAAAAAAAAEAAAAAQAAADZUaW1lb3V0IGNvbmZpZ3VyYXRpb24gZm9yIHJlY2VpdmUgbGlicmFyeSB0cmFuc2l0aW9ucy4AAAAAAAAAAAAHVGltZW91dAAAAAACAAAAKFVuaXggdGltZXN0YW1wIHdoZW4gdGhlIHRpbWVvdXQgZXhwaXJlcy4AAAAGZXhwaXJ5AAAAAAAGAAAAKVRoZSBuZXcgbGlicmFyeSBhZGRyZXNzIHRvIHRyYW5zaXRpb24gdG8uAAAAAAAAA2xpYgAAAAATAAAAAQAAADVQYXJhbWV0ZXJzIGZvciBzZXR0aW5nIG1lc3NhZ2UgbGlicmFyeSBjb25maWd1cmF0aW9uLgAAAAAAAAAAAAAOU2V0Q29uZmlnUGFyYW0AAAAAAAMAAAAfWERSLWVuY29kZWQgY29uZmlndXJhdGlvbiBkYXRhLgAAAAAGY29uZmlnAAAAAAAOAAAAMFRoZSB0eXBlIG9mIGNvbmZpZ3VyYXRpb24gKGUuZy4sIGV4ZWN1dG9yLCBVTE4pLgAAAAtjb25maWdfdHlwZQAAAAAEAAAAJ1RoZSBlbmRwb2ludCBJRCB0aGlzIGNvbmZpZyBhcHBsaWVzIHRvLgAAAAADZWlkAAAAAAQAAAABAAAAMVJlc29sdmVkIGxpYnJhcnkgaW5mb3JtYXRpb24gd2l0aCBkZWZhdWx0IHN0YXR1cy4AAAAAAAAAAAAAD1Jlc29sdmVkTGlicmFyeQAAAAACAAAARFdoZXRoZXIgdGhpcyBpcyB0aGUgZGVmYXVsdCBsaWJyYXJ5ICh0cnVlKSBvciBPQXBwLXNwZWNpZmljIChmYWxzZSkuAAAACmlzX2RlZmF1bHQAAAAAAAEAAAAdVGhlIHJlc29sdmVkIGxpYnJhcnkgYWRkcmVzcy4AAAAAAAADbGliAAAAABMAAAABAAAASE91dGJvdW5kIHBhY2tldCBjb250YWluaW5nIGFsbCBpbmZvcm1hdGlvbiBmb3IgY3Jvc3MtY2hhaW4gdHJhbnNtaXNzaW9uLgAAAAAAAAAOT3V0Ym91bmRQYWNrZXQAAAAAAAcAAAAYRGVzdGluYXRpb24gZW5kcG9pbnQgSUQuAAAAB2RzdF9laWQAAAAABAAAACxHbG9iYWxseSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBtZXNzYWdlLgAAAARndWlkAAAD7gAAACAAAAAUVGhlIG1lc3NhZ2UgcGF5bG9hZC4AAAAHbWVzc2FnZQAAAAAOAAAAIE91dGJvdW5kIG5vbmNlIGZvciB0aGlzIHBhdGh3YXkuAAAABW5vbmNlAAAAAAAABgAAADFSZWNlaXZlciBhZGRyZXNzIG9uIGRlc3RpbmF0aW9uIGNoYWluICgzMiBieXRlcykuAAAAAAAACHJlY2VpdmVyAAAD7gAAACAAAAAfU2VuZGVyIGFkZHJlc3Mgb24gc291cmNlIGNoYWluLgAAAAAGc2VuZGVyAAAAAAATAAAAE1NvdXJjZSBlbmRwb2ludCBJRC4AAAAAB3NyY19laWQAAAAABAAAAAEAAAArQSBmZWUgcmVjaXBpZW50IHdpdGggdGhlIGFtb3VudCB0byBiZSBwYWlkLgAAAAAAAAAADEZlZVJlY2lwaWVudAAAAAIAAAAVQW1vdW50IG9mIGZlZSB0byBwYXkuAAAAAAAABmFtb3VudAAAAAAACwAAAB9UaGUgYWRkcmVzcyB0byBzZW5kIHRoZSBmZWUgdG8uAAAAAAJ0bwAAAAAAEwAAAAEAAAA8UmVzdWx0IG9mIHNlbmQgb3BlcmF0aW9uIGNvbnRhaW5pbmcgZmVlcyBhbmQgZW5jb2RlZCBwYWNrZXQuAAAAAAAAAA1GZWVzQW5kUGFja2V0AAAAAAAAAwAAACpUaGUgZW5jb2RlZCBwYWNrZXQgcmVhZHkgZm9yIHRyYW5zbWlzc2lvbi4AAAAAAA5lbmNvZGVkX3BhY2tldAAAAAAADgAAAD9MaXN0IG9mIG5hdGl2ZSB0b2tlbiBmZWUgcmVjaXBpZW50cyAoZXhlY3V0b3IsIERWTnMsIHRyZWFzdXJ5KS4AAAAAFW5hdGl2ZV9mZWVfcmVjaXBpZW50cwAAAAAAA+oAAAfQAAAADEZlZVJlY2lwaWVudAAAACxMaXN0IG9mIFpSTyB0b2tlbiBmZWUgcmVjaXBpZW50cyAodHJlYXN1cnkpLgAAABJ6cm9fZmVlX3JlY2lwaWVudHMAAAAAA+oAAAfQAAAADEZlZVJlY2lwaWVudAAAAAQAAAAUT0FwcEVycm9yOiAyMDAwLTIwOTkAAAAAAAAACU9BcHBFcnJvcgAAAAAAAAQAAAAAAAAADkludmFsaWRPcHRpb25zAAAAAAfQAAAAAAAAAAZOb1BlZXIAAAAAB9EAAAAAAAAACE9ubHlQZWVyAAAH0gAAAAAAAAATWnJvVG9rZW5VbmF2YWlsYWJsZQAAAAfTAAAAAgAAAAAAAAAAAAAAD09BcHBDb3JlU3RvcmFnZQAAAAACAAAAAAAAAAAAAAAIRW5kcG9pbnQAAAABAAAAAAAAAARQZWVyAAAAAQAAAAQAAAAFAAAAAAAAAAAAAAAHUGVlclNldAAAAAABAAAACHBlZXJfc2V0AAAAAgAAAAAAAAADZWlkAAAAAAQAAAAAAAAAAAAAAARwZWVyAAAD6AAAA+4AAAAgAAAAAAAAAAIAAAABAAAAAAAAAAAAAAATRW5mb3JjZWRPcHRpb25QYXJhbQAAAAADAAAAAAAAAANlaWQAAAAABAAAAAAAAAAIbXNnX3R5cGUAAAAEAAAAAAAAAAdvcHRpb25zAAAAAA4AAAACAAAAAAAAAAAAAAAXT0FwcE9wdGlvbnNUeXBlM1N0b3JhZ2UAAAAAAQAAAAEAAAAAAAAAD0VuZm9yY2VkT3B0aW9ucwAAAAACAAAABAAAAAQAAAAFAAAAAAAAAAAAAAARRW5mb3JjZWRPcHRpb25TZXQAAAAAAAABAAAAE2VuZm9yY2VkX29wdGlvbl9zZXQAAAAAAQAAAAAAAAAWZW5mb3JjZWRfb3B0aW9uX3BhcmFtcwAAAAAD6gAAB9AAAAATRW5mb3JjZWRPcHRpb25QYXJhbQAAAAAAAAAAAgAAAAQAAAATT0ZURXJyb3I6IDMwMDAtMzA5OQAAAAAAAAAACE9GVEVycm9yAAAABAAAAAAAAAAUSW52YWxpZExvY2FsRGVjaW1hbHMAAAu4AAAAAAAAAA5Ob3RJbml0aWFsaXplZAAAAAALuQAAAAAAAAAIT3ZlcmZsb3cAAAu6AAAAAAAAABBTbGlwcGFnZUV4Y2VlZGVkAAALuwAAAAUAAAAAAAAAAAAAAAdPRlRTZW50AAAAAAEAAAAIb2Z0X3NlbnQAAAAFAAAAAAAAAARndWlkAAAD7gAAACAAAAAAAAAAAAAAAAdkc3RfZWlkAAAAAAQAAAAAAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAAAAAADmFtb3VudF9zZW50X2xkAAAAAAALAAAAAAAAAAAAAAASYW1vdW50X3JlY2VpdmVkX2xkAAAAAAALAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAALT0ZUUmVjZWl2ZWQAAAAAAQAAAAxvZnRfcmVjZWl2ZWQAAAAEAAAAAAAAAARndWlkAAAD7gAAACAAAAAAAAAAAAAAAAdzcmNfZWlkAAAAAAQAAAAAAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAAAAAAEmFtb3VudF9yZWNlaXZlZF9sZAAAAAAACwAAAAAAAAACAAAAAgAAAAAAAAAAAAAACk9GVFN0b3JhZ2UAAAAAAAIAAAAAAAAAAAAAABVEZWNpbWFsQ29udmVyc2lvblJhdGUAAAAAAAAAAAAAAAAAAAVUb2tlbgAAAAAAAAEAAAAtUGFyYW1ldGVycyBmb3Igc2VuZGluZyBPRlQgdG9rZW5zIGNyb3NzLWNoYWluAAAAAAAAAAAAAAlTZW5kUGFyYW0AAAAAAAAHAAAAJFRoZSBhbW91bnQgdG8gc2VuZCBpbiBsb2NhbCBkZWNpbWFscwAAAAlhbW91bnRfbGQAAAAAAAALAAAAOENvbXBvc2UgbWVzc2FnZSB0byBleGVjdXRlIG9uIHRoZSBkZXN0aW5hdGlvbiAoT3B0aW9uYWwpAAAAC2NvbXBvc2VfbXNnAAAAAA4AAAAbVGhlIGRlc3RpbmF0aW9uIGVuZHBvaW50IElEAAAAAAdkc3RfZWlkAAAAAAQAAAA3QWRkaXRpb25hbCBvcHRpb25zIGZvciB0aGUgTGF5ZXJaZXJvIG1lc3NhZ2UgKE9wdGlvbmFsKQAAAAANZXh0cmFfb3B0aW9ucwAAAAAAAA4AAABFVGhlIG1pbmltdW0gYW1vdW50IHRvIHJlY2VpdmUgaW4gbG9jYWwgZGVjaW1hbHMgKHNsaXBwYWdlIHByb3RlY3Rpb24pAAAAAAAADW1pbl9hbW91bnRfbGQAAAAAAAALAAAAKk9GVCBjb21tYW5kIGZvciBjdXN0b20gYmVoYXZpb3IgKE9wdGlvbmFsKQAAAAAAB29mdF9jbWQAAAAADgAAADlUaGUgcmVjaXBpZW50IGFkZHJlc3Mgb24gdGhlIGRlc3RpbmF0aW9uIGNoYWluICgzMiBieXRlcykAAAAAAAACdG8AAAAAA+4AAAAgAAAAAQAAACJUcmFuc2ZlciBsaW1pdHMgZm9yIE9GVCBvcGVyYXRpb25zAAAAAAAAAAAACE9GVExpbWl0AAAAAgAAACxUaGUgbWF4aW11bSBhbW91bnQgdG8gc2VuZCBpbiBsb2NhbCBkZWNpbWFscwAAAA1tYXhfYW1vdW50X2xkAAAAAAAACwAAACxUaGUgbWluaW11bSBhbW91bnQgdG8gc2VuZCBpbiBsb2NhbCBkZWNpbWFscwAAAA1taW5fYW1vdW50X2xkAAAAAAAACwAAAAEAAAA/UmVjZWlwdCBjb250YWluaW5nIGFtb3VudHMgc2VudCBhbmQgcmVjZWl2ZWQgaW4gYW4gT0ZUIHRyYW5zZmVyAAAAAAAAAAAKT0ZUUmVjZWlwdAAAAAAAAgAAADNUaGUgYW1vdW50IHJlY2VpdmVkIGluIGxvY2FsIGRlY2ltYWxzIG9uIHRoZSByZW1vdGUAAAAAEmFtb3VudF9yZWNlaXZlZF9sZAAAAAAACwAAACFUaGUgYW1vdW50IHNlbnQgaW4gbG9jYWwgZGVjaW1hbHMAAAAAAAAOYW1vdW50X3NlbnRfbGQAAAAAAAsAAAABAAAALkRldGFpbHMgYWJvdXQgZmVlcyBjaGFyZ2VkIGluIGFuIE9GVCBvcGVyYXRpb24AAAAAAAAAAAAMT0ZURmVlRGV0YWlsAAAAAgAAABpUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGZlZQAAAAAAC2Rlc2NyaXB0aW9uAAAAAA4AAAB/VGhlIGFtb3VudCBvZiB0aGUgZmVlIGluIGxvY2FsIGRlY2ltYWxzLiBQb3NpdGl2ZSB2YWx1ZXMgcmVwcmVzZW50IGZlZXMgY2hhcmdlZCwKd2hpbGUgbmVnYXRpdmUgdmFsdWVzIHJlcHJlc2VudCByZXdhcmRzIGdpdmVuLgAAAAANZmVlX2Ftb3VudF9sZAAAAAAAAAsAAAAEAAAAHEJ1ZmZlclJlYWRlckVycm9yOiAxMDAwLTEwMDkAAAAAAAAAEUJ1ZmZlclJlYWRlckVycm9yAAAAAAAAAgAAAAAAAAANSW52YWxpZExlbmd0aAAAAAAAA+gAAAAAAAAAFUludmFsaWRBZGRyZXNzUGF5bG9hZAAAAAAAA+kAAAAEAAAAHEJ1ZmZlcldyaXRlckVycm9yOiAxMDEwLTEwMTkAAAAAAAAAEUJ1ZmZlcldyaXRlckVycm9yAAAAAAAAAQAAAAAAAAAVSW52YWxpZEFkZHJlc3NQYXlsb2FkAAAAAAAD8gAAAAQAAAAfVHRsQ29uZmlndXJhYmxlRXJyb3I6IDEwMjAtMTAyOQAAAAAAAAAAFFR0bENvbmZpZ3VyYWJsZUVycm9yAAAAAwAAAAAAAAAQSW52YWxpZFR0bENvbmZpZwAAA/wAAAAAAAAAD1R0bENvbmZpZ0Zyb3plbgAAAAP9AAAAAAAAABZUdGxDb25maWdBbHJlYWR5RnJvemVuAAAAAAP+AAAABAAAABdPd25hYmxlRXJyb3I6IDEwMzAtMTAzOQAAAAAAAAAADE93bmFibGVFcnJvcgAAAAYAAAAAAAAAE0ludmFsaWRQZW5kaW5nT3duZXIAAAAEBgAAAAAAAAAKSW52YWxpZFR0bAAAAAAEBwAAAAAAAAARTm9QZW5kaW5nVHJhbnNmZXIAAAAAAAQIAAAAAAAAAA9Pd25lckFscmVhZHlTZXQAAAAECQAAAAAAAAALT3duZXJOb3RTZXQAAAAECgAAAAAAAAASVHJhbnNmZXJJblByb2dyZXNzAAAAAAQLAAAABAAAABhCeXRlc0V4dEVycm9yOiAxMDQwLTEwNDkAAAAAAAAADUJ5dGVzRXh0RXJyb3IAAAAAAAABAAAAAAAAAA5MZW5ndGhNaXNtYXRjaAAAAAAEEAAAAAQAAAAbVXBncmFkZWFibGVFcnJvcjogMTA1MC0xMDU5AAAAAAAAAAAQVXBncmFkZWFibGVFcnJvcgAAAAEAAAAAAAAAE01pZ3JhdGlvbk5vdEFsbG93ZWQAAAAEGgAAAAQAAAAYTXVsdGlzaWdFcnJvcjogMTA2MC0xMDY5AAAAAAAAAA1NdWx0aXNpZ0Vycm9yAAAAAAAACAAAAAAAAAASQWxyZWFkeUluaXRpYWxpemVkAAAAAAQkAAAAAAAAAA1JbnZhbGlkU2lnbmVyAAAAAAAEJQAAAAAAAAAOU2lnbmF0dXJlRXJyb3IAAAAABCYAAAAAAAAAE1NpZ25lckFscmVhZHlFeGlzdHMAAAAEJwAAAAAAAAAOU2lnbmVyTm90Rm91bmQAAAAABCgAAAAAAAAAHVRvdGFsU2lnbmVyc0xlc3NUaGFuVGhyZXNob2xkAAAAAAAEKQAAAAAAAAAPVW5zb3J0ZWRTaWduZXJzAAAABCoAAAAAAAAADVplcm9UaHJlc2hvbGQAAAAAAAQrAAAABQAAADBFdmVudCBlbWl0dGVkIHdoZW4gYSBzaWduZXIgaXMgYWRkZWQgb3IgcmVtb3ZlZC4AAAAAAAAACVNpZ25lclNldAAAAAAAAAEAAAAKc2lnbmVyX3NldAAAAAAAAgAAAAAAAAAGc2lnbmVyAAAAAAPuAAAAFAAAAAEAAAAAAAAABmFjdGl2ZQAAAAAAAQAAAAAAAAACAAAABQAAADZFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNpZ25hdHVyZSB0aHJlc2hvbGQgaXMgY2hhbmdlZC4AAAAAAAAAAAAMVGhyZXNob2xkU2V0AAAAAQAAAA10aHJlc2hvbGRfc2V0AAAAAAAAAQAAAAAAAAAJdGhyZXNob2xkAAAAAAAABAAAAAAAAAACAAAAAgAAAAAAAAAAAAAAD011bHRpc2lnU3RvcmFnZQAAAAACAAAAAAAAAAAAAAAHU2lnbmVycwAAAAAAAAAAAAAAAAlUaHJlc2hvbGQAAAAAAAAFAAAAV0V2ZW50IGVtaXR0ZWQgd2hlbiBvd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQgKGJvdGggc2luZ2xlLXN0ZXAgYW5kIHR3by1zdGVwIGNvbXBsZXRpb24pLgAAAAAAAAAAFE93bmVyc2hpcFRyYW5zZmVycmVkAAAAAQAAABVvd25lcnNoaXBfdHJhbnNmZXJyZWQAAAAAAAACAAAAAAAAAAlvbGRfb3duZXIAAAAAAAATAAAAAAAAAAAAAAAJbmV3X293bmVyAAAAAAAAEwAAAAAAAAACAAAABQAAADtFdmVudCBlbWl0dGVkIHdoZW4gYSAyLXN0ZXAgb3duZXJzaGlwIHRyYW5zZmVyIGlzIHByb3Bvc2VkLgAAAAAAAAAAFU93bmVyc2hpcFRyYW5zZmVycmluZwAAAAAAAAEAAAAWb3duZXJzaGlwX3RyYW5zZmVycmluZwAAAAAAAwAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAAAAAAAN0dGwAAAAABAAAAAAAAAACAAAABQAAACpFdmVudCBlbWl0dGVkIHdoZW4gb3duZXJzaGlwIGlzIHJlbm91bmNlZC4AAAAAAAAAAAAST3duZXJzaGlwUmVub3VuY2VkAAAAAAABAAAAE293bmVyc2hpcF9yZW5vdW5jZWQAAAAAAQAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAACAAAAAgAAAAAAAAAAAAAADk93bmFibGVTdG9yYWdlAAAAAAACAAAAAAAAAAAAAAAFT3duZXIAAAAAAAAAAAAAAAAAAAxQZW5kaW5nT3duZXIAAAABAAAASVRUTCBjb25maWd1cmF0aW9uOiB0aHJlc2hvbGQgKHdoZW4gdG8gZXh0ZW5kKSBhbmQgZXh0ZW5kX3RvICh0YXJnZXQgVFRMKS4AAAAAAAAAAAAACVR0bENvbmZpZwAAAAAAAAIAAAAoVGFyZ2V0IFRUTCBhZnRlciBleHRlbnNpb24gKGluIGxlZGdlcnMpLgAAAAlleHRlbmRfdG8AAAAAAAAEAAAAM1RUTCB0aHJlc2hvbGQgdGhhdCB0cmlnZ2VycyBleHRlbnNpb24gKGluIGxlZGdlcnMpLgAAAAAJdGhyZXNob2xkAAAAAAAABAAAAAUAAAAnRXZlbnQgZW1pdHRlZCB3aGVuIFRUTCBjb25maWdzIGFyZSBzZXQuAAAAAAAAAAANVHRsQ29uZmlnc1NldAAAAAAAAAEAAAAPdHRsX2NvbmZpZ3Nfc2V0AAAAAAIAAAAAAAAACGluc3RhbmNlAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAAAAAAAKcGVyc2lzdGVudAAAAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAAIAAAAFAAAAKkV2ZW50IGVtaXR0ZWQgd2hlbiBUVEwgY29uZmlncyBhcmUgZnJvemVuLgAAAAAAAAAAABBUdGxDb25maWdzRnJvemVuAAAAAQAAABJ0dGxfY29uZmlnc19mcm96ZW4AAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAAEFR0bENvbmZpZ1N0b3JhZ2UAAAADAAAAAAAAAAAAAAAGRnJvemVuAAAAAAAAAAAAAAAAAAhJbnN0YW5jZQAAAAAAAAAAAAAAClBlcnNpc3RlbnQAAAAAAAIAAAAAAAAAAAAAABJVcGdyYWRlYWJsZVN0b3JhZ2UAAAAAAAEAAAAAAAAAAAAAAAlNaWdyYXRpbmcAAAAAHhFjb250cmFjdGVudm1ldGF2MAAAAAAAAAAXAAAAAABvDmNvbnRyYWN0bWV0YXYwAAAAAAAAAAVyc3ZlcgAAAAAAAAYxLjkwLjAAAAAAAAAAAAAIcnNzZGt2ZXIAAAAvMjMuNC4wIzY3M2Q2YzRmMjM2OGQyODJkMjVkYTI5YmRhNTVjMjFiOGJlNjljYTYA";
13
+ /**
14
+ * Pre-computed WASM hash (SHA-256)
15
+ * Use this when the WASM is already uploaded on-chain
16
+ */
17
+ export declare const WASM_HASH = "1b2ae0ec201aefddd7d1aadd4c9fdafa9addc742333490b509be519b5e01869b";
18
+ /**
19
+ * Get the WASM bytecode as a Buffer
20
+ * Use this to upload the WASM to the network
21
+ */
22
+ export declare function getWasmBuffer(): Buffer;
23
+ export type OFTFeeStorage = {
24
+ tag: "DefaultFeeBps";
25
+ values: void;
26
+ } | {
27
+ tag: "FeeBps";
28
+ values: readonly [u32];
29
+ } | {
30
+ tag: "FeeDepositAddress";
31
+ values: void;
32
+ };
33
+ export declare const OFTFeeError: {
34
+ 2200: {
35
+ message: string;
36
+ };
37
+ 2201: {
38
+ message: string;
39
+ };
40
+ 2202: {
41
+ message: string;
42
+ };
43
+ 2203: {
44
+ message: string;
45
+ };
46
+ };
47
+ export type OFTPausableStorage = {
48
+ tag: "Paused";
49
+ values: void;
50
+ };
51
+ export declare const OFTPausableError: {
52
+ 2300: {
53
+ message: string;
54
+ };
55
+ 2301: {
56
+ message: string;
57
+ };
58
+ };
59
+ export type Direction = {
60
+ tag: "Inbound";
61
+ values: void;
62
+ } | {
63
+ tag: "Outbound";
64
+ values: void;
65
+ };
66
+ export interface RateLimit {
67
+ in_flight_on_last_update: i128;
68
+ last_update: u64;
69
+ limit: i128;
70
+ window_seconds: u64;
71
+ }
72
+ export type RateLimitStorage = {
73
+ tag: "RateLimit";
74
+ values: readonly [Direction, u32];
75
+ };
76
+ export declare const RateLimitError: {
77
+ 2400: {
78
+ message: string;
79
+ };
80
+ 2401: {
81
+ message: string;
82
+ };
83
+ 2402: {
84
+ message: string;
85
+ };
86
+ 2403: {
87
+ message: string;
88
+ };
89
+ 2404: {
90
+ message: string;
91
+ };
92
+ };
93
+ /**
94
+ * The type of OFT operation mode
95
+ */
96
+ export declare enum OftType {
97
+ LockUnlock = 0,
98
+ MintBurn = 1
99
+ }
100
+ export declare const EndpointError: {
101
+ 1: {
102
+ message: string;
103
+ };
104
+ 2: {
105
+ message: string;
106
+ };
107
+ 3: {
108
+ message: string;
109
+ };
110
+ 4: {
111
+ message: string;
112
+ };
113
+ 5: {
114
+ message: string;
115
+ };
116
+ 6: {
117
+ message: string;
118
+ };
119
+ 7: {
120
+ message: string;
121
+ };
122
+ 8: {
123
+ message: string;
124
+ };
125
+ 9: {
126
+ message: string;
127
+ };
128
+ 10: {
129
+ message: string;
130
+ };
131
+ 11: {
132
+ message: string;
133
+ };
134
+ 12: {
135
+ message: string;
136
+ };
137
+ 13: {
138
+ message: string;
139
+ };
140
+ 14: {
141
+ message: string;
142
+ };
143
+ 15: {
144
+ message: string;
145
+ };
146
+ 16: {
147
+ message: string;
148
+ };
149
+ 17: {
150
+ message: string;
151
+ };
152
+ 18: {
153
+ message: string;
154
+ };
155
+ 19: {
156
+ message: string;
157
+ };
158
+ 20: {
159
+ message: string;
160
+ };
161
+ 21: {
162
+ message: string;
163
+ };
164
+ 22: {
165
+ message: string;
166
+ };
167
+ 23: {
168
+ message: string;
169
+ };
170
+ 24: {
171
+ message: string;
172
+ };
173
+ 25: {
174
+ message: string;
175
+ };
176
+ };
177
+ /**
178
+ * Parameters for sending a cross-chain message.
179
+ */
180
+ export interface MessagingParams {
181
+ /**
182
+ * Destination endpoint ID (chain identifier).
183
+ */
184
+ dst_eid: u32;
185
+ /**
186
+ * The message payload to send.
187
+ */
188
+ message: Buffer;
189
+ /**
190
+ * Encoded executor and DVN options.
191
+ */
192
+ options: Buffer;
193
+ /**
194
+ * Whether to pay fees in ZRO token instead of native token.
195
+ */
196
+ pay_in_zro: boolean;
197
+ /**
198
+ * Receiver address on the destination chain (32 bytes).
199
+ */
200
+ receiver: Buffer;
201
+ }
202
+ /**
203
+ * Source message information identifying where a cross-chain message came from.
204
+ */
205
+ export interface Origin {
206
+ /**
207
+ * Nonce for this pathway.
208
+ */
209
+ nonce: u64;
210
+ /**
211
+ * Sender address on the source chain (32 bytes).
212
+ */
213
+ sender: Buffer;
214
+ /**
215
+ * Source endpoint ID (chain identifier).
216
+ */
217
+ src_eid: u32;
218
+ }
219
+ /**
220
+ * Fee structure for cross-chain messaging.
221
+ */
222
+ export interface MessagingFee {
223
+ /**
224
+ * Fee paid in native token (XLM).
225
+ */
226
+ native_fee: i128;
227
+ /**
228
+ * Fee paid in ZRO token (LayerZero token).
229
+ */
230
+ zro_fee: i128;
231
+ }
232
+ /**
233
+ * Receipt returned after successfully sending a cross-chain message.
234
+ */
235
+ export interface MessagingReceipt {
236
+ /**
237
+ * The fees charged for sending the message.
238
+ */
239
+ fee: MessagingFee;
240
+ /**
241
+ * Globally unique identifier for the message.
242
+ */
243
+ guid: Buffer;
244
+ /**
245
+ * The outbound nonce for this pathway.
246
+ */
247
+ nonce: u64;
248
+ }
249
+ /**
250
+ * Type of message library indicating supported operations.
251
+ */
252
+ export type MessageLibType = {
253
+ tag: "Send";
254
+ values: void;
255
+ } | {
256
+ tag: "Receive";
257
+ values: void;
258
+ } | {
259
+ tag: "SendAndReceive";
260
+ values: void;
261
+ };
262
+ /**
263
+ * Version information for a message library.
264
+ *
265
+ * Note: `minor` and `endpoint_version` use `u32` instead of `u8` because Stellar does not
266
+ * support `u8` types in contract interface functions.
267
+ */
268
+ export interface MessageLibVersion {
269
+ /**
270
+ * Endpoint version (should not exceed u8::MAX = 255).
271
+ */
272
+ endpoint_version: u32;
273
+ /**
274
+ * Major version number.
275
+ */
276
+ major: u64;
277
+ /**
278
+ * Minor version number (should not exceed u8::MAX = 255).
279
+ */
280
+ minor: u32;
281
+ }
282
+ /**
283
+ * Timeout configuration for receive library transitions.
284
+ */
285
+ export interface Timeout {
286
+ /**
287
+ * Unix timestamp when the timeout expires.
288
+ */
289
+ expiry: u64;
290
+ /**
291
+ * The new library address to transition to.
292
+ */
293
+ lib: string;
294
+ }
295
+ /**
296
+ * Parameters for setting message library configuration.
297
+ */
298
+ export interface SetConfigParam {
299
+ /**
300
+ * XDR-encoded configuration data.
301
+ */
302
+ config: Buffer;
303
+ /**
304
+ * The type of configuration (e.g., executor, ULN).
305
+ */
306
+ config_type: u32;
307
+ /**
308
+ * The endpoint ID this config applies to.
309
+ */
310
+ eid: u32;
311
+ }
312
+ /**
313
+ * Resolved library information with default status.
314
+ */
315
+ export interface ResolvedLibrary {
316
+ /**
317
+ * Whether this is the default library (true) or OApp-specific (false).
318
+ */
319
+ is_default: boolean;
320
+ /**
321
+ * The resolved library address.
322
+ */
323
+ lib: string;
324
+ }
325
+ /**
326
+ * Outbound packet containing all information for cross-chain transmission.
327
+ */
328
+ export interface OutboundPacket {
329
+ /**
330
+ * Destination endpoint ID.
331
+ */
332
+ dst_eid: u32;
333
+ /**
334
+ * Globally unique identifier for this message.
335
+ */
336
+ guid: Buffer;
337
+ /**
338
+ * The message payload.
339
+ */
340
+ message: Buffer;
341
+ /**
342
+ * Outbound nonce for this pathway.
343
+ */
344
+ nonce: u64;
345
+ /**
346
+ * Receiver address on destination chain (32 bytes).
347
+ */
348
+ receiver: Buffer;
349
+ /**
350
+ * Sender address on source chain.
351
+ */
352
+ sender: string;
353
+ /**
354
+ * Source endpoint ID.
355
+ */
356
+ src_eid: u32;
357
+ }
358
+ /**
359
+ * A fee recipient with the amount to be paid.
360
+ */
361
+ export interface FeeRecipient {
362
+ /**
363
+ * Amount of fee to pay.
364
+ */
365
+ amount: i128;
366
+ /**
367
+ * The address to send the fee to.
368
+ */
369
+ to: string;
370
+ }
371
+ /**
372
+ * Result of send operation containing fees and encoded packet.
373
+ */
374
+ export interface FeesAndPacket {
375
+ /**
376
+ * The encoded packet ready for transmission.
377
+ */
378
+ encoded_packet: Buffer;
379
+ /**
380
+ * List of native token fee recipients (executor, DVNs, treasury).
381
+ */
382
+ native_fee_recipients: Array<FeeRecipient>;
383
+ /**
384
+ * List of ZRO token fee recipients (treasury).
385
+ */
386
+ zro_fee_recipients: Array<FeeRecipient>;
387
+ }
388
+ /**
389
+ * OAppError: 2000-2099
390
+ */
391
+ export declare const OAppError: {
392
+ 2000: {
393
+ message: string;
394
+ };
395
+ 2001: {
396
+ message: string;
397
+ };
398
+ 2002: {
399
+ message: string;
400
+ };
401
+ 2003: {
402
+ message: string;
403
+ };
404
+ };
405
+ export type OAppCoreStorage = {
406
+ tag: "Endpoint";
407
+ values: void;
408
+ } | {
409
+ tag: "Peer";
410
+ values: readonly [u32];
411
+ };
412
+ export interface EnforcedOptionParam {
413
+ eid: u32;
414
+ msg_type: u32;
415
+ options: Buffer;
416
+ }
417
+ export type OAppOptionsType3Storage = {
418
+ tag: "EnforcedOptions";
419
+ values: readonly [u32, u32];
420
+ };
421
+ /**
422
+ * OFTError: 3000-3099
423
+ */
424
+ export declare const OFTError: {
425
+ 3000: {
426
+ message: string;
427
+ };
428
+ 3001: {
429
+ message: string;
430
+ };
431
+ 3002: {
432
+ message: string;
433
+ };
434
+ 3003: {
435
+ message: string;
436
+ };
437
+ };
438
+ export type OFTStorage = {
439
+ tag: "DecimalConversionRate";
440
+ values: void;
441
+ } | {
442
+ tag: "Token";
443
+ values: void;
444
+ };
445
+ /**
446
+ * Parameters for sending OFT tokens cross-chain
447
+ */
448
+ export interface SendParam {
449
+ /**
450
+ * The amount to send in local decimals
451
+ */
452
+ amount_ld: i128;
453
+ /**
454
+ * Compose message to execute on the destination (Optional)
455
+ */
456
+ compose_msg: Buffer;
457
+ /**
458
+ * The destination endpoint ID
459
+ */
460
+ dst_eid: u32;
461
+ /**
462
+ * Additional options for the LayerZero message (Optional)
463
+ */
464
+ extra_options: Buffer;
465
+ /**
466
+ * The minimum amount to receive in local decimals (slippage protection)
467
+ */
468
+ min_amount_ld: i128;
469
+ /**
470
+ * OFT command for custom behavior (Optional)
471
+ */
472
+ oft_cmd: Buffer;
473
+ /**
474
+ * The recipient address on the destination chain (32 bytes)
475
+ */
476
+ to: Buffer;
477
+ }
478
+ /**
479
+ * Transfer limits for OFT operations
480
+ */
481
+ export interface OFTLimit {
482
+ /**
483
+ * The maximum amount to send in local decimals
484
+ */
485
+ max_amount_ld: i128;
486
+ /**
487
+ * The minimum amount to send in local decimals
488
+ */
489
+ min_amount_ld: i128;
490
+ }
491
+ /**
492
+ * Receipt containing amounts sent and received in an OFT transfer
493
+ */
494
+ export interface OFTReceipt {
495
+ /**
496
+ * The amount received in local decimals on the remote
497
+ */
498
+ amount_received_ld: i128;
499
+ /**
500
+ * The amount sent in local decimals
501
+ */
502
+ amount_sent_ld: i128;
503
+ }
504
+ /**
505
+ * Details about fees charged in an OFT operation
506
+ */
507
+ export interface OFTFeeDetail {
508
+ /**
509
+ * The description of the fee
510
+ */
511
+ description: Buffer;
512
+ /**
513
+ * The amount of the fee in local decimals. Positive values represent fees charged,
514
+ * while negative values represent rewards given.
515
+ */
516
+ fee_amount_ld: i128;
517
+ }
518
+ /**
519
+ * BufferReaderError: 1000-1009
520
+ */
521
+ export declare const BufferReaderError: {
522
+ 1000: {
523
+ message: string;
524
+ };
525
+ 1001: {
526
+ message: string;
527
+ };
528
+ };
529
+ /**
530
+ * BufferWriterError: 1010-1019
531
+ */
532
+ export declare const BufferWriterError: {
533
+ 1010: {
534
+ message: string;
535
+ };
536
+ };
537
+ /**
538
+ * TtlConfigurableError: 1020-1029
539
+ */
540
+ export declare const TtlConfigurableError: {
541
+ 1020: {
542
+ message: string;
543
+ };
544
+ 1021: {
545
+ message: string;
546
+ };
547
+ 1022: {
548
+ message: string;
549
+ };
550
+ };
551
+ /**
552
+ * OwnableError: 1030-1039
553
+ */
554
+ export declare const OwnableError: {
555
+ 1030: {
556
+ message: string;
557
+ };
558
+ 1031: {
559
+ message: string;
560
+ };
561
+ 1032: {
562
+ message: string;
563
+ };
564
+ 1033: {
565
+ message: string;
566
+ };
567
+ 1034: {
568
+ message: string;
569
+ };
570
+ 1035: {
571
+ message: string;
572
+ };
573
+ };
574
+ /**
575
+ * BytesExtError: 1040-1049
576
+ */
577
+ export declare const BytesExtError: {
578
+ 1040: {
579
+ message: string;
580
+ };
581
+ };
582
+ /**
583
+ * UpgradeableError: 1050-1059
584
+ */
585
+ export declare const UpgradeableError: {
586
+ 1050: {
587
+ message: string;
588
+ };
589
+ };
590
+ /**
591
+ * MultisigError: 1060-1069
592
+ */
593
+ export declare const MultisigError: {
594
+ 1060: {
595
+ message: string;
596
+ };
597
+ 1061: {
598
+ message: string;
599
+ };
600
+ 1062: {
601
+ message: string;
602
+ };
603
+ 1063: {
604
+ message: string;
605
+ };
606
+ 1064: {
607
+ message: string;
608
+ };
609
+ 1065: {
610
+ message: string;
611
+ };
612
+ 1066: {
613
+ message: string;
614
+ };
615
+ 1067: {
616
+ message: string;
617
+ };
618
+ };
619
+ export type MultisigStorage = {
620
+ tag: "Signers";
621
+ values: void;
622
+ } | {
623
+ tag: "Threshold";
624
+ values: void;
625
+ };
626
+ export type OwnableStorage = {
627
+ tag: "Owner";
628
+ values: void;
629
+ } | {
630
+ tag: "PendingOwner";
631
+ values: void;
632
+ };
633
+ /**
634
+ * TTL configuration: threshold (when to extend) and extend_to (target TTL).
635
+ */
636
+ export interface TtlConfig {
637
+ /**
638
+ * Target TTL after extension (in ledgers).
639
+ */
640
+ extend_to: u32;
641
+ /**
642
+ * TTL threshold that triggers extension (in ledgers).
643
+ */
644
+ threshold: u32;
645
+ }
646
+ export type TtlConfigStorage = {
647
+ tag: "Frozen";
648
+ values: void;
649
+ } | {
650
+ tag: "Instance";
651
+ values: void;
652
+ } | {
653
+ tag: "Persistent";
654
+ values: void;
655
+ };
656
+ export type UpgradeableStorage = {
657
+ tag: "Migrating";
658
+ values: void;
659
+ };
660
+ export interface Client {
661
+ /**
662
+ * Construct and simulate a set_rate_limit transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
663
+ */
664
+ set_rate_limit: ({ direction, eid, limit, window_seconds }: {
665
+ direction: Direction;
666
+ eid: u32;
667
+ limit: i128;
668
+ window_seconds: u64;
669
+ }, txnOptions?: {
670
+ /**
671
+ * The fee to pay for the transaction. Default: BASE_FEE
672
+ */
673
+ fee?: number;
674
+ /**
675
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
676
+ */
677
+ timeoutInSeconds?: number;
678
+ /**
679
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
680
+ */
681
+ simulate?: boolean;
682
+ }) => Promise<AssembledTransaction<null>>;
683
+ /**
684
+ * Construct and simulate a unset_rate_limit transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
685
+ */
686
+ unset_rate_limit: ({ direction, eid }: {
687
+ direction: Direction;
688
+ eid: u32;
689
+ }, txnOptions?: {
690
+ /**
691
+ * The fee to pay for the transaction. Default: BASE_FEE
692
+ */
693
+ fee?: number;
694
+ /**
695
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
696
+ */
697
+ timeoutInSeconds?: number;
698
+ /**
699
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
700
+ */
701
+ simulate?: boolean;
702
+ }) => Promise<AssembledTransaction<null>>;
703
+ /**
704
+ * Construct and simulate a rate_limit_config transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
705
+ */
706
+ rate_limit_config: ({ direction, eid }: {
707
+ direction: Direction;
708
+ eid: u32;
709
+ }, txnOptions?: {
710
+ /**
711
+ * The fee to pay for the transaction. Default: BASE_FEE
712
+ */
713
+ fee?: number;
714
+ /**
715
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
716
+ */
717
+ timeoutInSeconds?: number;
718
+ /**
719
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
720
+ */
721
+ simulate?: boolean;
722
+ }) => Promise<AssembledTransaction<readonly [i128, u64]>>;
723
+ /**
724
+ * Construct and simulate a rate_limit_in_flight transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
725
+ */
726
+ rate_limit_in_flight: ({ direction, eid }: {
727
+ direction: Direction;
728
+ eid: u32;
729
+ }, txnOptions?: {
730
+ /**
731
+ * The fee to pay for the transaction. Default: BASE_FEE
732
+ */
733
+ fee?: number;
734
+ /**
735
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
736
+ */
737
+ timeoutInSeconds?: number;
738
+ /**
739
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
740
+ */
741
+ simulate?: boolean;
742
+ }) => Promise<AssembledTransaction<i128>>;
743
+ /**
744
+ * Construct and simulate a rate_limit_capacity transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
745
+ */
746
+ rate_limit_capacity: ({ direction, eid }: {
747
+ direction: Direction;
748
+ eid: u32;
749
+ }, txnOptions?: {
750
+ /**
751
+ * The fee to pay for the transaction. Default: BASE_FEE
752
+ */
753
+ fee?: number;
754
+ /**
755
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
756
+ */
757
+ timeoutInSeconds?: number;
758
+ /**
759
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
760
+ */
761
+ simulate?: boolean;
762
+ }) => Promise<AssembledTransaction<i128>>;
763
+ /**
764
+ * Construct and simulate a set_default_fee_bps transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
765
+ */
766
+ set_default_fee_bps: ({ default_fee_bps }: {
767
+ default_fee_bps: u64;
768
+ }, txnOptions?: {
769
+ /**
770
+ * The fee to pay for the transaction. Default: BASE_FEE
771
+ */
772
+ fee?: number;
773
+ /**
774
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
775
+ */
776
+ timeoutInSeconds?: number;
777
+ /**
778
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
779
+ */
780
+ simulate?: boolean;
781
+ }) => Promise<AssembledTransaction<null>>;
782
+ /**
783
+ * Construct and simulate a set_fee_bps transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
784
+ */
785
+ set_fee_bps: ({ dst_eid, fee_bps }: {
786
+ dst_eid: u32;
787
+ fee_bps: u64;
788
+ }, txnOptions?: {
789
+ /**
790
+ * The fee to pay for the transaction. Default: BASE_FEE
791
+ */
792
+ fee?: number;
793
+ /**
794
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
795
+ */
796
+ timeoutInSeconds?: number;
797
+ /**
798
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
799
+ */
800
+ simulate?: boolean;
801
+ }) => Promise<AssembledTransaction<null>>;
802
+ /**
803
+ * Construct and simulate a unset_fee_bps transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
804
+ */
805
+ unset_fee_bps: ({ dst_eid }: {
806
+ dst_eid: u32;
807
+ }, txnOptions?: {
808
+ /**
809
+ * The fee to pay for the transaction. Default: BASE_FEE
810
+ */
811
+ fee?: number;
812
+ /**
813
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
814
+ */
815
+ timeoutInSeconds?: number;
816
+ /**
817
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
818
+ */
819
+ simulate?: boolean;
820
+ }) => Promise<AssembledTransaction<null>>;
821
+ /**
822
+ * Construct and simulate a set_fee_deposit_address transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
823
+ */
824
+ set_fee_deposit_address: ({ fee_deposit_address }: {
825
+ fee_deposit_address: string;
826
+ }, txnOptions?: {
827
+ /**
828
+ * The fee to pay for the transaction. Default: BASE_FEE
829
+ */
830
+ fee?: number;
831
+ /**
832
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
833
+ */
834
+ timeoutInSeconds?: number;
835
+ /**
836
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
837
+ */
838
+ simulate?: boolean;
839
+ }) => Promise<AssembledTransaction<null>>;
840
+ /**
841
+ * Construct and simulate a has_fee_bps transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
842
+ */
843
+ has_fee_bps: ({ dst_eid }: {
844
+ dst_eid: u32;
845
+ }, txnOptions?: {
846
+ /**
847
+ * The fee to pay for the transaction. Default: BASE_FEE
848
+ */
849
+ fee?: number;
850
+ /**
851
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
852
+ */
853
+ timeoutInSeconds?: number;
854
+ /**
855
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
856
+ */
857
+ simulate?: boolean;
858
+ }) => Promise<AssembledTransaction<boolean>>;
859
+ /**
860
+ * Construct and simulate a effective_fee_bps transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
861
+ */
862
+ effective_fee_bps: ({ dst_eid }: {
863
+ dst_eid: u32;
864
+ }, txnOptions?: {
865
+ /**
866
+ * The fee to pay for the transaction. Default: BASE_FEE
867
+ */
868
+ fee?: number;
869
+ /**
870
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
871
+ */
872
+ timeoutInSeconds?: number;
873
+ /**
874
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
875
+ */
876
+ simulate?: boolean;
877
+ }) => Promise<AssembledTransaction<u64>>;
878
+ /**
879
+ * Construct and simulate a default_fee_bps transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
880
+ */
881
+ default_fee_bps: (txnOptions?: {
882
+ /**
883
+ * The fee to pay for the transaction. Default: BASE_FEE
884
+ */
885
+ fee?: number;
886
+ /**
887
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
888
+ */
889
+ timeoutInSeconds?: number;
890
+ /**
891
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
892
+ */
893
+ simulate?: boolean;
894
+ }) => Promise<AssembledTransaction<u64>>;
895
+ /**
896
+ * Construct and simulate a fee_bps transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
897
+ */
898
+ fee_bps: ({ dst_eid }: {
899
+ dst_eid: u32;
900
+ }, txnOptions?: {
901
+ /**
902
+ * The fee to pay for the transaction. Default: BASE_FEE
903
+ */
904
+ fee?: number;
905
+ /**
906
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
907
+ */
908
+ timeoutInSeconds?: number;
909
+ /**
910
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
911
+ */
912
+ simulate?: boolean;
913
+ }) => Promise<AssembledTransaction<Option<u64>>>;
914
+ /**
915
+ * Construct and simulate a fee_deposit_address transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
916
+ */
917
+ fee_deposit_address: (txnOptions?: {
918
+ /**
919
+ * The fee to pay for the transaction. Default: BASE_FEE
920
+ */
921
+ fee?: number;
922
+ /**
923
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
924
+ */
925
+ timeoutInSeconds?: number;
926
+ /**
927
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
928
+ */
929
+ simulate?: boolean;
930
+ }) => Promise<AssembledTransaction<string>>;
931
+ /**
932
+ * Construct and simulate a set_paused transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
933
+ */
934
+ set_paused: ({ paused }: {
935
+ paused: boolean;
936
+ }, txnOptions?: {
937
+ /**
938
+ * The fee to pay for the transaction. Default: BASE_FEE
939
+ */
940
+ fee?: number;
941
+ /**
942
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
943
+ */
944
+ timeoutInSeconds?: number;
945
+ /**
946
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
947
+ */
948
+ simulate?: boolean;
949
+ }) => Promise<AssembledTransaction<null>>;
950
+ /**
951
+ * Construct and simulate a is_paused transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
952
+ */
953
+ is_paused: (txnOptions?: {
954
+ /**
955
+ * The fee to pay for the transaction. Default: BASE_FEE
956
+ */
957
+ fee?: number;
958
+ /**
959
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
960
+ */
961
+ timeoutInSeconds?: number;
962
+ /**
963
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
964
+ */
965
+ simulate?: boolean;
966
+ }) => Promise<AssembledTransaction<boolean>>;
967
+ /**
968
+ * Construct and simulate a quote_oft transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
969
+ */
970
+ quote_oft: ({ send_param }: {
971
+ send_param: SendParam;
972
+ }, txnOptions?: {
973
+ /**
974
+ * The fee to pay for the transaction. Default: BASE_FEE
975
+ */
976
+ fee?: number;
977
+ /**
978
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
979
+ */
980
+ timeoutInSeconds?: number;
981
+ /**
982
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
983
+ */
984
+ simulate?: boolean;
985
+ }) => Promise<AssembledTransaction<readonly [OFTLimit, Array<OFTFeeDetail>, OFTReceipt]>>;
986
+ /**
987
+ * Construct and simulate a quote_send transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
988
+ */
989
+ quote_send: ({ sender, send_param, pay_in_zro }: {
990
+ sender: string;
991
+ send_param: SendParam;
992
+ pay_in_zro: boolean;
993
+ }, txnOptions?: {
994
+ /**
995
+ * The fee to pay for the transaction. Default: BASE_FEE
996
+ */
997
+ fee?: number;
998
+ /**
999
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1000
+ */
1001
+ timeoutInSeconds?: number;
1002
+ /**
1003
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1004
+ */
1005
+ simulate?: boolean;
1006
+ }) => Promise<AssembledTransaction<MessagingFee>>;
1007
+ /**
1008
+ * Construct and simulate a token transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1009
+ * Retrieves the token address associated with this OFT.
1010
+ */
1011
+ token: (txnOptions?: {
1012
+ /**
1013
+ * The fee to pay for the transaction. Default: BASE_FEE
1014
+ */
1015
+ fee?: number;
1016
+ /**
1017
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1018
+ */
1019
+ timeoutInSeconds?: number;
1020
+ /**
1021
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1022
+ */
1023
+ simulate?: boolean;
1024
+ }) => Promise<AssembledTransaction<string>>;
1025
+ /**
1026
+ * Construct and simulate a oft_version transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1027
+ * Returns OFT version as (major, minor).
1028
+ */
1029
+ oft_version: (txnOptions?: {
1030
+ /**
1031
+ * The fee to pay for the transaction. Default: BASE_FEE
1032
+ */
1033
+ fee?: number;
1034
+ /**
1035
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1036
+ */
1037
+ timeoutInSeconds?: number;
1038
+ /**
1039
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1040
+ */
1041
+ simulate?: boolean;
1042
+ }) => Promise<AssembledTransaction<readonly [u64, u64]>>;
1043
+ /**
1044
+ * Construct and simulate a shared_decimals transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1045
+ * Retrieves the shared decimals used for cross-chain normalization.
1046
+ */
1047
+ shared_decimals: (txnOptions?: {
1048
+ /**
1049
+ * The fee to pay for the transaction. Default: BASE_FEE
1050
+ */
1051
+ fee?: number;
1052
+ /**
1053
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1054
+ */
1055
+ timeoutInSeconds?: number;
1056
+ /**
1057
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1058
+ */
1059
+ simulate?: boolean;
1060
+ }) => Promise<AssembledTransaction<u32>>;
1061
+ /**
1062
+ * Construct and simulate a decimal_conversion_rate transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1063
+ * Retrieves the decimal conversion rate used for cross-chain normalization.
1064
+ */
1065
+ decimal_conversion_rate: (txnOptions?: {
1066
+ /**
1067
+ * The fee to pay for the transaction. Default: BASE_FEE
1068
+ */
1069
+ fee?: number;
1070
+ /**
1071
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1072
+ */
1073
+ timeoutInSeconds?: number;
1074
+ /**
1075
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1076
+ */
1077
+ simulate?: boolean;
1078
+ }) => Promise<AssembledTransaction<i128>>;
1079
+ /**
1080
+ * Construct and simulate a approval_required transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1081
+ * Whether a separate token approval is required before sending.
1082
+ *
1083
+ * Helps wallet implementers determine integration requirements.
1084
+ *
1085
+ * # Returns
1086
+ * - `true` if a separate token approval step is required
1087
+ * - `false` if no separate approval is needed
1088
+ */
1089
+ approval_required: (txnOptions?: {
1090
+ /**
1091
+ * The fee to pay for the transaction. Default: BASE_FEE
1092
+ */
1093
+ fee?: number;
1094
+ /**
1095
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1096
+ */
1097
+ timeoutInSeconds?: number;
1098
+ /**
1099
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1100
+ */
1101
+ simulate?: boolean;
1102
+ }) => Promise<AssembledTransaction<boolean>>;
1103
+ /**
1104
+ * Construct and simulate a send transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1105
+ * Sends tokens cross-chain to another endpoint.
1106
+ *
1107
+ * Sender must be authenticated.
1108
+ *
1109
+ * # Returns
1110
+ * (MessagingReceipt, OFTReceipt)
1111
+ */
1112
+ send: ({ sender, send_param, fee, refund_address }: {
1113
+ sender: string;
1114
+ send_param: SendParam;
1115
+ fee: MessagingFee;
1116
+ refund_address: string;
1117
+ }, txnOptions?: {
1118
+ /**
1119
+ * The fee to pay for the transaction. Default: BASE_FEE
1120
+ */
1121
+ fee?: number;
1122
+ /**
1123
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1124
+ */
1125
+ timeoutInSeconds?: number;
1126
+ /**
1127
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1128
+ */
1129
+ simulate?: boolean;
1130
+ }) => Promise<AssembledTransaction<readonly [MessagingReceipt, OFTReceipt]>>;
1131
+ /**
1132
+ * Construct and simulate a oft_type transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1133
+ * Returns the type of operation for this OFT (LockUnlock or MintBurn)
1134
+ */
1135
+ oft_type: (txnOptions?: {
1136
+ /**
1137
+ * The fee to pay for the transaction. Default: BASE_FEE
1138
+ */
1139
+ fee?: number;
1140
+ /**
1141
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1142
+ */
1143
+ timeoutInSeconds?: number;
1144
+ /**
1145
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1146
+ */
1147
+ simulate?: boolean;
1148
+ }) => Promise<AssembledTransaction<OftType>>;
1149
+ /**
1150
+ * Construct and simulate a authorizer transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1151
+ */
1152
+ authorizer: (txnOptions?: {
1153
+ /**
1154
+ * The fee to pay for the transaction. Default: BASE_FEE
1155
+ */
1156
+ fee?: number;
1157
+ /**
1158
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1159
+ */
1160
+ timeoutInSeconds?: number;
1161
+ /**
1162
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1163
+ */
1164
+ simulate?: boolean;
1165
+ }) => Promise<AssembledTransaction<string>>;
1166
+ /**
1167
+ * Construct and simulate a enforced_options transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1168
+ * Retrieves the enforced options for a given endpoint and message type.
1169
+ *
1170
+ * # Arguments
1171
+ * * `eid` - The endpoint ID
1172
+ * * `msg_type` - The OApp message type
1173
+ *
1174
+ * # Returns
1175
+ * The enforced options for the given endpoint and message type
1176
+ */
1177
+ enforced_options: ({ eid, msg_type }: {
1178
+ eid: u32;
1179
+ msg_type: u32;
1180
+ }, txnOptions?: {
1181
+ /**
1182
+ * The fee to pay for the transaction. Default: BASE_FEE
1183
+ */
1184
+ fee?: number;
1185
+ /**
1186
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1187
+ */
1188
+ timeoutInSeconds?: number;
1189
+ /**
1190
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1191
+ */
1192
+ simulate?: boolean;
1193
+ }) => Promise<AssembledTransaction<Buffer>>;
1194
+ /**
1195
+ * Construct and simulate a set_enforced_options transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1196
+ * Sets the enforced options for specific endpoint and message type combinations.
1197
+ *
1198
+ * Only the `authorizer` of the OApp can call this function.
1199
+ * Provides a way for the OApp to enforce things like paying for PreCrime, AND/OR minimum dst lzReceive gas amounts etc.
1200
+ * These enforced options can vary as the potential options/execution on the remote may differ as per the msg_type.
1201
+ * e.g. Amount of lzReceive() gas necessary to deliver a lzCompose() message adds overhead you don't want to pay
1202
+ * if you are only making a standard LayerZero message ie. lzReceive() WITHOUT sendCompose().
1203
+ *
1204
+ * # Arguments
1205
+ * * `options` - A vector of EnforcedOptionParam structures specifying enforced options
1206
+ */
1207
+ set_enforced_options: ({ options }: {
1208
+ options: Array<EnforcedOptionParam>;
1209
+ }, txnOptions?: {
1210
+ /**
1211
+ * The fee to pay for the transaction. Default: BASE_FEE
1212
+ */
1213
+ fee?: number;
1214
+ /**
1215
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1216
+ */
1217
+ timeoutInSeconds?: number;
1218
+ /**
1219
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1220
+ */
1221
+ simulate?: boolean;
1222
+ }) => Promise<AssembledTransaction<null>>;
1223
+ /**
1224
+ * Construct and simulate a combine_options transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1225
+ * Combines options for a given endpoint and message type.
1226
+ *
1227
+ * If there is an enforced lzReceive option:
1228
+ * - {gas_limit: 200k, value: 1 XLM} AND a caller supplies a lzReceive option: {gas_limit: 100k, value: 0.5 XLM}
1229
+ * - The resulting options will be {gas_limit: 300k, value: 1.5 XLM} when the message is executed on the remote lz_receive() function.
1230
+ * The presence of duplicated options is handled off-chain in the verifier/executor.
1231
+ *
1232
+ * # Arguments
1233
+ * * `eid` - The endpoint ID
1234
+ * * `msg_type` - The OApp message type
1235
+ * * `extra_options` - Additional options passed by the caller
1236
+ *
1237
+ * # Returns
1238
+ * The combination of caller specified options AND enforced options
1239
+ */
1240
+ combine_options: ({ eid, msg_type, extra_options }: {
1241
+ eid: u32;
1242
+ msg_type: u32;
1243
+ extra_options: Buffer;
1244
+ }, txnOptions?: {
1245
+ /**
1246
+ * The fee to pay for the transaction. Default: BASE_FEE
1247
+ */
1248
+ fee?: number;
1249
+ /**
1250
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1251
+ */
1252
+ timeoutInSeconds?: number;
1253
+ /**
1254
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1255
+ */
1256
+ simulate?: boolean;
1257
+ }) => Promise<AssembledTransaction<Buffer>>;
1258
+ /**
1259
+ * Construct and simulate a allow_initialize_path transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1260
+ * Checks if a messaging path can be initialized for the given origin.
1261
+ *
1262
+ * # Arguments
1263
+ * * `origin` - The origin of the message
1264
+ *
1265
+ * # Returns
1266
+ * True if the path can be initialized, false otherwise
1267
+ */
1268
+ allow_initialize_path: ({ origin }: {
1269
+ origin: Origin;
1270
+ }, txnOptions?: {
1271
+ /**
1272
+ * The fee to pay for the transaction. Default: BASE_FEE
1273
+ */
1274
+ fee?: number;
1275
+ /**
1276
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1277
+ */
1278
+ timeoutInSeconds?: number;
1279
+ /**
1280
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1281
+ */
1282
+ simulate?: boolean;
1283
+ }) => Promise<AssembledTransaction<boolean>>;
1284
+ /**
1285
+ * Construct and simulate a next_nonce transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1286
+ * Retrieves the next nonce for a given source endpoint and sender address.
1287
+ *
1288
+ * The path nonce starts from 1. If 0 is returned it means that there is NO nonce ordered enforcement.
1289
+ * This is required by the off-chain executor to determine if the OApp expects message execution to be ordered.
1290
+ * This is also enforced by the OApp.
1291
+ * By default this is NOT enabled, i.e. next_nonce is hardcoded to return 0.
1292
+ *
1293
+ * # Arguments
1294
+ * * `src_eid` - The source endpoint ID
1295
+ * * `sender` - The sender OApp address
1296
+ *
1297
+ * # Returns
1298
+ * The next nonce
1299
+ */
1300
+ next_nonce: ({ src_eid, sender }: {
1301
+ src_eid: u32;
1302
+ sender: Buffer;
1303
+ }, txnOptions?: {
1304
+ /**
1305
+ * The fee to pay for the transaction. Default: BASE_FEE
1306
+ */
1307
+ fee?: number;
1308
+ /**
1309
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1310
+ */
1311
+ timeoutInSeconds?: number;
1312
+ /**
1313
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1314
+ */
1315
+ simulate?: boolean;
1316
+ }) => Promise<AssembledTransaction<u64>>;
1317
+ /**
1318
+ * Construct and simulate a lz_receive transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1319
+ * Entry point for receiving messages or packets from the LayerZero endpoint.
1320
+ *
1321
+ * The default implementation calls `clear_payload_and_transfer` to validate the message
1322
+ * and clear it from the endpoint, then delegates to `__lz_receive` for application logic.
1323
+ *
1324
+ * # Arguments
1325
+ * * `executor` - The address of the executor for the received message
1326
+ * * `origin` - The origin information containing the source endpoint and sender address:
1327
+ * - `src_eid`: The source chain endpoint ID
1328
+ * - `sender`: The sender address on the source chain
1329
+ * - `nonce`: The nonce of the message
1330
+ * * `guid` - The unique identifier for the received LayerZero message
1331
+ * * `message` - The payload of the received message
1332
+ * * `extra_data` - Additional arbitrary data provided by the corresponding executor
1333
+ * * `value` - The native token value sent with the message
1334
+ */
1335
+ lz_receive: ({ executor, origin, guid, message, extra_data, value }: {
1336
+ executor: string;
1337
+ origin: Origin;
1338
+ guid: Buffer;
1339
+ message: Buffer;
1340
+ extra_data: Buffer;
1341
+ value: i128;
1342
+ }, txnOptions?: {
1343
+ /**
1344
+ * The fee to pay for the transaction. Default: BASE_FEE
1345
+ */
1346
+ fee?: number;
1347
+ /**
1348
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1349
+ */
1350
+ timeoutInSeconds?: number;
1351
+ /**
1352
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1353
+ */
1354
+ simulate?: boolean;
1355
+ }) => Promise<AssembledTransaction<null>>;
1356
+ /**
1357
+ * Construct and simulate a is_compose_msg_sender transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1358
+ * Indicates whether an address is an approved composeMsg sender to the Endpoint.
1359
+ *
1360
+ * Applications can optionally choose to implement separate composeMsg senders that are NOT the bridging layer.
1361
+ * The default sender IS the OAppReceiver implementer.
1362
+ *
1363
+ * # Arguments
1364
+ * * `origin` - The origin information containing the source endpoint and sender address
1365
+ * * `message` - The lzReceive payload
1366
+ * * `sender` - The sender address to check
1367
+ *
1368
+ * # Returns
1369
+ * True if the sender is a valid composeMsg sender, false otherwise
1370
+ */
1371
+ is_compose_msg_sender: ({ origin, message, sender }: {
1372
+ origin: Origin;
1373
+ message: Buffer;
1374
+ sender: string;
1375
+ }, txnOptions?: {
1376
+ /**
1377
+ * The fee to pay for the transaction. Default: BASE_FEE
1378
+ */
1379
+ fee?: number;
1380
+ /**
1381
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1382
+ */
1383
+ timeoutInSeconds?: number;
1384
+ /**
1385
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1386
+ */
1387
+ simulate?: boolean;
1388
+ }) => Promise<AssembledTransaction<boolean>>;
1389
+ /**
1390
+ * Construct and simulate a oapp_version transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1391
+ * Retrieves the OApp version information.
1392
+ *
1393
+ * # Returns
1394
+ * A tuple containing:
1395
+ * - `sender_version`: The version of the OAppSender
1396
+ * - `receiver_version`: The version of the OAppReceiver
1397
+ */
1398
+ oapp_version: (txnOptions?: {
1399
+ /**
1400
+ * The fee to pay for the transaction. Default: BASE_FEE
1401
+ */
1402
+ fee?: number;
1403
+ /**
1404
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1405
+ */
1406
+ timeoutInSeconds?: number;
1407
+ /**
1408
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1409
+ */
1410
+ simulate?: boolean;
1411
+ }) => Promise<AssembledTransaction<readonly [u64, u64]>>;
1412
+ /**
1413
+ * Construct and simulate a endpoint transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1414
+ * Retrieves the LayerZero endpoint address associated with the OApp.
1415
+ *
1416
+ * # Returns
1417
+ * The LayerZero endpoint address
1418
+ */
1419
+ endpoint: (txnOptions?: {
1420
+ /**
1421
+ * The fee to pay for the transaction. Default: BASE_FEE
1422
+ */
1423
+ fee?: number;
1424
+ /**
1425
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1426
+ */
1427
+ timeoutInSeconds?: number;
1428
+ /**
1429
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1430
+ */
1431
+ simulate?: boolean;
1432
+ }) => Promise<AssembledTransaction<string>>;
1433
+ /**
1434
+ * Construct and simulate a peer transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1435
+ * Retrieves the peer (OApp) associated with a corresponding endpoint.
1436
+ *
1437
+ * # Arguments
1438
+ * * `eid` - The endpoint ID
1439
+ *
1440
+ * # Returns
1441
+ * The peer address (OApp instance) associated with the corresponding endpoint
1442
+ */
1443
+ peer: ({ eid }: {
1444
+ eid: u32;
1445
+ }, txnOptions?: {
1446
+ /**
1447
+ * The fee to pay for the transaction. Default: BASE_FEE
1448
+ */
1449
+ fee?: number;
1450
+ /**
1451
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1452
+ */
1453
+ timeoutInSeconds?: number;
1454
+ /**
1455
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1456
+ */
1457
+ simulate?: boolean;
1458
+ }) => Promise<AssembledTransaction<Option<Buffer>>>;
1459
+ /**
1460
+ * Construct and simulate a set_peer transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1461
+ * Sets or removes the peer address (OApp instance) for a corresponding endpoint.
1462
+ *
1463
+ * # Arguments
1464
+ * * `eid` - The endpoint ID
1465
+ * * `peer` - The address of the peer to be associated with the corresponding endpoint, or None to remove the peer
1466
+ */
1467
+ set_peer: ({ eid, peer }: {
1468
+ eid: u32;
1469
+ peer: Option<Buffer>;
1470
+ }, txnOptions?: {
1471
+ /**
1472
+ * The fee to pay for the transaction. Default: BASE_FEE
1473
+ */
1474
+ fee?: number;
1475
+ /**
1476
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1477
+ */
1478
+ timeoutInSeconds?: number;
1479
+ /**
1480
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1481
+ */
1482
+ simulate?: boolean;
1483
+ }) => Promise<AssembledTransaction<null>>;
1484
+ /**
1485
+ * Construct and simulate a set_delegate transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1486
+ * Sets the delegate address for the OApp Core.
1487
+ *
1488
+ * # Arguments
1489
+ * * `delegate` - The address of the delegate to be set, or None to remove the delegate
1490
+ */
1491
+ set_delegate: ({ delegate }: {
1492
+ delegate: Option<string>;
1493
+ }, txnOptions?: {
1494
+ /**
1495
+ * The fee to pay for the transaction. Default: BASE_FEE
1496
+ */
1497
+ fee?: number;
1498
+ /**
1499
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1500
+ */
1501
+ timeoutInSeconds?: number;
1502
+ /**
1503
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1504
+ */
1505
+ simulate?: boolean;
1506
+ }) => Promise<AssembledTransaction<null>>;
1507
+ /**
1508
+ * Construct and simulate a set_ttl_configs transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1509
+ * Sets TTL configs for instance and persistent storage.
1510
+ *
1511
+ * - `None` values remove the corresponding config (disables auto-extension for that type)
1512
+ * - Validates that `threshold <= extend_to <= MAX_TTL`
1513
+ *
1514
+ * # Arguments
1515
+ * - `instance` - TTL config for instance storage
1516
+ * - `persistent` - TTL config for persistent storage
1517
+ *
1518
+ * # Panics
1519
+ * - `TtlConfigFrozen` if configs are frozen
1520
+ * - `InvalidTtlConfig` if validation fails
1521
+ */
1522
+ set_ttl_configs: ({ instance, persistent }: {
1523
+ instance: Option<TtlConfig>;
1524
+ persistent: Option<TtlConfig>;
1525
+ }, txnOptions?: {
1526
+ /**
1527
+ * The fee to pay for the transaction. Default: BASE_FEE
1528
+ */
1529
+ fee?: number;
1530
+ /**
1531
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1532
+ */
1533
+ timeoutInSeconds?: number;
1534
+ /**
1535
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1536
+ */
1537
+ simulate?: boolean;
1538
+ }) => Promise<AssembledTransaction<null>>;
1539
+ /**
1540
+ * Construct and simulate a ttl_configs transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1541
+ * Returns the current TTL configs as (instance_config, persistent_config).
1542
+ */
1543
+ ttl_configs: (txnOptions?: {
1544
+ /**
1545
+ * The fee to pay for the transaction. Default: BASE_FEE
1546
+ */
1547
+ fee?: number;
1548
+ /**
1549
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1550
+ */
1551
+ timeoutInSeconds?: number;
1552
+ /**
1553
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1554
+ */
1555
+ simulate?: boolean;
1556
+ }) => Promise<AssembledTransaction<readonly [Option<TtlConfig>, Option<TtlConfig>]>>;
1557
+ /**
1558
+ * Construct and simulate a freeze_ttl_configs transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1559
+ * Permanently freezes TTL configs, preventing any future modifications.
1560
+ *
1561
+ * This is irreversible and provides immutability guarantees to users.
1562
+ * Emits `TtlConfigsFrozen` event.
1563
+ *
1564
+ * # Panics
1565
+ * - `TtlConfigAlreadyFrozen` if already frozen
1566
+ */
1567
+ freeze_ttl_configs: (txnOptions?: {
1568
+ /**
1569
+ * The fee to pay for the transaction. Default: BASE_FEE
1570
+ */
1571
+ fee?: number;
1572
+ /**
1573
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1574
+ */
1575
+ timeoutInSeconds?: number;
1576
+ /**
1577
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1578
+ */
1579
+ simulate?: boolean;
1580
+ }) => Promise<AssembledTransaction<null>>;
1581
+ /**
1582
+ * Construct and simulate a is_ttl_configs_frozen transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1583
+ * Returns whether TTL configs are frozen.
1584
+ */
1585
+ is_ttl_configs_frozen: (txnOptions?: {
1586
+ /**
1587
+ * The fee to pay for the transaction. Default: BASE_FEE
1588
+ */
1589
+ fee?: number;
1590
+ /**
1591
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1592
+ */
1593
+ timeoutInSeconds?: number;
1594
+ /**
1595
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1596
+ */
1597
+ simulate?: boolean;
1598
+ }) => Promise<AssembledTransaction<boolean>>;
1599
+ /**
1600
+ * Construct and simulate a extend_instance_ttl transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1601
+ * Extends the instance TTL.
1602
+ *
1603
+ * # Arguments
1604
+ *
1605
+ * * `threshold` - The threshold to extend the TTL (if current TTL is below this, extend).
1606
+ * * `extend_to` - The TTL to extend to.
1607
+ */
1608
+ extend_instance_ttl: ({ threshold, extend_to }: {
1609
+ threshold: u32;
1610
+ extend_to: u32;
1611
+ }, txnOptions?: {
1612
+ /**
1613
+ * The fee to pay for the transaction. Default: BASE_FEE
1614
+ */
1615
+ fee?: number;
1616
+ /**
1617
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1618
+ */
1619
+ timeoutInSeconds?: number;
1620
+ /**
1621
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1622
+ */
1623
+ simulate?: boolean;
1624
+ }) => Promise<AssembledTransaction<null>>;
1625
+ /**
1626
+ * Construct and simulate a owner transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1627
+ * Returns the current owner address, or None if no owner is set.
1628
+ */
1629
+ owner: (txnOptions?: {
1630
+ /**
1631
+ * The fee to pay for the transaction. Default: BASE_FEE
1632
+ */
1633
+ fee?: number;
1634
+ /**
1635
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1636
+ */
1637
+ timeoutInSeconds?: number;
1638
+ /**
1639
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1640
+ */
1641
+ simulate?: boolean;
1642
+ }) => Promise<AssembledTransaction<Option<string>>>;
1643
+ /**
1644
+ * Construct and simulate a pending_owner transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1645
+ * Returns the pending owner address for 2-step transfer, or None if no transfer is pending.
1646
+ */
1647
+ pending_owner: (txnOptions?: {
1648
+ /**
1649
+ * The fee to pay for the transaction. Default: BASE_FEE
1650
+ */
1651
+ fee?: number;
1652
+ /**
1653
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1654
+ */
1655
+ timeoutInSeconds?: number;
1656
+ /**
1657
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1658
+ */
1659
+ simulate?: boolean;
1660
+ }) => Promise<AssembledTransaction<Option<string>>>;
1661
+ /**
1662
+ * Construct and simulate a transfer_ownership transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1663
+ * Transfers ownership immediately to a new address.
1664
+ *
1665
+ * Use with caution - if you transfer to a wrong address, ownership is lost forever.
1666
+ * Consider using `propose_ownership_transfer` instead.
1667
+ *
1668
+ * # Panics
1669
+ * - `OwnerNotSet` if no owner is currently set
1670
+ * - `TransferInProgress` if a 2-step transfer is in progress
1671
+ */
1672
+ transfer_ownership: ({ new_owner }: {
1673
+ new_owner: string;
1674
+ }, txnOptions?: {
1675
+ /**
1676
+ * The fee to pay for the transaction. Default: BASE_FEE
1677
+ */
1678
+ fee?: number;
1679
+ /**
1680
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1681
+ */
1682
+ timeoutInSeconds?: number;
1683
+ /**
1684
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1685
+ */
1686
+ simulate?: boolean;
1687
+ }) => Promise<AssembledTransaction<null>>;
1688
+ /**
1689
+ * Construct and simulate a propose_ownership_transfer transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1690
+ * Proposes an ownership transfer to a new address.
1691
+ *
1692
+ * The new owner must call `accept_ownership()` within `ttl` ledgers
1693
+ * to complete the transfer. The pending transfer will automatically expire after.
1694
+ *
1695
+ * # Arguments
1696
+ * - `new_owner` - The proposed new owner
1697
+ * - `ttl` - Number of ledgers the new owner has to accept.
1698
+ * Use `0` to cancel a pending transfer (new_owner must match pending).
1699
+ *
1700
+ * # Panics
1701
+ * - `OwnerNotSet` if no owner is currently set
1702
+ * - `NoPendingTransfer` when cancelling and no pending transfer exists
1703
+ * - `InvalidTtl` if ttl exceeds max TTL
1704
+ * - `InvalidPendingOwner` when cancelling with wrong new_owner address
1705
+ */
1706
+ propose_ownership_transfer: ({ new_owner, ttl }: {
1707
+ new_owner: string;
1708
+ ttl: u32;
1709
+ }, txnOptions?: {
1710
+ /**
1711
+ * The fee to pay for the transaction. Default: BASE_FEE
1712
+ */
1713
+ fee?: number;
1714
+ /**
1715
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1716
+ */
1717
+ timeoutInSeconds?: number;
1718
+ /**
1719
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1720
+ */
1721
+ simulate?: boolean;
1722
+ }) => Promise<AssembledTransaction<null>>;
1723
+ /**
1724
+ * Construct and simulate a accept_ownership transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1725
+ * Accepts a pending 2-step ownership transfer.
1726
+ *
1727
+ * Must be called by the pending owner before the TTL expires.
1728
+ *
1729
+ * # Panics
1730
+ * - `NoPendingTransfer` if there is no pending transfer (or it expired)
1731
+ */
1732
+ accept_ownership: (txnOptions?: {
1733
+ /**
1734
+ * The fee to pay for the transaction. Default: BASE_FEE
1735
+ */
1736
+ fee?: number;
1737
+ /**
1738
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1739
+ */
1740
+ timeoutInSeconds?: number;
1741
+ /**
1742
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1743
+ */
1744
+ simulate?: boolean;
1745
+ }) => Promise<AssembledTransaction<null>>;
1746
+ /**
1747
+ * Construct and simulate a renounce_ownership transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1748
+ * Permanently renounces ownership.
1749
+ *
1750
+ * # Panics
1751
+ * - `OwnerNotSet` if no owner is currently set
1752
+ * - `TransferInProgress` if a 2-step transfer is in progress (cancel it first)
1753
+ */
1754
+ renounce_ownership: (txnOptions?: {
1755
+ /**
1756
+ * The fee to pay for the transaction. Default: BASE_FEE
1757
+ */
1758
+ fee?: number;
1759
+ /**
1760
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
1761
+ */
1762
+ timeoutInSeconds?: number;
1763
+ /**
1764
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1765
+ */
1766
+ simulate?: boolean;
1767
+ }) => Promise<AssembledTransaction<null>>;
1768
+ }
1769
+ export declare class Client extends ContractClient {
1770
+ readonly options: ContractClientOptions;
1771
+ static deploy<T = Client>(
1772
+ /** Constructor/Initialization Args for the contract's `__constructor` method */
1773
+ { token, owner, endpoint, delegate, shared_decimals, oft_type }: {
1774
+ token: string;
1775
+ owner: string;
1776
+ endpoint: string;
1777
+ delegate: Option<string>;
1778
+ shared_decimals: u32;
1779
+ oft_type: OftType;
1780
+ },
1781
+ /** Options for initializing a Client as well as for calling a method, with extras specific to deploying. */
1782
+ options: MethodOptions & Omit<ContractClientOptions, "contractId"> & {
1783
+ /** The hash of the Wasm blob, which must already be installed on-chain. */
1784
+ wasmHash: Buffer | string;
1785
+ /** Salt used to generate the contract's ID. Passed through to {@link Operation.createCustomContract}. Default: random. */
1786
+ salt?: Buffer | Uint8Array;
1787
+ /** The format used to decode `wasmHash`, if it's provided as a string. */
1788
+ format?: "hex" | "base64";
1789
+ }): Promise<AssembledTransaction<T>>;
1790
+ constructor(options: ContractClientOptions);
1791
+ readonly fromJSON: {
1792
+ set_rate_limit: (json: string) => AssembledTransaction<null>;
1793
+ unset_rate_limit: (json: string) => AssembledTransaction<null>;
1794
+ rate_limit_config: (json: string) => AssembledTransaction<readonly [bigint, bigint]>;
1795
+ rate_limit_in_flight: (json: string) => AssembledTransaction<bigint>;
1796
+ rate_limit_capacity: (json: string) => AssembledTransaction<bigint>;
1797
+ set_default_fee_bps: (json: string) => AssembledTransaction<null>;
1798
+ set_fee_bps: (json: string) => AssembledTransaction<null>;
1799
+ unset_fee_bps: (json: string) => AssembledTransaction<null>;
1800
+ set_fee_deposit_address: (json: string) => AssembledTransaction<null>;
1801
+ has_fee_bps: (json: string) => AssembledTransaction<boolean>;
1802
+ effective_fee_bps: (json: string) => AssembledTransaction<bigint>;
1803
+ default_fee_bps: (json: string) => AssembledTransaction<bigint>;
1804
+ fee_bps: (json: string) => AssembledTransaction<Option<bigint>>;
1805
+ fee_deposit_address: (json: string) => AssembledTransaction<string>;
1806
+ set_paused: (json: string) => AssembledTransaction<null>;
1807
+ is_paused: (json: string) => AssembledTransaction<boolean>;
1808
+ quote_oft: (json: string) => AssembledTransaction<readonly [OFTLimit, OFTFeeDetail[], OFTReceipt]>;
1809
+ quote_send: (json: string) => AssembledTransaction<MessagingFee>;
1810
+ token: (json: string) => AssembledTransaction<string>;
1811
+ oft_version: (json: string) => AssembledTransaction<readonly [bigint, bigint]>;
1812
+ shared_decimals: (json: string) => AssembledTransaction<number>;
1813
+ decimal_conversion_rate: (json: string) => AssembledTransaction<bigint>;
1814
+ approval_required: (json: string) => AssembledTransaction<boolean>;
1815
+ send: (json: string) => AssembledTransaction<readonly [MessagingReceipt, OFTReceipt]>;
1816
+ oft_type: (json: string) => AssembledTransaction<OftType>;
1817
+ authorizer: (json: string) => AssembledTransaction<string>;
1818
+ enforced_options: (json: string) => AssembledTransaction<Buffer<ArrayBufferLike>>;
1819
+ set_enforced_options: (json: string) => AssembledTransaction<null>;
1820
+ combine_options: (json: string) => AssembledTransaction<Buffer<ArrayBufferLike>>;
1821
+ allow_initialize_path: (json: string) => AssembledTransaction<boolean>;
1822
+ next_nonce: (json: string) => AssembledTransaction<bigint>;
1823
+ lz_receive: (json: string) => AssembledTransaction<null>;
1824
+ is_compose_msg_sender: (json: string) => AssembledTransaction<boolean>;
1825
+ oapp_version: (json: string) => AssembledTransaction<readonly [bigint, bigint]>;
1826
+ endpoint: (json: string) => AssembledTransaction<string>;
1827
+ peer: (json: string) => AssembledTransaction<Option<Buffer<ArrayBufferLike>>>;
1828
+ set_peer: (json: string) => AssembledTransaction<null>;
1829
+ set_delegate: (json: string) => AssembledTransaction<null>;
1830
+ set_ttl_configs: (json: string) => AssembledTransaction<null>;
1831
+ ttl_configs: (json: string) => AssembledTransaction<readonly [Option<TtlConfig>, Option<TtlConfig>]>;
1832
+ freeze_ttl_configs: (json: string) => AssembledTransaction<null>;
1833
+ is_ttl_configs_frozen: (json: string) => AssembledTransaction<boolean>;
1834
+ extend_instance_ttl: (json: string) => AssembledTransaction<null>;
1835
+ owner: (json: string) => AssembledTransaction<Option<string>>;
1836
+ pending_owner: (json: string) => AssembledTransaction<Option<string>>;
1837
+ transfer_ownership: (json: string) => AssembledTransaction<null>;
1838
+ propose_ownership_transfer: (json: string) => AssembledTransaction<null>;
1839
+ accept_ownership: (json: string) => AssembledTransaction<null>;
1840
+ renounce_ownership: (json: string) => AssembledTransaction<null>;
1841
+ };
1842
+ }