@layerzerolabs/protocol-stellar-v2 0.2.19 → 0.2.21

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 (249) hide show
  1. package/.turbo/turbo-build.log +795 -791
  2. package/.turbo/turbo-lint.log +325 -155
  3. package/.turbo/turbo-test.log +1398 -1277
  4. package/Cargo.lock +122 -111
  5. package/Cargo.toml +32 -16
  6. package/contracts/common-macros/Cargo.toml +7 -7
  7. package/contracts/common-macros/src/auth.rs +18 -37
  8. package/contracts/common-macros/src/contract_ttl.rs +18 -7
  9. package/contracts/common-macros/src/lib.rs +31 -14
  10. package/contracts/common-macros/src/lz_contract.rs +38 -7
  11. package/contracts/common-macros/src/storage.rs +251 -292
  12. package/contracts/common-macros/src/tests/contract_ttl.rs +1 -1
  13. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_multisig_code.snap +6 -12
  14. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_ownable_code.snap +12 -17
  15. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_ttl__snapshot_generated_contractimpl_code.snap +2 -1
  16. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ttl_configurable__snapshot_generated_ttl_configurable_code.snap +2 -7
  17. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__upgradeable__snapshot_generated_upgradeable_code.snap +20 -14
  18. package/contracts/common-macros/src/tests/upgradeable.rs +26 -4
  19. package/contracts/common-macros/src/ttl_configurable.rs +2 -10
  20. package/contracts/common-macros/src/ttl_extendable.rs +2 -10
  21. package/contracts/common-macros/src/upgradeable.rs +61 -26
  22. package/contracts/common-macros/src/utils.rs +0 -9
  23. package/contracts/endpoint-v2/src/lib.rs +3 -2
  24. package/contracts/endpoint-v2/src/tests/endpoint_v2/clear.rs +2 -2
  25. package/contracts/endpoint-v2/src/tests/endpoint_v2/lz_receive_alert.rs +3 -3
  26. package/contracts/endpoint-v2/src/tests/endpoint_v2/send.rs +4 -4
  27. package/contracts/endpoint-v2/src/tests/endpoint_v2/set_delegate.rs +17 -5
  28. package/contracts/endpoint-v2/src/tests/endpoint_v2/set_zro.rs +4 -4
  29. package/contracts/endpoint-v2/src/tests/endpoint_v2/verify.rs +2 -2
  30. package/contracts/endpoint-v2/src/tests/message_lib_manager/register_library.rs +2 -2
  31. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_lib_timeout.rs +6 -6
  32. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_library.rs +67 -37
  33. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_send_library.rs +5 -5
  34. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library.rs +44 -54
  35. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library_timeout.rs +7 -7
  36. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_send_library.rs +8 -8
  37. package/contracts/endpoint-v2/src/tests/messaging_channel/burn.rs +3 -3
  38. package/contracts/endpoint-v2/src/tests/messaging_channel/nilify.rs +4 -4
  39. package/contracts/endpoint-v2/src/tests/messaging_channel/skip.rs +3 -3
  40. package/contracts/endpoint-v2/src/tests/messaging_composer/clear_compose.rs +2 -2
  41. package/contracts/endpoint-v2/src/tests/messaging_composer/lz_compose_alert.rs +3 -3
  42. package/contracts/endpoint-v2/src/tests/messaging_composer/send_compose.rs +2 -2
  43. package/contracts/layerzero-views/Cargo.toml +0 -1
  44. package/contracts/layerzero-views/src/layerzero_view.rs +1 -13
  45. package/contracts/macro-integration-tests/Cargo.toml +5 -15
  46. package/contracts/macro-integration-tests/tests/runtime/oapp/mod.rs +48 -0
  47. package/contracts/macro-integration-tests/tests/runtime/oapp/oapp_core.rs +170 -0
  48. package/contracts/macro-integration-tests/tests/runtime/oapp/options_type3.rs +154 -0
  49. package/contracts/macro-integration-tests/tests/runtime/oapp/receiver.rs +338 -0
  50. package/contracts/macro-integration-tests/tests/runtime/oapp/sender.rs +435 -0
  51. package/contracts/macro-integration-tests/tests/runtime.rs +1 -0
  52. package/contracts/macro-integration-tests/tests/ui/oapp/fail/custom_wrong_value.rs +8 -0
  53. package/contracts/macro-integration-tests/tests/ui/oapp/fail/custom_wrong_value.stderr +5 -0
  54. package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_lz_receive_internal.rs +8 -0
  55. package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_lz_receive_internal.stderr +71 -0
  56. package/contracts/macro-integration-tests/tests/ui/oapp/fail/non_struct_input.rs +10 -0
  57. package/contracts/macro-integration-tests/tests/ui/oapp/fail/non_struct_input.stderr +5 -0
  58. package/contracts/macro-integration-tests/tests/ui/oapp/fail/unknown_custom_option.rs +8 -0
  59. package/contracts/macro-integration-tests/tests/ui/oapp/fail/unknown_custom_option.stderr +5 -0
  60. package/contracts/macro-integration-tests/tests/ui/oapp/fail/wrong_key.rs +8 -0
  61. package/contracts/macro-integration-tests/tests/ui/oapp/fail/wrong_key.stderr +5 -0
  62. package/contracts/macro-integration-tests/tests/ui/oapp/pass/custom_all.rs +38 -0
  63. package/contracts/macro-integration-tests/tests/ui/oapp/pass/custom_single_trait.rs +96 -0
  64. package/contracts/macro-integration-tests/tests/ui/oapp/pass/minimal_contract.rs +64 -0
  65. package/contracts/macro-integration-tests/tests/ui/oapp/pass/struct_with_fields.rs +46 -0
  66. package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_env.stderr +8 -0
  67. package/contracts/macro-integration-tests/tests/ui/ownable/pass/namespacing_and_imports.rs +1 -1
  68. package/contracts/macro-integration-tests/tests/ui/ownable/pass/only_auth_env_param_variants.rs +1 -1
  69. package/contracts/macro-integration-tests/tests/ui_oapp.rs +11 -0
  70. package/contracts/message-libs/message-lib-common/Cargo.toml +0 -1
  71. package/contracts/message-libs/message-lib-common/src/errors.rs +1 -1
  72. package/contracts/message-libs/treasury/Cargo.toml +0 -2
  73. package/contracts/message-libs/treasury/src/tests/treasury_tests.rs +2 -2
  74. package/contracts/message-libs/uln-302/src/events.rs +4 -0
  75. package/contracts/message-libs/uln-302/src/send_uln.rs +22 -6
  76. package/contracts/message-libs/uln-302/src/tests/receive_uln302/effective_receive_uln_config.rs +2 -2
  77. package/contracts/message-libs/uln-302/src/tests/receive_uln302/set_default_receive_uln_configs.rs +2 -2
  78. package/contracts/message-libs/uln-302/src/tests/receive_uln302/verify.rs +2 -2
  79. package/contracts/message-libs/uln-302/src/tests/send_uln302/effective_executor_config.rs +2 -2
  80. package/contracts/message-libs/uln-302/src/tests/send_uln302/effective_send_uln_config.rs +2 -2
  81. package/contracts/message-libs/uln-302/src/tests/send_uln302/send.rs +21 -67
  82. package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_executor_configs.rs +2 -2
  83. package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_send_uln_configs.rs +2 -2
  84. package/contracts/oapps/counter/Cargo.toml +5 -6
  85. package/contracts/oapps/counter/integration_tests/setup_uln.rs +1 -1
  86. package/contracts/oapps/counter/integration_tests/utils.rs +19 -12
  87. package/contracts/oapps/oapp/src/errors.rs +1 -1
  88. package/contracts/oapps/oapp/src/interfaces/mod.rs +3 -0
  89. package/contracts/oapps/oapp/src/interfaces/oapp_msg_inspector.rs +47 -0
  90. package/contracts/oapps/oapp/src/lib.rs +1 -0
  91. package/contracts/oapps/oapp/src/macro_tests/test_macros.rs +4 -4
  92. package/contracts/oapps/oapp/src/oapp_core.rs +5 -5
  93. package/contracts/oapps/oapp/src/oapp_options_type3.rs +12 -4
  94. package/contracts/oapps/oapp/src/oapp_receiver.rs +14 -9
  95. package/contracts/oapps/oapp/src/tests/mod.rs +4 -4
  96. package/contracts/oapps/oapp/src/tests/oapp_core.rs +223 -0
  97. package/contracts/oapps/oapp/src/tests/oapp_options_type3.rs +240 -0
  98. package/contracts/oapps/oapp/src/tests/oapp_receiver.rs +381 -0
  99. package/contracts/oapps/oapp/src/tests/oapp_sender.rs +569 -0
  100. package/contracts/oapps/oapp-macros/Cargo.toml +8 -4
  101. package/contracts/oapps/oapp-macros/src/generators.rs +9 -34
  102. package/contracts/oapps/oapp-macros/src/lib.rs +3 -0
  103. package/contracts/oapps/oapp-macros/src/tests/mod.rs +2 -0
  104. package/contracts/oapps/oapp-macros/src/tests/oapp.rs +88 -0
  105. package/contracts/oapps/oapp-macros/src/tests/parse_custom_impls.rs +86 -0
  106. package/contracts/oapps/oapp-macros/src/tests/snapshots/oapp_macros__tests__oapp__snapshot_generate_oapp.snap +103 -0
  107. package/contracts/oapps/oft/integration-tests/utils.rs +28 -8
  108. package/contracts/oapps/oft/src/extensions/oft_fee.rs +153 -75
  109. package/contracts/oapps/oft/src/extensions/pausable.rs +61 -12
  110. package/contracts/oapps/oft/src/extensions/rate_limiter.rs +198 -134
  111. package/contracts/oapps/oft/src/oft.rs +45 -50
  112. package/contracts/oapps/oft/src/oft_types/lock_unlock.rs +1 -1
  113. package/contracts/oapps/oft/src/oft_types/mint_burn.rs +4 -26
  114. package/contracts/oapps/oft-core/Cargo.toml +1 -4
  115. package/contracts/oapps/oft-core/integration-tests/setup.rs +3 -3
  116. package/contracts/oapps/oft-core/integration-tests/utils.rs +21 -3
  117. package/contracts/oapps/oft-core/src/errors.rs +3 -2
  118. package/contracts/oapps/oft-core/src/events.rs +6 -0
  119. package/contracts/oapps/oft-core/src/lib.rs +1 -1
  120. package/contracts/oapps/oft-core/src/oft_core.rs +341 -246
  121. package/contracts/oapps/oft-core/src/storage.rs +7 -3
  122. package/contracts/oapps/oft-core/src/tests/mod.rs +1 -0
  123. package/contracts/oapps/oft-core/src/tests/test_decimals.rs +37 -2
  124. package/contracts/oapps/oft-core/src/tests/test_lz_receive.rs +2 -2
  125. package/contracts/oapps/oft-core/src/tests/test_msg_inspector.rs +323 -0
  126. package/contracts/oapps/oft-core/src/tests/test_send.rs +2 -2
  127. package/contracts/oapps/oft-core/src/tests/test_utils.rs +61 -16
  128. package/contracts/upgrader/src/lib.rs +30 -57
  129. package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract1.wasm +0 -0
  130. package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract2.wasm +0 -0
  131. package/contracts/upgrader/src/tests/test_upgrader.rs +44 -35
  132. package/contracts/utils/Cargo.toml +0 -1
  133. package/contracts/utils/src/buffer_reader.rs +1 -0
  134. package/contracts/utils/src/errors.rs +4 -2
  135. package/contracts/utils/src/multisig.rs +17 -8
  136. package/contracts/utils/src/ownable.rs +6 -6
  137. package/contracts/utils/src/testing_utils.rs +124 -54
  138. package/contracts/utils/src/tests/multisig.rs +12 -12
  139. package/contracts/utils/src/tests/ownable.rs +6 -6
  140. package/contracts/utils/src/tests/testing_utils.rs +50 -167
  141. package/contracts/utils/src/tests/ttl_configurable.rs +5 -5
  142. package/contracts/utils/src/tests/upgradeable.rs +372 -175
  143. package/contracts/utils/src/ttl_configurable.rs +13 -7
  144. package/contracts/utils/src/upgradeable.rs +48 -23
  145. package/contracts/workers/dvn/Cargo.toml +6 -6
  146. package/contracts/workers/dvn/src/auth.rs +12 -42
  147. package/contracts/workers/dvn/src/dvn.rs +15 -40
  148. package/contracts/workers/dvn/src/errors.rs +0 -1
  149. package/contracts/workers/dvn/src/interfaces/dvn.rs +35 -0
  150. package/contracts/workers/dvn/src/lib.rs +4 -3
  151. package/contracts/workers/dvn/src/tests/auth.rs +1 -1
  152. package/contracts/workers/dvn/src/tests/dvn.rs +19 -15
  153. package/contracts/workers/dvn/src/tests/multisig/set_threshold.rs +2 -4
  154. package/contracts/workers/dvn/src/tests/multisig/verify_signatures.rs +1 -3
  155. package/contracts/workers/dvn/src/tests/setup.rs +5 -9
  156. package/contracts/workers/dvn-fee-lib/Cargo.toml +2 -2
  157. package/contracts/workers/dvn-fee-lib/src/dvn_fee_lib.rs +38 -22
  158. package/contracts/workers/dvn-fee-lib/src/lib.rs +12 -2
  159. package/contracts/workers/dvn-fee-lib/src/tests/dvn_fee_lib.rs +17 -16
  160. package/contracts/workers/executor/Cargo.toml +4 -0
  161. package/contracts/workers/executor/src/executor.rs +15 -36
  162. package/contracts/workers/executor/src/lib.rs +2 -2
  163. package/contracts/workers/executor/src/tests/auth.rs +394 -0
  164. package/contracts/workers/executor/src/tests/executor.rs +410 -0
  165. package/contracts/workers/executor/src/tests/mod.rs +3 -0
  166. package/contracts/workers/executor/src/tests/setup.rs +250 -0
  167. package/contracts/workers/executor-fee-lib/Cargo.toml +7 -1
  168. package/contracts/workers/executor-fee-lib/src/executor_fee_lib.rs +62 -15
  169. package/contracts/workers/executor-fee-lib/src/executor_option.rs +28 -1
  170. package/contracts/workers/executor-fee-lib/src/lib.rs +11 -2
  171. package/contracts/workers/executor-fee-lib/src/tests/executor_fee_lib.rs +701 -0
  172. package/contracts/workers/executor-fee-lib/src/tests/executor_option.rs +370 -0
  173. package/contracts/workers/executor-fee-lib/src/tests/mod.rs +4 -0
  174. package/contracts/workers/executor-fee-lib/src/tests/setup.rs +60 -0
  175. package/contracts/workers/executor-helper/Cargo.toml +0 -1
  176. package/contracts/workers/executor-helper/src/lib.rs +3 -0
  177. package/contracts/workers/executor-helper/src/tests/executor_helper.rs +184 -0
  178. package/contracts/workers/executor-helper/src/tests/mod.rs +2 -0
  179. package/contracts/workers/executor-helper/src/tests/setup.rs +366 -0
  180. package/contracts/workers/fee-lib-interfaces/Cargo.toml +14 -0
  181. package/contracts/workers/{worker/src/interfaces/mod.rs → fee-lib-interfaces/src/lib.rs} +4 -3
  182. package/contracts/workers/price-feed/Cargo.toml +7 -1
  183. package/contracts/workers/price-feed/src/events.rs +1 -1
  184. package/contracts/workers/price-feed/src/lib.rs +12 -4
  185. package/contracts/workers/price-feed/src/price_feed.rs +5 -21
  186. package/contracts/workers/price-feed/src/storage.rs +1 -1
  187. package/contracts/workers/price-feed/src/tests/mod.rs +2 -0
  188. package/contracts/workers/price-feed/src/tests/price_feed.rs +869 -0
  189. package/contracts/workers/price-feed/src/tests/setup.rs +70 -0
  190. package/contracts/workers/price-feed/src/types.rs +1 -1
  191. package/contracts/workers/worker/src/errors.rs +1 -4
  192. package/contracts/workers/worker/src/lib.rs +0 -2
  193. package/contracts/workers/worker/src/storage.rs +32 -29
  194. package/contracts/workers/worker/src/tests/setup.rs +2 -8
  195. package/contracts/workers/worker/src/tests/worker.rs +96 -74
  196. package/contracts/workers/worker/src/worker.rs +75 -75
  197. package/docs/error-spec.md +55 -0
  198. package/docs/layerzero-v2-on-stellar.md +447 -0
  199. package/docs/oapp-guide.md +212 -0
  200. package/docs/oft-guide.md +314 -0
  201. package/package.json +3 -3
  202. package/sdk/.turbo/turbo-test.log +268 -263
  203. package/sdk/dist/generated/bml.d.ts +12 -4
  204. package/sdk/dist/generated/bml.js +9 -7
  205. package/sdk/dist/generated/counter.d.ts +306 -298
  206. package/sdk/dist/generated/counter.js +48 -46
  207. package/sdk/dist/generated/dvn.d.ts +450 -411
  208. package/sdk/dist/generated/dvn.js +66 -64
  209. package/sdk/dist/generated/dvn_fee_lib.d.ts +294 -338
  210. package/sdk/dist/generated/dvn_fee_lib.js +33 -64
  211. package/sdk/dist/generated/endpoint.d.ts +108 -100
  212. package/sdk/dist/generated/endpoint.js +21 -19
  213. package/sdk/dist/generated/executor.d.ts +414 -370
  214. package/sdk/dist/generated/executor.js +58 -55
  215. package/sdk/dist/generated/executor_fee_lib.d.ts +333 -377
  216. package/sdk/dist/generated/executor_fee_lib.js +34 -65
  217. package/sdk/dist/generated/executor_helper.d.ts +26 -190
  218. package/sdk/dist/generated/executor_helper.js +23 -28
  219. package/sdk/dist/generated/layerzero_view.d.ts +1271 -0
  220. package/sdk/dist/generated/layerzero_view.js +294 -0
  221. package/sdk/dist/generated/oft.d.ts +408 -385
  222. package/sdk/dist/generated/oft.js +89 -92
  223. package/sdk/dist/generated/price_feed.d.ts +385 -429
  224. package/sdk/dist/generated/price_feed.js +50 -81
  225. package/sdk/dist/generated/sml.d.ts +108 -100
  226. package/sdk/dist/generated/sml.js +21 -19
  227. package/sdk/dist/generated/treasury.d.ts +108 -100
  228. package/sdk/dist/generated/treasury.js +21 -19
  229. package/sdk/dist/generated/uln302.d.ts +108 -100
  230. package/sdk/dist/generated/uln302.js +23 -21
  231. package/sdk/dist/generated/upgrader.d.ts +189 -18
  232. package/sdk/dist/generated/upgrader.js +84 -4
  233. package/sdk/dist/index.d.ts +1 -0
  234. package/sdk/dist/index.js +2 -0
  235. package/sdk/package.json +1 -1
  236. package/sdk/src/index.ts +3 -0
  237. package/sdk/test/oft-sml.test.ts +4 -4
  238. package/sdk/test/suites/localnet.ts +84 -20
  239. package/sdk/test/upgrader.test.ts +2 -3
  240. package/tools/ts-bindings-gen/src/main.rs +2 -1
  241. package/contracts/ERROR_SPEC.md +0 -44
  242. package/contracts/endpoint-v2/ARCHITECTURE.md +0 -233
  243. package/contracts/oapps/oapp/src/tests/test_oapp_core.rs +0 -175
  244. package/contracts/oapps/oapp/src/tests/test_oapp_options_type3.rs +0 -212
  245. package/contracts/oapps/oapp/src/tests/test_oapp_receiver.rs +0 -153
  246. package/contracts/oapps/oapp/src/tests/test_oapp_sender.rs +0 -294
  247. /package/contracts/workers/{worker/src/interfaces → fee-lib-interfaces/src}/dvn_fee_lib.rs +0 -0
  248. /package/contracts/workers/{worker/src/interfaces → fee-lib-interfaces/src}/executor_fee_lib.rs +0 -0
  249. /package/contracts/workers/{worker/src/interfaces → fee-lib-interfaces/src}/price_feed.rs +0 -0
