obsidian-integration-testing 8.3.0 → 9.0.0

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 (97) hide show
  1. package/README.md +52 -11
  2. package/dist/lib/cjs/asar-fallback-detection.cjs +48 -0
  3. package/dist/lib/cjs/asar-fallback-detection.d.cts +75 -0
  4. package/dist/lib/cjs/avd-list.cjs +36 -0
  5. package/dist/lib/cjs/avd-list.d.cts +38 -0
  6. package/dist/lib/cjs/compatibility-options.cjs +18 -1
  7. package/dist/lib/cjs/compatibility-options.d.cts +41 -0
  8. package/dist/lib/cjs/connect-to-cdp.cjs +17 -18
  9. package/dist/lib/cjs/connect-to-cdp.d.cts +25 -0
  10. package/dist/lib/cjs/demo-vault-tree.cjs +52 -0
  11. package/dist/lib/cjs/demo-vault-tree.d.cts +34 -0
  12. package/dist/lib/cjs/ecmascript-version.cjs +63 -0
  13. package/dist/lib/cjs/ecmascript-version.d.cts +28 -0
  14. package/dist/lib/cjs/global-setup-core.cjs +44 -27
  15. package/dist/lib/cjs/global-setup-core.d.cts +15 -3
  16. package/dist/lib/cjs/index.cjs +10 -1
  17. package/dist/lib/cjs/index.d.cts +7 -1
  18. package/dist/lib/cjs/installer-asset.cjs +18 -3
  19. package/dist/lib/cjs/installer-asset.d.cts +26 -0
  20. package/dist/lib/cjs/jest/global-setup-no-plugin.cjs +41 -0
  21. package/dist/lib/cjs/jest/global-setup-no-plugin.d.cts +26 -0
  22. package/dist/lib/cjs/jest/global-setup.cjs +2 -2
  23. package/dist/lib/cjs/jest/global-setup.d.cts +11 -1
  24. package/dist/lib/cjs/jest/global-teardown-no-plugin.cjs +26 -0
  25. package/dist/lib/cjs/jest/global-teardown-no-plugin.d.cts +11 -0
  26. package/dist/lib/cjs/library.cjs +1 -1
  27. package/dist/lib/cjs/namespace-bootstrap.cjs +44 -7
  28. package/dist/lib/cjs/normalize-optional-properties.cjs +31 -0
  29. package/dist/lib/cjs/normalize-optional-properties.d.cts +26 -0
  30. package/dist/lib/cjs/obsidian-installer.cjs +6 -1
  31. package/dist/lib/cjs/obsidian-metadata.cjs +3775 -302
  32. package/dist/lib/cjs/obsidian-metadata.d.cts +71 -0
  33. package/dist/lib/cjs/obsidian-version-switch.cjs +5 -2
  34. package/dist/lib/cjs/owned-vault-seed.cjs +38 -0
  35. package/dist/lib/cjs/owned-vault-seed.d.cts +67 -0
  36. package/dist/lib/cjs/process-exit-message.cjs +47 -0
  37. package/dist/lib/cjs/process-exit-message.d.cts +48 -0
  38. package/dist/lib/cjs/silent-asar-fallback-error.cjs +48 -0
  39. package/dist/lib/cjs/silent-asar-fallback-error.d.cts +40 -0
  40. package/dist/lib/cjs/transport-desktop-cdp.cjs +197 -73
  41. package/dist/lib/cjs/transport-desktop-cdp.d.cts +74 -15
  42. package/dist/lib/cjs/transport-factory.cjs +135 -34
  43. package/dist/lib/cjs/transport-options.cjs +1 -1
  44. package/dist/lib/cjs/transport-options.d.cts +16 -0
  45. package/dist/lib/cjs/vitest/global-setup-no-plugin.cjs +37 -0
  46. package/dist/lib/cjs/vitest/global-setup-no-plugin.d.cts +26 -0
  47. package/dist/lib/cjs/vitest/global-setup.cjs +2 -2
  48. package/dist/lib/cjs/vitest/global-setup.d.cts +11 -1
  49. package/dist/lib/esm/asar-fallback-detection.d.mts +75 -0
  50. package/dist/lib/esm/asar-fallback-detection.mjs +24 -0
  51. package/dist/lib/esm/avd-list.d.mts +38 -0
  52. package/dist/lib/esm/avd-list.mjs +11 -0
  53. package/dist/lib/esm/compatibility-options.d.mts +41 -0
  54. package/dist/lib/esm/compatibility-options.mjs +16 -1
  55. package/dist/lib/esm/connect-to-cdp.d.mts +25 -0
  56. package/dist/lib/esm/connect-to-cdp.mjs +17 -18
  57. package/dist/lib/esm/demo-vault-tree.d.mts +34 -0
  58. package/dist/lib/esm/demo-vault-tree.mjs +35 -0
  59. package/dist/lib/esm/ecmascript-version.d.mts +28 -0
  60. package/dist/lib/esm/ecmascript-version.mjs +39 -0
  61. package/dist/lib/esm/global-setup-core.d.mts +15 -3
  62. package/dist/lib/esm/global-setup-core.mjs +44 -27
  63. package/dist/lib/esm/index.d.mts +7 -1
  64. package/dist/lib/esm/index.mjs +7 -1
  65. package/dist/lib/esm/installer-asset.d.mts +26 -0
  66. package/dist/lib/esm/installer-asset.mjs +16 -2
  67. package/dist/lib/esm/jest/global-setup-no-plugin.d.mts +26 -0
  68. package/dist/lib/esm/jest/global-setup-no-plugin.mjs +17 -0
  69. package/dist/lib/esm/jest/global-setup.d.mts +11 -1
  70. package/dist/lib/esm/jest/global-setup.mjs +2 -2
  71. package/dist/lib/esm/jest/global-teardown-no-plugin.d.mts +11 -0
  72. package/dist/lib/esm/jest/global-teardown-no-plugin.mjs +6 -0
  73. package/dist/lib/esm/library.mjs +1 -1
  74. package/dist/lib/esm/namespace-bootstrap.mjs +44 -7
  75. package/dist/lib/esm/normalize-optional-properties.d.mts +26 -0
  76. package/dist/lib/esm/normalize-optional-properties.mjs +7 -0
  77. package/dist/lib/esm/obsidian-installer.mjs +8 -2
  78. package/dist/lib/esm/obsidian-metadata.d.mts +71 -0
  79. package/dist/lib/esm/obsidian-metadata.mjs +3775 -302
  80. package/dist/lib/esm/obsidian-version-switch.mjs +5 -2
  81. package/dist/lib/esm/owned-vault-seed.d.mts +67 -0
  82. package/dist/lib/esm/owned-vault-seed.mjs +14 -0
  83. package/dist/lib/esm/process-exit-message.d.mts +48 -0
  84. package/dist/lib/esm/process-exit-message.mjs +23 -0
  85. package/dist/lib/esm/silent-asar-fallback-error.d.mts +40 -0
  86. package/dist/lib/esm/silent-asar-fallback-error.mjs +24 -0
  87. package/dist/lib/esm/transport-desktop-cdp.d.mts +74 -15
  88. package/dist/lib/esm/transport-desktop-cdp.mjs +197 -73
  89. package/dist/lib/esm/transport-factory.mjs +139 -34
  90. package/dist/lib/esm/transport-options.d.mts +16 -0
  91. package/dist/lib/esm/vitest/global-setup-no-plugin.d.mts +26 -0
  92. package/dist/lib/esm/vitest/global-setup-no-plugin.mjs +11 -0
  93. package/dist/lib/esm/vitest/global-setup.d.mts +11 -1
  94. package/dist/lib/esm/vitest/global-setup.mjs +2 -2
  95. package/dist/obsidian-integration-testing-9.0.0.tgz +0 -0
  96. package/package.json +40 -8
  97. package/dist/obsidian-integration-testing-8.3.0.tgz +0 -0
