@layerzerolabs/protocol-stellar-v2 0.2.20 → 0.2.22

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 (198) hide show
  1. package/.turbo/turbo-build.log +783 -802
  2. package/.turbo/turbo-lint.log +320 -157
  3. package/.turbo/turbo-test.log +1414 -1457
  4. package/Cargo.lock +109 -108
  5. package/Cargo.toml +32 -18
  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 +2 -2
  9. package/contracts/common-macros/src/lib.rs +27 -10
  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/snapshots/common_macros__tests__auth__snapshot_generated_multisig_code.snap +6 -12
  13. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_ownable_code.snap +12 -17
  14. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ttl_configurable__snapshot_generated_ttl_configurable_code.snap +2 -7
  15. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__upgradeable__snapshot_generated_upgradeable_code.snap +20 -9
  16. package/contracts/common-macros/src/tests/upgradeable.rs +26 -4
  17. package/contracts/common-macros/src/ttl_configurable.rs +2 -10
  18. package/contracts/common-macros/src/ttl_extendable.rs +2 -10
  19. package/contracts/common-macros/src/upgradeable.rs +56 -15
  20. package/contracts/common-macros/src/utils.rs +0 -9
  21. package/contracts/endpoint-v2/src/lib.rs +3 -2
  22. package/contracts/endpoint-v2/src/tests/endpoint_v2/clear.rs +2 -2
  23. package/contracts/endpoint-v2/src/tests/endpoint_v2/lz_receive_alert.rs +3 -3
  24. package/contracts/endpoint-v2/src/tests/endpoint_v2/send.rs +4 -4
  25. package/contracts/endpoint-v2/src/tests/endpoint_v2/set_delegate.rs +17 -5
  26. package/contracts/endpoint-v2/src/tests/endpoint_v2/set_zro.rs +4 -4
  27. package/contracts/endpoint-v2/src/tests/endpoint_v2/verify.rs +2 -2
  28. package/contracts/endpoint-v2/src/tests/message_lib_manager/register_library.rs +2 -2
  29. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_lib_timeout.rs +6 -6
  30. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_library.rs +67 -37
  31. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_send_library.rs +5 -5
  32. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library.rs +44 -54
  33. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library_timeout.rs +7 -7
  34. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_send_library.rs +8 -8
  35. package/contracts/endpoint-v2/src/tests/messaging_channel/burn.rs +3 -3
  36. package/contracts/endpoint-v2/src/tests/messaging_channel/nilify.rs +4 -4
  37. package/contracts/endpoint-v2/src/tests/messaging_channel/skip.rs +3 -3
  38. package/contracts/endpoint-v2/src/tests/messaging_composer/clear_compose.rs +2 -2
  39. package/contracts/endpoint-v2/src/tests/messaging_composer/lz_compose_alert.rs +3 -3
  40. package/contracts/endpoint-v2/src/tests/messaging_composer/send_compose.rs +2 -2
  41. package/contracts/layerzero-views/Cargo.toml +0 -1
  42. package/contracts/layerzero-views/src/layerzero_view.rs +1 -13
  43. package/contracts/macro-integration-tests/Cargo.toml +5 -15
  44. package/contracts/macro-integration-tests/tests/runtime/oapp/mod.rs +48 -0
  45. package/contracts/macro-integration-tests/tests/runtime/oapp/oapp_core.rs +170 -0
  46. package/contracts/macro-integration-tests/tests/runtime/oapp/options_type3.rs +154 -0
  47. package/contracts/macro-integration-tests/tests/runtime/oapp/receiver.rs +338 -0
  48. package/contracts/macro-integration-tests/tests/runtime/oapp/sender.rs +435 -0
  49. package/contracts/macro-integration-tests/tests/runtime.rs +1 -0
  50. package/contracts/macro-integration-tests/tests/ui/oapp/fail/custom_wrong_value.rs +8 -0
  51. package/contracts/macro-integration-tests/tests/ui/oapp/fail/custom_wrong_value.stderr +5 -0
  52. package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_lz_receive_internal.rs +8 -0
  53. package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_lz_receive_internal.stderr +71 -0
  54. package/contracts/macro-integration-tests/tests/ui/oapp/fail/non_struct_input.rs +10 -0
  55. package/contracts/macro-integration-tests/tests/ui/oapp/fail/non_struct_input.stderr +5 -0
  56. package/contracts/macro-integration-tests/tests/ui/oapp/fail/unknown_custom_option.rs +8 -0
  57. package/contracts/macro-integration-tests/tests/ui/oapp/fail/unknown_custom_option.stderr +5 -0
  58. package/contracts/macro-integration-tests/tests/ui/oapp/fail/wrong_key.rs +8 -0
  59. package/contracts/macro-integration-tests/tests/ui/oapp/fail/wrong_key.stderr +5 -0
  60. package/contracts/macro-integration-tests/tests/ui/oapp/pass/custom_all.rs +38 -0
  61. package/contracts/macro-integration-tests/tests/ui/oapp/pass/custom_single_trait.rs +96 -0
  62. package/contracts/macro-integration-tests/tests/ui/oapp/pass/minimal_contract.rs +64 -0
  63. package/contracts/macro-integration-tests/tests/ui/oapp/pass/struct_with_fields.rs +46 -0
  64. package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_env.stderr +8 -0
  65. package/contracts/macro-integration-tests/tests/ui/ownable/pass/namespacing_and_imports.rs +1 -1
  66. package/contracts/macro-integration-tests/tests/ui/ownable/pass/only_auth_env_param_variants.rs +1 -1
  67. package/contracts/macro-integration-tests/tests/ui_oapp.rs +11 -0
  68. package/contracts/message-libs/message-lib-common/Cargo.toml +0 -1
  69. package/contracts/message-libs/message-lib-common/src/errors.rs +1 -1
  70. package/contracts/message-libs/treasury/Cargo.toml +0 -2
  71. package/contracts/message-libs/treasury/src/tests/treasury_tests.rs +2 -2
  72. package/contracts/message-libs/uln-302/src/tests/receive_uln302/effective_receive_uln_config.rs +2 -2
  73. package/contracts/message-libs/uln-302/src/tests/receive_uln302/set_default_receive_uln_configs.rs +2 -2
  74. package/contracts/message-libs/uln-302/src/tests/receive_uln302/verify.rs +2 -2
  75. package/contracts/message-libs/uln-302/src/tests/send_uln302/effective_executor_config.rs +2 -2
  76. package/contracts/message-libs/uln-302/src/tests/send_uln302/effective_send_uln_config.rs +2 -2
  77. package/contracts/message-libs/uln-302/src/tests/send_uln302/send.rs +7 -27
  78. package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_executor_configs.rs +2 -2
  79. package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_send_uln_configs.rs +2 -2
  80. package/contracts/oapps/counter/Cargo.toml +4 -6
  81. package/contracts/oapps/counter/integration_tests/utils.rs +19 -12
  82. package/contracts/oapps/oapp/src/errors.rs +1 -1
  83. package/contracts/oapps/oapp/src/interfaces/mod.rs +3 -0
  84. package/contracts/oapps/oapp/src/interfaces/oapp_msg_inspector.rs +47 -0
  85. package/contracts/oapps/oapp/src/lib.rs +1 -0
  86. package/contracts/oapps/oapp/src/macro_tests/test_macros.rs +4 -4
  87. package/contracts/oapps/oapp/src/oapp_core.rs +5 -5
  88. package/contracts/oapps/oapp/src/oapp_options_type3.rs +12 -4
  89. package/contracts/oapps/oapp/src/oapp_receiver.rs +14 -9
  90. package/contracts/oapps/oapp/src/tests/mod.rs +4 -4
  91. package/contracts/oapps/oapp/src/tests/{test_oapp_core.rs → oapp_core.rs} +4 -4
  92. package/contracts/oapps/oapp/src/tests/{test_oapp_options_type3.rs → oapp_options_type3.rs} +3 -4
  93. package/contracts/oapps/oapp-macros/Cargo.toml +8 -4
  94. package/contracts/oapps/oapp-macros/src/generators.rs +9 -34
  95. package/contracts/oapps/oapp-macros/src/lib.rs +3 -0
  96. package/contracts/oapps/oapp-macros/src/tests/mod.rs +2 -0
  97. package/contracts/oapps/oapp-macros/src/tests/oapp.rs +88 -0
  98. package/contracts/oapps/oapp-macros/src/tests/parse_custom_impls.rs +86 -0
  99. package/contracts/oapps/oapp-macros/src/tests/snapshots/oapp_macros__tests__oapp__snapshot_generate_oapp.snap +103 -0
  100. package/contracts/oapps/oft/integration-tests/utils.rs +28 -8
  101. package/contracts/oapps/oft/src/extensions/oft_fee.rs +136 -74
  102. package/contracts/oapps/oft/src/extensions/pausable.rs +44 -10
  103. package/contracts/oapps/oft/src/extensions/rate_limiter.rs +170 -130
  104. package/contracts/oapps/oft/src/oft.rs +19 -12
  105. package/contracts/oapps/oft/src/oft_types/lock_unlock.rs +1 -1
  106. package/contracts/oapps/oft/src/oft_types/mint_burn.rs +1 -1
  107. package/contracts/oapps/oft-core/Cargo.toml +1 -4
  108. package/contracts/oapps/oft-core/integration-tests/setup.rs +2 -2
  109. package/contracts/oapps/oft-core/integration-tests/utils.rs +21 -3
  110. package/contracts/oapps/oft-core/src/errors.rs +3 -2
  111. package/contracts/oapps/oft-core/src/events.rs +6 -0
  112. package/contracts/oapps/oft-core/src/lib.rs +1 -1
  113. package/contracts/oapps/oft-core/src/oft_core.rs +115 -60
  114. package/contracts/oapps/oft-core/src/storage.rs +7 -3
  115. package/contracts/oapps/oft-core/src/tests/mod.rs +1 -0
  116. package/contracts/oapps/oft-core/src/tests/test_decimals.rs +37 -2
  117. package/contracts/oapps/oft-core/src/tests/test_lz_receive.rs +2 -2
  118. package/contracts/oapps/oft-core/src/tests/test_msg_inspector.rs +323 -0
  119. package/contracts/oapps/oft-core/src/tests/test_send.rs +2 -2
  120. package/contracts/oapps/oft-core/src/tests/test_utils.rs +59 -14
  121. package/contracts/utils/Cargo.toml +0 -1
  122. package/contracts/utils/src/errors.rs +1 -1
  123. package/contracts/utils/src/multisig.rs +17 -8
  124. package/contracts/utils/src/ownable.rs +6 -6
  125. package/contracts/utils/src/testing_utils.rs +124 -54
  126. package/contracts/utils/src/tests/multisig.rs +12 -12
  127. package/contracts/utils/src/tests/ownable.rs +6 -6
  128. package/contracts/utils/src/tests/testing_utils.rs +50 -167
  129. package/contracts/utils/src/tests/ttl_configurable.rs +5 -5
  130. package/contracts/utils/src/tests/upgradeable.rs +1 -1
  131. package/contracts/utils/src/ttl_configurable.rs +10 -4
  132. package/contracts/utils/src/upgradeable.rs +5 -5
  133. package/contracts/workers/dvn/Cargo.toml +5 -6
  134. package/contracts/workers/dvn/src/dvn.rs +2 -12
  135. package/contracts/workers/dvn-fee-lib/Cargo.toml +1 -1
  136. package/contracts/workers/dvn-fee-lib/src/dvn_fee_lib.rs +37 -19
  137. package/contracts/workers/dvn-fee-lib/src/lib.rs +12 -2
  138. package/contracts/workers/dvn-fee-lib/src/tests/dvn_fee_lib.rs +15 -13
  139. package/contracts/workers/executor/Cargo.toml +3 -0
  140. package/contracts/workers/executor/src/executor.rs +2 -12
  141. package/contracts/workers/executor/src/lib.rs +2 -2
  142. package/contracts/workers/executor/src/tests/auth.rs +394 -0
  143. package/contracts/workers/executor/src/tests/executor.rs +410 -0
  144. package/contracts/workers/executor/src/tests/mod.rs +3 -0
  145. package/contracts/workers/executor/src/tests/setup.rs +250 -0
  146. package/contracts/workers/executor-fee-lib/Cargo.toml +5 -0
  147. package/contracts/workers/executor-fee-lib/src/executor_fee_lib.rs +1 -12
  148. package/contracts/workers/executor-fee-lib/src/lib.rs +8 -2
  149. package/contracts/workers/executor-helper/Cargo.toml +0 -1
  150. package/contracts/workers/price-feed/Cargo.toml +5 -0
  151. package/contracts/workers/price-feed/src/lib.rs +9 -4
  152. package/contracts/workers/price-feed/src/price_feed.rs +1 -11
  153. package/contracts/workers/worker/src/errors.rs +1 -1
  154. package/contracts/workers/worker/src/tests/setup.rs +1 -1
  155. package/contracts/workers/worker/src/tests/worker.rs +55 -41
  156. package/contracts/workers/worker/src/worker.rs +34 -25
  157. package/docs/error-spec.md +55 -0
  158. package/docs/layerzero-v2-on-stellar.md +447 -0
  159. package/docs/oapp-guide.md +212 -0
  160. package/docs/oft-guide.md +314 -0
  161. package/package.json +3 -3
  162. package/sdk/.turbo/turbo-test.log +260 -257
  163. package/sdk/dist/generated/bml.d.ts +3 -3
  164. package/sdk/dist/generated/bml.js +4 -4
  165. package/sdk/dist/generated/counter.d.ts +295 -295
  166. package/sdk/dist/generated/counter.js +43 -43
  167. package/sdk/dist/generated/dvn.d.ts +91 -91
  168. package/sdk/dist/generated/dvn.js +24 -24
  169. package/sdk/dist/generated/dvn_fee_lib.d.ts +92 -92
  170. package/sdk/dist/generated/dvn_fee_lib.js +25 -25
  171. package/sdk/dist/generated/endpoint.d.ts +99 -99
  172. package/sdk/dist/generated/endpoint.js +16 -16
  173. package/sdk/dist/generated/executor.d.ts +91 -91
  174. package/sdk/dist/generated/executor.js +24 -24
  175. package/sdk/dist/generated/executor_fee_lib.d.ts +92 -92
  176. package/sdk/dist/generated/executor_fee_lib.js +25 -25
  177. package/sdk/dist/generated/executor_helper.d.ts +3 -3
  178. package/sdk/dist/generated/executor_helper.js +4 -4
  179. package/sdk/dist/generated/layerzero_view.d.ts +186 -186
  180. package/sdk/dist/generated/layerzero_view.js +35 -35
  181. package/sdk/dist/generated/oft.d.ts +366 -352
  182. package/sdk/dist/generated/oft.js +74 -79
  183. package/sdk/dist/generated/price_feed.d.ts +198 -198
  184. package/sdk/dist/generated/price_feed.js +39 -39
  185. package/sdk/dist/generated/sml.d.ts +99 -99
  186. package/sdk/dist/generated/sml.js +16 -16
  187. package/sdk/dist/generated/treasury.d.ts +99 -99
  188. package/sdk/dist/generated/treasury.js +16 -16
  189. package/sdk/dist/generated/uln302.d.ts +99 -99
  190. package/sdk/dist/generated/uln302.js +16 -16
  191. package/sdk/dist/generated/upgrader.d.ts +3 -3
  192. package/sdk/dist/generated/upgrader.js +3 -3
  193. package/sdk/package.json +1 -1
  194. package/sdk/test/suites/localnet.ts +84 -20
  195. package/contracts/ERROR_SPEC.md +0 -51
  196. package/contracts/endpoint-v2/ARCHITECTURE.md +0 -233
  197. /package/contracts/oapps/oapp/src/tests/{test_oapp_receiver.rs → oapp_receiver.rs} +0 -0
  198. /package/contracts/oapps/oapp/src/tests/{test_oapp_sender.rs → oapp_sender.rs} +0 -0
@@ -6,14 +6,14 @@ export * as contract from '@stellar/stellar-sdk/contract';
6
6
  export * as rpc from '@stellar/stellar-sdk/rpc';
7
7
  /**
8
8
  * Embedded WASM bytecode (base64-encoded)
9
- * Size: 34031 bytes (33.23 KB)
9
+ * Size: 34116 bytes (33.32 KB)
10
10
  */