@@ -4,17 +4,16 @@ import type { u32, u64, u128, i128, Option } from '@stellar/stellar-sdk/contract
4
4
  export * from '@stellar/stellar-sdk';
5
5
  export * as contract from '@stellar/stellar-sdk/contract';
6
6
  export * as rpc from '@stellar/stellar-sdk/rpc';
7
- export type MigrationData = void;
8
7
  /**
9
8
  * Embedded WASM bytecode (base64-encoded)
10
- * Size: 23312 bytes (22.77 KB)
9
+ * Size: 22288 bytes (21.77 KB)
11
10
  */
12
- export declare const WASM_BASE64 = "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IQIgASkDAFANAQsACyABQRBqJICAgIAAIAILTQECfkIAIQECQAJAQQAQqICAgAAiAkICEJ+AgIAARQ0AIAJCAhCAgICAACIBQv8Bg0LNAFINASAAIAE3AwhCASEBCyAAIAE3AwAPCwALDQAgAUICIACnQQFxGwuLAQEBfyOAgICAAEEQayIBJICAgIAAAkAgAEL/AYNCyABSDQAgABCCgICAAEKAgICAcINCgICAgIAEUg0AEKCAgIAAIAFBBGoQnICAgAACQCABKAIEQQFHDQAgASgCCCABKAIMEJ2AgIAAC0EBEKyAgIAAIAAQg4CAgAAaIAFBEGokgICAgABCAg8LAAsYABCugICAACAArUL/AYNCAhCNgICAABoLpAEBAX8jgICAgABBEGsiASSAgICAAAJAIABC/wGDQgJSDQAQoICAgAAgAUEEahCcgICAAAJAIAEoAgRBAUcNACABKAIIIAEoAgwQnYCAgAALAkACQBCugICAACIAQgIQn4CAgABFDQAgAEICEICAgIAAp0H/AXEOAgABAgtCg4CAgKCDARCngICAAAALQQAQrICAgAAgAUEQaiSAgICAAEICDwsAC2ACAX8BfiOAgICAAEEQayIAJICAgIAAIABBmoLAgABBCRDRgICAAAJAAkAgACgCAA0AIAAgACkDCBDUgICAACAAKAIAQQFHDQELAAsgACkDCCEBIABBEGokgICAgAAgAQsIABChgICAAAtBAAJAAkAgAEL/AYNCzQBSDQBBABCogICAAEICEJ+AgIAADQEgABCxgICAAEICDwsAC0KDgICAkIEBEKeAgIAAAAsOAEEAIABCAhDLgICAAAvECwUCfwh+AX8BfgF/I4CAgIAAQdABayICJICAgIAAAkAgAEL/AYNCzQBSDQBBACEDAkADQCADQdAARg0BIAJB4ABqIANqQgI3AwAgA0EIaiEDDAALCyABQv8Bg0LMAFINACABQYyDwIAAQQogAkHgAGpBChCzgICAAAJAIAIpA2AiAadB/wFxIgNBBkYNACADQcAARw0BIAEQhICAgAAaCyACKQNoIgRC/wGDQgRSDQAgAikDcCIFQv8Bg0IEUg0AIAJBsAFqIAIpA3gQtICAgAAgAigCsAFBAUYNACACKQPIASEGIAIpA8ABIQcgAkGwAWogAikDgAEQtICAgAAgAigCsAFBAUYNACACKQOIASIIQv8Bg0IEUg0AIAIpA5ABIglC/wGDQsgAUg0AIAIpA5gBIgpC/wGDQs0AUg0AIAIpA6ABIgtC/wGDQgRSDQAgAjEAqAFCzQBSDQAgAikDyAEhASACKQPAASEAIAJB4ABqEJyAgIAAAkAgAigCYEEBRw0AIAIoAmQgAigCaBCdgICAAAsCQCAAIAGEQgBRDQACQCAJEIKAgIAAQoCAgIAQWg0AAkAgC0IgiKetQsEAfiIJQiCIpw0AAkAgCaciA0EfcUUNACADQWBxIgxBIGoiAyAMSQ0BCyADQaQEaiIMIANJDQAgDEEgaiIDIAxJDQAgBEIgiCEEIAhCIIghCSAFQoSAgIBwgyEFIAOtQiCGQgSEIQsQhYCAgAAhCEG8hMCAAEETELWAgIAAIQ0CQAJAIABC//////////8AViABQgBSIAFQGw0AIABCCIZCCoQhAQwBCyABIAAQhoCAgAAhAQsgBKchDiAJpyEMIAIgATcDyAEgAiALNwPAASACIAU3A7gBIAIgCDcDsAFBACEDAkACQANAAkAgA0EgRw0AQQAhAwJAA0AgA0EgRg0BIAJB4ABqIANqIAJBsAFqIANqKQMANwMAIANBCGohAwwACwsgCiANIAJB4ABqQQQQtoCAgAAQh4CAgAAhAUEAIQMCQANAIANBIEYNASACQbABaiADakICNwMAIANBCGohAwwACwsgAUL/AYNCzABSDQQgAUGchMCAAEEEIAJBsAFqQQQQs4CAgAAgAkHgAGogAikDsAEQtICAgAAgAigCYEEBRg0EIAIpA3ghBSACKQNwIQsgAkHgAGogAikDuAEQtICAgAAgAigCYA0EIAJB4ABqIAIpA8ABELSAgIAAIAIoAmANBAJAAkAgAikDyAEiAadB/wFxIgNBxQBGDQAgA0ELRw0GIAFCP4chACABQgiHIQkMAQsgARCIgICAACEAIAEQiYCAgAAhCQsgAEJ/Vw0CIAJBADYCXCACQcAAaiAJIAAgDCAOIAwbrUIAIAJB3ABqENWAgIAAIAIoAlwNBCACQTBqIAIpA0AgAikDSEKQzgBCABDYgICAACACKQM4IQQgAikDMCEBAkAgByAGhFANACALIAWEUA0AIAJBEGogBkIAQoCt4gRCABDbgICAACACQSBqIAdCAEKAreIEQgAQ24CAgAAgAikDGEIAUiACKQMoIgYgAikDEHwiByAGVHJBAUYNBSACIAIpAyAgByALIAUQ2oCAgAAgAikDCCIGQn9XDQQgACAGhUJ/hSAAIAAgBnwgCSACKQMAfCIGIAlUrXwiCYWDQgBTDQUgBCAJIAEgBlYgBCAJVSAEIAlRGyIDGyEEIAEgBiADGyEBCwJAAkAgAUKAgICAgICAwAB8Qv//////////AFYNACABIAGFIAQgAUI/h4WEQgBSDQAgAUIIhkILhCEBDAELIAQgARCKgICAACEBCyACQdABaiSAgICAACABDwsgAkHgAGogA2pCAjcDACADQQhqIQMMAAsLQoOAgIAwEKeAgIAAAAtCg4CAgMAAEKeAgIAAAAsQt4CAgAAAC0KDgICAIBCngICAAAALQoOAgIAQEKeAgIAAAAsACzEAAkAgAiAERg0AAAsgACABrUIghkIEhCADrUIghkIEhCACrUIghkIEhBCSgICAABoLewIBfwF+AkACQAJAIAGnQf8BcSICQcQARg0AIAJBCkcNAUIAIQMgAEIANwMYIAAgAUIIiDcDEAwCCyABEJmAgIAAIQMgARCagICAACEBIAAgAzcDGCAAIAE3AxBCACEDDAELIABCg5CAgIABNwMIQgEhAwsgACADNwMAC0UCAX8BfiOAgICAAEEQayICJICAgIAAIAIgACABENCAgIAAAkAgAigCAEEBRw0AAAsgAikDCCEDIAJBEGokgICAgAAgAwsaACAArUIghkIEhCABrUIghkIEhBCTgICAAAsJABDPgICAAAAL4gQBBX8jgICAgABB0ABrIgIkgICAgAAgAkEoaiAAELmAgIAAAkAgAigCKEECRg0AIAJBCGpBCGogAkEoakEIaiIDKAIANgIAIAIgAikCKDcDCCACQShqIAEQuYCAgAAgAigCKEECRg0AIAJBGGpBCGogAygCADYCACACIAIpAig3AxggAkEoahCcgICAAAJAIAIoAihBAUcNACACKAIsIAIoAjAQnYCAgAALEKCAgIAAAkACQAJAEJuAgIAADQAQuoCAgAAiA0GA+4ADIANBgPuAA0kbIQQgAiACQRhqNgIsIAIgAkEIajYCKEEAIQMDQCADQQhGDQMCQCACQShqIANqKAIAIgUoAgBBAXFFDQAgBSgCCCIGIARLDQMgBSgCBCAGSw0DCyADQQRqIQMMAAsLQoOAgIDQ/wAQp4CAgAAAC0KDgICAwP8AEKeAgIAAAAsCQAJAIAIoAghBAUcNAEEBIAIoAgwgAigCEBC7gICAAAwBC0EBEJ6AgIAAQgIQi4CAgAAaCwJAAkAgAigCGEEBRw0AQQIgAigCHCACKAIgELuAgIAADAELQQIQnoCAgABCAhCLgICAABoLIAJBKGpBCGogAkEIakEIaigCADYCACACQTxqIAJBGGpBCGooAgA2AgAgAiACKQMINwMoIAIgAikDGDcCNEG8gcCAAEEPELWAgIAAELyAgIAAIQAgAkEoahC9gICAACEBIAIgAkE0ahC9gICAADcDSCACIAE3A0AgAEHggcCAAEECIAJBwABqQQIQvoCAgAAQjICAgAAaIAJB0ABqJICAgIAAQgIPCwALaAEBfyOAgICAAEEQayICJICAgIAAAkACQCABQgJRDQAgAkEEaiABENKAgIAAAkAgAigCBEUNACAAQQI2AgAMAgsgACACKQIINwIEIABBATYCAAwBCyAAQQA2AgALIAJBEGokgICAgAALMwECfhCUgICAACEAAkAQlYCAgABCIIgiASAAQiCIIgBUDQAgAacgAKdrDwsQt4CAgAAAC1YCAX8BfiOAgICAAEEQayIDJICAgIAAIAAQnoCAgAAhBCADIAEgAhDTgICAAAJAIAMoAgBBAUcNAAALIAQgAykDCEICEI2AgIAAGiADQRBqJICAgIAAC2MDAX8BfgF/I4CAgIAAQRBrIgEkgICAgAAgASAANwMAQgIhAkEBIQMCQANAIANFDQEgA0F/aiEDIAAhAgwACwsgASACNwMIIAFBCGpBARC2gICAACEAIAFBEGokgICAgAAgAAtDAgF/AX4jgICAgABBEGsiASSAgICAACABIAAQwYCAgAACQCABKAIAQQFHDQAACyABKQMIIQIgAUEQaiSAgICAACACCy4AAkAgASADRg0AAAsgAK1CIIZCBIQgAq1CIIZCBIQgAa1CIIZCBIQQkYCAgAALxAECAn8BfiOAgICAAEHAAGsiACSAgICAACAAQQhqEJyAgIAAAkAgACgCCEEBRw0AIAAoAgwgACgCEBCdgICAAAsgAEEIahCcgICAACAAQRRqIgFBAhDAgICAACAAQTBqIABBCGoQwYCAgAACQAJAIAAoAjANACAAKQM4IQIgAEEwaiABEMGAgIAAIAAoAjBBAUcNAQsACyAAIAApAzg3AyggACACNwMgIABBIGpBAhC2gICAACECIABBwABqJICAgIAAIAILdwICfwF+I4CAgIAAQRBrIgIkgICAgABBACEDAkACQCABEJ6AgIAAIgRCAhCfgICAAEUNACACQQRqIARCAhCAgICAABDSgICAAEEBIQMgAigCBEEBRg0BIAAgAikCCDcCBAsgACADNgIAIAJBEGokgICAgAAPCwALMAACQCABKAIAQQFHDQAgACABKAIEIAEoAggQ04CAgAAPCyAAQgA3AwAgAEICNwMIC6oBAQF/I4CAgIAAQSBrIgAkgICAgAAgAEEMahCcgICAAAJAIAAoAgxBAUcNACAAKAIQIAAoAhQQnYCAgAALEKCAgIAAAkAQm4CAgABFDQBCg4CAgOD/ABCngICAAAALQQAQnoCAgABCAUICEI2AgIAAGkHwgcCAAEESELWAgIAAELyAgIAAQQRBACAAQRhqQQAQvoCAgAAQjICAgAAaIABBIGokgICAgABCAgsJABCbgICAAK0LMQACQCAAQv8Bg0IEUg0AIAFC/wGDQgRSDQAgAEIgiKcgAUIgiKcQnYCAgABCAg8LAAs+AgF/AX4jgICAgABBEGsiACSAgICAACAAEKOAgIAAIAApAwAgACkDCBCqgICAACEBIABBEGokgICAgAAgAQs+AgF/AX4jgICAgABBEGsiACSAgICAACAAEKaAgIAAIAApAwAgACkDCBCqgICAACEBIABBEGokgICAgAAgAQt9AgF/AX4jgICAgABBEGsiASSAgICAAAJAIABC/wGDQs0AUg0AIAFBBGoQnICAgAACQCABKAIEQQFHDQAgASgCCCABKAIMEJ2AgIAACxCigICAACECEKWAgIAAIAAQsYCAgAAgAiAAEMiAgIAAIAFBEGokgICAgABCAg8LAAthAgF/AX4jgICAgABBEGsiAiSAgICAAEGJgMCAAEEVELWAgIAAELyAgIAAIQMgAiAANwMIIAIgATcDACADQbCAwIAAQQIgAkECEL6AgIAAEIyAgIAAGiACQRBqJICAgIAAC90CAgF/An4jgICAgABBIGsiAiSAgICAAAJAAkACQCAAQv8Bg0LNAFINACABQv8Bg0IEUg0AIAJBCGoQnICAgAACQCACKAIIQQFHDQAgAigCDCACKAIQEJ2AgIAACxCigICAACEDAkACQCABQv////8PVg0AIAJBCGoQpoCAgAAgAikDECEBIAIpAwhBiAgQpICAgAAgASAAEI6AgIAAUEUNAxDKgICAAAwBCxC6gICAACABQiCIp0kNA0EBIABCABDLgICAAEEBEKiAgIAAQgAgAUKEgICAcIMiASABEI+AgIAAGkHAgMCAAEEWELWAgIAAELyAgIAAIQQgAiABNwMYIAIgAzcDECACIAA3AwggBEHcgMCAAEEDIAJBCGpBAxC+gICAABCMgICAABoLIAJBIGokgICAgABCAg8LAAtCg4CAgOCAARCngICAAAALQoOAgIDwgAEQp4CAgAAACxMAQQEQqICAgABCABCLgICAABoLFQAgABCogICAACABIAIQjYCAgAAaC6cBAgF/An4jgICAgABBEGsiACSAgICAACAAEJyAgIAAAkAgACgCAEEBRw0AIAAoAgQgACgCCBCdgICAAAsgABCmgICAACAAKQMIIQEgACkDAEGICBCkgICAACABEIGAgIAAGiAAEKmAgIAAAkAgACgCAA0AEM2AgIAAAAsgACkDCCECEMqAgIAAIAEQsYCAgAAgAiABEMiAgIAAIABBEGokgICAgABCAgsJABC3gICAAAALoAECAX8CfiOAgICAAEEQayIAJICAgIAAIAAQnICAgAACQCAAKAIAQQFHDQAgACgCBCAAKAIIEJ2AgIAACxCigICAACEBEKWAgIAAQQAQqICAgABCAhCLgICAABpB9IDAgABBExC1gICAABC8gICAACECIAAgATcDACACQYiBwIAAQQEgAEEBEL6AgIAAEIyAgIAAGiAAQRBqJICAgIAAQgILAwAAC9sBAgF+BH8CQAJAIAJBCUsNAEIAIQMgAiEEIAEhBQNAAkAgBA0AIANCCIZCDoQhAwwDC0EBIQYCQCAFLQAAIgdB3wBGDQACQCAHQVBqQf8BcUEKSQ0AAkAgB0G/f2pB/wFxQRpJDQAgB0Gff2pB/wFxQRlLDQQgB0FFaiEGDAILIAdBS2ohBgwBCyAHQVJqIQYLIANCBoYgBq1C/wGDhCEDIARBf2ohBCAFQQFqIQUMAAsLIAGtQiCGQgSEIAKtQiCGQgSEEJCAgIAAIQMLIABCADcDACAAIAM3AwgLUQIBfwF+I4CAgIAAQRBrIgMkgICAgAAgAyABIAIQ0ICAgABCASEEAkAgAygCAA0AIAAgAykDCDcDCEIAIQQLIAAgBDcDACADQRBqJICAgIAAC60BAgJ/AX4jgICAgABBEGsiAiSAgICAAEEAIQMCQANAIANBEEYNASACIANqQgI3AwAgA0EIaiEDDAALC0EBIQMCQCABQv8Bg0LMAFINACABQayBwIAAQQIgAkECELOAgIAAIAIpAwAiAUL/AYNCBFINACACKQMIIgRC/wGDQgRSDQAgACABQiCIpzYCCCAAIARCIIg+AgRBACEDCyAAIAM2AgAgAkEQaiSAgICAAAtgAgF/AX4jgICAgABBEGsiAySAgICAACADIAGtQiCGQgSENwMIIAMgAq1CIIZCBIQ3AwBBrIHAgABBAiADQQIQvoCAgAAhBCAAQgA3AwAgACAENwMIIANBEGokgICAgAALRAEBfyOAgICAAEEQayICJICAgIAAIAIgATcDCCACQQhqQQEQtoCAgAAhASAAQgA3AwAgACABNwMIIAJBEGokgICAgAAL1QMDAX8CfgJ/I4CAgIAAQeAAayIGJICAgIAAQgAhB0IAIQhBACEJAkAgASAChFANACADIASEUA0AQgAgA30gAyAEQgBTIgkbIQdCACABfSABIAJCAFMiChshCEIAIAQgA0IAUq18fSAEIAkbIQMgBCAChSEEAkACQEIAIAIgAUIAUq18fSACIAobIgJQDQACQCADUA0AIAZB0ABqIAcgAyAIIAIQ24CAgABBASEJIAYpA1ghASAGKQNQIQIMAgsgBkHAAGogByADIAhCABDbgICAACAGQTBqIAcgAyACQgAQ24CAgAAgBikDSCICIAYpAzB8IgEgAlQgBikDOEIAUnIhCSAGKQNAIQIMAQsCQCADUA0AIAZBIGogB0IAIAggAhDbgICAACAGQRBqIANCACAIIAIQ24CAgAAgBikDKCICIAYpAxB8IgEgAlQgBikDGEIAUnIhCSAGKQMgIQIMAQsgBiAHIAMgCCACENuAgIAAQQAhCSAGKQMIIQEgBikDACECC0IAIAJ9IAIgBEIAUyIKGyEIQgAgASACQgBSrXx9IAEgChsiByAEhUIAWQ0AQQEhCQsgACAINwMAIAUgCTYCACAAIAc3AwggBkHgAGokgICAgAALVwEBfgJAAkAgA0HAAHENACADRQ0BIAIgA0E/ca0i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AHR0bF9jb25maWdzX3NldGluc3RhbmNlcGVyc2lzdGVudAAAAMsAEAAIAAAA0wAQAAoAAAB0dGxfY29uZmlnc19mcm96ZW5Gcm96ZW5JbnN0YW5jZVBlcnNpc3RlbnRNaWdyYXRpbmdtdWx0aXBsaWVyX2Jwc3ByaWNlX2ZlZWRkc3RfZWlkY29uZmlybWF0aW9uc2RlZmF1bHRfbXVsdGlwbGllcl9icHNmbG9vcl9tYXJnaW5fdXNkZ2Fzb3B0aW9uc3F1b3J1bXNlbmRlcgBCARAADQAAAE8BEAAWAAAAOwEQAAcAAABlARAAEAAAAHUBEAADAAAAIwEQAA4AAAB4ARAABwAAADEBEAAKAAAAfwEQAAYAAACFARAABgAAAHByaWNlX3JhdGlvbmF0aXZlX3ByaWNlX3VzZHByaWNlX3JhdGlvX2Rlbm9taW5hdG9ydG90YWxfZ2FzX2ZlZQDnARAAEAAAANwBEAALAAAA9wEQABcAAAAOAhAADQAAAGVzdGltYXRlX2ZlZV9ieV9laWQAiwEOY29udHJhY3RtZXRhdjAAAAAAAAAABmJpbnZlcgAAAAAABTAuMC4xAAAAAAAAAAAAAAVyc3ZlcgAAAAAAAAYxLjkwLjAAAAAAAAAAAAAIcnNzZGt2ZXIAAAAvMjMuNC4wIzY3M2Q2YzRmMjM2OGQyODJkMjVkYTI5YmRhNTVjMjFiOGJlNjljYTYAAJ9kDmNvbnRyYWN0c3BlY3YwAAAAAAAAAAAAAAAHdXBncmFkZQAAAAABAAAAAAAAAA1uZXdfd2FzbV9oYXNoAAAAAAAD7gAAACAAAAAAAAAAAAAAAAAAAAAHbWlncmF0ZQAAAAABAAAAAAAAAA5taWdyYXRpb25fZGF0YQAAAAAH0AAAAA1NaWdyYXRpb25EYXRhAAAAAAAAAAAAAAAAAAAAAAAACmF1dGhvcml6ZXIAAAAAAAAAAAABAAAAEwAAAAAAAAAAAAAADV9fY29uc3RydWN0b3IAAAAAAAABAAAAAAAAAAVvd25lcgAAAAAAABMAAAAAAAAAAAAAAAAAAAAHZ2V0X2ZlZQAAAAACAAAAAAAAAANkdm4AAAAAEwAAAAAAAAAGcGFyYW1zAAAAAAfQAAAADER2bkZlZVBhcmFtcwAAAAEAAAALAAAABAAAAAAAAAAAAAAADkR2bkZlZUxpYkVycm9yAAAAAAAEAAAAAAAAAA9FaWROb3RTdXBwb3J0ZWQAAAAAAQAAAAAAAAARSW52YWxpZERWTk9wdGlvbnMAAAAAAAACAAAAAAAAAApJbnZhbGlkRmVlAAAAAAADAAAAAAAAAAhPdmVyZmxvdwAAAAQAAAAAAAABj1NldHMgVFRMIGNvbmZpZ3MgZm9yIGluc3RhbmNlIGFuZCBwZXJzaXN0ZW50IHN0b3JhZ2UuCgotIGBOb25lYCB2YWx1ZXMgcmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIGNvbmZpZyAoZGlzYWJsZXMgYXV0by1leHRlbnNpb24gZm9yIHRoYXQgdHlwZSkKLSBWYWxpZGF0ZXMgdGhhdCBgdGhyZXNob2xkIDw9IGV4dGVuZF90byA8PSBNQVhfVFRMYAoKIyBBcmd1bWVudHMKLSBgaW5zdGFuY2VgIC0gVFRMIGNvbmZpZyBmb3IgaW5zdGFuY2Ugc3RvcmFnZQotIGBwZXJzaXN0ZW50YCAtIFRUTCBjb25maWcgZm9yIHBlcnNpc3RlbnQgc3RvcmFnZQoKIyBQYW5pY3MKLSBgVHRsQ29uZmlnRnJvemVuYCBpZiBjb25maWdzIGFyZSBmcm96ZW4KLSBgSW52YWxpZFR0bENvbmZpZ2AgaWYgdmFsaWRhdGlvbiBmYWlscwAAAAAPc2V0X3R0bF9jb25maWdzAAAAAAIAAAAAAAAACGluc3RhbmNlAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAApwZXJzaXN0ZW50AAAAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAAAAAAAAAAAAEhSZXR1cm5zIHRoZSBjdXJyZW50IFRUTCBjb25maWdzIGFzIChpbnN0YW5jZV9jb25maWcsIHBlcnNpc3RlbnRfY29uZmlnKS4AAAALdHRsX2NvbmZpZ3MAAAAAAAAAAAEAAAPtAAAAAgAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAADhUGVybWFuZW50bHkgZnJlZXplcyBUVEwgY29uZmlncywgcHJldmVudGluZyBhbnkgZnV0dXJlIG1vZGlmaWNhdGlvbnMuCgpUaGlzIGlzIGlycmV2ZXJzaWJsZSBhbmQgcHJvdmlkZXMgaW1tdXRhYmlsaXR5IGd1YXJhbnRlZXMgdG8gdXNlcnMuCkVtaXRzIGBUdGxDb25maWdzRnJvemVuYCBldmVudC4KCiMgUGFuaWNzCi0gYFR0bENvbmZpZ0FscmVhZHlGcm96ZW5gIGlmIGFscmVhZHkgZnJvemVuAAAAAAAAEmZyZWV6ZV90dGxfY29uZmlncwAAAAAAAAAAAAAAAAAAAAAAJ1JldHVybnMgd2hldGhlciBUVEwgY29uZmlncyBhcmUgZnJvemVuLgAAAAAVaXNfdHRsX2NvbmZpZ3NfZnJvemVuAAAAAAAAAAAAAAEAAAABAAAAAAAAAKVFeHRlbmRzIHRoZSBpbnN0YW5jZSBUVEwuCgojIEFyZ3VtZW50cwoKKiBgdGhyZXNob2xkYCAtIFRoZSB0aHJlc2hvbGQgdG8gZXh0ZW5kIHRoZSBUVEwgKGlmIGN1cnJlbnQgVFRMIGlzIGJlbG93IHRoaXMsIGV4dGVuZCkuCiogYGV4dGVuZF90b2AgLSBUaGUgVFRMIHRvIGV4dGVuZCB0by4AAAAAAAATZXh0ZW5kX2luc3RhbmNlX3R0bAAAAAACAAAAAAAAAAl0aHJlc2hvbGQAAAAAAAAEAAAAAAAAAAlleHRlbmRfdG8AAAAAAAAEAAAAAAAAAAAAAAA+UmV0dXJucyB0aGUgY3VycmVudCBvd25lciBhZGRyZXNzLCBvciBOb25lIGlmIG5vIG93bmVyIGlzIHNldC4AAAAAAAVvd25lcgAAAAAAAAAAAAABAAAD6AAAABMAAAAAAAAAWVJldHVybnMgdGhlIHBlbmRpbmcgb3duZXIgYWRkcmVzcyBmb3IgMi1zdGVwIHRyYW5zZmVyLCBvciBOb25lIGlmIG5vIHRyYW5zZmVyIGlzIHBlbmRpbmcuAAAAAAAADXBlbmRpbmdfb3duZXIAAAAAAAAAAAAAAQAAA+gAAAATAAAAAAAAAStUcmFuc2ZlcnMgb3duZXJzaGlwIGltbWVkaWF0ZWx5IHRvIGEgbmV3IGFkZHJlc3MuCgpVc2Ugd2l0aCBjYXV0aW9uIC0gaWYgeW91IHRyYW5zZmVyIHRvIGEgd3JvbmcgYWRkcmVzcywgb3duZXJzaGlwIGlzIGxvc3QgZm9yZXZlci4KQ29uc2lkZXIgdXNpbmcgYHByb3Bvc2Vfb3duZXJzaGlwX3RyYW5zZmVyYCBpbnN0ZWFkLgoKIyBQYW5pY3MKLSBgT3duZXJOb3RTZXRgIGlmIG5vIG93bmVyIGlzIGN1cnJlbnRseSBzZXQKLSBgVHJhbnNmZXJJblByb2dyZXNzYCBpZiBhIDItc3RlcCB0cmFuc2ZlciBpcyBpbiBwcm9ncmVzcwAAAAASdHJhbnNmZXJfb3duZXJzaGlwAAAAAAABAAAAAAAAAAluZXdfb3duZXIAAAAAAAATAAAAAAAAAAAAAAJcUHJvcG9zZXMgYW4gb3duZXJzaGlwIHRyYW5zZmVyIHRvIGEgbmV3IGFkZHJlc3MuCgpUaGUgbmV3IG93bmVyIG11c3QgY2FsbCBgYWNjZXB0X293bmVyc2hpcCgpYCB3aXRoaW4gYHR0bGAgbGVkZ2Vycwp0byBjb21wbGV0ZSB0aGUgdHJhbnNmZXIuIFRoZSBwZW5kaW5nIHRyYW5zZmVyIHdpbGwgYXV0b21hdGljYWxseSBleHBpcmUgYWZ0ZXIuCgojIEFyZ3VtZW50cwotIGBuZXdfb3duZXJgIC0gVGhlIHByb3Bvc2VkIG5ldyBvd25lcgotIGB0dGxgIC0gTnVtYmVyIG9mIGxlZGdlcnMgdGhlIG5ldyBvd25lciBoYXMgdG8gYWNjZXB0LgpVc2UgYDBgIHRvIGNhbmNlbCBhIHBlbmRpbmcgdHJhbnNmZXIgKG5ld19vd25lciBtdXN0IG1hdGNoIHBlbmRpbmcpLgoKIyBQYW5pY3MKLSBgT3duZXJOb3RTZXRgIGlmIG5vIG93bmVyIGlzIGN1cnJlbnRseSBzZXQKLSBgTm9QZW5kaW5nVHJhbnNmZXJgIHdoZW4gY2FuY2VsbGluZyBhbmQgbm8gcGVuZGluZyB0cmFuc2ZlciBleGlzdHMKLSBgSW52YWxpZFR0bGAgaWYgdHRsIGV4Y2VlZHMgbWF4IFRUTAotIGBJbnZhbGlkUGVuZGluZ093bmVyYCB3aGVuIGNhbmNlbGxpbmcgd2l0aCB3cm9uZyBuZXdfb3duZXIgYWRkcmVzcwAAABpwcm9wb3NlX293bmVyc2hpcF90cmFuc2ZlcgAAAAAAAgAAAAAAAAAJbmV3X293bmVyAAAAAAAAEwAAAAAAAAADdHRsAAAAAAQAAAAAAAAAAAAAALlBY2NlcHRzIGEgcGVuZGluZyAyLXN0ZXAgb3duZXJzaGlwIHRyYW5zZmVyLgoKTXVzdCBiZSBjYWxsZWQgYnkgdGhlIHBlbmRpbmcgb3duZXIgYmVmb3JlIHRoZSBUVEwgZXhwaXJlcy4KCiMgUGFuaWNzCi0gYE5vUGVuZGluZ1RyYW5zZmVyYCBpZiB0aGVyZSBpcyBubyBwZW5kaW5nIHRyYW5zZmVyIChvciBpdCBleHBpcmVkKQAAAAAAABBhY2NlcHRfb3duZXJzaGlwAAAAAAAAAAAAAAAAAAAApFBlcm1hbmVudGx5IHJlbm91bmNlcyBvd25lcnNoaXAuCgojIFBhbmljcwotIGBPd25lck5vdFNldGAgaWYgbm8gb3duZXIgaXMgY3VycmVudGx5IHNldAotIGBUcmFuc2ZlckluUHJvZ3Jlc3NgIGlmIGEgMi1zdGVwIHRyYW5zZmVyIGlzIGluIHByb2dyZXNzIChjYW5jZWwgaXQgZmlyc3QpAAAAEnJlbm91bmNlX293bmVyc2hpcAAAAAAAAAAAAAAAAAAEAAAAHEJ1ZmZlclJlYWRlckVycm9yOiAxMDAwLTEwMDkAAAAAAAAAEUJ1ZmZlclJlYWRlckVycm9yAAAAAAAAAgAAAAAAAAANSW52YWxpZExlbmd0aAAAAAAAA+gAAAAAAAAAFUludmFsaWRBZGRyZXNzUGF5bG9hZAAAAAAAA+kAAAAEAAAAHEJ1ZmZlcldyaXRlckVycm9yOiAxMDEwLTEwMTkAAAAAAAAAEUJ1ZmZlcldyaXRlckVycm9yAAAAAAAAAQAAAAAAAAAVSW52YWxpZEFkZHJlc3NQYXlsb2FkAAAAAAAD8gAAAAQAAAAfVHRsQ29uZmlndXJhYmxlRXJyb3I6IDEwMjAtMTAyOQAAAAAAAAAAFFR0bENvbmZpZ3VyYWJsZUVycm9yAAAAAwAAAAAAAAAQSW52YWxpZFR0bENvbmZpZwAAA/wAAAAAAAAAD1R0bENvbmZpZ0Zyb3plbgAAAAP9AAAAAAAAABZUdGxDb25maWdBbHJlYWR5RnJvemVuAAAAAAP+AAAABAAAABdPd25hYmxlRXJyb3I6IDEwMzAtMTAzOQAAAAAAAAAADE93bmFibGVFcnJvcgAAAAYAAAAAAAAAE0ludmFsaWRQZW5kaW5nT3duZXIAAAAEBgAAAAAAAAAKSW52YWxpZFR0bAAAAAAEBwAAAAAAAAARTm9QZW5kaW5nVHJhbnNmZXIAAAAAAAQIAAAAAAAAAA9Pd25lckFscmVhZHlTZXQAAAAECQAAAAAAAAALT3duZXJOb3RTZXQAAAAECgAAAAAAAAASVHJhbnNmZXJJblByb2dyZXNzAAAAAAQLAAAABAAAABhCeXRlc0V4dEVycm9yOiAxMDQwLTEwNDkAAAAAAAAADUJ5dGVzRXh0RXJyb3IAAAAAAAABAAAAAAAAAA5MZW5ndGhNaXNtYXRjaAAAAAAEEAAAAAQAAAAbVXBncmFkZWFibGVFcnJvcjogMTA1MC0xMDU5AAAAAAAAAAAQVXBncmFkZWFibGVFcnJvcgAAAAEAAAAAAAAAE01pZ3JhdGlvbk5vdEFsbG93ZWQAAAAEGgAAAAQAAAAYTXVsdGlzaWdFcnJvcjogMTA2MC0xMDY5AAAAAAAAAA1NdWx0aXNpZ0Vycm9yAAAAAAAACAAAAAAAAAASQWxyZWFkeUluaXRpYWxpemVkAAAAAAQkAAAAAAAAAA1JbnZhbGlkU2lnbmVyAAAAAAAEJQAAAAAAAAAOU2lnbmF0dXJlRXJyb3IAAAAABCYAAAAAAAAAE1NpZ25lckFscmVhZHlFeGlzdHMAAAAEJwAAAAAAAAAOU2lnbmVyTm90Rm91bmQAAAAABCgAAAAAAAAAHVRvdGFsU2lnbmVyc0xlc3NUaGFuVGhyZXNob2xkAAAAAAAEKQAAAAAAAAAPVW5zb3J0ZWRTaWduZXJzAAAABCoAAAAAAAAADVplcm9UaHJlc2hvbGQAAAAAAAQrAAAABQAAADBFdmVudCBlbWl0dGVkIHdoZW4gYSBzaWduZXIgaXMgYWRkZWQgb3IgcmVtb3ZlZC4AAAAAAAAACVNpZ25lclNldAAAAAAAAAEAAAAKc2lnbmVyX3NldAAAAAAAAgAAAAAAAAAGc2lnbmVyAAAAAAPuAAAAFAAAAAEAAAAAAAAABmFjdGl2ZQAAAAAAAQAAAAAAAAACAAAABQAAADZFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNpZ25hdHVyZSB0aHJlc2hvbGQgaXMgY2hhbmdlZC4AAAAAAAAAAAAMVGhyZXNob2xkU2V0AAAAAQAAAA10aHJlc2hvbGRfc2V0AAAAAAAAAQAAAAAAAAAJdGhyZXNob2xkAAAAAAAABAAAAAAAAAACAAAAAgAAAAAAAAAAAAAAD011bHRpc2lnU3RvcmFnZQAAAAACAAAAAAAAAAAAAAAHU2lnbmVycwAAAAAAAAAAAAAAAAlUaHJlc2hvbGQAAAAAAAAFAAAAV0V2ZW50IGVtaXR0ZWQgd2hlbiBvd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQgKGJvdGggc2luZ2xlLXN0ZXAgYW5kIHR3by1zdGVwIGNvbXBsZXRpb24pLgAAAAAAAAAAFE93bmVyc2hpcFRyYW5zZmVycmVkAAAAAQAAABVvd25lcnNoaXBfdHJhbnNmZXJyZWQAAAAAAAACAAAAAAAAAAlvbGRfb3duZXIAAAAAAAATAAAAAAAAAAAAAAAJbmV3X293bmVyAAAAAAAAEwAAAAAAAAACAAAABQAAADtFdmVudCBlbWl0dGVkIHdoZW4gYSAyLXN0ZXAgb3duZXJzaGlwIHRyYW5zZmVyIGlzIHByb3Bvc2VkLgAAAAAAAAAAFU93bmVyc2hpcFRyYW5zZmVycmluZwAAAAAAAAEAAAAWb3duZXJzaGlwX3RyYW5zZmVycmluZwAAAAAAAwAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAAAAAAAN0dGwAAAAABAAAAAAAAAACAAAABQAAACpFdmVudCBlbWl0dGVkIHdoZW4gb3duZXJzaGlwIGlzIHJlbm91bmNlZC4AAAAAAAAAAAAST3duZXJzaGlwUmVub3VuY2VkAAAAAAABAAAAE293bmVyc2hpcF9yZW5vdW5jZWQAAAAAAQAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAACAAAAAgAAAAAAAAAAAAAADk93bmFibGVTdG9yYWdlAAAAAAACAAAAAAAAAAAAAAAFT3duZXIAAAAAAAAAAAAAAAAAAAxQZW5kaW5nT3duZXIAAAABAAAASVRUTCBjb25maWd1cmF0aW9uOiB0aHJlc2hvbGQgKHdoZW4gdG8gZXh0ZW5kKSBhbmQgZXh0ZW5kX3RvICh0YXJnZXQgVFRMKS4AAAAAAAAAAAAACVR0bENvbmZpZwAAAAAAAAIAAAAoVGFyZ2V0IFRUTCBhZnRlciBleHRlbnNpb24gKGluIGxlZGdlcnMpLgAAAAlleHRlbmRfdG8AAAAAAAAEAAAAM1RUTCB0aHJlc2hvbGQgdGhhdCB0cmlnZ2VycyBleHRlbnNpb24gKGluIGxlZGdlcnMpLgAAAAAJdGhyZXNob2xkAAAAAAAABAAAAAUAAAAnRXZlbnQgZW1pdHRlZCB3aGVuIFRUTCBjb25maWdzIGFyZSBzZXQuAAAAAAAAAAANVHRsQ29uZmlnc1NldAAAAAAAAAEAAAAPdHRsX2NvbmZpZ3Nfc2V0AAAAAAIAAAAAAAAACGluc3RhbmNlAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAAAAAAAKcGVyc2lzdGVudAAAAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAAIAAAAFAAAAKkV2ZW50IGVtaXR0ZWQgd2hlbiBUVEwgY29uZmlncyBhcmUgZnJvemVuLgAAAAAAAAAAABBUdGxDb25maWdzRnJvemVuAAAAAQAAABJ0dGxfY29uZmlnc19mcm96ZW4AAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAAEFR0bENvbmZpZ1N0b3JhZ2UAAAADAAAAAAAAAAAAAAAGRnJvemVuAAAAAAAAAAAAAAAAAAhJbnN0YW5jZQAAAAAAAAAAAAAAClBlcnNpc3RlbnQAAAAAAAIAAAAAAAAAAAAAABJVcGdyYWRlYWJsZVN0b3JhZ2UAAAAAAAEAAAAAAAAAAAAAAAlNaWdyYXRpbmcAAAAAAAAEAAAAFldvcmtlckVycm9yOiAxMjAwLTEyOTkAAAAAAAAAAAALV29ya2VyRXJyb3IAAAAAEwAAAAAAAAASQWRtaW5BbHJlYWR5RXhpc3RzAAAAAASwAAAAAAAAAA1BZG1pbk5vdEZvdW5kAAAAAAAEsQAAAAAAAAASQWxyZWFkeU9uQWxsb3dsaXN0AAAAAASyAAAAAAAAABFBbHJlYWR5T25EZW55bGlzdAAAAAAABLMAAAAAAAAAG0F0dGVtcHRpbmdUb1JlbW92ZU9ubHlBZG1pbgAAAAS0AAAAAAAAABREZXBvc2l0QWRkcmVzc05vdFNldAAABLUAAAAAAAAAGk1lc3NhZ2VMaWJBbHJlYWR5U3VwcG9ydGVkAAAAAAS2AAAAAAAAABZNZXNzYWdlTGliTm90U3VwcG9ydGVkAAAAAAS3AAAAAAAAABBOb0FkbWluc1Byb3ZpZGVkAAAEuAAAAAAAAAAKTm90QWxsb3dlZAAAAAAEuQAAAAAAAAAOTm90T25BbGxvd2xpc3QAAAAABLoAAAAAAAAADU5vdE9uRGVueWxpc3QAAAAAAAS7AAAAAAAAABRQYXVzZVN0YXR1c1VuY2hhbmdlZAAABLwAAAAAAAAAD1ByaWNlRmVlZE5vdFNldAAAAAS9AAAAAAAAAAxSZUluaXRpYWxpemUAAAS+AAAAAAAAAAxVbmF1dGhvcml6ZWQAAAS/AAAAAAAAABVVbnN1cHBvcnRlZE1lc3NhZ2VMaWIAAAAAAATAAAAAAAAAABJXb3JrZXJGZWVMaWJOb3RTZXQAAAAABMEAAAAAAAAADldvcmtlcklzUGF1c2VkAAAAAATCAAAABQAAAAAAAAAAAAAACFNldEFkbWluAAAAAQAAAAlzZXRfYWRtaW4AAAAAAAACAAAAAAAAAAVhZG1pbgAAAAAAABMAAAAAAAAAAAAAAAZhY3RpdmUAAAAAAAEAAAAAAAAAAgAAAAUAAAAAAAAAAAAAABZTZXRTdXBwb3J0ZWRNZXNzYWdlTGliAAAAAAABAAAAGXNldF9zdXBwb3J0ZWRfbWVzc2FnZV9saWIAAAAAAAACAAAAAAAAAAttZXNzYWdlX2xpYgAAAAATAAAAAAAAAAAAAAAJc3VwcG9ydGVkAAAAAAAAAQAAAAAAAAACAAAABQAAAAAAAAAAAAAADFNldEFsbG93bGlzdAAAAAEAAAANc2V0X2FsbG93bGlzdAAAAAAAAAIAAAAAAAAABG9hcHAAAAATAAAAAAAAAAAAAAAHYWxsb3dlZAAAAAABAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAALU2V0RGVueWxpc3QAAAAAAQAAAAxzZXRfZGVueWxpc3QAAAACAAAAAAAAAARvYXBwAAAAEwAAAAAAAAAAAAAABmRlbmllZAAAAAAAAQAAAAAAAAACAAAABQAAAAAAAAAAAAAABlBhdXNlZAAAAAAAAQAAAAZwYXVzZWQAAAAAAAEAAAAAAAAABnBhdXNlcgAAAAAAEwAAAAAAAAACAAAABQAAAAAAAAAAAAAACFVucGF1c2VkAAAAAQAAAAh1bnBhdXNlZAAAAAEAAAAAAAAACHVucGF1c2VyAAAAEwAAAAAAAAACAAAABQAAAAAAAAAAAAAAF1NldERlZmF1bHRNdWx0aXBsaWVyQnBzAAAAAAEAAAAac2V0X2RlZmF1bHRfbXVsdGlwbGllcl9icHMAAAAAAAEAAAAAAAAADm11bHRpcGxpZXJfYnBzAAAAAAAEAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAARU2V0RGVwb3NpdEFkZHJlc3MAAAAAAAABAAAAE3NldF9kZXBvc2l0X2FkZHJlc3MAAAAAAQAAAAAAAAAPZGVwb3NpdF9hZGRyZXNzAAAAABMAAAAAAAAAAgAAAAUAAAAAAAAAAAAAAAxTZXRQcmljZUZlZWQAAAABAAAADnNldF9wcmljZV9mZWVkAAAAAAABAAAAAAAAAApwcmljZV9mZWVkAAAAAAATAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAAXU2V0U3VwcG9ydGVkT3B0aW9uVHlwZXMAAAAAAQAAABpzZXRfc3VwcG9ydGVkX29wdGlvbl90eXBlcwAAAAAAAgAAAAAAAAAHZHN0X2VpZAAAAAAEAAAAAAAAAAAAAAAMb3B0aW9uX3R5cGVzAAAADgAAAAAAAAACAAAABQAAAAAAAAAAAAAAD1NldFdvcmtlckZlZUxpYgAAAAABAAAAEnNldF93b3JrZXJfZmVlX2xpYgAAAAAAAQAAAAAAAAAHZmVlX2xpYgAAAAATAAAAAAAAAAIAAAABAAAA4VBhcmFtZXRlcnMgZm9yIERWTiBmZWUgY2FsY3VsYXRpb24uCgpDb250YWlucyBhbGwgaW5wdXRzIG5lZWRlZCBieSB0aGUgZmVlIGxpYnJhcnkgdG8gY2FsY3VsYXRlIHZlcmlmaWNhdGlvbiBmZWVzCmZvciBjcm9zcy1jaGFpbiBtZXNzYWdlcy4gSW5jbHVkZXMgbWVzc2FnZSBwYXJhbWV0ZXJzLCBjb21tb24gY29uZmlndXJhdGlvbiwKYW5kIGRlc3RpbmF0aW9uLXNwZWNpZmljIHNldHRpbmdzLgAAAAAAAAAAAAAMRHZuRmVlUGFyYW1zAAAACgAAACdOdW1iZXIgb2YgYmxvY2sgY29uZmlybWF0aW9ucyByZXF1aXJlZC4AAAAADWNvbmZpcm1hdGlvbnMAAAAAAAAGAAAATERlZmF1bHQgZmVlIG11bHRpcGxpZXIgaW4gYmFzaXMgcG9pbnRzICh1c2VkIGlmIG5vIGRzdC1zcGVjaWZpYyBtdWx0aXBsaWVyKS4AAAAWZGVmYXVsdF9tdWx0aXBsaWVyX2JwcwAAAAAABAAAACtEZXN0aW5hdGlvbiBlbmRwb2ludCBJRCAoY2hhaW4gaWRlbnRpZmllcikuAAAAAAdkc3RfZWlkAAAAAAQAAAAjTWluaW11bSBmZWUgbWFyZ2luIGluIFVTRCAoc2NhbGVkKS4AAAAAEGZsb29yX21hcmdpbl91c2QAAAAKAAABED09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkRlc3RpbmF0aW9uLVNwZWNpZmljIENvbmZpZ3VyYXRpb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KR2FzIGVzdGltYXRlIGZvciB2ZXJpZmljYXRpb24gb24gZGVzdGluYXRpb24gY2hhaW4uAAAAA2dhcwAAAAAKAAAARkRlc3RpbmF0aW9uLXNwZWNpZmljIGZlZSBtdWx0aXBsaWVyIGluIGJhc2lzIHBvaW50cyAoMCA9IHVzZSBkZWZhdWx0KS4AAAAAAA5tdWx0aXBsaWVyX2JwcwAAAAAABAAAAAtEVk4gb3B0aW9ucwAAAAAHb3B0aW9ucwAAAAAOAAABED09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNvbW1vbiBDb25maWd1cmF0aW9uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClByaWNlIGZlZWQgY29udHJhY3QgYWRkcmVzcyBmb3IgZ2FzIHByaWNlIGFuZCBleGNoYW5nZSByYXRlIGRhdGEuAAAACnByaWNlX2ZlZWQAAAAAABMAAAAnTnVtYmVyIG9mIHJlcXVpcmVkIHNpZ25hdHVyZXMgKHF1b3J1bSkuAAAAAAZxdW9ydW0AAAAAAAQAAADlPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KTWVzc2FnZSBQYXJhbWV0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBPQXBwIHNlbmRlciBhZGRyZXNzLgAAAAAAAAZzZW5kZXIAAAAAABMAAAABAAAA41BhcmFtZXRlcnMgZm9yIGV4ZWN1dG9yIGZlZSBjYWxjdWxhdGlvbi4KCkNvbnRhaW5zIGFsbCBpbnB1dHMgbmVlZGVkIGJ5IHRoZSBmZWUgbGlicmFyeSB0byBjYWxjdWxhdGUgZXhlY3V0aW9uIGZlZXMKZm9yIGNyb3NzLWNoYWluIG1lc3NhZ2VzLiBJbmNsdWRlcyBtZXNzYWdlIHBhcmFtZXRlcnMsIGNvbW1vbiBjb25maWd1cmF0aW9uLAphbmQgZGVzdGluYXRpb24tc3BlY2lmaWMgc2V0dGluZ3MuAAAAAAAAAAAJRmVlUGFyYW1zAAAAAAAACwAAACZTaXplIG9mIHRoZSBtZXNzYWdlIGNhbGxkYXRhIGluIGJ5dGVzLgAAAAAADWNhbGxkYXRhX3NpemUAAAAAAAAEAAAATERlZmF1bHQgZmVlIG11bHRpcGxpZXIgaW4gYmFzaXMgcG9pbnRzICh1c2VkIGlmIG5vIGRzdC1zcGVjaWZpYyBtdWx0aXBsaWVyKS4AAAAWZGVmYXVsdF9tdWx0aXBsaWVyX2JwcwAAAAAABAAAACtEZXN0aW5hdGlvbiBlbmRwb2ludCBJRCAoY2hhaW4gaWRlbnRpZmllcikuAAAAAAdkc3RfZWlkAAAAAAQAAAAjTWluaW11bSBmZWUgbWFyZ2luIGluIFVTRCAoc2NhbGVkKS4AAAAAEGZsb29yX21hcmdpbl91c2QAAAAKAAAANkJhc2UgZ2FzIGZvciBlYWNoIGx6Q29tcG9zZSBjYWxsIG9uIGRlc3RpbmF0aW9uIGNoYWluLgAAAAAAE2x6X2NvbXBvc2VfYmFzZV9nYXMAAAAABgAAARM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpEZXN0aW5hdGlvbi1TcGVjaWZpYyBDb25maWd1cmF0aW9uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkJhc2UgZ2FzIGZvciBselJlY2VpdmUgZXhlY3V0aW9uIG9uIGRlc3RpbmF0aW9uIGNoYWluLgAAAAATbHpfcmVjZWl2ZV9iYXNlX2dhcwAAAAAGAAAARkRlc3RpbmF0aW9uLXNwZWNpZmljIGZlZSBtdWx0aXBsaWVyIGluIGJhc2lzIHBvaW50cyAoMCA9IHVzZSBkZWZhdWx0KS4AAAAAAA5tdWx0aXBsaWVyX2JwcwAAAAAABAAAACxNYXhpbXVtIG5hdGl2ZSB0b2tlbiB2YWx1ZSB0aGF0IGNhbiBiZSBzZW50LgAAAApuYXRpdmVfY2FwAAAAAAAKAAAARkVuY29kZWQgZXhlY3V0b3Igb3B0aW9ucyAobHpSZWNlaXZlIGdhcywgbHpDb21wb3NlLCBuYXRpdmVEcm9wLCBldGMuKS4AAAAAAAdvcHRpb25zAAAAAA4AAAEQPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ29tbW9uIENvbmZpZ3VyYXRpb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUHJpY2UgZmVlZCBjb250cmFjdCBhZGRyZXNzIGZvciBnYXMgcHJpY2UgYW5kIGV4Y2hhbmdlIHJhdGUgZGF0YS4AAAAKcHJpY2VfZmVlZAAAAAAAEwAAAOU9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpNZXNzYWdlIFBhcmFtZXRlcnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIE9BcHAgc2VuZGVyIGFkZHJlc3MuAAAAAAAABnNlbmRlcgAAAAAAEwAAAAEAAACER2FzIHByaWNlIGluZm9ybWF0aW9uIGZvciBhIGRlc3RpbmF0aW9uIGVuZHBvaW50LgoKQ29udGFpbnMgdGhlIGV4Y2hhbmdlIHJhdGUgYW5kIGdhcyBjb3N0cyBuZWVkZWQgZm9yIGNyb3NzLWNoYWluIGZlZSBjYWxjdWxhdGlvbnMuAAAAAAAAAAVQcmljZQAAAAAAAAMAAAA3R2FzIGNvc3QgcGVyIGJ5dGUgb2YgY2FsbGRhdGEgb24gdGhlIGRlc3RpbmF0aW9uIGNoYWluLgAAAAAMZ2FzX3Blcl9ieXRlAAAABAAAAEJHYXMgcHJpY2UgaW4gdGhlIHNtYWxsZXN0IHVuaXQgKHdlaSBmb3IgRVZNLCBzdHJvb3BzIGZvciBTdGVsbGFyKS4AAAAAABFnYXNfcHJpY2VfaW5fdW5pdAAAAAAAAAYAAACpUHJpY2UgcmF0aW8gPSAocmVtb3RlIG5hdGl2ZSB0b2tlbiBwcmljZSAvIGxvY2FsIG5hdGl2ZSB0b2tlbiBwcmljZSkgKiBQUklDRV9SQVRJT19ERU5PTUlOQVRPUi4KVXNlZCB0byBjb252ZXJ0IGRlc3RpbmF0aW9uIGNoYWluIGdhcyBjb3N0cyB0byBzb3VyY2UgY2hhaW4gbmF0aXZlIHRva2VuLgAAAAAAAAtwcmljZV9yYXRpbwAAAAAKAAAAAQAAAIBGZWUgZXN0aW1hdGlvbiByZXN1bHQgd2l0aCBkZXRhaWxlZCBicmVha2Rvd24uCgpDb250YWlucyB0aGUgY2FsY3VsYXRlZCBmZWUgYW5kIGFsbCBpbnRlcm1lZGlhdGUgdmFsdWVzIHVzZWQgaW4gdGhlIGNhbGN1bGF0aW9uLgAAAAAAAAALRmVlRXN0aW1hdGUAAAAABAAAADBTb3VyY2UgY2hhaW4gbmF0aXZlIHRva2VuIHByaWNlIGluIFVTRCAoc2NhbGVkKS4AAAAQbmF0aXZlX3ByaWNlX3VzZAAAAAoAAAAlUHJpY2UgcmF0aW8gdXNlZCBmb3IgdGhlIGNhbGN1bGF0aW9uLgAAAAAAAAtwcmljZV9yYXRpbwAAAAAKAAAAMkRlbm9taW5hdG9yIGZvciB0aGUgcHJpY2UgcmF0aW8gKHR5cGljYWxseSAxMF4yMCkuAAAAAAAXcHJpY2VfcmF0aW9fZGVub21pbmF0b3IAAAAACgAAADFUb3RhbCBnYXMgZmVlIGluIHNvdXJjZSBjaGFpbiBuYXRpdmUgdG9rZW4gdW5pdHMuAAAAAAAADXRvdGFsX2dhc19mZWUAAAAAAAALAAAAAgAAAAAAAAAAAAAADVdvcmtlclN0b3JhZ2UAAAAAAAALAAAAAAAAAAAAAAAGUGF1c2VkAAAAAAAAAAAAAAAAAA5EZXBvc2l0QWRkcmVzcwAAAAAAAAAAAAAAAAAJUHJpY2VGZWVkAAAAAAAAAAAAAAAAAAAMV29ya2VyRmVlTGliAAAAAAAAAAAAAAAURGVmYXVsdE11bHRpcGxpZXJCcHMAAAABAAAAAAAAABRTdXBwb3J0ZWRPcHRpb25UeXBlcwAAAAEAAAAEAAAAAAAAAAAAAAALTWVzc2FnZUxpYnMAAAAAAQAAAAAAAAAJQWxsb3dsaXN0AAAAAAAAAQAAABMAAAABAAAAAAAAAAhEZW55bGlzdAAAAAEAAAATAAAAAAAAAAAAAAANQWxsb3dsaXN0U2l6ZQAAAAAAAAAAAAAAAAAABkFkbWlucwAAAB4RY29udHJhY3RlbnZtZXRhdjAAAAAAAAAAFwAAAAA=";
11
+ export declare const WASM_BASE64 = "AGFzbQEAAAABjAEYYAJ+fgF+YAF+AX5gAAF+YAN+fn4BfmAEfn5+fgF+YAABf2ABfwBgAn9/AGABfwF/YAF/AX5gAn5+AX9gAABgAn5/AGABfgBgBX5/f39/AGACf34AYAJ/fwF+YAJ+fgBgA39+fgBgBH9/f38BfmADf39/AGAGf35+fn5/AGAEf35+fwBgBX9+fn5+AAKpARwBbAExAAABYQEwAAEBaQEwAAEBYgE4AAEBeAE3AAIBaQEzAAABZAFfAAMBaQE4AAEBaQE3AAEBaQE2AAABbAE2AAEBYgEwAAEBeAEwAAABbAE3AAQBeAExAAABbAEyAAABbAFfAAMBaQE1AAEBaQE0AAEBYgFqAAABbQE5AAMBbQFhAAQBdgFnAAABeAEzAAIBeAE4AAIBbAEwAAABbAE4AAABeAE1AAEDSUgFBgcIBQkKCwICBgwLBg0JBgAADg8QEAsBBwcNAQYBAgcCAgICAREACwUSARMCCwIAAA8JAgcHAgILFBQPFA8JFBUWFxcWFxcFAwEAEQYhBH8BQYCAwAALfwBBq4LAAAt/AEHPhMAAC38AQdCEwAALB84CFgZtZW1vcnkCAAdnZXRfZmVlAC4NX19jb25zdHJ1Y3RvcgA0B3VwZ3JhZGUAOAdtaWdyYXRlADoGZnJlZXplADsJaXNfZnJvemVuAD0KYXV0aG9yaXplcgA+BW93bmVyAD8NcGVuZGluZ19vd25lcgBAEnRyYW5zZmVyX293bmVyc2hpcABBGnByb3Bvc2Vfb3duZXJzaGlwX3RyYW5zZmVyAEMQYWNjZXB0X293bmVyc2hpcABJEnJlbm91bmNlX293bmVyc2hpcABLE2V4dGVuZF9pbnN0YW5jZV90dGwATA9zZXRfdHRsX2NvbmZpZ3MATQt0dGxfY29uZmlncwBQEmZyZWV6ZV90dGxfY29uZmlncwBTFWlzX3R0bF9jb25maWdzX2Zyb3plbgBUAV8DAQpfX2RhdGFfZW5kAwILX19oZWFwX2Jhc2UDAwqRSUhYAQJ/I4CAgIAAQRBrIgAkgICAgAAgAEEEahCdgICAAAJAIAAoAgRBAUcNACAAKAIIIAAoAgwQnoCAgAALQQAQn4CAgAAhASAAQRBqJICAgIAAIAFB/QFxCwwAIABBARDRgICAAAsbACAArUIghkIEhCABrUIghkIEhBCagICAABoLRwIBfwF+QQIhAQJAIAAQ24CAgAAiAkICEKKAgIAARQ0AQQEhAQJAAkAgAkICEICAgIAAp0H/AXEOAgECAAsAC0EAIQELIAELiwECAn8BfiOAgICAAEEQayIAJICAgIAAIABBBGoQnYCAgAACQCAAKAIEQQFHDQAgACgCCCAAKAIMEJ6AgIAAC0EAIQECQEEAEKGAgIAAIgJCAhCigICAAEUNAEEBIQECQAJAIAJCAhCAgICAAKdB/wFxDgIBAgALAAtBACEBCyAAQRBqJICAgIAAIAELwgECAX8BfiOAgICAAEEQayIBJICAgIAAAkACQAJAAkACQAJAIABB/wFxDgMAAQIACyABQa6EwIAAQQYQ14CAgAAgASgCAA0DIAEgASkDCBDagICAAAwCCyABQbSEwIAAQQgQ14CAgAAgASgCAA0CIAEgASkDCBDagICAAAwBCyABQbyEwIAAQQoQ14CAgAAgASgCAA0BIAEgASkDCBDagICAAAsgASkDCCECIAEpAwBQDQELAAsgAUEQaiSAgICAACACCw8AIAAgARCZgICAAEIBUQsPABCkgICAABCBgICAABoLZgIBfwF+I4CAgIAAQRBrIgAkgICAgAAgABCdgICAAAJAIAAoAgBBAUcNACAAKAIEIAAoAggQnoCAgAALIAAQpoCAgAAgACkDCCEBIAApAwBBiggQp4CAgAAgAEEQaiSAgICAACABC0oCAX8BfiOAgICAAEEQayIAJICAgIAAIAAQpoCAgAAgACkDCCEBIAApAwBBiggQp4CAgAAgARCBgICAABogAEEQaiSAgICAACABC1ABAX8jgICAgABBEGsiASSAgICAACABQQRqEJ2AgIAAAkAgASgCBEEBRw0AIAEoAgggASgCDBCegICAAAsgABCsgICAACABQRBqJICAgIAACykAAkAgAKdBAXFFDQAPCyABQfp3aq1CIIZCg4CAgOCAAXwQqoCAgAAAC0IBAX8jgICAgABBEGsiACSAgICAACAAEKmAgIAAAkAgACkDAFANAEKDgICAsIEBEKqAgIAAAAsgAEEQaiSAgICAAAuTAQIBfwJ+I4CAgIAAQRBrIgEkgICAgAAgAUEEahCdgICAAAJAIAEoAgRBAUcNACABKAIIIAEoAgwQnoCAgAALQgAhAgJAAkBBARCrgICAACID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hkIEhCADrUIghkIEhCACrUIghkIEhBCVgICAABoLewIBfwF+AkACQAJAIAGnQf8BcSICQcQARg0AIAJBCkcNAUIAIQMgAEIANwMYIAAgAUIIiDcDEAwCCyABEJGAgIAAIQMgARCSgICAACEBIAAgAzcDGCAAIAE3AxBCACEDDAELIABCg5CAgIABNwMIQgEhAwsgACADNwMAC0UCAX8BfiOAgICAAEEQayICJICAgIAAIAIgACABENaAgIAAAkAgAigCAEEBRw0AAAsgAikDCCEDIAJBEGokgICAgAAgAwsaACAArUIghkIEhCABrUIghkIEhBCWgICAAAsJABDVgICAAAALXQACQAJAIABC/wGDQs0AUg0AQYDLHkGA0h8QtYCAgABBgMseQYDSHxC2gICAAEEAEKuAgIAAQgIQooCAgAANASAAELeAgIAAQgIPCwALQoOAgICQgQEQqoCAgAAACw4AQQEgACABENyAgIAACw4AQQIgACABENyAgIAACw4AQQAgAEICEMaAgIAAC6UBAQF/I4CAgIAAQRBrIgEkgICAgAACQAJAIABC/wGDQsgAUg0AIAAQg4CAgABCgICAgHCDQoCAgICABFINACABQQRqEJ2AgIAAAkAgASgCBEEBRw0AIAEoAgggASgCDBCegICAAAsQo4CAgAAQnICAgAANAUEBELmAgIAAIAAQioCAgAAaIAFBEGokgICAgABCAg8LAAtCg4CAgMCDARCqgICAAAALDABBASAAELyAgIAAC60BAQF/I4CAgIAAQRBrIgEkgICAgAACQAJAAkAgAEL/AYNCyABSDQAgAUEEahCdgICAAAJAIAEoAgRBAUcNACABKAIIIAEoAgwQnoCAgAALEKOAgIAAQQEQn4CAgABB/QFxRQ0BIAAQi4CAgABC/wGDQgJSDQJBABC5gICAACABQRBqJICAgIAAQgIPCwALQoOAgICwgwEQqoCAgAAAC0KDgICAoIMBEKqAgIAAAAtaAQF/I4CAgIAAQRBrIgAkgICAgAAgAEEEahCdgICAAAJAIAAoAgRBAUcNACAAKAIIIAAoAgwQnoCAgAALEKOAgIAAQQBBARC8gICAACAAQRBqJICAgIAAQgILGgAgABDbgICAACABrUL/AYNCAhCQgICAABoLCQAQnICAgACtCwgAEKSAgIAACz4CAX8BfiOAgICAAEEQayIAJICAgIAAIAAQpoCAgAAgACkDACAAKQMIEK2AgIAAIQEgAEEQaiSAgICAACABCz4CAX8BfiOAgICAAEEQayIAJICAgIAAIAAQqYCAgAAgACkDACAAKQMIEK2AgIAAIQEgAEEQaiSAgICAACABC30CAX8BfiOAgICAAEEQayIBJICAgIAAAkAgAEL/AYNCzQBSDQAgAUEEahCdgICAAAJAIAEoAgRBAUcNACABKAIIIAEoAgwQnoCAgAALEKWAgIAAIQIQqICAgAAgABC3gICAACACIAAQwoCAgAAgAUEQaiSAgICAAEICDwsAC2ECAX8BfiOAgICAAEEQayICJICAgIAAQbSCwIAAQRUQsYCAgAAQx4CAgAAhAyACIAA3AwggAiABNwMAIANB3ILAgABBAiACQQIQyICAgAAQjoCAgAAaIAJBEGokgICAgAAL3QICAX8CfiOAgICAAEEgayICJICAgIAAAkACQAJAIABC/wGDQs0AUg0AIAFC/wGDQgRSDQAgAkEIahCdgICAAAJAIAIoAghBAUcNACACKAIMIAIoAhAQnoCAgAALEKWAgIAAIQMCQAJAIAFC/////w9WDQAgAkEIahCpgICAACACKQMQIQEgAikDCEGICBCngICAACABIAAQjICAgABQRQ0DEMSAgIAADAELEMWAgIAAIAFCIIinSQ0DQQEgAEIAEMaAgIAAQQEQq4CAgABCACABQoSAgIBwgyIBIAEQjYCAgAAaQeyCwIAAQRYQsYCAgAAQx4CAgAAhBCACIAE3AxggAiADNwMQIAIgADcDCCAEQYiDwIAAQQMgAkEIakEDEMiAgIAAEI6AgIAAGgsgAkEgaiSAgICAAEICDwsAC0KDgICA4IABEKqAgIAAAAtCg4CAgPCAARCqgICAAAALEwBBARCrgICAAEIAEI+AgIAAGgszAQJ+EJeAgIAAIQACQBCYgICAAEIgiCIBIABCIIgiAFQNACABpyAAp2sPCxCzgICAAAALFQAgABCrgICAACABIAIQkICAgAAaC2MDAX8BfgF/I4CAgIAAQRBrIgEkgICAgAAgASAANwMAQgIhAkEBIQMCQANAIANFDQEgA0F/aiEDIAAhAgwACwsgASACNwMIIAFBCGpBARCygICAACEAIAFBEGokgICAgAAgAAsuAAJAIAEgA0YNAAALIACtQiCGQgSEIAKtQiCGQgSEIAGtQiCGQgSEEJSAgIAAC6cBAgF/An4jgICAgABBEGsiACSAgICAACAAEJ2AgIAAAkAgACgCAEEBRw0AIAAoAgQgACgCCBCegICAAAsgABCpgICAACAAKQMIIQEgACkDAEGICBCngICAACABEIGAgIAAGiAAEKyAgIAAAkAgACgCAA0AEMqAgIAAAAsgACkDCCECEMSAgIAAIAEQt4CAgAAgAiABEMKAgIAAIABBEGokgICAgABCAgsJABCzgICAAAALoAECAX8CfiOAgICAAEEQayIAJICAgIAAIAAQnYCAgAACQCAAKAIAQQFHDQAgACgCBCAAKAIIEJ6AgIAACxClgICAACEBEKiAgIAAQQAQq4CAgABCAhCPgICAABpBoIPAgABBExCxgICAABDHgICAACECIAAgATcDACACQbSDwIAAQQEgAEEBEMiAgIAAEI6AgIAAGiAAQRBqJICAgIAAQgILMQACQCAAQv8Bg0IEUg0AIAFC/wGDQgRSDQAgAEIgiKcgAUIgiKcQnoCAgABCAg8LAAveBAEFfyOAgICAAEHQAGsiAiSAgICAACACQShqIAAQzoCAgAACQCACKAIoQQJGDQAgAkEIakEIaiACQShqQQhqIgMoAgA2AgAgAiACKQIoNwMIIAJBKGogARDOgICAACACKAIoQQJGDQAgAkEYakEIaiADKAIANgIAIAIgAikCKDcDGCACQShqEJ2AgIAAAkAgAigCKEEBRw0AIAIoAiwgAigCMBCegICAAAsQo4CAgAACQAJAAkAQoICAgAANABDFgICAACIDQYD7gAMgA0GA+4ADSRshBCACIAJBGGo2AiwgAiACQQhqNgIoQQAhAwNAIANBCEYNAwJAIAJBKGogA2ooAgAiBSgCAEEBcUUNACAFKAIIIgYgBEsNAyAFKAIEIAZLDQMLIANBBGohAwwACwtCg4CAgND/ABCqgICAAAALQoOAgIDA/wAQqoCAgAAACwJAAkAgAigCCEEBRw0AIAIoAgwgAigCEBC1gICAAAwBC0EBEKGAgIAAQgIQj4CAgAAaCwJAAkAgAigCGEEBRw0AIAIoAhwgAigCIBC2gICAAAwBC0ECEKGAgIAAQgIQj4CAgAAaCyACQShqQQhqIAJBCGpBCGooAgA2AgAgAkE8aiACQRhqQQhqKAIANgIAIAIgAikDCDcDKCACIAIpAxg3AjRB6IPAgABBDxCxgICAABDHgICAACEAIAJBKGoQz4CAgAAhASACIAJBNGoQz4CAgAA3A0ggAiABNwNAIABBjITAgABBAiACQcAAakECEMiAgIAAEI6AgIAAGiACQdAAaiSAgICAAEICDwsAC2gBAX8jgICAgABBEGsiAiSAgICAAAJAAkAgAUICUQ0AIAJBBGogARDYgICAAAJAIAIoAgRFDQAgAEECNgIADAILIAAgAikCCDcCBCAAQQE2AgAMAQsgAEEANgIACyACQRBqJICAgIAAC0MCAX8BfiOAgICAAEEQayIBJICAgIAAIAEgABDSgICAAAJAIAEoAgBBAUcNAAALIAEpAwghAiABQRBqJICAgIAAIAILxAECAn8BfiOAgICAAEHAAGsiACSAgICAACAAQQhqEJ2AgIAAAkAgACgCCEEBRw0AIAAoAgwgACgCEBCegICAAAsgAEEIahCdgICAACAAQRRqIgFBAhDRgICAACAAQTBqIABBCGoQ0oCAgAACQAJAIAAoAjANACAAKQM4IQIgAEEwaiABENKAgIAAIAAoAjBBAUcNAQsACyAAIAApAzg3AyggACACNwMgIABBIGpBAhCygICAACECIABBwABqJICAgIAAIAILdwICfwF+I4CAgIAAQRBrIgIkgICAgABBACEDAkACQCABEKGAgIAAIgRCAhCigICAAEUNACACQQRqIARCAhCAgICAABDYgICAAEEBIQMgAigCBEEBRg0BIAAgAikCCDcCBAsgACADNgIAIAJBEGokgICAgAAPCwALMAACQCABKAIAQQFHDQAgACABKAIEIAEoAggQ2YCAgAAPCyAAQgA3AwAgAEICNwMIC6oBAQF/I4CAgIAAQSBrIgAkgICAgAAgAEEMahCdgICAAAJAIAAoAgxBAUcNACAAKAIQIAAoAhQQnoCAgAALEKOAgIAAAkAQoICAgABFDQBCg4CAgOD/ABCqgICAAAALQQAQoYCAgABCAUICEJCAgIAAGkGchMCAAEESELGAgIAAEMeAgIAAQQRBACAAQRhqQQAQyICAgAAQjoCAgAAaIABBIGokgICAgABCAgsJABCggICAAK0LAwAAC9sBAgF+BH8CQAJAIAJBCUsNAEIAIQMgAiEEIAEhBQNAAkAgBA0AIANC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AAAAAA9FaWROb3RTdXBwb3J0ZWQAAAAAAQAAAAAAAAARSW52YWxpZERWTk9wdGlvbnMAAAAAAAACAAAAAAAAAApJbnZhbGlkRmVlAAAAAAADAAAAAAAAAAhPdmVyZmxvdwAAAAQAAAAAAAAAAAAAAAdnZXRfZmVlAAAAAAIAAAAAAAAAA2R2bgAAAAATAAAAAAAAAAZwYXJhbXMAAAAAB9AAAAAMRHZuRmVlUGFyYW1zAAAAAQAAAAsAAAAAAAAAAAAAAA1fX2NvbnN0cnVjdG9yAAAAAAAAAQAAAAAAAAAFb3duZXIAAAAAAAATAAAAAAAAAAAAAACVVGhlIHR5cGUgb2YgZGF0YSByZXF1aXJlZCBmb3IgbWlncmF0aW9uLgpVcGdyYWRlcyB0aGUgY29udHJhY3QgdG8gbmV3IFdBU00gYnl0ZWNvZGUuClNldHMgYSBtaWdyYXRpb24gZmxhZyB0aGF0IG11c3QgYmUgY2xlYXJlZCBieSBjYWxsaW5nIGBtaWdyYXRlYC4AAAAAAAAHdXBncmFkZQAAAAABAAAAAAAAAA1uZXdfd2FzbV9oYXNoAAAAAAAD7gAAACAAAAAAAAAAAAAAAHZSdW5zIG1pZ3JhdGlvbiBsb2dpYyBhZnRlciBhbiB1cGdyYWRlLgpDYW4gb25seSBiZSBjYWxsZWQgd2hlbiB0aGUgbWlncmF0aW9uIGZsYWcgaXMgc2V0IGJ5IGEgcHJldmlvdXMgYHVwZ3JhZGVgIGNhbGwuAAAAAAAHbWlncmF0ZQAAAAABAAAAAAAAAA5taWdyYXRpb25fZGF0YQAAAAAADgAAAAAAAAAAAAAAXlBlcm1hbmVudGx5IGZyZWV6ZXMgdGhlIGNvbnRyYWN0LCBwcmV2ZW50aW5nIGFueSBmdXR1cmUgdXBncmFkZXMuClRoaXMgYWN0aW9uIGlzIGlycmV2ZXJzaWJsZS4AAAAAAAZmcmVlemUAAAAAAAAAAAAAAAAAAAAAADtSZXR1cm5zIHdoZXRoZXIgdGhlIGNvbnRyYWN0IGlzIGZyb3plbiAodXBncmFkZXMgZGlzYWJsZWQpLgAAAAAJaXNfZnJvemVuAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAKYXV0aG9yaXplcgAAAAAAAAAAAAEAAAATAAAAAAAAAD5SZXR1cm5zIHRoZSBjdXJyZW50IG93bmVyIGFkZHJlc3MsIG9yIE5vbmUgaWYgbm8gb3duZXIgaXMgc2V0LgAAAAAABW93bmVyAAAAAAAAAAAAAAEAAAPoAAAAEwAAAAAAAABZUmV0dXJucyB0aGUgcGVuZGluZyBvd25lciBhZGRyZXNzIGZvciAyLXN0ZXAgdHJhbnNmZXIsIG9yIE5vbmUgaWYgbm8gdHJhbnNmZXIgaXMgcGVuZGluZy4AAAAAAAANcGVuZGluZ19vd25lcgAAAAAAAAAAAAABAAAD6AAAABMAAAAAAAABK1RyYW5zZmVycyBvd25lcnNoaXAgaW1tZWRpYXRlbHkgdG8gYSBuZXcgYWRkcmVzcy4KClVzZSB3aXRoIGNhdXRpb24gLSBpZiB5b3UgdHJhbnNmZXIgdG8gYSB3cm9uZyBhZGRyZXNzLCBvd25lcnNoaXAgaXMgbG9zdCBmb3JldmVyLgpDb25zaWRlciB1c2luZyBgcHJvcG9zZV9vd25lcnNoaXBfdHJhbnNmZXJgIGluc3RlYWQuCgojIFBhbmljcwotIGBPd25lck5vdFNldGAgaWYgbm8gb3duZXIgaXMgY3VycmVudGx5IHNldAotIGBUcmFuc2ZlckluUHJvZ3Jlc3NgIGlmIGEgMi1zdGVwIHRyYW5zZmVyIGlzIGluIHByb2dyZXNzAAAAABJ0cmFuc2Zlcl9vd25lcnNoaXAAAAAAAAEAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAAAAAAlxQcm9wb3NlcyBhbiBvd25lcnNoaXAgdHJhbnNmZXIgdG8gYSBuZXcgYWRkcmVzcy4KClRoZSBuZXcgb3duZXIgbXVzdCBjYWxsIGBhY2NlcHRfb3duZXJzaGlwKClgIHdpdGhpbiBgdHRsYCBsZWRnZXJzCnRvIGNvbXBsZXRlIHRoZSB0cmFuc2Zlci4gVGhlIHBlbmRpbmcgdHJhbnNmZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGV4cGlyZSBhZnRlci4KCiMgQXJndW1lbnRzCi0gYG5ld19vd25lcmAgLSBUaGUgcHJvcG9zZWQgbmV3IG93bmVyCi0gYHR0bGAgLSBOdW1iZXIgb2YgbGVkZ2VycyB0aGUgbmV3IG93bmVyIGhhcyB0byBhY2NlcHQuClVzZSBgMGAgdG8gY2FuY2VsIGEgcGVuZGluZyB0cmFuc2ZlciAobmV3X293bmVyIG11c3QgbWF0Y2ggcGVuZGluZykuCgojIFBhbmljcwotIGBPd25lck5vdFNldGAgaWYgbm8gb3duZXIgaXMgY3VycmVudGx5IHNldAotIGBOb1BlbmRpbmdUcmFuc2ZlcmAgd2hlbiBjYW5jZWxsaW5nIGFuZCBubyBwZW5kaW5nIHRyYW5zZmVyIGV4aXN0cwotIGBJbnZhbGlkVHRsYCBpZiB0dGwgZXhjZWVkcyBtYXggVFRMCi0gYEludmFsaWRQZW5kaW5nT3duZXJgIHdoZW4gY2FuY2VsbGluZyB3aXRoIHdyb25nIG5ld19vd25lciBhZGRyZXNzAAAAGnByb3Bvc2Vfb3duZXJzaGlwX3RyYW5zZmVyAAAAAAACAAAAAAAAAAluZXdfb3duZXIAAAAAAAATAAAAAAAAAAN0dGwAAAAABAAAAAAAAAAAAAAAuUFjY2VwdHMgYSBwZW5kaW5nIDItc3RlcCBvd25lcnNoaXAgdHJhbnNmZXIuCgpNdXN0IGJlIGNhbGxlZCBieSB0aGUgcGVuZGluZyBvd25lciBiZWZvcmUgdGhlIFRUTCBleHBpcmVzLgoKIyBQYW5pY3MKLSBgTm9QZW5kaW5nVHJhbnNmZXJgIGlmIHRoZXJlIGlzIG5vIHBlbmRpbmcgdHJhbnNmZXIgKG9yIGl0IGV4cGlyZWQpAAAAAAAAEGFjY2VwdF9vd25lcnNoaXAAAAAAAAAAAAAAAAAAAACkUGVybWFuZW50bHkgcmVub3VuY2VzIG93bmVyc2hpcC4KCiMgUGFuaWNzCi0gYE93bmVyTm90U2V0YCBpZiBubyBvd25lciBpcyBjdXJyZW50bHkgc2V0Ci0gYFRyYW5zZmVySW5Qcm9ncmVzc2AgaWYgYSAyLXN0ZXAgdHJhbnNmZXIgaXMgaW4gcHJvZ3Jlc3MgKGNhbmNlbCBpdCBmaXJzdCkAAAAScmVub3VuY2Vfb3duZXJzaGlwAAAAAAAAAAAAAAAAAAAAAAClRXh0ZW5kcyB0aGUgaW5zdGFuY2UgVFRMLgoKIyBBcmd1bWVudHMKCiogYHRocmVzaG9sZGAgLSBUaGUgdGhyZXNob2xkIHRvIGV4dGVuZCB0aGUgVFRMIChpZiBjdXJyZW50IFRUTCBpcyBiZWxvdyB0aGlzLCBleHRlbmQpLgoqIGBleHRlbmRfdG9gIC0gVGhlIFRUTCB0byBleHRlbmQgdG8uAAAAAAAAE2V4dGVuZF9pbnN0YW5jZV90dGwAAAAAAgAAAAAAAAAJdGhyZXNob2xkAAAAAAAABAAAAAAAAAAJZXh0ZW5kX3RvAAAAAAAABAAAAAAAAAAAAAABj1NldHMgVFRMIGNvbmZpZ3MgZm9yIGluc3RhbmNlIGFuZCBwZXJzaXN0ZW50IHN0b3JhZ2UuCgotIGBOb25lYCB2YWx1ZXMgcmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIGNvbmZpZyAoZGlzYWJsZXMgYXV0by1leHRlbnNpb24gZm9yIHRoYXQgdHlwZSkKLSBWYWxpZGF0ZXMgdGhhdCBgdGhyZXNob2xkIDw9IGV4dGVuZF90byA8PSBNQVhfVFRMYAoKIyBBcmd1bWVudHMKLSBgaW5zdGFuY2VgIC0gVFRMIGNvbmZpZyBmb3IgaW5zdGFuY2Ugc3RvcmFnZQotIGBwZXJzaXN0ZW50YCAtIFRUTCBjb25maWcgZm9yIHBlcnNpc3RlbnQgc3RvcmFnZQoKIyBQYW5pY3MKLSBgVHRsQ29uZmlnRnJvemVuYCBpZiBjb25maWdzIGFyZSBmcm96ZW4KLSBgSW52YWxpZFR0bENvbmZpZ2AgaWYgdmFsaWRhdGlvbiBmYWlscwAAAAAPc2V0X3R0bF9jb25maWdzAAAAAAIAAAAAAAAACGluc3RhbmNlAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAApwZXJzaXN0ZW50AAAAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAAAAAAAAAAAAEhSZXR1cm5zIHRoZSBjdXJyZW50IFRUTCBjb25maWdzIGFzIChpbnN0YW5jZV9jb25maWcsIHBlcnNpc3RlbnRfY29uZmlnKS4AAAALdHRsX2NvbmZpZ3MAAAAAAAAAAAEAAAPtAAAAAgAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAADhUGVybWFuZW50bHkgZnJlZXplcyBUVEwgY29uZmlncywgcHJldmVudGluZyBhbnkgZnV0dXJlIG1vZGlmaWNhdGlvbnMuCgpUaGlzIGlzIGlycmV2ZXJzaWJsZSBhbmQgcHJvdmlkZXMgaW1tdXRhYmlsaXR5IGd1YXJhbnRlZXMgdG8gdXNlcnMuCkVtaXRzIGBUdGxDb25maWdzRnJvemVuYCBldmVudC4KCiMgUGFuaWNzCi0gYFR0bENvbmZpZ0FscmVhZHlGcm96ZW5gIGlmIGFscmVhZHkgZnJvemVuAAAAAAAAEmZyZWV6ZV90dGxfY29uZmlncwAAAAAAAAAAAAAAAAAAAAAAJ1JldHVybnMgd2hldGhlciBUVEwgY29uZmlncyBhcmUgZnJvemVuLgAAAAAVaXNfdHRsX2NvbmZpZ3NfZnJvemVuAAAAAAAAAAAAAAEAAAABAAAAAQAAAOFQYXJhbWV0ZXJzIGZvciBEVk4gZmVlIGNhbGN1bGF0aW9uLgoKQ29udGFpbnMgYWxsIGlucHV0cyBuZWVkZWQgYnkgdGhlIGZlZSBsaWJyYXJ5IHRvIGNhbGN1bGF0ZSB2ZXJpZmljYXRpb24gZmVlcwpmb3IgY3Jvc3MtY2hhaW4gbWVzc2FnZXMuIEluY2x1ZGVzIG1lc3NhZ2UgcGFyYW1ldGVycywgY29tbW9uIGNvbmZpZ3VyYXRpb24sCmFuZCBkZXN0aW5hdGlvbi1zcGVjaWZpYyBzZXR0aW5ncy4AAAAAAAAAAAAADER2bkZlZVBhcmFtcwAAAAoAAAAnTnVtYmVyIG9mIGJsb2NrIGNvbmZpcm1hdGlvbnMgcmVxdWlyZWQuAAAAAA1jb25maXJtYXRpb25zAAAAAAAABgAAAExEZWZhdWx0IGZlZSBtdWx0aXBsaWVyIGluIGJhc2lzIHBvaW50cyAodXNlZCBpZiBubyBkc3Qtc3BlY2lmaWMgbXVsdGlwbGllcikuAAAAFmRlZmF1bHRfbXVsdGlwbGllcl9icHMAAAAAAAQAAAArRGVzdGluYXRpb24gZW5kcG9pbnQgSUQgKGNoYWluIGlkZW50aWZpZXIpLgAAAAAHZHN0X2VpZAAAAAAEAAAAI01pbmltdW0gZmVlIG1hcmdpbiBpbiBVU0QgKHNjYWxlZCkuAAAAABBmbG9vcl9tYXJnaW5fdXNkAAAACgAAARA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpEZXN0aW5hdGlvbi1TcGVjaWZpYyBDb25maWd1cmF0aW9uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkdhcyBlc3RpbWF0ZSBmb3IgdmVyaWZpY2F0aW9uIG9uIGRlc3RpbmF0aW9uIGNoYWluLgAAAANnYXMAAAAACgAAAEZEZXN0aW5hdGlvbi1zcGVjaWZpYyBmZWUgbXVsdGlwbGllciBpbiBiYXNpcyBwb2ludHMgKDAgPSB1c2UgZGVmYXVsdCkuAAAAAAAObXVsdGlwbGllcl9icHMAAAAAAAQAAAALRFZOIG9wdGlvbnMAAAAAB29wdGlvbnMAAAAADgAAARA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDb21tb24gQ29uZmlndXJhdGlvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpQcmljZSBmZWVkIGNvbnRyYWN0IGFkZHJlc3MgZm9yIGdhcyBwcmljZSBhbmQgZXhjaGFuZ2UgcmF0ZSBkYXRhLgAAAApwcmljZV9mZWVkAAAAAAATAAAAJ051bWJlciBvZiByZXF1aXJlZCBzaWduYXR1cmVzIChxdW9ydW0pLgAAAAAGcXVvcnVtAAAAAAAEAAAA5T09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ck1lc3NhZ2UgUGFyYW1ldGVycwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgT0FwcCBzZW5kZXIgYWRkcmVzcy4AAAAAAAAGc2VuZGVyAAAAAAATAAAAAQAAAONQYXJhbWV0ZXJzIGZvciBleGVjdXRvciBmZWUgY2FsY3VsYXRpb24uCgpDb250YWlucyBhbGwgaW5wdXRzIG5lZWRlZCBieSB0aGUgZmVlIGxpYnJhcnkgdG8gY2FsY3VsYXRlIGV4ZWN1dGlvbiBmZWVzCmZvciBjcm9zcy1jaGFpbiBtZXNzYWdlcy4gSW5jbHVkZXMgbWVzc2FnZSBwYXJhbWV0ZXJzLCBjb21tb24gY29uZmlndXJhdGlvbiwKYW5kIGRlc3RpbmF0aW9uLXNwZWNpZmljIHNldHRpbmdzLgAAAAAAAAAACUZlZVBhcmFtcwAAAAAAAAsAAAAmU2l6ZSBvZiB0aGUgbWVzc2FnZSBjYWxsZGF0YSBpbiBieXRlcy4AAAAAAA1jYWxsZGF0YV9zaXplAAAAAAAABAAAAExEZWZhdWx0IGZlZSBtdWx0aXBsaWVyIGluIGJhc2lzIHBvaW50cyAodXNlZCBpZiBubyBkc3Qtc3BlY2lmaWMgbXVsdGlwbGllcikuAAAAFmRlZmF1bHRfbXVsdGlwbGllcl9icHMAAAAAAAQAAAArRGVzdGluYXRpb24gZW5kcG9pbnQgSUQgKGNoYWluIGlkZW50aWZpZXIpLgAAAAAHZHN0X2VpZAAAAAAEAAAAI01pbmltdW0gZmVlIG1hcmdpbiBpbiBVU0QgKHNjYWxlZCkuAAAAABBmbG9vcl9tYXJnaW5fdXNkAAAACgAAADZCYXNlIGdhcyBmb3IgZWFjaCBsekNvbXBvc2UgY2FsbCBvbiBkZXN0aW5hdGlvbiBjaGFpbi4AAAAAABNsel9jb21wb3NlX2Jhc2VfZ2FzAAAAAAYAAAETPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRGVzdGluYXRpb24tU3BlY2lmaWMgQ29uZmlndXJhdGlvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpCYXNlIGdhcyBmb3IgbHpSZWNlaXZlIGV4ZWN1dGlvbiBvbiBkZXN0aW5hdGlvbiBjaGFpbi4AAAAAE2x6X3JlY2VpdmVfYmFzZV9nYXMAAAAABgAAAEZEZXN0aW5hdGlvbi1zcGVjaWZpYyBmZWUgbXVsdGlwbGllciBpbiBiYXNpcyBwb2ludHMgKDAgPSB1c2UgZGVmYXVsdCkuAAAAAAAObXVsdGlwbGllcl9icHMAAAAAAAQAAAAsTWF4aW11bSBuYXRpdmUgdG9rZW4gdmFsdWUgdGhhdCBjYW4gYmUgc2VudC4AAAAKbmF0aXZlX2NhcAAAAAAACgAAAEZFbmNvZGVkIGV4ZWN1dG9yIG9wdGlvbnMgKGx6UmVjZWl2ZSBnYXMsIGx6Q29tcG9zZSwgbmF0aXZlRHJvcCwgZXRjLikuAAAAAAAHb3B0aW9ucwAAAAAOAAABED09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNvbW1vbiBDb25maWd1cmF0aW9uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClByaWNlIGZlZWQgY29udHJhY3QgYWRkcmVzcyBmb3IgZ2FzIHByaWNlIGFuZCBleGNoYW5nZSByYXRlIGRhdGEuAAAACnByaWNlX2ZlZWQAAAAAABMAAADlPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KTWVzc2FnZSBQYXJhbWV0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBPQXBwIHNlbmRlciBhZGRyZXNzLgAAAAAAAAZzZW5kZXIAAAAAABMAAAABAAAAhEdhcyBwcmljZSBpbmZvcm1hdGlvbiBmb3IgYSBkZXN0aW5hdGlvbiBlbmRwb2ludC4KCkNvbnRhaW5zIHRoZSBleGNoYW5nZSByYXRlIGFuZCBnYXMgY29zdHMgbmVlZGVkIGZvciBjcm9zcy1jaGFpbiBmZWUgY2FsY3VsYXRpb25zLgAAAAAAAAAFUHJpY2UAAAAAAAADAAAAN0dhcyBjb3N0IHBlciBieXRlIG9mIGNhbGxkYXRhIG9uIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi4AAAAADGdhc19wZXJfYnl0ZQAAAAQAAABCR2FzIHByaWNlIGluIHRoZSBzbWFsbGVzdCB1bml0ICh3ZWkgZm9yIEVWTSwgc3Ryb29wcyBmb3IgU3RlbGxhcikuAAAAAAARZ2FzX3ByaWNlX2luX3VuaXQAAAAAAAAGAAAAqVByaWNlIHJhdGlvID0gKHJlbW90ZSBuYXRpdmUgdG9rZW4gcHJpY2UgLyBsb2NhbCBuYXRpdmUgdG9rZW4gcHJpY2UpICogUFJJQ0VfUkFUSU9fREVOT01JTkFUT1IuClVzZWQgdG8gY29udmVydCBkZXN0aW5hdGlvbiBjaGFpbiBnYXMgY29zdHMgdG8gc291cmNlIGNoYWluIG5hdGl2ZSB0b2tlbi4AAAAAAAALcHJpY2VfcmF0aW8AAAAACgAAAAEAAACARmVlIGVzdGltYXRpb24gcmVzdWx0IHdpdGggZGV0YWlsZWQgYnJlYWtkb3duLgoKQ29udGFpbnMgdGhlIGNhbGN1bGF0ZWQgZmVlIGFuZCBhbGwgaW50ZXJtZWRpYXRlIHZhbHVlcyB1c2VkIGluIHRoZSBjYWxjdWxhdGlvbi4AAAAAAAAAC0ZlZUVzdGltYXRlAAAAAAQAAAAwU291cmNlIGNoYWluIG5hdGl2ZSB0b2tlbiBwcmljZSBpbiBVU0QgKHNjYWxlZCkuAAAAEG5hdGl2ZV9wcmljZV91c2QAAAAKAAAAJVByaWNlIHJhdGlvIHVzZWQgZm9yIHRoZSBjYWxjdWxhdGlvbi4AAAAAAAALcHJpY2VfcmF0aW8AAAAACgAAADJEZW5vbWluYXRvciBmb3IgdGhlIHByaWNlIHJhdGlvICh0eXBpY2FsbHkgMTBeMjApLgAAAAAAF3ByaWNlX3JhdGlvX2Rlbm9taW5hdG9yAAAAAAoAAAAxVG90YWwgZ2FzIGZlZSBpbiBzb3VyY2UgY2hhaW4gbmF0aXZlIHRva2VuIHVuaXRzLgAAAAAAAA10b3RhbF9nYXNfZmVlAAAAAAAACwAAAAQAAAAcQnVmZmVyUmVhZGVyRXJyb3I6IDEwMDAtMTAwOQAAAAAAAAARQnVmZmVyUmVhZGVyRXJyb3IAAAAAAAACAAAAAAAAAA1JbnZhbGlkTGVuZ3RoAAAAAAAD6AAAAAAAAAAVSW52YWxpZEFkZHJlc3NQYXlsb2FkAAAAAAAD6QAAAAQAAAAcQnVmZmVyV3JpdGVyRXJyb3I6IDEwMTAtMTAxOQAAAAAAAAARQnVmZmVyV3JpdGVyRXJyb3IAAAAAAAABAAAAAAAAABVJbnZhbGlkQWRkcmVzc1BheWxvYWQAAAAAAAPyAAAABAAAAB9UdGxDb25maWd1cmFibGVFcnJvcjogMTAyMC0xMDI5AAAAAAAAAAAUVHRsQ29uZmlndXJhYmxlRXJyb3IAAAADAAAAAAAAABBJbnZhbGlkVHRsQ29uZmlnAAAD/AAAAAAAAAAPVHRsQ29uZmlnRnJvemVuAAAAA/0AAAAAAAAAFlR0bENvbmZpZ0FscmVhZHlGcm96ZW4AAAAAA/4AAAAEAAAAF093bmFibGVFcnJvcjogMTAzMC0xMDM5AAAAAAAAAAAMT3duYWJsZUVycm9yAAAABgAAAAAAAAATSW52YWxpZFBlbmRpbmdPd25lcgAAAAQGAAAAAAAAAApJbnZhbGlkVHRsAAAAAAQHAAAAAAAAABFOb1BlbmRpbmdUcmFuc2ZlcgAAAAAABAgAAAAAAAAAD093bmVyQWxyZWFkeVNldAAAAAQJAAAAAAAAAAtPd25lck5vdFNldAAAAAQKAAAAAAAAABJUcmFuc2ZlckluUHJvZ3Jlc3MAAAAABAsAAAAEAAAAGEJ5dGVzRXh0RXJyb3I6IDEwNDAtMTA0OQAAAAAAAAANQnl0ZXNFeHRFcnJvcgAAAAAAAAEAAAAAAAAADkxlbmd0aE1pc21hdGNoAAAAAAQQAAAABAAAABtVcGdyYWRlYWJsZUVycm9yOiAxMDUwLTEwNTkAAAAAAAAAABBVcGdyYWRlYWJsZUVycm9yAAAAAwAAAAAAAAAUSW52YWxpZE1pZ3JhdGlvbkRhdGEAAAQaAAAAAAAAABNNaWdyYXRpb25Ob3RBbGxvd2VkAAAABBsAAAAAAAAADlVwZ3JhZGVzRnJvemVuAAAAAAQcAAAABAAAABhNdWx0aXNpZ0Vycm9yOiAxMDYwLTEwNjkAAAAAAAAADU11bHRpc2lnRXJyb3IAAAAAAAAIAAAAAAAAABJBbHJlYWR5SW5pdGlhbGl6ZWQAAAAABCQAAAAAAAAADUludmFsaWRTaWduZXIAAAAAAAQlAAAAAAAAAA5TaWduYXR1cmVFcnJvcgAAAAAEJgAAAAAAAAATU2lnbmVyQWxyZWFkeUV4aXN0cwAAAAQnAAAAAAAAAA5TaWduZXJOb3RGb3VuZAAAAAAEKAAAAAAAAAAdVG90YWxTaWduZXJzTGVzc1RoYW5UaHJlc2hvbGQAAAAAAAQpAAAAAAAAAA9VbnNvcnRlZFNpZ25lcnMAAAAEKgAAAAAAAAANWmVyb1RocmVzaG9sZAAAAAAABCsAAAAFAAAAMEV2ZW50IGVtaXR0ZWQgd2hlbiBhIHNpZ25lciBpcyBhZGRlZCBvciByZW1vdmVkLgAAAAAAAAAJU2lnbmVyU2V0AAAAAAAAAQAAAApzaWduZXJfc2V0AAAAAAACAAAAAAAAAAZzaWduZXIAAAAAA+4AAAAUAAAAAQAAAAAAAAAGYWN0aXZlAAAAAAABAAAAAAAAAAIAAAAFAAAANkV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgc2lnbmF0dXJlIHRocmVzaG9sZCBpcyBjaGFuZ2VkLgAAAAAAAAAAAAxUaHJlc2hvbGRTZXQAAAABAAAADXRocmVzaG9sZF9zZXQAAAAAAAABAAAAAAAAAAl0aHJlc2hvbGQAAAAAAAAEAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAPTXVsdGlzaWdTdG9yYWdlAAAAAAIAAAAAAAAAAAAAAAdTaWduZXJzAAAAAAAAAAAAAAAACVRocmVzaG9sZAAAAAAAAAUAAABXRXZlbnQgZW1pdHRlZCB3aGVuIG93bmVyc2hpcCBpcyB0cmFuc2ZlcnJlZCAoYm90aCBzaW5nbGUtc3RlcCBhbmQgdHdvLXN0ZXAgY29tcGxldGlvbikuAAAAAAAAAAAUT3duZXJzaGlwVHJhbnNmZXJyZWQAAAABAAAAFW93bmVyc2hpcF90cmFuc2ZlcnJlZAAAAAAAAAIAAAAAAAAACW9sZF9vd25lcgAAAAAAABMAAAAAAAAAAAAAAAluZXdfb3duZXIAAAAAAAATAAAAAAAAAAIAAAAFAAAAO0V2ZW50IGVtaXR0ZWQgd2hlbiBhIDItc3RlcCBvd25lcnNoaXAgdHJhbnNmZXIgaXMgcHJvcG9zZWQuAAAAAAAAAAAVT3duZXJzaGlwVHJhbnNmZXJyaW5nAAAAAAAAAQAAABZvd25lcnNoaXBfdHJhbnNmZXJyaW5nAAAAAAADAAAAAAAAAAlvbGRfb3duZXIAAAAAAAATAAAAAAAAAAAAAAAJbmV3X293bmVyAAAAAAAAEwAAAAAAAAAAAAAAA3R0bAAAAAAEAAAAAAAAAAIAAAAFAAAAKkV2ZW50IGVtaXR0ZWQgd2hlbiBvd25lcnNoaXAgaXMgcmVub3VuY2VkLgAAAAAAAAAAABJPd25lcnNoaXBSZW5vdW5jZWQAAAAAAAEAAAATb3duZXJzaGlwX3Jlbm91bmNlZAAAAAABAAAAAAAAAAlvbGRfb3duZXIAAAAAAAATAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAOT3duYWJsZVN0b3JhZ2UAAAAAAAIAAAAAAAAAAAAAAAVPd25lcgAAAAAAAAAAAAAAAAAADFBlbmRpbmdPd25lcgAAAAEAAABJVFRMIGNvbmZpZ3VyYXRpb246IHRocmVzaG9sZCAod2hlbiB0byBleHRlbmQpIGFuZCBleHRlbmRfdG8gKHRhcmdldCBUVEwpLgAAAAAAAAAAAAAJVHRsQ29uZmlnAAAAAAAAAgAAAChUYXJnZXQgVFRMIGFmdGVyIGV4dGVuc2lvbiAoaW4gbGVkZ2VycykuAAAACWV4dGVuZF90bwAAAAAAAAQAAAAzVFRMIHRocmVzaG9sZCB0aGF0IHRyaWdnZXJzIGV4dGVuc2lvbiAoaW4gbGVkZ2VycykuAAAAAAl0aHJlc2hvbGQAAAAAAAAEAAAABQAAACdFdmVudCBlbWl0dGVkIHdoZW4gVFRMIGNvbmZpZ3MgYXJlIHNldC4AAAAAAAAAAA1UdGxDb25maWdzU2V0AAAAAAAAAQAAAA90dGxfY29uZmlnc19zZXQAAAAAAgAAAAAAAAAIaW5zdGFuY2UAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAAAAAAAAAAAAApwZXJzaXN0ZW50AAAAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAAAAAAAAgAAAAUAAAAqRXZlbnQgZW1pdHRlZCB3aGVuIFRUTCBjb25maWdzIGFyZSBmcm96ZW4uAAAAAAAAAAAAEFR0bENvbmZpZ3NGcm96ZW4AAAABAAAAEnR0bF9jb25maWdzX2Zyb3plbgAAAAAAAAAAAAIAAAACAAAAAAAAAAAAAAAQVHRsQ29uZmlnU3RvcmFnZQAAAAMAAAAAAAAAAAAAAAZGcm96ZW4AAAAAAAAAAAAAAAAACEluc3RhbmNlAAAAAAAAAAAAAAAKUGVyc2lzdGVudAAAAAAAAgAAAAAAAAAAAAAAElVwZ3JhZGVhYmxlU3RvcmFnZQAAAAAAAgAAAAAAAAAAAAAABkZyb3plbgAAAAAAAAAAAAAAAAAJTWlncmF0aW5nAAAAAIsBDmNvbnRyYWN0bWV0YXYwAAAAAAAAAAZiaW52ZXIAAAAAAAUwLjAuMQAAAAAAAAAAAAAFcnN2ZXIAAAAAAAAGMS45MC4wAAAAAAAAAAAACHJzc2RrdmVyAAAALzI1LjAuMSM5NDE0NDgwNzllY2NmOTU2MjdkMmZmZWExM2JhMjY4ZTMwNWE5MDc3AAAeEWNvbnRyYWN0ZW52bWV0YXYwAAAAAAAAABkAAAAAAFMOY29udHJhY3RtZXRhdjAAAAAAAAAABmNsaXZlcgAAAAAALzI1LjAuMCNhNjQ5MjVlOTM5MWMzZDNiM2VmOGU1M2RjNjBjMjNkYjllNmE4MmU0AA==";
13
12
  /**
14
13
  * Pre-computed WASM hash (SHA-256)
15
14
  * Use this when the WASM is already uploaded on-chain
16
15
  */