@@ -14,4 +14,4 @@ var __copyProps = (to, from, except, desc) => {
14
14
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
15
  var transport_options_exports = {};
16
16
  module.exports = __toCommonJS(transport_options_exports);
17
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3RyYW5zcG9ydC1vcHRpb25zLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRGlzY3JpbWluYXRlZCB1bmlvbiB0eXBlcyBmb3IgY29uZmlndXJpbmcgdGhlIE9ic2lkaWFuIHRyYW5zcG9ydFxuICogdmlhIHZpdGVzdCBgZW52aXJvbm1lbnRPcHRpb25zYC5cbiAqL1xuXG4vKipcbiAqIFRyYW5zcG9ydCBvcHRpb25zIGZvciBBbmRyb2lkIHRlc3RpbmcgdmlhIEFwcGl1bSBXZWJWaWV3IGluamVjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFwcCBwYWNrYWdlIChBbmRyb2lkKSBvciBidW5kbGUgSUQgKGlPUykuXG4gICAqIERlZmF1bHRzIHRvIGAnbWQub2JzaWRpYW4nYFxuICAgKi9cbiAgcmVhZG9ubHkgYXBwSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciB0aGUgYXV0by1zdGFydGVkIEFwcGl1bSBzZXJ2ZXIgdG8gYmVjb21lIHJlYWR5XG4gICAqIChpdHMgYC9zdGF0dXNgIGVuZHBvaW50IHRvIHJlc3BvbmQpLlxuICAgKlxuICAgKiBPbmx5IGFwcGxpZXMgd2hlbiB0aGUgaGFybmVzcyBhdXRvLXN0YXJ0cyB0aGUgQXBwaXVtIHNlcnZlclxuICAgKiAoe0BsaW5rIHNob3VsZEF1dG9TdGFydEFwcGl1bX0pOyBpZ25vcmVkIHdoZW4gYXR0YWNoaW5nIHRvIGFuXG4gICAqIGFscmVhZHktcnVubmluZyBzZXJ2ZXIuIE9uIGEgY29sZCBtYWNoaW5lIHRoZSBgbnB4IGFwcGl1bWAgc2VydmVyIGNhbiB0YWtlXG4gICAqIGEgd2hpbGUgdG8gZmluaXNoIGJvb3RpbmcsIHNvIHJhaXNlIHRoaXMgaWYgc3RhcnR1cCB0aW1lcyBvdXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAxODAwMDBgXG4gICAqL1xuICByZWFkb25seSBhcHBpdW1TdGFydFRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIEFwcGl1bSBzZXJ2ZXIgVVJMIChlLmcuIGAnaHR0cDovL2xvY2FsaG9zdDo0NzIzJ2ApLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwaXVtVXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBbmRyb2lkIEFWRCAoQW5kcm9pZCBWaXJ0dWFsIERldmljZSkgbmFtZS5cbiAgICpcbiAgICogVGhlIHRyYW5zcG9ydCBmYWN0b3J5IGxhdW5jaGVzIGBlbXVsYXRvciAtYXZkIDxhdmROYW1lPmAgYXMgYSBiYWNrZ3JvdW5kXG4gICAqIHByb2Nlc3MgYW5kIHBvbGxzIHVudGlsIHRoZSBkZXZpY2UgYXBwZWFycy4gVGhlIGVtdWxhdG9yIGlzIGtpbGxlZFxuICAgKiBvbiB0cmFuc3BvcnQgZGlzcG9zYWwuXG4gICAqXG4gICAqIFJ1biBgZW11bGF0b3IgLWxpc3QtYXZkc2AgdG8gc2VlIGF2YWlsYWJsZSBBVkQgbmFtZXMuXG4gICAqL1xuICByZWFkb25seSBhdmROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXZpY2UgVURJRCB0byByZXVzZSAoZS5nLiBgJ2VtdWxhdG9yLTU1NTQnYCkuXG4gICAqXG4gICAqIFBvcHVsYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBnbG9iYWwgc2V0dXAgYWZ0ZXIgdGhlIEFwcGl1bSBzZXNzaW9uIGlzXG4gICAqIGVzdGFibGlzaGVkLiBXaGVuIHByZXNlbnQgYWxvbmdzaWRlIHtAbGluayBzZXNzaW9uSWR9LCB0aGUgdHJhbnNwb3J0XG4gICAqIGZhY3Rvcnkgc2tpcHMgZW11bGF0b3Igc3RhcnR1cCBhbmQgYXR0YWNoZXMgdG8gdGhlIGV4aXN0aW5nIHNlc3Npb24uXG4gICAqL1xuICByZWFkb25seSBkZXZpY2VJZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIHdhaXRpbmcsIGFmdGVyIGBzeXMuYm9vdF9jb21wbGV0ZWRgLCBmb3IgYVxuICAgKiBoYXJuZXNzLXN0YXJ0ZWQgZW11bGF0b3IgdG8gYmVjb21lIGlkbGUgYmVmb3JlIHRoZSBBcHBpdW0gc2Vzc2lvbiBpc1xuICAgKiBlc3RhYmxpc2hlZC5cbiAgICpcbiAgICogYHN5cy5ib290X2NvbXBsZXRlZGAgZmlyZXMgKmJlZm9yZSogdGhlIGd1ZXN0IGlzIGFjdHVhbGx5IGlkbGU6IHBhY2thZ2VcbiAgICogb3B0aW1pemF0aW9uIGFuZCBzeXN0ZW0gc2VydmljZXMga2VlcCBjaHVybmluZywgc28gZXN0YWJsaXNoaW5nIHRoZSBzZXNzaW9uXG4gICAqIGltbWVkaWF0ZWx5IG1ha2VzIGV2ZXJ5IG9uZSBvZiBVaUF1dG9tYXRvcjIncyBzZXJpYWxpemVkIGBhZGJgIHJvdW5kLXRyaXBzXG4gICAqIGNvbnRlbmQgd2l0aCB0aGF0IHdvcmsgYW5kIGluZmxhdGVzIHNlc3Npb24gZXN0YWJsaXNobWVudCB+M3guIFRoZSBmYWN0b3J5XG4gICAqIGluc3RlYWQgd2FpdHMgdW50aWwgdGhlIGJvb3QgYW5pbWF0aW9uIGhhcyBzdG9wcGVkIGFuZCB0aGUgcGFja2FnZSBtYW5hZ2VyXG4gICAqIGlzIHNlcnZpbmcsIHByb2NlZWRpbmcgZWFybHkgb25jZSBpZGxlIG9yIGFmdGVyIHRoaXMgYnVkZ2V0IChiZXN0LWVmZm9ydCBcdTIwMTQgYVxuICAgKiB0aW1lb3V0IGxvZ3MgYSB3YXJuaW5nIGFuZCBwcm9jZWVkcykuIFNldCBgMGAgdG8gc2tpcCB0aGUgd2FpdC4gT25seSBhcHBsaWVzXG4gICAqIHRvIGEgaGFybmVzcy1zdGFydGVkIGVtdWxhdG9yLCBub3QgYSByZXVzZWQgb25lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgNjAwMDBgXG4gICAqL1xuICByZWFkb25seSBkZXZpY2VJZGxlVGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhdXRvLXN0YXJ0ZWQgQXBwaXVtIHNlcnZlciBjb25zb2xlIHdpbmRvdyBpcyBzaG93bi5cbiAgICpcbiAgICogV2hlbiBgZmFsc2VgICh0aGUgZGVmYXVsdCksIHRoZSBgbnB4IGFwcGl1bWAgc2VydmVyIHByb2Nlc3MgaXMgc3Bhd25lZCB3aXRoXG4gICAqIGl0cyBjb25zb2xlIHdpbmRvdyBoaWRkZW4gKGB3aW5kb3dzSGlkZWApIGFuZCBpdHMgb3V0cHV0IGRpc2NhcmRlZCwgc28gaXRcbiAgICogbmVpdGhlciBzdGVhbHMgZm9jdXMgbm9yIHdyaXRlcyB0byB0aGUgaW52b2tpbmcgdGVybWluYWwuIElnbm9yZWQgd2hlblxuICAgKiBhdHRhY2hpbmcgdG8gYW4gYWxyZWFkeS1ydW5uaW5nIEFwcGl1bSBzZXJ2ZXIgKHtAbGluayBzaG91bGRBdXRvU3RhcnRBcHBpdW19XG4gICAqIGBmYWxzZWAsIG9yIHRoZSBzZXJ2ZXIgYWxyZWFkeSByZWFjaGFibGUpLiBTZXQgYHRydWVgIHRvIHNlZSB0aGUgc2VydmVyIGxvZyB3aW5kb3dcbiAgICogYW5kIGl0cyBsaXZlIG91dHB1dC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNBcHBpdW1Db25zb2xlVmlzaWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGF1dG8tc3RhcnRlZCBBbmRyb2lkIGVtdWxhdG9yIHdpbmRvdyBpcyBzaG93biBvbiBzY3JlZW4uXG4gICAqXG4gICAqIFdoZW4gYGZhbHNlYCAodGhlIGRlZmF1bHQpLCB0aGUgZW11bGF0b3IgaXMgc3RhcnRlZCB3aXRoIGAtbm8td2luZG93YFxuICAgKiAoaGVhZGxlc3MpLCBzbyBpdCBuZXZlciBzdGVhbHMgZm9jdXMuIElnbm9yZWQgd2hlbiByZXVzaW5nIGFuIGFscmVhZHktcnVubmluZ1xuICAgKiBkZXZpY2UgKG5vdGhpbmcgaXMgbGF1bmNoZWQgdG8gaGlkZSkuIFNldCBgdHJ1ZWAgdG8gd2F0Y2ggdGhlIGVtdWxhdG9yIFVJLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBpc0VtdWxhdG9yVmlzaWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciB3YWl0aW5nIGZvciBgYXBwLndvcmtzcGFjZS5sYXlvdXRSZWFkeWAgYWZ0ZXJcbiAgICogdGhlIHZhdWx0IGlzIChyZSlvcGVuZWQuXG4gICAqXG4gICAqIFJlZ2lzdGVyaW5nIGEgdmF1bHQgdHJpZ2dlcnMgYSBmdWxsIE9ic2lkaWFuIHJlLWluaXQgKGBsb2NhdGlvbi5yZWxvYWQoKWBcbiAgICogcmVvcGVucyB0aGUgdmF1bHQgYW5kIHJlbG9hZHMgZXZlcnkgcGx1Z2luIFx1MjAxNCB0aGUgaGVhdmllc3Qgc3RhcnR1cCBzdGVwKS4gT25cbiAgICogYSBjb2xkLWJvb3RlZCBvciB1bmRlci1wcm92aXNpb25lZCBlbXVsYXRvciB0aGF0IGluaXQgY2FuIHRha2UgYSB3aGlsZSwgc29cbiAgICogdGhpcyBidWRnZXQgaXMgdGhlIGxhcmdlc3Qgb2YgdGhlIHRyYW5zcG9ydCB0aW1lb3V0cy4gUmFpc2UgaXQgZnVydGhlciBpZlxuICAgKiByZWxlYXNlcyBzdGlsbCBmbGFrZSBvbiBzbG93IENJIGVtdWxhdG9ycy5cbiAgICpcbiAgICogQGRlZmF1bHQgYDkwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgbGF5b3V0UmVhZHlUaW1lb3V0SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBlc3RhYmxpc2hpbmcgdGhlIEFwcGl1bSBzZXNzaW9uIChXZWJEcml2ZXJJT1xuICAgKiBgcmVtb3RlKClgIFx1MjAxNCBVaUF1dG9tYXRvcjIgc2VydmVyIGluc3RhbGwgKyBhcHAgbGF1bmNoKS5cbiAgICpcbiAgICogVGhpcyBpcyB0aGUgbGFyZ2VzdCBhbmQgbW9zdCBsb2FkLXNlbnNpdGl2ZSBzdGVwIG9mIHRoZSBBbmRyb2lkIHNldHVwOlxuICAgKiBvbiBhIGNvbGQgb3IgY29udGVuZGVkIGVtdWxhdG9yIGl0IGRvbWluYXRlcyBzdGFydHVwIGFuZCBjYW4gdGFrZSBhIGZld1xuICAgKiBtaW51dGVzLiBSYWlzZSBpdCBpZiBzZXNzaW9uIGVzdGFibGlzaG1lbnQgdGltZXMgb3V0IHVuZGVyIGxvYWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAxODAwMDBgXG4gICAqL1xuICByZWFkb25seSBzZXNzaW9uQ29ubmVjdGlvblJldHJ5VGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBbiBleGlzdGluZyBBcHBpdW0gc2Vzc2lvbiBJRCB0byByZWF0dGFjaCB0by5cbiAgICpcbiAgICogUG9wdWxhdGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIGdsb2JhbCBzZXR1cCBhbmQgcHJvdmlkZWQgdG8gdGVzdCB3b3JrZXJzXG4gICAqIHZpYSB0aGUgZnJhbWV3b3JrJ3MgY29udGV4dCBtZWNoYW5pc20gKGUuZy4gVml0ZXN0IGBwcm92aWRlYC9gaW5qZWN0YCkuXG4gICAqIFdoZW4gcHJlc2VudCwgdGhlIHRyYW5zcG9ydCBmYWN0b3J5IHVzZXMgV2ViRHJpdmVySU8ncyBgYXR0YWNoKClgIGluc3RlYWRcbiAgICogb2YgY3JlYXRpbmcgYSBuZXcgc2Vzc2lvbiwgYXZvaWRpbmcgZHVwbGljYXRlIEFwcGl1bS9BREIgY29ubmVjdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBzZXNzaW9uSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYXV0b21hdGljYWxseSBpbnN0YWxsIG1pc3NpbmcgQXBwaXVtIGRlcGVuZGVuY2llcyAodGhlXG4gICAqIGB1aWF1dG9tYXRvcjJgIGRyaXZlciwgYW5kIEFwcGl1bSBpdHNlbGYpIGJlZm9yZSBhdXRvLXN0YXJ0aW5nIHRoZSBzZXJ2ZXIuXG4gICAqXG4gICAqIFdoZW4gYHRydWVgICh0aGUgZGVmYXVsdCkgYW5kIHRoZSBoYXJuZXNzIGlzIGFib3V0IHRvIGF1dG8tc3RhcnQgdGhlIEFwcGl1bVxuICAgKiBzZXJ2ZXIgKHtAbGluayBzaG91bGRBdXRvU3RhcnRBcHBpdW19KSwgdGhlIGZhY3RvcnkgZmlyc3QgZW5zdXJlcyBBcHBpdW0gaXNcbiAgICogaW5zdGFsbGVkIChnbG9iYWxseSwgdmlhIGBucG0gaW5zdGFsbCAtZyBhcHBpdW1gKSBhbmQgdGhhdCB0aGVcbiAgICogYHVpYXV0b21hdG9yMmAgZHJpdmVyIGlzIGluc3RhbGxlZCAoYGFwcGl1bSBkcml2ZXIgaW5zdGFsbCB1aWF1dG9tYXRvcjJgKSxcbiAgICogaW5zdGFsbGluZyB3aGljaGV2ZXIgaXMgbWlzc2luZy4gSWdub3JlZCB3aGVuIGF0dGFjaGluZyB0byBhblxuICAgKiBhbHJlYWR5LXJ1bm5pbmcgc2VydmVyIChub3RoaW5nIGlzIGF1dG8tc3RhcnRlZCwgc28gbm90aGluZyBpcyBpbnN0YWxsZWQpIG9yXG4gICAqIHdoZW4ge0BsaW5rIHNob3VsZEF1dG9TdGFydEFwcGl1bX0gaXMgYGZhbHNlYC4gU2V0IGl0IHRvIGBmYWxzZWAgdG8gbWFuYWdlXG4gICAqIHRoZSBBcHBpdW0gdG9vbGNoYWluIHlvdXJzZWxmIGFuZCBza2lwIHRoZSBtYWNoaW5lLW11dGF0aW5nIGdsb2JhbCBpbnN0YWxsLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEF1dG9JbnN0YWxsQXBwaXVtRGVwZW5kZW5jaWVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IHN0YXJ0IHRoZSBBcHBpdW0gc2VydmVyIGlmIGl0IGlzIG5vdCByZWFjaGFibGUuXG4gICAqXG4gICAqIFdoZW4gYHRydWVgICh0aGUgZGVmYXVsdCksIHRoZSB0cmFuc3BvcnQgZmFjdG9yeSBzcGF3bnMgYG5weCBhcHBpdW1gXG4gICAqIGFzIGEgYmFja2dyb3VuZCBwcm9jZXNzIHdoZW4gdGhlIHByZWZsaWdodCBjaGVjayBmYWlscywgYW5kIGtpbGxzIGl0XG4gICAqIG9uIHRyYW5zcG9ydCBkaXNwb3NhbC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRBdXRvU3RhcnRBcHBpdW0/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEaXNjcmltaW5hbnQgZm9yIHRoZSB0cmFuc3BvcnQgdHlwZS5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6ICdvYnNpZGlhbi1hbmRyb2lkLWFwcGl1bSc7XG5cbiAgLyoqXG4gICAqIEJhc2UgcGF0aCBvbiB0aGUgZGV2aWNlIHdoZXJlIE9ic2lkaWFuIHN0b3JlcyB2YXVsdHMuXG4gICAqXG4gICAqIERlZmF1bHRzOlxuICAgKiAtIEFuZHJvaWQ6IGAvc2RjYXJkL0RvY3VtZW50cy9gXG4gICAqIC0gaU9TOiBgQG1kLm9ic2lkaWFuOmRvY3VtZW50cy9gXG4gICAqL1xuICByZWFkb25seSB2YXVsdEJhc2VQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3Igd2FpdGluZyBmb3IgdGhlIFdlYlZpZXcgY29udGV4dCB0byBiZWNvbWUgYXZhaWxhYmxlLlxuICAgKlxuICAgKiBPbiBzbG93IGVtdWxhdG9ycywgdGhlIENocm9tZURyaXZlciBwcm94eSB0aGF0IGhhbmRsZXMgV2ViVmlldyBjb21tYW5kc1xuICAgKiBtYXkgbm90IGJlIHJlYWR5IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBBcHBpdW0gc2Vzc2lvbiBzdGFydHMuIFRoaXMgdGltZW91dFxuICAgKiBjb250cm9scyBob3cgbG9uZyB0byBwb2xsIGJlZm9yZSBnaXZpbmcgdXAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA2MDAwMGBcbiAgICovXG4gIHJlYWRvbmx5IHdlYnZpZXdUaW1lb3V0SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVHJhbnNwb3J0IG9wdGlvbnMgZm9yIGRlc2t0b3AgdGVzdGluZyB2aWEgQ2hyb21lIERldlRvb2xzIFByb3RvY29sLlxuICpcbiAqIFRoaXMgaXMgdGhlIGRlZmF1bHQgZGVza3RvcCB0cmFuc3BvcnQuIEJ5IGRlZmF1bHQgdGhlIGhhcm5lc3MgKipsYXVuY2hlcyBhbmRcbiAqIG93bnMgYW4gaXNvbGF0ZWQgT2JzaWRpYW4gaW5zdGFuY2UqKiBpbiBhIHRlbXBvcmFyeSB1c2VyLWRhdGEgZGlyIChuZXZlclxuICogdG91Y2hpbmcgdGhlIHVzZXIncyBPYnNpZGlhbiksIGNvbm5lY3RlZCBvdmVyIGEgZnJlZSBDRFAgcG9ydC4gUHJvdmlkZVxuICoge0BsaW5rIE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucy5wb3J0fSB0byBpbnN0ZWFkIGF0dGFjaCB0byBhblxuICogYWxyZWFkeS1ydW5uaW5nIE9ic2lkaWFuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgaW5kaXZpZHVhbCBDRFAgY29tbWFuZHMuXG4gICAqIERlZmF1bHRzIHRvIDMwMDAwXG4gICAqL1xuICByZWFkb25seSBjb21tYW5kVGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHcmFjZSB3aW5kb3cgaW4gbWlsbGlzZWNvbmRzIGZvciBmYXN0LWZhaWxpbmcgYSAqKmRlYWQgYm9vdCoqIG9mIHRoZSBvd25lZFxuICAgKiBpbnN0YW5jZS5cbiAgICpcbiAgICogV2hlbiBhbiBhc2FyIGNhbm5vdCBydW4gb24gdGhlIGxhdW5jaGVkIEVsZWN0cm9uIHNoZWxsICh0aGUgaW5zdGFsbGVyXG4gICAqIHZlcnNpb24gaXMgdG9vIG9sZCBmb3IgdGhlIGFwcCB2ZXJzaW9uKSwgdGhlIHJlbmRlcmVyIGxvYWRzIGJ1dCBuZXZlclxuICAgKiBib290c3RyYXBzOiBgZG9jdW1lbnQuYm9keWAgc3RheXMgZW1wdHkgYW5kIGB3aW5kb3cuYXBwYCByZW1haW5zXG4gICAqIGB1bmRlZmluZWRgIFx1MjAxNCBhIGJsYWNrIHNjcmVlbi4gUmF0aGVyIHRoYW4gd2FpdGluZyBvdXQgdGhlIGZ1bGwgcmVhZGluZXNzXG4gICAqIHRpbWVvdXQsIHRoZSBvd25lZC12YXVsdCByZWFkaW5lc3MgcG9sbCBjb25jbHVkZXMgdGhlIGJvb3QgaXMgZGVhZCBvbmNlIHRoZVxuICAgKiByZW5kZXJlciBoYXMgYmVlbiBgZG9jdW1lbnQucmVhZHlTdGF0ZWAgYCdjb21wbGV0ZSdgIGZvciB0aGlzIGxvbmcgd2l0aCBub1xuICAgKiBgd2luZG93LmFwcGAgYW5kIGFuIGVtcHR5IGA8Ym9keT5gLCBhbmQgdGhyb3dzIGFcbiAgICogYFJlbmRlcmVyRmFpbGVkVG9Jbml0aWFsaXplRXJyb3JgLiBPbmx5IGFwcGxpZXMgdG8gYW4gb3duZWQgaW5zdGFuY2VcbiAgICogKGlnbm9yZWQgaW4gYXR0YWNoIG1vZGUsIHtAbGluayBwb3J0fSBzZXQpLiBTZXQgYDBgIHRvIGRpc2FibGUgZmFzdC1mYWlsIGFuZFxuICAgKiByZXN0b3JlIHRoZSBwbGFpbiB3YWl0LW91dC10aGUtcmVhZGluZXNzLXRpbWVvdXQgYmVoYXZpb3IuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAxMDAwMGBcbiAgICovXG4gIHJlYWRvbmx5IGRlYWRCb290R3JhY2VJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQ0RQIGhvc3QuXG4gICAqIERlZmF1bHRzIHRvIGAnbG9jYWxob3N0J2BcbiAgICovXG4gIHJlYWRvbmx5IGhvc3Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1hcmtzIHtAbGluayBwb3J0fSBhcyB0aGUgQ0RQIHBvcnQgb2YgYSAqKmhhcm5lc3Mtb3duZWQsIGlzb2xhdGVkIGluc3RhbmNlKipcbiAgICogdGhhdCB0aGUgZ2xvYmFsIHNldHVwIGFscmVhZHkgbGF1bmNoZWQgYW5kIHByZXBhcmVkICh2YXVsdCByZWdpc3RlcmVkLFxuICAgKiBwbHVnaW4gZW5hYmxlZCkuXG4gICAqXG4gICAqIFBvcHVsYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBnbG9iYWwgc2V0dXAgYW5kIHByb3ZpZGVkIHRvIHRlc3Qgd29ya2VycyB2aWFcbiAgICogdGhlIGZyYW1ld29yaydzIGNvbnRleHQgbWVjaGFuaXNtIChlLmcuIFZpdGVzdCBgcHJvdmlkZWAvYGluamVjdGApLiBXaGVuIHNldCxcbiAgICogdGhlIHdvcmtlciAqKmF0dGFjaGVzKiogdG8gdGhlIG93bmVkIGluc3RhbmNlIG9uIHtAbGluayBwb3J0fSBpbnN0ZWFkIG9mXG4gICAqIGxhdW5jaGluZyBpdHMgb3duLCBhbmQgc2tpcHMgdGhlIHVzZXItc2NvcGUgdmF1bHQtcmVnaXN0cmF0aW9uIHByZWZsaWdodCBcdTIwMTRcbiAgICogdGhlIG93bmVkIGluc3RhbmNlJ3MgdmF1bHQgbGl2ZXMgaW4gYW4gaXNvbGF0ZWQgdXNlci1kYXRhIGNvbmZpZywgbm90IHRoZVxuICAgKiB1c2VyLXNjb3BlIHJlZ2lzdHJ5LiBEbyBub3Qgc2V0IHRoaXMgbWFudWFsbHk7IGZvciBwbGFpbiBhdHRhY2ggbW9kZSB1c2VcbiAgICoge0BsaW5rIHBvcnR9IGFsb25lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdW5kZWZpbmVkYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNIYXJuZXNzT3duZWRJbnN0YW5jZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIG93bmVkIGRlc2t0b3AgT2JzaWRpYW4gd2luZG93IGlzIHNob3duIG9uIHNjcmVlbi5cbiAgICpcbiAgICogV2hlbiBgZmFsc2VgLCB0aGUgaGFybmVzcyBsYXVuY2hlcyB0aGUgb3duZWQgaW5zdGFuY2Ugd2l0aFxuICAgKiBrZWVwLWFsaXZlIENocm9taXVtIGZsYWdzIGFuZCBtb3ZlcyBpdHMgd2luZG93ICoqb2ZmLXNjcmVlbioqIG9uY2UgRWxlY3Ryb24nc1xuICAgKiByZW1vdGUgYnJpZGdlIGlzIGF2YWlsYWJsZSwgc28gdGhlIHJ1biBuZXZlciBzdGVhbHMgZm9jdXMgb3IgcG9wcyBhIHdpbmRvdyBpblxuICAgKiBmcm9udCBvZiB5b3UuIE9mZi1zY3JlZW4gKG5vdCBtaW5pbWl6ZWQpIGtlZXBzIHRoZSByZW5kZXJlciBsaXZlLCBzb1xuICAgKiBgc2V0VGltZW91dGAsIGByZXF1ZXN0QW5pbWF0aW9uRnJhbWVgLCBgOmhvdmVyYCwgYW5kIHRydXN0ZWQgaW5wdXQgYmVoYXZlXG4gICAqIGlkZW50aWNhbGx5IHRvIGEgdmlzaWJsZSB3aW5kb3cuIERlZmF1bHRzIHRvIGB0cnVlYDsgaW50ZWdyYXRpb24gc2V0dXBcbiAgICogZXhwbGljaXRseSBwYXNzZXMgYGZhbHNlYCB0byBhdm9pZCBzdGVhbGluZyBmb2N1cy4gSWdub3JlZCBpbiBhdHRhY2ggbW9kZVxuICAgKiAoe0BsaW5rIHBvcnR9IHNldCkgXHUyMDE0IHRoZSBoYXJuZXNzIG5ldmVyXG4gICAqIG1vdmVzIHRoZSB1c2VyJ3Mgb3duIHJ1bm5pbmcgd2luZG93LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IGlzT2JzaWRpYW5BcHBWaXNpYmxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUGlucyB0aGUgKipFbGVjdHJvbiBzaGVsbCoqIChpbnN0YWxsZXIgYnVpbGQpIHRoZSBvd25lZCBpbnN0YW5jZSBydW5zLlxuICAgKlxuICAgKiBBY2NlcHRzIGFuIGV4cGxpY2l0IGAneC55LnonYCwgYCdwdWJsaWMtbGF0ZXN0J2AsIG9yIGAnY2F0YWx5c3QtbGF0ZXN0J2AuXG4gICAqIFRoZSBtYXRjaGluZyBHaXRIdWIgcmVsZWFzZSBpbnN0YWxsZXIgaXMgZG93bmxvYWRlZCBhbmQgZXh0cmFjdGVkIHRvIGFcbiAgICogcG9ydGFibGUgc2hlbGwgKGNhY2hlZCBmb3IgcmV1c2UpLiBQdWJsaWMgcmVsZWFzZXMgb25seSBcdTIwMTQgY2F0YWx5c3QgYnVpbGRzXG4gICAqIGhhdmUgbm8gcHVibGljIGluc3RhbGxlci4gSWdub3JlZCB3aGVuIHtAbGluayBwb3J0fSAoYXR0YWNoIG1vZGUpIGlzIHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IG9ic2lkaWFuSW5zdGFsbGVyVmVyc2lvbj86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogUGlucyB0aGUgKipPYnNpZGlhbiBhcHAgdmVyc2lvbioqIChhc2FyKSB0aGUgb3duZWQgaW5zdGFuY2UgcnVucy5cbiAgICpcbiAgICogQWNjZXB0cyBhbiBleHBsaWNpdCBgJ3gueS56J2AsIGAncHVibGljLWxhdGVzdCdgLCBvciBgJ2NhdGFseXN0LWxhdGVzdCdgLlxuICAgKiBWZXJzaW9ucyBhdCBvciBhYm92ZSB0aGUgc2hlbGwgdmVyc2lvbiBhcmUgYXBwbGllZCBhcyBhIGNoZWFwIGFzYXIgc3dhcDtcbiAgICogb2xkZXIgdmVyc2lvbnMgdHJhbnNwYXJlbnRseSB1c2UgdGhlIG1hdGNoaW5nIGluc3RhbGxlciBzaGVsbC4gV2hlbiBvbWl0dGVkLFxuICAgKiB0aGUgdXNlcidzIGN1cnJlbnRseS1pbnN0YWxsZWQgdmVyc2lvbiBpcyB1c2VkLiBJZ25vcmVkIHdoZW4ge0BsaW5rIHBvcnR9XG4gICAqIChhdHRhY2ggbW9kZSkgaXMgc2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdW5kZWZpbmVkYFxuICAgKi9cbiAgcmVhZG9ubHkgb2JzaWRpYW5WZXJzaW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBDRFAgcG9ydCBvZiBhbiBhbHJlYWR5LXJ1bm5pbmcgT2JzaWRpYW4gdG8gKiphdHRhY2gqKiB0byAodGhlXG4gICAqIGAtLXJlbW90ZS1kZWJ1Z2dpbmctcG9ydGAgaXQgd2FzIGxhdW5jaGVkIHdpdGgpLiBXaGVuIHNldCwgdGhlIGhhcm5lc3NcbiAgICogYXR0YWNoZXMgaW5zdGVhZCBvZiBvd25pbmcgYW4gaW5zdGFuY2UsIGFuZCB0aGUgdmVyc2lvbiBrbm9icyBhcmUgaWdub3JlZC5cbiAgICogV2hlbiBvbWl0dGVkLCBhbiBvd25lZCBpc29sYXRlZCBpbnN0YW5jZSBpcyBsYXVuY2hlZCBvbiBhbiBhdXRvbWF0aWNhbGx5XG4gICAqIGNob3NlbiBmcmVlIHBvcnQgKG5vIHBvcnQgaXMgaGFyZGNvZGVkKS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gbGF1bmNoIHRoZSBvd25lZCBpbnN0YW5jZSB3aXRoIENocm9taXVtJ3Mgc2FuZGJveCBkaXNhYmxlZFxuICAgKiAoYC0tbm8tc2FuZGJveGApLlxuICAgKlxuICAgKiBOZWVkZWQgdG8gYm9vdCBhbiBvd25lZCBpbnN0YW5jZSBvbiBMaW51eCB3aGVuIHRoZXJlIGlzIG5vXG4gICAqIGNvcnJlY3RseS1jb25maWd1cmVkIHNldHVpZCBgY2hyb21lLXNhbmRib3hgIGhlbHBlciBcdTIwMTQgZS5nLiBhIHBvcnRhYmxlIHNoZWxsXG4gICAqIGV4dHJhY3RlZCBmcm9tIGFuIGluc3RhbGxlciwgb3IgYSBDSSBydW5uZXIgbGF1bmNoaW5nIGFzIGEgbm9uLXJvb3QgdXNlciwgaW5cbiAgICogd2hpY2ggY2FzZSB0aGUgcmVuZGVyZXIgb3RoZXJ3aXNlIHJlZnVzZXMgdG8gc3RhcnQuIEhhcm1sZXNzIG9uXG4gICAqIFdpbmRvd3MvbWFjT1MuIElnbm9yZWQgaW4gYXR0YWNoIG1vZGUgKHtAbGluayBwb3J0fSBzZXQpIFx1MjAxNCB0aGUgaGFybmVzcyBuZXZlclxuICAgKiByZWxhdW5jaGVzIHRoZSB1c2VyJ3MgcnVubmluZyBpbnN0YW5jZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkRGlzYWJsZVNhbmRib3g/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGFuICoqdW5ydW5uYWJsZSoqIGluc3RhbGxlclx1MjE5NGFwcCB2ZXJzaW9uIHBhaXIgZmFpbHMgZmFzdCBiZWZvcmUgbGF1bmNoLlxuICAgKlxuICAgKiBXaGVuIGB0cnVlYCAodGhlIGRlZmF1bHQpLCBhbiBpbnN0YWxsZXIgYmVsb3cgdGhlIGFwcCdzIHJ1biBmbG9vciAodGhlXG4gICAqIG9sZGVzdCBpbnN0YWxsZXIgdGhlIGFwcCdzIGFzYXIgY2FuIGJvb3Qgb24pIHRocm93c1xuICAgKiBgSW5jb21wYXRpYmxlSW5zdGFsbGVyVmVyc2lvbkVycm9yYCBmcm9tIHZlcnNpb24gcmVzb2x1dGlvbiwgYmVmb3JlIGFueXRoaW5nXG4gICAqIGlzIGRvd25sb2FkZWQgb3IgbGF1bmNoZWQuIFNldCBgZmFsc2VgIHRvIGxldCB0aGUgcGluIHByb2NlZWQgdG8gbGF1bmNoXG4gICAqIGluc3RlYWQgXHUyMDE0IHdoZXJlIHRoZSByZWFjdGl2ZSBkZWFkLWJvb3QgZmFzdC1mYWlsXG4gICAqIChgUmVuZGVyZXJGYWlsZWRUb0luaXRpYWxpemVFcnJvcmAsIHNlZSB7QGxpbmsgZGVhZEJvb3RHcmFjZUluTWlsbGlzZWNvbmRzfSlcbiAgICogc3RpbGwgY2F0Y2hlcyB0aGUgYmxhY2stc2NyZWVuIGJvb3QsIGFuZCB0aGUgYCd1bnJ1bm5hYmxlJ2AgdmVyZGljdCBpc1xuICAgKiBzdXJmYWNlZCBhcyBkYXRhIHJhdGhlciB0aGFuIHRocm93bi4gT25seSBhcHBsaWVzIHRvIGFuIG93bmVkIGluc3RhbmNlXG4gICAqIChpZ25vcmVkIGluIGF0dGFjaCBtb2RlLCB7QGxpbmsgcG9ydH0gc2V0KS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgb3duZWQtaW5zdGFuY2UgY29tcGF0aWJpbGl0eSAqKm5hZyB3YXJuaW5ncyoqIGFyZSBlbWl0dGVkLlxuICAgKlxuICAgKiBDb3ZlcnMgKipib3RoKiogY29tcGF0aWJpbGl0eSBuYWdzOiB0aGUgb2ZmbGluZSBpbnN0YWxsZXJcdTIxOTRhcHAgd2FybmluZyAoYVxuICAgKiBydW5uYWJsZSBpbnN0YWxsZXIgYmVsb3cgdGhlIHJlY29tbWVuZGVkIGZsb29yKSBhbmQgdGhlIHBvc3QtYm9vdFxuICAgKiBydW50aW1lLUVsZWN0cm9uIHdhcm5pbmcgKGEgbGl2ZSBFbGVjdHJvbiBiZWxvdyB0aGUgYXBwJ3MgcmVjb21tZW5kZWRcbiAgICogbWluaW11bSkuIFdoZW4gYHRydWVgICh0aGUgZGVmYXVsdCkgZWFjaCBmaXJlcyB2aWEgdGhlIGhhcm5lc3MgbG9nOyBzZXRcbiAgICogYGZhbHNlYCB0byBzaWxlbmNlIGJvdGggXHUyMDE0IHRoZSB2ZXJkaWN0cyBhcmUgc3RpbGwgY29tcHV0ZWQgYW5kIHN1cmZhY2VkIGFzXG4gICAqIGRhdGEgKGBjb21wYXRpYmlsaXR5YCAvIGBlbGVjdHJvbkNvbXBhdGliaWxpdHlgKSwgb25seSB0aGUgbG9nIGlzIHN1cHByZXNzZWQuXG4gICAqIERvZXMgbm90IGFmZmVjdCB0aGUgYCd1bnJ1bm5hYmxlJ2AgdGhyb3cgKHNlZVxuICAgKiB7QGxpbmsgc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlcn0pLiBPbmx5IGFwcGxpZXMgdG8gYW4gb3duZWRcbiAgICogaW5zdGFuY2UgKGlnbm9yZWQgaW4gYXR0YWNoIG1vZGUsIHtAbGluayBwb3J0fSBzZXQpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEaXNjcmltaW5hbnQgZm9yIHRoZSB0cmFuc3BvcnQgdHlwZS5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6ICdvYnNpZGlhbi1jZHAnO1xufVxuXG4vKipcbiAqIERpc2NyaW1pbmF0ZWQgdW5pb24gb2YgYWxsIHN1cHBvcnRlZCB0cmFuc3BvcnQgY29uZmlndXJhdGlvbnMuXG4gKlxuICogVXNlZCBpbiB2aXRlc3QgYGVudmlyb25tZW50T3B0aW9ucy5vYnNpZGlhblRyYW5zcG9ydGAgdG8gc2VsZWN0IGFuZFxuICogY29uZmlndXJlIHRoZSB0cmFuc3BvcnQgZm9yIGludGVncmF0aW9uIHRlc3RzLlxuICovXG5leHBvcnQgdHlwZSBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnMgPVxuICB8IE9ic2lkaWFuQW5kcm9pZEFwcGl1bVRyYW5zcG9ydE9wdGlvbnNcbiAgfCBPYnNpZGlhbkNkcFRyYW5zcG9ydE9wdGlvbnM7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7IiwKICAibmFtZXMiOiBbXQp9Cg==
17
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3RyYW5zcG9ydC1vcHRpb25zLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRGlzY3JpbWluYXRlZCB1bmlvbiB0eXBlcyBmb3IgY29uZmlndXJpbmcgdGhlIE9ic2lkaWFuIHRyYW5zcG9ydFxuICogdmlhIHZpdGVzdCBgZW52aXJvbm1lbnRPcHRpb25zYC5cbiAqL1xuXG4vKipcbiAqIFRyYW5zcG9ydCBvcHRpb25zIGZvciBBbmRyb2lkIHRlc3RpbmcgdmlhIEFwcGl1bSBXZWJWaWV3IGluamVjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFwcCBwYWNrYWdlIChBbmRyb2lkKSBvciBidW5kbGUgSUQgKGlPUykuXG4gICAqIERlZmF1bHRzIHRvIGAnbWQub2JzaWRpYW4nYFxuICAgKi9cbiAgcmVhZG9ubHkgYXBwSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciB0aGUgYXV0by1zdGFydGVkIEFwcGl1bSBzZXJ2ZXIgdG8gYmVjb21lIHJlYWR5XG4gICAqIChpdHMgYC9zdGF0dXNgIGVuZHBvaW50IHRvIHJlc3BvbmQpLlxuICAgKlxuICAgKiBPbmx5IGFwcGxpZXMgd2hlbiB0aGUgaGFybmVzcyBhdXRvLXN0YXJ0cyB0aGUgQXBwaXVtIHNlcnZlclxuICAgKiAoe0BsaW5rIHNob3VsZEF1dG9TdGFydEFwcGl1bX0pOyBpZ25vcmVkIHdoZW4gYXR0YWNoaW5nIHRvIGFuXG4gICAqIGFscmVhZHktcnVubmluZyBzZXJ2ZXIuIE9uIGEgY29sZCBtYWNoaW5lIHRoZSBgbnB4IGFwcGl1bWAgc2VydmVyIGNhbiB0YWtlXG4gICAqIGEgd2hpbGUgdG8gZmluaXNoIGJvb3RpbmcsIHNvIHJhaXNlIHRoaXMgaWYgc3RhcnR1cCB0aW1lcyBvdXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAxODAwMDBgXG4gICAqL1xuICByZWFkb25seSBhcHBpdW1TdGFydFRpbWVvdXRJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIEFwcGl1bSBzZXJ2ZXIgVVJMIChlLmcuIGAnaHR0cDovL2xvY2FsaG9zdDo0NzIzJ2ApLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwaXVtVXJsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBbmRyb2lkIEFWRCAoQW5kcm9pZCBWaXJ0dWFsIERldmljZSkgbmFtZS5cbiAgICpcbiAgICogVGhlIHRyYW5zcG9ydCBmYWN0b3J5IGxhdW5jaGVzIGBlbXVsYXRvciAtYXZkIDxhdmROYW1lPmAgYXMgYSBiYWNrZ3JvdW5kXG4gICAqIHByb2Nlc3MgYW5kIHBvbGxzIHVudGlsIHRoZSBkZXZpY2UgYXBwZWFycy4gVGhlIGVtdWxhdG9yIGlzIGtpbGxlZFxuICAgKiBvbiB0cmFuc3BvcnQgZGlzcG9zYWwuXG4gICAqXG4gICAqIFJ1biBgZW11bGF0b3IgLWxpc3QtYXZkc2AgdG8gc2VlIGF2YWlsYWJsZSBBVkQgbmFtZXMuXG4gICAqL1xuICByZWFkb25seSBhdmROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXZpY2UgVURJRCB0byByZXVzZSAoZS5nLiBgJ2VtdWxhdG9yLTU1NTQnYCkuXG4gICAqXG4gICAqIFBvcHVsYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBnbG9iYWwgc2V0dXAgYWZ0ZXIgdGhlIEFwcGl1bSBzZXNzaW9uIGlzXG4gICAqIGVzdGFibGlzaGVkLiBXaGVuIHByZXNlbnQgYWxvbmdzaWRlIHtAbGluayBzZXNzaW9uSWR9LCB0aGUgdHJhbnNwb3J0XG4gICAqIGZhY3Rvcnkgc2tpcHMgZW11bGF0b3Igc3RhcnR1cCBhbmQgYXR0YWNoZXMgdG8gdGhlIGV4aXN0aW5nIHNlc3Npb24uXG4gICAqL1xuICByZWFkb25seSBkZXZpY2VJZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIHdhaXRpbmcsIGFmdGVyIGBzeXMuYm9vdF9jb21wbGV0ZWRgLCBmb3IgYVxuICAgKiBoYXJuZXNzLXN0YXJ0ZWQgZW11bGF0b3IgdG8gYmVjb21lIGlkbGUgYmVmb3JlIHRoZSBBcHBpdW0gc2Vzc2lvbiBpc1xuICAgKiBlc3RhYmxpc2hlZC5cbiAgICpcbiAgICogYHN5cy5ib290X2NvbXBsZXRlZGAgZmlyZXMgKmJlZm9yZSogdGhlIGd1ZXN0IGlzIGFjdHVhbGx5IGlkbGU6IHBhY2thZ2VcbiAgICogb3B0aW1pemF0aW9uIGFuZCBzeXN0ZW0gc2VydmljZXMga2VlcCBjaHVybmluZywgc28gZXN0YWJsaXNoaW5nIHRoZSBzZXNzaW9uXG4gICAqIGltbWVkaWF0ZWx5IG1ha2VzIGV2ZXJ5IG9uZSBvZiBVaUF1dG9tYXRvcjIncyBzZXJpYWxpemVkIGBhZGJgIHJvdW5kLXRyaXBzXG4gICAqIGNvbnRlbmQgd2l0aCB0aGF0IHdvcmsgYW5kIGluZmxhdGVzIHNlc3Npb24gZXN0YWJsaXNobWVudCB+M3guIFRoZSBmYWN0b3J5XG4gICAqIGluc3RlYWQgd2FpdHMgdW50aWwgdGhlIGJvb3QgYW5pbWF0aW9uIGhhcyBzdG9wcGVkIGFuZCB0aGUgcGFja2FnZSBtYW5hZ2VyXG4gICAqIGlzIHNlcnZpbmcsIHByb2NlZWRpbmcgZWFybHkgb25jZSBpZGxlIG9yIGFmdGVyIHRoaXMgYnVkZ2V0IChiZXN0LWVmZm9ydCBcdTIwMTQgYVxuICAgKiB0aW1lb3V0IGxvZ3MgYSB3YXJuaW5nIGFuZCBwcm9jZWVkcykuIFNldCBgMGAgdG8gc2tpcCB0aGUgd2FpdC4gT25seSBhcHBsaWVzXG4gICAqIHRvIGEgaGFybmVzcy1zdGFydGVkIGVtdWxhdG9yLCBub3QgYSByZXVzZWQgb25lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgNjAwMDBgXG4gICAqL1xuICByZWFkb25seSBkZXZpY2VJZGxlVGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhdXRvLXN0YXJ0ZWQgQXBwaXVtIHNlcnZlciBjb25zb2xlIHdpbmRvdyBpcyBzaG93bi5cbiAgICpcbiAgICogV2hlbiBgZmFsc2VgICh0aGUgZGVmYXVsdCksIHRoZSBgbnB4IGFwcGl1bWAgc2VydmVyIHByb2Nlc3MgaXMgc3Bhd25lZCB3aXRoXG4gICAqIGl0cyBjb25zb2xlIHdpbmRvdyBoaWRkZW4gKGB3aW5kb3dzSGlkZWApIGFuZCBpdHMgb3V0cHV0IGRpc2NhcmRlZCwgc28gaXRcbiAgICogbmVpdGhlciBzdGVhbHMgZm9jdXMgbm9yIHdyaXRlcyB0byB0aGUgaW52b2tpbmcgdGVybWluYWwuIElnbm9yZWQgd2hlblxuICAgKiBhdHRhY2hpbmcgdG8gYW4gYWxyZWFkeS1ydW5uaW5nIEFwcGl1bSBzZXJ2ZXIgKHtAbGluayBzaG91bGRBdXRvU3RhcnRBcHBpdW19XG4gICAqIGBmYWxzZWAsIG9yIHRoZSBzZXJ2ZXIgYWxyZWFkeSByZWFjaGFibGUpLiBTZXQgYHRydWVgIHRvIHNlZSB0aGUgc2VydmVyIGxvZyB3aW5kb3dcbiAgICogYW5kIGl0cyBsaXZlIG91dHB1dC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNBcHBpdW1Db25zb2xlVmlzaWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGF1dG8tc3RhcnRlZCBBbmRyb2lkIGVtdWxhdG9yIHdpbmRvdyBpcyBzaG93biBvbiBzY3JlZW4uXG4gICAqXG4gICAqIFdoZW4gYGZhbHNlYCAodGhlIGRlZmF1bHQpLCB0aGUgZW11bGF0b3IgaXMgc3RhcnRlZCB3aXRoIGAtbm8td2luZG93YFxuICAgKiAoaGVhZGxlc3MpLCBzbyBpdCBuZXZlciBzdGVhbHMgZm9jdXMuIElnbm9yZWQgd2hlbiByZXVzaW5nIGFuIGFscmVhZHktcnVubmluZ1xuICAgKiBkZXZpY2UgKG5vdGhpbmcgaXMgbGF1bmNoZWQgdG8gaGlkZSkuIFNldCBgdHJ1ZWAgdG8gd2F0Y2ggdGhlIGVtdWxhdG9yIFVJLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICByZWFkb25seSBpc0VtdWxhdG9yVmlzaWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciB3YWl0aW5nIGZvciBgYXBwLndvcmtzcGFjZS5sYXlvdXRSZWFkeWAgYWZ0ZXJcbiAgICogdGhlIHZhdWx0IGlzIChyZSlvcGVuZWQuXG4gICAqXG4gICAqIFJlZ2lzdGVyaW5nIGEgdmF1bHQgdHJpZ2dlcnMgYSBmdWxsIE9ic2lkaWFuIHJlLWluaXQgKGBsb2NhdGlvbi5yZWxvYWQoKWBcbiAgICogcmVvcGVucyB0aGUgdmF1bHQgYW5kIHJlbG9hZHMgZXZlcnkgcGx1Z2luIFx1MjAxNCB0aGUgaGVhdmllc3Qgc3RhcnR1cCBzdGVwKS4gT25cbiAgICogYSBjb2xkLWJvb3RlZCBvciB1bmRlci1wcm92aXNpb25lZCBlbXVsYXRvciB0aGF0IGluaXQgY2FuIHRha2UgYSB3aGlsZSwgc29cbiAgICogdGhpcyBidWRnZXQgaXMgdGhlIGxhcmdlc3Qgb2YgdGhlIHRyYW5zcG9ydCB0aW1lb3V0cy4gUmFpc2UgaXQgZnVydGhlciBpZlxuICAgKiByZWxlYXNlcyBzdGlsbCBmbGFrZSBvbiBzbG93IENJIGVtdWxhdG9ycy5cbiAgICpcbiAgICogQGRlZmF1bHQgYDkwMDAwYFxuICAgKi9cbiAgcmVhZG9ubHkgbGF5b3V0UmVhZHlUaW1lb3V0SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBlc3RhYmxpc2hpbmcgdGhlIEFwcGl1bSBzZXNzaW9uIChXZWJEcml2ZXJJT1xuICAgKiBgcmVtb3RlKClgIFx1MjAxNCBVaUF1dG9tYXRvcjIgc2VydmVyIGluc3RhbGwgKyBhcHAgbGF1bmNoKS5cbiAgICpcbiAgICogVGhpcyBpcyB0aGUgbGFyZ2VzdCBhbmQgbW9zdCBsb2FkLXNlbnNpdGl2ZSBzdGVwIG9mIHRoZSBBbmRyb2lkIHNldHVwOlxuICAgKiBvbiBhIGNvbGQgb3IgY29udGVuZGVkIGVtdWxhdG9yIGl0IGRvbWluYXRlcyBzdGFydHVwIGFuZCBjYW4gdGFrZSBhIGZld1xuICAgKiBtaW51dGVzLiBSYWlzZSBpdCBpZiBzZXNzaW9uIGVzdGFibGlzaG1lbnQgdGltZXMgb3V0IHVuZGVyIGxvYWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAxODAwMDBgXG4gICAqL1xuICByZWFkb25seSBzZXNzaW9uQ29ubmVjdGlvblJldHJ5VGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBbiBleGlzdGluZyBBcHBpdW0gc2Vzc2lvbiBJRCB0byByZWF0dGFjaCB0by5cbiAgICpcbiAgICogUG9wdWxhdGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIGdsb2JhbCBzZXR1cCBhbmQgcHJvdmlkZWQgdG8gdGVzdCB3b3JrZXJzXG4gICAqIHZpYSB0aGUgZnJhbWV3b3JrJ3MgY29udGV4dCBtZWNoYW5pc20gKGUuZy4gVml0ZXN0IGBwcm92aWRlYC9gaW5qZWN0YCkuXG4gICAqIFdoZW4gcHJlc2VudCwgdGhlIHRyYW5zcG9ydCBmYWN0b3J5IHVzZXMgV2ViRHJpdmVySU8ncyBgYXR0YWNoKClgIGluc3RlYWRcbiAgICogb2YgY3JlYXRpbmcgYSBuZXcgc2Vzc2lvbiwgYXZvaWRpbmcgZHVwbGljYXRlIEFwcGl1bS9BREIgY29ubmVjdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBzZXNzaW9uSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYXV0b21hdGljYWxseSBpbnN0YWxsIG1pc3NpbmcgQXBwaXVtIGRlcGVuZGVuY2llcyAodGhlXG4gICAqIGB1aWF1dG9tYXRvcjJgIGRyaXZlciwgYW5kIEFwcGl1bSBpdHNlbGYpIGJlZm9yZSBhdXRvLXN0YXJ0aW5nIHRoZSBzZXJ2ZXIuXG4gICAqXG4gICAqIFdoZW4gYHRydWVgICh0aGUgZGVmYXVsdCkgYW5kIHRoZSBoYXJuZXNzIGlzIGFib3V0IHRvIGF1dG8tc3RhcnQgdGhlIEFwcGl1bVxuICAgKiBzZXJ2ZXIgKHtAbGluayBzaG91bGRBdXRvU3RhcnRBcHBpdW19KSwgdGhlIGZhY3RvcnkgZmlyc3QgZW5zdXJlcyBBcHBpdW0gaXNcbiAgICogaW5zdGFsbGVkIChnbG9iYWxseSwgdmlhIGBucG0gaW5zdGFsbCAtZyBhcHBpdW1gKSBhbmQgdGhhdCB0aGVcbiAgICogYHVpYXV0b21hdG9yMmAgZHJpdmVyIGlzIGluc3RhbGxlZCAoYGFwcGl1bSBkcml2ZXIgaW5zdGFsbCB1aWF1dG9tYXRvcjJgKSxcbiAgICogaW5zdGFsbGluZyB3aGljaGV2ZXIgaXMgbWlzc2luZy4gSWdub3JlZCB3aGVuIGF0dGFjaGluZyB0byBhblxuICAgKiBhbHJlYWR5LXJ1bm5pbmcgc2VydmVyIChub3RoaW5nIGlzIGF1dG8tc3RhcnRlZCwgc28gbm90aGluZyBpcyBpbnN0YWxsZWQpIG9yXG4gICAqIHdoZW4ge0BsaW5rIHNob3VsZEF1dG9TdGFydEFwcGl1bX0gaXMgYGZhbHNlYC4gU2V0IGl0IHRvIGBmYWxzZWAgdG8gbWFuYWdlXG4gICAqIHRoZSBBcHBpdW0gdG9vbGNoYWluIHlvdXJzZWxmIGFuZCBza2lwIHRoZSBtYWNoaW5lLW11dGF0aW5nIGdsb2JhbCBpbnN0YWxsLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IHNob3VsZEF1dG9JbnN0YWxsQXBwaXVtRGVwZW5kZW5jaWVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IHN0YXJ0IHRoZSBBcHBpdW0gc2VydmVyIGlmIGl0IGlzIG5vdCByZWFjaGFibGUuXG4gICAqXG4gICAqIFdoZW4gYHRydWVgICh0aGUgZGVmYXVsdCksIHRoZSB0cmFuc3BvcnQgZmFjdG9yeSBzcGF3bnMgYG5weCBhcHBpdW1gXG4gICAqIGFzIGEgYmFja2dyb3VuZCBwcm9jZXNzIHdoZW4gdGhlIHByZWZsaWdodCBjaGVjayBmYWlscywgYW5kIGtpbGxzIGl0XG4gICAqIG9uIHRyYW5zcG9ydCBkaXNwb3NhbC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRBdXRvU3RhcnRBcHBpdW0/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEaXNjcmltaW5hbnQgZm9yIHRoZSB0cmFuc3BvcnQgdHlwZS5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6ICdvYnNpZGlhbi1hbmRyb2lkLWFwcGl1bSc7XG5cbiAgLyoqXG4gICAqIEJhc2UgcGF0aCBvbiB0aGUgZGV2aWNlIHdoZXJlIE9ic2lkaWFuIHN0b3JlcyB2YXVsdHMuXG4gICAqXG4gICAqIERlZmF1bHRzOlxuICAgKiAtIEFuZHJvaWQ6IGAvc2RjYXJkL0RvY3VtZW50cy9gXG4gICAqIC0gaU9TOiBgQG1kLm9ic2lkaWFuOmRvY3VtZW50cy9gXG4gICAqL1xuICByZWFkb25seSB2YXVsdEJhc2VQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3Igd2FpdGluZyBmb3IgdGhlIFdlYlZpZXcgY29udGV4dCB0byBiZWNvbWUgYXZhaWxhYmxlLlxuICAgKlxuICAgKiBPbiBzbG93IGVtdWxhdG9ycywgdGhlIENocm9tZURyaXZlciBwcm94eSB0aGF0IGhhbmRsZXMgV2ViVmlldyBjb21tYW5kc1xuICAgKiBtYXkgbm90IGJlIHJlYWR5IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBBcHBpdW0gc2Vzc2lvbiBzdGFydHMuIFRoaXMgdGltZW91dFxuICAgKiBjb250cm9scyBob3cgbG9uZyB0byBwb2xsIGJlZm9yZSBnaXZpbmcgdXAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGA2MDAwMGBcbiAgICovXG4gIHJlYWRvbmx5IHdlYnZpZXdUaW1lb3V0SW5NaWxsaXNlY29uZHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVHJhbnNwb3J0IG9wdGlvbnMgZm9yIGRlc2t0b3AgdGVzdGluZyB2aWEgQ2hyb21lIERldlRvb2xzIFByb3RvY29sLlxuICpcbiAqIFRoaXMgaXMgdGhlIGRlZmF1bHQgZGVza3RvcCB0cmFuc3BvcnQuIEJ5IGRlZmF1bHQgdGhlIGhhcm5lc3MgKipsYXVuY2hlcyBhbmRcbiAqIG93bnMgYW4gaXNvbGF0ZWQgT2JzaWRpYW4gaW5zdGFuY2UqKiBpbiBhIHRlbXBvcmFyeSB1c2VyLWRhdGEgZGlyIChuZXZlclxuICogdG91Y2hpbmcgdGhlIHVzZXIncyBPYnNpZGlhbiksIGNvbm5lY3RlZCBvdmVyIGEgZnJlZSBDRFAgcG9ydC4gUHJvdmlkZVxuICoge0BsaW5rIE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucy5wb3J0fSB0byBpbnN0ZWFkIGF0dGFjaCB0byBhblxuICogYWxyZWFkeS1ydW5uaW5nIE9ic2lkaWFuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9ic2lkaWFuQ2RwVHJhbnNwb3J0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgaW5kaXZpZHVhbCBDRFAgY29tbWFuZHMuXG4gICAqIERlZmF1bHRzIHRvIDMwMDAwXG4gICAqL1xuICByZWFkb25seSBjb21tYW5kVGltZW91dEluTWlsbGlzZWNvbmRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBHcmFjZSB3aW5kb3cgaW4gbWlsbGlzZWNvbmRzIGZvciBmYXN0LWZhaWxpbmcgYSAqKmRlYWQgYm9vdCoqIG9mIHRoZSBvd25lZFxuICAgKiBpbnN0YW5jZS5cbiAgICpcbiAgICogV2hlbiBhbiBhc2FyIGNhbm5vdCBydW4gb24gdGhlIGxhdW5jaGVkIEVsZWN0cm9uIHNoZWxsICh0aGUgaW5zdGFsbGVyXG4gICAqIHZlcnNpb24gaXMgdG9vIG9sZCBmb3IgdGhlIGFwcCB2ZXJzaW9uKSwgdGhlIHJlbmRlcmVyIGxvYWRzIGJ1dCBuZXZlclxuICAgKiBib290c3RyYXBzOiBgZG9jdW1lbnQuYm9keWAgc3RheXMgZW1wdHkgYW5kIGB3aW5kb3cuYXBwYCByZW1haW5zXG4gICAqIGB1bmRlZmluZWRgIFx1MjAxNCBhIGJsYWNrIHNjcmVlbi4gUmF0aGVyIHRoYW4gd2FpdGluZyBvdXQgdGhlIGZ1bGwgcmVhZGluZXNzXG4gICAqIHRpbWVvdXQsIHRoZSBvd25lZC12YXVsdCByZWFkaW5lc3MgcG9sbCBjb25jbHVkZXMgdGhlIGJvb3QgaXMgZGVhZCBvbmNlIHRoZVxuICAgKiByZW5kZXJlciBoYXMgYmVlbiBgZG9jdW1lbnQucmVhZHlTdGF0ZWAgYCdjb21wbGV0ZSdgIGZvciB0aGlzIGxvbmcgd2l0aCBub1xuICAgKiBgd2luZG93LmFwcGAgYW5kIGFuIGVtcHR5IGA8Ym9keT5gLCBhbmQgdGhyb3dzIGFcbiAgICogYFJlbmRlcmVyRmFpbGVkVG9Jbml0aWFsaXplRXJyb3JgLiBPbmx5IGFwcGxpZXMgdG8gYW4gb3duZWQgaW5zdGFuY2VcbiAgICogKGlnbm9yZWQgaW4gYXR0YWNoIG1vZGUsIHtAbGluayBwb3J0fSBzZXQpLiBTZXQgYDBgIHRvIGRpc2FibGUgZmFzdC1mYWlsIGFuZFxuICAgKiByZXN0b3JlIHRoZSBwbGFpbiB3YWl0LW91dC10aGUtcmVhZGluZXNzLXRpbWVvdXQgYmVoYXZpb3IuXG4gICAqXG4gICAqIEBkZWZhdWx0IGAxMDAwMGBcbiAgICovXG4gIHJlYWRvbmx5IGRlYWRCb290R3JhY2VJbk1pbGxpc2Vjb25kcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQ0RQIGhvc3QuXG4gICAqIERlZmF1bHRzIHRvIGAnbG9jYWxob3N0J2BcbiAgICovXG4gIHJlYWRvbmx5IGhvc3Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE1hcmtzIHtAbGluayBwb3J0fSBhcyB0aGUgQ0RQIHBvcnQgb2YgYSAqKmhhcm5lc3Mtb3duZWQsIGlzb2xhdGVkIGluc3RhbmNlKipcbiAgICogdGhhdCB0aGUgZ2xvYmFsIHNldHVwIGFscmVhZHkgbGF1bmNoZWQgYW5kIHByZXBhcmVkICh2YXVsdCByZWdpc3RlcmVkLFxuICAgKiBwbHVnaW4gZW5hYmxlZCkuXG4gICAqXG4gICAqIFBvcHVsYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBnbG9iYWwgc2V0dXAgYW5kIHByb3ZpZGVkIHRvIHRlc3Qgd29ya2VycyB2aWFcbiAgICogdGhlIGZyYW1ld29yaydzIGNvbnRleHQgbWVjaGFuaXNtIChlLmcuIFZpdGVzdCBgcHJvdmlkZWAvYGluamVjdGApLiBXaGVuIHNldCxcbiAgICogdGhlIHdvcmtlciAqKmF0dGFjaGVzKiogdG8gdGhlIG93bmVkIGluc3RhbmNlIG9uIHtAbGluayBwb3J0fSBpbnN0ZWFkIG9mXG4gICAqIGxhdW5jaGluZyBpdHMgb3duLCBhbmQgc2tpcHMgdGhlIHVzZXItc2NvcGUgdmF1bHQtcmVnaXN0cmF0aW9uIHByZWZsaWdodCBcdTIwMTRcbiAgICogdGhlIG93bmVkIGluc3RhbmNlJ3MgdmF1bHQgbGl2ZXMgaW4gYW4gaXNvbGF0ZWQgdXNlci1kYXRhIGNvbmZpZywgbm90IHRoZVxuICAgKiB1c2VyLXNjb3BlIHJlZ2lzdHJ5LiBEbyBub3Qgc2V0IHRoaXMgbWFudWFsbHk7IGZvciBwbGFpbiBhdHRhY2ggbW9kZSB1c2VcbiAgICoge0BsaW5rIHBvcnR9IGFsb25lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdW5kZWZpbmVkYFxuICAgKi9cbiAgcmVhZG9ubHkgaXNIYXJuZXNzT3duZWRJbnN0YW5jZT86IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIG93bmVkIGRlc2t0b3AgT2JzaWRpYW4gd2luZG93IGlzIHNob3duIG9uIHNjcmVlbi5cbiAgICpcbiAgICogV2hlbiBgZmFsc2VgLCB0aGUgaGFybmVzcyBsYXVuY2hlcyB0aGUgb3duZWQgaW5zdGFuY2Ugd2l0aFxuICAgKiBrZWVwLWFsaXZlIENocm9taXVtIGZsYWdzIGFuZCBtb3ZlcyBpdHMgd2luZG93ICoqb2ZmLXNjcmVlbioqIG9uY2UgRWxlY3Ryb24nc1xuICAgKiByZW1vdGUgYnJpZGdlIGlzIGF2YWlsYWJsZSwgc28gdGhlIHJ1biBuZXZlciBzdGVhbHMgZm9jdXMgb3IgcG9wcyBhIHdpbmRvdyBpblxuICAgKiBmcm9udCBvZiB5b3UuIE9mZi1zY3JlZW4gKG5vdCBtaW5pbWl6ZWQpIGtlZXBzIHRoZSByZW5kZXJlciBsaXZlLCBzb1xuICAgKiBgc2V0VGltZW91dGAsIGByZXF1ZXN0QW5pbWF0aW9uRnJhbWVgLCBgOmhvdmVyYCwgYW5kIHRydXN0ZWQgaW5wdXQgYmVoYXZlXG4gICAqIGlkZW50aWNhbGx5IHRvIGEgdmlzaWJsZSB3aW5kb3cuIERlZmF1bHRzIHRvIGB0cnVlYDsgaW50ZWdyYXRpb24gc2V0dXBcbiAgICogZXhwbGljaXRseSBwYXNzZXMgYGZhbHNlYCB0byBhdm9pZCBzdGVhbGluZyBmb2N1cy4gSWdub3JlZCBpbiBhdHRhY2ggbW9kZVxuICAgKiAoe0BsaW5rIHBvcnR9IHNldCkgXHUyMDE0IHRoZSBoYXJuZXNzIG5ldmVyXG4gICAqIG1vdmVzIHRoZSB1c2VyJ3Mgb3duIHJ1bm5pbmcgd2luZG93LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIHJlYWRvbmx5IGlzT2JzaWRpYW5BcHBWaXNpYmxlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUGlucyB0aGUgKipFbGVjdHJvbiBzaGVsbCoqIChpbnN0YWxsZXIgYnVpbGQpIHRoZSBvd25lZCBpbnN0YW5jZSBydW5zLlxuICAgKlxuICAgKiBBY2NlcHRzIGFuIGV4cGxpY2l0IGAneC55LnonYCwgYCdwdWJsaWMtbGF0ZXN0J2AsIG9yIGAnY2F0YWx5c3QtbGF0ZXN0J2AuXG4gICAqIFRoZSBtYXRjaGluZyBHaXRIdWIgcmVsZWFzZSBpbnN0YWxsZXIgaXMgZG93bmxvYWRlZCBhbmQgZXh0cmFjdGVkIHRvIGFcbiAgICogcG9ydGFibGUgc2hlbGwgKGNhY2hlZCBmb3IgcmV1c2UpLiBQdWJsaWMgcmVsZWFzZXMgb25seSBcdTIwMTQgY2F0YWx5c3QgYnVpbGRzXG4gICAqIGhhdmUgbm8gcHVibGljIGluc3RhbGxlci4gSWdub3JlZCB3aGVuIHtAbGluayBwb3J0fSAoYXR0YWNoIG1vZGUpIGlzIHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IG9ic2lkaWFuSW5zdGFsbGVyVmVyc2lvbj86IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogUGlucyB0aGUgKipPYnNpZGlhbiBhcHAgdmVyc2lvbioqIChhc2FyKSB0aGUgb3duZWQgaW5zdGFuY2UgcnVucy5cbiAgICpcbiAgICogQWNjZXB0cyBhbiBleHBsaWNpdCBgJ3gueS56J2AsIGAncHVibGljLWxhdGVzdCdgLCBvciBgJ2NhdGFseXN0LWxhdGVzdCdgLlxuICAgKiBWZXJzaW9ucyBhdCBvciBhYm92ZSB0aGUgc2hlbGwgdmVyc2lvbiBhcmUgYXBwbGllZCBhcyBhIGNoZWFwIGFzYXIgc3dhcDtcbiAgICogb2xkZXIgdmVyc2lvbnMgdHJhbnNwYXJlbnRseSB1c2UgdGhlIG1hdGNoaW5nIGluc3RhbGxlciBzaGVsbC4gV2hlbiBvbWl0dGVkLFxuICAgKiB0aGUgdXNlcidzIGN1cnJlbnRseS1pbnN0YWxsZWQgdmVyc2lvbiBpcyB1c2VkLiBJZ25vcmVkIHdoZW4ge0BsaW5rIHBvcnR9XG4gICAqIChhdHRhY2ggbW9kZSkgaXMgc2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdW5kZWZpbmVkYFxuICAgKi9cbiAgcmVhZG9ubHkgb2JzaWRpYW5WZXJzaW9uPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBDRFAgcG9ydCBvZiBhbiBhbHJlYWR5LXJ1bm5pbmcgT2JzaWRpYW4gdG8gKiphdHRhY2gqKiB0byAodGhlXG4gICAqIGAtLXJlbW90ZS1kZWJ1Z2dpbmctcG9ydGAgaXQgd2FzIGxhdW5jaGVkIHdpdGgpLiBXaGVuIHNldCwgdGhlIGhhcm5lc3NcbiAgICogYXR0YWNoZXMgaW5zdGVhZCBvZiBvd25pbmcgYW4gaW5zdGFuY2UsIGFuZCB0aGUgdmVyc2lvbiBrbm9icyBhcmUgaWdub3JlZC5cbiAgICogV2hlbiBvbWl0dGVkLCBhbiBvd25lZCBpc29sYXRlZCBpbnN0YW5jZSBpcyBsYXVuY2hlZCBvbiBhbiBhdXRvbWF0aWNhbGx5XG4gICAqIGNob3NlbiBmcmVlIHBvcnQgKG5vIHBvcnQgaXMgaGFyZGNvZGVkKS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHVuZGVmaW5lZGBcbiAgICovXG4gIHJlYWRvbmx5IHBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gbGF1bmNoIHRoZSBvd25lZCBpbnN0YW5jZSB3aXRoIENocm9taXVtJ3Mgc2FuZGJveCBkaXNhYmxlZFxuICAgKiAoYC0tbm8tc2FuZGJveGApLlxuICAgKlxuICAgKiBOZWVkZWQgdG8gYm9vdCBhbiBvd25lZCBpbnN0YW5jZSBvbiBMaW51eCB3aGVuIHRoZXJlIGlzIG5vXG4gICAqIGNvcnJlY3RseS1jb25maWd1cmVkIHNldHVpZCBgY2hyb21lLXNhbmRib3hgIGhlbHBlciBcdTIwMTQgZS5nLiBhIHBvcnRhYmxlIHNoZWxsXG4gICAqIGV4dHJhY3RlZCBmcm9tIGFuIGluc3RhbGxlciwgb3IgYSBDSSBydW5uZXIgbGF1bmNoaW5nIGFzIGEgbm9uLXJvb3QgdXNlciwgaW5cbiAgICogd2hpY2ggY2FzZSB0aGUgcmVuZGVyZXIgb3RoZXJ3aXNlIHJlZnVzZXMgdG8gc3RhcnQuIEhhcm1sZXNzIG9uXG4gICAqIFdpbmRvd3MvbWFjT1MuIElnbm9yZWQgaW4gYXR0YWNoIG1vZGUgKHtAbGluayBwb3J0fSBzZXQpIFx1MjAxNCB0aGUgaGFybmVzcyBuZXZlclxuICAgKiByZWxhdW5jaGVzIHRoZSB1c2VyJ3MgcnVubmluZyBpbnN0YW5jZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkRGlzYWJsZVNhbmRib3g/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGFuICoqdW5ydW5uYWJsZSoqIGluc3RhbGxlclx1MjE5NGFwcCB2ZXJzaW9uIHBhaXIgZmFpbHMgZmFzdCBiZWZvcmUgbGF1bmNoLlxuICAgKlxuICAgKiBXaGVuIGB0cnVlYCAodGhlIGRlZmF1bHQpLCBhbiBpbnN0YWxsZXIgYmVsb3cgdGhlIGFwcCdzIHJ1biBmbG9vciAodGhlXG4gICAqIG9sZGVzdCBpbnN0YWxsZXIgdGhlIGFwcCdzIGFzYXIgY2FuIGJvb3Qgb24pIHRocm93c1xuICAgKiBgSW5jb21wYXRpYmxlSW5zdGFsbGVyVmVyc2lvbkVycm9yYCBmcm9tIHZlcnNpb24gcmVzb2x1dGlvbiwgYmVmb3JlIGFueXRoaW5nXG4gICAqIGlzIGRvd25sb2FkZWQgb3IgbGF1bmNoZWQuIFNldCBgZmFsc2VgIHRvIGxldCB0aGUgcGluIHByb2NlZWQgdG8gbGF1bmNoXG4gICAqIGluc3RlYWQgXHUyMDE0IHdoZXJlIHRoZSByZWFjdGl2ZSBkZWFkLWJvb3QgZmFzdC1mYWlsXG4gICAqIChgUmVuZGVyZXJGYWlsZWRUb0luaXRpYWxpemVFcnJvcmAsIHNlZSB7QGxpbmsgZGVhZEJvb3RHcmFjZUluTWlsbGlzZWNvbmRzfSlcbiAgICogc3RpbGwgY2F0Y2hlcyB0aGUgYmxhY2stc2NyZWVuIGJvb3QsIGFuZCB0aGUgYCd1bnJ1bm5hYmxlJ2AgdmVyZGljdCBpc1xuICAgKiBzdXJmYWNlZCBhcyBkYXRhIHJhdGhlciB0aGFuIHRocm93bi4gT25seSBhcHBsaWVzIHRvIGFuIG93bmVkIGluc3RhbmNlXG4gICAqIChpZ25vcmVkIGluIGF0dGFjaCBtb2RlLCB7QGxpbmsgcG9ydH0gc2V0KS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBhICoqc2lsZW50IGFzYXIgZmFsbGJhY2sqKiBmYWlscyBmYXN0IGFmdGVyIGJvb3QuXG4gICAqXG4gICAqIFdoZW4gYW4gYXNhciBpcyBzd2FwcGVkIG9udG8gYW4gaW5zdGFsbGVyIHNoZWxsIHRvbyBvbGQgZm9yIGl0LCB0aGUgaW5zdGFuY2VcbiAgICogbWF5IG5vdCBkZWFkLWJvb3QgXHUyMDE0IGl0IGNhbiBzaWxlbnRseSByZXZlcnQgdG8gdGhlIGluc3RhbGxlcidzIG93biBidW5kbGVkXG4gICAqIGFzYXIgYW5kIHJ1biB0aGUgKip3cm9uZyAob2xkZXIpKiogdmVyc2lvbiBiZWhpbmQgYSBoZWFsdGh5IFVJLiBXaGVuIGB0cnVlYFxuICAgKiAodGhlIGRlZmF1bHQpLCB0aGUgdHJhbnNwb3J0IHZlcmlmaWVzIHRoZSBydW5uaW5nIGFwcCB2ZXJzaW9uIGFnYWluc3QgdGhlIHBpblxuICAgKiBwb3N0LWJvb3QgYW5kIHRocm93cyBgU2lsZW50QXNhckZhbGxiYWNrRXJyb3JgIG9uIGEgbWlzbWF0Y2guIFNldCBgZmFsc2VgIHRvXG4gICAqIGxldCB0aGUgYm9vdCBwcm9jZWVkIFx1MjAxNCB0aGUgbWlzbWF0Y2ggaXMgdGhlbiBzdXJmYWNlZCBhcyBkYXRhICh0aGUgZmFsbGJhY2tcbiAgICogdmVyZGljdCkgcmF0aGVyIHRoYW4gdGhyb3duLiBPbmx5IGFwcGxpZXMgdG8gYW4gb3duZWQgaW5zdGFuY2UgcnVubmluZyBhXG4gICAqIHN3YXBwZWQtaW4gYXNhciAoaWdub3JlZCBpbiBhdHRhY2ggbW9kZSwge0BsaW5rIHBvcnR9IHNldCwgYW5kIHdoZW4gbm8gYXNhciBpc1xuICAgKiBzd2FwcGVkIFx1MjAxNCB0aGVyZSBpcyBub3RoaW5nIHRvIHZlcmlmeSkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkVGhyb3dPblNpbGVudEFzYXJGYWxsYmFjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIG93bmVkLWluc3RhbmNlIGNvbXBhdGliaWxpdHkgKipuYWcgd2FybmluZ3MqKiBhcmUgZW1pdHRlZC5cbiAgICpcbiAgICogQ292ZXJzICoqYm90aCoqIGNvbXBhdGliaWxpdHkgbmFnczogdGhlIG9mZmxpbmUgaW5zdGFsbGVyXHUyMTk0YXBwIHdhcm5pbmcgKGFcbiAgICogcnVubmFibGUgaW5zdGFsbGVyIGJlbG93IHRoZSByZWNvbW1lbmRlZCBmbG9vcikgYW5kIHRoZSBwb3N0LWJvb3RcbiAgICogcnVudGltZS1FbGVjdHJvbiB3YXJuaW5nIChhIGxpdmUgRWxlY3Ryb24gYmVsb3cgdGhlIGFwcCdzIHJlY29tbWVuZGVkXG4gICAqIG1pbmltdW0pLiBXaGVuIGB0cnVlYCAodGhlIGRlZmF1bHQpIGVhY2ggZmlyZXMgdmlhIHRoZSBoYXJuZXNzIGxvZzsgc2V0XG4gICAqIGBmYWxzZWAgdG8gc2lsZW5jZSBib3RoIFx1MjAxNCB0aGUgdmVyZGljdHMgYXJlIHN0aWxsIGNvbXB1dGVkIGFuZCBzdXJmYWNlZCBhc1xuICAgKiBkYXRhIChgY29tcGF0aWJpbGl0eWAgLyBgZWxlY3Ryb25Db21wYXRpYmlsaXR5YCksIG9ubHkgdGhlIGxvZyBpcyBzdXBwcmVzc2VkLlxuICAgKiBEb2VzIG5vdCBhZmZlY3QgdGhlIGAndW5ydW5uYWJsZSdgIHRocm93IChzZWVcbiAgICoge0BsaW5rIHNob3VsZFRocm93T25JbmNvbXBhdGlibGVJbnN0YWxsZXJ9KS4gT25seSBhcHBsaWVzIHRvIGFuIG93bmVkXG4gICAqIGluc3RhbmNlIChpZ25vcmVkIGluIGF0dGFjaCBtb2RlLCB7QGxpbmsgcG9ydH0gc2V0KS5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICByZWFkb25seSBzaG91bGRXYXJuT25Db21wYXRpYmlsaXR5SXNzdWVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRGlzY3JpbWluYW50IGZvciB0aGUgdHJhbnNwb3J0IHR5cGUuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiAnb2JzaWRpYW4tY2RwJztcbn1cblxuLyoqXG4gKiBEaXNjcmltaW5hdGVkIHVuaW9uIG9mIGFsbCBzdXBwb3J0ZWQgdHJhbnNwb3J0IGNvbmZpZ3VyYXRpb25zLlxuICpcbiAqIFVzZWQgaW4gdml0ZXN0IGBlbnZpcm9ubWVudE9wdGlvbnMub2JzaWRpYW5UcmFuc3BvcnRgIHRvIHNlbGVjdCBhbmRcbiAqIGNvbmZpZ3VyZSB0aGUgdHJhbnNwb3J0IGZvciBpbnRlZ3JhdGlvbiB0ZXN0cy5cbiAqL1xuZXhwb3J0IHR5cGUgT2JzaWRpYW5UcmFuc3BvcnRPcHRpb25zID1cbiAgfCBPYnNpZGlhbkFuZHJvaWRBcHBpdW1UcmFuc3BvcnRPcHRpb25zXG4gIHwgT2JzaWRpYW5DZHBUcmFuc3BvcnRPcHRpb25zO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -302,6 +302,22 @@ export interface ObsidianCdpTransportOptions {
302
302
  * @default `true`
303
303
  */
304
304
  readonly shouldThrowOnIncompatibleInstaller?: boolean;
305
+ /**
306
+ * Whether a **silent asar fallback** fails fast after boot.
307
+ *
308
+ * When an asar is swapped onto an installer shell too old for it, the instance
309
+ * may not dead-boot — it can silently revert to the installer's own bundled
310
+ * asar and run the **wrong (older)** version behind a healthy UI. When `true`
311
+ * (the default), the transport verifies the running app version against the pin
312
+ * post-boot and throws `SilentAsarFallbackError` on a mismatch. Set `false` to
313
+ * let the boot proceed — the mismatch is then surfaced as data (the fallback
314
+ * verdict) rather than thrown. Only applies to an owned instance running a
315
+ * swapped-in asar (ignored in attach mode, {@link port} set, and when no asar is
316
+ * swapped — there is nothing to verify).
317
+ *
318
+ * @default `true`
319
+ */
320
+ readonly shouldThrowOnSilentAsarFallback?: boolean;
305
321
  /**
306
322
  * Whether the owned-instance compatibility **nag warnings** are emitted.
307
323
  *
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var global_setup_no_plugin_exports = {};
20
+ __export(global_setup_no_plugin_exports, {
21
+ getTempVault: () => import_global_setup2.getTempVault,
22
+ setup: () => setup,
23
+ teardown: () => teardown
24
+ });
25
+ module.exports = __toCommonJS(global_setup_no_plugin_exports);
26
+ var import_global_setup = require("./global-setup.cjs");
27
+ var import_global_setup2 = require("./global-setup.cjs");
28
+ const noPluginGlobalSetup = (0, import_global_setup.createSetup)({ installPlugin: false });
29
+ const setup = noPluginGlobalSetup.setup;
30
+ const teardown = noPluginGlobalSetup.teardown;
31
+ // Annotate the CommonJS export names for ESM import in node:
32
+ 0 && (module.exports = {
33
+ getTempVault,
34
+ setup,
35
+ teardown
36
+ });
37
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3ZpdGVzdC9nbG9iYWwtc2V0dXAtbm8tcGx1Z2luLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogVml0ZXN0ICoqcGx1Z2luLWxlc3MqKiBnbG9iYWwgc2V0dXAvdGVhcmRvd24gYWRhcHRlci5cbiAqXG4gKiBUaGUgY291bnRlcnBhcnQgdG8gYC4vZ2xvYmFsLXNldHVwLnRzYCAod2hpY2ggaW5zdGFsbHMgYW5kIGVuYWJsZXMgdGhlIGJ1aWx0XG4gKiBwbHVnaW4pLiBUaGlzIG9uZSBydW5zIHtAbGluayBjcmVhdGVTZXR1cH0gd2l0aCBgaW5zdGFsbFBsdWdpbjogZmFsc2VgLCBzbyBpdFxuICogbGF1bmNoZXMgdGhlIG93bmVkIE9ic2lkaWFuIGluc3RhbmNlLCByZWdpc3RlcnMgYW4gKiplbXB0eSoqIHRlbXAgdmF1bHQsIGFuZFxuICogcHVibGlzaGVzIHRoZSBvd25lZC1pbnN0YW5jZSBlbmRwb2ludCB0byB3b3JrZXJzIFx1MjAxNCBidXQgY29waWVzL2VuYWJsZXMgbm9cbiAqIHBsdWdpbi4gUG9pbnQgYSBub24tcGx1Z2luIGNvbnN1bWVyJ3MgYGdsb2JhbFNldHVwYCBzdHJhaWdodCBhdFxuICogYG9ic2lkaWFuLWludGVncmF0aW9uLXRlc3Rpbmcvdml0ZXN0LWdsb2JhbC1zZXR1cC1uby1wbHVnaW5gOyBubyB3cmFwcGVyIG5lZWRlZC5cbiAqL1xuXG4vKiB2OCBpZ25vcmUgc3RhcnQgLS0gSW50ZWdyYXRpb24tdGltZSBzZXR1cCBjb3ZlcmVkIGJ5IGludGVncmF0aW9uIHRlc3RzLCBub3QgdW5pdCB0ZXN0cy4gKi9cblxuaW1wb3J0IHsgY3JlYXRlU2V0dXAgfSBmcm9tICcuL2dsb2JhbC1zZXR1cC5janMnO1xuXG5jb25zdCBub1BsdWdpbkdsb2JhbFNldHVwID0gY3JlYXRlU2V0dXAoeyBpbnN0YWxsUGx1Z2luOiBmYWxzZSB9KTtcblxuLyoqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwIGZ1bmN0aW9uIChwbHVnaW4tbGVzczsgbm8gcHJlLXBvcHVsYXRpb24pLlxuICpcbiAqIFJlZ2lzdGVycyBhbiBlbXB0eSB0ZW1wIHZhdWx0IGFuZCBwcm92aWRlcyBgdGVtcFZhdWx0UGF0aGAgdG8gdGVzdHMsIHdpdGhvdXRcbiAqIGNvcHlpbmcgb3IgZW5hYmxpbmcgYW55IHBsdWdpbi5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldHVwID0gbm9QbHVnaW5HbG9iYWxTZXR1cC5zZXR1cDtcblxuLyoqXG4gKiBWaXRlc3QgZ2xvYmFsIHRlYXJkb3duIGZ1bmN0aW9uLlxuICpcbiAqIFJlbW92ZXMgdGhlIHRlbXBvcmFyeSB2YXVsdCBjcmVhdGVkIGR1cmluZyBzZXR1cC5cbiAqL1xuZXhwb3J0IGNvbnN0IHRlYXJkb3duID0gbm9QbHVnaW5HbG9iYWxTZXR1cC50ZWFyZG93bjtcblxuZXhwb3J0IHsgZ2V0VGVtcFZhdWx0IH0gZnJvbSAnLi9nbG9iYWwtc2V0dXAuY2pzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBZUEsMEJBQTRCO0FBbUI1QixJQUFBQSx1QkFBNkI7QUFqQjdCLE1BQU0sMEJBQXNCLGlDQUFZLEVBQUUsZUFBZSxNQUFNLENBQUM7QUFRekQsTUFBTSxRQUFRLG9CQUFvQjtBQU9sQyxNQUFNLFdBQVcsb0JBQW9COyIsCiAgIm5hbWVzIjogWyJpbXBvcnRfZ2xvYmFsX3NldHVwIl0KfQo=
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @file
3
+ *
4
+ * Vitest **plugin-less** global setup/teardown adapter.
5
+ *
6
+ * The counterpart to `./global-setup.ts` (which installs and enables the built
7
+ * plugin). This one runs {@link createSetup} with `installPlugin: false`, so it
8
+ * launches the owned Obsidian instance, registers an **empty** temp vault, and
9
+ * publishes the owned-instance endpoint to workers — but copies/enables no
10
+ * plugin. Point a non-plugin consumer's `globalSetup` straight at
11
+ * `obsidian-integration-testing/vitest-global-setup-no-plugin`; no wrapper needed.
12
+ */
13
+ /**
14
+ * Vitest global setup function (plugin-less; no pre-population).
15
+ *
16
+ * Registers an empty temp vault and provides `tempVaultPath` to tests, without
17
+ * copying or enabling any plugin.
18
+ */
19
+ export declare const setup: (this: void, project: import("vitest/node").TestProject) => Promise<void>;
20
+ /**
21
+ * Vitest global teardown function.
22
+ *
23
+ * Removes the temporary vault created during setup.
24
+ */
25
+ export declare const teardown: (this: void) => Promise<void>;
26
+ export { getTempVault } from './global-setup.cjs';
@@ -40,7 +40,7 @@ function createSetup(options) {
40
40
  const transportOptions = environmentOptions?.["obsidianTransport"];
41
41
  const label = transportOptions?.type ?? "obsidian-cdp";
42
42
  try {
43
- setupResult = await (0, import_global_setup_core.coreSetup)({ populate: options?.populate?.(), transportOptions });
43
+ setupResult = await (0, import_global_setup_core.coreSetup)({ installPlugin: options?.installPlugin, populate: options?.populate?.(), transportOptions });
44
44
  } catch (error) {
45
45
  (0, import_log.log)(`[integration-setup:${label}] Setup failed (tests for this project will be skipped): ${(0, import_error_to_string.errorToString)(error)}`);
46
46
  project.provide("setupError", (0, import_error_to_string.errorToString)(error));
@@ -71,4 +71,4 @@ const teardown = defaultGlobalSetup.teardown;
71
71
  setup,
72
72
  teardown
73
73
  });
74
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3ZpdGVzdC9nbG9iYWwtc2V0dXAudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwIGFuZCB0ZWFyZG93biBhZGFwdGVyLlxuICpcbiAqIERlbGVnYXRlcyB0byB0aGUgZnJhbWV3b3JrLWFnbm9zdGljIGNvcmUgYW5kIGJyaWRnZXMgY29udGV4dFxuICogdG8gdGVzdCB3b3JrZXJzIHZpYSBWaXRlc3QncyBgcHJvamVjdC5wcm92aWRlYCAvIGBpbmplY3RgLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIHNldHVwIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IFRlc3RQcm9qZWN0IH0gZnJvbSAndml0ZXN0L25vZGUnO1xuXG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICd2aXRlc3QnO1xuXG5pbXBvcnQgdHlwZSB7IENvcmVTZXR1cFJlc3VsdCB9IGZyb20gJy4uL2dsb2JhbC1zZXR1cC1jb3JlLmNqcyc7XG5pbXBvcnQgdHlwZSB7IFBvcHVsYXRlRmlsZXNQYXJhbXMgfSBmcm9tICcuLi90ZW1wLXZhdWx0LmNqcyc7XG5pbXBvcnQgdHlwZSB7IE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9ucyB9IGZyb20gJy4uL3RyYW5zcG9ydC1vcHRpb25zLmNqcyc7XG5cbmltcG9ydCB7XG4gIHNldFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlcixcbiAgc2V0VmF1bHRQYXRoUmVzb2x2ZXJcbn0gZnJvbSAnLi4vY29udGV4dC1wcm92aWRlci5janMnO1xuaW1wb3J0IHsgZXJyb3JUb1N0cmluZyB9IGZyb20gJy4uL2Vycm9yLXRvLXN0cmluZy5janMnO1xuaW1wb3J0IHtcbiAgY29yZVNldHVwLFxuICBjb3JlVGVhcmRvd25cbn0gZnJvbSAnLi4vZ2xvYmFsLXNldHVwLWNvcmUuY2pzJztcbmltcG9ydCB7IGxvZyB9IGZyb20gJy4uL2xvZy5janMnO1xuaW1wb3J0IHsgVGVtcFZhdWx0IH0gZnJvbSAnLi4vdGVtcC12YXVsdC5janMnO1xuXG5zZXRUcmFuc3BvcnRPcHRpb25zUmVzb2x2ZXIoKCkgPT4gaW5qZWN0KCdvYnNpZGlhblRyYW5zcG9ydCcpKTtcbnNldFZhdWx0UGF0aFJlc29sdmVyKCgpID0+IGluamVjdCgndGVtcFZhdWx0UGF0aCcpKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgY3JlYXRlU2V0dXB9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVNldHVwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIGZpbGVzL2ZvbGRlcnMgdG8gd3JpdGUgaW50byB0aGUgdmF1bHQgYmVmb3JlIE9ic2lkaWFuIG9wZW5zIGl0IChzZWVcbiAgICoge0BsaW5rIENvcmVTZXR1cFBhcmFtcy5wb3B1bGF0ZX0pLiBBIHRodW5rIHNvIGxhcmdlIGZpeHR1cmVzIGFyZSBidWlsdCBsYXppbHksXG4gICAqIG9uY2UsIGluIHRoZSBzZXR1cCBwcm9jZXNzLlxuICAgKi9cbiAgcG9wdWxhdGU/KHRoaXM6IHZvaWQpOiBQb3B1bGF0ZUZpbGVzUGFyYW1zO1xufVxuXG4vKipcbiAqIEEgVml0ZXN0IGBnbG9iYWxTZXR1cGAgbW9kdWxlJ3MgYHNldHVwYCAvIGB0ZWFyZG93bmAgcGFpci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWaXRlc3RHbG9iYWxTZXR1cCB7XG4gIHNldHVwKHRoaXM6IHZvaWQsIHByb2plY3Q6IFRlc3RQcm9qZWN0KTogUHJvbWlzZTx2b2lkPjtcbiAgdGVhcmRvd24odGhpczogdm9pZCk6IFByb21pc2U8dm9pZD47XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIFZpdGVzdCBnbG9iYWwgc2V0dXAvdGVhcmRvd24gcGFpciwgb3B0aW9uYWxseSBwcmUtcG9wdWxhdGluZyB0aGUgdmF1bHRcbiAqIGJlZm9yZSBPYnNpZGlhbiBvcGVucyBpdCBcdTIwMTQgdXNlIHRoaXMgZm9yIGEgZGVkaWNhdGVkIGxhcmdlLXZhdWx0L3BlcmZvcm1hbmNlXG4gKiBwcm9qZWN0LiBUaGUgcGxhaW4ge0BsaW5rIHNldHVwfSAvIHtAbGluayB0ZWFyZG93bn0gZXhwb3J0cyBhcmUgdGhlIG5vLXBvcHVsYXRlXG4gKiBjYXNlIChgY3JlYXRlU2V0dXAoKWApLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gU2V0dXAgb3B0aW9ucy5cbiAqIEByZXR1cm5zIFRoZSBgc2V0dXBgIGFuZCBgdGVhcmRvd25gIGZ1bmN0aW9ucyB0byByZS1leHBvcnQgZnJvbSBhIGBnbG9iYWxTZXR1cGAgbW9kdWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2V0dXAob3B0aW9ucz86IENyZWF0ZVNldHVwT3B0aW9ucyk6IFZpdGVzdEdsb2JhbFNldHVwIHtcbiAgbGV0IHNldHVwUmVzdWx0OiBDb3JlU2V0dXBSZXN1bHQgfCB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHsgc2V0dXAsIHRlYXJkb3duIH07XG5cbiAgYXN5bmMgZnVuY3Rpb24gc2V0dXAocHJvamVjdDogVGVzdFByb2plY3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBlbnZpcm9ubWVudE9wdGlvbnMgPSBwcm9qZWN0LmNvbmZpZy5lbnZpcm9ubWVudE9wdGlvbnMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgdHJhbnNwb3J0T3B0aW9ucyA9IGVudmlyb25tZW50T3B0aW9ucz8uWydvYnNpZGlhblRyYW5zcG9ydCddIGFzIE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9ucyB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBsYWJlbCA9IHRyYW5zcG9ydE9wdGlvbnM/LnR5cGUgPz8gJ29ic2lkaWFuLWNkcCc7XG5cbiAgICB0cnkge1xuICAgICAgc2V0dXBSZXN1bHQgPSBhd2FpdCBjb3JlU2V0dXAoeyBwb3B1bGF0ZTogb3B0aW9ucz8ucG9wdWxhdGU/LigpLCB0cmFuc3BvcnRPcHRpb25zIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAvLyBDYXRjaCBzZXR1cCBlcnJvcnMgc28gdGhhdCBvdGhlciBwcm9qZWN0cycgdGVzdHMgY2FuIHN0aWxsIHJ1bi5cbiAgICAgIC8vIEluZGl2aWR1YWwgdGVzdHMgaW4gdGhpcyBwcm9qZWN0IHdpbGwgZmFpbCB3aXRoIHRoZSBzdG9yZWQgZXJyb3JcbiAgICAgIC8vIFdoZW4gdGhleSB0cnkgdG8gaW5qZWN0IHRoZSB0ZW1wIHZhdWx0IHBhdGguXG4gICAgICBsb2coYFtpbnRlZ3JhdGlvbi1zZXR1cDoke2xhYmVsfV0gU2V0dXAgZmFpbGVkICh0ZXN0cyBmb3IgdGhpcyBwcm9qZWN0IHdpbGwgYmUgc2tpcHBlZCk6ICR7ZXJyb3JUb1N0cmluZyhlcnJvcil9YCk7XG4gICAgICBwcm9qZWN0LnByb3ZpZGUoJ3NldHVwRXJyb3InLCBlcnJvclRvU3RyaW5nKGVycm9yKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcHJvamVjdC5wcm92aWRlKCdvYnNpZGlhblRyYW5zcG9ydCcsIHNldHVwUmVzdWx0LnRyYW5zcG9ydE9wdGlvbnMpO1xuICAgIHByb2plY3QucHJvdmlkZSgndGVtcFZhdWx0UGF0aCcsIHNldHVwUmVzdWx0LnRlbXBWYXVsdC5wYXRoKTtcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHRlYXJkb3duKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IGNvcmVUZWFyZG93bihzZXR1cFJlc3VsdCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSB0ZW1wb3JhcnkgdmF1bHQgcHJvdmlkZWQgYnkgdGhlIGdsb2JhbCBzZXR1cC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgdGVtcG9yYXJ5IHZhdWx0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGVtcFZhdWx0KCk6IFRlbXBWYXVsdCB7XG4gIGNvbnN0IHRlbXBWYXVsdFBhdGggPSBpbmplY3QoJ3RlbXBWYXVsdFBhdGgnKTtcbiAgY29uc3Qgc2V0dXBFcnJvck1lc3NhZ2UgPSBpbmplY3QoJ3NldHVwRXJyb3InKTtcbiAgaWYgKHNldHVwRXJyb3JNZXNzYWdlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnRlZ3JhdGlvbiBzZXR1cCBmYWlsZWQgXHUyMDE0IGNhbm5vdCBnZXQgdGVtcCB2YXVsdDogJHtzZXR1cEVycm9yTWVzc2FnZX1gKTtcbiAgfVxuICByZXR1cm4gbmV3IFRlbXBWYXVsdCh0ZW1wVmF1bHRQYXRoKTtcbn1cblxuY29uc3QgZGVmYXVsdEdsb2JhbFNldHVwID0gY3JlYXRlU2V0dXAoKTtcblxuLyoqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwIGZ1bmN0aW9uIChubyBwcmUtcG9wdWxhdGlvbikuXG4gKlxuICogQ29waWVzIHRoZSBidWlsdCBwbHVnaW4gaW50byBhIHRlbXBvcmFyeSB2YXVsdCwgZW5hYmxlcyBpdCB2aWEgdGhlIE9ic2lkaWFuIENMSSxcbiAqIGFuZCBwcm92aWRlcyBgdGVtcFZhdWx0UGF0aGAgdG8gdGVzdHMuXG4gKlxuICogQHBhcmFtIHByb2plY3QgLSBUaGUgVml0ZXN0IHByb2plY3QuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHNldHVwIGNvbXBsZXRlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHNldHVwID0gZGVmYXVsdEdsb2JhbFNldHVwLnNldHVwO1xuXG4vKipcbiAqIFZpdGVzdCBnbG9iYWwgdGVhcmRvd24gZnVuY3Rpb24uXG4gKlxuICogUmVtb3ZlcyB0aGUgdGVtcG9yYXJ5IHZhdWx0IGNyZWF0ZWQgZHVyaW5nIHNldHVwLlxuICpcbiAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gdGVhcmRvd24gY29tcGxldGVzLlxuICovXG5leHBvcnQgY29uc3QgdGVhcmRvd24gPSBkZWZhdWx0R2xvYmFsU2V0dXAudGVhcmRvd247XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBYUEsb0JBQXVCO0FBTXZCLDhCQUdPO0FBQ1AsNkJBQThCO0FBQzlCLCtCQUdPO0FBQ1AsaUJBQW9CO0FBQ3BCLHdCQUEwQjtBQUFBLElBRTFCLHFEQUE0QixVQUFNLHNCQUFPLG1CQUFtQixDQUFDO0FBQUEsSUFDN0QsOENBQXFCLFVBQU0sc0JBQU8sZUFBZSxDQUFDO0FBK0IzQyxTQUFTLFlBQVksU0FBaUQ7QUFDM0UsTUFBSTtBQUVKLFNBQU8sRUFBRSxPQUFBQSxRQUFPLFVBQUFDLFVBQVM7QUFFekIsaUJBQWVELE9BQU0sU0FBcUM7QUFDeEQsVUFBTSxxQkFBcUIsUUFBUSxPQUFPO0FBQzFDLFVBQU0sbUJBQW1CLHFCQUFxQixtQkFBbUI7QUFDakUsVUFBTSxRQUFRLGtCQUFrQixRQUFRO0FBRXhDLFFBQUk7QUFDRixvQkFBYyxVQUFNLG9DQUFVLEVBQUUsVUFBVSxTQUFTLFdBQVcsR0FBRyxpQkFBaUIsQ0FBQztBQUFBLElBQ3JGLFNBQVMsT0FBZ0I7QUFJdkIsMEJBQUksc0JBQXNCLEtBQUssZ0VBQTRELHNDQUFjLEtBQUssQ0FBQyxFQUFFO0FBQ2pILGNBQVEsUUFBUSxrQkFBYyxzQ0FBYyxLQUFLLENBQUM7QUFDbEQ7QUFBQSxJQUNGO0FBRUEsWUFBUSxRQUFRLHFCQUFxQixZQUFZLGdCQUFnQjtBQUNqRSxZQUFRLFFBQVEsaUJBQWlCLFlBQVksVUFBVSxJQUFJO0FBQUEsRUFDN0Q7QUFFQSxpQkFBZUMsWUFBMEI7QUFDdkMsY0FBTSx1Q0FBYSxXQUFXO0FBQUEsRUFDaEM7QUFDRjtBQU9PLFNBQVMsZUFBMEI7QUFDeEMsUUFBTSxvQkFBZ0Isc0JBQU8sZUFBZTtBQUM1QyxRQUFNLHdCQUFvQixzQkFBTyxZQUFZO0FBQzdDLE1BQUksbUJBQW1CO0FBQ3JCLFVBQU0sSUFBSSxNQUFNLDBEQUFxRCxpQkFBaUIsRUFBRTtBQUFBLEVBQzFGO0FBQ0EsU0FBTyxJQUFJLDRCQUFVLGFBQWE7QUFDcEM7QUFFQSxNQUFNLHFCQUFxQixZQUFZO0FBV2hDLE1BQU0sUUFBUSxtQkFBbUI7QUFTakMsTUFBTSxXQUFXLG1CQUFtQjsiLAogICJuYW1lcyI6IFsic2V0dXAiLCAidGVhcmRvd24iXQp9Cg==
74
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL3ZpdGVzdC9nbG9iYWwtc2V0dXAudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBWaXRlc3QgZ2xvYmFsIHNldHVwIGFuZCB0ZWFyZG93biBhZGFwdGVyLlxuICpcbiAqIERlbGVnYXRlcyB0byB0aGUgZnJhbWV3b3JrLWFnbm9zdGljIGNvcmUgYW5kIGJyaWRnZXMgY29udGV4dFxuICogdG8gdGVzdCB3b3JrZXJzIHZpYSBWaXRlc3QncyBgcHJvamVjdC5wcm92aWRlYCAvIGBpbmplY3RgLlxuICovXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBJbnRlZ3JhdGlvbi10aW1lIHNldHVwIGNvdmVyZWQgYnkgaW50ZWdyYXRpb24gdGVzdHMsIG5vdCB1bml0IHRlc3RzLiAqL1xuXG5pbXBvcnQgdHlwZSB7IFRlc3RQcm9qZWN0IH0gZnJvbSAndml0ZXN0L25vZGUnO1xuXG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICd2aXRlc3QnO1xuXG5pbXBvcnQgdHlwZSB7IENvcmVTZXR1cFJlc3VsdCB9IGZyb20gJy4uL2dsb2JhbC1zZXR1cC1jb3JlLmNqcyc7XG5pbXBvcnQgdHlwZSB7IFBvcHVsYXRlRmlsZXNQYXJhbXMgfSBmcm9tICcuLi90ZW1wLXZhdWx0LmNqcyc7XG5pbXBvcnQgdHlwZSB7IE9ic2lkaWFuVHJhbnNwb3J0T3B0aW9ucyB9IGZyb20gJy4uL3RyYW5zcG9ydC1vcHRpb25zLmNqcyc7XG5cbmltcG9ydCB7XG4gIHNldFRyYW5zcG9ydE9wdGlvbnNSZXNvbHZlcixcbiAgc2V0VmF1bHRQYXRoUmVzb2x2ZXJcbn0gZnJvbSAnLi4vY29udGV4dC1wcm92aWRlci5janMnO1xuaW1wb3J0IHsgZXJyb3JUb1N0cmluZyB9IGZyb20gJy4uL2Vycm9yLXRvLXN0cmluZy5janMnO1xuaW1wb3J0IHtcbiAgY29yZVNldHVwLFxuICBjb3JlVGVhcmRvd25cbn0gZnJvbSAnLi4vZ2xvYmFsLXNldHVwLWNvcmUuY2pzJztcbmltcG9ydCB7IGxvZyB9IGZyb20gJy4uL2xvZy5janMnO1xuaW1wb3J0IHsgVGVtcFZhdWx0IH0gZnJvbSAnLi4vdGVtcC12YXVsdC5janMnO1xuXG5zZXRUcmFuc3BvcnRPcHRpb25zUmVzb2x2ZXIoKCkgPT4gaW5qZWN0KCdvYnNpZGlhblRyYW5zcG9ydCcpKTtcbnNldFZhdWx0UGF0aFJlc29sdmVyKCgpID0+IGluamVjdCgndGVtcFZhdWx0UGF0aCcpKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgY3JlYXRlU2V0dXB9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVNldHVwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGluc3RhbGwgYW5kIGVuYWJsZSB0aGUgYnVpbHQgcGx1Z2luIGluIHRoZSB0ZW1wIHZhdWx0LiBEZWZhdWx0c1xuICAgKiB0byBgdHJ1ZWAuIFNldCB0byBgZmFsc2VgIGZvciBhICoqbm9uLXBsdWdpbioqIGNvbnN1bWVyIHRoYXQgb25seSBuZWVkcyBhXG4gICAqIHJlZ2lzdGVyZWQsIGVtcHR5IHZhdWx0IHRvIGBldmFsSW5PYnNpZGlhbmAgYWdhaW5zdCBcdTIwMTQgdGhlIG93bmVkIGluc3RhbmNlIGlzXG4gICAqIHN0aWxsIGxhdW5jaGVkIGFuZCBpdHMgZW5kcG9pbnQgcHVibGlzaGVkIHRvIHdvcmtlcnMsIHNvIHJlLWV4cG9ydGluZ1xuICAgKiBgY3JlYXRlU2V0dXAoeyBpbnN0YWxsUGx1Z2luOiBmYWxzZSB9KWAgcmV1c2VzIHRoZSBzYW1lIGF0dGFjaCB3aXJpbmcgd2l0aCBub1xuICAgKiBwbHVnaW4gY29weS9lbmFibGUuIFNlZSB7QGxpbmsgQ29yZVNldHVwUGFyYW1zLmluc3RhbGxQbHVnaW59LlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFsbFBsdWdpbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgZmlsZXMvZm9sZGVycyB0byB3cml0ZSBpbnRvIHRoZSB2YXVsdCBiZWZvcmUgT2JzaWRpYW4gb3BlbnMgaXQgKHNlZVxuICAgKiB7QGxpbmsgQ29yZVNldHVwUGFyYW1zLnBvcHVsYXRlfSkuIEEgdGh1bmsgc28gbGFyZ2UgZml4dHVyZXMgYXJlIGJ1aWx0IGxhemlseSxcbiAgICogb25jZSwgaW4gdGhlIHNldHVwIHByb2Nlc3MuXG4gICAqL1xuICBwb3B1bGF0ZT8odGhpczogdm9pZCk6IFBvcHVsYXRlRmlsZXNQYXJhbXM7XG59XG5cbi8qKlxuICogQSBWaXRlc3QgYGdsb2JhbFNldHVwYCBtb2R1bGUncyBgc2V0dXBgIC8gYHRlYXJkb3duYCBwYWlyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpdGVzdEdsb2JhbFNldHVwIHtcbiAgc2V0dXAodGhpczogdm9pZCwgcHJvamVjdDogVGVzdFByb2plY3QpOiBQcm9taXNlPHZvaWQ+O1xuICB0ZWFyZG93bih0aGlzOiB2b2lkKTogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgVml0ZXN0IGdsb2JhbCBzZXR1cC90ZWFyZG93biBwYWlyLCBvcHRpb25hbGx5IHByZS1wb3B1bGF0aW5nIHRoZSB2YXVsdFxuICogYmVmb3JlIE9ic2lkaWFuIG9wZW5zIGl0IFx1MjAxNCB1c2UgdGhpcyBmb3IgYSBkZWRpY2F0ZWQgbGFyZ2UtdmF1bHQvcGVyZm9ybWFuY2VcbiAqIHByb2plY3QuIFRoZSBwbGFpbiB7QGxpbmsgc2V0dXB9IC8ge0BsaW5rIHRlYXJkb3dufSBleHBvcnRzIGFyZSB0aGUgbm8tcG9wdWxhdGVcbiAqIGNhc2UgKGBjcmVhdGVTZXR1cCgpYCkuIFBhc3MgYHsgaW5zdGFsbFBsdWdpbjogZmFsc2UgfWAgZm9yIGEgbm9uLXBsdWdpbiBjb25zdW1lclxuICogdGhhdCBvbmx5IG5lZWRzIGEgcmVnaXN0ZXJlZCwgZW1wdHkgdmF1bHQgKHNlZSB7QGxpbmsgQ3JlYXRlU2V0dXBPcHRpb25zLmluc3RhbGxQbHVnaW59KS5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFNldHVwIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgYHNldHVwYCBhbmQgYHRlYXJkb3duYCBmdW5jdGlvbnMgdG8gcmUtZXhwb3J0IGZyb20gYSBgZ2xvYmFsU2V0dXBgIG1vZHVsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNldHVwKG9wdGlvbnM/OiBDcmVhdGVTZXR1cE9wdGlvbnMpOiBWaXRlc3RHbG9iYWxTZXR1cCB7XG4gIGxldCBzZXR1cFJlc3VsdDogQ29yZVNldHVwUmVzdWx0IHwgdW5kZWZpbmVkO1xuXG4gIHJldHVybiB7IHNldHVwLCB0ZWFyZG93biB9O1xuXG4gIGFzeW5jIGZ1bmN0aW9uIHNldHVwKHByb2plY3Q6IFRlc3RQcm9qZWN0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZW52aXJvbm1lbnRPcHRpb25zID0gcHJvamVjdC5jb25maWcuZW52aXJvbm1lbnRPcHRpb25zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHRyYW5zcG9ydE9wdGlvbnMgPSBlbnZpcm9ubWVudE9wdGlvbnM/Llsnb2JzaWRpYW5UcmFuc3BvcnQnXSBhcyBPYnNpZGlhblRyYW5zcG9ydE9wdGlvbnMgfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgbGFiZWwgPSB0cmFuc3BvcnRPcHRpb25zPy50eXBlID8/ICdvYnNpZGlhbi1jZHAnO1xuXG4gICAgdHJ5IHtcbiAgICAgIHNldHVwUmVzdWx0ID0gYXdhaXQgY29yZVNldHVwKHsgaW5zdGFsbFBsdWdpbjogb3B0aW9ucz8uaW5zdGFsbFBsdWdpbiwgcG9wdWxhdGU6IG9wdGlvbnM/LnBvcHVsYXRlPy4oKSwgdHJhbnNwb3J0T3B0aW9ucyB9KTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgLy8gQ2F0Y2ggc2V0dXAgZXJyb3JzIHNvIHRoYXQgb3RoZXIgcHJvamVjdHMnIHRlc3RzIGNhbiBzdGlsbCBydW4uXG4gICAgICAvLyBJbmRpdmlkdWFsIHRlc3RzIGluIHRoaXMgcHJvamVjdCB3aWxsIGZhaWwgd2l0aCB0aGUgc3RvcmVkIGVycm9yXG4gICAgICAvLyBXaGVuIHRoZXkgdHJ5IHRvIGluamVjdCB0aGUgdGVtcCB2YXVsdCBwYXRoLlxuICAgICAgbG9nKGBbaW50ZWdyYXRpb24tc2V0dXA6JHtsYWJlbH1dIFNldHVwIGZhaWxlZCAodGVzdHMgZm9yIHRoaXMgcHJvamVjdCB3aWxsIGJlIHNraXBwZWQpOiAke2Vycm9yVG9TdHJpbmcoZXJyb3IpfWApO1xuICAgICAgcHJvamVjdC5wcm92aWRlKCdzZXR1cEVycm9yJywgZXJyb3JUb1N0cmluZyhlcnJvcikpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHByb2plY3QucHJvdmlkZSgnb2JzaWRpYW5UcmFuc3BvcnQnLCBzZXR1cFJlc3VsdC50cmFuc3BvcnRPcHRpb25zKTtcbiAgICBwcm9qZWN0LnByb3ZpZGUoJ3RlbXBWYXVsdFBhdGgnLCBzZXR1cFJlc3VsdC50ZW1wVmF1bHQucGF0aCk7XG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiB0ZWFyZG93bigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBjb3JlVGVhcmRvd24oc2V0dXBSZXN1bHQpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgdGVtcG9yYXJ5IHZhdWx0IHByb3ZpZGVkIGJ5IHRoZSBnbG9iYWwgc2V0dXAuXG4gKlxuICogQHJldHVybnMgVGhlIHRlbXBvcmFyeSB2YXVsdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRlbXBWYXVsdCgpOiBUZW1wVmF1bHQge1xuICBjb25zdCB0ZW1wVmF1bHRQYXRoID0gaW5qZWN0KCd0ZW1wVmF1bHRQYXRoJyk7XG4gIGNvbnN0IHNldHVwRXJyb3JNZXNzYWdlID0gaW5qZWN0KCdzZXR1cEVycm9yJyk7XG4gIGlmIChzZXR1cEVycm9yTWVzc2FnZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW50ZWdyYXRpb24gc2V0dXAgZmFpbGVkIFx1MjAxNCBjYW5ub3QgZ2V0IHRlbXAgdmF1bHQ6ICR7c2V0dXBFcnJvck1lc3NhZ2V9YCk7XG4gIH1cbiAgcmV0dXJuIG5ldyBUZW1wVmF1bHQodGVtcFZhdWx0UGF0aCk7XG59XG5cbmNvbnN0IGRlZmF1bHRHbG9iYWxTZXR1cCA9IGNyZWF0ZVNldHVwKCk7XG5cbi8qKlxuICogVml0ZXN0IGdsb2JhbCBzZXR1cCBmdW5jdGlvbiAobm8gcHJlLXBvcHVsYXRpb24pLlxuICpcbiAqIENvcGllcyB0aGUgYnVpbHQgcGx1Z2luIGludG8gYSB0ZW1wb3JhcnkgdmF1bHQsIGVuYWJsZXMgaXQgdmlhIHRoZSBPYnNpZGlhbiBDTEksXG4gKiBhbmQgcHJvdmlkZXMgYHRlbXBWYXVsdFBhdGhgIHRvIHRlc3RzLlxuICpcbiAqIEBwYXJhbSBwcm9qZWN0IC0gVGhlIFZpdGVzdCBwcm9qZWN0LlxuICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBzZXR1cCBjb21wbGV0ZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXR1cCA9IGRlZmF1bHRHbG9iYWxTZXR1cC5zZXR1cDtcblxuLyoqXG4gKiBWaXRlc3QgZ2xvYmFsIHRlYXJkb3duIGZ1bmN0aW9uLlxuICpcbiAqIFJlbW92ZXMgdGhlIHRlbXBvcmFyeSB2YXVsdCBjcmVhdGVkIGR1cmluZyBzZXR1cC5cbiAqXG4gKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB3aGVuIHRlYXJkb3duIGNvbXBsZXRlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHRlYXJkb3duID0gZGVmYXVsdEdsb2JhbFNldHVwLnRlYXJkb3duO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWFBLG9CQUF1QjtBQU12Qiw4QkFHTztBQUNQLDZCQUE4QjtBQUM5QiwrQkFHTztBQUNQLGlCQUFvQjtBQUNwQix3QkFBMEI7QUFBQSxJQUUxQixxREFBNEIsVUFBTSxzQkFBTyxtQkFBbUIsQ0FBQztBQUFBLElBQzdELDhDQUFxQixVQUFNLHNCQUFPLGVBQWUsQ0FBQztBQTBDM0MsU0FBUyxZQUFZLFNBQWlEO0FBQzNFLE1BQUk7QUFFSixTQUFPLEVBQUUsT0FBQUEsUUFBTyxVQUFBQyxVQUFTO0FBRXpCLGlCQUFlRCxPQUFNLFNBQXFDO0FBQ3hELFVBQU0scUJBQXFCLFFBQVEsT0FBTztBQUMxQyxVQUFNLG1CQUFtQixxQkFBcUIsbUJBQW1CO0FBQ2pFLFVBQU0sUUFBUSxrQkFBa0IsUUFBUTtBQUV4QyxRQUFJO0FBQ0Ysb0JBQWMsVUFBTSxvQ0FBVSxFQUFFLGVBQWUsU0FBUyxlQUFlLFVBQVUsU0FBUyxXQUFXLEdBQUcsaUJBQWlCLENBQUM7QUFBQSxJQUM1SCxTQUFTLE9BQWdCO0FBSXZCLDBCQUFJLHNCQUFzQixLQUFLLGdFQUE0RCxzQ0FBYyxLQUFLLENBQUMsRUFBRTtBQUNqSCxjQUFRLFFBQVEsa0JBQWMsc0NBQWMsS0FBSyxDQUFDO0FBQ2xEO0FBQUEsSUFDRjtBQUVBLFlBQVEsUUFBUSxxQkFBcUIsWUFBWSxnQkFBZ0I7QUFDakUsWUFBUSxRQUFRLGlCQUFpQixZQUFZLFVBQVUsSUFBSTtBQUFBLEVBQzdEO0FBRUEsaUJBQWVDLFlBQTBCO0FBQ3ZDLGNBQU0sdUNBQWEsV0FBVztBQUFBLEVBQ2hDO0FBQ0Y7QUFPTyxTQUFTLGVBQTBCO0FBQ3hDLFFBQU0sb0JBQWdCLHNCQUFPLGVBQWU7QUFDNUMsUUFBTSx3QkFBb0Isc0JBQU8sWUFBWTtBQUM3QyxNQUFJLG1CQUFtQjtBQUNyQixVQUFNLElBQUksTUFBTSwwREFBcUQsaUJBQWlCLEVBQUU7QUFBQSxFQUMxRjtBQUNBLFNBQU8sSUFBSSw0QkFBVSxhQUFhO0FBQ3BDO0FBRUEsTUFBTSxxQkFBcUIsWUFBWTtBQVdoQyxNQUFNLFFBQVEsbUJBQW1CO0FBU2pDLE1BQU0sV0FBVyxtQkFBbUI7IiwKICAibmFtZXMiOiBbInNldHVwIiwgInRlYXJkb3duIl0KfQo=
@@ -13,6 +13,15 @@ import { TempVault } from '../temp-vault.cjs';
13
13
  * Options for {@link createSetup}.
14
14
  */
15
15
  export interface CreateSetupOptions {
16
+ /**
17
+ * Whether to install and enable the built plugin in the temp vault. Defaults
18
+ * to `true`. Set to `false` for a **non-plugin** consumer that only needs a
19
+ * registered, empty vault to `evalInObsidian` against — the owned instance is
20
+ * still launched and its endpoint published to workers, so re-exporting
21
+ * `createSetup({ installPlugin: false })` reuses the same attach wiring with no
22
+ * plugin copy/enable. See {@link CoreSetupParams.installPlugin}.
23
+ */
24
+ readonly installPlugin?: boolean;
16
25
  /**
17
26
  * Returns files/folders to write into the vault before Obsidian opens it (see
18
27
  * {@link CoreSetupParams.populate}). A thunk so large fixtures are built lazily,
@@ -31,7 +40,8 @@ export interface VitestGlobalSetup {
31
40
  * Creates a Vitest global setup/teardown pair, optionally pre-populating the vault
32
41
  * before Obsidian opens it — use this for a dedicated large-vault/performance
33
42
  * project. The plain {@link setup} / {@link teardown} exports are the no-populate
34
- * case (`createSetup()`).
43
+ * case (`createSetup()`). Pass `{ installPlugin: false }` for a non-plugin consumer
44
+ * that only needs a registered, empty vault (see {@link CreateSetupOptions.installPlugin}).
35
45
  *
36
46
  * @param options - Setup options.
37
47
  * @returns The `setup` and `teardown` functions to re-export from a `globalSetup` module.
@@ -0,0 +1,75 @@
1
+ /**
2
+ * @file
3
+ *
4
+ * Pure verdict on whether a booted owned Obsidian instance is actually running
5
+ * the pinned app (asar) version, or **silently fell back** to the installer's own
6
+ * bundled asar. Kept separate from the integration-only `transport-desktop-cdp`
7
+ * (which reads the live version over CDP and is excluded from unit tests) so the
8
+ * tier logic stays unit-testable — mirroring the `installer-compatibility` /
9
+ * `electron-compatibility` / `renderer-boot-detection` split.
10
+ *
11
+ * When an asar is swapped onto an installer shell below its real boot floor, the
12
+ * renderer does not always dead-boot (the black screen `renderer-boot-detection`
13
+ * catches). Some app versions instead **silently revert to the installer's own
14
+ * bundled asar** and render a perfectly healthy UI of the *wrong (older)* version.
15
+ * The dead-boot detector reads that healthy UI as a false-positive "runnable" —
16
+ * exactly how Obsidian `1.13.0` on installer `1.1.9` was first mis-measured (it
17
+ * reports `apiVersion` `1.1.9`, not `1.13.0`).
18
+ *
19
+ * The discriminator is the **running** app version, read live post-boot
20
+ * (`ipcRenderer.sendSync('version')` / `obsidianModule.apiVersion`, which both
21
+ * track the asar actually running). This verdict compares it to the pinned
22
+ * version: equal ⇒ `'match'`, different ⇒ `'fallback'` (the pin was not honored),
23
+ * and `'unknown'` when either version is unavailable (no asar was swapped, or the
24
+ * live version could not be read) — in which case nothing is thrown or warned.
25
+ */
26
+ /**
27
+ * The silent-asar-fallback verdict for a booted owned instance, carried as data
28
+ * on the transport / connection result so consumers can assert on it.
29
+ */
30
+ export interface AsarFallback {
31
+ /** A human-readable explanation, present for the `'fallback'` tier. */
32
+ readonly message?: string;
33
+ /** The pinned app (asar) version that was requested, or `null` when none. */
34
+ readonly requestedVersion: null | string;
35
+ /** The app (asar) version actually running, or `null` when unreadable. */
36
+ readonly runningApiVersion: null | string;
37
+ /** The resolved fallback tier. */
38
+ readonly tier: AsarFallbackTier;
39
+ }
40
+ /**
41
+ * The silent-asar-fallback tier for a booted owned instance.
42
+ *
43
+ * - `'match'` — the running app version equals the pinned version; the pin was
44
+ * honored.
45
+ * - `'fallback'` — the running app version differs from the pinned version; the
46
+ * installer silently ran a different (its own bundled) asar instead of the pin.
47
+ * - `'unknown'` — cannot be determined (no asar was swapped, so there is no pin to
48
+ * verify, or the live running version could not be read).
49
+ */
50
+ export type AsarFallbackTier = 'fallback' | 'match' | 'unknown';
51
+ /**
52
+ * Parameters for {@link checkAsarFallback}.
53
+ */
54
+ export interface CheckAsarFallbackParams {
55
+ /**
56
+ * The pinned Obsidian app (asar) version the owned instance was asked to run,
57
+ * or `undefined` when no asar was swapped (so there is nothing to verify).
58
+ */
59
+ readonly requestedVersion: string | undefined;
60
+ /**
61
+ * The Obsidian app (asar) version the instance is actually running, read live
62
+ * post-boot, or `undefined` when it could not be read.
63
+ */
64
+ readonly runningApiVersion: string | undefined;
65
+ }
66
+ /**
67
+ * Computes the silent-asar-fallback verdict for a booted owned instance.
68
+ *
69
+ * Only `'fallback'` warrants action (a throw / warning); `'match'` and `'unknown'`
70
+ * are silent. Comparison is a pure `x.y.z` version compare — no I/O.
71
+ *
72
+ * @param params - The pinned version and the live running version.
73
+ * @returns The fallback verdict.
74
+ */
75
+ export declare function checkAsarFallback(params: CheckAsarFallbackParams): AsarFallback;
@@ -0,0 +1,24 @@
1
+ import { compareVersions } from "./obsidian-version.mjs";
2
+ function checkAsarFallback(params) {
3
+ const { requestedVersion, runningApiVersion } = params;
4
+ if (requestedVersion === void 0 || runningApiVersion === void 0) {
5
+ return {
6
+ requestedVersion: requestedVersion ?? null,
7
+ runningApiVersion: runningApiVersion ?? null,
8
+ tier: "unknown"
9
+ };
10
+ }
11
+ if (compareVersions(runningApiVersion, requestedVersion) === 0) {
12
+ return { requestedVersion, runningApiVersion, tier: "match" };
13
+ }
14
+ return {
15
+ message: `Obsidian was pinned to app version ${requestedVersion} but is actually running ${runningApiVersion} \u2014 the installer silently fell back to its own bundled asar instead of running the pinned version. Pin an obsidianInstallerVersion at or above ${requestedVersion}'s run floor so the pin actually runs.`,
16
+ requestedVersion,
17
+ runningApiVersion,
18
+ tier: "fallback"
19
+ };
20
+ }
21
+ export {
22
+ checkAsarFallback
23
+ };
24
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FzYXItZmFsbGJhY2stZGV0ZWN0aW9uLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHVyZSB2ZXJkaWN0IG9uIHdoZXRoZXIgYSBib290ZWQgb3duZWQgT2JzaWRpYW4gaW5zdGFuY2UgaXMgYWN0dWFsbHkgcnVubmluZ1xuICogdGhlIHBpbm5lZCBhcHAgKGFzYXIpIHZlcnNpb24sIG9yICoqc2lsZW50bHkgZmVsbCBiYWNrKiogdG8gdGhlIGluc3RhbGxlcidzIG93blxuICogYnVuZGxlZCBhc2FyLiBLZXB0IHNlcGFyYXRlIGZyb20gdGhlIGludGVncmF0aW9uLW9ubHkgYHRyYW5zcG9ydC1kZXNrdG9wLWNkcGBcbiAqICh3aGljaCByZWFkcyB0aGUgbGl2ZSB2ZXJzaW9uIG92ZXIgQ0RQIGFuZCBpcyBleGNsdWRlZCBmcm9tIHVuaXQgdGVzdHMpIHNvIHRoZVxuICogdGllciBsb2dpYyBzdGF5cyB1bml0LXRlc3RhYmxlIFx1MjAxNCBtaXJyb3JpbmcgdGhlIGBpbnN0YWxsZXItY29tcGF0aWJpbGl0eWAgL1xuICogYGVsZWN0cm9uLWNvbXBhdGliaWxpdHlgIC8gYHJlbmRlcmVyLWJvb3QtZGV0ZWN0aW9uYCBzcGxpdC5cbiAqXG4gKiBXaGVuIGFuIGFzYXIgaXMgc3dhcHBlZCBvbnRvIGFuIGluc3RhbGxlciBzaGVsbCBiZWxvdyBpdHMgcmVhbCBib290IGZsb29yLCB0aGVcbiAqIHJlbmRlcmVyIGRvZXMgbm90IGFsd2F5cyBkZWFkLWJvb3QgKHRoZSBibGFjayBzY3JlZW4gYHJlbmRlcmVyLWJvb3QtZGV0ZWN0aW9uYFxuICogY2F0Y2hlcykuIFNvbWUgYXBwIHZlcnNpb25zIGluc3RlYWQgKipzaWxlbnRseSByZXZlcnQgdG8gdGhlIGluc3RhbGxlcidzIG93blxuICogYnVuZGxlZCBhc2FyKiogYW5kIHJlbmRlciBhIHBlcmZlY3RseSBoZWFsdGh5IFVJIG9mIHRoZSAqd3JvbmcgKG9sZGVyKSogdmVyc2lvbi5cbiAqIFRoZSBkZWFkLWJvb3QgZGV0ZWN0b3IgcmVhZHMgdGhhdCBoZWFsdGh5IFVJIGFzIGEgZmFsc2UtcG9zaXRpdmUgXCJydW5uYWJsZVwiIFx1MjAxNFxuICogZXhhY3RseSBob3cgT2JzaWRpYW4gYDEuMTMuMGAgb24gaW5zdGFsbGVyIGAxLjEuOWAgd2FzIGZpcnN0IG1pcy1tZWFzdXJlZCAoaXRcbiAqIHJlcG9ydHMgYGFwaVZlcnNpb25gIGAxLjEuOWAsIG5vdCBgMS4xMy4wYCkuXG4gKlxuICogVGhlIGRpc2NyaW1pbmF0b3IgaXMgdGhlICoqcnVubmluZyoqIGFwcCB2ZXJzaW9uLCByZWFkIGxpdmUgcG9zdC1ib290XG4gKiAoYGlwY1JlbmRlcmVyLnNlbmRTeW5jKCd2ZXJzaW9uJylgIC8gYG9ic2lkaWFuTW9kdWxlLmFwaVZlcnNpb25gLCB3aGljaCBib3RoXG4gKiB0cmFjayB0aGUgYXNhciBhY3R1YWxseSBydW5uaW5nKS4gVGhpcyB2ZXJkaWN0IGNvbXBhcmVzIGl0IHRvIHRoZSBwaW5uZWRcbiAqIHZlcnNpb246IGVxdWFsIFx1MjFEMiBgJ21hdGNoJ2AsIGRpZmZlcmVudCBcdTIxRDIgYCdmYWxsYmFjaydgICh0aGUgcGluIHdhcyBub3QgaG9ub3JlZCksXG4gKiBhbmQgYCd1bmtub3duJ2Agd2hlbiBlaXRoZXIgdmVyc2lvbiBpcyB1bmF2YWlsYWJsZSAobm8gYXNhciB3YXMgc3dhcHBlZCwgb3IgdGhlXG4gKiBsaXZlIHZlcnNpb24gY291bGQgbm90IGJlIHJlYWQpIFx1MjAxNCBpbiB3aGljaCBjYXNlIG5vdGhpbmcgaXMgdGhyb3duIG9yIHdhcm5lZC5cbiAqL1xuXG5pbXBvcnQgeyBjb21wYXJlVmVyc2lvbnMgfSBmcm9tICcuL29ic2lkaWFuLXZlcnNpb24ubWpzJztcblxuLyoqXG4gKiBUaGUgc2lsZW50LWFzYXItZmFsbGJhY2sgdmVyZGljdCBmb3IgYSBib290ZWQgb3duZWQgaW5zdGFuY2UsIGNhcnJpZWQgYXMgZGF0YVxuICogb24gdGhlIHRyYW5zcG9ydCAvIGNvbm5lY3Rpb24gcmVzdWx0IHNvIGNvbnN1bWVycyBjYW4gYXNzZXJ0IG9uIGl0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFzYXJGYWxsYmFjayB7XG4gIC8qKiBBIGh1bWFuLXJlYWRhYmxlIGV4cGxhbmF0aW9uLCBwcmVzZW50IGZvciB0aGUgYCdmYWxsYmFjaydgIHRpZXIuICovXG4gIHJlYWRvbmx5IG1lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBwaW5uZWQgYXBwIChhc2FyKSB2ZXJzaW9uIHRoYXQgd2FzIHJlcXVlc3RlZCwgb3IgYG51bGxgIHdoZW4gbm9uZS4gKi9cbiAgcmVhZG9ubHkgcmVxdWVzdGVkVmVyc2lvbjogbnVsbCB8IHN0cmluZztcblxuICAvKiogVGhlIGFwcCAoYXNhcikgdmVyc2lvbiBhY3R1YWxseSBydW5uaW5nLCBvciBgbnVsbGAgd2hlbiB1bnJlYWRhYmxlLiAqL1xuICByZWFkb25seSBydW5uaW5nQXBpVmVyc2lvbjogbnVsbCB8IHN0cmluZztcblxuICAvKiogVGhlIHJlc29sdmVkIGZhbGxiYWNrIHRpZXIuICovXG4gIHJlYWRvbmx5IHRpZXI6IEFzYXJGYWxsYmFja1RpZXI7XG59XG5cbi8qKlxuICogVGhlIHNpbGVudC1hc2FyLWZhbGxiYWNrIHRpZXIgZm9yIGEgYm9vdGVkIG93bmVkIGluc3RhbmNlLlxuICpcbiAqIC0gYCdtYXRjaCdgIFx1MjAxNCB0aGUgcnVubmluZyBhcHAgdmVyc2lvbiBlcXVhbHMgdGhlIHBpbm5lZCB2ZXJzaW9uOyB0aGUgcGluIHdhc1xuICogICBob25vcmVkLlxuICogLSBgJ2ZhbGxiYWNrJ2AgXHUyMDE0IHRoZSBydW5uaW5nIGFwcCB2ZXJzaW9uIGRpZmZlcnMgZnJvbSB0aGUgcGlubmVkIHZlcnNpb247IHRoZVxuICogICBpbnN0YWxsZXIgc2lsZW50bHkgcmFuIGEgZGlmZmVyZW50IChpdHMgb3duIGJ1bmRsZWQpIGFzYXIgaW5zdGVhZCBvZiB0aGUgcGluLlxuICogLSBgJ3Vua25vd24nYCBcdTIwMTQgY2Fubm90IGJlIGRldGVybWluZWQgKG5vIGFzYXIgd2FzIHN3YXBwZWQsIHNvIHRoZXJlIGlzIG5vIHBpbiB0b1xuICogICB2ZXJpZnksIG9yIHRoZSBsaXZlIHJ1bm5pbmcgdmVyc2lvbiBjb3VsZCBub3QgYmUgcmVhZCkuXG4gKi9cbmV4cG9ydCB0eXBlIEFzYXJGYWxsYmFja1RpZXIgPSAnZmFsbGJhY2snIHwgJ21hdGNoJyB8ICd1bmtub3duJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY2hlY2tBc2FyRmFsbGJhY2t9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrQXNhckZhbGxiYWNrUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBwaW5uZWQgT2JzaWRpYW4gYXBwIChhc2FyKSB2ZXJzaW9uIHRoZSBvd25lZCBpbnN0YW5jZSB3YXMgYXNrZWQgdG8gcnVuLFxuICAgKiBvciBgdW5kZWZpbmVkYCB3aGVuIG5vIGFzYXIgd2FzIHN3YXBwZWQgKHNvIHRoZXJlIGlzIG5vdGhpbmcgdG8gdmVyaWZ5KS5cbiAgICovXG4gIHJlYWRvbmx5IHJlcXVlc3RlZFZlcnNpb246IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCAoYXNhcikgdmVyc2lvbiB0aGUgaW5zdGFuY2UgaXMgYWN0dWFsbHkgcnVubmluZywgcmVhZCBsaXZlXG4gICAqIHBvc3QtYm9vdCwgb3IgYHVuZGVmaW5lZGAgd2hlbiBpdCBjb3VsZCBub3QgYmUgcmVhZC5cbiAgICovXG4gIHJlYWRvbmx5IHJ1bm5pbmdBcGlWZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIHNpbGVudC1hc2FyLWZhbGxiYWNrIHZlcmRpY3QgZm9yIGEgYm9vdGVkIG93bmVkIGluc3RhbmNlLlxuICpcbiAqIE9ubHkgYCdmYWxsYmFjaydgIHdhcnJhbnRzIGFjdGlvbiAoYSB0aHJvdyAvIHdhcm5pbmcpOyBgJ21hdGNoJ2AgYW5kIGAndW5rbm93bidgXG4gKiBhcmUgc2lsZW50LiBDb21wYXJpc29uIGlzIGEgcHVyZSBgeC55LnpgIHZlcnNpb24gY29tcGFyZSBcdTIwMTQgbm8gSS9PLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGlubmVkIHZlcnNpb24gYW5kIHRoZSBsaXZlIHJ1bm5pbmcgdmVyc2lvbi5cbiAqIEByZXR1cm5zIFRoZSBmYWxsYmFjayB2ZXJkaWN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tBc2FyRmFsbGJhY2socGFyYW1zOiBDaGVja0FzYXJGYWxsYmFja1BhcmFtcyk6IEFzYXJGYWxsYmFjayB7XG4gIGNvbnN0IHsgcmVxdWVzdGVkVmVyc2lvbiwgcnVubmluZ0FwaVZlcnNpb24gfSA9IHBhcmFtcztcblxuICBpZiAocmVxdWVzdGVkVmVyc2lvbiA9PT0gdW5kZWZpbmVkIHx8IHJ1bm5pbmdBcGlWZXJzaW9uID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVxdWVzdGVkVmVyc2lvbjogcmVxdWVzdGVkVmVyc2lvbiA/PyBudWxsLFxuICAgICAgcnVubmluZ0FwaVZlcnNpb246IHJ1bm5pbmdBcGlWZXJzaW9uID8/IG51bGwsXG4gICAgICB0aWVyOiAndW5rbm93bidcbiAgICB9O1xuICB9XG5cbiAgaWYgKGNvbXBhcmVWZXJzaW9ucyhydW5uaW5nQXBpVmVyc2lvbiwgcmVxdWVzdGVkVmVyc2lvbikgPT09IDApIHtcbiAgICByZXR1cm4geyByZXF1ZXN0ZWRWZXJzaW9uLCBydW5uaW5nQXBpVmVyc2lvbiwgdGllcjogJ21hdGNoJyB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiBgT2JzaWRpYW4gd2FzIHBpbm5lZCB0byBhcHAgdmVyc2lvbiAke3JlcXVlc3RlZFZlcnNpb259IGJ1dCBpcyBhY3R1YWxseSBydW5uaW5nICR7cnVubmluZ0FwaVZlcnNpb259IFx1MjAxNCBgXG4gICAgICArICd0aGUgaW5zdGFsbGVyIHNpbGVudGx5IGZlbGwgYmFjayB0byBpdHMgb3duIGJ1bmRsZWQgYXNhciBpbnN0ZWFkIG9mIHJ1bm5pbmcgdGhlIHBpbm5lZCB2ZXJzaW9uLiAnXG4gICAgICArIGBQaW4gYW4gb2JzaWRpYW5JbnN0YWxsZXJWZXJzaW9uIGF0IG9yIGFib3ZlICR7cmVxdWVzdGVkVmVyc2lvbn0ncyBydW4gZmxvb3Igc28gdGhlIHBpbiBhY3R1YWxseSBydW5zLmAsXG4gICAgcmVxdWVzdGVkVmVyc2lvbixcbiAgICBydW5uaW5nQXBpVmVyc2lvbixcbiAgICB0aWVyOiAnZmFsbGJhY2snXG4gIH07XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUEwQkEsU0FBUyx1QkFBdUI7QUEwRHpCLFNBQVMsa0JBQWtCLFFBQStDO0FBQy9FLFFBQU0sRUFBRSxrQkFBa0Isa0JBQWtCLElBQUk7QUFFaEQsTUFBSSxxQkFBcUIsVUFBYSxzQkFBc0IsUUFBVztBQUNyRSxXQUFPO0FBQUEsTUFDTCxrQkFBa0Isb0JBQW9CO0FBQUEsTUFDdEMsbUJBQW1CLHFCQUFxQjtBQUFBLE1BQ3hDLE1BQU07QUFBQSxJQUNSO0FBQUEsRUFDRjtBQUVBLE1BQUksZ0JBQWdCLG1CQUFtQixnQkFBZ0IsTUFBTSxHQUFHO0FBQzlELFdBQU8sRUFBRSxrQkFBa0IsbUJBQW1CLE1BQU0sUUFBUTtBQUFBLEVBQzlEO0FBRUEsU0FBTztBQUFBLElBQ0wsU0FBUyxzQ0FBc0MsZ0JBQWdCLDRCQUE0QixpQkFBaUIsdUpBRXpELGdCQUFnQjtBQUFBLElBQ25FO0FBQUEsSUFDQTtBQUFBLElBQ0EsTUFBTTtBQUFBLEVBQ1I7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @file
3
+ *
4
+ * Pure helpers for parsing `emulator -list-avds` output: extracting the
5
+ * available AVD names and checking whether a requested AVD exists.
6
+ *
7
+ * Kept separate from the integration-only `transport-factory` (excluded from
8
+ * unit tests) so the parsing stays unit-testable — the factory itself shells out
9
+ * to the `emulator` binary.
10
+ */
11
+ /**
12
+ * Parameters for {@link checkAvdExists}.
13
+ */
14
+ export interface CheckAvdExistsParams {
15
+ /** Raw stdout of `emulator -list-avds` — one AVD name per line. */
16
+ readonly avdListOutput: string;
17
+ /** The AVD name to look for. */
18
+ readonly avdName: string;
19
+ }
20
+ /**
21
+ * Decides whether a given AVD exists, from the raw stdout of
22
+ * `emulator -list-avds`.
23
+ *
24
+ * @param params - The listing output and the AVD name to check.
25
+ * @returns `true` when the AVD name appears in the listing.
26
+ */
27
+ export declare function checkAvdExists(params: CheckAvdExistsParams): boolean;
28
+ /**
29
+ * Parses the available AVD names from the raw stdout of `emulator -list-avds`.
30
+ *
31
+ * The command prints one AVD name per line; blank lines and surrounding
32
+ * whitespace are ignored. Some emulator builds emit an informational banner
33
+ * (e.g. `INFO | ...`) to stdout before the list, so those lines are dropped.
34
+ *
35
+ * @param avdListOutput - Raw stdout of `emulator -list-avds`.
36
+ * @returns The available AVD names, in listed order.
37
+ */
38
+ export declare function listAvailableAvds(avdListOutput: string): string[];
@@ -0,0 +1,11 @@
1
+ function checkAvdExists(params) {
2
+ return listAvailableAvds(params.avdListOutput).includes(params.avdName);
3
+ }
4
+ function listAvailableAvds(avdListOutput) {
5
+ return avdListOutput.split("\n").map((line) => line.trim()).filter((line) => line.length > 0 && !line.includes("|"));
6
+ }
7
+ export {
8
+ checkAvdExists,
9
+ listAvailableAvds
10
+ };
11
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2F2ZC1saXN0LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogUHVyZSBoZWxwZXJzIGZvciBwYXJzaW5nIGBlbXVsYXRvciAtbGlzdC1hdmRzYCBvdXRwdXQ6IGV4dHJhY3RpbmcgdGhlXG4gKiBhdmFpbGFibGUgQVZEIG5hbWVzIGFuZCBjaGVja2luZyB3aGV0aGVyIGEgcmVxdWVzdGVkIEFWRCBleGlzdHMuXG4gKlxuICogS2VwdCBzZXBhcmF0ZSBmcm9tIHRoZSBpbnRlZ3JhdGlvbi1vbmx5IGB0cmFuc3BvcnQtZmFjdG9yeWAgKGV4Y2x1ZGVkIGZyb21cbiAqIHVuaXQgdGVzdHMpIHNvIHRoZSBwYXJzaW5nIHN0YXlzIHVuaXQtdGVzdGFibGUgXHUyMDE0IHRoZSBmYWN0b3J5IGl0c2VsZiBzaGVsbHMgb3V0XG4gKiB0byB0aGUgYGVtdWxhdG9yYCBiaW5hcnkuXG4gKi9cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgY2hlY2tBdmRFeGlzdHN9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrQXZkRXhpc3RzUGFyYW1zIHtcbiAgLyoqIFJhdyBzdGRvdXQgb2YgYGVtdWxhdG9yIC1saXN0LWF2ZHNgIFx1MjAxNCBvbmUgQVZEIG5hbWUgcGVyIGxpbmUuICovXG4gIHJlYWRvbmx5IGF2ZExpc3RPdXRwdXQ6IHN0cmluZztcblxuICAvKiogVGhlIEFWRCBuYW1lIHRvIGxvb2sgZm9yLiAqL1xuICByZWFkb25seSBhdmROYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVjaWRlcyB3aGV0aGVyIGEgZ2l2ZW4gQVZEIGV4aXN0cywgZnJvbSB0aGUgcmF3IHN0ZG91dCBvZlxuICogYGVtdWxhdG9yIC1saXN0LWF2ZHNgLlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgbGlzdGluZyBvdXRwdXQgYW5kIHRoZSBBVkQgbmFtZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSBBVkQgbmFtZSBhcHBlYXJzIGluIHRoZSBsaXN0aW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tBdmRFeGlzdHMocGFyYW1zOiBDaGVja0F2ZEV4aXN0c1BhcmFtcyk6IGJvb2xlYW4ge1xuICByZXR1cm4gbGlzdEF2YWlsYWJsZUF2ZHMocGFyYW1zLmF2ZExpc3RPdXRwdXQpLmluY2x1ZGVzKHBhcmFtcy5hdmROYW1lKTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIGF2YWlsYWJsZSBBVkQgbmFtZXMgZnJvbSB0aGUgcmF3IHN0ZG91dCBvZiBgZW11bGF0b3IgLWxpc3QtYXZkc2AuXG4gKlxuICogVGhlIGNvbW1hbmQgcHJpbnRzIG9uZSBBVkQgbmFtZSBwZXIgbGluZTsgYmxhbmsgbGluZXMgYW5kIHN1cnJvdW5kaW5nXG4gKiB3aGl0ZXNwYWNlIGFyZSBpZ25vcmVkLiBTb21lIGVtdWxhdG9yIGJ1aWxkcyBlbWl0IGFuIGluZm9ybWF0aW9uYWwgYmFubmVyXG4gKiAoZS5nLiBgSU5GTyAgICB8IC4uLmApIHRvIHN0ZG91dCBiZWZvcmUgdGhlIGxpc3QsIHNvIHRob3NlIGxpbmVzIGFyZSBkcm9wcGVkLlxuICpcbiAqIEBwYXJhbSBhdmRMaXN0T3V0cHV0IC0gUmF3IHN0ZG91dCBvZiBgZW11bGF0b3IgLWxpc3QtYXZkc2AuXG4gKiBAcmV0dXJucyBUaGUgYXZhaWxhYmxlIEFWRCBuYW1lcywgaW4gbGlzdGVkIG9yZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbGlzdEF2YWlsYWJsZUF2ZHMoYXZkTGlzdE91dHB1dDogc3RyaW5nKTogc3RyaW5nW10ge1xuICByZXR1cm4gYXZkTGlzdE91dHB1dFxuICAgIC5zcGxpdCgnXFxuJylcbiAgICAubWFwKChsaW5lKSA9PiBsaW5lLnRyaW0oKSlcbiAgICAuZmlsdGVyKChsaW5lKSA9PiBsaW5lLmxlbmd0aCA+IDAgJiYgIWxpbmUuaW5jbHVkZXMoJ3wnKSk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiQUE2Qk8sU0FBUyxlQUFlLFFBQXVDO0FBQ3BFLFNBQU8sa0JBQWtCLE9BQU8sYUFBYSxFQUFFLFNBQVMsT0FBTyxPQUFPO0FBQ3hFO0FBWU8sU0FBUyxrQkFBa0IsZUFBaUM7QUFDakUsU0FBTyxjQUNKLE1BQU0sSUFBSSxFQUNWLElBQUksQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLEVBQ3pCLE9BQU8sQ0FBQyxTQUFTLEtBQUssU0FBUyxLQUFLLENBQUMsS0FBSyxTQUFTLEdBQUcsQ0FBQztBQUM1RDsiLAogICJuYW1lcyI6IFtdCn0K
@@ -18,7 +18,20 @@
18
18
  * resolution stays unit-testable — mirroring the `visibility.ts` /
19
19
  * `appium-session-config.ts` pure-resolver split.
20
20
  */
21
+ import type { AsarFallbackTier } from './asar-fallback-detection.mjs';
21
22
  import type { InstallerCompatibilityTier } from './installer-compatibility.mjs';
23
+ /**
24
+ * The action to take for a resolved silent-asar-fallback verdict, given the
25
+ * throw/warn knobs.
26
+ *
27
+ * - `'throw'` — the verdict is `'fallback'` and the throw is enabled; the caller
28
+ * throws `SilentAsarFallbackError`.
29
+ * - `'warn'` — the verdict is `'fallback'` but the throw is disabled and warnings
30
+ * are on; the caller logs the fallback warning and lets the boot proceed (the
31
+ * verdict is still surfaced as data).
32
+ * - `'silent'` — nothing to do (`'match'` / `'unknown'`, or a suppressed fallback).
33
+ */
34
+ export type AsarFallbackAction = 'silent' | 'throw' | 'warn';
22
35
  /**
23
36
  * The action to take for a resolved installer↔app compatibility verdict, given
24
37
  * the throw/warn knobs.
@@ -33,6 +46,17 @@ import type { InstallerCompatibilityTier } from './installer-compatibility.mjs';
33
46
  * - `'silent'` — nothing to do (`'ok'` / `'unknown'`, or warnings disabled).
34
47
  */
35
48
  export type InstallerCompatibilityAction = 'silent' | 'throw' | 'warn-nagged' | 'warn-unrunnable';
49
+ /**
50
+ * Parameters for {@link resolveAsarFallbackAction}.
51
+ */
52
+ export interface ResolveAsarFallbackActionParams {
53
+ /** Whether a `'fallback'` verdict throws (vs. proceeds with a warning). */
54
+ readonly shouldThrowOnSilentAsarFallback: boolean;
55
+ /** Whether a non-throwing fallback verdict is logged. */
56
+ readonly shouldWarnOnCompatibilityIssues: boolean;
57
+ /** The resolved silent-asar-fallback tier. */
58
+ readonly tier: AsarFallbackTier;
59
+ }
36
60
  /**
37
61
  * Parameters for {@link resolveInstallerCompatibilityAction}.
38
62
  */
@@ -44,6 +68,14 @@ export interface ResolveInstallerCompatibilityActionParams {
44
68
  /** The resolved installer↔app compatibility tier. */
45
69
  readonly tier: InstallerCompatibilityTier;
46
70
  }
71
+ /**
72
+ * Resolves what to do for a silent-asar-fallback verdict, given the throw/warn
73
+ * knobs. Pure — the caller performs the throw/log side effects.
74
+ *
75
+ * @param params - The verdict tier and the resolved throw/warn knobs.
76
+ * @returns The action the caller should take.
77
+ */
78
+ export declare function resolveAsarFallbackAction(params: ResolveAsarFallbackActionParams): AsarFallbackAction;
47
79
  /**
48
80
  * Resolves what to do for an installer↔app compatibility verdict, given the
49
81
  * throw/warn knobs. Pure — the caller performs the throw/log side effects.
@@ -60,6 +92,15 @@ export declare function resolveInstallerCompatibilityAction(params: ResolveInsta
60
92
  * @returns `true` when an unrunnable pin should throw (the default).
61
93
  */
62
94
  export declare function resolveShouldThrowOnIncompatibleInstaller(shouldThrowOnIncompatibleInstaller?: boolean): boolean;
95
+ /**
96
+ * Whether a booted owned instance running a different app (asar) version than the
97
+ * pin — a silent fallback to the installer's own bundled asar — should fail fast
98
+ * with {@link SilentAsarFallbackError}.
99
+ *
100
+ * @param shouldThrowOnSilentAsarFallback - The resolved option value (omitted → throw).
101
+ * @returns `true` when a silent fallback should throw (the default).
102
+ */
103
+ export declare function resolveShouldThrowOnSilentAsarFallback(shouldThrowOnSilentAsarFallback?: boolean): boolean;
63
104
  /**
64
105
  * Whether the owned-instance compatibility nag warnings should be emitted (both
65
106
  * the installer↔app `'nagged'` warning and the runtime-Electron `'nagged'`
@@ -1,3 +1,13 @@
1
+ function resolveAsarFallbackAction(params) {
2
+ const { shouldThrowOnSilentAsarFallback, shouldWarnOnCompatibilityIssues, tier } = params;
3
+ if (tier !== "fallback") {
4
+ return "silent";
5
+ }
6
+ if (shouldThrowOnSilentAsarFallback) {
7
+ return "throw";
8
+ }
9
+ return shouldWarnOnCompatibilityIssues ? "warn" : "silent";
10
+ }
1
11
  function resolveInstallerCompatibilityAction(params) {
2
12
  const { shouldThrowOnIncompatibleInstaller, shouldWarnOnCompatibilityIssues, tier } = params;
3
13
  if (tier === "unrunnable") {
@@ -14,12 +24,17 @@ function resolveInstallerCompatibilityAction(params) {
14
24
  function resolveShouldThrowOnIncompatibleInstaller(shouldThrowOnIncompatibleInstaller) {
15
25
  return shouldThrowOnIncompatibleInstaller ?? true;
16
26
  }
27
+ function resolveShouldThrowOnSilentAsarFallback(shouldThrowOnSilentAsarFallback) {
28
+ return shouldThrowOnSilentAsarFallback ?? true;
29
+ }
17
30
  function resolveShouldWarnOnCompatibilityIssues(shouldWarnOnCompatibilityIssues) {
18
31
  return shouldWarnOnCompatibilityIssues ?? true;
19
32
  }
20
33
  export {
34
+ resolveAsarFallbackAction,
21
35
  resolveInstallerCompatibilityAction,
22
36
  resolveShouldThrowOnIncompatibleInstaller,
37
+ resolveShouldThrowOnSilentAsarFallback,
23
38
  resolveShouldWarnOnCompatibilityIssues
24
39
  };
25
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbXBhdGliaWxpdHktb3B0aW9ucy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFB1cmUgcmVzb2x1dGlvbiBvZiB0aGUgdHdvIG93bmVkLWluc3RhbmNlIGNvbXBhdGliaWxpdHkga25vYnMgXHUyMDE0IHdoZXRoZXIgdGhlXG4gKiBpbnN0YWxsZXJcdTIxOTRhcHAgLyBydW50aW1lLUVsZWN0cm9uIG5hZyB3YXJuaW5ncyBhcmUgZW1pdHRlZCwgYW5kIHdoZXRoZXIgYW5cbiAqIGAndW5ydW5uYWJsZSdgIGluc3RhbGxlclx1MjE5NGFwcCBwYWlyIGZhaWxzIGZhc3Qgd2l0aFxuICoge0BsaW5rIEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvcn0gYmVmb3JlIGxhdW5jaC5cbiAqXG4gKiBCb3RoIGRlZmF1bHQgdG8gdG9kYXkncyBiZWhhdmlvciAoYHRydWVgKTogd2FybmluZ3Mgb24sIGFuZCBhbiB1bnJ1bm5hYmxlIHBpblxuICogdGhyb3dzIHByb2FjdGl2ZWx5LiBTZXR0aW5nIGBzaG91bGRXYXJuT25Db21wYXRpYmlsaXR5SXNzdWVzYCB0byBgZmFsc2VgXG4gKiBzaWxlbmNlcyBib3RoIG5hZ3MgKHRoZSB2ZXJkaWN0cyBhcmUgc3RpbGwgY29tcHV0ZWQgYW5kIHN1cmZhY2VkIGFzIGRhdGEpO1xuICogc2V0dGluZyBgc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlcmAgdG8gYGZhbHNlYCBsZXRzIGFuIHVucnVubmFibGUgcGluXG4gKiBwcm9jZWVkIHRvIGxhdW5jaCwgd2hlcmUgdGhlIHJlYWN0aXZlIGRlYWQtYm9vdCBmYXN0LWZhaWxcbiAqIChgUmVuZGVyZXJGYWlsZWRUb0luaXRpYWxpemVFcnJvcmApIHN0aWxsIGNhdGNoZXMgaXQuXG4gKlxuICogS2VwdCBzZXBhcmF0ZSBmcm9tIHRoZSBpbnRlZ3JhdGlvbi1vbmx5IGxhdW5jaCBjb2RlIChgdHJhbnNwb3J0LWZhY3RvcnlgLFxuICogYHRyYW5zcG9ydC1kZXNrdG9wLWNkcGAsIGJvdGggZXhjbHVkZWQgZnJvbSB1bml0IHRlc3RzKSBzbyB0aGUgZGVmYXVsdFxuICogcmVzb2x1dGlvbiBzdGF5cyB1bml0LXRlc3RhYmxlIFx1MjAxNCBtaXJyb3JpbmcgdGhlIGB2aXNpYmlsaXR5LnRzYCAvXG4gKiBgYXBwaXVtLXNlc3Npb24tY29uZmlnLnRzYCBwdXJlLXJlc29sdmVyIHNwbGl0LlxuICovXG5cbmltcG9ydCB0eXBlIHsgSW5zdGFsbGVyQ29tcGF0aWJpbGl0eVRpZXIgfSBmcm9tICcuL2luc3RhbGxlci1jb21wYXRpYmlsaXR5Lm1qcyc7XG5cbi8qKlxuICogVGhlIGFjdGlvbiB0byB0YWtlIGZvciBhIHJlc29sdmVkIGluc3RhbGxlclx1MjE5NGFwcCBjb21wYXRpYmlsaXR5IHZlcmRpY3QsIGdpdmVuXG4gKiB0aGUgdGhyb3cvd2FybiBrbm9icy5cbiAqXG4gKiAtIGAndGhyb3cnYCBcdTIwMTQgdGhlIHZlcmRpY3QgaXMgYCd1bnJ1bm5hYmxlJ2AgYW5kIHRoZSBwcm9hY3RpdmUgdGhyb3cgaXMgZW5hYmxlZDtcbiAqICAgdGhlIGNhbGxlciB0aHJvd3MgYEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvcmAgYmVmb3JlIGxhdW5jaC5cbiAqIC0gYCd3YXJuLXVucnVubmFibGUnYCBcdTIwMTQgdGhlIHZlcmRpY3QgaXMgYCd1bnJ1bm5hYmxlJ2AgYnV0IHRoZSB0aHJvdyBpcyBkaXNhYmxlZFxuICogICBhbmQgd2FybmluZ3MgYXJlIG9uOyB0aGUgY2FsbGVyIGxvZ3MgYSBcInByb2NlZWRpbmcgdG8gbGF1bmNoXCIgd2FybmluZyBhbmRcbiAqICAgbGV0cyB0aGUgYm9vdCBwcm9jZWVkICh3aGVyZSB0aGUgcmVhY3RpdmUgZGVhZC1ib290IGZhc3QtZmFpbCBjYXRjaGVzIGl0KS5cbiAqIC0gYCd3YXJuLW5hZ2dlZCdgIFx1MjAxNCB0aGUgdmVyZGljdCBpcyBgJ25hZ2dlZCdgIGFuZCB3YXJuaW5ncyBhcmUgb247IHRoZSBjYWxsZXJcbiAqICAgbG9ncyB0aGUgcmVjb21tZW5kZWQtaW5zdGFsbGVyIHdhcm5pbmcuXG4gKiAtIGAnc2lsZW50J2AgXHUyMDE0IG5vdGhpbmcgdG8gZG8gKGAnb2snYCAvIGAndW5rbm93bidgLCBvciB3YXJuaW5ncyBkaXNhYmxlZCkuXG4gKi9cbmV4cG9ydCB0eXBlIEluc3RhbGxlckNvbXBhdGliaWxpdHlBY3Rpb24gPSAnc2lsZW50JyB8ICd0aHJvdycgfCAnd2Fybi1uYWdnZWQnIHwgJ3dhcm4tdW5ydW5uYWJsZSc7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIHJlc29sdmVJbnN0YWxsZXJDb21wYXRpYmlsaXR5QWN0aW9ufS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlSW5zdGFsbGVyQ29tcGF0aWJpbGl0eUFjdGlvblBhcmFtcyB7XG4gIC8qKiBXaGV0aGVyIGFuIGAndW5ydW5uYWJsZSdgIHZlcmRpY3QgdGhyb3dzICh2cy4gcHJvY2VlZHMgdG8gbGF1bmNoKS4gKi9cbiAgcmVhZG9ubHkgc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlcjogYm9vbGVhbjtcblxuICAvKiogV2hldGhlciBhIG5hZyAvIHByb2NlZWRpbmctdW5ydW5uYWJsZSB2ZXJkaWN0IGlzIGxvZ2dlZC4gKi9cbiAgcmVhZG9ubHkgc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3VlczogYm9vbGVhbjtcblxuICAvKiogVGhlIHJlc29sdmVkIGluc3RhbGxlclx1MjE5NGFwcCBjb21wYXRpYmlsaXR5IHRpZXIuICovXG4gIHJlYWRvbmx5IHRpZXI6IEluc3RhbGxlckNvbXBhdGliaWxpdHlUaWVyO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHdoYXQgdG8gZG8gZm9yIGFuIGluc3RhbGxlclx1MjE5NGFwcCBjb21wYXRpYmlsaXR5IHZlcmRpY3QsIGdpdmVuIHRoZVxuICogdGhyb3cvd2FybiBrbm9icy4gUHVyZSBcdTIwMTQgdGhlIGNhbGxlciBwZXJmb3JtcyB0aGUgdGhyb3cvbG9nIHNpZGUgZWZmZWN0cy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHZlcmRpY3QgdGllciBhbmQgdGhlIHJlc29sdmVkIHRocm93L3dhcm4ga25vYnMuXG4gKiBAcmV0dXJucyBUaGUgYWN0aW9uIHRoZSBjYWxsZXIgc2hvdWxkIHRha2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlSW5zdGFsbGVyQ29tcGF0aWJpbGl0eUFjdGlvbihwYXJhbXM6IFJlc29sdmVJbnN0YWxsZXJDb21wYXRpYmlsaXR5QWN0aW9uUGFyYW1zKTogSW5zdGFsbGVyQ29tcGF0aWJpbGl0eUFjdGlvbiB7XG4gIGNvbnN0IHsgc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlciwgc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3VlcywgdGllciB9ID0gcGFyYW1zO1xuXG4gIGlmICh0aWVyID09PSAndW5ydW5uYWJsZScpIHtcbiAgICBpZiAoc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlcikge1xuICAgICAgcmV0dXJuICd0aHJvdyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXMgPyAnd2Fybi11bnJ1bm5hYmxlJyA6ICdzaWxlbnQnO1xuICB9XG5cbiAgaWYgKHRpZXIgPT09ICduYWdnZWQnKSB7XG4gICAgcmV0dXJuIHNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXMgPyAnd2Fybi1uYWdnZWQnIDogJ3NpbGVudCc7XG4gIH1cblxuICByZXR1cm4gJ3NpbGVudCc7XG59XG5cbi8qKlxuICogV2hldGhlciBhbiBgJ3VucnVubmFibGUnYCBpbnN0YWxsZXJcdTIxOTRhcHAgcGFpciBzaG91bGQgZmFpbCBmYXN0IHdpdGhcbiAqIHtAbGluayBJbmNvbXBhdGlibGVJbnN0YWxsZXJWZXJzaW9uRXJyb3J9IGJlZm9yZSBsYXVuY2guXG4gKlxuICogQHBhcmFtIHNob3VsZFRocm93T25JbmNvbXBhdGlibGVJbnN0YWxsZXIgLSBUaGUgcmVzb2x2ZWQgb3B0aW9uIHZhbHVlIChvbWl0dGVkIFx1MjE5MiB0aHJvdykuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiBhbiB1bnJ1bm5hYmxlIHBpbiBzaG91bGQgdGhyb3cgKHRoZSBkZWZhdWx0KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVTaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyKHNob3VsZFRocm93T25JbmNvbXBhdGlibGVJbnN0YWxsZXI/OiBib29sZWFuKTogYm9vbGVhbiB7XG4gIHJldHVybiBzaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyID8/IHRydWU7XG59XG5cbi8qKlxuICogV2hldGhlciB0aGUgb3duZWQtaW5zdGFuY2UgY29tcGF0aWJpbGl0eSBuYWcgd2FybmluZ3Mgc2hvdWxkIGJlIGVtaXR0ZWQgKGJvdGhcbiAqIHRoZSBpbnN0YWxsZXJcdTIxOTRhcHAgYCduYWdnZWQnYCB3YXJuaW5nIGFuZCB0aGUgcnVudGltZS1FbGVjdHJvbiBgJ25hZ2dlZCdgXG4gKiB3YXJuaW5nKS5cbiAqXG4gKiBAcGFyYW0gc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3VlcyAtIFRoZSByZXNvbHZlZCBvcHRpb24gdmFsdWUgKG9taXR0ZWQgXHUyMTkyIHdhcm4pLlxuICogQHJldHVybnMgYHRydWVgIHdoZW4gdGhlIHdhcm5pbmdzIHNob3VsZCBiZSBlbWl0dGVkICh0aGUgZGVmYXVsdCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlU2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3VlcyhzaG91bGRXYXJuT25Db21wYXRpYmlsaXR5SXNzdWVzPzogYm9vbGVhbik6IGJvb2xlYW4ge1xuICByZXR1cm4gc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3VlcyA/PyB0cnVlO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBMkRPLFNBQVMsb0NBQW9DLFFBQWlGO0FBQ25JLFFBQU0sRUFBRSxvQ0FBb0MsaUNBQWlDLEtBQUssSUFBSTtBQUV0RixNQUFJLFNBQVMsY0FBYztBQUN6QixRQUFJLG9DQUFvQztBQUN0QyxhQUFPO0FBQUEsSUFDVDtBQUVBLFdBQU8sa0NBQWtDLG9CQUFvQjtBQUFBLEVBQy9EO0FBRUEsTUFBSSxTQUFTLFVBQVU7QUFDckIsV0FBTyxrQ0FBa0MsZ0JBQWdCO0FBQUEsRUFDM0Q7QUFFQSxTQUFPO0FBQ1Q7QUFTTyxTQUFTLDBDQUEwQyxvQ0FBdUQ7QUFDL0csU0FBTyxzQ0FBc0M7QUFDL0M7QUFVTyxTQUFTLHVDQUF1QyxpQ0FBb0Q7QUFDekcsU0FBTyxtQ0FBbUM7QUFDNUM7IiwKICAibmFtZXMiOiBbXQp9Cg==
40
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbXBhdGliaWxpdHktb3B0aW9ucy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIFB1cmUgcmVzb2x1dGlvbiBvZiB0aGUgdHdvIG93bmVkLWluc3RhbmNlIGNvbXBhdGliaWxpdHkga25vYnMgXHUyMDE0IHdoZXRoZXIgdGhlXG4gKiBpbnN0YWxsZXJcdTIxOTRhcHAgLyBydW50aW1lLUVsZWN0cm9uIG5hZyB3YXJuaW5ncyBhcmUgZW1pdHRlZCwgYW5kIHdoZXRoZXIgYW5cbiAqIGAndW5ydW5uYWJsZSdgIGluc3RhbGxlclx1MjE5NGFwcCBwYWlyIGZhaWxzIGZhc3Qgd2l0aFxuICoge0BsaW5rIEluY29tcGF0aWJsZUluc3RhbGxlclZlcnNpb25FcnJvcn0gYmVmb3JlIGxhdW5jaC5cbiAqXG4gKiBCb3RoIGRlZmF1bHQgdG8gdG9kYXkncyBiZWhhdmlvciAoYHRydWVgKTogd2FybmluZ3Mgb24sIGFuZCBhbiB1bnJ1bm5hYmxlIHBpblxuICogdGhyb3dzIHByb2FjdGl2ZWx5LiBTZXR0aW5nIGBzaG91bGRXYXJuT25Db21wYXRpYmlsaXR5SXNzdWVzYCB0byBgZmFsc2VgXG4gKiBzaWxlbmNlcyBib3RoIG5hZ3MgKHRoZSB2ZXJkaWN0cyBhcmUgc3RpbGwgY29tcHV0ZWQgYW5kIHN1cmZhY2VkIGFzIGRhdGEpO1xuICogc2V0dGluZyBgc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlcmAgdG8gYGZhbHNlYCBsZXRzIGFuIHVucnVubmFibGUgcGluXG4gKiBwcm9jZWVkIHRvIGxhdW5jaCwgd2hlcmUgdGhlIHJlYWN0aXZlIGRlYWQtYm9vdCBmYXN0LWZhaWxcbiAqIChgUmVuZGVyZXJGYWlsZWRUb0luaXRpYWxpemVFcnJvcmApIHN0aWxsIGNhdGNoZXMgaXQuXG4gKlxuICogS2VwdCBzZXBhcmF0ZSBmcm9tIHRoZSBpbnRlZ3JhdGlvbi1vbmx5IGxhdW5jaCBjb2RlIChgdHJhbnNwb3J0LWZhY3RvcnlgLFxuICogYHRyYW5zcG9ydC1kZXNrdG9wLWNkcGAsIGJvdGggZXhjbHVkZWQgZnJvbSB1bml0IHRlc3RzKSBzbyB0aGUgZGVmYXVsdFxuICogcmVzb2x1dGlvbiBzdGF5cyB1bml0LXRlc3RhYmxlIFx1MjAxNCBtaXJyb3JpbmcgdGhlIGB2aXNpYmlsaXR5LnRzYCAvXG4gKiBgYXBwaXVtLXNlc3Npb24tY29uZmlnLnRzYCBwdXJlLXJlc29sdmVyIHNwbGl0LlxuICovXG5cbmltcG9ydCB0eXBlIHsgQXNhckZhbGxiYWNrVGllciB9IGZyb20gJy4vYXNhci1mYWxsYmFjay1kZXRlY3Rpb24ubWpzJztcbmltcG9ydCB0eXBlIHsgSW5zdGFsbGVyQ29tcGF0aWJpbGl0eVRpZXIgfSBmcm9tICcuL2luc3RhbGxlci1jb21wYXRpYmlsaXR5Lm1qcyc7XG5cbi8qKlxuICogVGhlIGFjdGlvbiB0byB0YWtlIGZvciBhIHJlc29sdmVkIHNpbGVudC1hc2FyLWZhbGxiYWNrIHZlcmRpY3QsIGdpdmVuIHRoZVxuICogdGhyb3cvd2FybiBrbm9icy5cbiAqXG4gKiAtIGAndGhyb3cnYCBcdTIwMTQgdGhlIHZlcmRpY3QgaXMgYCdmYWxsYmFjaydgIGFuZCB0aGUgdGhyb3cgaXMgZW5hYmxlZDsgdGhlIGNhbGxlclxuICogICB0aHJvd3MgYFNpbGVudEFzYXJGYWxsYmFja0Vycm9yYC5cbiAqIC0gYCd3YXJuJ2AgXHUyMDE0IHRoZSB2ZXJkaWN0IGlzIGAnZmFsbGJhY2snYCBidXQgdGhlIHRocm93IGlzIGRpc2FibGVkIGFuZCB3YXJuaW5nc1xuICogICBhcmUgb247IHRoZSBjYWxsZXIgbG9ncyB0aGUgZmFsbGJhY2sgd2FybmluZyBhbmQgbGV0cyB0aGUgYm9vdCBwcm9jZWVkICh0aGVcbiAqICAgdmVyZGljdCBpcyBzdGlsbCBzdXJmYWNlZCBhcyBkYXRhKS5cbiAqIC0gYCdzaWxlbnQnYCBcdTIwMTQgbm90aGluZyB0byBkbyAoYCdtYXRjaCdgIC8gYCd1bmtub3duJ2AsIG9yIGEgc3VwcHJlc3NlZCBmYWxsYmFjaykuXG4gKi9cbmV4cG9ydCB0eXBlIEFzYXJGYWxsYmFja0FjdGlvbiA9ICdzaWxlbnQnIHwgJ3Rocm93JyB8ICd3YXJuJztcblxuLyoqXG4gKiBUaGUgYWN0aW9uIHRvIHRha2UgZm9yIGEgcmVzb2x2ZWQgaW5zdGFsbGVyXHUyMTk0YXBwIGNvbXBhdGliaWxpdHkgdmVyZGljdCwgZ2l2ZW5cbiAqIHRoZSB0aHJvdy93YXJuIGtub2JzLlxuICpcbiAqIC0gYCd0aHJvdydgIFx1MjAxNCB0aGUgdmVyZGljdCBpcyBgJ3VucnVubmFibGUnYCBhbmQgdGhlIHByb2FjdGl2ZSB0aHJvdyBpcyBlbmFibGVkO1xuICogICB0aGUgY2FsbGVyIHRocm93cyBgSW5jb21wYXRpYmxlSW5zdGFsbGVyVmVyc2lvbkVycm9yYCBiZWZvcmUgbGF1bmNoLlxuICogLSBgJ3dhcm4tdW5ydW5uYWJsZSdgIFx1MjAxNCB0aGUgdmVyZGljdCBpcyBgJ3VucnVubmFibGUnYCBidXQgdGhlIHRocm93IGlzIGRpc2FibGVkXG4gKiAgIGFuZCB3YXJuaW5ncyBhcmUgb247IHRoZSBjYWxsZXIgbG9ncyBhIFwicHJvY2VlZGluZyB0byBsYXVuY2hcIiB3YXJuaW5nIGFuZFxuICogICBsZXRzIHRoZSBib290IHByb2NlZWQgKHdoZXJlIHRoZSByZWFjdGl2ZSBkZWFkLWJvb3QgZmFzdC1mYWlsIGNhdGNoZXMgaXQpLlxuICogLSBgJ3dhcm4tbmFnZ2VkJ2AgXHUyMDE0IHRoZSB2ZXJkaWN0IGlzIGAnbmFnZ2VkJ2AgYW5kIHdhcm5pbmdzIGFyZSBvbjsgdGhlIGNhbGxlclxuICogICBsb2dzIHRoZSByZWNvbW1lbmRlZC1pbnN0YWxsZXIgd2FybmluZy5cbiAqIC0gYCdzaWxlbnQnYCBcdTIwMTQgbm90aGluZyB0byBkbyAoYCdvaydgIC8gYCd1bmtub3duJ2AsIG9yIHdhcm5pbmdzIGRpc2FibGVkKS5cbiAqL1xuZXhwb3J0IHR5cGUgSW5zdGFsbGVyQ29tcGF0aWJpbGl0eUFjdGlvbiA9ICdzaWxlbnQnIHwgJ3Rocm93JyB8ICd3YXJuLW5hZ2dlZCcgfCAnd2Fybi11bnJ1bm5hYmxlJztcblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVzb2x2ZUFzYXJGYWxsYmFja0FjdGlvbn0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZUFzYXJGYWxsYmFja0FjdGlvblBhcmFtcyB7XG4gIC8qKiBXaGV0aGVyIGEgYCdmYWxsYmFjaydgIHZlcmRpY3QgdGhyb3dzICh2cy4gcHJvY2VlZHMgd2l0aCBhIHdhcm5pbmcpLiAqL1xuICByZWFkb25seSBzaG91bGRUaHJvd09uU2lsZW50QXNhckZhbGxiYWNrOiBib29sZWFuO1xuXG4gIC8qKiBXaGV0aGVyIGEgbm9uLXRocm93aW5nIGZhbGxiYWNrIHZlcmRpY3QgaXMgbG9nZ2VkLiAqL1xuICByZWFkb25seSBzaG91bGRXYXJuT25Db21wYXRpYmlsaXR5SXNzdWVzOiBib29sZWFuO1xuXG4gIC8qKiBUaGUgcmVzb2x2ZWQgc2lsZW50LWFzYXItZmFsbGJhY2sgdGllci4gKi9cbiAgcmVhZG9ubHkgdGllcjogQXNhckZhbGxiYWNrVGllcjtcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcmVzb2x2ZUluc3RhbGxlckNvbXBhdGliaWxpdHlBY3Rpb259LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVJbnN0YWxsZXJDb21wYXRpYmlsaXR5QWN0aW9uUGFyYW1zIHtcbiAgLyoqIFdoZXRoZXIgYW4gYCd1bnJ1bm5hYmxlJ2AgdmVyZGljdCB0aHJvd3MgKHZzLiBwcm9jZWVkcyB0byBsYXVuY2gpLiAqL1xuICByZWFkb25seSBzaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyOiBib29sZWFuO1xuXG4gIC8qKiBXaGV0aGVyIGEgbmFnIC8gcHJvY2VlZGluZy11bnJ1bm5hYmxlIHZlcmRpY3QgaXMgbG9nZ2VkLiAqL1xuICByZWFkb25seSBzaG91bGRXYXJuT25Db21wYXRpYmlsaXR5SXNzdWVzOiBib29sZWFuO1xuXG4gIC8qKiBUaGUgcmVzb2x2ZWQgaW5zdGFsbGVyXHUyMTk0YXBwIGNvbXBhdGliaWxpdHkgdGllci4gKi9cbiAgcmVhZG9ubHkgdGllcjogSW5zdGFsbGVyQ29tcGF0aWJpbGl0eVRpZXI7XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgd2hhdCB0byBkbyBmb3IgYSBzaWxlbnQtYXNhci1mYWxsYmFjayB2ZXJkaWN0LCBnaXZlbiB0aGUgdGhyb3cvd2FyblxuICoga25vYnMuIFB1cmUgXHUyMDE0IHRoZSBjYWxsZXIgcGVyZm9ybXMgdGhlIHRocm93L2xvZyBzaWRlIGVmZmVjdHMuXG4gKlxuICogQHBhcmFtIHBhcmFtcyAtIFRoZSB2ZXJkaWN0IHRpZXIgYW5kIHRoZSByZXNvbHZlZCB0aHJvdy93YXJuIGtub2JzLlxuICogQHJldHVybnMgVGhlIGFjdGlvbiB0aGUgY2FsbGVyIHNob3VsZCB0YWtlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUFzYXJGYWxsYmFja0FjdGlvbihwYXJhbXM6IFJlc29sdmVBc2FyRmFsbGJhY2tBY3Rpb25QYXJhbXMpOiBBc2FyRmFsbGJhY2tBY3Rpb24ge1xuICBjb25zdCB7IHNob3VsZFRocm93T25TaWxlbnRBc2FyRmFsbGJhY2ssIHNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXMsIHRpZXIgfSA9IHBhcmFtcztcblxuICBpZiAodGllciAhPT0gJ2ZhbGxiYWNrJykge1xuICAgIHJldHVybiAnc2lsZW50JztcbiAgfVxuXG4gIGlmIChzaG91bGRUaHJvd09uU2lsZW50QXNhckZhbGxiYWNrKSB7XG4gICAgcmV0dXJuICd0aHJvdyc7XG4gIH1cblxuICByZXR1cm4gc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3VlcyA/ICd3YXJuJyA6ICdzaWxlbnQnO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHdoYXQgdG8gZG8gZm9yIGFuIGluc3RhbGxlclx1MjE5NGFwcCBjb21wYXRpYmlsaXR5IHZlcmRpY3QsIGdpdmVuIHRoZVxuICogdGhyb3cvd2FybiBrbm9icy4gUHVyZSBcdTIwMTQgdGhlIGNhbGxlciBwZXJmb3JtcyB0aGUgdGhyb3cvbG9nIHNpZGUgZWZmZWN0cy5cbiAqXG4gKiBAcGFyYW0gcGFyYW1zIC0gVGhlIHZlcmRpY3QgdGllciBhbmQgdGhlIHJlc29sdmVkIHRocm93L3dhcm4ga25vYnMuXG4gKiBAcmV0dXJucyBUaGUgYWN0aW9uIHRoZSBjYWxsZXIgc2hvdWxkIHRha2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlSW5zdGFsbGVyQ29tcGF0aWJpbGl0eUFjdGlvbihwYXJhbXM6IFJlc29sdmVJbnN0YWxsZXJDb21wYXRpYmlsaXR5QWN0aW9uUGFyYW1zKTogSW5zdGFsbGVyQ29tcGF0aWJpbGl0eUFjdGlvbiB7XG4gIGNvbnN0IHsgc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlciwgc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3VlcywgdGllciB9ID0gcGFyYW1zO1xuXG4gIGlmICh0aWVyID09PSAndW5ydW5uYWJsZScpIHtcbiAgICBpZiAoc2hvdWxkVGhyb3dPbkluY29tcGF0aWJsZUluc3RhbGxlcikge1xuICAgICAgcmV0dXJuICd0aHJvdyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXMgPyAnd2Fybi11bnJ1bm5hYmxlJyA6ICdzaWxlbnQnO1xuICB9XG5cbiAgaWYgKHRpZXIgPT09ICduYWdnZWQnKSB7XG4gICAgcmV0dXJuIHNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXMgPyAnd2Fybi1uYWdnZWQnIDogJ3NpbGVudCc7XG4gIH1cblxuICByZXR1cm4gJ3NpbGVudCc7XG59XG5cbi8qKlxuICogV2hldGhlciBhbiBgJ3VucnVubmFibGUnYCBpbnN0YWxsZXJcdTIxOTRhcHAgcGFpciBzaG91bGQgZmFpbCBmYXN0IHdpdGhcbiAqIHtAbGluayBJbmNvbXBhdGlibGVJbnN0YWxsZXJWZXJzaW9uRXJyb3J9IGJlZm9yZSBsYXVuY2guXG4gKlxuICogQHBhcmFtIHNob3VsZFRocm93T25JbmNvbXBhdGlibGVJbnN0YWxsZXIgLSBUaGUgcmVzb2x2ZWQgb3B0aW9uIHZhbHVlIChvbWl0dGVkIFx1MjE5MiB0aHJvdykuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiBhbiB1bnJ1bm5hYmxlIHBpbiBzaG91bGQgdGhyb3cgKHRoZSBkZWZhdWx0KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVTaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyKHNob3VsZFRocm93T25JbmNvbXBhdGlibGVJbnN0YWxsZXI/OiBib29sZWFuKTogYm9vbGVhbiB7XG4gIHJldHVybiBzaG91bGRUaHJvd09uSW5jb21wYXRpYmxlSW5zdGFsbGVyID8/IHRydWU7XG59XG5cbi8qKlxuICogV2hldGhlciBhIGJvb3RlZCBvd25lZCBpbnN0YW5jZSBydW5uaW5nIGEgZGlmZmVyZW50IGFwcCAoYXNhcikgdmVyc2lvbiB0aGFuIHRoZVxuICogcGluIFx1MjAxNCBhIHNpbGVudCBmYWxsYmFjayB0byB0aGUgaW5zdGFsbGVyJ3Mgb3duIGJ1bmRsZWQgYXNhciBcdTIwMTQgc2hvdWxkIGZhaWwgZmFzdFxuICogd2l0aCB7QGxpbmsgU2lsZW50QXNhckZhbGxiYWNrRXJyb3J9LlxuICpcbiAqIEBwYXJhbSBzaG91bGRUaHJvd09uU2lsZW50QXNhckZhbGxiYWNrIC0gVGhlIHJlc29sdmVkIG9wdGlvbiB2YWx1ZSAob21pdHRlZCBcdTIxOTIgdGhyb3cpLlxuICogQHJldHVybnMgYHRydWVgIHdoZW4gYSBzaWxlbnQgZmFsbGJhY2sgc2hvdWxkIHRocm93ICh0aGUgZGVmYXVsdCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlU2hvdWxkVGhyb3dPblNpbGVudEFzYXJGYWxsYmFjayhzaG91bGRUaHJvd09uU2lsZW50QXNhckZhbGxiYWNrPzogYm9vbGVhbik6IGJvb2xlYW4ge1xuICByZXR1cm4gc2hvdWxkVGhyb3dPblNpbGVudEFzYXJGYWxsYmFjayA/PyB0cnVlO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgdGhlIG93bmVkLWluc3RhbmNlIGNvbXBhdGliaWxpdHkgbmFnIHdhcm5pbmdzIHNob3VsZCBiZSBlbWl0dGVkIChib3RoXG4gKiB0aGUgaW5zdGFsbGVyXHUyMTk0YXBwIGAnbmFnZ2VkJ2Agd2FybmluZyBhbmQgdGhlIHJ1bnRpbWUtRWxlY3Ryb24gYCduYWdnZWQnYFxuICogd2FybmluZykuXG4gKlxuICogQHBhcmFtIHNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXMgLSBUaGUgcmVzb2x2ZWQgb3B0aW9uIHZhbHVlIChvbWl0dGVkIFx1MjE5MiB3YXJuKS5cbiAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSB3YXJuaW5ncyBzaG91bGQgYmUgZW1pdHRlZCAodGhlIGRlZmF1bHQpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXMoc2hvdWxkV2Fybk9uQ29tcGF0aWJpbGl0eUlzc3Vlcz86IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHNob3VsZFdhcm5PbkNvbXBhdGliaWxpdHlJc3N1ZXMgPz8gdHJ1ZTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQXVGTyxTQUFTLDBCQUEwQixRQUE2RDtBQUNyRyxRQUFNLEVBQUUsaUNBQWlDLGlDQUFpQyxLQUFLLElBQUk7QUFFbkYsTUFBSSxTQUFTLFlBQVk7QUFDdkIsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLGlDQUFpQztBQUNuQyxXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU8sa0NBQWtDLFNBQVM7QUFDcEQ7QUFTTyxTQUFTLG9DQUFvQyxRQUFpRjtBQUNuSSxRQUFNLEVBQUUsb0NBQW9DLGlDQUFpQyxLQUFLLElBQUk7QUFFdEYsTUFBSSxTQUFTLGNBQWM7QUFDekIsUUFBSSxvQ0FBb0M7QUFDdEMsYUFBTztBQUFBLElBQ1Q7QUFFQSxXQUFPLGtDQUFrQyxvQkFBb0I7QUFBQSxFQUMvRDtBQUVBLE1BQUksU0FBUyxVQUFVO0FBQ3JCLFdBQU8sa0NBQWtDLGdCQUFnQjtBQUFBLEVBQzNEO0FBRUEsU0FBTztBQUNUO0FBU08sU0FBUywwQ0FBMEMsb0NBQXVEO0FBQy9HLFNBQU8sc0NBQXNDO0FBQy9DO0FBVU8sU0FBUyx1Q0FBdUMsaUNBQW9EO0FBQ3pHLFNBQU8sbUNBQW1DO0FBQzVDO0FBVU8sU0FBUyx1Q0FBdUMsaUNBQW9EO0FBQ3pHLFNBQU8sbUNBQW1DO0FBQzVDOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -11,6 +11,7 @@
11
11
  * raw {@link CdpConnection.invoke} and the rich {@link CdpConnection.evalInObsidian}.
12
12
  */
13
13
  import type { Except } from 'type-fest';
14
+ import type { AsarFallback } from './asar-fallback-detection.mjs';
14
15
  import type { ContextId } from './context-id.mjs';
15
16
  import type { ElectronCompatibility } from './electron-compatibility.mjs';
16
17
  import type { EvalInObsidianParams, GenericObject } from './eval-in-obsidian.mjs';
@@ -25,6 +26,16 @@ import { TempVault } from './temp-vault.mjs';
25
26
  * removing its directory) automatically.
26
27
  */
27
28
  export interface CdpConnection extends AsyncDisposable {
29
+ /**
30
+ * The silent-asar-fallback verdict for an owned instance, read live after boot:
31
+ * whether the app version it is actually running matches the swapped-in pin, or
32
+ * the installer silently reverted to its own bundled asar. `undefined` in attach
33
+ * mode, when no asar was swapped, or when the running version was unreadable. A
34
+ * `'fallback'` verdict reaches here only when the throw is disabled
35
+ * ({@link ConnectToCdpOptions.shouldThrowOnSilentAsarFallback} `false`);
36
+ * otherwise it throws `SilentAsarFallbackError` before the connection is created.
37
+ */
38
+ readonly asarFallback?: AsarFallback | undefined;
28
39
  /**
29
40
  * The base CDP URL, e.g. `http://localhost:51888`.
30
41
  */
@@ -178,6 +189,20 @@ export interface ConnectToCdpOptions {
178
189
  * @default `true`
179
190
  */
180
191
  readonly shouldThrowOnIncompatibleInstaller?: boolean;
192
+ /**
193
+ * Whether a post-boot **silent asar fallback** fails fast.
194
+ *
195
+ * When an asar is swapped onto an installer shell too old for it, the instance
196
+ * may silently revert to the installer's own bundled asar and run the **wrong
197
+ * (older)** version behind a healthy UI. When `true` (the default), the running
198
+ * app version is verified against the pin post-boot and a mismatch throws
199
+ * `SilentAsarFallbackError`. Set `false` to let the boot proceed — the mismatch
200
+ * is then surfaced on {@link CdpConnection.asarFallback} rather than thrown.
201
+ * Ignored in attach mode ({@link port} set) and when no asar is swapped.
202
+ *
203
+ * @default `true`
204
+ */
205
+ readonly shouldThrowOnSilentAsarFallback?: boolean;
181
206
  /**
182
207
  * Whether the owned-instance compatibility **nag warnings** are emitted.
183
208
  *