11
- export declare const WASM_BASE64 = "AGFzbQEAAAABmQEaYAJ+fgF+YAN+fn4BfmABfgF+YAABfmAEfn5+fgF+YAJ/fwBgAX8BfmACfn4Bf2ACf34AYAABf2ABfwBgAX8Bf2AAAGACfn8AYAF+AGADf39/AGADfn9+AX9gBH9+fn4Bf2AGf35+f35+AGACf38BfmADfn9/AGADfn5+AX9gBH9/f38BfmACfn4AYAN/fn4AYAV+f39/fwACowEbAWwBMQAAAWwBXwABAWEBMAACAXgBMAAAAXYBXwADAWQBXwABAWIBOAACAWIBZQAAAWIBMAACAWwBMgAAAXgBMQAAAWwBNwAEAWwBNgACAWkBXwACAWkBMAACAWIBMwAAAWIBagAAAWIBMQAEAW0BOQABAW0BYQAEAXYBZwAAAXgBMwADAXgBOAADAWwBMAAAAWwBOAAAAXgBNQACAWIBZgABA2FgBQYHCAcHCQoFCwkGDAMDCg0MCg4GCg8IAwYDAQUFDgwDAwMDAwkACBAECBEAEhMTAQATFAsGExUMDAYACAkCBhYDBQUDAwADAAMCFwAMGAMDAgoCAwUDDAgIGQ8IDwYPBQMBABEGIQR/AUGAgMAAC38AQbyCwAALfwBB84TAAAt/AEGAhcAACwefAxwGbWVtb3J5AgAKYXV0aG9yaXplcgA1DV9fY29uc3RydWN0b3IANghlbmRwb2ludAA7BnVsbjMwMgA9CWxvY2FsX2VpZAA/DWluaXRpYWxpemFibGUAQQp2ZXJpZmlhYmxlAEQKZXhlY3V0YWJsZQBHDnVsbl92ZXJpZmlhYmxlAEwPc2V0X3R0bF9jb25maWdzAFYLdHRsX2NvbmZpZ3MAXBJmcmVlemVfdHRsX2NvbmZpZ3MAXxVpc190dGxfY29uZmlnc19mcm96ZW4AYBNleHRlbmRfaW5zdGFuY2VfdHRsAGEFb3duZXIAYg1wZW5kaW5nX293bmVyAGQSdHJhbnNmZXJfb3duZXJzaGlwAGUacHJvcG9zZV9vd25lcnNoaXBfdHJhbnNmZXIAZxBhY2NlcHRfb3duZXJzaGlwAGoScmVub3VuY2Vfb3duZXJzaGlwAGsHdXBncmFkZQBsB21pZ3JhdGUAbgZmcmVlemUAbwlpc19mcm96ZW4AcQFfAwEKX19kYXRhX2VuZAMCC19faGVhcF9iYXNlAwMKoFZgTQECfkIAIQICQAJAIAEQnICAgAAiA0ICEJ2AgIAARQ0AIANCAhCAgICAACICQv8Bg0LNAFINASAAIAI3AwhCASECCyAAIAI3AwAPCwALwgECAX8BfiOAgICAAEEQayIBJICAgIAAAkACQAJAAkACQAJAIABB/wFxDgMAAQIACyABQcCAwIAAQQgQsYCAgAAgASgCAA0DIAEgASkDCBCygICAAAwCCyABQciAwIAAQQYQsYCAgAAgASgCAA0CIAEgASkDCBCygICAAAwBCyABQc6AwIAAQQgQsYCAgAAgASgCAA0BIAEgASkDCBCygICAAAsgASkDCCECIAEpAwBQDQELAAsgAUEQaiSAgICAACACCw8AIAAgARCXgICAAEIBUQsVACAAEJyAgIAAIAFCAhCBgICAABoLDwAgACABEKCAgIAAQQFzCw0AIAAgARCDgICAAFALWAECfyOAgICAAEEQayIAJICAgIAAIABBBGoQooCAgAACQCAAKAIEQQFHDQAgACgCCCAAKAIMEKOAgIAAC0EAEKSAgIAAIQEgAEEQaiSAgICAACABQf0BcQsMACAAQQEQ3YCAgAALGwAgAK1CIIZCBIQgAa1CIIZCBIQQmICAgAAaC0cCAX8BfkECIQECQCAAEPmAgIAAIgJCAhCdgICAAEUNAEEBIQECQAJAIAJCAhCAgICAAKdB/wFxDgIBAgALAAtBACEBCyABC4sBAgJ/AX4jgICAgABBEGsiACSAgICAACAAQQRqEKKAgIAAAkAgACgCBEEBRw0AIAAoAgggACgCDBCjgICAAAtBACEBAkBBABCmgICAACICQgIQnYCAgABFDQBBASEBAkACQCACQgIQgICAgACnQf8BcQ4CAQIACwALQQAhAQsgAEEQaiSAgICAACABC8IBAgF/AX4jgICAgABBEGsiASSAgICAAAJAAkACQAJAAkACQCAAQf8BcQ4DAAECAAsgAUHShMCAAEEGELGAgIAAIAEoAgANAyABIAEpAwgQsoCAgAAMAgsgAUHYhMCAAEEIELGAgIAAIAEoAgANAiABIAEpAwgQsoCAgAAMAQsgAUHghMCAAEEKELGAgIAAIAEoAgANASABIAEpAwgQsoCAgAALIAEpAwghAiABKQMAUA0BCwALIAFBEGokgICAgAAgAgsPABCogICAABCCgICAABoLZgIBfwF+I4CAgIAAQRBrIgAkgICAgAAgABCigICAAAJAIAAoAgBBAUcNACAAKAIEIAAoAggQo4CAgAALIAAQqoCAgAAgACkDCCEBIAApAwBBiggQq4CAgAAgAEEQaiSAgICAACABC0oCAX8BfiOAgICAAEEQayIAJICAgIAAIAAQqoCAgAAgACkDCCEBIAApAwBBiggQq4CAgAAgARCCgICAABogAEEQaiSAgICAACABC1ABAX8jgICAgABBEGsiASSAgICAACABQQRqEKKAgIAAAkAgASgCBEEBRw0AIAEoAgggASgCDBCjgICAAAsgABCwgICAACABQRBqJICAgIAACykAAkAgAKdBAXFFDQAPCyABQfp3aq1CIIZCg4CAgOCAAXwQroCAgAAAC0IBAX8jgICAgABBEGsiACSAgICAACAAEK2AgIAAAkAgACkDAFANAEKDgICAsIEBEK6AgIAAAAsgAEEQaiSAgICAAAuTAQIBfwJ+I4CAgIAAQRBrIgEkgICAgAAgAUEEahCigICAAAJAIAEoAgRBAUcNACABKAIIIAEoAgwQo4CAgAALQgAhAgJAAkBBARCvgICAACIDQgAQnYCAgABFDQAgA0IAEICAgIAAIgJC/wGDQs0AUg0BIAAgAjcDCEIBIQILIAAgAjcDACABQRBqJICAgIAADwsACwsAIAAQmYCAgAAaC5IBAgF/AX4jgICAgABBEGsiASSAgICAAAJAAkACQAJAIABBAXFFDQAgAUHlg8CAAEEMELGAgIAAIAEoAgANAiABIAEpAwgQsoCAgAAMAQsgAUHgg8CAAEEFELGAgIAAIAEoAgANASABIAEpAwgQsoCAgAALIAEpAwghAiABKQMAUA0BCwALIAFBEGokgICAgAAgAgtNAQJ+QgAhAQJAAkBBABCvgICAACICQgIQnYCAgABFDQAgAkICEICAgIAAIgFC/wGDQs0AUg0BIAAgATcDCEIBIQELIAAgATcDAA8LAAtRAgF/AX4jgICAgABBEGsiAySAgICAACADIAEgAhD2gICAAEIBIQQCQCADKAIADQAgACADKQMINwMIQgAhBAsgACAENwMAIANBEGokgICAgAALRAEBfyOAgICAAEEQayICJICAgIAAIAIgATcDCCACQQhqQQEQyoCAgAAhASAAQgA3AwAgACABNwMIIAJBEGokgICAgAALDgBBgIDAgAAQtICAgAALDAAgAEEgENGAgIAACwgAEKiAgIAAC8sBAAJAAkACQCAAQv8Bg0LNAFINACABQv8Bg0LNAFINACACQv8Bg0LNAFINAEGAyx5BgNIfELeAgIAAQYDLHkGA0h8QuICAgABBABCvgICAAEICEJ2AgIAADQEgABC5gICAAEEAIAEQnoCAgABBASACEJ6AgIAAIAFCjtKuFRCEgICAABCFgICAACIBQv8Bg0IEUg0CQQIQnICAgAAgAUKEgICAcINCAhCBgICAABpCAg8LAAtCg4CAgJCBARCugICAAAALELqAgIAAAAsOAEEBIAAgARD6gICAAAsOAEECIAAgARD6gICAAAsOAEEAIABCAhDpgICAAAsJABDygICAAAALCAAQvICAgAALawIBfwF+I4CAgIAAQRBrIgAkgICAgAAgABCigICAAAJAIAAoAgBBAUcNACAAKAIEIAAoAggQo4CAgAALIABBABCbgICAAAJAIAAoAgANABDUgICAAAALIAApAwghASAAQRBqJICAgIAAIAELCAAQvoCAgAALawIBfwF+I4CAgIAAQRBrIgAkgICAgAAgABCigICAAAJAIAAoAgBBAUcNACAAKAIEIAAoAggQo4CAgAALIABBARCbgICAAAJAIAAoAgANABDUgICAAAALIAApAwghASAAQRBqJICAgIAAIAELDwAQwICAgACtQiCGQgSEC4gBAgF/AX4jgICAgABBEGsiACSAgICAACAAQQRqEKKAgIAAAkAgACgCBEEBRw0AIAAoAgggACgCDBCjgICAAAsCQAJAQQIQnICAgAAiAUICEJ2AgIAARQ0AIAFCAhCAgICAACIBQv8Bg0IEUQ0BAAsQ1ICAgAAACyAAQRBqJICAgIAAIAFCIIinC7oBAQJ/I4CAgIAAQcAAayICJICAgIAAIAJBIGogABDCgICAAAJAIAIoAiBBAUYNACACQQhqQRBqIAJBOGopAwA3AwAgAkEQaiACQSBqQRBqKQMANwMAIAIgAikDKDcDCCABQv8Bg0LNAFINACACQSBqEKKAgIAAAkAgAigCIEEBRw0AIAIoAiQgAigCKBCjgICAAAsQvICAgAAgAkEIaiABEMOAgIAAIQMgAkHAAGokgICAgAAgA60PCwAL4gECAn8CfiOAgICAAEEwayICJICAgIAAQQAhAwJAA0Ag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ASACKQMIUA0BCwALIAJB0ABqJICAgIAAIAELrgICAX8BfiOAgICAAEHAAGsiBiSAgICAAEGogsCAAEEUEMmAgIAAIQcgBkEgaiAFEPOAgIAAAkAgBigCIEEBRg0AIAYgBikDKDcDGCAGIAQ3AxAgBiACNwMAIAYgA61CIIZCBIQ3AwhBACEDAkADQAJAIANBIEcNAEEAIQMCQANAIANBIEYNASAGQSBqIANqIAYgA2opAwA3AwAgA0EIaiEDDAALCwJAAkAgASAHIAZBIGpBBBDKgICAABCFgICAACIFQgJSDQBCACEFDAELIAZBIGogBRDFgICAACAGKAIgQQFGDQMgBikDKCEEQgEhBQsgACAENwMIIAAgBTcDACAGQcAAaiSAgICAAA8LIAZBIGogA2pCAjcDACADQQhqIQMMAAsLELqAgIAAAAsAC0UCAX8BfiOAgICAAEEQayICJICAgIAAIAIgACABEPaAgIAAAkAgAigCAEEBRw0AAAsgAikDCCEDIAJBEGokgICAgAAgAwsaACAArUIghkIEhCABrUIghkIEhBCUgICAAAtRAQF/I4CAgIAAQRBrIgMkgICAgAAgAyAAIAEgAhCFgICAABD0gICAAAJAIAMoAgBBAUcNABC6gICAAAALIAMpAwghAiADQRBqJICAgIAAIAIL5QgGAX8BfgF/AX4BfwF+I4CAgIAAQcAAayICJICAgIAAAkACQCAAQv8Bg0LIAFINACACIAA3AwAgAkEIaiABEMWAgIAAIAIoAghBAUYNACACKQMQIQMgAkEIahCigICAAAJAIAIoAghBAUcNACACKAIMIAIoAhAQo4CAgAALAkACQCACKQMAEIaAgIAAQoCAgIBwg0KAgICAkApSDQAgAkEANgI0IAIgAjYCMAJAIAJBMGpBARDNgICAACIAEIaAgIAAQoCAgIBwg0KAgICAEFINACACQQA6AAgCQCAAEIaAgIAAQoCAgIBwg0KAgICAEFINACAAIAJBCGpBARDOgICAAAJAIAItAAhBAUcNAAJAIAJBMGpBCBDNgICAACIAEIaAgIAAQoCAgIBwg0KAgICAgAFSDQAgAkIANwMIIAAQhoCAgABCgICAgHCDQoCAgICAAVINAiAAIAJBCGpBCBDOgICAACACKQMIIQAgAkEwahDPgICAACEEIAJBMGoQ0ICAgAAhBSACQTBqEM+AgIAAIQYgAkEwahDQgICAACEBAkAgBhDAgICAAEcNAEG8gsCAAEEIENGAgIAAIAEQh4CAgAAQiICAgAAiAUL/AYNCzQBSDQcgAiAAQjiGIABCgP4Dg0IohoQgAEKAgPwHg0IYhiAAQoCAgPgPg0IIhoSEIABCCIhCgICA+A+DIABCGIhCgID8B4OEIABCKIhCgP4DgyAAQjiIhISEIgA3AxAgAiAFNwMIIAIgBDYCGAJAELyAgIAAIAJBCGogARDDgICAAA0AIAJBCGpBqIHAgABBEBCxgICAACACKAIIDQggAkEIaiACKQMQELKAgIAADAcLAkACQCACQQhqIAEQvoCAgAAiByADEMaAgIAARQ0AIAJBMGoQvICAgAAgASAEIAUgABDIgICAACACKAIwRQ0BIAIpAzggAxCggICAAEUNAQsgAkEIakGggcCAAEEIELGAgIAAIAIoAggNCCACQQhqIAIpAxAQsoCAgAAMBwsgAikDACEAQcSCwIAAQQoQyYCAgAAhASACIAM3AyggAiAANwMgQQAhBANAAkAgBEEQRw0AQQAhBAJAA0AgBEEQRg0BIAJBMGogBGogAkEgaiAEaikDADcDACAEQQhqIQQMAAsLAkAgByABIAJBMGpBAhDKgICAABDSgICAAA0AIAJBCGpBjYHAgABBCRCxgICAACACKAIIDQogAkEIaiACKQMQELKAgIAADAkLIAJBCGpBloHAgABBChCxgICAACACKAIIDQkgAkEIaiACKQMQELKAgIAADAgLIAJBMGogBGpCAjcDACAEQQhqIQQMAAsLQoOAgIAQEK6AgIAAAAtCg4CAgICCARCugICAAAALQoOAgIDQiQEQroCAgAAACxDTgICAAAALQoOAgICAggEQroCAgAAAC0KDgICAwIkBEK6AgIAAAAsgAikDECEAIAIpAwhQDQELAAsgAkHAAGokgICAgAAgAAt1AgJ/AX4CQAJAIAAoAgQiAiABaiIBIAJJDQAgASAAKAIAIgMpAwAQhoCAgABCIIinSw0BIAMpAwAgAq1CIIZCBIQgAa1CIIZCBIQQmoCAgAAhBCAAIAE2AgQgBA8LELqAgIAAAAtCg4CAgID9ABCugICAAAALHwAgAEIEIAGtQiCGQgSEIAKtQiCGQgSEEJGAgIAAGgu5AQIBfwF+I4CAgIAAQRBrIgEkgICAgAACQAJAIABBBBDNgICAACICEIaAgIAAQoCAgIBwg0KAgICAwABSDQAgAUEANgIMIAIQhoCAgABCgICAgHCDQoCAgIDAAFINASACIAFBDGpBBBDOgICAACABKAIMIQAgAUEQaiSAgICAACAAQRh0IABBgP4DcUEIdHIgAEEIdkGA/gNxIABBGHZycg8LQoOAgICAggEQroCAgAAACxDTgICAAAAL/wEDAX8BfgJ/I4CAgIAAQcAAayIBJICAgIAAAkACQCAAQSAQzYCAgAAiAhCGgICAAEKAgICAcINCgICAgIAEUg0AIAFBIGpBGGoiAEIANwMAIAFBIGpBEGoiA0IANwMAIAFBIGpBCGoiBEIANwMAIAFCADcDICACEIaAgIAAQoCAgIBwg0KAgICAgARSDQEgAiABQSBqQSAQzoCAgAAgAUEYaiAAKQMANwMAIAFBEGogAykDADcDACABQQhqIAQpAwA3AwAgASABKQMgNwMAIAEQtICAgAAhAiABQcAAaiSAgICAACACDwtCg4CAgICCARCugICAAAALENOAgIAAAAsaACAArUIghkIEhCABrUIghkIEhBCPgICAAAs0AQF/QQEhAwJAAkACQCAAIAEgAhCFgICAAKdB/wFxDgIBAgALELqAgIAAAAtBACEDCyADCwkAELqAgIAAAAsJABC6gICAAAALfQIBfwF+I4CAgIAAQTBrIgEkgICAgAAgAUEgaiAAKQMIEPOAgIAAAkAgASgCIEEBRw0AAAsgASABKQMoNwMIIAEgACkDADcDECABIAA1AhBCIIZCBIQ3AxhBzIHAgABBAyABQQhqQQMQ24CAgAAhAiABQTBqJICAgIAAIAIL3gQBBX8jgICAgABB0ABrIgIkgICAgAAgAkEoaiAAENeAgIAAAkAgAigCKEECRg0AIAJBCGpBCGogAkEoakEIaiIDKAIANgIAIAIgAikCKDcDCCACQShqIAEQ14CAgAAgAigCKEECRg0AIAJBGGpBCGogAygCADYCACACIAIpAig3AxggAkEoahCigICAAAJAIAIoAihBAUcNACACKAIsIAIoAjAQo4CAgAALEKeAgIAAAkACQAJAEKWAgIAADQAQ2ICAgAAiA0GA+4ADIANBgPuAA0kbIQQgAiACQRhqNgIsIAIgAkEIajYCKEEAIQMDQCADQQhGDQMCQCACQShqIANqKAIAIgUoAgBBAXFFDQAgBSgCCCIGIARLDQMgBSgCBCAGSw0DCyADQQRqIQMMAAsLQoOAgIDQ/wAQroCAgAAAC0KDgICAwP8AEK6AgIAAAAsCQAJAIAIoAghBAUcNACACKAIMIAIoAhAQt4CAgAAMAQtBARCmgICAAEICEImAgIAAGgsCQAJAIAIoAhhBAUcNACACKAIcIAIoAiAQuICAgAAMAQtBAhCmgICAAEICEImAgIAAGgsgAkEoakEIaiACQQhqQQhqKAIANgIAIAJBPGogAkEYakEIaigCADYCACACIAIpAwg3AyggAiACKQMYNwI0QYyEwIAAQQ8QyYCAgAAQ2YCAgAAhACACQShqENqAgIAAIQEgAiACQTRqENqAgIAANwNIIAIgATcDQCAAQbCEwIAAQQIgAkHAAGpBAhDbgICAABCKgICAABogAkHQAGokgICAgABCAg8LAAtoAQF/I4CAgIAAQRBrIgIkgICAgAACQAJAIAFCAlENACACQQRqIAEQ94CAgAACQCACKAIERQ0AIABBAjYCAAwCCyAAIAIpAgg3AgQgAEEBNgIADAELIABBADYCAAsgAkEQaiSAgICAAAszAQJ+EJWAgIAAIQACQBCWgICAAEIgiCIBIABCIIgiAFQNACABpyAAp2sPCxC6gICAAAALYwMBfwF+AX8jgICAgABBEGsiASSAgICAACABIAA3AwBCAiECQQEhAwJAA0AgA0UNASADQX9qIQMgACECDAALCyABIAI3AwggAUEIakEBEMqAgIAAIQAgAUEQaiSAgICAACAAC0MCAX8BfiOAgICAAEEQayIBJICAgIAAIAEgABDegICAAAJAIAEoAgBBAUcNAAALIAEpAwghAiABQRBqJICAgIAAIAILLgACQCABIANGDQAACyAArUIghkIEhCACrUIghkIEhCABrUIghkIEhBCSgICAAAvEAQICfwF+I4CAgIAAQcAAayIAJICAgIAAIABBCGoQooCAgAACQCAAKAIIQQFHDQAgACgCDCAAKAIQEKOAgIAACyAAQQhqEKKAgIAAIABBFGoiAUECEN2AgIAAIABBMGogAEEIahDegICAAAJAAkAgACgCMA0AIAApAzghAiAAQTBqIAEQ3oCAgAAgACgCMEEBRw0BCwALIAAgACkDODcDKCAAIAI3AyAgAEEgakECEMqAgIAAIQIgAEHAAGokgICAgAAgAgt3AgJ/AX4jgICAgABBEGsiAiSAgICAAEEAIQMCQAJAIAEQpoCAgAAiBEICEJ2AgIAARQ0AIAJBBGogBEICEICAgIAAEPeAgIAAQQEhAyACKAIEQQFGDQEgACACKQIINwIECyAAIAM2AgAgAkEQaiSAgICAAA8LAAswAAJAIAEoAgBBAUcNACAAIAEoAgQgASgCCBD4gICAAA8LIABCADcDACAAQgI3AwgLqgEBAX8jgICAgABBIGsiACSAgICAACAAQQxqEKKAgIAAAkAgACgCDEEBRw0AIAAoAhAgACgCFBCjgICAAAsQp4CAgAACQBClgICAAEUNAEKDgICA4P8AEK6AgIAAAAtBABCmgICAAEIBQgIQgYCAgAAaQcCEwIAAQRIQyYCAgAAQ2YCAgABBBEEAIABBGGpBABDbgICAABCKgICAABogAEEgaiSAgICAAEICCwkAEKWAgIAArQsxAAJAIABC/wGDQgRSDQAgAUL/AYNCBFINACAAQiCIpyABQiCIpxCjgICAAEICDwsACz4CAX8BfiOAgICAAEEQayIAJICAgIAAIAAQqoCAgAAgACkDACAAKQMIEOOAgIAAIQEgAEEQaiSAgICAACABCw0AIAFCAiAAp0EBcRsLPgIBfwF+I4CAgIAAQRBrIgAkgICAgAAgABCtgICAACAAKQMAIAApAwgQ44CAgAAhASAAQRBqJICAgIAAIAELfQIBfwF+I4CAgIAAQRBrIgEkgICAgAACQCAAQv8Bg0LNAFINACABQQRqEKKAgIAAAkAgASgCBEEBRw0AIAEoAgggASgCDBCjgICAAAsQqYCAgAAhAhCsgICAACAAELmAgIAAIAIgABDmgICAACABQRBqJICAgIAAQgIPCwALYQIBfwF+I4CAgIAAQRBrIgIkgICAgABB14LAgABBFRDJgICAABDZgICAACEDIAIgADcDCCACIAE3AwAgA0GAg8CAAEECIAJBAhDbgICAABCKgICAABogAkEQaiSAgICAAAvdAgIBfwJ+I4CAgIAAQSBrIgIkgICAgAACQAJAAkAgAEL/AYNCzQBSDQAgAUL/AYNCBFINACACQQhqEKKAgIAAAkAgAigCCEEBRw0AIAIoAgwgAigCEBCjgICAAAsQqYCAgAAhAwJAAkAgAUL/////D1YNACACQQhqEK2AgIAAIAIpAxAhASACKQMIQYgIEKuAgIAAIAEgABCDgICAAFBFDQMQ6ICAgAAMAQsQ2ICAgAAgAUIgiKdJDQNBASAAQgAQ6YCAgABBARCvgICAAEIAIAFChICAgHCDIgEgARCLgICAABpBkIPAgABBFhDJgICAABDZgICAACEEIAIgATcDGCACIAM3AxAgAiAANwMIIARBrIPAgABBAyACQQhqQQMQ24CAgAAQioCAgAAaCyACQSBqJICAgIAAQgIPCwALQoOAgIDggAEQroCAgAAAC0KDgICA8IABEK6AgIAAAAsTAEEBEK+AgIAAQgAQiYCAgAAaCxUAIAAQr4CAgAAgASACEIGAgIAAGgunAQIBfwJ+I4CAgIAAQRBrIgAkgICAgAAgABCigICAAAJAIAAoAgBBAUcNACAAKAIEIAAoAggQo4CAgAALIAAQrYCAgAAgACkDCCEBIAApAwBBiAgQq4CAgAAgARCCgICAABogABCwgICAAAJAIAAoAgANABDUgICAAAALIAApAwghAhDogICAACABELmAgIAAIAIgARDmgICAACAAQRBqJICAgIAAQgILoAECAX8CfiOAgICAAEEQayIAJICAgIAAIAAQooCAgAACQCAAKAIAQQFHDQAgACgCBCAAKAIIEKOAgIAACxCpgICAACEBEKyAgIAAQQAQr4CAgABCAhCJgICAABpBxIPAgABBExDJgICAABDZgICAACECIAAgATcDACACQdiDwIAAQQEgAEEBENuAgIAAEIqAgIAAGiAAQRBqJICAgIAAQgILmAEBAX8jgICAgABBEGsiASSAgICAACABIAAQxYCAgAACQAJAIAEoAgBBAUYNACABKQMIIQAgARCigICAAAJAIAEoAgBBAUcNACABKAIEIAEoAggQo4CAgAALEKeAgIAAEKGAgIAADQFBARDtgICAACAAEIyAgIAAGiABQRBqJICAgIAAQgIPCwALQoOAgIDAgwEQroCAgAAACwwAQQEgABDwgICAAAutAQEBfyOAgICAAEEQayIBJICAgIAAAkACQAJAIABC/wGDQsgAUg0AIAFBBGoQooCAgAACQCABKAIEQQFHDQAgASgCCCABKAIMEKOAgIAACxCngICAAEEBEKSAgIAAQf0BcUUNASAAEIiAgIAAQv8Bg0ICUg0CQQAQ7YCAgAAgAUEQaiSAgICAAEICDwsAC0KDgICAsIMBEK6AgIAAAAtCg4CAgKCDARCugICAAAALWgEBfyOAgICAAEEQayIAJICAgIAAIABBBGoQooCAgAACQCAAKAIEQQFHDQAgACgCCCAAKAIMEKOAgIAACxCngICAAEEAQQEQ8ICAgAAgAEEQaiSAgICAAEICCxoAIAAQ+YCAgAAgAa1C/wGDQgIQgYCAgAAaCwkAEKGAgIAArQsDAAALOwACQAJAIAFC//////////8AVg0AIAFCCIZCBoQhAQwBCyABEI2AgIAAIQELIABCADcDACAAIAE3AwgLXQIBfwF+AkACQCABp0H/AXEiAkHAAEYNAAJAIAJBBkYNAEIBIQNCg5CAgIABIQEMAgsgAUIIiCEBQgAhAwwBC0IAIQMgARCOgICAACEBCyAAIAM3AwAgACABNwMICzEAAkAgAiAERg0AAAsgACABrUIghkIEhCADrUIghkIEhCACrUIghkIEhBCTgICAABoL2wECAX4EfwJAAkAgAkEJSw0AQgAhAyACIQQgASEFA0ACQCAEDQAgA0IIhkIOhCEDDAMLQQEhBgJAIAUtAAAiB0HfAEYNAAJAIAdBUGpB/wFxQQpJDQACQCAHQb9/akH/AXFBGkkNACAHQZ9/akH/AXFBGUsNBCAHQUVqIQYMAgsgB0FLaiEGDAELIAdBUmohBgsgA0IGhiAGrUL/AYOEIQMgBEF/aiEEIAVBAWohBQwACwsgAa1CIIZCBIQgAq1CIIZCBIQQkICAgAAhAwsgAEIANwMAIAAgAzcDCAutAQICfwF+I4CAgIAAQRBrIgIkgICAgABBACEDAkADQCADQRBGDQEgAiADakICNwMAIANBCGohAwwACwtBASEDAkAgAUL/AYNCzABSDQAgAUH8g8CAAEECIAJBAhD1gICAACACKQMAIgFC/wGDQgRSDQAgAikDCCIEQv8Bg0IEUg0AIAAgAUIgiKc2AgggACAEQiCIPgIEQQAhAwsgACADNgIAIAJBEGokgICAgAALYAIBfwF+I4CAgIAAQRBrIgMkgICAgAAgAyABrUIghkIEhDcDCCADIAKtQiCGQgSENwMAQfyDwIAAQQIgA0ECENuAgIAAIQQgAEIANwMAIAAgBDcDCCADQRBqJICAgIAAC5IBAgF/AX4jgICAgABBEGsiASSAgICAAAJAAkACQAJAIABBAXFFDQAgAUHqhMCAAEEJELGAgIAAIAEoAgANAiABIAEpAwgQsoCAgAAMAQsgAUHShMCAAEEGELGAgIAAIAEoAgANASABIAEpAwgQsoCAgAALIAEpAwghAiABKQMAUA0BCwALIAFBEGokgICAgAAgAgtWAgF/AX4jgICAgABBEGsiAySAgICAACAAEKaAgIAAIQQgAyABIAIQ+ICAgAACQCADKAIAQQFHDQAACyAEIAMpAwhCAhCBgICAABogA0EQaiSAgICAAAsL/QQBAEGAgMAAC/MEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////////////////////////0VuZHBvaW50VWxuMzAyTG9jYWxFaWROb3RFeGVjdXRhYmxlVmVyaWZpZWRCdXROb3RFeGVjdXRhYmxlRXhlY3V0YWJsZUV4ZWN1dGVkVmVyaWZ5aW5nVmVyaWZpYWJsZVZlcmlmaWVkTm90SW5pdGlhbGl6YWJsZW5vbmNlc2VuZGVyc3JjX2VpZAAAuAAQAAUAAAC9ABAABgAAAMMAEAAHAAAAaW5pdGlhbGl6YWJsZWlzX3ZhbGlkX3JlY2VpdmVfbGlicmFyeWluYm91bmRfbm9uY2VsYXp5X2luYm91bmRfbm9uY2VpbmJvdW5kX3BheWxvYWRfaGFzaAAAABIAAAABdmVyaWZpYWJsZXRocmVzaG9sZG93bmVyc2hpcF90cmFuc2ZlcnJlZG5ld19vd25lcm9sZF9vd25lcgAAbAEQAAkAAAB1ARAACQAAAG93bmVyc2hpcF90cmFuc2ZlcnJpbmd0dGwAAABsARAACQAAAHUBEAAJAAAApgEQAAMAAABvd25lcnNoaXBfcmVub3VuY2VkAHUBEAAJAAAAT3duZXJQZW5kaW5nT3duZXJleHRlbmRfdG8AAPEBEAAJAAAATgEQAAkAAAB0dGxfY29uZmlnc19zZXRpbnN0YW5jZXBlcnNpc3RlbnQAAAAbAhAACAAAACMCEAAKAAAAdHRsX2NvbmZpZ3NfZnJvemVuRnJvemVuSW5zdGFuY2VQZXJzaXN0ZW50TWlncmF0aW5nAKOmAQ5jb250cmFjdHNwZWN2MAAAAAQAAAAiRXJyb3JzIGZvciBMYXllclplcm9WaWV3IGNvbnRyYWN0LgAAAAAAAAAAABJMYXllclplcm9WaWV3RXJyb3IAAAAAAAEAAAApSW52YWxpZCBwYWNrZXQgaGVhZGVyIChkc3RfZWlkIG1pc21hdGNoKS4AAAAAAAAKSW52YWxpZEVJRAAAAAAAAQAAAAAAAAAAAAAACmF1dGhvcml6ZXIAAAAAAAAAAAABAAAAEwAAAAAAAAAAAAAADV9fY29uc3RydWN0b3IAAAAAAAADAAAAAAAAAAVvd25lcgAAAAAAABMAAAAAAAAACGVuZHBvaW50AAAAEwAAAAAAAAAGdWxuMzAyAAAAAAATAAAAAAAAAAAAAAAdUmV0dXJucyB0aGUgZW5kcG9pbnQgYWRkcmVzcy4AAAAAAAAIZW5kcG9pbnQAAAAAAAAAAQAAABMAAAAAAAAAG1JldHVybnMgdGhlIFVsbjMwMiBhZGRyZXNzLgAAAAAGdWxuMzAyAAAAAAAAAAAAAQAAABMAAAAAAAAAHlJldHVybnMgdGhlIGxvY2FsIGVuZHBvaW50IElELgAAAAAACWxvY2FsX2VpZAAAAAAAAAAAAAABAAAABAAAAAAAAABQQ2hlY2tzIGlmIGEgbWVzc2FnaW5nIHBhdGggY2FuIGJlIGluaXRpYWxpemVkIGZvciB0aGUgZ2l2ZW4gb3JpZ2luIGFuZCByZWNlaXZlci4AAAANaW5pdGlhbGl6YWJsZQAAAAAAAAIAAAAAAAAABm9yaWdpbgAAAAAH0AAAAAZPcmlnaW4AAAAAAAAAAAAIcmVjZWl2ZXIAAAATAAAAAQAAAAEAAAAAAAAAtENoZWNrcyBpZiBhIG1lc3NhZ2UgY2FuIGJlIHZlcmlmaWVkIGF0IHRoZSBlbmRwb2ludC4KClZlcmlmaWVzOgoxLiBSZWNlaXZlIGxpYnJhcnkgaXMgdmFsaWQgZm9yIHRoaXMgcmVjZWl2ZXIgYW5kIHNvdXJjZQoyLiBFbmRwb2ludCBub25jZSBjaGVjayBwYXNzZXMKMy4gUGF5bG9hZCBoYXNoIGlzIG5vdCBlbXB0eQAAAAp2ZXJpZmlhYmxlAAAAAAAEAAAAAAAAAAZvcmlnaW4AAAAAB9AAAAAGT3JpZ2luAAAAAAAAAAAACHJlY2VpdmVyAAAAEwAAAAAAAAALcmVjZWl2ZV9saWIAAAAAEwAAAAAAAAAMcGF5bG9hZF9oYXNoAAAD7gAAACAAAAABAAAAAQAAAAAAAAApUmV0dXJucyB0aGUgZXhlY3V0aW9uIHN0YXRlIG9mIGEgbWVzc2FnZS4AAAAAAAAKZXhlY3V0YWJsZQAAAAAAAgAAAAAAAAAGb3JpZ2luAAAAAAfQAAAABk9yaWdpbgAAAAAAAAAAAAhyZWNlaXZlcgAAABMAAAABAAAH0AAAAA5FeGVjdXRpb25TdGF0ZQAAAAAAAAAAAO5SZXR1cm5zIHRoZSBjb21iaW5lZCB2ZXJpZmljYXRpb24gc3RhdGUgb2YgYSBtZXNzYWdlLgoKVGhpcyBmdW5jdGlvbiBjaGVja3M6CjEuIFBhY2tldCBoZWFkZXIgdmFsaWRpdHkgKGRzdF9laWQgbWF0Y2hlcyBsb2NhbF9laWQpCjIuIEVuZHBvaW50IGluaXRpYWxpemFibGUgc3RhdHVzCjMuIEVuZHBvaW50IHZlcmlmaWFibGUgc3RhdHVzCjQuIFVMTiB2ZXJpZmlhYmxlIHN0YXR1cyAoRFZOIGNvbmZpcm1hdGlvbnMpAAAAAAAOdWxuX3ZlcmlmaWFibGUAAAAAAAIAAAAAAAAADXBhY2tldF9oZWFkZXIAAAAAAAAOAAAAAAAAAAxwYXlsb2FkX2hhc2gAAAPuAAAAIAAAAAEAAAfQAAAAEVZlcmlmaWNhdGlvblN0YXRlAAAAAAAAAgAAAAAAAAAAAAAAFExheWVyWmVyb1ZpZXdTdG9yYWdlAAAAAwAAAAAAAAAAAAAACEVuZHBvaW50AAAAAAAAAAAAAAAGVWxuMzAyAAAAAAAAAAAAAAAAAAhMb2NhbEVpZAAAAAIAAACBUmVwcmVzZW50cyB0aGUgZXhlY3V0aW9uIHN0YXRlIG9mIGEgY3Jvc3MtY2hhaW4gbWVzc2FnZS4KClVzZWQgYnkgZXhlY3V0b3JzIHRvIGRldGVybWluZSB3aGVuIGEgbWVzc2FnZSBpcyByZWFkeSB0byBiZSBkZWxpdmVyZWQuAAAAAAAAAAAAAA5FeGVjdXRpb25TdGF0ZQAAAAAABAAAAAAAAAA+TWVzc2FnZSBpcyBub3QgcmVhZHkgZm9yIGV4ZWN1dGlvbiAtIHdhaXRpbmcgZm9yIHZlcmlmaWNhdGlvbi4AAAAAAA1Ob3RFeGVjdXRhYmxlAAAAAAAAAAAAAEZNZXNzYWdlIGlzIHZlcmlmaWVkIGJ1dCBjYW5ub3QgYmUgZXhlY3V0ZWQgeWV0IChwcmlvciBub25jZXMgcGVuZGluZykuAAAAAAAYVmVyaWZpZWRCdXROb3RFeGVjdXRhYmxlAAAAAAAAACBNZXNzYWdlIGlzIHJlYWR5IHRvIGJlIGV4ZWN1dGVkLgAAAApFeGVjdXRhYmxlAAAAAAAAAAAAIk1lc3NhZ2UgaGFzIGFscmVhZHkgYmVlbiBleGVjdXRlZC4AAAAAAAhFeGVjdXRlZAAAAAIAAACIUmVwcmVzZW50cyB0aGUgdmVyaWZpY2F0aW9uIHN0YXRlIG9mIGEgY3Jvc3MtY2hhaW4gbWVzc2FnZSBhdCB0aGUgVUxOIGxldmVsLgoKVXNlZCBieSBEVk5zIGFuZCBleGVjdXRvcnMgdG8gdHJhY2sgdmVyaWZpY2F0aW9uIHByb2dyZXNzLgAAAAAAAAARVmVyaWZpY2F0aW9uU3RhdGUAAAAAAAAEAAAAAAAAADNEVk5zIGFyZSBzdGlsbCBjb2xsZWN0aW5nIHNpZ25hdHVyZXMvY29uZmlybWF0aW9ucy4AAAAACVZlcmlmeWluZwAAAAAAAAAAAABASGFzIGVub3VnaCBEVk4gY29uZmlybWF0aW9ucywgcmVhZHkgdG8gYmUgY29tbWl0dGVkIHRvIGVuZHBvaW50LgAAAApWZXJpZmlhYmxlAAAAAAAAAAAAIUFscmVhZHkgdmVyaWZpZWQgYXQgdGhlIGVuZHBvaW50LgAAAAAAAAhWZXJpZmllZAAAAAAAAAAlQ2Fubm90IGJlIGluaXRpYWxpemVkIChwYXRoIGJsb2NrZWQpLgAAAAAAABBOb3RJbml0aWFsaXphYmxlAAAAAAAAAY9TZXRzIFRUTCBjb25maWdzIGZvciBpbnN0YW5jZSBhbmQgcGVyc2lzdGVudCBzdG9yYWdlLgoKLSBgTm9uZWAgdmFsdWVzIHJlbW92ZSB0aGUgY29ycmVzcG9uZGluZyBjb25maWcgKGRpc2FibGVzIGF1dG8tZXh0ZW5zaW9uIGZvciB0aGF0IHR5cGUpCi0gVmFsaWRhdGVzIHRoYXQgYHRocmVzaG9sZCA8PSBleHRlbmRfdG8gPD0gTUFYX1RUTGAKCiMgQXJndW1lbnRzCi0gYGluc3RhbmNlYCAtIFRUTCBjb25maWcgZm9yIGluc3RhbmNlIHN0b3JhZ2UKLSBgcGVyc2lzdGVudGAgLSBUVEwgY29uZmlnIGZvciBwZXJzaXN0ZW50IHN0b3JhZ2UKCiMgUGFuaWNzCi0gYFR0bENvbmZpZ0Zyb3plbmAgaWYgY29uZmlncyBhcmUgZnJvemVuCi0gYEludmFsaWRUdGxDb25maWdgIGlmIHZhbGlkYXRpb24gZmFpbHMAAAAAD3NldF90dGxfY29uZmlncwAAAAACAAAAAAAAAAhpbnN0YW5jZQAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAAAKcGVyc2lzdGVudAAAAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAAAAAABIUmV0dXJucyB0aGUgY3VycmVudCBUVEwgY29uZmlncyBhcyAoaW5zdGFuY2VfY29uZmlnLCBwZXJzaXN0ZW50X2NvbmZpZykuAAAAC3R0bF9jb25maWdzAAAAAAAAAAABAAAD7QAAAAIAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAAAAAAA4VBlcm1hbmVudGx5IGZyZWV6ZXMgVFRMIGNvbmZpZ3MsIHByZXZlbnRpbmcgYW55IGZ1dHVyZSBtb2RpZmljYXRpb25zLgoKVGhpcyBpcyBpcnJldmVyc2libGUgYW5kIHByb3ZpZGVzIGltbXV0YWJpbGl0eSBndWFyYW50ZWVzIHRvIHVzZXJzLgpFbWl0cyBgVHRsQ29uZmlnc0Zyb3plbmAgZXZlbnQuCgojIFBhbmljcwotIGBUdGxDb25maWdBbHJlYWR5RnJvemVuYCBpZiBhbHJlYWR5IGZyb3plbgAAAAAAABJmcmVlemVfdHRsX2NvbmZpZ3MAAAAAAAAAAAAAAAAAAAAAACdSZXR1cm5zIHdoZXRoZXIgVFRMIGNvbmZpZ3MgYXJlIGZyb3plbi4AAAAAFWlzX3R0bF9jb25maWdzX2Zyb3plbgAAAAAAAAAAAAABAAAAAQAAAAAAAAClRXh0ZW5kcyB0aGUgaW5zdGFuY2UgVFRMLgoKIyBBcmd1bWVudHMKCiogYHRocmVzaG9sZGAgLSBUaGUgdGhyZXNob2xkIHRvIGV4dGVuZCB0aGUgVFRMIChpZiBjdXJyZW50IFRUTCBpcyBiZWxvdyB0aGlzLCBleHRlbmQpLgoqIGBleHRlbmRfdG9gIC0gVGhlIFRUTCB0byBleHRlbmQgdG8uAAAAAAAAE2V4dGVuZF9pbnN0YW5jZV90dGwAAAAAAgAAAAAAAAAJdGhyZXNob2xkAAAAAAAABAAAAAAAAAAJZXh0ZW5kX3RvAAAAAAAABAAAAAAAAAAAAAAAPlJldHVybnMgdGhlIGN1cnJlbnQgb3duZXIgYWRkcmVzcywgb3IgTm9uZSBpZiBubyBvd25lciBpcyBzZXQuAAAAAAAFb3duZXIAAAAAAAAAAAAAAQAAA+gAAAATAAAAAAAAAFlSZXR1cm5zIHRoZSBwZW5kaW5nIG93bmVyIGFkZHJlc3MgZm9yIDItc3RlcCB0cmFuc2Zlciwgb3IgTm9uZSBpZiBubyB0cmFuc2ZlciBpcyBwZW5kaW5nLgAAAAAAAA1wZW5kaW5nX293bmVyAAAAAAAAAAAAAAEAAAPoAAAAEwAAAAAAAAErVHJhbnNmZXJzIG93bmVyc2hpcCBpbW1lZGlhdGVseSB0byBhIG5ldyBhZGRyZXNzLgoKVXNlIHdpdGggY2F1dGlvbiAtIGlmIHlvdSB0cmFuc2ZlciB0byBhIHdyb25nIGFkZHJlc3MsIG93bmVyc2hpcCBpcyBsb3N0IGZvcmV2ZXIuCkNvbnNpZGVyIHVzaW5nIGBwcm9wb3NlX293bmVyc2hpcF90cmFuc2ZlcmAgaW5zdGVhZC4KCiMgUGFuaWNzCi0gYE93bmVyTm90U2V0YCBpZiBubyBvd25lciBpcyBjdXJyZW50bHkgc2V0Ci0gYFRyYW5zZmVySW5Qcm9ncmVzc2AgaWYgYSAyLXN0ZXAgdHJhbnNmZXIgaXMgaW4gcHJvZ3Jlc3MAAAAAEnRyYW5zZmVyX293bmVyc2hpcAAAAAAAAQAAAAAAAAAJbmV3X293bmVyAAAAAAAAEwAAAAAAAAAAAAACXFByb3Bvc2VzIGFuIG93bmVyc2hpcCB0cmFuc2ZlciB0byBhIG5ldyBhZGRyZXNzLgoKVGhlIG5ldyBvd25lciBtdXN0IGNhbGwgYGFjY2VwdF9vd25lcnNoaXAoKWAgd2l0aGluIGB0dGxgIGxlZGdlcnMKdG8gY29tcGxldGUgdGhlIHRyYW5zZmVyLiBUaGUgcGVuZGluZyB0cmFuc2ZlciB3aWxsIGF1dG9tYXRpY2FsbHkgZXhwaXJlIGFmdGVyLgoKIyBBcmd1bWVudHMKLSBgbmV3X293bmVyYCAtIFRoZSBwcm9wb3NlZCBuZXcgb3duZXIKLSBgdHRsYCAtIE51bWJlciBvZiBsZWRnZXJzIHRoZSBuZXcgb3duZXIgaGFzIHRvIGFjY2VwdC4KVXNlIGAwYCB0byBjYW5jZWwgYSBwZW5kaW5nIHRyYW5zZmVyIChuZXdfb3duZXIgbXVzdCBtYXRjaCBwZW5kaW5nKS4KCiMgUGFuaWNzCi0gYE93bmVyTm90U2V0YCBpZiBubyBvd25lciBpcyBjdXJyZW50bHkgc2V0Ci0gYE5vUGVuZGluZ1RyYW5zZmVyYCB3aGVuIGNhbmNlbGxpbmcgYW5kIG5vIHBlbmRpbmcgdHJhbnNmZXIgZXhpc3RzCi0gYEludmFsaWRUdGxgIGlmIHR0bCBleGNlZWRzIG1heCBUVEwKLSBgSW52YWxpZFBlbmRpbmdPd25lcmAgd2hlbiBjYW5jZWxsaW5nIHdpdGggd3JvbmcgbmV3X293bmVyIGFkZHJlc3MAAAAacHJvcG9zZV9vd25lcnNoaXBfdHJhbnNmZXIAAAAAAAIAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAA3R0bAAAAAAEAAAAAAAAAAAAAAC5QWNjZXB0cyBhIHBlbmRpbmcgMi1zdGVwIG93bmVyc2hpcCB0cmFuc2Zlci4KCk11c3QgYmUgY2FsbGVkIGJ5IHRoZSBwZW5kaW5nIG93bmVyIGJlZm9yZSB0aGUgVFRMIGV4cGlyZXMuCgojIFBhbmljcwotIGBOb1BlbmRpbmdUcmFuc2ZlcmAgaWYgdGhlcmUgaXMgbm8gcGVuZGluZyB0cmFuc2ZlciAob3IgaXQgZXhwaXJlZCkAAAAAAAAQYWNjZXB0X293bmVyc2hpcAAAAAAAAAAAAAAAAAAAAKRQZXJtYW5lbnRseSByZW5vdW5jZXMgb3duZXJzaGlwLgoKIyBQYW5pY3MKLSBgT3duZXJOb3RTZXRgIGlmIG5vIG93bmVyIGlzIGN1cnJlbnRseSBzZXQKLSBgVHJhbnNmZXJJblByb2dyZXNzYCBpZiBhIDItc3RlcCB0cmFuc2ZlciBpcyBpbiBwcm9ncmVzcyAoY2FuY2VsIGl0IGZpcnN0KQAAABJyZW5vdW5jZV9vd25lcnNoaXAAAAAAAAAAAAAAAAAAAAAAAJVUaGUgdHlwZSBvZiBkYXRhIHJlcXVpcmVkIGZvciBtaWdyYXRpb24uClVwZ3JhZGVzIHRoZSBjb250cmFjdCB0byBuZXcgV0FTTSBieXRlY29kZS4KU2V0cyBhIG1pZ3JhdGlvbiBmbGFnIHRoYXQgbXVzdCBiZSBjbGVhcmVkIGJ5IGNhbGxpbmcgYG1pZ3JhdGVgLgAAAAAAAAd1cGdyYWRlAAAAAAEAAAAAAAAADW5ld193YXNtX2hhc2gAAAAAAAPuAAAAIAAAAAAAAAAAAAAAdlJ1bnMgbWlncmF0aW9uIGxvZ2ljIGFmdGVyIGFuIHVwZ3JhZGUuCkNhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBtaWdyYXRpb24gZmxhZyBpcyBzZXQgYnkgYSBwcmV2aW91cyBgdXBncmFkZWAgY2FsbC4AAAAAAAdtaWdyYXRlAAAAAAEAAAAAAAAADm1pZ3JhdGlvbl9kYXRhAAAAAAAOAAAAAAAAAAAAAABeUGVybWFuZW50bHkgZnJlZXplcyB0aGUgY29udHJhY3QsIHByZXZlbnRpbmcgYW55IGZ1dHVyZSB1cGdyYWRlcy4KVGhpcyBhY3Rpb24gaXMgaXJyZXZlcnNpYmxlLgAAAAAABmZyZWV6ZQAAAAAAAAAAAAAAAAAAAAAAO1JldHVybnMgd2hldGhlciB0aGUgY29udHJhY3QgaXMgZnJvemVuICh1cGdyYWRlcyBkaXNhYmxlZCkuAAAAAAlpc19mcm96ZW4AAAAAAAAAAAAAAQAAAAEAAAAEAAAAAAAAAAAAAAANRW5kcG9pbnRFcnJvcgAAAAAAABkAAAAAAAAAEUFscmVhZHlSZWdpc3RlcmVkAAAAAAAAAQAAAAAAAAANQ29tcG9zZUV4aXN0cwAAAAAAAAIAAAAAAAAAD0NvbXBvc2VOb3RGb3VuZAAAAAADAAAAAAAAABxEZWZhdWx0UmVjZWl2ZUxpYlVuYXZhaWxhYmxlAAAABAAAAAAAAAAZRGVm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cmFfZGF0YQAAAAAADgAAAAAAAAAAAAAABnJlYXNvbgAAAAAADgAAAAAAAAACAAAAAQAAAC1QYXJhbWV0ZXJzIGZvciBzZW5kaW5nIGEgY3Jvc3MtY2hhaW4gbWVzc2FnZS4AAAAAAAAAAAAAD01lc3NhZ2luZ1BhcmFtcwAAAAAFAAAAK0Rlc3RpbmF0aW9uIGVuZHBvaW50IElEIChjaGFpbiBpZGVudGlmaWVyKS4AAAAAB2RzdF9laWQAAAAABAAAABxUaGUgbWVzc2FnZSBwYXlsb2FkIHRvIHNlbmQuAAAAB21lc3NhZ2UAAAAADgAAACFFbmNvZGVkIGV4ZWN1dG9yIGFuZCBEVk4gb3B0aW9ucy4AAAAAAAAHb3B0aW9ucwAAAAAOAAAAOVdoZXRoZXIgdG8gcGF5IGZlZXMgaW4gWlJPIHRva2VuIGluc3RlYWQgb2YgbmF0aXZlIHRva2VuLgAAAAAAAApwYXlfaW5fenJvAAAAAAABAAAANVJlY2VpdmVyIGFkZHJlc3Mgb24gdGhlIGRlc3RpbmF0aW9uIGNoYWluICgzMiBieXRlcykuAAAAAAAACHJlY2VpdmVyAAAD7gAAACAAAAABAAAATVNvdXJjZSBtZXNzYWdlIGluZm9ybWF0aW9uIGlkZW50aWZ5aW5nIHdoZXJlIGEgY3Jvc3MtY2hhaW4gbWVzc2FnZSBjYW1lIGZyb20uAAAAAAAAAAAAAAZPcmlnaW4AAAAAAAMAAAAXTm9uY2UgZm9yIHRoaXMgcGF0aHdheS4AAAAABW5vbmNlAAAAAAAABgAAAC5TZW5kZXIgYWRkcmVzcyBvbiB0aGUgc291cmNlIGNoYWluICgzMiBieXRlcykuAAAAAAAGc2VuZGVyAAAAAAPuAAAAIAAAACZTb3VyY2UgZW5kcG9pbnQgSUQgKGNoYWluIGlkZW50aWZpZXIpLgAAAAAAB3NyY19laWQAAAAABAAAAAEAAAAoRmVlIHN0cnVjdHVyZSBmb3IgY3Jvc3MtY2hhaW4gbWVzc2FnaW5nLgAAAAAAAAAMTWVzc2FnaW5nRmVlAAAAAgAAAB9GZWUgcGFpZCBpbiBuYXRpdmUgdG9rZW4gKFhMTSkuAAAAAApuYXRpdmVfZmVlAAAAAAALAAAAKEZlZSBwYWlkIGluIFpSTyB0b2tlbiAoTGF5ZXJaZXJvIHRva2VuKS4AAAAHenJvX2ZlZQAAAAALAAAAAQAAAEJSZWNlaXB0IHJldHVybmVkIGFmdGVyIHN1Y2Nlc3NmdWxseSBzZW5kaW5nIGEgY3Jvc3MtY2hhaW4gbWVzc2FnZS4AAAAAAAAAAAAQTWVzc2FnaW5nUmVjZWlwdAAAAAMAAAApVGhlIGZlZXMgY2hhcmdlZCBmb3Igc2VuZGluZyB0aGUgbWVzc2FnZS4AAAAAAAADZmVlAAAAB9AAAAAMTWVzc2FnaW5nRmVlAAAAK0dsb2JhbGx5IHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgbWVzc2FnZS4AAAAABGd1aWQAAAPuAAAAIAAAACRUaGUgb3V0Ym91bmQgbm9uY2UgZm9yIHRoaXMgcGF0aHdheS4AAAAFbm9uY2UAAAAAAAAGAAAAAgAAADhUeXBlIG9mIG1lc3NhZ2UgbGlicmFyeSBpbmRpY2F0aW5nIHN1cHBvcnRlZCBvcGVyYXRpb25zLgAAAAAAAAAOTWVzc2FnZUxpYlR5cGUAAAAAAAMAAAAAAAAAH1N1cHBvcnRzIG9ubHkgc2VuZGluZyBtZXNzYWdlcy4AAAAABFNlbmQAAAAAAAAAIVN1cHBvcnRzIG9ubHkgcmVjZWl2aW5nIG1lc3NhZ2VzLgAAAAAAAAdSZWNlaXZlAAAAAAAAAAAtU3VwcG9ydHMgYm90aCBzZW5kaW5nIGFuZCByZWNlaXZpbmcgbWVzc2FnZXMuAAAAAAAADlNlbmRBbmRSZWNlaXZlAAAAAAABAAAAt1ZlcnNpb24gaW5mb3JtYXRpb24gZm9yIGEgbWVzc2FnZSBsaWJyYXJ5LgoKTm90ZTogYG1pbm9yYCBhbmQgYGVuZHBvaW50X3ZlcnNpb25gIHVzZSBgdTMyYCBpbnN0ZWFkIG9mIGB1OGAgYmVjYXVzZSBTdGVsbGFyIGRvZXMgbm90CnN1cHBvcnQgYHU4YCB0eXBlcyBpbiBjb250cmFjdCBpbnRlcmZhY2UgZnVuY3Rpb25zLgAAAAAAAAAAEU1lc3NhZ2VMaWJWZXJzaW9uAAAAAAAAAwAAADNFbmRwb2ludCB2ZXJzaW9uIChzaG91bGQgbm90IGV4Y2VlZCB1ODo6TUFYID0gMjU1KS4AAAAAEGVuZHBvaW50X3ZlcnNpb24AAAAEAAAAFU1ham9yIHZlcnNpb24gbnVtYmVyLgAAAAAAAAVtYWpvcgAAAAAAAAYAAAA3TWlub3IgdmVyc2lvbiBudW1iZXIgKHNob3VsZCBub3QgZXhjZWVkIHU4OjpNQVggPSAyNTUpLgAAAAAFbWlub3IAAAAAAAAEAAAAAQAAADZUaW1lb3V0IGNvbmZpZ3VyYXRpb24gZm9yIHJlY2VpdmUgbGlicmFyeSB0cmFuc2l0aW9ucy4AAAAAAAAAAAAHVGltZW91dAAAAAACAAAAKFVuaXggdGltZXN0YW1wIHdoZW4gdGhlIHRpbWVvdXQgZXhwaXJlcy4AAAAGZXhwaXJ5AAAAAAAGAAAAKVRoZSBuZXcgbGlicmFyeSBhZGRyZXNzIHRvIHRyYW5zaXRpb24gdG8uAAAAAAAAA2xpYgAAAAATAAAAAQAAADVQYXJhbWV0ZXJzIGZvciBzZXR0aW5nIG1lc3NhZ2UgbGlicmFyeSBjb25maWd1cmF0aW9uLgAAAAAAAAAAAAAOU2V0Q29uZmlnUGFyYW0AAAAAAAMAAAAfWERSLWVuY29kZWQgY29uZmlndXJhdGlvbiBkYXRhLgAAAAAGY29uZmlnAAAAAAAOAAAAMFRoZSB0eXBlIG9mIGNvbmZpZ3VyYXRpb24gKGUuZy4sIGV4ZWN1dG9yLCBVTE4pLgAAAAtjb25maWdfdHlwZQAAAAAEAAAAJ1RoZSBlbmRwb2ludCBJRCB0aGlzIGNvbmZpZyBhcHBsaWVzIHRvLgAAAAADZWlkAAAAAAQAAAABAAAAMVJlc29sdmVkIGxpYnJhcnkgaW5mb3JtYXRpb24gd2l0aCBkZWZhdWx0IHN0YXR1cy4AAAAAAAAAAAAAD1Jlc29sdmVkTGlicmFyeQAAAAACAAAARFdoZXRoZXIgdGhpcyBpcyB0aGUgZGVmYXVsdCBsaWJyYXJ5ICh0cnVlKSBvciBPQXBwLXNwZWNpZmljIChmYWxzZSkuAAAACmlzX2RlZmF1bHQAAAAAAAEAAAAdVGhlIHJlc29sdmVkIGxpYnJhcnkgYWRkcmVzcy4AAAAAAAADbGliAAAAABMAAAABAAAASE91dGJvdW5kIHBhY2tldCBjb250YWluaW5nIGFsbCBpbmZvcm1hdGlvbiBmb3IgY3Jvc3MtY2hhaW4gdHJhbnNtaXNzaW9uLgAAAAAAAAAOT3V0Ym91bmRQYWNrZXQAAAAAAAcAAAAYRGVzdGluYXRpb24gZW5kcG9pbnQgSUQuAAAAB2RzdF9laWQAAAAABAAAACxHbG9iYWxseSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBtZXNzYWdlLgAAAARndWlkAAAD7gAAACAAAAAUVGhlIG1lc3NhZ2UgcGF5bG9hZC4AAAAHbWVzc2FnZQAAAAAOAAAAIE91dGJvdW5kIG5vbmNlIGZvciB0aGlzIHBhdGh3YXkuAAAABW5vbmNlAAAAAAAABgAAADFSZWNlaXZlciBhZGRyZXNzIG9uIGRlc3RpbmF0aW9uIGNoYWluICgzMiBieXRlcykuAAAAAAAACHJlY2VpdmVyAAAD7gAAACAAAAAfU2VuZGVyIGFkZHJlc3Mgb24gc291cmNlIGNoYWluLgAAAAAGc2VuZGVyAAAAAAATAAAAE1NvdXJjZSBlbmRwb2ludCBJRC4AAAAAB3NyY19laWQAAAAABAAAAAEAAAArQSBmZWUgcmVjaXBpZW50IHdpdGggdGhlIGFtb3VudCB0byBiZSBwYWlkLgAAAAAAAAAADEZlZVJlY2lwaWVudAAAAAIAAAAVQW1vdW50IG9mIGZlZSB0byBwYXkuAAAAAAAABmFtb3VudAAAAAAACwAAAB9UaGUgYWRkcmVzcyB0byBzZW5kIHRoZSBmZWUgdG8uAAAAAAJ0bwAAAAAAEwAAAAEAAAA8UmVzdWx0IG9mIHNlbmQgb3BlcmF0aW9uIGNvbnRhaW5pbmcgZmVlcyBhbmQgZW5jb2RlZCBwYWNrZXQuAAAAAAAAAA1GZWVzQW5kUGFja2V0AAAAAAAAAwAAACpUaGUgZW5jb2RlZCBwYWNrZXQgcmVhZHkgZm9yIHRyYW5zbWlzc2lvbi4AAAAAAA5lbmNvZGVkX3BhY2tldAAAAAAADgAAAD9MaXN0IG9mIG5hdGl2ZSB0b2tlbiBmZWUgcmVjaXBpZW50cyAoZXhlY3V0b3IsIERWTnMsIHRyZWFzdXJ5KS4AAAAAFW5hdGl2ZV9mZWVfcmVjaXBpZW50cwAAAAAAA+oAAAfQAAAADEZlZVJlY2lwaWVudAAAACxMaXN0IG9mIFpSTyB0b2tlbiBmZWUgcmVjaXBpZW50cyAodHJlYXN1cnkpLgAAABJ6cm9fZmVlX3JlY2lwaWVudHMAAAAAA+oAAAfQAAAADEZlZVJlY2lwaWVudAAAAAQAAAAdUGFja2V0Q29kZWNWMUVycm9yOiAxMTAwLTExMDkAAAAAAAAAAAAAElBhY2tldENvZGVjVjFFcnJvcgAAAAAAAgAAAAAAAAATSW52YWxpZFBhY2tldEhlYWRlcgAAAARMAAAAAAAAABRJbnZhbGlkUGFja2V0VmVyc2lvbgAABE0AAAAEAAAAHVdvcmtlck9wdGlvbnNFcnJvcjogMTExMC0xMTE5AAAAAAAAAAAAABJXb3JrZXJPcHRpb25zRXJyb3IAAAAAAAkAAAAAAAAAEkludmFsaWRCeXRlc0xlbmd0aAAAAAAEVgAAAAAAAAAZSW52YWxpZExlZ2FjeU9wdGlvbnNUeXBlMQAAAAAABFcAAAAAAAAAGUludmFsaWRMZWdhY3lPcHRpb25zVHlwZTIAAAAAAARYAAAAAAAAABFJbnZhbGlkT3B0aW9uVHlwZQAAAAAABFkAAAAAAAAADkludmFsaWRPcHRpb25zAAAAAARaAAAAAAAAAA9JbnZhbGlkV29ya2VySWQAAAAEWwAAAAAAAAAdTGVnYWN5T3B0aW9uc1R5cGUxR2FzT3ZlcmZsb3cAAAAAAARcAAAAAAAAACBMZWdhY3lPcHRpb25zVHlwZTJBbW91bnRPdmVyZmxvdwAABF0AAAAAAAAAHUxlZ2FjeU9wdGlvbnNUeXBlMkdhc092ZXJmbG93AAAAAAAEXgAAAAQAAAAAAAAAAAAAAAtVbG4zMDJFcnJvcgAAAAATAAAAAAAAAB1EZWZhdWx0RXhlY3V0b3JDb25maWdOb3RGb3VuZAAAAAAAAAEAAAAAAAAAH0RlZmF1bHRSZWNlaXZlVWxuQ29uZmlnTm90Rm91bmQAAAAAAgAAAAAAAAAcRGVmYXVsdFNlbmRVbG5Db25maWdOb3RGb3VuZAAAAAMAAAAAAAAAFUR1cGxpY2F0ZU9wdGlvbmFsRFZOcwAAAAAAAAQAAAAAAAAAFUR1cGxpY2F0ZVJlcXVpcmVkRFZOcwAAAAAAAAUAAAAAAAAADUludmFsaWRDb25maWcAAAAAAAAGAAAAAAAAABFJbnZhbGlkQ29uZmlnVHlwZQAAAAAAAAcAAAAAAAAAFEludmFsaWRDb25maXJtYXRpb25zAAAACAAAAAAAAAAKSW52YWxpZEVJRAAAAAAACQAAAAAAAAASSW52YWxpZE1lc3NhZ2VTaXplAAAAAAAKAAAAAAAAABdJbnZhbGlkT3B0aW9uYWxEVk5Db3VudAAAAAALAAAAAAAAABNJbnZhbGlkT3B0aW9uYWxEVk5zAAAAAAwAAAAAAAAAG0ludmFsaWRPcHRpb25hbERWTlRocmVzaG9sZAAAAAANAAAAAAAAABdJbnZhbGlkUmVxdWlyZWREVk5Db3VudAAAAAAOAAAAAAAAABNJbnZhbGlkUmVxdWlyZWREVk5zAAAAAA8AAAAAAAAAEFVsbkF0TGVhc3RPbmVEVk4AAAAQAAAAAAAAAA5VbnN1cHBvcnRlZEVpZAAAAAAAEQAAAAAAAAAJVmVyaWZ5aW5nAAAAAAAAEgAAAAAAAAAPWmVyb01lc3NhZ2VTaXplAAAAABMAAAAFAAAAAAAAAAAAAAARRXhlY3V0b3JDb25maWdTZXQAAAAAAAABAAAAE2V4ZWN1dG9yX2NvbmZpZ19zZXQAAAAAAwAAAAAAAAAGc2VuZGVyAAAAAAATAAAAAQAAAAAAAAAHZHN0X2VpZAAAAAAEAAAAAQAAAAAAAAAGY29uZmlnAAAAAAfQAAAAEk9BcHBFeGVjdXRvckNvbmZpZwAAAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAAQU2VuZFVsbkNvbmZpZ1NldAAAAAEAAAATc2VuZF91bG5fY29uZmlnX3NldAAAAAADAAAAAAAAAAZzZW5kZXIAAAAAABMAAAABAAAAAAAAAAdkc3RfZWlkAAAAAAQAAAABAAAAAAAAAAZjb25maWcAAAAAB9AAAAANT0FwcFVsbkNvbmZpZwAAAAAAAAAAAAACAAAABQAAAAAAAAAAAAAAE1JlY2VpdmVVbG5Db25maWdTZXQAAAAAAQAAABZyZWNlaXZlX3Vsbl9jb25maWdfc2V0AAAAAAADAAAAAAAAAAhyZWNlaXZlcgAAABMAAAABAAAAAAAAAAdzcmNfZWlkAAAAAAQAAAABAAAAAAAAAAZjb25maWcAAAAAB9AAAAANT0FwcFVsbkNvbmZpZwAAAAAAAAAAAAACAAAABQAAAAAAAAAAAAAAGURlZmF1bHRFeGVjdXRvckNvbmZpZ3NTZXQAAAAAAAABAAAAHGRlZmF1bHRfZXhlY3V0b3JfY29uZmlnc19zZXQAAAABAAAAAAAAAAZwYXJhbXMAAAAAA+oAAAfQAAAAHVNldERlZmF1bHRFeGVjdXRvckNvbmZpZ1BhcmFtAAAAAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAAYRGVmYXVsdFNlbmRVbG5Db25maWdzU2V0AAAAAQAAABxkZWZhdWx0X3NlbmRfdWxuX2NvbmZpZ3Nfc2V0AAAAAQAAAAAAAAAGcGFyYW1zAAAAAAPqAAAH0AAAABhTZXREZWZhdWx0VWxuQ29uZmlnUGFyYW0AAAAAAAAAAgAAAAUAAAAAAAAAAAAAABtEZWZhdWx0UmVjZWl2ZVVsbkNvbmZpZ3NTZXQAAAAAAQAAAB9kZWZhdWx0X3JlY2VpdmVfdWxuX2NvbmZpZ3Nfc2V0AAAAAAEAAAAAAAAABnBhcmFtcwAAAAAD6gAAB9AAAAAYU2V0RGVmYXVsdFVsbkNvbmZpZ1BhcmFtAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAAPRXhlY3V0b3JGZWVQYWlkAAAAAAEAAAARZXhlY3V0b3JfZmVlX3BhaWQAAAAAAAADAAAAAAAAAAhleGVjdXRvcgAAABMAAAABAAAAAAAAAARndWlkAAAD7gAAACAAAAABAAAAAAAAAANmZWUAAAAH0AAAAAxGZWVSZWNpcGllbnQAAAAAAAAAAgAAAAUAAAAAAAAAAAAAAApEVk5GZWVQYWlkAAAAAAABAAAADGR2bl9mZWVfcGFpZAAAAAMAAAAAAAAABGd1aWQAAAPuAAAAIAAAAAEAAAAAAAAABGR2bnMAAAPqAAAAEwAAAAAAAAAAAAAABGZlZXMAAAPqAAAH0AAAAAxGZWVSZWNpcGllbnQAAAAAAAAAAgAAAAUAAAAAAAAAAAAAAA9QYXlsb2FkVmVyaWZpZWQAAAAAAQAAABBwYXlsb2FkX3ZlcmlmaWVkAAAABAAAAAAAAAADZHZuAAAAABMAAAABAAAAAAAAAAZoZWFkZXIAAAAAAA4AAAAAAAAAAAAAAA1jb25maXJtYXRpb25zAAAAAAAABgAAAAAAAAAAAAAACnByb29mX2hhc2gAAAAAA+4AAAAgAAAAAAAAAAIAAAABAAAAOFVsdHJhIExpZ2h0IE5vZGUgY29uZmlndXJhdGlvbiBmb3IgbWVzc2FnZSB2ZXJpZmljYXRpb24uAAAAAAAAAAlVbG5Db25maWcAAAAAAAAEAAAASk51bWJlciBvZiBibG9jayBjb25maXJtYXRpb25zIHJlcXVpcmVkIGJlZm9yZSBtZXNzYWdlIHZlcmlmaWNhdGlvbiBiZWdpbnMuAAAAAAANY29uZmlybWF0aW9ucwAAAAAAAAYAAAAzTWluaW11bSBudW1iZXIgb2Ygb3B0aW9uYWwgRFZOcyByZXF1aXJlZCB0byB2ZXJpZnkuAAAAABZvcHRpb25hbF9kdm5fdGhyZXNob2xkAAAAAAAEAAAAQExpc3Qgb2YgRFZOIGFkZHJlc3NlcyBmcm9tIHdoaWNoIGEgdGhyZXNob2xkIG51bWJlciBtdXN0IHZlcmlmeS4AAAANb3B0aW9uYWxfZHZucwAAAAAAA+oAAAATAAAARkxpc3Qgb2YgRFZOIGFkZHJlc3NlcyB0aGF0IG11c3QgQUxMIHZlcmlmeSB0aGUgbWVzc2FnZSAobm8gdGhyZXNob2xkKS4AAAAAAA1yZXF1aXJlZF9kdm5zAAAAAAAD6gAAABMAAAABAAAAPE9BcHAtc3BlY2lmaWMgVUxOIGNvbmZpZ3VyYXRpb24gd2l0aCBkZWZhdWx0IG92ZXJyaWRlIGZsYWdzLgAAAAAAAAANT0FwcFVsbkNvbmZpZwAAAAAAAAQAAABFT0FwcC1zcGVjaWZpYyBVTE4gY29uZmlndXJhdGlvbiAodXNlZCB3aGVuIGRlZmF1bHRzIGFyZSBub3QgYXBwbGllZCkuAAAAAAAACnVsbl9jb25maWcAAAAAB9AAAAAJVWxuQ29uZmlnAAAAAAAAJVdoZXRoZXIgdG8gdXNlIGRlZmF1bHQgY29uZmlybWF0aW9ucy4AAAAAAAAZdXNlX2RlZmF1bHRfY29uZmlybWF0aW9ucwAAAAAAAAEAAAAlV2hldGhlciB0byB1c2UgZGVmYXVsdCBvcHRpb25hbCBEVk5zLgAAAAAAABl1c2VfZGVmYXVsdF9vcHRpb25hbF9kdm5zAAAAAAAAAQAAACVXaGV0aGVyIHRvIHVzZSBkZWZhdWx0IHJlcXVpcmVkIERWTnMuAAAAAAAAGXVzZV9kZWZhdWx0X3JlcXVpcmVkX2R2bnMAAAAAAAABAAAAAQAAAFJQYXJhbWV0ZXIgZm9yIHNldHRpbmcgZGVmYXVsdCBVTE4gY29uZmlndXJhdGlvbiBmb3IgYSBkZXN0aW5hdGlvbi9zb3VyY2UgZW5kcG9pbnQuAAAAAAAAAAAAGFNldERlZmF1bHRVbG5Db25maWdQYXJhbQAAAAIAAAAoVGhlIFVMTiBjb25maWd1cmF0aW9uIHRvIHNldCBhcyBkZWZhdWx0LgAAAAZjb25maWcAAAAAB9AAAAAJVWxuQ29uZmlnAAAAAAAAS1RoZSBkZXN0aW5hdGlvbiBlbmRwb2ludCBJRCAoZm9yIHNlbmQpIG9yIHNvdXJjZSBlbmRwb2ludCBJRCAoZm9yIHJlY2VpdmUpLgAAAAADZWlkAAAAAAQAAAABAAAALEV4ZWN1dG9yIGNvbmZpZ3VyYXRpb24gZm9yIG1lc3NhZ2UgZGVsaXZlcnkuAAAAAAAAAA5FeGVjdXRvckNvbmZpZwAAAAAAAgAAAENBZGRyZXNzIG9mIHRoZSBleGVjdXRvciBjb250cmFjdCByZXNwb25zaWJsZSBmb3IgbWVzc2FnZSBleGVjdXRpb24uAAAAAAhleGVjdXRvcgAAABMAAAA5TWF4aW11bSBzaXplIG9mIG1lc3NhZ2VzIHRoYXQgY2FuIGJlIGV4ZWN1dGVkIChpbiBieXRlcykuAAAAAAAAEG1heF9tZXNzYWdlX3NpemUAAAAEAAAAAQAAAFtPQXBwLXNwZWNpZmljIGV4ZWN1dG9yIGNvbmZpZ3VyYXRpb24uCgpJZiBleGVjdXRvciBpcyBgTm9uZWAsIHRoZSBkZWZhdWx0IGV4ZWN1dG9yIGlzIHVzZWQuAAAAAAAAAAAST0FwcEV4ZWN1dG9yQ29uZmlnAAAAAAACAAAAaEFkZHJlc3Mgb2YgdGhlIGV4ZWN1dG9yIGNvbnRyYWN0IHRvIGJlIHVzZWQgZm9yIG1lc3NhZ2UgZXhlY3V0aW9uLiBOb25lIG1lYW5zIHVzZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uAAAACGV4ZWN1dG9yAAAD6AAAABMAAABcTWF4aW11bSBzaXplIG9mIG1lc3NhZ2VzIHRoYXQgY2FuIGJlIGV4ZWN1dGVkIChpbiBieXRlcykuIDAgbWVhbnMgdXNlIGRlZmF1bHQgY29uZmlndXJhdGlvbi4AAAAQbWF4X21lc3NhZ2Vfc2l6ZQAAAAQAAAABAAAAUFBhcmFtZXRlciBmb3Igc2V0dGluZyBkZWZhdWx0IGV4ZWN1dG9yIGNvbmZpZ3VyYXRpb24gZm9yIGEgZGVzdGluYXRpb24gZW5kcG9pbnQuAAAAAAAAAB1TZXREZWZhdWx0RXhlY3V0b3JDb25maWdQYXJhbQAAAAAAAAIAAAAtVGhlIGV4ZWN1dG9yIGNvbmZpZ3VyYXRpb24gdG8gc2V0IGFzIGRlZmF1bHQuAAAAAAAABmNvbmZpZwAAAAAH0AAAAA5FeGVjdXRvckNvbmZpZwAAAAAAHFRoZSBkZXN0aW5hdGlvbiBlbmRwb2ludCBJRC4AAAAHZHN0X2VpZAAAAAAEAAAABAAAABxCdWZmZXJSZWFkZXJFcnJvcjogMTAwMC0xMDA5AAAAAAAAABFCdWZmZXJSZWFkZXJFcnJvcgAAAAAAAAIAAAAAAAAADUludmFsaWRMZW5ndGgAAAAAAAPoAAAAAAAAABVJbnZhbGlkQWRkcmVzc1BheWxvYWQAAAAAAAPpAAAABAAAABxCdWZmZXJXcml0ZXJFcnJvcjogMTAxMC0xMDE5AAAAAAAAABFCdWZmZXJXcml0ZXJFcnJvcgAAAAAAAAEAAAAAAAAAFUludmFsaWRBZGRyZXNzUGF5bG9hZAAAAAAAA/IAAAAEAAAAH1R0bENvbmZpZ3VyYWJsZUVycm9yOiAxMDIwLTEwMjkAAAAAAAAAABRUdGxDb25maWd1cmFibGVFcnJvcgAAAAMAAAAAAAAAEEludmFsaWRUdGxDb25maWcAAAP8AAAAAAAAAA9UdGxDb25maWdGcm96ZW4AAAAD/QAAAAAAAAAWVHRsQ29uZmlnQWxyZWFkeUZyb3plbgAAAAAD/gAAAAQAAAAXT3duYWJsZUVycm9yOiAxMDMwLTEwMzkAAAAAAAAAAAxPd25hYmxlRXJyb3IAAAAGAAAAAAAAABNJbnZhbGlkUGVuZGluZ093bmVyAAAABAYAAAAAAAAACkludmFsaWRUdGwAAAAABAcAAAAAAAAAEU5vUGVuZGluZ1RyYW5zZmVyAAAAAAAECAAAAAAAAAAPT3duZXJBbHJlYWR5U2V0AAAABAkAAAAAAAAAC093bmVyTm90U2V0AAAABAoAAAAAAAAAElRyYW5zZmVySW5Qcm9ncmVzcwAAAAAECwAAAAQAAAAYQnl0ZXNFeHRFcnJvcjogMTA0MC0xMDQ5AAAAAAAAAA1CeXRlc0V4dEVycm9yAAAAAAAAAQAAAAAAAAAOTGVuZ3RoTWlzbWF0Y2gAAAAABBAAAAAEAAAAG1VwZ3JhZGVhYmxlRXJyb3I6IDEwNTAtMTA1OQAAAAAAAAAAEFVwZ3JhZGVhYmxlRXJyb3IAAAADAAAAAAAAABRJbnZhbGlkTWlncmF0aW9uRGF0YQAABBoAAAAAAAAAE01pZ3JhdGlvbk5vdEFsbG93ZWQAAAAEGwAAAAAAAAAOVXBncmFkZXNGcm96ZW4AAAAABBwAAAAEAAAAGE11bHRpc2lnRXJyb3I6IDEwNjAtMTA2OQAAAAAAAAANTXVsdGlzaWdFcnJvcgAAAAAAAAgAAAAAAAAAEkFscmVhZHlJbml0aWFsaXplZAAAAAAEJAAAAAAAAAANSW52YWxpZFNpZ25lcgAAAAAABCUAAAAAAAAADlNpZ25hdHVyZUVycm9yAAAAAAQmAAAAAAAAABNTaWduZXJBbHJlYWR5RXhpc3RzAAAABCcAAAAAAAAADlNpZ25lck5vdEZvdW5kAAAAAAQoAAAAAAAAAB1Ub3RhbFNpZ25lcnNMZXNzVGhhblRocmVzaG9sZAAAAAAABCkAAAAAAAAAD1Vuc29ydGVkU2lnbmVycwAAAAQqAAAAAAAAAA1aZXJvVGhyZXNob2xkAAAAAAAEKwAAAAUAAAAwRXZlbnQgZW1pdHRlZCB3aGVuIGEgc2lnbmVyIGlzIGFkZGVkIG9yIHJlbW92ZWQuAAAAAAAAAAlTaWduZXJTZXQAAAAAAAABAAAACnNpZ25lcl9zZXQAAAAAAAIAAAAAAAAABnNpZ25lcgAAAAAD7gAAABQAAAABAAAAAAAAAAZhY3RpdmUAAAAAAAEAAAAAAAAAAgAAAAUAAAA2RXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzaWduYXR1cmUgdGhyZXNob2xkIGlzIGNoYW5nZWQuAAAAAAAAAAAADFRocmVzaG9sZFNldAAAAAEAAAANdGhyZXNob2xkX3NldAAAAAAAAAEAAAAAAAAACXRocmVzaG9sZAAAAAAAAAQAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAA9NdWx0aXNpZ1N0b3JhZ2UAAAAAAgAAAAAAAAAAAAAAB1NpZ25lcnMAAAAAAAAAAAAAAAAJVGhyZXNob2xkAAAAAAAABQAAAFdFdmVudCBlbWl0dGVkIHdoZW4gb3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIChib3RoIHNpbmdsZS1zdGVwIGFuZCB0d28tc3RlcCBjb21wbGV0aW9uKS4AAAAAAAAAABRPd25lcnNoaXBUcmFuc2ZlcnJlZAAAAAEAAAAVb3duZXJzaGlwX3RyYW5zZmVycmVkAAAAAAAAAgAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAAgAAAAUAAAA7RXZlbnQgZW1pdHRlZCB3aGVuIGEgMi1zdGVwIG93bmVyc2hpcCB0cmFuc2ZlciBpcyBwcm9wb3NlZC4AAAAAAAAAABVPd25lcnNoaXBUcmFuc2ZlcnJpbmcAAAAAAAABAAAAFm93bmVyc2hpcF90cmFuc2ZlcnJpbmcAAAAAAAMAAAAAAAAACW9sZF9vd25lcgAAAAAAABMAAAAAAAAAAAAAAAluZXdfb3duZXIAAAAAAAATAAAAAAAAAAAAAAADdHRsAAAAAAQAAAAAAAAAAgAAAAUAAAAqRXZlbnQgZW1pdHRlZCB3aGVuIG93bmVyc2hpcCBpcyByZW5vdW5jZWQuAAAAAAAAAAAAEk93bmVyc2hpcFJlbm91bmNlZAAAAAAAAQAAABNvd25lcnNoaXBfcmVub3VuY2VkAAAAAAEAAAAAAAAACW9sZF9vd25lcgAAAAAAABMAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAA5Pd25hYmxlU3RvcmFnZQAAAAAAAgAAAAAAAAAAAAAABU93bmVyAAAAAAAAAAAAAAAAAAAMUGVuZGluZ093bmVyAAAAAQAAAElUVEwgY29uZmlndXJhdGlvbjogdGhyZXNob2xkICh3aGVuIHRvIGV4dGVuZCkgYW5kIGV4dGVuZF90byAodGFyZ2V0IFRUTCkuAAAAAAAAAAAAAAlUdGxDb25maWcAAAAAAAACAAAAKFRhcmdldCBUVEwgYWZ0ZXIgZXh0ZW5zaW9uIChpbiBsZWRnZXJzKS4AAAAJZXh0ZW5kX3RvAAAAAAAABAAAADNUVEwgdGhyZXNob2xkIHRoYXQgdHJpZ2dlcnMgZXh0ZW5zaW9uIChpbiBsZWRnZXJzKS4AAAAACXRocmVzaG9sZAAAAAAAAAQAAAAFAAAAJ0V2ZW50IGVtaXR0ZWQgd2hlbiBUVEwgY29uZmlncyBhcmUgc2V0LgAAAAAAAAAADVR0bENvbmZpZ3NTZXQAAAAAAAABAAAAD3R0bF9jb25maWdzX3NldAAAAAACAAAAAAAAAAhpbnN0YW5jZQAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAAAAAAAACnBlcnNpc3RlbnQAAAAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAAACAAAABQAAACpFdmVudCBlbWl0dGVkIHdoZW4gVFRMIGNvbmZpZ3MgYXJlIGZyb3plbi4AAAAAAAAAAAAQVHRsQ29uZmlnc0Zyb3plbgAAAAEAAAASdHRsX2NvbmZpZ3NfZnJvemVuAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAABBUdGxDb25maWdTdG9yYWdlAAAAAwAAAAAAAAAAAAAABkZyb3plbgAAAAAAAAAAAAAAAAAISW5zdGFuY2UAAAAAAAAAAAAAAApQZXJzaXN0ZW50AAAAAAACAAAAAAAAAAAAAAASVXBncmFkZWFibGVTdG9yYWdlAAAAAAACAAAAAAAAAAAAAAAGRnJvemVuAAAAAAAAAAAAAAAAAAlNaWdyYXRpbmcAAAAAiwEOY29udHJhY3RtZXRhdjAAAAAAAAAABmJpbnZlcgAAAAAABTAuMC4xAAAAAAAAAAAAAAVyc3ZlcgAAAAAAAAYxLjkwLjAAAAAAAAAAAAAIcnNzZGt2ZXIAAAAvMjMuNC4wIzY3M2Q2YzRmMjM2OGQyODJkMjVkYTI5YmRhNTVjMjFiOGJlNjljYTYAAB4RY29udHJhY3RlbnZtZXRhdjAAAAAAAAAAFwAAAAA=";
11
+ export declare const WASM_BASE64 = "AGFzbQEAAAABmQEaYAJ+fgF+YAN+fn4BfmABfgF+YAR+fn5+AX5gAAF+YAJ/fwBgAX8BfmACfn4Bf2ACf34AYAABf2ABfwBgAX8Bf2AAAGACfn8AYAF+AGADf39/AGACfn4AYAN/fn4AYAJ/fwF+YAR/f39/AX5gA35/fgF/YAR/fn5+AX9gBn9+fn9+fgBgA35/fwBgA35+fgF/YAV+f39/fwACowEbAWwBMQAAAWwBXwABAWEBMAACAXgBMAAAAWwBNgACAWIBMAACAWwBNwADAXgBMQAAAWwBMgAAAXYBXwAEAWQBXwABAWIBOAACAWIBZQAAAWkBXwACAWkBMAACAWIBMwAAAWIBagAAAWIBMQADAW0BOQABAW0BYQADAXYBZwAAAXgBMwAEAXgBOAAEAWwBMAAAAWwBOAAAAXgBNQACAWIBZgABA2FgBQYHCAcHCQoFCwkGDAQECg0MCg4GCg8IBAYCCAoCBAUEBAQABAIOEAAMCRESAhMEDAQAAAgFBQYEBQUSBAQBDAQEBAQECQAIFAMVABYBABIXCwYSGAwGDAgIGQ8IDwYPBQMBABEGIQR/AUGAgMAAC38AQbyCwAALfwBB84TAAAt/AEGAhcAACwefAxwGbWVtb3J5AgAHdXBncmFkZQA1B21pZ3JhdGUAOAZmcmVlemUAOQlpc19mcm96ZW4AOwphdXRob3JpemVyADwFb3duZXIAPQ1wZW5kaW5nX293bmVyAD8SdHJhbnNmZXJfb3duZXJzaGlwAEAacHJvcG9zZV9vd25lcnNoaXBfdHJhbnNmZXIAQxBhY2NlcHRfb3duZXJzaGlwAEoScmVub3VuY2Vfb3duZXJzaGlwAEwTZXh0ZW5kX2luc3RhbmNlX3R0bABND3NldF90dGxfY29uZmlncwBOC3R0bF9jb25maWdzAFMSZnJlZXplX3R0bF9jb25maWdzAFcVaXNfdHRsX2NvbmZpZ3NfZnJvemVuAFgNX19jb25zdHJ1Y3RvcgBZCGVuZHBvaW50AFsGdWxuMzAyAF0JbG9jYWxfZWlkAF8NaW5pdGlhbGl6YWJsZQBhCnZlcmlmaWFibGUAZApleGVjdXRhYmxlAGYOdWxuX3ZlcmlmaWFibGUAaQFfAwEKX19kYXRhX2VuZAMCC19faGVhcF9iYXNlAwMKoFZgTQECfkIAIQICQAJAIAEQnICAgAAiA0ICEJ2AgIAARQ0AIANCAhCAgICAACICQv8Bg0LNAFINASAAIAI3AwhCASECCyAAIAI3AwAPCwALwgECAX8BfiOAgICAAEEQayIBJICAgIAAAkACQAJAAkACQAJAIABB/wFxDgMAAQIACyABQcCAwIAAQQgQsYCAgAAgASgCAA0DIAEgASkDCBCygICAAAwCCyABQciAwIAAQQYQsYCAgAAgASgCAA0CIAEgASkDCBCygICAAAwBCyABQc6AwIAAQQgQsYCAgAAgASgCAA0BIAEgASkDCBCygICAAAsgASkDCCECIAEpAwBQDQELAAsgAUEQaiSAgICAACACCw8AIAAgARCXgICAAEIBUQsVACAAEJyAgIAAIAFCAhCBgICAABoLDwAgACABEKCAgIAAQQFzCw0AIAAgARCDgICAAFALWAECfyOAgICAAEEQayIAJICAgIAAIABBBGoQooCAgAACQCAAKAIEQQFHDQAgACgCCCAAKAIMEKOAgIAAC0EAEKSAgIAAIQEgAEEQaiSAgICAACABQf0BcQsMACAAQQEQ1ICAgAALGwAgAK1CIIZCBIQgAa1CIIZCBIQQmICAgAAaC0cCAX8BfkECIQECQCAAEPmAgIAAIgJCAhCdgICAAEUNAEEBIQECQAJAIAJCAhCAgICAAKdB/wFxDgIBAgALAAtBACEBCyABC4sBAgJ/AX4jgICAgABBEGsiACSAgICAACAAQQRqEKKAgIAAAkAgACgCBEEBRw0AIAAoAgggACgCDBCjgICAAAtBACEBAkBBABCmgICAACICQgIQnYCAgABFDQBBASEBAkACQCACQgIQgICAgACnQf8BcQ4CAQIACwALQQAhAQsgAEEQaiSAgICAACABC8IBAgF/AX4jgICAgABBEGsiASSAgICAAAJAAkACQAJAAkACQCAAQf8BcQ4DAAECAAsgAUHShMCAAEEGELGAgIAAIAEoAgANAyABIAEpAwgQsoCAgAAMAgsgAUHYhMCAAEEIELGAgIAAIAEoAgANAiABIAEpAwgQsoCAgAAMAQsgAUHghMCAAEEKELGAgIAAIAEoAgANASABIAEpAwgQsoCAgAALIAEpAwghAiABKQMAUA0BCwALIAFBEGokgICAgAAgAgsPABCogICAABCCgICAABoLZgIBfwF+I4CAgIAAQRBrIgAkgICAgAAgABCigICAAAJAIAAoAgBBAUcNACAAKAIEIAAoAggQo4CAgAALIAAQqoCAgAAgACkDCCEBIAApAwBBiggQq4CAgAAgAEEQaiSAgICAACABC0oCAX8BfiOAgICAAEEQayIAJICAgIAAIAAQqoCAgAAgACkDCCEBIAApAwBBiggQq4CAgAAgARCCgICAABogAEEQaiSAgICAACABC1ABAX8jgICAgABBEGsiASSAgICAACABQQRqEKKAgIAAAkAgASgCBEEBRw0AIAEoAgggASgCDBCjgICAAAsgABCwgICAACABQRBqJICAgIAACykAAkAgAKdBAXFFDQAPCyABQfp3aq1CIIZCg4CAgOCAAXwQroCAgAAAC0IBAX8jgICAgABBEGsiACSAgICAACAAEK2AgIAAAkAgACkDAFANAEKDgICAsIEBEK6AgIAAAAsgAEEQaiSAgICAAAuTAQIBfwJ+I4CAgIAAQRBrIgEkgICAgAAgAUEEahCigICAAAJAIAEoAgRBAUcNACABKAIIIAEoAgwQo4CAgAALQgAhAgJAAkBBARCvgICAACIDQgAQnYCAgABFDQAgA0IAEICAgIAAIgJC/wGDQs0AUg0BIAAgAjcDCEIBIQILIAAgAjcDACABQRBqJICAgIAADwsACwsAIAAQmYCAgAAaC5IBAgF/AX4jgICAgABBEGsiASSAgICAAAJAAkACQAJAIABBAXFFDQAgAUHlg8CAAEEMELGAgIAAIAEoAgANAiABIAEpAwgQsoCAgAAMAQsgAUHgg8CAAEEFELGAgIAAIAEoAgANASABIAEpAwgQsoCAgAALIAEpAwghAiABKQMAUA0BCwALIAFBEGokgICAgAAgAgtNAQJ+QgAhAQJAAkBBABCvgICAACICQgIQnYCAgABFDQAgAkICEICAgIAAIgFC/wGDQs0AUg0BIAAgATcDCEIBIQELIAAgATcDAA8LAAtRAgF/AX4jgICAgABBEGsiAySAgICAACADIAEgAhD2gICAAEIBIQQCQCADKAIADQAgACADKQMINwMIQgAhBAsgACAENwMAIANBEGokgICAgAALRAEBfyOAgICAAEEQayICJICAgIAAIAIgATcDCCACQQhqQQEQ1oCAgAAhASAAQgA3AwAgACABNwMIIAJBEGokgICAgAALDgBBgIDAgAAQtICAgAALDAAgAEEgEO6AgIAAC5gBAQF/I4CAgIAAQRBrIgEkgICAgAAgASAAELaAgIAAAkACQCABKAIAQQFGDQAgASkDCCEAIAEQooCAgAACQCABKAIAQQFHDQAgASgCBCABKAIIEKOAgIAACxCngICAABChgICAAA0BQQEQt4CAgAAgABCEgICAABogAUEQaiSAgICAAEICDwsAC0KDgICAwIMBEK6AgIAAAAtCAQF+QgEhAgJAIAFC/wGDQsgAUg0AIAEQi4CAgABCgICAgHCDQoCAgICABFINACAAIAE3AwhCACECCyAAIAI3AwALDABBASAAELqAgIAAC60BAQF/I4CAgIAAQRBrIgEkgICAgAACQAJAAkAgAEL/AYNCyABSDQAgAUEEahCigICAAAJAIAEoAgRBAUcNACABKAIIIAEoAgwQo4CAgAALEKeAgIAAQQEQpICAgABB/QFxRQ0BIAAQhYCAgABC/wGDQgJSDQJBABC3gICAACABQRBqJICAgIAAQgIPCwALQoOAgICwgwEQroCAgAAAC0KDgICAoIMBEK6AgIAAAAtaAQF/I4CAgIAAQRBrIgAkgICAgAAgAEEEahCigICAAAJAIAAoAgRBAUcNACAAKAIIIAAoAgwQo4CAgAALEKeAgIAAQQBBARC6gICAACAAQRBqJICAgIAAQgILGgAgABD5gICAACABrUL/AYNCAhCBgICAABoLCQAQoYCAgACtCwgAEKiAgIAACz4CAX8BfiOAgICAAEEQayIAJICAgIAAIAAQqoCAgAAgACkDACAAKQMIEL6AgIAAIQEgAEEQaiSAgICAACABCw0AIAFCAiAAp0EBcRsLPgIBfwF+I4CAgIAAQRBrIgAkgICAgAAgABCtgICAACAAKQMAIAApAwgQvoCAgAAhASAAQRBqJICAgIAAIAELfQIBfwF+I4CAgIAAQRBrIgEkgICAgAACQCAAQv8Bg0LNAFINACABQQRqEKKAgIAAAkAgASgCBEEBRw0AIAEoAgggASgCDBCjgICAAAsQqYCAgAAhAhCsgICAACAAEMGAgIAAIAIgABDCgICAACABQRBqJICAgIAAQgIPCwALDgBBACAAQgIQxoCAgAALYQIBfwF+I4CAgIAAQRBrIgIkgICAgABB14LAgABBFRDHgICAABDIgICAACEDIAIgADcDCCACIAE3AwAgA0GAg8CAAEECIAJBAhDJgICAABCHgICAABogAkEQaiSAgICAAAvdAgIBfwJ+I4CAgIAAQSBrIgIkgICAgAACQAJAAkAgAEL/AYNCzQBSDQAgAUL/AYNCBFINACACQQhqEKKAgIAAAkAgAigCCEEBRw0AIAIoAgwgAigCEBCjgICAAAsQqYCAgAAhAwJAAkAgAUL/////D1YNACACQQhqEK2AgIAAIAIpAxAhASACKQMIQYgIEKuAgIAAIAEgABCDgICAAFBFDQMQxICAgAAMAQsQxYCAgAAgAUIgiKdJDQNBASAAQgAQxoCAgABBARCvgICAAEIAIAFChICAgHCDIgEgARCGgICAABpBkIPAgABBFhDHgICAABDIgICAACEEIAIgATcDGCACIAM3AxAgAiAANwMIIARBrIPAgABBAyACQQhqQQMQyYCAgAAQh4CAgAAaCyACQSBqJICAgIAAQgIPCwALQoOAgIDggAEQroCAgAAAC0KDgICA8IABEK6AgIAAAAsTAEEBEK+AgIAAQgAQiICAgAAaCzMBAn4QlYCAgAAhAAJAEJaAgIAAQiCIIgEgAEIgiCIAVA0AIAGnIACnaw8LENqAgIAAAAsVACAAEK+AgIAAIAEgAhCBgICAABoLRQIBfwF+I4CAgIAAQRBrIgIkgICAgAAgAiAAIAEQ9oCAgAACQCACKAIAQQFHDQAACyACKQMIIQMgAkEQaiSAgICAACADC2MDAX8BfgF/I4CAgIAAQRBrIgEkgICAgAAgASAANwMAQgIhAkEBIQMCQANAIANFDQEgA0F/aiEDIAAhAgwACwsgASACNwMIIAFBCGpBARDWgICAACEAIAFBEGokgICAgAAgAAsuAAJAIAEgA0YNAAALIACtQiCGQgSEIAKtQiCGQgSEIAGtQiCGQgSEEJKAgIAAC6cBAgF/An4jgICAgABBEGsiACSAgICAACAAEKKAgIAAAkAgACgCAEEBRw0AIAAoAgQgACgCCBCjgICAAAsgABCtgICAACAAKQMIIQEgACkDAEGICBCrgICAACABEIKAgIAAGiAAELCAgIAAAkAgACgCAA0AEMuAgIAAAAsgACkDCCECEMSAgIAAIAEQwYCAgAAgAiABEMKAgIAAIABBEGokgICAgABCAgsJABDagICAAAALoAECAX8CfiOAgICAAEEQayIAJICAgIAAIAAQooCAgAACQCAAKAIAQQFHDQAgACgCBCAAKAIIEKOAgIAACxCpgICAACEBEKyAgIAAQQAQr4CAgABCAhCIgICAABpBxIPAgABBExDHgICAABDIgICAACECIAAgATcDACACQdiDwIAAQQEgAEEBEMmAgIAAEIeAgIAAGiAAQRBqJICAgIAAQgILMQACQCAAQv8Bg0IEUg0AIAFC/wGDQgRSDQAgAEIgiKcgAUIgiKcQo4CAgABCAg8LAAveBAEFfyOAgICAAEHQAGsiAiSAgICAACACQShqIAAQz4CAgAACQCACKAIoQQJGDQAgAkEIakEIaiACQShqQQhqIgMoAgA2AgAgAiACKQIoNwMIIAJBKGogARDPgICAACACKAIoQQJGDQAgAkEYakEIaiADKAIANgIAIAIgAikCKDcDGCACQShqEKKAgIAAAkAgAigCKEEBRw0AIAIoAiwgAigCMBCjgICAAAsQp4CAgAACQAJAAkAQpYCAgAANABDFgICAACIDQYD7gAMgA0GA+4ADSRshBCACIAJBGGo2AiwgAiACQQhqNgIoQQAhAwNAIANBCEYNAwJAIAJBKGogA2ooAgAiBSgCAEEBcUUNACAFKAIIIgYgBEsNAyAFKAIEIAZLDQMLIANBBGohAwwACwtCg4CAgND/ABCugICAAAALQoOAgIDA/wAQroCAgAAACwJAAkAgAigCCEEBRw0AIAIoAgwgAigCEBDQgICAAAwBC0EBEKaAgIAAQgIQiICAgAAaCwJAAkAgAigCGEEBRw0AIAIoAhwgAigCIBDRgICAAAwBC0ECEKaAgIAAQgIQiICAgAAaCyACQShqQQhqIAJBCGpBCGooAgA2AgAgAkE8aiACQRhqQQhqKAIANgIAIAIgAikDCDcDKCACIAIpAxg3AjRBjITAgABBDxDHgICAABDIgICAACEAIAJBKGoQ0oCAgAAhASACIAJBNGoQ0oCAgAA3A0ggAiABNwNAIABBsITAgABBAiACQcAAakECEMmAgIAAEIeAgIAAGiACQdAAaiSAgICAAEICDwsAC2gBAX8jgICAgABBEGsiAiSAgICAAAJAAkAgAUICUQ0AIAJBBGogARD3gICAAAJAIAIoAgRFDQAgAEECNgIADAILIAAgAikCCDcCBCAAQQE2AgAMAQsgAEEANgIACyACQRBqJICAgIAACw4AQQEgACABEPqAgIAACw4AQQIgACABEPqAgIAAC0MCAX8BfiOAgICAAEEQayIBJICAgIAAIAEgABDVgICAAAJAIAEoAgBBAUcNAAALIAEpAwghAiABQRBqJICAgIAAIAILxAECAn8BfiOAgICAAEHAAGsiACSAgICAACAAQQhqEKKAgIAAAkAgACgCCEEBRw0AIAAoAgwgACgCEBCjgICAAAsgAEEIahCigICAACAAQRRqIgFBAhDUgICAACAAQTBqIABBCGoQ1YCAgAACQAJAIAAoAjANACAAKQM4IQIgAEEwaiABENWAgIAAIAAoAjBBAUcNAQsACyAAIAApAzg3AyggACACNwMgIABBIGpBAhDWgICAACECIABBwABqJICAgIAAIAILdwICfwF+I4CAgIAAQRBrIgIkgICAgABBACEDAkACQCABEKaAgIAAIgRCAhCdgICAAEUNACACQQRqIARCAhCAgICAABD3gICAAEEBIQMgAigCBEEBRg0BIAAgAikCCDcCBAsgACADNgIAIAJBEGokgICAgAAPCwALMAACQCABKAIAQQFHDQAgACABKAIEIAEoAggQ+ICAgAAPCyAAQgA3AwAgAEICNwMICxoAIACtQiCGQgSEIAGtQiCGQgSEEJSAgIAAC6oBAQF/I4CAgIAAQSBrIgAkgICAgAAgAEEMahCigICAAAJAIAAoAgxBAUcNACAAKAIQIAAoAhQQo4CAgAALEKeAgIAAAkAQpYCAgABFDQBCg4CAgOD/ABCugICAAAALQQAQpoCAgABCAUICEIGAgIAAGkHAhMCAAEESEMeAgIAAEMiAgIAAQQRBACAAQRhqQQAQyYCAgAAQh4CAgAAaIABBIGokgICAgABCAgsJABClgICAAK0LywEAAkACQAJAIABC/wGDQs0AUg0AIAFC/wGDQs0AUg0AIAJC/wGDQs0AUg0AQYDLHkGA0h8Q0ICAgABBgMseQYDSHxDRgICAAEEAEK+AgIAAQgIQnYCAgAANASAAEMGAgIAAQQAgARCegICAAEEBIAIQnoCAgAAgAUKO0q4VEImAgIAAEIqAgIAAIgFC/wGDQgRSDQJBAhCcgICAACABQoSAgIBwg0ICEIGAgIAAGkICDwsAC0KDgICAkIEBEK6AgIAAAAsQ2oCAgAAACwkAEPKAgIAAAAsIABDcgICAAAtrAgF/AX4jgICAgABBEGsiACSAgICAACAAEKKAgIAAAkAgACgCAEEBRw0AIAAoAgQgACgCCBCjgICAAAsgAEEAEJuAgIAAAkAgACgCAA0AEMuAgIAAAAsgACkDCCEBIABBEGokgICAgAAgAQsIABDegICAAAtrAgF/AX4jgICAgABBEGsiACSAgICAACAAEKKAgIAAAkAgACgCAEEBRw0AIAAoAgQgACgCCBCjgICAAAsgAEEBEJuAgIAAAkAgACgCAA0AEMuAgIAAAAsgACkDCCEBIABBEGokgICAgAAgAQsPABDggICAAK1CIIZCBIQLiAECAX8BfiOAgICAAEEQayIAJICAgIAAIABBBGoQooCAgAACQCAAKAIEQQFHDQAgACgCCCAAKAIMEKOAgIAACwJAAkBBAhCcgICAACIBQgIQnYCAgABFDQAgAUICEICAgIAAIgFC/wGDQgRRDQEACxDLgICAAAALIABBEGokgICAgAAgAUIgiKcLugEBAn8jgICAgABBwABrIgIkgICAgAAgAkEgaiAAEOKAgIAAAkAgAigCIEEBRg0AIAJBCGpBEGogAkE4aikDADcDACACQRBqIAJBIGpBEGopAwA3AwAgAiACKQMoNwMIIAFC/wGDQs0AUg0AIAJBIGoQooCAgAACQCACKAIgQQFHDQAgAigCJCACKAIoEKOAgIAACxDcgICAACACQQhqIAEQ44CAgAAhAyACQcAAaiSAgICAACADrQ8LAAviAQICfwJ+I4CAgIAAQTBrIgIkgICAgABBACEDAkADQCADQRhGDQEgAkEIaiADakICNwMAIANBCGohAwwACwtCASEEAkAgAUL/AYNCzABSDQAgAUHMgcCAAEEDIAJBCGpBAxD1gICAACACQSBqIAIpAwgQ9ICAgAAgAigCIA0AIAIpAyghASACQSBqIAIpAxAQtoCAgAAgAigCIA0AIAIpAxgiBUL/AYNCBFINACACKQMoIQQgACABNwMQIAAgBDcDCCAAIAVCIIg+AhhCACEECyAAIAQ3AwAgAkEwaiSAgICAAAu6AQIBfwJ+I4CAgIAAQSBrIgMkgICAgABB5IHAgABBDRDHgICAACEEIAEQ8YCAgAAhBSADIAI3AwggAyAFNwMAQQAhAQN/AkAgAUEQRw0AQQAhAQJAA0AgAUEQRg0BIANBEGogAWogAyABaikDADcDACABQQhqIQEMAAsLIAAgBCADQRBqQQIQ1oCAgAAQ74CAgAAhASADQSBqJICAgIAAIAEPCyADQRBqIAFqQgI3AwAgAUEIaiEBDAALC7YBAQJ/I4CAgIAAQcAAayIEJICAgIAAIARBIGogABDigICAAAJAIAQoAiBBAUYNACAEQQhqQRBqIARBOGopAwA3AwAgBEEQaiAEQSBqQRBqKQMANwMAIAQgBCkDKDcDCCABQv8Bg0LNAFINACACQv8Bg0LNAFINACAEQSBqIAMQtoCAgAAgBCgCIEEBRg0AIARBCGogASACIAQpAygQ5YCAgAAhBSAEQcAAaiSAgICAACAFrQ8LAAurAwMBfwN+AX8jgICAgABBMGsiBCSAgICAACAEQRhqEKKAgIAAAkAgBCgCGEEBRw0AIAQoAhwgBCgCIBCjgICAAAsQ3ICAgAAhBSAANQIQIQZB8YHAgABBGBDHgICAACEHIAQgAjcDECAEIAZCIIZCBIQ3AwggBCABNwMAQQAhCAJAAkADQAJAIAhBGEcNAEEAIQgCQANAIAhBGEYNASAEQRhqIAhqIAQgCGopAwA3AwAgCEEIaiEIDAALCyAFIAcgBEEYakEDENaAgIAAEO+AgIAARQ0CQcSCwIAAQQoQx4CAgAAhAiAAEPGAgIAAIQYgBCABNwMIIAQgBjcDAEEAIQgDQAJAIAhBEEcNAEEAIQgCQANAIAhBEEYNASAEQRhqIAhqIAQgCGopAwA3AwAgCEEIaiEIDAALCyAFIAIgBEEYakECENaAgIAAEO+AgIAARQ0EIAMQs4CAgAAQoICAgABBAXMhCAwFCyAEQRhqIAhqQgI3AwAgCEEIaiEIDAALCyAEQRhqIAhqQgI3AwAgCEEIaiEIDAALC0EAIQgLIARBMGokgICAgAAgCAv6BQICfwZ+I4CAgIAAQdAAayICJICAgIAAIAJBCGogABDigICAAAJAAkAgAigCCEEBRg0AIAFC/wGDQs0AUg0AIAIoAiAhAyACKQMYIQAgAikDECEEIAJBCGoQooCAgAACQCACKAIIQQFHDQAgAigCDCACKAIQEKOAgIAACyACQShqENyAgIAAIgUgASADIAQgABDngICAABCzgICAACEGQaCAwIAAELSAgIAAIQcCQAJAAkACQCACKAIoDQBBloLAgABBEhDHgICAACEHIAIgBDcDSCACIAE3AzggAiADrUIghkIEhDcDQEEAIQMDQAJAIANBGEcNAEEAIQMCQANAIANBGEYNASACQQhqIANqIAJBOGogA2opAwA3AwAgA0EIaiEDDAALCyAAIAUgByACQQhqQQMQ1oCAgAAQ6ICAgABWDQMgAkEIakGFgcCAAEEIELGAgIAAIAIoAggNBiACQQhqIAIpAxAQsoCAgAAMBQsgAkEIaiADakICNwMAIANBCGohAwwACwsCQCACKQMwIgggBxCfgICAAEUNAEGJgsCAAEENEMeAgIAAIQkgAiAENwNIIAIgATcDOCACIAOtQiCGQgSENwNAQQAhAwNAAkAgA0EYRw0AQQAhAwJAA0AgA0EYRg0BIAJBCGogA2ogAkE4aiADaikDADcDACADQQhqIQMMAAsLIAAgBSAJIAJBCGpBAxDWgICAABDogICAAFYNAiACQQhqQfuAwIAAQQoQsYCAgAAgAigCCA0GIAJBCGogAikDEBCygICAAAwFCyACQQhqIANqQgI3AwAgA0EIaiEDDAALCyAIIAYQn4CAgABFDQAgCCAHEJ+AgIAADQELIAJBCGpB1oDAgABBDRCxgICAACACKAIIDQIgAkEIaiACKQMQELKAgIAADAELIAJBCGpB44DAgABBGBCxgICAACACKAIIDQEgAkEIaiACKQMQELKAgIAACyACKQMQIQEgAikDCFANAQsACyACQdAAaiSAgICAACABC64CAgF/AX4jgICAgABBwABrIgYkgICAgABBqILAgABBFBDHgICAACEHIAZBIGogBRDzgICAAAJAIAYoAiBBAUYNACAGIAYpAyg3AxggBiAENwMQIAYgAjcDACAGIAOtQiCGQgSENwMIQQAhAwJAA0ACQCADQSBHDQBBACEDAkADQCADQSBGDQEgBkEgaiADaiAGIANqKQMANwMAIANBCGohAwwACwsCQAJAIAEgByAGQSBqQQQQ1oCAgAAQioCAgAAiBUICUg0AQgAhBQwBCyAGQSBqIAUQtoCAgAAgBigCIEEBRg0DIAYpAyghBEIBIQULIAAgBDcDCCAAIAU3AwAgBkHAAGokgICAgAAPCyAGQSBqIANqQgI3AwAgA0EIaiEDDAALCxDagICAAAALAAtRAQF/I4CAgIAAQRBrIgMkgICAgAAgAyAAIAEgAhCKgICAABD0gICAAAJAIAMoAgBBAUcNABDagICAAAALIAMpAwghAiADQRBqJICAgIAAIAIL5QgGAX8BfgF/AX4BfwF+I4CAgIAAQcAAayICJICAgIAAAkACQCAAQv8Bg0LIAFINACACIAA3AwAgAkEIaiABELaAgIAAIAIoAghBAUYNACACKQMQIQMgAkEIahCigICAAAJAIAIoAghBAUcNACACKAIMIAIoAhAQo4CAgAALAkACQCACKQMAEIuAgIAAQoCAgIBwg0KAgICAkApSDQAgAkEANgI0IAIgAjYCMAJAIAJBMGpBARDqgICAACIAEIuAgIAAQoCAgIBwg0KAgICAEFINACACQQA6AAgCQCAAEIuAgIAAQoCAgIBwg0KAgICAEFINACAAIAJBCGpBARDrgICAAAJAIAItAAhBAUcNAAJAIAJBMGpBCBDqgICAACIAEIuAgIAAQoCAgIBwg0KAgICAgAFSDQAgAkIANwMIIAAQi4CAgABCgICAgHCDQoCAgICAAVINAiAAIAJBCGpBCBDrgICAACACKQMIIQAgAkEwahDsgICAACEEIAJBMGoQ7YCAgAAhBSACQTBqEOyAgIAAIQYgAkEwahDtgICAACEBAkAgBhDggICAAEcNAEG8gsCAAEEIEO6AgIAAIAEQjICAgAAQhYCAgAAiAUL/AYNCzQBSDQcgAiAAQjiGIABCgP4Dg0IohoQgAEKAgPwHg0IYhiAAQoCAgPgPg0IIhoSEIABCCIhCgICA+A+DIABCGIhCgID8B4OEIABCKIhCgP4DgyAAQjiIhISEIgA3AxAgAiAFNwMIIAIgBDYCGAJAENyAgIAAIAJBCGogARDjgICAAA0AIAJBCGpBqIHAgABBEBCxgICAACACKAIIDQggAkEIaiACKQMQELKAgIAADAcLAkACQCACQQhqIAEQ3oCAgAAiByADEOWAgIAARQ0AIAJBMGoQ3ICAgAAgASAEIAUgABDngICAACACKAIwRQ0BIAIpAzggAxCggICAAEUNAQsgAkEIakGggcCAAEEIELGAgIAAIAIoAggNCCACQQhqIAIpAxAQsoCAgAAMBwsgAikDACEAQcSCwIAAQQoQx4CAgAAhASACIAM3AyggAiAANwMgQQAhBANAAkAgBEEQRw0AQQAhBAJAA0AgBEEQRg0BIAJBMGogBGogAkEgaiAEaikDADcDACAEQQhqIQQMAAsLAkAgByABIAJBMGpBAhDWgICAABDvgICAAA0AIAJBCGpBjYHAgABBCRCxgICAACACKAIIDQogAkEIaiACKQMQELKAgIAADAkLIAJBCGpBloHAgABBChCxgICAACACKAIIDQkgAkEIaiACKQMQELKAgIAADAgLIAJBMGogBGpCAjcDACAEQQhqIQQMAAsLQoOAgIAQEK6AgIAAAAtCg4CAgICCARCugICAAAALQoOAgIDQiQEQroCAgAAACxDwgICAAAALQoOAgICAggEQroCAgAAAC0KDgICAwIkBEK6AgIAAAAsgAikDECEAIAIpAwhQDQELAAsgAkHAAGokgICAgAAgAAt1AgJ/AX4CQAJAIAAoAgQiAiABaiIBIAJJDQAgASAAKAIAIgMpAwAQi4CAgABCIIinSw0BIAMpAwAgAq1CIIZCBIQgAa1CIIZCBIQQmoCAgAAhBCAAIAE2AgQgBA8LENqAgIAAAAtCg4CAgID9ABCugICAAAALHwAgAEIEIAGtQiCGQgSEIAKtQiCGQgSEEJGAgIAAGgu5AQIBfwF+I4CAgIAAQRBrIgEkgICAgAACQAJAIABBBBDqgICAACICEIuAgIAAQoCAgIBwg0KAgICAwABSDQAgAUEANgIMIAIQi4CAgABCgICAgHCDQoCAgIDAAFINASACIAFBDGpBBBDrgICAACABKAIMIQAgAUEQaiSAgICAACAAQRh0IABBgP4DcUEIdHIgAEEIdkGA/gNxIABBGHZycg8LQoOAgICAggEQroCAgAAACxDwgICAAAAL/wEDAX8BfgJ/I4CAgIAAQcAAayIBJICAgIAAAkACQCAAQSAQ6oCAgAAiAhCLgICAAEKAgICAcINCgICAgIAEUg0AIAFBIGpBGGoiAEIANwMAIAFBIGpBEGoiA0IANwMAIAFBIGpBCGoiBEIANwMAIAFCADcDICACEIuAgIAAQoCAgIBwg0KAgICAgARSDQEgAiABQSBqQSAQ64CAgAAgAUEYaiAAKQMANwMAIAFBEGogAykDADcDACABQQhqIAQpAwA3AwAgASABKQMgNwMAIAEQtICAgAAhAiABQcAAaiSAgICAACACDwtCg4CAgICCARCugICAAAALEPCAgIAAAAsaACAArUIghkIEhCABrUIghkIEhBCPgICAAAs0AQF/QQEhAwJAAkACQCAAIAEgAhCKgICAAKdB/wFxDgIBAgALENqAgIAAAAtBACEDCyADCwkAENqAgIAAAAt9AgF/AX4jgICAgABBMGsiASSAgICAACABQSBqIAApAwgQ84CAgAACQCABKAIgQQFHDQAACyABIAEpAyg3AwggASAAKQMANwMQIAEgADUCEEIghkIEhDcDGEHMgcCAAEEDIAFBCGpBAxDJgICAACECIAFBMGokgICAgAAgAgsDAAALOwACQAJAIAFC//////////8AVg0AIAFCCIZCBoQhAQwBCyABEI2AgIAAIQELIABCADcDACAAIAE3AwgLXQIBfwF+AkACQCABp0H/AXEiAkHAAEYNAAJAIAJBBkYNAEIBIQNCg5CAgIABIQEMAgsgAUIIiCEBQgAhAwwBC0IAIQMgARCOgICAACEBCyAAIAM3AwAgACABNwMICzEAAkAgAiAERg0AAAsgACABrUIghkIEhCADrUIghkIEhCACrUIghkIEhBCTgICAABoL2wECAX4EfwJAAkAgAkEJSw0AQgAhAyACIQQgASEFA0ACQCAEDQAgA0IIhkIOhCEDDAMLQQEhBgJAIAUtAAAiB0HfAEYNAAJAIAdBUGpB/wFxQQpJDQACQCAHQb9/akH/AXFBGkkNACAHQZ9/akH/AXFBGUsNBCAHQUVqIQYMAgsgB0FLaiEGDAELIAdBUmohBgsgA0IGhiAGrUL/AYOEIQMgBEF/aiEEIAVBAWohBQwACwsgAa1CIIZCBIQgAq1CIIZCBIQQkICAgAAhAwsgAEIANwMAIAAgAzcDCAutAQICfwF+I4CAgIAAQRBrIgIkgICAgABBACEDAkADQCADQRBGDQEgAiADakICNwMAIANBCGohAwwACwtBASEDAkAgAUL/AYNCzABSDQAgAUH8g8CAAEECIAJBAhD1gICAACACKQMAIgFC/wGDQgRSDQAgAikDCCIEQv8Bg0IEUg0AIAAgAUIgiKc2AgggACAEQiCIPgIEQQAhAwsgACADNgIAIAJBEGokgICAgAALYAIBfwF+I4CAgIAAQRBrIgMkgICAgAAgAyABrUIghkIEhDcDCCADIAKtQiCGQgSENwMAQfyDwIAAQQIgA0ECEMmAgIAAIQQgAEIANwMAIAAgBDcDCCADQRBqJICAgIAAC5IBAgF/AX4jgICAgABBEGsiASSAgICAAAJAAkACQAJAIABBAXFFDQAgAUHqhMCAAEEJELGAgIAAIAEoAgANAiABIAEpAwgQsoCAgAAMAQsgAUHShMCAAEEGELGAgIAAIAEoAgANASABIAEpAwgQsoCAgAALIAEpAwghAiABKQMAUA0BCwALIAFBEGokgICAgAAgAgtWAgF/AX4jgICAgABBEGsiAySAgICAACAAEKaAgIAAIQQgAyABIAIQ+ICAgAACQCADKAIAQQFHDQAACyAEIAMpAwhCAhCBgICAABogA0EQaiSAgICAAAsL/QQBAEGAgMAAC/MEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////////////////////////0VuZHBvaW50VWxuMzAyTG9jYWxFaWROb3RFeGVjdXRhYmxlVmVyaWZpZWRCdXROb3RFeGVjdXRhYmxlRXhlY3V0YWJsZUV4ZWN1dGVkVmVyaWZ5aW5nVmVyaWZpYWJsZVZlcmlmaWVkTm90SW5pdGlhbGl6YWJsZW5vbmNlc2VuZGVyc3JjX2VpZAAAuAAQAAUAAAC9ABAABgAAAMMAEAAHAAAAaW5pdGlhbGl6YWJsZWlzX3ZhbGlkX3JlY2VpdmVfbGlicmFyeWluYm91bmRfbm9uY2VsYXp5X2luYm91bmRfbm9uY2VpbmJvdW5kX3BheWxvYWRfaGFzaAAAABIAAAABdmVyaWZpYWJsZXRocmVzaG9sZG93bmVyc2hpcF90cmFuc2ZlcnJlZG5ld19vd25lcm9sZF9vd25lcgAAbAEQAAkAAAB1ARAACQAAAG93bmVyc2hpcF90cmFuc2ZlcnJpbmd0dGwAAABsARAACQAAAHUBEAAJAAAApgEQAAMAAABvd25lcnNoaXBfcmVub3VuY2VkAHUBEAAJAAAAT3duZXJQZW5kaW5nT3duZXJleHRlbmRfdG8AAPEBEAAJAAAATgEQAAkAAAB0dGxfY29uZmlnc19zZXRpbnN0YW5jZXBlcnNpc3RlbnQAAAAbAhAACAAAACMCEAAKAAAAdHRsX2NvbmZpZ3NfZnJvemVuRnJvemVuSW5zdGFuY2VQZXJzaXN0ZW50TWlncmF0aW5nAKOmAQ5jb250cmFjdHNwZWN2MAAAAAQAAAAiRXJyb3JzIGZvciBMYXllclplcm9WaWV3IGNvbnRyYWN0LgAAAAAAAAAAABJMYXllclplcm9WaWV3RXJyb3IAAAAAAAEAAAApSW52YWxpZCBwYWNrZXQgaGVhZGVyIChkc3RfZWlkIG1pc21hdGNoKS4AAAAAAAAKSW52YWxpZEVJRAAAAAAAAQAAAAAAAACVVGhlIHR5cGUgb2YgZGF0YSByZXF1aXJlZCBmb3IgbWlncmF0aW9uLgpVcGdyYWRlcyB0aGUgY29udHJhY3QgdG8gbmV3IFdBU00gYnl0ZWNvZGUuClNldHMgYSBtaWdyYXRpb24gZmxhZyB0aGF0IG11c3QgYmUgY2xlYXJlZCBieSBjYWxsaW5nIGBtaWdyYXRlYC4AAAAAAAAHdXBncmFkZQAAAAABAAAAAAAAAA1uZXdfd2FzbV9oYXNoAAAAAAAD7gAAACAAAAAAAAAAAAAAAHZSdW5zIG1pZ3JhdGlvbiBsb2dpYyBhZnRlciBhbiB1cGdyYWRlLgpDYW4gb25seSBiZSBjYWxsZWQgd2hlbiB0aGUgbWlncmF0aW9uIGZsYWcgaXMgc2V0IGJ5IGEgcHJldmlvdXMgYHVwZ3JhZGVgIGNhbGwuAAAAAAAHbWlncmF0ZQAAAAABAAAAAAAAAA5taWdyYXRpb25fZGF0YQAAAAAADgAAAAAAAAAAAAAAXlBlcm1hbmVudGx5IGZyZWV6ZXMgdGhlIGNvbnRyYWN0LCBwcmV2ZW50aW5nIGFueSBmdXR1cmUgdXBncmFkZXMuClRoaXMgYWN0aW9uIGlzIGlycmV2ZXJzaWJsZS4AAAAAAAZmcmVlemUAAAAAAAAAAAAAAAAAAAAAADtSZXR1cm5zIHdoZXRoZXIgdGhlIGNvbnRyYWN0IGlzIGZyb3plbiAodXBncmFkZXMgZGlzYWJsZWQpLgAAAAAJaXNfZnJvemVuAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAKYXV0aG9yaXplcgAAAAAAAAAAAAEAAAATAAAAAAAAAD5SZXR1cm5zIHRoZSBjdXJyZW50IG93bmVyIGFkZHJlc3MsIG9yIE5vbmUgaWYgbm8gb3duZXIgaXMgc2V0LgAAAAAABW93bmVyAAAAAAAAAAAAAAEAAAPoAAAAEwAAAAAAAABZUmV0dXJucyB0aGUgcGVuZGluZyBvd25lciBhZGRyZXNzIGZvciAyLXN0ZXAgdHJhbnNmZXIsIG9yIE5vbmUgaWYgbm8gdHJhbnNmZXIgaXMgcGVuZGluZy4AAAAAAAANcGVuZGluZ19vd25lcgAAAAAAAAAAAAABAAAD6AAAABMAAAAAAAABK1RyYW5zZmVycyBvd25lcnNoaXAgaW1tZWRpYXRlbHkgdG8gYSBuZXcgYWRkcmVzcy4KClVzZSB3aXRoIGNhdXRpb24gLSBpZiB5b3UgdHJhbnNmZXIgdG8gYSB3cm9uZyBhZGRyZXNzLCBvd25lcnNoaXAgaXMgbG9zdCBmb3JldmVyLgpDb25zaWRlciB1c2luZyBgcHJvcG9zZV9vd25lcnNoaXBfdHJhbnNmZXJgIGluc3RlYWQuCgojIFBhbmljcwotIGBPd25lck5vdFNldGAgaWYgbm8gb3duZXIgaXMgY3VycmVudGx5IHNldAotIGBUcmFuc2ZlckluUHJvZ3Jlc3NgIGlmIGEgMi1zdGVwIHRyYW5zZmVyIGlzIGluIHByb2dyZXNzAAAAABJ0cmFuc2Zlcl9vd25lcnNoaXAAAAAAAAEAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAAAAAAlxQcm9wb3NlcyBhbiBvd25lcnNoaXAgdHJhbnNmZXIgdG8gYSBuZXcgYWRkcmVzcy4KClRoZSBuZXcgb3duZXIgbXVzdCBjYWxsIGBhY2NlcHRfb3duZXJzaGlwKClgIHdpdGhpbiBgdHRsYCBsZWRnZXJzCnRvIGNvbXBsZXRlIHRoZSB0cmFuc2Zlci4gVGhlIHBlbmRpbmcgdHJhbnNmZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGV4cGlyZSBhZnRlci4KCiMgQXJndW1lbnRzCi0gYG5ld19vd25lcmAgLSBUaGUgcHJvcG9zZWQgbmV3IG93bmVyCi0gYHR0bGAgLSBOdW1iZXIgb2YgbGVkZ2VycyB0aGUgbmV3IG93bmVyIGhhcyB0byBhY2NlcHQuClVzZSBgMGAgdG8gY2FuY2VsIGEgcGVuZGluZyB0cmFuc2ZlciAobmV3X293bmVyIG11c3QgbWF0Y2ggcGVuZGluZykuCgojIFBhbmljcwotIGBPd25lck5vdFNldGAgaWYgbm8gb3duZXIgaXMgY3VycmVudGx5IHNldAotIGBOb1BlbmRpbmdUcmFuc2ZlcmAgd2hlbiBjYW5jZWxsaW5nIGFuZCBubyBwZW5kaW5nIHRyYW5zZmVyIGV4aXN0cwotIGBJbnZhbGlkVHRsYCBpZiB0dGwgZXhjZWVkcyBtYXggVFRMCi0gYEludmFsaWRQZW5kaW5nT3duZXJgIHdoZW4gY2FuY2VsbGluZyB3aXRoIHdyb25nIG5ld19vd25lciBhZGRyZXNzAAAAGnByb3Bvc2Vfb3duZXJzaGlwX3RyYW5zZmVyAAAAAAACAAAAAAAAAAluZXdfb3duZXIAAAAAAAATAAAAAAAAAAN0dGwAAAAABAAAAAAAAAAAAAAAuUFjY2VwdHMgYSBwZW5kaW5nIDItc3RlcCBvd25lcnNoaXAgdHJhbnNmZXIuCgpNdXN0IGJlIGNhbGxlZCBieSB0aGUgcGVuZGluZyBvd25lciBiZWZvcmUgdGhlIFRUTCBleHBpcmVzLgoKIyBQYW5pY3MKLSBgTm9QZW5kaW5nVHJhbnNmZXJgIGlmIHRoZXJlIGlzIG5vIHBlbmRpbmcgdHJhbnNmZXIgKG9yIGl0IGV4cGlyZWQpAAAAAAAAEGFjY2VwdF9vd25lcnNoaXAAAAAAAAAAAAAAAAAAAACkUGVybWFuZW50bHkgcmVub3VuY2VzIG93bmVyc2hpcC4KCiMgUGFuaWNzCi0gYE93bmVyTm90U2V0YCBpZiBubyBvd25lciBpcyBjdXJyZW50bHkgc2V0Ci0gYFRyYW5zZmVySW5Qcm9ncmVzc2AgaWYgYSAyLXN0ZXAgdHJhbnNmZXIgaXMgaW4gcHJvZ3Jlc3MgKGNhbmNlbCBpdCBmaXJzdCkAAAAScmVub3VuY2Vfb3duZXJzaGlwAAAAAAAAAAAAAAAAAAAAAAClRXh0ZW5kcyB0aGUgaW5zdGFuY2UgVFRMLgoKIyBBcmd1bWVudHMKCiogYHRocmVzaG9sZGAgLSBUaGUgdGhyZXNob2xkIHRvIGV4dGVuZCB0aGUgVFRMIChpZiBjdXJyZW50IFRUTCBpcyBiZWxvdyB0aGlzLCBleHRlbmQpLgoqIGBleHRlbmRfdG9gIC0gVGhlIFRUTCB0byBleHRlbmQgdG8uAAAAAAAAE2V4dGVuZF9pbnN0YW5jZV90dGwAAAAAAgAAAAAAAAAJdGhyZXNob2xkAAAAAAAABAAAAAAAAAAJZXh0ZW5kX3RvAAAAAAAABAAAAAAAAAAAAAABj1NldHMgVFRMIGNvbmZpZ3MgZm9yIGluc3RhbmNlIGFuZCBwZXJzaXN0ZW50IHN0b3JhZ2UuCgotIGBOb25lYCB2YWx1ZXMgcmVtb3ZlIHRoZSBjb3JyZXNwb25kaW5nIGNvbmZpZyAoZGlzYWJsZXMgYXV0by1leHRlbnNpb24gZm9yIHRoYXQgdHlwZSkKLSBWYWxpZGF0ZXMgdGhhdCBgdGhyZXNob2xkIDw9IGV4dGVuZF90byA8PSBNQVhfVFRMYAoKIyBBcmd1bWVudHMKLSBgaW5zdGFuY2VgIC0gVFRMIGNvbmZpZyBmb3IgaW5zdGFuY2Ugc3RvcmFnZQotIGBwZXJzaXN0ZW50YCAtIFRUTCBjb25maWcgZm9yIHBlcnNpc3RlbnQgc3RvcmFnZQoKIyBQYW5pY3MKLSBgVHRsQ29uZmlnRnJvemVuYCBpZiBjb25maWdzIGFyZSBmcm96ZW4KLSBgSW52YWxpZFR0bENvbmZpZ2AgaWYgdmFsaWRhdGlvbiBmYWlscwAAAAAPc2V0X3R0bF9jb25maWdzAAAAAAIAAAAAAAAACGluc3RhbmNlAAAD6AAAB9AAAAAJVHRsQ29uZmlnAAAAAAAAAAAAAApwZXJzaXN0ZW50AAAAAAPoAAAH0AAAAAlUdGxDb25maWcAAAAAAAAAAAAAAAAAAEhSZXR1cm5zIHRoZSBjdXJyZW50IFRUTCBjb25maWdzIGFzIChpbnN0YW5jZV9jb25maWcsIHBlcnNpc3RlbnRfY29uZmlnKS4AAAALdHRsX2NvbmZpZ3MAAAAAAAAAAAEAAAPtAAAAAgAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAADhUGVybWFuZW50bHkgZnJlZXplcyBUVEwgY29uZmlncywgcHJldmVudGluZyBhbnkgZnV0dXJlIG1vZGlmaWNhdGlvbnMuCgpUaGlzIGlzIGlycmV2ZXJzaWJsZSBhbmQgcHJvdmlkZXMgaW1tdXRhYmlsaXR5IGd1YXJhbnRlZXMgdG8gdXNlcnMuCkVtaXRzIGBUdGxDb25maWdzRnJvemVuYCBldmVudC4KCiMgUGFuaWNzCi0gYFR0bENvbmZpZ0FscmVhZHlGcm96ZW5gIGlmIGFscmVhZHkgZnJvemVuAAAAAAAAEmZyZWV6ZV90dGxfY29uZmlncwAAAAAAAAAAAAAAAAAAAAAAJ1JldHVybnMgd2hldGhlciBUVEwgY29uZmlncyBhcmUgZnJvemVuLgAAAAAVaXNfdHRsX2NvbmZpZ3NfZnJvemVuAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAANX19jb25zdHJ1Y3RvcgAAAAAAAAMAAAAAAAAABW93bmVyAAAAAAAAEwAAAAAAAAAIZW5kcG9pbnQAAAATAAAAAAAAAAZ1bG4zMDIAAAAAABMAAAAAAAAAAAAAAB1SZXR1cm5zIHRoZSBlbmRwb2ludCBhZGRyZXNzLgAAAAAAAAhlbmRwb2ludAAAAAAAAAABAAAAEwAAAAAAAAAbUmV0dXJucyB0aGUgVWxuMzAyIGFkZHJlc3MuAAAAAAZ1bG4zMDIAAAAAAAAAAAABAAAAEwAAAAAAAAAeUmV0dXJucyB0aGUgbG9jYWwgZW5kcG9pbnQgSUQuAAAAAAAJbG9jYWxfZWlkAAAAAAAAAAAAAAEAAAAEAAAAAAAAAFBDaGVja3MgaWYgYSBtZXNzYWdpbmcgcGF0aCBjYW4gYmUgaW5pdGlhbGl6ZWQgZm9yIHRoZSBnaXZlbiBvcmlnaW4gYW5kIHJlY2VpdmVyLgAAAA1pbml0aWFsaXphYmxlAAAAAAAAAgAAAAAAAAAGb3JpZ2luAAAAAAfQAAAABk9yaWdpbgAAAAAAAAAAAAhyZWNlaXZlcgAAABMAAAABAAAAAQAAAAAAAAC0Q2hlY2tzIGlmIGEgbWVzc2FnZSBjYW4gYmUgdmVyaWZpZWQgYXQgdGhlIGVuZHBvaW50LgoKVmVyaWZpZXM6CjEuIFJlY2VpdmUgbGlicmFyeSBpcyB2YWxpZCBmb3IgdGhpcyByZWNlaXZlciBhbmQgc291cmNlCjIuIEVuZHBvaW50IG5vbmNlIGNoZWNrIHBhc3NlcwozLiBQYXlsb2FkIGhhc2ggaXMgbm90IGVtcHR5AAAACnZlcmlmaWFibGUAAAAAAAQAAAAAAAAABm9yaWdpbgAAAAAH0AAAAAZPcmlnaW4AAAAAAAAAAAAIcmVjZWl2ZXIAAAATAAAAAAAAAAtyZWNlaXZlX2xpYgAAAAATAAAAAAAAAAxwYXlsb2FkX2hhc2gAAAPuAAAAIAAAAAEAAAABAAAAAAAAAClSZXR1cm5zIHRoZSBleGVjdXRpb24gc3RhdGUgb2YgYSBtZXNzYWdlLgAAAAAAAApleGVjdXRhYmxlAAAAAAACAAAAAAAAAAZvcmlnaW4AAAAAB9AAAAAGT3JpZ2luAAAAAAAAAAAACHJlY2VpdmVyAAAAEwAAAAEAAAfQAAAADkV4ZWN1dGlvblN0YXRlAAAAAAAAAAAA7lJldHVybnMgdGhlIGNvbWJpbmVkIHZlcmlmaWNhdGlvbiBzdGF0ZSBvZiBhIG1lc3NhZ2UuCgpUaGlzIGZ1bmN0aW9uIGNoZWNrczoKMS4gUGFja2V0IGhlYWRlciB2YWxpZGl0eSAoZHN0X2VpZCBtYXRjaGVzIGxvY2FsX2VpZCkKMi4gRW5kcG9pbnQgaW5pdGlhbGl6YWJsZSBzdGF0dXMKMy4gRW5kcG9pbnQgdmVyaWZpYWJsZSBzdGF0dXMKNC4gVUxOIHZlcmlmaWFibGUgc3RhdHVzIChEVk4gY29uZmlybWF0aW9ucykAAAAAAA51bG5fdmVyaWZpYWJsZQAAAAAAAgAAAAAAAAANcGFja2V0X2hlYWRlcgAAAAAAAA4AAAAAAAAADHBheWxvYWRfaGFzaAAAA+4AAAAgAAAAAQAAB9AAAAARVmVyaWZpY2F0aW9uU3RhdGUAAAAAAAACAAAAAAAAAAAAAAAUTGF5ZXJaZXJvVmlld1N0b3JhZ2UAAAADAAAAAAAAAAAAAAAIRW5kcG9pbnQAAAAAAAAAAAAAAAZVbG4zMDIAAAAAAAAAAAAAAAAACExvY2FsRWlkAAAAAgAAAIFSZXByZXNlbnRzIHRoZSBleGVjdXRpb24gc3RhdGUgb2YgYSBjcm9zcy1jaGFpbiBtZXNzYWdlLgoKVXNlZCBieSBleGVjdXRvcnMgdG8gZGV0ZXJtaW5lIHdoZW4gYSBtZXNzYWdlIGlzIHJlYWR5IHRvIGJlIGRlbGl2ZXJlZC4AAAAAAAAAAAAADkV4ZWN1dGlvblN0YXRlAAAAAAAEAAAAAAAAAD5NZXNzYWdlIGlzIG5vdCByZWFkeSBmb3IgZXhlY3V0aW9uIC0gd2FpdGluZyBmb3IgdmVyaWZpY2F0aW9uLgAAAAAADU5vdEV4ZWN1dGFibGUAAAAAAAAAAAAARk1lc3NhZ2UgaXMgdmVyaWZpZWQgYnV0IGNhbm5vdCBiZSBleGVjdXRlZCB5ZXQgKHByaW9yIG5vbmNlcyBwZW5kaW5nKS4AAAAAABhWZXJpZmllZEJ1dE5vdEV4ZWN1dGFibGUAAAAAAAAAIE1lc3NhZ2UgaXMgcmVhZHkgdG8gYmUgZXhlY3V0ZWQuAAAACkV4ZWN1dGFibGUAAAAAAAAAAAAiTWVzc2FnZSBoYXMgYWxyZWFkeSBiZWVuIGV4ZWN1dGVkLgAAAAAACEV4ZWN1dGVkAAAAAgAAAIhSZXByZXNlbnRzIHRoZSB2ZXJpZmljYXRpb24gc3RhdGUgb2YgYSBjcm9zcy1jaGFpbiBtZXNzYWdlIGF0IHRoZSBVTE4gbGV2ZWwuCgpVc2VkIGJ5IERWTnMgYW5kIGV4ZWN1dG9ycyB0byB0cmFjayB2ZXJpZmljYXRpb24gcHJvZ3Jlc3MuAAAAAAAAABFWZXJpZmljYXRpb25TdGF0ZQAAAAAAAAQAAAAAAAAAM0RWTnMgYXJlIHN0aWxsIGNvbGxlY3Rpbmcgc2lnbmF0dXJlcy9jb25maXJtYXRpb25zLgAAAAAJVmVyaWZ5aW5nAAAAAAAAAAAAAEBIYXMgZW5vdWdoIERWTiBjb25maXJtYXRpb25zLCByZWFkeSB0byBiZSBjb21taXR0ZWQgdG8gZW5kcG9pbnQuAAAAClZlcmlmaWFibGUAAAAAAAAAAAAhQWxyZWFkeSB2ZXJpZmllZCBhdCB0aGUgZW5kcG9pbnQuAAAAAAAACFZlcmlmaWVkAAAAAAAAACVDYW5ub3QgYmUgaW5pdGlhbGl6ZWQgKHBhdGggYmxvY2tlZCkuAAAAAAAAEE5vdEluaXRpYWxpemFibGUAAAAFAAAAAAAAAAAAAAAKUGFja2V0U2VudAAAAAAAAQAAAAtwYWNrZXRfc2VudAAAAAADAAAAAAAAAA5lbmNvZGVkX3BhY2tldAAAAAAADgAAAAAAAAAAAAAAB29wdGlvbnMAAAAADgAAAAAAAAAAAAAADHNlbmRfbGlicmFyeQAAABMAAAAAAAAAAgAAAAUAAAAAAAAAAAAAAA5QYWNrZXRWZXJpZmllZAAAAAAA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Clplcm9acm9GZWUAAAAAABgAAAAAAAAADlpyb1VuYXZhaWxhYmxlAAAAAAAZAAAAAQAAAC1QYXJhbWV0ZXJzIGZvciBzZW5kaW5nIGEgY3Jvc3MtY2hhaW4gbWVzc2FnZS4AAAAAAAAAAAAAD01lc3NhZ2luZ1BhcmFtcwAAAAAFAAAAK0Rlc3RpbmF0aW9uIGVuZHBvaW50IElEIChjaGFpbiBpZGVudGlmaWVyKS4AAAAAB2RzdF9laWQAAAAABAAAABxUaGUgbWVzc2FnZSBwYXlsb2FkIHRvIHNlbmQuAAAAB21lc3NhZ2UAAAAADgAAACFFbmNvZGVkIGV4ZWN1dG9yIGFuZCBEVk4gb3B0aW9ucy4AAAAAAAAHb3B0aW9ucwAAAAAOAAAAOVdoZXRoZXIgdG8gcGF5IGZlZXMgaW4gWlJPIHRva2VuIGluc3RlYWQgb2YgbmF0aXZlIHRva2VuLgAAAAAAAApwYXlfaW5fenJvAAAAAAABAAAANVJlY2VpdmVyIGFkZHJlc3Mgb24gdGhlIGRlc3RpbmF0aW9uIGNoYWluICgzMiBieXRlcykuAAAAAAAACHJlY2VpdmVyAAAD7gAAACAAAAABAAAATVNvdXJjZSBtZXNzYWdlIGluZm9ybWF0aW9uIGlkZW50aWZ5aW5nIHdoZXJlIGEgY3Jvc3MtY2hhaW4gbWVzc2FnZSBjYW1lIGZyb20uAAAAAAAAAAAAAAZPcmlnaW4AAAAAAAMAAAAXTm9uY2UgZm9yIHRoaXMgcGF0aHdheS4AAAAABW5vbmNlAAAAAAAABgAAAC5TZW5kZXIgYWRkcmVzcyBvbiB0aGUgc291cmNlIGNoYWluICgzMiBieXRlcykuAAAAAAAGc2VuZGVyAAAAAAPuAAAAIAAAACZTb3VyY2UgZW5kcG9pbnQgSUQgKGNoYWluIGlkZW50aWZpZXIpLgAAAAAAB3NyY19laWQAAAAABAAAAAEAAAAoRmVlIHN0cnVjdHVyZSBmb3IgY3Jvc3MtY2hhaW4gbWVzc2FnaW5nLgAAAAAAAAAMTWVzc2FnaW5nRmVlAAAAAgAAAB9GZWUgcGFpZCBpbiBuYXRpdmUgdG9rZW4gKFhMTSkuAAAAAApuYXRpdmVfZmVlAAAAAAALAAAAKEZlZSBwYWlkIGluIFpSTyB0b2tlbiAoTGF5ZXJaZXJvIHRva2VuKS4AAAAHenJvX2ZlZQAAAAALAAAAAQAAAEJSZWNlaXB0IHJldHVybmVkIGFmdGVyIHN1Y2Nlc3NmdWxseSBzZW5kaW5nIGEgY3Jvc3MtY2hhaW4gbWVzc2FnZS4AAAAAAAAAAAAQTWVzc2FnaW5nUmVjZWlwdAAAAAMAAAApVGhlIGZlZXMgY2hhcmdlZCBmb3Igc2VuZGluZyB0aGUgbWVzc2FnZS4AAAAAAAADZmVlAAAAB9AAAAAMTWVzc2FnaW5nRmVlAAAAK0dsb2JhbGx5IHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgbWVzc2FnZS4AAAAABGd1aWQAAAPuAAAAIAAAACRUaGUgb3V0Ym91bmQgbm9uY2UgZm9yIHRoaXMgcGF0aHdheS4AAAAFbm9uY2UAAAAAAAAGAAAAAgAAADhUeXBlIG9mIG1lc3NhZ2UgbGlicmFyeSBpbmRpY2F0aW5nIHN1cHBvcnRlZCBvcGVyYXRpb25zLgAAAAAAAAAOTWVzc2FnZUxpYlR5cGUAAAAAAAMAAAAAAAAAH1N1cHBvcnRzIG9ubHkgc2VuZGluZyBtZXNzYWdlcy4AAAAABFNlbmQAAAAAAAAAIVN1cHBvcnRzIG9ubHkgcmVjZWl2aW5nIG1lc3NhZ2VzLgAAAAAAAAdSZWNlaXZlAAAAAAAAAAAtU3VwcG9ydHMgYm90aCBzZW5kaW5nIGFuZCByZWNlaXZpbmcgbWVzc2FnZXMuAAAAAAAADlNlbmRBbmRSZWNlaXZlAAAAAAABAAAAt1ZlcnNpb24gaW5mb3JtYXRpb24gZm9yIGEgbWVzc2FnZSBsaWJyYXJ5LgoKTm90ZTogYG1pbm9yYCBhbmQgYGVuZHBvaW50X3ZlcnNpb25gIHVzZSBgdTMyYCBpbnN0ZWFkIG9mIGB1OGAgYmVjYXVzZSBTdGVsbGFyIGRvZXMgbm90CnN1cHBvcnQgYHU4YCB0eXBlcyBpbiBjb250cmFjdCBpbnRlcmZhY2UgZnVuY3Rpb25zLgAAAAAAAAAAEU1lc3NhZ2VMaWJWZXJzaW9uAAAAAAAAAwAAADNFbmRwb2ludCB2ZXJzaW9uIChzaG91bGQgbm90IGV4Y2VlZCB1ODo6TUFYID0gMjU1KS4AAAAAEGVuZHBvaW50X3ZlcnNpb24AAAAEAAAAFU1ham9yIHZlcnNpb24gbnVtYmVyLgAAAAAAAAVtYWpvcgAAAAAAAAYAAAA3TWlub3IgdmVyc2lvbiBudW1iZXIgKHNob3VsZCBub3QgZXhjZWVkIHU4OjpNQVggPSAyNTUpLgAAAAAFbWlub3IAAAAAAAAEAAAAAQAAADZUaW1lb3V0IGNvbmZpZ3VyYXRpb24gZm9yIHJlY2VpdmUgbGlicmFyeSB0cmFuc2l0aW9ucy4AAAAAAAAAAAAHVGltZW91dAAAAAACAAAAKFVuaXggdGltZXN0YW1wIHdoZW4gdGhlIHRpbWVvdXQgZXhwaXJlcy4AAAAGZXhwaXJ5AAAAAAAGAAAAKVRoZSBuZXcgbGlicmFyeSBhZGRyZXNzIHRvIHRyYW5zaXRpb24gdG8uAAAAAAAAA2xpYgAAAAATAAAAAQAAADVQYXJhbWV0ZXJzIGZvciBzZXR0aW5nIG1lc3NhZ2UgbGlicmFyeSBjb25maWd1cmF0aW9uLgAAAAAAAAAAAAAOU2V0Q29uZmlnUGFyYW0AAAAAAAMAAAAfWERSLWVuY29kZWQgY29uZmlndXJhdGlvbiBkYXRhLgAAAAAGY29uZmlnAAAAAAAOAAAAMFRoZSB0eXBlIG9mIGNvbmZpZ3VyYXRpb24gKGUuZy4sIGV4ZWN1dG9yLCBVTE4pLgAAAAtjb25maWdfdHlwZQAAAAAEAAAAJ1RoZSBlbmRwb2ludCBJRCB0aGlzIGNvbmZpZyBhcHBsaWVzIHRvLgAAAAADZWlkAAAAAAQAAAABAAAAMVJlc29sdmVkIGxpYnJhcnkgaW5mb3JtYXRpb24gd2l0aCBkZWZhdWx0IHN0YXR1cy4AAAAAAAAAAAAAD1Jlc29sdmVkTGlicmFyeQAAAAACAAAARFdoZXRoZXIgdGhpcyBpcyB0aGUgZGVmYXVsdCBsaWJyYXJ5ICh0cnVlKSBvciBPQXBwLXNwZWNpZmljIChmYWxzZSkuAAAACmlzX2RlZmF1bHQAAAAAAAEAAAAdVGhlIHJlc29sdmVkIGxpYnJhcnkgYWRkcmVzcy4AAAAAAAADbGliAAAAABMAAAABAAAASE91dGJvdW5kIHBhY2tldCBjb250YWluaW5nIGFsbCBpbmZvcm1hdGlvbiBmb3IgY3Jvc3MtY2hhaW4gdHJhbnNtaXNzaW9uLgAAAAAAAAAOT3V0Ym91bmRQYWNrZXQAAAAAAAcAAAAYRGVzdGluYXRpb24gZW5kcG9pbnQgSUQuAAAAB2RzdF9laWQAAAAABAAAACxHbG9iYWxseSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBtZXNzYWdlLgAAAARndWlkAAAD7gAAACAAAAAUVGhlIG1lc3NhZ2UgcGF5bG9hZC4AAAAHbWVzc2FnZQAAAAAOAAAAIE91dGJvdW5kIG5vbmNlIGZvciB0aGlzIHBhdGh3YXkuAAAABW5vbmNlAAAAAAAABgAAADFSZWNlaXZlciBhZGRyZXNzIG9uIGRlc3RpbmF0aW9uIGNoYWluICgzMiBieXRlcykuAAAAAAAACHJlY2VpdmVyAAAD7gAAACAAAAAfU2VuZGVyIGFkZHJlc3Mgb24gc291cmNlIGNoYWluLgAAAAAGc2VuZGVyAAAAAAATAAAAE1NvdXJjZSBlbmRwb2ludCBJRC4AAAAAB3NyY19laWQAAAAABAAAAAEAAAArQSBmZWUgcmVjaXBpZW50IHdpdGggdGhlIGFtb3VudCB0byBiZSBwYWlkLgAAAAAAAAAADEZlZVJlY2lwaWVudAAAAAIAAAAVQW1vdW50IG9mIGZlZSB0byBwYXkuAAAAAAAABmFtb3VudAAAAAAACwAAAB9UaGUgYWRkcmVzcyB0byBzZW5kIHRoZSBmZWUgdG8uAAAAAAJ0bwAAAAAAEwAAAAEAAAA8UmVzdWx0IG9mIHNlbmQgb3BlcmF0aW9uIGNvbnRhaW5pbmcgZmVlcyBhbmQgZW5jb2RlZCBwYWNrZXQuAAAAAAAAAA1GZWVzQW5kUGFja2V0AAAAAAAAAwAAACpUaGUgZW5jb2RlZCBwYWNrZXQgcmVhZHkgZm9yIHRyYW5zbWlzc2lvbi4AAAAAAA5lbmNvZGVkX3BhY2tldAAAAAAADgAAAD9MaXN0IG9mIG5hdGl2ZSB0b2tlbiBmZWUgcmVjaXBpZW50cyAoZXhlY3V0b3IsIERWTnMsIHRyZWFzdXJ5KS4AAAAAFW5hdGl2ZV9mZWVfcmVjaXBpZW50cwAAAAAAA+oAAAfQAAAADEZlZVJlY2lwaWVudAAAACxMaXN0IG9mIFpSTyB0b2tlbiBmZWUgcmVjaXBpZW50cyAodHJlYXN1cnkpLgAAABJ6cm9fZmVlX3JlY2lwaWVudHMAAAAAA+oAAAfQAAAADEZlZVJlY2lwaWVudAAAAAQAAAAdUGFja2V0Q29kZWNWMUVycm9yOiAxMTAwLTExMDkAAAAAAAAAAAAAElBhY2tldENvZGVjVjFFcnJvcgAAAAAAAgAAAAAAAAATSW52YWxpZFBhY2tldEhlYWRlcgAAAARMAAAAAAAAABRJbnZhbGlkUGFja2V0VmVyc2lvbgAABE0AAAAEAAAAHVdvcmtlck9wdGlvbnNFcnJvcjogMTExMC0xMTE5AAAAAAAAAAAAABJXb3JrZXJPcHRpb25zRXJyb3IAAAAAAAkAAAAAAAAAEkludmFsaWRCeXRlc0xlbmd0aAAAAAAEVgAAAAAAAAAZSW52YWxpZExlZ2FjeU9wdGlvbnNUeXBlMQAAAAAABFcAAAAAAAAAGUludmFsaWRMZWdhY3lPcHRpb25zVHlwZTIAAAAAAARYAAAAAAAAABFJbnZhbGlkT3B0aW9uVHlwZQAAAAAABFkAAAAAAAAADkludmFsaWRPcHRpb25zAAAAAARaAAAAAAAAAA9JbnZhbGlkV29ya2VySWQAAAAEWwAAAAAAAAAdTGVnYWN5T3B0aW9uc1R5cGUxR2FzT3ZlcmZsb3cAAAAAAARcAAAAAAAAACBMZWdhY3lPcHRpb25zVHlwZTJBbW91bnRPdmVyZmxvdwAABF0AAAAAAAAAHUxlZ2FjeU9wdGlvbnNUeXBlMkdhc092ZXJmbG93AAAAAAAEXgAAAAQAAAAAAAAAAAAAAAtVbG4zMDJFcnJvcgAAAAATAAAAAAAAAB1EZWZhdWx0RXhlY3V0b3JDb25maWdOb3RGb3VuZAAAAAAAAAEAAAAAAAAAH0RlZmF1bHRSZWNlaXZlVWxuQ29uZmlnTm90Rm91bmQAAAAAAgAAAAAAAAAcRGVmYXVsdFNlbmRVbG5Db25maWdOb3RGb3VuZAAAAAMAAAAAAAAAFUR1cGxpY2F0ZU9wdGlvbmFsRFZOcwAAAAAAAAQAAAAAAAAAFUR1cGxpY2F0ZVJlcXVpcmVkRFZOcwAAAAAAAAUAAAAAAAAADUludmFsaWRDb25maWcAAAAAAAAGAAAAAAAAABFJbnZhbGlkQ29uZmlnVHlwZQAAAAAAAAcAAAAAAAAAFEludmFsaWRDb25maXJtYXRpb25zAAAACAAAAAAAAAAKSW52YWxpZEVJRAAAAAAACQAAAAAAAAASSW52YWxpZE1lc3NhZ2VTaXplAAAAAAAKAAAAAAAAABdJbnZhbGlkT3B0aW9uYWxEVk5Db3VudAAAAAALAAAAAAAAABNJbnZhbGlkT3B0aW9uYWxEVk5zAAAAAAwAAAAAAAAAG0ludmFsaWRPcHRpb25hbERWTlRocmVzaG9sZAAAAAANAAAAAAAAABdJbnZhbGlkUmVxdWlyZWREVk5Db3VudAAAAAAOAAAAAAAAABNJbnZhbGlkUmVxdWlyZWREVk5zAAAAAA8AAAAAAAAAEFVsbkF0TGVhc3RPbmVEVk4AAAAQAAAAAAAAAA5VbnN1cHBvcnRlZEVpZAAAAAAAEQAAAAAAAAAJVmVyaWZ5aW5nAAAAAAAAEgAAAAAAAAAPWmVyb01lc3NhZ2VTaXplAAAAABMAAAAFAAAAAAAAAAAAAAARRXhlY3V0b3JDb25maWdTZXQAAAAAAAABAAAAE2V4ZWN1dG9yX2NvbmZpZ19zZXQAAAAAAwAAAAAAAAAGc2VuZGVyAAAAAAATAAAAAQAAAAAAAAAHZHN0X2VpZAAAAAAEAAAAAQAAAAAAAAAGY29uZmlnAAAAAAfQAAAAEk9BcHBFeGVjdXRvckNvbmZpZwAAAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAAQU2VuZFVsbkNvbmZpZ1NldAAAAAEAAAATc2VuZF91bG5fY29uZmlnX3NldAAAAAADAAAAAAAAAAZzZW5kZXIAAAAAABMAAAABAAAAAAAAAAdkc3RfZWlkAAAAAAQAAAABAAAAAAAAAAZjb25maWcAAAAAB9AAAAANT0FwcFVsbkNvbmZpZwAAAAAAAAAAAAACAAAABQAAAAAAAAAAAAAAE1JlY2VpdmVVbG5Db25maWdTZXQAAAAAAQAAABZyZWNlaXZlX3Vsbl9jb25maWdfc2V0AAAAAAADAAAAAAAAAAhyZWNlaXZlcgAAABMAAAABAAAAAAAAAAdzcmNfZWlkAAAAAAQAAAABAAAAAAAAAAZjb25maWcAAAAAB9AAAAANT0FwcFVsbkNvbmZpZwAAAAAAAAAAAAACAAAABQAAAAAAAAAAAAAAGURlZmF1bHRFeGVjdXRvckNvbmZpZ3NTZXQAAAAAAAABAAAAHGRlZmF1bHRfZXhlY3V0b3JfY29uZmlnc19zZXQAAAABAAAAAAAAAAZwYXJhbXMAAAAAA+oAAAfQAAAAHVNldERlZmF1bHRFeGVjdXRvckNvbmZpZ1BhcmFtAAAAAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAAYRGVmYXVsdFNlbmRVbG5Db25maWdzU2V0AAAAAQAAABxkZWZhdWx0X3NlbmRfdWxuX2NvbmZpZ3Nfc2V0AAAAAQAAAAAAAAAGcGFyYW1zAAAAAAPqAAAH0AAAABhTZXREZWZhdWx0VWxuQ29uZmlnUGFyYW0AAAAAAAAAAgAAAAUAAAAAAAAAAAAAABtEZWZhdWx0UmVjZWl2ZVVsbkNvbmZpZ3NTZXQAAAAAAQAAAB9kZWZhdWx0X3JlY2VpdmVfdWxuX2NvbmZpZ3Nfc2V0AAAAAAEAAAAAAAAABnBhcmFtcwAAAAAD6gAAB9AAAAAYU2V0RGVmYXVsdFVsbkNvbmZpZ1BhcmFtAAAAAAAAAAIAAAAFAAAAAAAAAAAAAAAPRXhlY3V0b3JGZWVQYWlkAAAAAAEAAAARZXhlY3V0b3JfZmVlX3BhaWQAAAAAAAADAAAAAAAAAAhleGVjdXRvcgAAABMAAAABAAAAAAAAAARndWlkAAAD7gAAACAAAAABAAAAAAAAAANmZWUAAAAH0AAAAAxGZWVSZWNpcGllbnQAAAAAAAAAAgAAAAUAAAAAAAAAAAAAAApEVk5GZWVQYWlkAAAAAAABAAAADGR2bl9mZWVfcGFpZAAAAAMAAAAAAAAABGd1aWQAAAPuAAAAIAAAAAEAAAAAAAAABGR2bnMAAAPqAAAAEwAAAAAAAAAAAAAABGZlZXMAAAPqAAAH0AAAAAxGZWVSZWNpcGllbnQAAAAAAAAAAgAAAAUAAAAAAAAAAAAAAA9QYXlsb2FkVmVyaWZpZWQAAAAAAQAAABBwYXlsb2FkX3ZlcmlmaWVkAAAABAAAAAAAAAADZHZuAAAAABMAAAABAAAAAAAAAAZoZWFkZXIAAAAAAA4AAAAAAAAAAAAAAA1jb25maXJtYXRpb25zAAAAAAAABgAAAAAAAAAAAAAACnByb29mX2hhc2gAAAAAA+4AAAAgAAAAAAAAAAIAAAABAAAAOFVsdHJhIExpZ2h0IE5vZGUgY29uZmlndXJhdGlvbiBmb3IgbWVzc2FnZSB2ZXJpZmljYXRpb24uAAAAAAAAAAlVbG5Db25maWcAAAAAAAAEAAAASk51bWJlciBvZiBibG9jayBjb25maXJtYXRpb25zIHJlcXVpcmVkIGJlZm9yZSBtZXNzYWdlIHZlcmlmaWNhdGlvbiBiZWdpbnMuAAAAAAANY29uZmlybWF0aW9ucwAAAAAAAAYAAAAzTWluaW11bSBudW1iZXIgb2Ygb3B0aW9uYWwgRFZOcyByZXF1aXJlZCB0byB2ZXJpZnkuAAAAABZvcHRpb25hbF9kdm5fdGhyZXNob2xkAAAAAAAEAAAAQExpc3Qgb2YgRFZOIGFkZHJlc3NlcyBmcm9tIHdoaWNoIGEgdGhyZXNob2xkIG51bWJlciBtdXN0IHZlcmlmeS4AAAANb3B0aW9uYWxfZHZucwAAAAAAA+oAAAATAAAARkxpc3Qgb2YgRFZOIGFkZHJlc3NlcyB0aGF0IG11c3QgQUxMIHZlcmlmeSB0aGUgbWVzc2FnZSAobm8gdGhyZXNob2xkKS4AAAAAAA1yZXF1aXJlZF9kdm5zAAAAAAAD6gAAABMAAAABAAAAPE9BcHAtc3BlY2lmaWMgVUxOIGNvbmZpZ3VyYXRpb24gd2l0aCBkZWZhdWx0IG92ZXJyaWRlIGZsYWdzLgAAAAAAAAANT0FwcFVsbkNvbmZpZwAAAAAAAAQAAABFT0FwcC1zcGVjaWZpYyBVTE4gY29uZmlndXJhdGlvbiAodXNlZCB3aGVuIGRlZmF1bHRzIGFyZSBub3QgYXBwbGllZCkuAAAAAAAACnVsbl9jb25maWcAAAAAB9AAAAAJVWxuQ29uZmlnAAAAAAAAJVdoZXRoZXIgdG8gdXNlIGRlZmF1bHQgY29uZmlybWF0aW9ucy4AAAAAAAAZdXNlX2RlZmF1bHRfY29uZmlybWF0aW9ucwAAAAAAAAEAAAAlV2hldGhlciB0byB1c2UgZGVmYXVsdCBvcHRpb25hbCBEVk5zLgAAAAAAABl1c2VfZGVmYXVsdF9vcHRpb25hbF9kdm5zAAAAAAAAAQAAACVXaGV0aGVyIHRvIHVzZSBkZWZhdWx0IHJlcXVpcmVkIERWTnMuAAAAAAAAGXVzZV9kZWZhdWx0X3JlcXVpcmVkX2R2bnMAAAAAAAABAAAAAQAAAFJQYXJhbWV0ZXIgZm9yIHNldHRpbmcgZGVmYXVsdCBVTE4gY29uZmlndXJhdGlvbiBmb3IgYSBkZXN0aW5hdGlvbi9zb3VyY2UgZW5kcG9pbnQuAAAAAAAAAAAAGFNldERlZmF1bHRVbG5Db25maWdQYXJhbQAAAAIAAAAoVGhlIFVMTiBjb25maWd1cmF0aW9uIHRvIHNldCBhcyBkZWZhdWx0LgAAAAZjb25maWcAAAAAB9AAAAAJVWxuQ29uZmlnAAAAAAAAS1RoZSBkZXN0aW5hdGlvbiBlbmRwb2ludCBJRCAoZm9yIHNlbmQpIG9yIHNvdXJjZSBlbmRwb2ludCBJRCAoZm9yIHJlY2VpdmUpLgAAAAADZWlkAAAAAAQAAAABAAAALEV4ZWN1dG9yIGNvbmZpZ3VyYXRpb24gZm9yIG1lc3NhZ2UgZGVsaXZlcnkuAAAAAAAAAA5FeGVjdXRvckNvbmZpZwAAAAAAAgAAAENBZGRyZXNzIG9mIHRoZSBleGVjdXRvciBjb250cmFjdCByZXNwb25zaWJsZSBmb3IgbWVzc2FnZSBleGVjdXRpb24uAAAAAAhleGVjdXRvcgAAABMAAAA5TWF4aW11bSBzaXplIG9mIG1lc3NhZ2VzIHRoYXQgY2FuIGJlIGV4ZWN1dGVkIChpbiBieXRlcykuAAAAAAAAEG1heF9tZXNzYWdlX3NpemUAAAAEAAAAAQAAAFtPQXBwLXNwZWNpZmljIGV4ZWN1dG9yIGNvbmZpZ3VyYXRpb24uCgpJZiBleGVjdXRvciBpcyBgTm9uZWAsIHRoZSBkZWZhdWx0IGV4ZWN1dG9yIGlzIHVzZWQuAAAAAAAAAAAST0FwcEV4ZWN1dG9yQ29uZmlnAAAAAAACAAAAaEFkZHJlc3Mgb2YgdGhlIGV4ZWN1dG9yIGNvbnRyYWN0IHRvIGJlIHVzZWQgZm9yIG1lc3NhZ2UgZXhlY3V0aW9uLiBOb25lIG1lYW5zIHVzZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uAAAACGV4ZWN1dG9yAAAD6AAAABMAAABcTWF4aW11bSBzaXplIG9mIG1lc3NhZ2VzIHRoYXQgY2FuIGJlIGV4ZWN1dGVkIChpbiBieXRlcykuIDAgbWVhbnMgdXNlIGRlZmF1bHQgY29uZmlndXJhdGlvbi4AAAAQbWF4X21lc3NhZ2Vfc2l6ZQAAAAQAAAABAAAAUFBhcmFtZXRlciBmb3Igc2V0dGluZyBkZWZhdWx0IGV4ZWN1dG9yIGNvbmZpZ3VyYXRpb24gZm9yIGEgZGVzdGluYXRpb24gZW5kcG9pbnQuAAAAAAAAAB1TZXREZWZhdWx0RXhlY3V0b3JDb25maWdQYXJhbQAAAAAAAAIAAAAtVGhlIGV4ZWN1dG9yIGNvbmZpZ3VyYXRpb24gdG8gc2V0IGFzIGRlZmF1bHQuAAAAAAAABmNvbmZpZwAAAAAH0AAAAA5FeGVjdXRvckNvbmZpZwAAAAAAHFRoZSBkZXN0aW5hdGlvbiBlbmRwb2ludCBJRC4AAAAHZHN0X2VpZAAAAAAEAAAABAAAABxCdWZmZXJSZWFkZXJFcnJvcjogMTAwMC0xMDA5AAAAAAAAABFCdWZmZXJSZWFkZXJFcnJvcgAAAAAAAAIAAAAAAAAADUludmFsaWRMZW5ndGgAAAAAAAPoAAAAAAAAABVJbnZhbGlkQWRkcmVzc1BheWxvYWQAAAAAAAPpAAAABAAAABxCdWZmZXJXcml0ZXJFcnJvcjogMTAxMC0xMDE5AAAAAAAAABFCdWZmZXJXcml0ZXJFcnJvcgAAAAAAAAEAAAAAAAAAFUludmFsaWRBZGRyZXNzUGF5bG9hZAAAAAAAA/IAAAAEAAAAH1R0bENvbmZpZ3VyYWJsZUVycm9yOiAxMDIwLTEwMjkAAAAAAAAAABRUdGxDb25maWd1cmFibGVFcnJvcgAAAAMAAAAAAAAAEEludmFsaWRUdGxDb25maWcAAAP8AAAAAAAAAA9UdGxDb25maWdGcm96ZW4AAAAD/QAAAAAAAAAWVHRsQ29uZmlnQWxyZWFkeUZyb3plbgAAAAAD/gAAAAQAAAAXT3duYWJsZUVycm9yOiAxMDMwLTEwMzkAAAAAAAAAAAxPd25hYmxlRXJyb3IAAAAGAAAAAAAAABNJbnZhbGlkUGVuZGluZ093bmVyAAAABAYAAAAAAAAACkludmFsaWRUdGwAAAAABAcAAAAAAAAAEU5vUGVuZGluZ1RyYW5zZmVyAAAAAAAECAAAAAAAAAAPT3duZXJBbHJlYWR5U2V0AAAABAkAAAAAAAAAC093bmVyTm90U2V0AAAABAoAAAAAAAAAElRyYW5zZmVySW5Qcm9ncmVzcwAAAAAECwAAAAQAAAAYQnl0ZXNFeHRFcnJvcjogMTA0MC0xMDQ5AAAAAAAAAA1CeXRlc0V4dEVycm9yAAAAAAAAAQAAAAAAAAAOTGVuZ3RoTWlzbWF0Y2gAAAAABBAAAAAEAAAAG1VwZ3JhZGVhYmxlRXJyb3I6IDEwNTAtMTA1OQAAAAAAAAAAEFVwZ3JhZGVhYmxlRXJyb3IAAAADAAAAAAAAABRJbnZhbGlkTWlncmF0aW9uRGF0YQAABBoAAAAAAAAAE01pZ3JhdGlvbk5vdEFsbG93ZWQAAAAEGwAAAAAAAAAOVXBncmFkZXNGcm96ZW4AAAAABBwAAAAEAAAAGE11bHRpc2lnRXJyb3I6IDEwNjAtMTA2OQAAAAAAAAANTXVsdGlzaWdFcnJvcgAAAAAAAAgAAAAAAAAAEkFscmVhZHlJbml0aWFsaXplZAAAAAAEJAAAAAAAAAANSW52YWxpZFNpZ25lcgAAAAAABCUAAAAAAAAADlNpZ25hdHVyZUVycm9yAAAAAAQmAAAAAAAAABNTaWduZXJBbHJlYWR5RXhpc3RzAAAABCcAAAAAAAAADlNpZ25lck5vdEZvdW5kAAAAAAQoAAAAAAAAAB1Ub3RhbFNpZ25lcnNMZXNzVGhhblRocmVzaG9sZAAAAAAABCkAAAAAAAAAD1Vuc29ydGVkU2lnbmVycwAAAAQqAAAAAAAAAA1aZXJvVGhyZXNob2xkAAAAAAAEKwAAAAUAAAAwRXZlbnQgZW1pdHRlZCB3aGVuIGEgc2lnbmVyIGlzIGFkZGVkIG9yIHJlbW92ZWQuAAAAAAAAAAlTaWduZXJTZXQAAAAAAAABAAAACnNpZ25lcl9zZXQAAAAAAAIAAAAAAAAABnNpZ25lcgAAAAAD7gAAABQAAAABAAAAAAAAAAZhY3RpdmUAAAAAAAEAAAAAAAAAAgAAAAUAAAA2RXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBzaWduYXR1cmUgdGhyZXNob2xkIGlzIGNoYW5nZWQuAAAAAAAAAAAADFRocmVzaG9sZFNldAAAAAEAAAANdGhyZXNob2xkX3NldAAAAAAAAAEAAAAAAAAACXRocmVzaG9sZAAAAAAAAAQAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAA9NdWx0aXNpZ1N0b3JhZ2UAAAAAAgAAAAAAAAAAAAAAB1NpZ25lcnMAAAAAAAAAAAAAAAAJVGhyZXNob2xkAAAAAAAABQAAAFdFdmVudCBlbWl0dGVkIHdoZW4gb3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIChib3RoIHNpbmdsZS1zdGVwIGFuZCB0d28tc3RlcCBjb21wbGV0aW9uKS4AAAAAAAAAABRPd25lcnNoaXBUcmFuc2ZlcnJlZAAAAAEAAAAVb3duZXJzaGlwX3RyYW5zZmVycmVkAAAAAAAAAgAAAAAAAAAJb2xkX293bmVyAAAAAAAAEwAAAAAAAAAAAAAACW5ld19vd25lcgAAAAAAABMAAAAAAAAAAgAAAAUAAAA7RXZlbnQgZW1pdHRlZCB3aGVuIGEgMi1zdGVwIG93bmVyc2hpcCB0cmFuc2ZlciBpcyBwcm9wb3NlZC4AAAAAAAAAABVPd25lcnNoaXBUcmFuc2ZlcnJpbmcAAAAAAAABAAAAFm93bmVyc2hpcF90cmFuc2ZlcnJpbmcAAAAAAAMAAAAAAAAACW9sZF9vd25lcgAAAAAAABMAAAAAAAAAAAAAAAluZXdfb3duZXIAAAAAAAATAAAAAAAAAAAAAAADdHRsAAAAAAQAAAAAAAAAAgAAAAUAAAAqRXZlbnQgZW1pdHRlZCB3aGVuIG93bmVyc2hpcCBpcyByZW5vdW5jZWQuAAAAAAAAAAAAEk93bmVyc2hpcFJlbm91bmNlZAAAAAAAAQAAABNvd25lcnNoaXBfcmVub3VuY2VkAAAAAAEAAAAAAAAACW9sZF9vd25lcgAAAAAAABMAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAA5Pd25hYmxlU3RvcmFnZQAAAAAAAgAAAAAAAAAAAAAABU93bmVyAAAAAAAAAAAAAAAAAAAMUGVuZGluZ093bmVyAAAAAQAAAElUVEwgY29uZmlndXJhdGlvbjogdGhyZXNob2xkICh3aGVuIHRvIGV4dGVuZCkgYW5kIGV4dGVuZF90byAodGFyZ2V0IFRUTCkuAAAAAAAAAAAAAAlUdGxDb25maWcAAAAAAAACAAAAKFRhcmdldCBUVEwgYWZ0ZXIgZXh0ZW5zaW9uIChpbiBsZWRnZXJzKS4AAAAJZXh0ZW5kX3RvAAAAAAAABAAAADNUVEwgdGhyZXNob2xkIHRoYXQgdHJpZ2dlcnMgZXh0ZW5zaW9uIChpbiBsZWRnZXJzKS4AAAAACXRocmVzaG9sZAAAAAAAAAQAAAAFAAAAJ0V2ZW50IGVtaXR0ZWQgd2hlbiBUVEwgY29uZmlncyBhcmUgc2V0LgAAAAAAAAAADVR0bENvbmZpZ3NTZXQAAAAAAAABAAAAD3R0bF9jb25maWdzX3NldAAAAAACAAAAAAAAAAhpbnN0YW5jZQAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAAAAAAAACnBlcnNpc3RlbnQAAAAAA+gAAAfQAAAACVR0bENvbmZpZwAAAAAAAAAAAAACAAAABQAAACpFdmVudCBlbWl0dGVkIHdoZW4gVFRMIGNvbmZpZ3MgYXJlIGZyb3plbi4AAAAAAAAAAAAQVHRsQ29uZmlnc0Zyb3plbgAAAAEAAAASdHRsX2NvbmZpZ3NfZnJvemVuAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAABBUdGxDb25maWdTdG9yYWdlAAAAAwAAAAAAAAAAAAAABkZyb3plbgAAAAAAAAAAAAAAAAAISW5zdGFuY2UAAAAAAAAAAAAAAApQZXJzaXN0ZW50AAAAAAACAAAAAAAAAAAAAAASVXBncmFkZWFibGVTdG9yYWdlAAAAAAACAAAAAAAAAAAAAAAGRnJvemVuAAAAAAAAAAAAAAAAAAlNaWdyYXRpbmcAAAAAiwEOY29udHJhY3RtZXRhdjAAAAAAAAAABmJpbnZlcgAAAAAABTAuMC4xAAAAAAAAAAAAAAVyc3ZlcgAAAAAAAAYxLjkwLjAAAAAAAAAAAAAIcnNzZGt2ZXIAAAAvMjUuMC4xIzk0MTQ0ODA3OWVjY2Y5NTYyN2QyZmZlYTEzYmEyNjhlMzA1YTkwNzcAAB4RY29udHJhY3RlbnZtZXRhdjAAAAAAAAAAGQAAAAAAUw5jb250cmFjdG1ldGF2MAAAAAAAAAAGY2xpdmVyAAAAAAAvMjUuMC4wI2E2NDkyNWU5MzkxYzNkM2IzZWY4ZTUzZGM2MGMyM2RiOWU2YTgyZTQA";
12
12
  /**
13
13
  * Pre-computed WASM hash (SHA-256)
14
14
  * Use this when the WASM is already uploaded on-chain
15
15
  */