17
- export declare const WASM_HASH = "bc0c5db74d86951e8ef2edf14feb273b5a4eb8d038b3f0d191981161ba98d5dd";
16
+ export declare const WASM_HASH = "472a898aa11cb6faa417732d3365a9a4d69083cf978ec18a332571e5a2bc208e";
18
17
  /**
19
18
  * Get the WASM bytecode as a Buffer
20
19
  * Use this to upload the WASM to the network
@@ -34,210 +33,6 @@ export declare const DvnFeeLibError: {
34
33
  message: string;
35
34
  };
36
35
  };
37
- /**
38
- * BufferReaderError: 1000-1009
39
- */
40
- export declare const BufferReaderError: {
41
- 1000: {
42
- message: string;
43
- };
44
- 1001: {
45
- message: string;
46
- };
47
- };
48
- /**
49
- * BufferWriterError: 1010-1019
50
- */
51
- export declare const BufferWriterError: {
52
- 1010: {
53
- message: string;
54
- };
55
- };
56
- /**
57
- * TtlConfigurableError: 1020-1029
58
- */
59
- export declare const TtlConfigurableError: {
60
- 1020: {
61
- message: string;
62
- };
63
- 1021: {
64
- message: string;
65
- };
66
- 1022: {
67
- message: string;
68
- };
69
- };
70
- /**
71
- * OwnableError: 1030-1039
72
- */
73
- export declare const OwnableError: {
74
- 1030: {
75
- message: string;
76
- };
77
- 1031: {
78
- message: string;
79
- };
80
- 1032: {
81
- message: string;
82
- };
83
- 1033: {
84
- message: string;
85
- };
86
- 1034: {
87
- message: string;
88
- };
89
- 1035: {
90
- message: string;
91
- };
92
- };
93
- /**
94
- * BytesExtError: 1040-1049
95
- */
96
- export declare const BytesExtError: {
97
- 1040: {
98
- message: string;
99
- };
100
- };
101
- /**
102
- * UpgradeableError: 1050-1059
103
- */
104
- export declare const UpgradeableError: {
105
- 1050: {
106
- message: string;
107
- };
108
- };
109
- /**
110
- * MultisigError: 1060-1069
111
- */
112
- export declare const MultisigError: {
113
- 1060: {
114
- message: string;
115
- };
116
- 1061: {
117
- message: string;
118
- };
119
- 1062: {
120
- message: string;
121
- };
122
- 1063: {
123
- message: string;
124
- };
125
- 1064: {
126
- message: string;
127
- };
128
- 1065: {
129
- message: string;
130
- };
131
- 1066: {
132
- message: string;
133
- };
134
- 1067: {
135
- message: string;
136
- };
137
- };
138
- export type MultisigStorage = {
139
- tag: "Signers";
140
- values: void;
141
- } | {
142
- tag: "Threshold";
143
- values: void;
144
- };
145
- export type OwnableStorage = {
146
- tag: "Owner";
147
- values: void;
148
- } | {
149
- tag: "PendingOwner";
150
- values: void;
151
- };
152
- /**
153
- * TTL configuration: threshold (when to extend) and extend_to (target TTL).
154
- */
155
- export interface TtlConfig {
156
- /**
157
- * Target TTL after extension (in ledgers).
158
- */
159
- extend_to: u32;
160
- /**
161
- * TTL threshold that triggers extension (in ledgers).
162
- */
163
- threshold: u32;
164
- }
165
- export type TtlConfigStorage = {
166
- tag: "Frozen";
167
- values: void;
168
- } | {
169
- tag: "Instance";
170
- values: void;
171
- } | {
172
- tag: "Persistent";
173
- values: void;
174
- };
175
- export type UpgradeableStorage = {
176
- tag: "Migrating";
177
- values: void;
178
- };
179
- /**
180
- * WorkerError: 1200-1299
181
- */
182
- export declare const WorkerError: {
183
- 1200: {
184
- message: string;
185
- };
186
- 1201: {
187
- message: string;
188
- };
189
- 1202: {
190
- message: string;
191
- };
192
- 1203: {
193
- message: string;
194
- };
195
- 1204: {
196
- message: string;
197
- };
198
- 1205: {
199
- message: string;
200
- };
201
- 1206: {
202
- message: string;
203
- };
204
- 1207: {
205
- message: string;
206
- };
207
- 1208: {
208
- message: string;
209
- };
210
- 1209: {
211
- message: string;
212
- };
213
- 1210: {
214
- message: string;
215
- };
216
- 1211: {
217
- message: string;
218
- };
219
- 1212: {
220
- message: string;
221
- };
222
- 1213: {
223
- message: string;
224
- };
225
- 1214: {
226
- message: string;
227
- };
228
- 1215: {
229
- message: string;
230
- };
231
- 1216: {
232
- message: string;
233
- };
234
- 1217: {
235
- message: string;
236
- };
237
- 1218: {
238
- message: string;
239
- };
240
- };
241
36
  /**
242
37
  * Parameters for DVN fee calculation.
243
38
  *
@@ -397,47 +192,187 @@ export interface FeeEstimate {
397
192
  */
398
193
  price_ratio_denominator: u128;
399
194
  /**
400
- * Total gas fee in source chain native token units.
195
+ * Total gas fee in source chain native token units.
196
+ */
197
+ total_gas_fee: i128;
198
+ }
199
+ /**
200
+ * BufferReaderError: 1000-1009
201
+ */
202
+ export declare const BufferReaderError: {
203
+ 1000: {
204
+ message: string;
205
+ };
206
+ 1001: {
207
+ message: string;
208
+ };
209
+ };
210
+ /**
211
+ * BufferWriterError: 1010-1019
212
+ */
213
+ export declare const BufferWriterError: {
214
+ 1010: {
215
+ message: string;
216
+ };
217
+ };
218
+ /**
219
+ * TtlConfigurableError: 1020-1029
220
+ */
221
+ export declare const TtlConfigurableError: {
222
+ 1020: {
223
+ message: string;
224
+ };
225
+ 1021: {
226
+ message: string;
227
+ };
228
+ 1022: {
229
+ message: string;
230
+ };
231
+ };
232
+ /**
233
+ * OwnableError: 1030-1039
234
+ */
235
+ export declare const OwnableError: {
236
+ 1030: {
237
+ message: string;
238
+ };
239
+ 1031: {
240
+ message: string;
241
+ };
242
+ 1032: {
243
+ message: string;
244
+ };
245
+ 1033: {
246
+ message: string;
247
+ };
248
+ 1034: {
249
+ message: string;
250
+ };
251
+ 1035: {
252
+ message: string;
253
+ };
254
+ };
255
+ /**
256
+ * BytesExtError: 1040-1049
257
+ */
258
+ export declare const BytesExtError: {
259
+ 1040: {
260
+ message: string;
261
+ };
262
+ };
263
+ /**
264
+ * UpgradeableError: 1050-1059
265
+ */
266
+ export declare const UpgradeableError: {
267
+ 1050: {
268
+ message: string;
269
+ };
270
+ 1051: {
271
+ message: string;
272
+ };
273
+ 1052: {
274
+ message: string;
275
+ };
276
+ };
277
+ /**
278
+ * MultisigError: 1060-1069
279
+ */
280
+ export declare const MultisigError: {
281
+ 1060: {
282
+ message: string;
283
+ };
284
+ 1061: {
285
+ message: string;
286
+ };
287
+ 1062: {
288
+ message: string;
289
+ };
290
+ 1063: {
291
+ message: string;
292
+ };
293
+ 1064: {
294
+ message: string;
295
+ };
296
+ 1065: {
297
+ message: string;
298
+ };
299
+ 1066: {
300
+ message: string;
301
+ };
302
+ 1067: {
303
+ message: string;
304
+ };
305
+ };
306
+ export type MultisigStorage = {
307
+ tag: "Signers";
308
+ values: void;
309
+ } | {
310
+ tag: "Threshold";
311
+ values: void;
312
+ };
313
+ export type OwnableStorage = {
314
+ tag: "Owner";
315
+ values: void;
316
+ } | {
317
+ tag: "PendingOwner";
318
+ values: void;
319
+ };
320
+ /**
321
+ * TTL configuration: threshold (when to extend) and extend_to (target TTL).
322
+ */
323
+ export interface TtlConfig {
324
+ /**
325
+ * Target TTL after extension (in ledgers).
326
+ */
327
+ extend_to: u32;
328
+ /**
329
+ * TTL threshold that triggers extension (in ledgers).
401
330
  */
402
- total_gas_fee: i128;
331
+ threshold: u32;
403
332
  }