16
- export declare const WASM_HASH = "246b8137f2eeccf75191b9fc9862067103af6569599e9bf3df5aa8b8612498dc";
16
+ export declare const WASM_HASH = "f98131c421cf42155df337d9d65de113f3dcd82c9546edbb1cdc2aaa51a930f9";
17
17
  /**
18
18
  * Get the WASM bytecode as a Buffer
19
19
  * Use this to upload the WASM to the network
@@ -715,9 +715,14 @@ export type UpgradeableStorage = {
715
715
  };
716
716
  export interface Client {
717
717
  /**
718
- * 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.
718
+ * 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.
719
+ * The type of data required for migration.
720
+ * Upgrades the contract to new WASM bytecode.
721
+ * Sets a migration flag that must be cleared by calling `migrate`.
719
722
  */
720
- authorizer: (txnOptions?: {
723
+ upgrade: ({ new_wasm_hash }: {
724
+ new_wasm_hash: Buffer;
725
+ }, txnOptions?: {
721
726
  /**
722
727
  * The fee to pay for the transaction. Default: BASE_FEE
723
728
  */
@@ -730,12 +735,15 @@ export interface Client {
730
735
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
731
736
  */
732
737
  simulate?: boolean;
733
- }) => Promise<AssembledTransaction<string>>;
738
+ }) => Promise<AssembledTransaction<null>>;
734
739
  /**
735
- * Construct and simulate a endpoint transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
736
- * Returns the endpoint address.
740
+ * 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.
741
+ * Runs migration logic after an upgrade.
742
+ * Can only be called when the migration flag is set by a previous `upgrade` call.
737
743
  */
738
- endpoint: (txnOptions?: {
744
+ migrate: ({ migration_data }: {
745
+ migration_data: Buffer;
746
+ }, txnOptions?: {
739
747
  /**
740
748
  * The fee to pay for the transaction. Default: BASE_FEE
741
749
  */
@@ -748,12 +756,13 @@ export interface Client {
748
756
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
749
757
  */
750
758
  simulate?: boolean;
751
- }) => Promise<AssembledTransaction<string>>;
759
+ }) => Promise<AssembledTransaction<null>>;
752
760
  /**
753
- * Construct and simulate a uln302 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.
754
- * Returns the Uln302 address.
761
+ * 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.
762
+ * Permanently freezes the contract, preventing any future upgrades.
763
+ * This action is irreversible.
755
764
  */
756
- uln302: (txnOptions?: {
765
+ freeze: (txnOptions?: {
757
766
  /**
758
767
  * The fee to pay for the transaction. Default: BASE_FEE
759
768
  */
@@ -766,12 +775,12 @@ export interface Client {
766
775
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
767
776
  */
768
777
  simulate?: boolean;
769
- }) => Promise<AssembledTransaction<string>>;
778
+ }) => Promise<AssembledTransaction<null>>;
770
779
  /**
771
- * Construct and simulate a local_eid 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.
772
- * Returns the local endpoint ID.
780
+ * 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.
781
+ * Returns whether the contract is frozen (upgrades disabled).
773
782
  */
774
- local_eid: (txnOptions?: {
783
+ is_frozen: (txnOptions?: {
775
784
  /**
776
785
  * The fee to pay for the transaction. Default: BASE_FEE
777
786
  */
@@ -784,15 +793,11 @@ export interface Client {
784
793
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
785
794
  */
786
795
  simulate?: boolean;
787
- }) => Promise<AssembledTransaction<u32>>;
796
+ }) => Promise<AssembledTransaction<boolean>>;
788
797
  /**
789
- * Construct and simulate a initializable 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.
790
- * Checks if a messaging path can be initialized for the given origin and receiver.
798
+ * 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.
791
799
  */
792
- initializable: ({ origin, receiver }: {
793
- origin: Origin;
794
- receiver: string;
795
- }, txnOptions?: {
800
+ authorizer: (txnOptions?: {
796
801
  /**
797
802
  * The fee to pay for the transaction. Default: BASE_FEE
798
803
  */
@@ -805,22 +810,12 @@ export interface Client {
805
810
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
806
811
  */
807
812
  simulate?: boolean;
808
- }) => Promise<AssembledTransaction<boolean>>;
813
+ }) => Promise<AssembledTransaction<string>>;
809
814
  /**
810
- * Construct and simulate a verifiable 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.
811
- * Checks if a message can be verified at the endpoint.
812
- *
813
- * Verifies:
814
- * 1. Receive library is valid for this receiver and source
815
- * 2. Endpoint nonce check passes
816
- * 3. Payload hash is not empty
815
+ * 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.
816
+ * Returns the current owner address, or None if no owner is set.
817
817
  */
818
- verifiable: ({ origin, receiver, receive_lib, payload_hash }: {
819
- origin: Origin;
820
- receiver: string;
821
- receive_lib: string;
822
- payload_hash: Buffer;
823
- }, txnOptions?: {
818
+ owner: (txnOptions?: {
824
819
  /**
825
820
  * The fee to pay for the transaction. Default: BASE_FEE
826
821
  */
@@ -833,15 +828,12 @@ export interface Client {
833
828
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
834
829
  */
835
830
  simulate?: boolean;
836
- }) => Promise<AssembledTransaction<boolean>>;
831
+ }) => Promise<AssembledTransaction<Option<string>>>;
837
832
  /**
838
- * Construct and simulate a executable 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.
839
- * Returns the execution state of a message.
833
+ * 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.
834
+ * Returns the pending owner address for 2-step transfer, or None if no transfer is pending.
840
835
  */
841
- executable: ({ origin, receiver }: {
842
- origin: Origin;
843
- receiver: string;
844
- }, txnOptions?: {
836
+ pending_owner: (txnOptions?: {
845
837
  /**
846
838
  * The fee to pay for the transaction. Default: BASE_FEE
847
839
  */
@@ -854,20 +846,20 @@ export interface Client {
854
846
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
855
847
  */
856
848
  simulate?: boolean;
857
- }) => Promise<AssembledTransaction<ExecutionState>>;
849
+ }) => Promise<AssembledTransaction<Option<string>>>;
858
850
  /**
859
- * Construct and simulate a uln_verifiable 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.
860
- * Returns the combined verification state of a message.
851
+ * 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.
852
+ * Transfers ownership immediately to a new address.
861
853
  *
862
- * This function checks:
863
- * 1. Packet header validity (dst_eid matches local_eid)
864
- * 2. Endpoint initializable status
865
- * 3. Endpoint verifiable status
866
- * 4. ULN verifiable status (DVN confirmations)
854
+ * Use with caution - if you transfer to a wrong address, ownership is lost forever.
855
+ * Consider using `propose_ownership_transfer` instead.
856
+ *
857
+ * # Panics
858
+ * - `OwnerNotSet` if no owner is currently set
859
+ * - `TransferInProgress` if a 2-step transfer is in progress
867
860
  */
868
- uln_verifiable: ({ packet_header, payload_hash }: {
869
- packet_header: Buffer;
870
- payload_hash: Buffer;
861
+ transfer_ownership: ({ new_owner }: {
862
+ new_owner: string;
871
863
  }, txnOptions?: {
872
864
  /**
873
865
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -881,25 +873,28 @@ export interface Client {
881
873
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
882
874
  */
883
875
  simulate?: boolean;
884
- }) => Promise<AssembledTransaction<VerificationState>>;
876
+ }) => Promise<AssembledTransaction<null>>;
885
877
  /**
886
- * 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.
887
- * Sets TTL configs for instance and persistent storage.
878
+ * 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.
879
+ * Proposes an ownership transfer to a new address.
888
880
  *
889
- * - `None` values remove the corresponding config (disables auto-extension for that type)
890
- * - Validates that `threshold <= extend_to <= MAX_TTL`
881
+ * The new owner must call `accept_ownership()` within `ttl` ledgers
882
+ * to complete the transfer. The pending transfer will automatically expire after.
891
883
  *
892
884
  * # Arguments
893
- * - `instance` - TTL config for instance storage
894
- * - `persistent` - TTL config for persistent storage
885
+ * - `new_owner` - The proposed new owner
886
+ * - `ttl` - Number of ledgers the new owner has to accept.
887
+ * Use `0` to cancel a pending transfer (new_owner must match pending).
895
888
  *
896
889
  * # Panics
897
- * - `TtlConfigFrozen` if configs are frozen
898
- * - `InvalidTtlConfig` if validation fails
890
+ * - `OwnerNotSet` if no owner is currently set
891
+ * - `NoPendingTransfer` when cancelling and no pending transfer exists
892
+ * - `InvalidTtl` if ttl exceeds max TTL
893
+ * - `InvalidPendingOwner` when cancelling with wrong new_owner address
899
894
  */
900
- set_ttl_configs: ({ instance, persistent }: {
901
- instance: Option<TtlConfig>;
902
- persistent: Option<TtlConfig>;
895
+ propose_ownership_transfer: ({ new_owner, ttl }: {
896
+ new_owner: string;
897
+ ttl: u32;
903
898
  }, txnOptions?: {
904
899
  /**
905
900
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -915,10 +910,15 @@ export interface Client {
915
910
  simulate?: boolean;
916
911
  }) => Promise<AssembledTransaction<null>>;
917
912
  /**
918
- * 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.
919
- * Returns the current TTL configs as (instance_config, persistent_config).
913
+ * 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.
914
+ * Accepts a pending 2-step ownership transfer.
915
+ *
916
+ * Must be called by the pending owner before the TTL expires.
917
+ *
918
+ * # Panics
919
+ * - `NoPendingTransfer` if there is no pending transfer (or it expired)
920
920
  */
921
- ttl_configs: (txnOptions?: {
921
+ accept_ownership: (txnOptions?: {
922
922
  /**
923
923
  * The fee to pay for the transaction. Default: BASE_FEE
924
924
  */
@@ -931,18 +931,16 @@ export interface Client {
931
931
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
932
932
  */
933
933
  simulate?: boolean;
934
- }) => Promise<AssembledTransaction<readonly [Option<TtlConfig>, Option<TtlConfig>]>>;
934
+ }) => Promise<AssembledTransaction<null>>;
935
935
  /**
936
- * 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.
937
- * Permanently freezes TTL configs, preventing any future modifications.
938
- *
939
- * This is irreversible and provides immutability guarantees to users.
940
- * Emits `TtlConfigsFrozen` event.
936
+ * 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.
937
+ * Permanently renounces ownership.
941
938
  *
942
939
  * # Panics
943
- * - `TtlConfigAlreadyFrozen` if already frozen
940
+ * - `OwnerNotSet` if no owner is currently set
941
+ * - `TransferInProgress` if a 2-step transfer is in progress (cancel it first)
944
942
  */
945
- freeze_ttl_configs: (txnOptions?: {
943
+ renounce_ownership: (txnOptions?: {
946
944
  /**
947
945
  * The fee to pay for the transaction. Default: BASE_FEE
948
946
  */
@@ -957,10 +955,18 @@ export interface Client {
957
955
  simulate?: boolean;
958
956
  }) => Promise<AssembledTransaction<null>>;
959
957
  /**
960
- * 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.
961
- * Returns whether TTL configs are frozen.
958
+ * 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.
959
+ * Extends the instance TTL.
960
+ *
961
+ * # Arguments
962
+ *
963
+ * * `threshold` - The threshold to extend the TTL (if current TTL is below this, extend).
964
+ * * `extend_to` - The TTL to extend to.
962
965
  */
963
- is_ttl_configs_frozen: (txnOptions?: {
966
+ extend_instance_ttl: ({ threshold, extend_to }: {
967
+ threshold: u32;
968
+ extend_to: u32;
969
+ }, txnOptions?: {
964
970
  /**
965
971
  * The fee to pay for the transaction. Default: BASE_FEE
966
972
  */
@@ -973,19 +979,25 @@ export interface Client {
973
979
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
974
980
  */
975
981
  simulate?: boolean;
976
- }) => Promise<AssembledTransaction<boolean>>;
982
+ }) => Promise<AssembledTransaction<null>>;
977
983
  /**
978
- * 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.
979
- * Extends the instance TTL.
984
+ * 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.
985
+ * Sets TTL configs for instance and persistent storage.
986
+ *
987
+ * - `None` values remove the corresponding config (disables auto-extension for that type)
988
+ * - Validates that `threshold <= extend_to <= MAX_TTL`
980
989
  *
981
990
  * # Arguments
991
+ * - `instance` - TTL config for instance storage
992
+ * - `persistent` - TTL config for persistent storage
982
993
  *
983
- * * `threshold` - The threshold to extend the TTL (if current TTL is below this, extend).
984
- * * `extend_to` - The TTL to extend to.
994
+ * # Panics
995
+ * - `TtlConfigFrozen` if configs are frozen
996
+ * - `InvalidTtlConfig` if validation fails
985
997
  */
986
- extend_instance_ttl: ({ threshold, extend_to }: {
987
- threshold: u32;
988
- extend_to: u32;
998
+ set_ttl_configs: ({ instance, persistent }: {
999
+ instance: Option<TtlConfig>;
1000
+ persistent: Option<TtlConfig>;
989
1001
  }, txnOptions?: {
990
1002
  /**
991
1003
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -1001,10 +1013,10 @@ export interface Client {
1001
1013
  simulate?: boolean;
1002
1014
  }) => Promise<AssembledTransaction<null>>;
1003
1015
  /**
1004
- * 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.
1005
- * Returns the current owner address, or None if no owner is set.
1016
+ * 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.
1017
+ * Returns the current TTL configs as (instance_config, persistent_config).
1006
1018
  */
1007
- owner: (txnOptions?: {
1019
+ ttl_configs: (txnOptions?: {
1008
1020
  /**
1009
1021
  * The fee to pay for the transaction. Default: BASE_FEE
1010
1022
  */
@@ -1017,12 +1029,18 @@ export interface Client {
1017
1029
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1018
1030
  */
1019
1031
  simulate?: boolean;
1020
- }) => Promise<AssembledTransaction<Option<string>>>;
1032
+ }) => Promise<AssembledTransaction<readonly [Option<TtlConfig>, Option<TtlConfig>]>>;
1021
1033
  /**
1022
- * 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.
1023
- * Returns the pending owner address for 2-step transfer, or None if no transfer is pending.
1034
+ * 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.
1035
+ * Permanently freezes TTL configs, preventing any future modifications.
1036
+ *
1037
+ * This is irreversible and provides immutability guarantees to users.
1038
+ * Emits `TtlConfigsFrozen` event.
1039
+ *
1040
+ * # Panics
1041
+ * - `TtlConfigAlreadyFrozen` if already frozen
1024
1042
  */
1025
- pending_owner: (txnOptions?: {
1043
+ freeze_ttl_configs: (txnOptions?: {
1026
1044
  /**
1027
1045
  * The fee to pay for the transaction. Default: BASE_FEE
1028
1046
  */
@@ -1035,21 +1053,12 @@ export interface Client {
1035
1053
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1036
1054
  */
1037
1055
  simulate?: boolean;
1038
- }) => Promise<AssembledTransaction<Option<string>>>;
1056
+ }) => Promise<AssembledTransaction<null>>;
1039
1057
  /**
1040
- * 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.
1041
- * Transfers ownership immediately to a new address.
1042
- *
1043
- * Use with caution - if you transfer to a wrong address, ownership is lost forever.
1044
- * Consider using `propose_ownership_transfer` instead.
1045
- *
1046
- * # Panics
1047
- * - `OwnerNotSet` if no owner is currently set
1048
- * - `TransferInProgress` if a 2-step transfer is in progress
1058
+ * 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.
1059
+ * Returns whether TTL configs are frozen.
1049
1060
  */
1050
- transfer_ownership: ({ new_owner }: {
1051
- new_owner: string;
1052
- }, txnOptions?: {
1061
+ is_ttl_configs_frozen: (txnOptions?: {
1053
1062
  /**
1054
1063
  * The fee to pay for the transaction. Default: BASE_FEE
1055
1064
  */
@@ -1062,29 +1071,12 @@ export interface Client {
1062
1071
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1063
1072
  */
1064
1073
  simulate?: boolean;
1065
- }) => Promise<AssembledTransaction<null>>;
1074
+ }) => Promise<AssembledTransaction<boolean>>;
1066
1075
  /**
1067
- * 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.
1068
- * Proposes an ownership transfer to a new address.
1069
- *
1070
- * The new owner must call `accept_ownership()` within `ttl` ledgers
1071
- * to complete the transfer. The pending transfer will automatically expire after.
1072
- *
1073
- * # Arguments
1074
- * - `new_owner` - The proposed new owner
1075
- * - `ttl` - Number of ledgers the new owner has to accept.
1076
- * Use `0` to cancel a pending transfer (new_owner must match pending).
1077
- *
1078
- * # Panics
1079
- * - `OwnerNotSet` if no owner is currently set
1080
- * - `NoPendingTransfer` when cancelling and no pending transfer exists
1081
- * - `InvalidTtl` if ttl exceeds max TTL
1082
- * - `InvalidPendingOwner` when cancelling with wrong new_owner address
1076
+ * Construct and simulate a endpoint transaction. Returns an `AssembledTransaction` object which will have a `result` field containing the result of the simulation. If this transaction changes contract state, you will need to call `signAndSend()` on the returned object.
1077
+ * Returns the endpoint address.
1083
1078
  */
1084
- propose_ownership_transfer: ({ new_owner, ttl }: {
1085
- new_owner: string;
1086
- ttl: u32;
1087
- }, txnOptions?: {
1079
+ endpoint: (txnOptions?: {
1088
1080
  /**
1089
1081
  * The fee to pay for the transaction. Default: BASE_FEE
1090
1082
  */
@@ -1097,17 +1089,12 @@ export interface Client {
1097
1089
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1098
1090
  */
1099
1091
  simulate?: boolean;
1100
- }) => Promise<AssembledTransaction<null>>;
1092
+ }) => Promise<AssembledTransaction<string>>;
1101
1093
  /**
1102
- * 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.
1103
- * Accepts a pending 2-step ownership transfer.
1104
- *
1105
- * Must be called by the pending owner before the TTL expires.
1106
- *
1107
- * # Panics
1108
- * - `NoPendingTransfer` if there is no pending transfer (or it expired)
1094
+ * Construct and simulate a uln302 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.
1095
+ * Returns the Uln302 address.
1109
1096
  */
1110
- accept_ownership: (txnOptions?: {
1097
+ uln302: (txnOptions?: {
1111
1098
  /**
1112
1099
  * The fee to pay for the transaction. Default: BASE_FEE
1113
1100
  */
@@ -1120,16 +1107,12 @@ export interface Client {
1120
1107
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1121
1108
  */
1122
1109
  simulate?: boolean;
1123
- }) => Promise<AssembledTransaction<null>>;
1110
+ }) => Promise<AssembledTransaction<string>>;
1124
1111
  /**
1125
- * 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.
1126
- * Permanently renounces ownership.
1127
- *
1128
- * # Panics
1129
- * - `OwnerNotSet` if no owner is currently set
1130
- * - `TransferInProgress` if a 2-step transfer is in progress (cancel it first)
1112
+ * Construct and simulate a local_eid 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.
1113
+ * Returns the local endpoint ID.
1131
1114
  */
1132
- renounce_ownership: (txnOptions?: {
1115
+ local_eid: (txnOptions?: {
1133
1116
  /**
1134
1117
  * The fee to pay for the transaction. Default: BASE_FEE
1135
1118
  */
@@ -1142,15 +1125,14 @@ export interface Client {
1142
1125
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1143
1126
  */
1144
1127
  simulate?: boolean;
1145
- }) => Promise<AssembledTransaction<null>>;
1128
+ }) => Promise<AssembledTransaction<u32>>;
1146
1129
  /**
1147
- * 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.
1148
- * The type of data required for migration.
1149
- * Upgrades the contract to new WASM bytecode.
1150
- * Sets a migration flag that must be cleared by calling `migrate`.
1130
+ * Construct and simulate a initializable 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.
1131
+ * Checks if a messaging path can be initialized for the given origin and receiver.
1151
1132
  */
1152
- upgrade: ({ new_wasm_hash }: {
1153
- new_wasm_hash: Buffer;
1133
+ initializable: ({ origin, receiver }: {
1134
+ origin: Origin;
1135
+ receiver: string;
1154
1136
  }, txnOptions?: {
1155
1137
  /**
1156
1138
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -1164,14 +1146,21 @@ export interface Client {
1164
1146
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1165
1147
  */
1166
1148
  simulate?: boolean;
1167
- }) => Promise<AssembledTransaction<null>>;
1149
+ }) => Promise<AssembledTransaction<boolean>>;
1168
1150
  /**
1169
- * 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.
1170
- * Runs migration logic after an upgrade.
1171
- * Can only be called when the migration flag is set by a previous `upgrade` call.
1151
+ * Construct and simulate a verifiable 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.
1152
+ * Checks if a message can be verified at the endpoint.
1153
+ *
1154
+ * Verifies:
1155
+ * 1. Receive library is valid for this receiver and source
1156
+ * 2. Endpoint nonce check passes
1157
+ * 3. Payload hash is not empty
1172
1158
  */
1173
- migrate: ({ migration_data }: {
1174
- migration_data: Buffer;
1159
+ verifiable: ({ origin, receiver, receive_lib, payload_hash }: {
1160
+ origin: Origin;
1161
+ receiver: string;
1162
+ receive_lib: string;
1163
+ payload_hash: Buffer;
1175
1164
  }, txnOptions?: {
1176
1165
  /**
1177
1166
  * The fee to pay for the transaction. Default: BASE_FEE
@@ -1185,13 +1174,15 @@ export interface Client {
1185
1174
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1186
1175
  */
1187
1176
  simulate?: boolean;
1188
- }) => Promise<AssembledTransaction<null>>;
1177
+ }) => Promise<AssembledTransaction<boolean>>;
1189
1178
  /**
1190
- * 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.
1191
- * Permanently freezes the contract, preventing any future upgrades.
1192
- * This action is irreversible.
1179
+ * Construct and simulate a executable 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.
1180
+ * Returns the execution state of a message.
1193
1181
  */
1194
- freeze: (txnOptions?: {
1182
+ executable: ({ origin, receiver }: {
1183
+ origin: Origin;
1184
+ receiver: string;
1185
+ }, txnOptions?: {
1195
1186
  /**
1196
1187
  * The fee to pay for the transaction. Default: BASE_FEE
1197
1188
  */
@@ -1204,12 +1195,21 @@ export interface Client {
1204
1195
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1205
1196
  */
1206
1197
  simulate?: boolean;
1207
- }) => Promise<AssembledTransaction<null>>;
1198
+ }) => Promise<AssembledTransaction<ExecutionState>>;
1208
1199
  /**
1209
- * 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.
1210
- * Returns whether the contract is frozen (upgrades disabled).
1200
+ * Construct and simulate a uln_verifiable 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.
1201
+ * Returns the combined verification state of a message.
1202
+ *
1203
+ * This function checks:
1204
+ * 1. Packet header validity (dst_eid matches local_eid)
1205
+ * 2. Endpoint initializable status
1206
+ * 3. Endpoint verifiable status
1207
+ * 4. ULN verifiable status (DVN confirmations)
1211
1208
  */
1212
- is_frozen: (txnOptions?: {
1209
+ uln_verifiable: ({ packet_header, payload_hash }: {
1210
+ packet_header: Buffer;
1211
+ payload_hash: Buffer;
1212
+ }, txnOptions?: {
1213
1213
  /**
1214
1214
  * The fee to pay for the transaction. Default: BASE_FEE
1215
1215
  */
@@ -1222,7 +1222,7 @@ export interface Client {
1222
1222
  * Whether to automatically simulate the transaction when constructing the AssembledTransaction. Default: true
1223
1223
  */
1224
1224
  simulate?: boolean;
1225
- }) => Promise<AssembledTransaction<boolean>>;
1225
+ }) => Promise<AssembledTransaction<VerificationState>>;
1226
1226
  }
1227
1227
  export declare class Client extends ContractClient {
1228
1228
  readonly options: ContractClientOptions;
@@ -1244,7 +1244,22 @@ export declare class Client extends ContractClient {
1244
1244
  }): Promise<AssembledTransaction<T>>;
1245
1245
  constructor(options: ContractClientOptions);
1246
1246
  readonly fromJSON: {
1247
+ upgrade: (json: string) => AssembledTransaction<null>;
1248
+ migrate: (json: string) => AssembledTransaction<null>;
1249
+ freeze: (json: string) => AssembledTransaction<null>;
1250
+ is_frozen: (json: string) => AssembledTransaction<boolean>;
1247
1251
  authorizer: (json: string) => AssembledTransaction<string>;
1252
+ owner: (json: string) => AssembledTransaction<Option<string>>;
1253
+ pending_owner: (json: string) => AssembledTransaction<Option<string>>;
1254
+ transfer_ownership: (json: string) => AssembledTransaction<null>;
1255
+ propose_ownership_transfer: (json: string) => AssembledTransaction<null>;
1256
+ accept_ownership: (json: string) => AssembledTransaction<null>;
1257
+ renounce_ownership: (json: string) => AssembledTransaction<null>;
1258
+ extend_instance_ttl: (json: string) => AssembledTransaction<null>;
1259
+ set_ttl_configs: (json: string) => AssembledTransaction<null>;
1260
+ ttl_configs: (json: string) => AssembledTransaction<readonly [Option<TtlConfig>, Option<TtlConfig>]>;
1261
+ freeze_ttl_configs: (json: string) => AssembledTransaction<null>;
1262
+ is_ttl_configs_frozen: (json: string) => AssembledTransaction<boolean>;
1248
1263
  endpoint: (json: string) => AssembledTransaction<string>;
1249
1264
  uln302: (json: string) => AssembledTransaction<string>;
1250
1265
  local_eid: (json: string) => AssembledTransaction<number>;
@@ -1252,20 +1267,5 @@ export declare class Client extends ContractClient {
1252
1267
  verifiable: (json: string) => AssembledTransaction<boolean>;
1253
1268
  executable: (json: string) => AssembledTransaction<ExecutionState>;
1254
1269
  uln_verifiable: (json: string) => AssembledTransaction<VerificationState>;
1255
- set_ttl_configs: (json: string) => AssembledTransaction<null>;
1256
- ttl_configs: (json: string) => AssembledTransaction<readonly [Option<TtlConfig>, Option<TtlConfig>]>;
1257
- freeze_ttl_configs: (json: string) => AssembledTransaction<null>;
1258
- is_ttl_configs_frozen: (json: string) => AssembledTransaction<boolean>;
1259
- extend_instance_ttl: (json: string) => AssembledTransaction<null>;
1260
- owner: (json: string) => AssembledTransaction<Option<string>>;
1261
- pending_owner: (json: string) => AssembledTransaction<Option<string>>;
1262
- transfer_ownership: (json: string) => AssembledTransaction<null>;
1263
- propose_ownership_transfer: (json: string) => AssembledTransaction<null>;
1264
- accept_ownership: (json: string) => AssembledTransaction<null>;
1265
- renounce_ownership: (json: string) => AssembledTransaction<null>;
1266
- upgrade: (json: string) => AssembledTransaction<null>;
1267
- migrate: (json: string) => AssembledTransaction<null>;
1268
- freeze: (json: string) => AssembledTransaction<null>;
1269
- is_frozen: (json: string) => AssembledTransaction<boolean>;
1270
1270
  };
1271
1271
  }