404
- export type WorkerStorage = {
405
- tag: "Paused";
406
- values: void;
407
- } | {
408
- tag: "DepositAddress";
409
- values: void;
410
- } | {
411
- tag: "PriceFeed";
412
- values: void;
413
- } | {
414
- tag: "WorkerFeeLib";
333
+ export type TtlConfigStorage = {
334
+ tag: "Frozen";
415
335
  values: void;
416
336
  } | {
417
- tag: "DefaultMultiplierBps";
337
+ tag: "Instance";
418
338
  values: void;
419
339
  } | {
420
- tag: "SupportedOptionTypes";
421
- values: readonly [u32];
422
- } | {
423
- tag: "MessageLibs";
340
+ tag: "Persistent";
424
341
  values: void;
425
- } | {
426
- tag: "Allowlist";
427
- values: readonly [string];
428
- } | {
429
- tag: "Denylist";
430
- values: readonly [string];
431
- } | {
432
- tag: "AllowlistSize";
342
+ };
343
+ export type UpgradeableStorage = {
344
+ tag: "Frozen";
433
345
  values: void;
434
346
  } | {
435
- tag: "Admins";
347
+ tag: "Migrating";
436
348
  values: void;
437
349
  };
438
350
  export interface Client {
351
+ /**
352
+ * Construct and simulate a get_fee 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.
353
+ */
354
+ get_fee: ({ dvn, params }: {
355
+ dvn: string;
356
+ params: DvnFeeParams;
357
+ }, txnOptions?: {
358
+ /**
359
+ * The fee to pay for the transaction. Default: BASE_FEE
360
+ */
361
+ fee?: number;
362
+ /**
363
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
364
+ */
365
+ timeoutInSeconds?: number;
366
+ /**
367
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
368
+ */
369
+ simulate?: boolean;
370
+ }) => Promise<AssembledTransaction<i128>>;
439
371
  /**
440
372
  * Construct and simulate a upgrade 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.
373
+ * The type of data required for migration.
374
+ * Upgrades the contract to new WASM bytecode.
375
+ * Sets a migration flag that must be cleared by calling `migrate`.
441
376
  */
442
377
  upgrade: ({ new_wasm_hash }: {
443
378
  new_wasm_hash: Buffer;
@@ -457,9 +392,11 @@ export interface Client {
457
392
  }) => Promise<AssembledTransaction<null>>;
458
393
  /**
459
394
  * Construct and simulate a migrate 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.
395
+ * Runs migration logic after an upgrade.
396
+ * Can only be called when the migration flag is set by a previous `upgrade` call.
460
397
  */
461
398
  migrate: ({ migration_data }: {
462
- migration_data: MigrationData;
399
+ migration_data: Buffer;
463
400
  }, txnOptions?: {
464
401
  /**
465
402
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -475,9 +412,11 @@ export interface Client {
475
412
  simulate?: boolean;
476
413
  }) => Promise<AssembledTransaction<null>>;
477
414
  /**
478
- * 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.
415
+ * Construct and simulate a freeze 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.
416
+ * Permanently freezes the contract, preventing any future upgrades.
417
+ * This action is irreversible.
479
418
  */
480
- authorizer: (txnOptions?: {
419
+ freeze: (txnOptions?: {
481
420
  /**
482
421
  * The fee to pay for the transaction. Default: BASE_FEE
483
422
  */
@@ -490,14 +429,12 @@ export interface Client {
490
429
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
491
430
  */
492
431
  simulate?: boolean;
493
- }) => Promise<AssembledTransaction<string>>;
432
+ }) => Promise<AssembledTransaction<null>>;
494
433
  /**
495
- * Construct and simulate a get_fee 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.
434
+ * Construct and simulate a is_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.
435
+ * Returns whether the contract is frozen (upgrades disabled).
496
436
  */
497
- get_fee: ({ dvn, params }: {
498
- dvn: string;
499
- params: DvnFeeParams;
500
- }, txnOptions?: {
437
+ is_frozen: (txnOptions?: {
501
438
  /**
502
439
  * The fee to pay for the transaction. Default: BASE_FEE
503
440
  */
@@ -510,26 +447,11 @@ export interface Client {
510
447
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
511
448
  */
512
449
  simulate?: boolean;
513
- }) => Promise<AssembledTransaction<i128>>;
450
+ }) => Promise<AssembledTransaction<boolean>>;
514
451
  /**
515
- * 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.
516
- * Sets TTL configs for instance and persistent storage.
517
- *
518
- * - `None` values remove the corresponding config (disables auto-extension for that type)
519
- * - Validates that `threshold <= extend_to <= MAX_TTL`
520
- *
521
- * # Arguments
522
- * - `instance` - TTL config for instance storage
523
- * - `persistent` - TTL config for persistent storage
524
- *
525
- * # Panics
526
- * - `TtlConfigFrozen` if configs are frozen
527
- * - `InvalidTtlConfig` if validation fails
452
+ * 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.
528
453
  */
529
- set_ttl_configs: ({ instance, persistent }: {
530
- instance: Option<TtlConfig>;
531
- persistent: Option<TtlConfig>;
532
- }, txnOptions?: {
454
+ authorizer: (txnOptions?: {
533
455
  /**
534
456
  * The fee to pay for the transaction. Default: BASE_FEE
535
457
  */
@@ -542,12 +464,12 @@ export interface Client {
542
464
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
543
465
  */
544
466
  simulate?: boolean;
545
- }) => Promise<AssembledTransaction<null>>;
467
+ }) => Promise<AssembledTransaction<string>>;
546
468
  /**
547
- * 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.
548
- * Returns the current TTL configs as (instance_config, persistent_config).
469
+ * 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.
470
+ * Returns the current owner address, or None if no owner is set.
549
471
  */
550
- ttl_configs: (txnOptions?: {
472
+ owner: (txnOptions?: {
551
473
  /**
552
474
  * The fee to pay for the transaction. Default: BASE_FEE
553
475
  */
@@ -560,18 +482,12 @@ export interface Client {
560
482
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
561
483
  */
562
484
  simulate?: boolean;
563
- }) => Promise<AssembledTransaction<readonly [Option<TtlConfig>, Option<TtlConfig>]>>;
485
+ }) => Promise<AssembledTransaction<Option<string>>>;
564
486
  /**
565
- * 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.
566
- * Permanently freezes TTL configs, preventing any future modifications.
567
- *
568
- * This is irreversible and provides immutability guarantees to users.
569
- * Emits `TtlConfigsFrozen` event.
570
- *
571
- * # Panics
572
- * - `TtlConfigAlreadyFrozen` if already frozen
487
+ * 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.
488
+ * Returns the pending owner address for 2-step transfer, or None if no transfer is pending.
573
489
  */
574
- freeze_ttl_configs: (txnOptions?: {
490
+ pending_owner: (txnOptions?: {
575
491
  /**
576
492
  * The fee to pay for the transaction. Default: BASE_FEE
577
493
  */
@@ -584,12 +500,21 @@ export interface Client {
584
500
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
585
501
  */
586
502
  simulate?: boolean;
587
- }) => Promise<AssembledTransaction<null>>;
503
+ }) => Promise<AssembledTransaction<Option<string>>>;
588
504
  /**
589
- * 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.
590
- * Returns whether TTL configs are frozen.
505
+ * 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.
506
+ * Transfers ownership immediately to a new address.
507
+ *
508
+ * Use with caution - if you transfer to a wrong address, ownership is lost forever.
509
+ * Consider using `propose_ownership_transfer` instead.
510
+ *
511
+ * # Panics
512
+ * - `OwnerNotSet` if no owner is currently set
513
+ * - `TransferInProgress` if a 2-step transfer is in progress
591
514
  */
592
- is_ttl_configs_frozen: (txnOptions?: {
515
+ transfer_ownership: ({ new_owner }: {
516
+ new_owner: string;
517
+ }, txnOptions?: {
593
518
  /**
594
519
  * The fee to pay for the transaction. Default: BASE_FEE
595
520
  */
@@ -602,19 +527,28 @@ export interface Client {
602
527
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
603
528
  */
604
529
  simulate?: boolean;
605
- }) => Promise<AssembledTransaction<boolean>>;
530
+ }) => Promise<AssembledTransaction<null>>;
606
531
  /**
607
- * 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.
608
- * Extends the instance TTL.
532
+ * 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.
533
+ * Proposes an ownership transfer to a new address.
534
+ *
535
+ * The new owner must call `accept_ownership()` within `ttl` ledgers
536
+ * to complete the transfer. The pending transfer will automatically expire after.
609
537
  *
610
538
  * # Arguments
539
+ * - `new_owner` - The proposed new owner
540
+ * - `ttl` - Number of ledgers the new owner has to accept.
541
+ * Use `0` to cancel a pending transfer (new_owner must match pending).
611
542
  *
612
- * * `threshold` - The threshold to extend the TTL (if current TTL is below this, extend).
613
- * * `extend_to` - The TTL to extend to.
543
+ * # Panics
544
+ * - `OwnerNotSet` if no owner is currently set
545
+ * - `NoPendingTransfer` when cancelling and no pending transfer exists
546
+ * - `InvalidTtl` if ttl exceeds max TTL
547
+ * - `InvalidPendingOwner` when cancelling with wrong new_owner address
614
548
  */
615
- extend_instance_ttl: ({ threshold, extend_to }: {
616
- threshold: u32;
617
- extend_to: u32;
549
+ propose_ownership_transfer: ({ new_owner, ttl }: {
550
+ new_owner: string;
551
+ ttl: u32;
618
552
  }, txnOptions?: {
619
553
  /**
620
554
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -630,10 +564,15 @@ export interface Client {
630
564
  simulate?: boolean;
631
565
  }) => Promise<AssembledTransaction<null>>;
632
566
  /**
633
- * 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.
634
- * Returns the current owner address, or None if no owner is set.
567
+ * 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.
568
+ * Accepts a pending 2-step ownership transfer.
569
+ *
570
+ * Must be called by the pending owner before the TTL expires.
571
+ *
572
+ * # Panics
573
+ * - `NoPendingTransfer` if there is no pending transfer (or it expired)
635
574
  */
636
- owner: (txnOptions?: {
575
+ accept_ownership: (txnOptions?: {
637
576
  /**
638
577
  * The fee to pay for the transaction. Default: BASE_FEE
639
578
  */
@@ -646,12 +585,16 @@ export interface Client {
646
585
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
647
586
  */
648
587
  simulate?: boolean;
649
- }) => Promise<AssembledTransaction<Option<string>>>;
588
+ }) => Promise<AssembledTransaction<null>>;
650
589
  /**
651
- * 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.
652
- * Returns the pending owner address for 2-step transfer, or None if no transfer is pending.
590
+ * 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.
591
+ * Permanently renounces ownership.
592
+ *
593
+ * # Panics
594
+ * - `OwnerNotSet` if no owner is currently set
595
+ * - `TransferInProgress` if a 2-step transfer is in progress (cancel it first)
653
596
  */
654
- pending_owner: (txnOptions?: {
597
+ renounce_ownership: (txnOptions?: {
655
598
  /**
656
599
  * The fee to pay for the transaction. Default: BASE_FEE
657
600
  */
@@ -664,20 +607,19 @@ export interface Client {
664
607
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
665
608
  */
666
609
  simulate?: boolean;
667
- }) => Promise<AssembledTransaction<Option<string>>>;
610
+ }) => Promise<AssembledTransaction<null>>;
668
611
  /**
669
- * 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.
670
- * Transfers ownership immediately to a new address.
612
+ * 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.
613
+ * Extends the instance TTL.
671
614
  *
672
- * Use with caution - if you transfer to a wrong address, ownership is lost forever.
673
- * Consider using `propose_ownership_transfer` instead.
615
+ * # Arguments
674
616
  *
675
- * # Panics
676
- * - `OwnerNotSet` if no owner is currently set
677
- * - `TransferInProgress` if a 2-step transfer is in progress
617
+ * * `threshold` - The threshold to extend the TTL (if current TTL is below this, extend).
618
+ * * `extend_to` - The TTL to extend to.
678
619
  */
679
- transfer_ownership: ({ new_owner }: {
680
- new_owner: string;
620
+ extend_instance_ttl: ({ threshold, extend_to }: {
621
+ threshold: u32;
622
+ extend_to: u32;
681
623
  }, txnOptions?: {
682
624
  /**
683
625
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -693,26 +635,23 @@ export interface Client {
693
635
  simulate?: boolean;
694
636
  }) => Promise<AssembledTransaction<null>>;
695
637
  /**
696
- * 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.
697
- * Proposes an ownership transfer to a new address.
638
+ * 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.
639
+ * Sets TTL configs for instance and persistent storage.
698
640
  *
699
- * The new owner must call `accept_ownership()` within `ttl` ledgers
700
- * to complete the transfer. The pending transfer will automatically expire after.
641
+ * - `None` values remove the corresponding config (disables auto-extension for that type)
642
+ * - Validates that `threshold <= extend_to <= MAX_TTL`
701
643
  *
702
644
  * # Arguments
703
- * - `new_owner` - The proposed new owner
704
- * - `ttl` - Number of ledgers the new owner has to accept.
705
- * Use `0` to cancel a pending transfer (new_owner must match pending).
645
+ * - `instance` - TTL config for instance storage
646
+ * - `persistent` - TTL config for persistent storage
706
647
  *
707
648
  * # Panics
708
- * - `OwnerNotSet` if no owner is currently set
709
- * - `NoPendingTransfer` when cancelling and no pending transfer exists
710
- * - `InvalidTtl` if ttl exceeds max TTL
711
- * - `InvalidPendingOwner` when cancelling with wrong new_owner address
649
+ * - `TtlConfigFrozen` if configs are frozen
650
+ * - `InvalidTtlConfig` if validation fails
712
651
  */
713
- propose_ownership_transfer: ({ new_owner, ttl }: {
714
- new_owner: string;
715
- ttl: u32;
652
+ set_ttl_configs: ({ instance, persistent }: {
653
+ instance: Option<TtlConfig>;
654
+ persistent: Option<TtlConfig>;
716
655
  }, txnOptions?: {
717
656
  /**
718
657
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -728,15 +667,34 @@ export interface Client {
728
667
  simulate?: boolean;
729
668
  }) => Promise<AssembledTransaction<null>>;
730
669
  /**
731
- * 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.
732
- * Accepts a pending 2-step ownership transfer.
670
+ * 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.
671
+ * Returns the current TTL configs as (instance_config, persistent_config).
672
+ */
673
+ ttl_configs: (txnOptions?: {
674
+ /**
675
+ * The fee to pay for the transaction. Default: BASE_FEE
676
+ */
677
+ fee?: number;
678
+ /**
679
+ * The maximum amount of time to wait for the transaction to complete. Default: DEFAULT_TIMEOUT
680
+ */
681
+ timeoutInSeconds?: number;
682
+ /**
683
+ * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
684
+ */
685
+ simulate?: boolean;
686
+ }) => Promise<AssembledTransaction<readonly [Option<TtlConfig>, Option<TtlConfig>]>>;
687
+ /**
688
+ * 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.
689
+ * Permanently freezes TTL configs, preventing any future modifications.
733
690
  *
734
- * Must be called by the pending owner before the TTL expires.
691
+ * This is irreversible and provides immutability guarantees to users.
692
+ * Emits `TtlConfigsFrozen` event.
735
693
  *
736
694
  * # Panics
737
- * - `NoPendingTransfer` if there is no pending transfer (or it expired)
695
+ * - `TtlConfigAlreadyFrozen` if already frozen
738
696
  */
739
- accept_ownership: (txnOptions?: {
697
+ freeze_ttl_configs: (txnOptions?: {
740
698
  /**
741
699
  * The fee to pay for the transaction. Default: BASE_FEE
742
700
  */
@@ -751,14 +709,10 @@ export interface Client {
751
709
  simulate?: boolean;
752
710
  }) => Promise<AssembledTransaction<null>>;
753
711
  /**
754
- * 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.
755
- * Permanently renounces ownership.
756
- *
757
- * # Panics
758
- * - `OwnerNotSet` if no owner is currently set
759
- * - `TransferInProgress` if a 2-step transfer is in progress (cancel it first)
712
+ * 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.
713
+ * Returns whether TTL configs are frozen.
760
714
  */
761
- renounce_ownership: (txnOptions?: {
715
+ is_ttl_configs_frozen: (txnOptions?: {
762
716
  /**
763
717
  * The fee to pay for the transaction. Default: BASE_FEE
764
718
  */
@@ -771,7 +725,7 @@ export interface Client {
771
725
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
772
726
  */
773
727
  simulate?: boolean;
774
- }) => Promise<AssembledTransaction<null>>;
728
+ }) => Promise<AssembledTransaction<boolean>>;
775
729
  }
776
730
  export declare class Client extends ContractClient {
777
731
  readonly options: ContractClientOptions;
@@ -791,20 +745,22 @@ export declare class Client extends ContractClient {
791
745
  }): Promise<AssembledTransaction<T>>;
792
746
  constructor(options: ContractClientOptions);
793
747
  readonly fromJSON: {
748
+ get_fee: (json: string) => AssembledTransaction<bigint>;
794
749
  upgrade: (json: string) => AssembledTransaction<null>;
795
750
  migrate: (json: string) => AssembledTransaction<null>;
751
+ freeze: (json: string) => AssembledTransaction<null>;
752
+ is_frozen: (json: string) => AssembledTransaction<boolean>;
796
753
  authorizer: (json: string) => AssembledTransaction<string>;
797
- get_fee: (json: string) => AssembledTransaction<bigint>;
798
- set_ttl_configs: (json: string) => AssembledTransaction<null>;
799
- ttl_configs: (json: string) => AssembledTransaction<readonly [Option<TtlConfig>, Option<TtlConfig>]>;
800
- freeze_ttl_configs: (json: string) => AssembledTransaction<null>;
801
- is_ttl_configs_frozen: (json: string) => AssembledTransaction<boolean>;
802
- extend_instance_ttl: (json: string) => AssembledTransaction<null>;
803
754
  owner: (json: string) => AssembledTransaction<Option<string>>;
804
755
  pending_owner: (json: string) => AssembledTransaction<Option<string>>;
805
756
  transfer_ownership: (json: string) => AssembledTransaction<null>;
806
757
  propose_ownership_transfer: (json: string) => AssembledTransaction<null>;
807
758
  accept_ownership: (json: string) => AssembledTransaction<null>;
808
759
  renounce_ownership: (json: string) => AssembledTransaction<null>;
760
+ extend_instance_ttl: (json: string) => AssembledTransaction<null>;
761
+ set_ttl_configs: (json: string) => AssembledTransaction<null>;
762
+ ttl_configs: (json: string) => AssembledTransaction<readonly [Option<TtlConfig>, Option<TtlConfig>]>;
763
+ freeze_ttl_configs: (json: string) => AssembledTransaction<null>;
764
+ is_ttl_configs_frozen: (json: string) => AssembledTransaction<boolean>;
809
765
  };
810
766
  }