@mnaoumov/obsidian-lib 4.1.0 → 4.2.1

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 (215) hide show
  1. package/dist/lib/cjs/__merged.cjs +9 -2
  2. package/dist/lib/cjs/__merged.d.cts +2 -2
  3. package/dist/lib/cjs/active-file-provider.cjs +3 -2
  4. package/dist/lib/cjs/app.cjs +3 -2
  5. package/dist/lib/cjs/async-with-notice.cjs +3 -2
  6. package/dist/lib/cjs/attachment-path.cjs +3 -2
  7. package/dist/lib/cjs/attachment-unit-folder.cjs +3 -2
  8. package/dist/lib/cjs/backlink-index.cjs +3 -2
  9. package/dist/lib/cjs/backlink.cjs +3 -2
  10. package/dist/lib/cjs/bases-view-registrar.cjs +3 -2
  11. package/dist/lib/cjs/callout.cjs +3 -2
  12. package/dist/lib/cjs/canvas.cjs +3 -2
  13. package/dist/lib/cjs/case-insensitive-file-index.cjs +3 -2
  14. package/dist/lib/cjs/code-block-markdown-information.cjs +3 -2
  15. package/dist/lib/cjs/code-block-reg-exp.cjs +3 -2
  16. package/dist/lib/cjs/codemirror/index.cjs +3 -2
  17. package/dist/lib/cjs/codemirror/state-field-spec.cjs +3 -2
  18. package/dist/lib/cjs/command-handlers/abstract-file-command-handler.cjs +3 -2
  19. package/dist/lib/cjs/command-handlers/command-handler-component.cjs +3 -2
  20. package/dist/lib/cjs/command-handlers/command-handler.cjs +3 -2
  21. package/dist/lib/cjs/command-handlers/editor-command-handler.cjs +3 -2
  22. package/dist/lib/cjs/command-handlers/file-command-handler.cjs +3 -2
  23. package/dist/lib/cjs/command-handlers/folder-command-handler.cjs +3 -2
  24. package/dist/lib/cjs/command-handlers/global-command-handler.cjs +3 -2
  25. package/dist/lib/cjs/command-handlers/index.cjs +3 -2
  26. package/dist/lib/cjs/command-handlers/open-demo-vault-command-handler.cjs +3 -2
  27. package/dist/lib/cjs/command-handlers/open-settings-command-handler.cjs +3 -2
  28. package/dist/lib/cjs/command-handlers/unlock-active-note-command-handler.cjs +3 -2
  29. package/dist/lib/cjs/command-registrar.cjs +3 -2
  30. package/dist/lib/cjs/community-plugins.cjs +47 -4
  31. package/dist/lib/cjs/community-plugins.d.cts +36 -1
  32. package/dist/lib/cjs/components/abort-signal-component.cjs +3 -2
  33. package/dist/lib/cjs/components/all-windows-event-component.cjs +3 -2
  34. package/dist/lib/cjs/components/async-error-handler-component.cjs +3 -2
  35. package/dist/lib/cjs/components/async-events-component.cjs +3 -2
  36. package/dist/lib/cjs/components/case-insensitive-file-index-component.cjs +3 -2
  37. package/dist/lib/cjs/components/component-ex.cjs +3 -2
  38. package/dist/lib/cjs/components/console-debug-component.cjs +3 -2
  39. package/dist/lib/cjs/components/core-plugin-toggle-component.cjs +3 -2
  40. package/dist/lib/cjs/components/disposable-component.cjs +3 -2
  41. package/dist/lib/cjs/components/embed-extensions-component.cjs +3 -2
  42. package/dist/lib/cjs/components/generate-markdown-link-default-params-component.cjs +3 -2
  43. package/dist/lib/cjs/components/index.cjs +3 -2
  44. package/dist/lib/cjs/components/layout-ready-component.cjs +3 -2
  45. package/dist/lib/cjs/components/menu-event-registrar-component.cjs +3 -2
  46. package/dist/lib/cjs/components/monkey-around-component.cjs +3 -2
  47. package/dist/lib/cjs/components/notebook-navigator-menu-event-registrar-component.cjs +3 -2
  48. package/dist/lib/cjs/components/plugin-context-component.cjs +3 -2
  49. package/dist/lib/cjs/components/plugin-gate-component.cjs +26 -4
  50. package/dist/lib/cjs/components/plugin-gate-component.d.cts +10 -0
  51. package/dist/lib/cjs/components/plugin-notice-component.cjs +3 -2
  52. package/dist/lib/cjs/components/plugin-settings-component.cjs +3 -2
  53. package/dist/lib/cjs/components/plugin-settings-tab-component.cjs +3 -2
  54. package/dist/lib/cjs/components/plugin-suggestion-component.cjs +3 -2
  55. package/dist/lib/cjs/components/pointer-position-component.cjs +3 -2
  56. package/dist/lib/cjs/components/registry-component.cjs +3 -2
  57. package/dist/lib/cjs/components/release-notes-component.cjs +3 -2
  58. package/dist/lib/cjs/components/rename-delete-handler-component.cjs +3 -2
  59. package/dist/lib/cjs/components/rmdir-guard-component.cjs +3 -2
  60. package/dist/lib/cjs/components/settings-migration-component.cjs +3 -2
  61. package/dist/lib/cjs/components/syntax-highlighting-component.cjs +3 -2
  62. package/dist/lib/cjs/components/templates-language-component.cjs +3 -2
  63. package/dist/lib/cjs/constructors/get-dom-events-handlers-constructor.cjs +3 -2
  64. package/dist/lib/cjs/constructors/index.cjs +3 -2
  65. package/dist/lib/cjs/css-class.cjs +3 -2
  66. package/dist/lib/cjs/data-handler.cjs +3 -2
  67. package/dist/lib/cjs/dataview-link.cjs +3 -2
  68. package/dist/lib/cjs/dataview.cjs +3 -2
  69. package/dist/lib/cjs/debug.cjs +3 -2
  70. package/dist/lib/cjs/demo-vault-helper-settings.cjs +3 -2
  71. package/dist/lib/cjs/demo-vault-helper.cjs +3 -2
  72. package/dist/lib/cjs/demo-vault-naming.cjs +3 -2
  73. package/dist/lib/cjs/desktop-demo-vault-opener.cjs +3 -2
  74. package/dist/lib/cjs/desktop-trusted-input.cjs +3 -2
  75. package/dist/lib/cjs/editor-extension-registrar.cjs +3 -2
  76. package/dist/lib/cjs/editor-suggest-registrar.cjs +3 -2
  77. package/dist/lib/cjs/editor.cjs +3 -2
  78. package/dist/lib/cjs/events.cjs +3 -2
  79. package/dist/lib/cjs/extensions-registrar.cjs +3 -2
  80. package/dist/lib/cjs/file-change.cjs +3 -2
  81. package/dist/lib/cjs/file-explorer.cjs +3 -2
  82. package/dist/lib/cjs/file-manager.cjs +3 -2
  83. package/dist/lib/cjs/file-system.cjs +3 -2
  84. package/dist/lib/cjs/folder-note.cjs +3 -2
  85. package/dist/lib/cjs/frontmatter-formatting.cjs +3 -2
  86. package/dist/lib/cjs/frontmatter-link-cache-with-offsets.cjs +3 -2
  87. package/dist/lib/cjs/frontmatter.cjs +3 -2
  88. package/dist/lib/cjs/generated-during-build.cjs +4 -3
  89. package/dist/lib/cjs/hover-link-source-registrar.cjs +3 -2
  90. package/dist/lib/cjs/html-element.cjs +3 -2
  91. package/dist/lib/cjs/i18n/custom-type-options.cjs +3 -2
  92. package/dist/lib/cjs/i18n/default-translations.cjs +3 -2
  93. package/dist/lib/cjs/i18n/i18n.cjs +3 -2
  94. package/dist/lib/cjs/i18n/index.cjs +3 -2
  95. package/dist/lib/cjs/i18n/locales/en.cjs +7 -2
  96. package/dist/lib/cjs/i18n/locales/en.d.cts +4 -0
  97. package/dist/lib/cjs/i18n/locales/index.cjs +3 -2
  98. package/dist/lib/cjs/i18n/locales/translations-map.cjs +3 -2
  99. package/dist/lib/cjs/i18n/locales/translations-map.d.cts +4 -0
  100. package/dist/lib/cjs/index.cjs +3 -2
  101. package/dist/lib/cjs/is-in-obsidian.cjs +3 -2
  102. package/dist/lib/cjs/library-styles.cjs +3 -2
  103. package/dist/lib/cjs/library.cjs +3 -2
  104. package/dist/lib/cjs/link-name.cjs +3 -2
  105. package/dist/lib/cjs/link-update-progress.cjs +3 -2
  106. package/dist/lib/cjs/link.cjs +3 -2
  107. package/dist/lib/cjs/logger.cjs +3 -2
  108. package/dist/lib/cjs/loop.cjs +3 -2
  109. package/dist/lib/cjs/markdown-code-block-processor-registrar.cjs +3 -2
  110. package/dist/lib/cjs/markdown-code-block-processor.cjs +3 -2
  111. package/dist/lib/cjs/markdown-post-processor-registrar.cjs +3 -2
  112. package/dist/lib/cjs/markdown-view.cjs +3 -2
  113. package/dist/lib/cjs/markdown.cjs +3 -2
  114. package/dist/lib/cjs/menu-event-registrar.cjs +3 -2
  115. package/dist/lib/cjs/metadata-cache.cjs +19 -3
  116. package/dist/lib/cjs/mobile-trusted-input.cjs +3 -2
  117. package/dist/lib/cjs/modals/alert.cjs +3 -2
  118. package/dist/lib/cjs/modals/confirm.cjs +3 -2
  119. package/dist/lib/cjs/modals/index.cjs +3 -2
  120. package/dist/lib/cjs/modals/minimizable-modal.cjs +3 -2
  121. package/dist/lib/cjs/modals/modal-command-builder.cjs +3 -2
  122. package/dist/lib/cjs/modals/modal.cjs +3 -2
  123. package/dist/lib/cjs/modals/prompt.cjs +3 -2
  124. package/dist/lib/cjs/modals/select-item.cjs +3 -2
  125. package/dist/lib/cjs/modals/select-option.cjs +3 -2
  126. package/dist/lib/cjs/modals/suggest-modal-command-builder.cjs +3 -2
  127. package/dist/lib/cjs/note-priority.cjs +3 -2
  128. package/dist/lib/cjs/notebook-navigator.cjs +3 -2
  129. package/dist/lib/cjs/obsidian-dev-utils-state.cjs +3 -2
  130. package/dist/lib/cjs/obsidian-protocol-handler-registrar.cjs +3 -2
  131. package/dist/lib/cjs/obsidian-settings.cjs +3 -2
  132. package/dist/lib/cjs/parse-link.cjs +3 -2
  133. package/dist/lib/cjs/path-settings.cjs +3 -2
  134. package/dist/lib/cjs/pdf.cjs +3 -2
  135. package/dist/lib/cjs/plugin/index.cjs +3 -2
  136. package/dist/lib/cjs/plugin/plugin-api-schema.cjs +3 -2
  137. package/dist/lib/cjs/plugin/plugin-api.cjs +6 -2
  138. package/dist/lib/cjs/plugin/plugin-api.d.cts +10 -0
  139. package/dist/lib/cjs/plugin/plugin-context.cjs +3 -2
  140. package/dist/lib/cjs/plugin/plugin-event-source.cjs +3 -2
  141. package/dist/lib/cjs/plugin/plugin-install-state.cjs +31 -4
  142. package/dist/lib/cjs/plugin/plugin-install-state.d.cts +38 -0
  143. package/dist/lib/cjs/plugin/plugin-lifecycle-events.cjs +3 -2
  144. package/dist/lib/cjs/plugin/plugin-settings-tab.cjs +3 -2
  145. package/dist/lib/cjs/plugin/plugin.cjs +3 -2
  146. package/dist/lib/cjs/plugin/settings-migration-api.cjs +3 -2
  147. package/dist/lib/cjs/plugin-cli-handler-registrar.cjs +3 -2
  148. package/dist/lib/cjs/popovers/field-popover.cjs +3 -2
  149. package/dist/lib/cjs/popovers/index.cjs +3 -2
  150. package/dist/lib/cjs/popovers/popover-anchor.cjs +3 -2
  151. package/dist/lib/cjs/popovers/popover.cjs +3 -2
  152. package/dist/lib/cjs/property-entry.cjs +3 -2
  153. package/dist/lib/cjs/queue.cjs +3 -2
  154. package/dist/lib/cjs/react/app-context.cjs +3 -2
  155. package/dist/lib/cjs/react/index.cjs +3 -2
  156. package/dist/lib/cjs/reference.cjs +3 -2
  157. package/dist/lib/cjs/resource-lock.cjs +3 -2
  158. package/dist/lib/cjs/resource-url.cjs +3 -2
  159. package/dist/lib/cjs/ribbon-icon-registrar.cjs +3 -2
  160. package/dist/lib/cjs/setting-components/checkbox-component.cjs +3 -2
  161. package/dist/lib/cjs/setting-components/code-highlighter-component.cjs +3 -2
  162. package/dist/lib/cjs/setting-components/date-component.cjs +3 -2
  163. package/dist/lib/cjs/setting-components/date-time-component.cjs +3 -2
  164. package/dist/lib/cjs/setting-components/email-component.cjs +3 -2
  165. package/dist/lib/cjs/setting-components/file-component.cjs +3 -2
  166. package/dist/lib/cjs/setting-components/index.cjs +3 -2
  167. package/dist/lib/cjs/setting-components/month-component.cjs +3 -2
  168. package/dist/lib/cjs/setting-components/multiple-dropdown-component.cjs +3 -2
  169. package/dist/lib/cjs/setting-components/multiple-email-component.cjs +3 -2
  170. package/dist/lib/cjs/setting-components/multiple-file-component.cjs +3 -2
  171. package/dist/lib/cjs/setting-components/multiple-text-component.cjs +3 -2
  172. package/dist/lib/cjs/setting-components/number-component.cjs +3 -2
  173. package/dist/lib/cjs/setting-components/password-component.cjs +3 -2
  174. package/dist/lib/cjs/setting-components/setting-component-wrapper.cjs +3 -2
  175. package/dist/lib/cjs/setting-components/telephone-component.cjs +3 -2
  176. package/dist/lib/cjs/setting-components/text-based-component.cjs +3 -2
  177. package/dist/lib/cjs/setting-components/time-component.cjs +3 -2
  178. package/dist/lib/cjs/setting-components/tri-state-checkbox-component.cjs +3 -2
  179. package/dist/lib/cjs/setting-components/typed-dropdown-component.cjs +3 -2
  180. package/dist/lib/cjs/setting-components/typed-multiple-dropdown-component.cjs +3 -2
  181. package/dist/lib/cjs/setting-components/typed-range-text-component.cjs +3 -2
  182. package/dist/lib/cjs/setting-components/typed-text-component.cjs +3 -2
  183. package/dist/lib/cjs/setting-components/url-component.cjs +3 -2
  184. package/dist/lib/cjs/setting-components/validator-component.cjs +3 -2
  185. package/dist/lib/cjs/setting-components/value-component-with-change-tracking.cjs +3 -2
  186. package/dist/lib/cjs/setting-components/week-component.cjs +3 -2
  187. package/dist/lib/cjs/setting-ex.cjs +3 -2
  188. package/dist/lib/cjs/setting-group-ex.cjs +3 -2
  189. package/dist/lib/cjs/status-bar-item-registrar.cjs +3 -2
  190. package/dist/lib/cjs/templater.cjs +3 -2
  191. package/dist/lib/cjs/transformers/duration-transformer.cjs +3 -2
  192. package/dist/lib/cjs/transformers/index.cjs +3 -2
  193. package/dist/lib/cjs/trusted-input.cjs +3 -2
  194. package/dist/lib/cjs/validation.cjs +3 -2
  195. package/dist/lib/cjs/vault-delete.cjs +3 -2
  196. package/dist/lib/cjs/vault-transaction.cjs +3 -2
  197. package/dist/lib/cjs/vault.cjs +3 -2
  198. package/dist/lib/cjs/view-registrar.cjs +3 -2
  199. package/dist/lib/cjs/workspace.cjs +3 -2
  200. package/dist/lib/esm/__merged.d.mts +2 -2
  201. package/dist/lib/esm/__merged.mjs +9 -3
  202. package/dist/lib/esm/community-plugins.d.mts +36 -1
  203. package/dist/lib/esm/community-plugins.mjs +42 -2
  204. package/dist/lib/esm/components/plugin-gate-component.d.mts +10 -0
  205. package/dist/lib/esm/components/plugin-gate-component.mjs +30 -5
  206. package/dist/lib/esm/generated-during-build.mjs +1 -1
  207. package/dist/lib/esm/i18n/locales/en.d.mts +4 -0
  208. package/dist/lib/esm/i18n/locales/en.mjs +5 -1
  209. package/dist/lib/esm/i18n/locales/translations-map.d.mts +4 -0
  210. package/dist/lib/esm/metadata-cache.mjs +17 -2
  211. package/dist/lib/esm/plugin/plugin-api.d.mts +10 -0
  212. package/dist/lib/esm/plugin/plugin-api.mjs +4 -1
  213. package/dist/lib/esm/plugin/plugin-install-state.d.mts +38 -0
  214. package/dist/lib/esm/plugin/plugin-install-state.mjs +30 -3
  215. package/package.json +11 -4
@@ -77,7 +77,8 @@ ensureBrowserProcess();
77
77
  if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
78
78
  return originalRequire?.(id);
79
79
  }
80
- if (globalThis.app.isMobile) {
80
+ const app = globalThis.app;
81
+ if (app?.isMobile) {
81
82
  if (id === "process" || id === "node:process") {
82
83
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
83
84
  return process;
@@ -257,4 +258,4 @@ class PluginSuggestionComponent extends import_component_ex.ComponentEx {
257
258
  PluginSuggestionComponent,
258
259
  SuggestedPluginState
259
260
  });
260
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BsdWdpbi1zdWdnZXN0aW9uLWNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29tcG9uZW50IHRoYXQgc3VnZ2VzdHMgaW5zdGFsbGluZyBhbm90aGVyIGNvbW11bml0eSBwbHVnaW4gdGhlIGhvc3QgcGx1Z2luIG5lZWRzIGluIG9yZGVyIHRvIG9mZmVyXG4gKiBzb21lIG9mIGl0cyBiZWhhdmlvci5cbiAqXG4gKiBBIHN1Z2dlc3Rpb24gaXMgbm90IGEgZGVwZW5kZW5jeSDigJQgYnV0IGEgZGVwZW5kZW5jeSBpcyBub3cgYSB0aGluZyB0aGlzIGxpYnJhcnkgSEFTLCBzbyB0aGUgY2hvaWNlXG4gKiBiZXR3ZWVuIHRoZW0gaXMgYSByZWFsIG9uZS4gVXNlIGEgc3VnZ2VzdGlvbiB3aGVuIHRoZSBvdGhlciBwbHVnaW4gQUREUyBzb21ldGhpbmc6IHRoZSBob3N0IGtlZXBzXG4gKiB3b3JraW5nIHdpdGhvdXQgaXQsIHNpbXBseSB1bmFibGUgdG8gb2ZmZXIgd2hhdGV2ZXIgdGhhdCBwbHVnaW4gb3ducywgYW5kIHRoaXMgY29tcG9uZW50IGFza3Mgb25jZVxuICogd2hldGhlciB0aGUgdXNlciB3b3VsZCBsaWtlIGl0IGluc3RhbGxlZC4gVXNlIGBQbHVnaW5HYXRlQ29tcG9uZW50YCB3aGVuIHRoZSBob3N0J3MgYWR2ZXJ0aXNlZFxuICogYmVoYXZpb3IgaXMgbm90IHRoZXJlIGF0IGFsbCB3aXRob3V0IHRoZSBvdGhlciBwbHVnaW4uXG4gKlxuICogVGhpcyBmaWxlIHVzZWQgdG8gYXJndWUgdGhlIHN0cm9uZ2VyIHBvc2l0aW9uIOKAlCB0aGF0IHJlcXVpcmluZyBhbm90aGVyIHBsdWdpbiBzaG91bGQgbm90IGV4aXN0LCBiZWNhdXNlXG4gKiBcImludmVudGluZyBvbmUgYnkgcmVmdXNpbmcgdG8gbG9hZCB3b3VsZCBwdW5pc2ggdGhlIHVzZXIgZm9yIHNvbWV0aGluZyB0aGV5IG5ldmVyIGFncmVlZCB0b1wiLiBUaGF0IHdhc1xuICogd3JvbmcgYWJvdXQgd2hpY2ggb3B0aW9uIHB1bmlzaGVzIHRoZSB1c2VyLCBhbmQgdGhlIGNvdW50ZXItY2FzZSBpcyB3b3J0aCBrZWVwaW5nIHJhdGhlciB0aGFuIHF1aWV0bHlcbiAqIGRlbGV0aW5nLiBBIGxvYWQtYmVhcmluZyBwbHVnaW4gdGhlIHVzZXIgY2Fubm90IGlkZW50aWZ5IGlzIG5vdCBhIG5ldXRyYWwgb3V0Y29tZTogbW9udGhzIGxhdGVyIHRoZXlcbiAqIG1lZXQgaXQgaW4gdGhlaXIgcGx1Z2luIGxpc3QsIG5vdGhpbmcgaW4gT2JzaWRpYW4ncyBtYW5pZmVzdCBmb3JtYXQgc2F5cyBhbnl0aGluZyBkZXBlbmRzIG9uIGl0LCB0aGV5XG4gKiByZW1vdmUgaXQsIGFuZCB0aGUgZGFtYWdlIHN1cmZhY2VzIHdlZWtzIGFmdGVyIHRoYXQgd2l0aCBubyB3YXkgdG8gY29ubmVjdCB0aGUgdHdvLiBCZXNpZGUgdGhhdCwgYVxuICogbWFuZGF0b3J5IGRlcGVuZGVuY3kgdGhhdCBzdGF5cyBlbmFibGVkLWJ1dC1pbmVydCwgbmFtZXMgd2hhdCBpdCBpcyB3YWl0aW5nIGZvciwgaW5zdGFsbHMgaXQgaW4gb25lXG4gKiBjbGljayBhbmQgcmVzdW1lcyB3aXRob3V0IGEgcmVzdGFydCBpcyBub3QgYSBwdW5pc2htZW50IOKAlCBpdCBpcyB0aGUgc2FtZSBpbmZvcm1hdGlvbiwgZGVsaXZlcmVkIHdoaWxlXG4gKiB0aGUgdXNlciBjYW4gc3RpbGwgYWN0IG9uIGl0LlxuICpcbiAqIFRoZSBhc2sgaXMgc3VyZmFjZWQgdHdpY2UsIGRlbGliZXJhdGVseSwgYmVjYXVzZSB0aGUgdHdvIHBsYWNlbWVudHMgYW5zd2VyIGRpZmZlcmVudCBxdWVzdGlvbnM6XG4gKiBhIG5vdGljZSBvbiBsb2FkIChcInlvdSBhcmUgbWlzc2luZyBzb21ldGhpbmcgeW91IHByb2JhYmx5IHdhbnRcIikgYW5kIGEgc2V0dGluZ3MtdGFiIGJhbm5lciAoXCJ0aGVcbiAqIHNldHRpbmdzIHlvdSBjYW1lIGxvb2tpbmcgZm9yIGxpdmUgaW4gYW5vdGhlciBwbHVnaW5cIikuIERlY2xpbmluZyBzaWxlbmNlcyBvbmx5IHRoZSBub3RpY2Ug4oCUIGEgdXNlclxuICogd2hvIG9wZW5zIHRoZSBzZXR0aW5ncyB0YWIgaXMgYXNraW5nIGFib3V0IHRoZSBmZWF0dXJlIHJpZ2h0IHRoZW4sIHNvIHRoZSBiYW5uZXIgc3RheXMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBjb252ZXJ0QXN5bmNUb1N5bmMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbk5vdGljZUNvbXBvbmVudCB9IGZyb20gJy4vcGx1Z2luLW5vdGljZS1jb21wb25lbnQudHMnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2UgfSBmcm9tICcuL3BsdWdpbi1zZXR0aW5ncy1jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQgeyBhcHBlbmRUZXh0T3JGcmFnbWVudENsb25lIH0gZnJvbSAnLi4vaHRtbC1lbGVtZW50LnRzJztcbmltcG9ydCB7IHQgfSBmcm9tICcuLi9pMThuL2kxOG4udHMnO1xuaW1wb3J0IHtcbiAgZ2V0SW5zdGFsbGVkUGx1Z2luU3RhdGUsXG4gIGluc3RhbGxBbmRFbmFibGVQbHVnaW4sXG4gIEluc3RhbGxlZFBsdWdpblN0YXRlXG59IGZyb20gJy4uL3BsdWdpbi9wbHVnaW4taW5zdGFsbC1zdGF0ZS50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFeCB9IGZyb20gJy4vY29tcG9uZW50LWV4LnRzJztcbmltcG9ydCB7IENhbGxiYWNrTGF5b3V0UmVhZHlDb21wb25lbnQgfSBmcm9tICcuL2xheW91dC1yZWFkeS1jb21wb25lbnQudHMnO1xuXG4vKipcbiAqIEhvdyB0aGUgc3VnZ2VzdGVkIHBsdWdpbiBpcyBjdXJyZW50bHkgcHJlc2VudCBpbiB0aGUgdmF1bHQuXG4gKlxuICogVGhlIHNhbWUgdGhyZWUgc3RhdGVzIGEgbWFuZGF0b3J5IGRlcGVuZGVuY3kgaXMgaW4sIHNvIHRoaXMgaXMge0BsaW5rIEluc3RhbGxlZFBsdWdpblN0YXRlfSB1bmRlciB0aGVcbiAqIG5hbWUgdGhpcyBjb21wb25lbnQgaGFzIGFsd2F5cyB1c2VkIOKAlCBvbmUgZW51bSwgc28gYSBjYWxsZXIgaG9sZGluZyBhIHN0YXRlIGZyb20gZWl0aGVyIGNvbXBvbmVudCBjYW5cbiAqIGNvbXBhcmUgaXQgYWdhaW5zdCBlaXRoZXIgbmFtZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFN1Z2dlc3RlZFBsdWdpblN0YXRlID0gSW5zdGFsbGVkUGx1Z2luU3RhdGU7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBQbHVnaW5TdWdnZXN0aW9uQ29tcG9uZW50fSBjb25zdHJ1Y3Rvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5TdWdnZXN0aW9uQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB1c2VyIGhhcyBhbHJlYWR5IGRlY2xpbmVkIHRoaXMgc3VnZ2VzdGlvbi5cbiAgICpcbiAgICogU3RvcmFnZSBiZWxvbmdzIHRvIHRoZSBob3N0IHBsdWdpbiAodHlwaWNhbGx5IG9uZSBvZiBpdHMgc2V0dGluZ3MpLCBiZWNhdXNlIHRoaXMgY29tcG9uZW50IGhhcyBub1xuICAgKiBgZGF0YS5qc29uYCBvZiBpdHMgb3duIGFuZCBhIGRlY2xpbmUgaGFzIHRvIG91dGxpdmUgYSByZWxvYWQuXG4gICAqXG4gICAqIE9ubHkgZXZlciBjYWxsZWQgb25jZSB7QGxpbmsgcGx1Z2luU2V0dGluZ3NDb21wb25lbnR9IHJlcG9ydHMgaXRzIHNldHRpbmdzIGxvYWRlZCwgc28gYW4gaW1wbGVtZW50YXRpb25cbiAgICogcmVhZGluZyBhIHNldHRpbmcgaXMgZ3VhcmFudGVlZCB0byByZWFkIHRoZSBzdG9yZWQgdmFsdWUgcmF0aGVyIHRoYW4gaXRzIGRlZmF1bHQuXG4gICAqXG4gICAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSBzdWdnZXN0aW9uIGhhcyBiZWVuIGRlY2xpbmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNTdWdnZXN0aW9uRGVjbGluZWQ6ICgpID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBub3RpY2UgY29tcG9uZW50IG9mIHRoZSBwbHVnaW4gbWFraW5nIHRoZSBzdWdnZXN0aW9uLCB1c2VkIHRvIHNob3cgdGhlIHN1Z2dlc3Rpb24gYW5kIGl0c1xuICAgKiBvdXRjb21lLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTm90aWNlQ29tcG9uZW50OiBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXR0aW5ncyBjb21wb25lbnQgaG9sZGluZyB3aGF0ZXZlciB7QGxpbmsgaXNTdWdnZXN0aW9uRGVjbGluZWR9IHJlYWRzLlxuICAgKlxuICAgKiBUYWtlbiBhcyBhIHdob2xlIGNvbXBvbmVudCByYXRoZXIgdGhhbiBhcyBhIGJhcmUgXCJyZWFkeVwiIGZsYWcgc28gdGhlIGhvc3QgY2Fubm90IGZvcmdldCB0byB3aXJlIHRoZVxuICAgKiB3YWl0OiB0aGUgbm90aWNlIGlzIGRlY2lkZWQgb25seSBhZnRlciB0aGlzIGNvbXBvbmVudCBoYXMgcmVhZCBgZGF0YS5qc29uYC4gU2VlXG4gICAqIHtAbGluayBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2Uud2hlbkxvYWRlZEZyb21GaWxlfSBmb3Igd2h5IHRoZSByZWFkIGNhbm5vdCBzaW1wbHkgaGFwcGVuIGF0XG4gICAqIGxheW91dC1yZWFkeS5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpblNldHRpbmdzQ29tcG9uZW50OiBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2U8b2JqZWN0PjtcblxuICAvKipcbiAgICogVGhlIGxvY2FsaXplZCBzZW50ZW5jZSBleHBsYWluaW5nIHdoYXQgdGhlIGhvc3QgcGx1Z2luIGNhbm5vdCBkbyB3aXRob3V0IHRoZSBzdWdnZXN0ZWQgcGx1Z2luLiBUaGVcbiAgICogaG9zdCBwbHVnaW4gb3ducyB0aGlzIHN0cmluZzogb25seSBpdCBrbm93cyB3aGljaCBvZiBpdHMgZmVhdHVyZXMgYXJlIGFmZmVjdGVkLlxuICAgKlxuICAgKiBQYXNzIGEge0BsaW5rIERvY3VtZW50RnJhZ21lbnR9IHRvIG1hcmsgdXAgcGFydCBvZiB0aGUgc2VudGVuY2UsIHN1Y2ggYXMgYSBwbHVnaW4gbmFtZSByZW5kZXJlZCBhc1xuICAgKiBjb2RlLiBFYWNoIHJlbmRlciBhcHBlbmRzIGEgZnJlc2ggY2xvbmUgb2YgaXQsIGJlY2F1c2UgdGhlIG5vdGljZSBhbmQgdGhlIGJhbm5lciBlYWNoIG5lZWQgdGhlaXIgb3duXG4gICAqIGNvcHkgYW5kIGFwcGVuZGluZyBhIGZyYWdtZW50IGVtcHRpZXMgaXQuXG4gICAqL1xuICByZWFkb25seSByZWFzb246IERvY3VtZW50RnJhZ21lbnQgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlY29yZHMgdGhlIHVzZXIncyBhbnN3ZXIgdG8gdGhlIHN1Z2dlc3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSBpc0RlY2xpbmVkIC0gYHRydWVgIHdoZW4gdGhlIHVzZXIgZGVjbGluZWQuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgYW5zd2VyIGlzIHBlcnNpc3RlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNldFN1Z2dlc3Rpb25EZWNsaW5lZDogKGlzRGVjbGluZWQ6IGJvb2xlYW4pID0+IFByb21pc2FibGU8dm9pZD47XG5cbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgc3VnZ2VzdGVkIHBsdWdpbiwgYXMgbGlzdGVkIGluIE9ic2lkaWFuJ3MgY29tbXVuaXR5IHBsdWdpbiByZWdpc3RyeS5cbiAgICovXG4gIHJlYWRvbmx5IHN1Z2dlc3RlZFBsdWdpbklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXNwbGF5IG5hbWUgb2YgdGhlIHN1Z2dlc3RlZCBwbHVnaW4sIHNob3duIHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgcmVhZG9ubHkgc3VnZ2VzdGVkUGx1Z2luTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEhvdyB0aGUgc3VnZ2VzdGVkIHBsdWdpbiBpcyBjdXJyZW50bHkgcHJlc2VudCBpbiB0aGUgdmF1bHQuXG4gKi9cbmV4cG9ydCB0eXBlIFN1Z2dlc3RlZFBsdWdpblN0YXRlID0gSW5zdGFsbGVkUGx1Z2luU3RhdGU7XG5cbi8qKlxuICogU3VnZ2VzdHMgaW5zdGFsbGluZyBhbm90aGVyIGNvbW11bml0eSBwbHVnaW4sIHZpYSBhIGxvYWQtdGltZSBub3RpY2UgYW5kIGEgc2V0dGluZ3MtdGFiIGJhbm5lci5cbiAqL1xuZXhwb3J0IGNsYXNzIFBsdWdpblN1Z2dlc3Rpb25Db21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRFeCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNTdWdnZXN0aW9uRGVjbGluZWQ6ICgpID0+IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luTm90aWNlQ29tcG9uZW50OiBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luU2V0dGluZ3NDb21wb25lbnQ6IFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZTxvYmplY3Q+O1xuICBwcml2YXRlIHJlYWRvbmx5IHJlYXNvbjogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBzZXRTdWdnZXN0aW9uRGVjbGluZWQ6IChpc0RlY2xpbmVkOiBib29sZWFuKSA9PiBQcm9taXNhYmxlPHZvaWQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IHN1Z2dlc3RlZFBsdWdpbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3VnZ2VzdGVkUGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHtAbGluayBQbHVnaW5TdWdnZXN0aW9uQ29tcG9uZW50fS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogUGx1Z2luU3VnZ2VzdGlvbkNvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFwcCA9IHBhcmFtcy5hcHA7XG4gICAgdGhpcy5wbHVnaW5Ob3RpY2VDb21wb25lbnQgPSBwYXJhbXMucGx1Z2luTm90aWNlQ29tcG9uZW50O1xuICAgIHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQgPSBwYXJhbXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQ7XG4gICAgdGhpcy5yZWFzb24gPSBwYXJhbXMucmVhc29uO1xuICAgIHRoaXMuc3VnZ2VzdGVkUGx1Z2luSWQgPSBwYXJhbXMuc3VnZ2VzdGVkUGx1Z2luSWQ7XG4gICAgdGhpcy5zdWdnZXN0ZWRQbHVnaW5OYW1lID0gcGFyYW1zLnN1Z2dlc3RlZFBsdWdpbk5hbWU7XG4gICAgdGhpcy5pc1N1Z2dlc3Rpb25EZWNsaW5lZCA9IHBhcmFtcy5pc1N1Z2dlc3Rpb25EZWNsaW5lZDtcbiAgICB0aGlzLnNldFN1Z2dlc3Rpb25EZWNsaW5lZCA9IHBhcmFtcy5zZXRTdWdnZXN0aW9uRGVjbGluZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgaG93IHRoZSBzdWdnZXN0ZWQgcGx1Z2luIGlzIGN1cnJlbnRseSBwcmVzZW50IGluIHRoZSB2YXVsdC5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHtAbGluayBTdWdnZXN0ZWRQbHVnaW5TdGF0ZX0uXG4gICAqL1xuICBwdWJsaWMgZ2V0U3VnZ2VzdGVkUGx1Z2luU3RhdGUoKTogU3VnZ2VzdGVkUGx1Z2luU3RhdGUge1xuICAgIHJldHVybiBnZXRJbnN0YWxsZWRQbHVnaW5TdGF0ZSh7XG4gICAgICBhcHA6IHRoaXMuYXBwLFxuICAgICAgcGx1Z2luSWQ6IHRoaXMuc3VnZ2VzdGVkUGx1Z2luSWRcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnN0YWxscyAod2hlbiBuZWVkZWQpIGFuZCBlbmFibGVzIHRoZSBzdWdnZXN0ZWQgcGx1Z2luLCByZXBvcnRpbmcgdGhlIG91dGNvbWUgYXMgYSBub3RpY2UuXG4gICAqXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgcGx1Z2luIGlzIGVuYWJsZWQsIG9yIG9uY2UgdGhlIGZhaWx1cmUgaGFzIGJlZW5cbiAgICogcmVwb3J0ZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaW5zdGFsbEFuZEVuYWJsZVN1Z2dlc3RlZFBsdWdpbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5nZXRTdWdnZXN0ZWRQbHVnaW5TdGF0ZSgpID09PSBTdWdnZXN0ZWRQbHVnaW5TdGF0ZS5FbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgaW5zdGFsbEFuZEVuYWJsZVBsdWdpbih7XG4gICAgICBhcHA6IHRoaXMuYXBwLFxuICAgICAgcGx1Z2luSWQ6IHRoaXMuc3VnZ2VzdGVkUGx1Z2luSWQsXG4gICAgICBwbHVnaW5OYW1lOiB0aGlzLnN1Z2dlc3RlZFBsdWdpbk5hbWUsXG4gICAgICBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IHRoaXMucGx1Z2luTm90aWNlQ29tcG9uZW50XG4gICAgfSk7XG5cbiAgICAvLyBPbmx5IGFmdGVyIHRoZSBpbnN0YWxsIGFjdHVhbGx5IHN1Y2NlZWRlZCDigJQgYGluc3RhbGxBbmRFbmFibGVQbHVnaW5gIHJldGhyb3dzIG9uIGZhaWx1cmUsIHNvIGFcbiAgICAvLyBmYWlsZWQgYXR0ZW1wdCBsZWF2ZXMgYSBwcmV2aW91cyBkZWNsaW5lIHN0YW5kaW5nIHJhdGhlciB0aGFuIHNpbGVudGx5IGNsZWFyaW5nIGl0LlxuICAgIGF3YWl0IHRoaXMuc2V0U3VnZ2VzdGlvbkRlY2xpbmVkKGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyB0aGUgY29tcG9uZW50LCBzaG93aW5nIHRoZSBzdWdnZXN0aW9uIG5vdGljZSBvbmNlIHRoZSBsYXlvdXQgaXMgcmVhZHkgQU5EIHRoZSBob3N0J3Mgc2V0dGluZ3NcbiAgICogaGF2ZSBiZWVuIHJlYWQgZnJvbSBkaXNrLlxuICAgKlxuICAgKiBCb3RoIHdhaXRzIG1hdHRlciwgYW5kIG5laXRoZXIgaW1wbGllcyB0aGUgb3RoZXI6XG4gICAqXG4gICAqIC0gTGF5b3V0LXJlYWR5LCBiZWNhdXNlIHBsdWdpbnMgbG9hZCBpbiBhbiB1bnNwZWNpZmllZCBvcmRlciwgc28gdGhlIHN1Z2dlc3RlZCBwbHVnaW4gbWF5IHdlbGwgYmVcbiAgICogICBlbmFibGVkIGEgbW9tZW50IGFmdGVyIHRoaXMgb25lLiBDaGVja2luZyBlYXJsaWVyIHdvdWxkIHN1Z2dlc3QgaW5zdGFsbGluZyBzb21ldGhpbmcgdGhlIHVzZXJcbiAgICogICBhbHJlYWR5IGhhcy5cbiAgICogLSBTZXR0aW5ncy1sb2FkZWQsIGJlY2F1c2Uge0BsaW5rIFBsdWdpblN1Z2dlc3Rpb25Db21wb25lbnRDb25zdHJ1Y3RvclBhcmFtcy5pc1N1Z2dlc3Rpb25EZWNsaW5lZH1cbiAgICogICByZWFkcyBhIHNldHRpbmcgb2YgdGhlIGhvc3QsIGFuZCB0aGUgaG9zdCdzIHNldHRpbmdzIGNvbXBvbmVudCBpcyBhIFNJQkxJTkcgd2hvc2Ugb3duIGFzeW5jIGxvYWQgaXNcbiAgICogICBzdGlsbCBpbiBmbGlnaHQgaGVyZS4gT24gYSBsYXlvdXQgdGhhdCBpcyBhbHJlYWR5IHJlYWR5IOKAlCBhIHJ1bnRpbWUgZW5hYmxlIGZyb20gdGhlIENvbW11bml0eVxuICAgKiAgIFBsdWdpbnMgdGFiLCBvciBhIHJlLWVuYWJsZSBhZnRlciBhbiB1cGRhdGUg4oCUIHRoZSBsYXlvdXQtcmVhZHkgY2FsbGJhY2sgZmlyZXMgaW1tZWRpYXRlbHksIHNvIHRoZVxuICAgKiAgIHJlYWQgd291bGQgc2VlIHRoZSBkZWZhdWx0IGBmYWxzZWAgYW5kIGFzayBhZ2FpbiBhIHVzZXIgd2hvIGhhcyBhbHJlYWR5IGRlY2xpbmVkLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIG9ubG9hZCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZENoaWxkKFxuICAgICAgbmV3IENhbGxiYWNrTGF5b3V0UmVhZHlDb21wb25lbnQodGhpcy5hcHAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudC53aGVuTG9hZGVkRnJvbUZpbGUoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNVbmxvYWRlZCgpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zaG93U3VnZ2VzdGlvbk5vdGljZSgpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIHN1Z2dlc3Rpb24gYmFubmVyIGludG8gYSBzZXR0aW5ncy10YWIgY29udGFpbmVyLCB3aXRoIGEgYnV0dG9uIHRoYXQgaW5zdGFsbHMgYW5kIGVuYWJsZXNcbiAgICogdGhlIHN1Z2dlc3RlZCBwbHVnaW4uXG4gICAqXG4gICAqIFJlbmRlcnMgbm90aGluZyB3aGVuIHRoZSBzdWdnZXN0ZWQgcGx1Z2luIGlzIGFscmVhZHkgZW5hYmxlZC4gVW5saWtlIHRoZSBub3RpY2UsIHRoZSBiYW5uZXIgaWdub3JlcyBhXG4gICAqIHByZXZpb3VzIGRlY2xpbmUg4oCUIHRoZSB1c2VyIGlzIGxvb2tpbmcgYXQgdGhlc2Ugc2V0dGluZ3MgcmlnaHQgbm93LCB3aGljaCBpcyBhIGZyZXNoZXIgc2lnbmFsIHRoYW4gYW5cbiAgICogYW5zd2VyIHRoZXkgZ2F2ZSBlYXJsaWVyLlxuICAgKlxuICAgKiBAcGFyYW0gY29udGFpbmVyRWwgLSBUaGUgZWxlbWVudCB0byByZW5kZXIgdGhlIGJhbm5lciBpbnRvLlxuICAgKi9cbiAgcHVibGljIHJlbmRlckJhbm5lcihjb250YWluZXJFbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZ2V0U3VnZ2VzdGVkUGx1Z2luU3RhdGUoKTtcbiAgICBpZiAoc3RhdGUgPT09IFN1Z2dlc3RlZFBsdWdpblN0YXRlLkVuYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBiYW5uZXJFbCA9IGNvbnRhaW5lckVsLmNyZWF0ZURpdih7XG4gICAgICBjbHM6IFtDc3NDbGFzcy5MaWJyYXJ5TmFtZSwgQ3NzQ2xhc3MuUGx1Z2luU3VnZ2VzdGlvbkJhbm5lcl1cbiAgICB9KTtcbiAgICBhcHBlbmRUZXh0T3JGcmFnbWVudENsb25lKGJhbm5lckVsLmNyZWF0ZURpdigpLCB0aGlzLnJlYXNvbik7XG5cbiAgICBuZXcgQnV0dG9uQ29tcG9uZW50KGJhbm5lckVsKVxuICAgICAgLnNldEJ1dHRvblRleHQodGhpcy5nZXRBY3Rpb25CdXR0b25UZXh0KHN0YXRlKSlcbiAgICAgIC5zZXRDdGEoKVxuICAgICAgLm9uQ2xpY2soY29udmVydEFzeW5jVG9TeW5jKGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5pbnN0YWxsQW5kRW5hYmxlU3VnZ2VzdGVkUGx1Z2luKCk7XG4gICAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGdldEFjdGlvbkJ1dHRvblRleHQoc3RhdGU6IFN1Z2dlc3RlZFBsdWdpblN0YXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdCgoJCkgPT5cbiAgICAgIHN0YXRlID09PSBTdWdnZXN0ZWRQbHVnaW5TdGF0ZS5JbnN0YWxsZWRCdXREaXNhYmxlZFxuICAgICAgICA/ICQub2JzaWRpYW5EZXZVdGlscy5wbHVnaW5TdWdnZXN0aW9uLmVuYWJsZVxuICAgICAgICA6ICQub2JzaWRpYW5EZXZVdGlscy5wbHVnaW5TdWdnZXN0aW9uLmluc3RhbGxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93U3VnZ2VzdGlvbk5vdGljZSgpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZ2V0U3VnZ2VzdGVkUGx1Z2luU3RhdGUoKTtcbiAgICBpZiAoc3RhdGUgPT09IFN1Z2dlc3RlZFBsdWdpblN0YXRlLkVuYWJsZWQgfHwgdGhpcy5pc1N1Z2dlc3Rpb25EZWNsaW5lZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudCgoZnJhZ21lbnRFbCkgPT4ge1xuICAgICAgYXBwZW5kVGV4dE9yRnJhZ21lbnRDbG9uZShmcmFnbWVudEVsLmNyZWF0ZURpdigpLCB0aGlzLnJlYXNvbik7XG4gICAgICBjb25zdCBidXR0b25zRWwgPSBmcmFnbWVudEVsLmNyZWF0ZURpdigpO1xuXG4gICAgICBuZXcgQnV0dG9uQ29tcG9uZW50KGJ1dHRvbnNFbClcbiAgICAgICAgLnNldEJ1dHRvblRleHQodGhpcy5nZXRBY3Rpb25CdXR0b25UZXh0KHN0YXRlKSlcbiAgICAgICAgLnNldEN0YSgpXG4gICAgICAgIC5vbkNsaWNrKGNvbnZlcnRBc3luY1RvU3luYyhhc3luYyAoKSA9PiB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5pbnN0YWxsQW5kRW5hYmxlU3VnZ2VzdGVkUGx1Z2luKCk7XG4gICAgICAgIH0pKTtcblxuICAgICAgbmV3IEJ1dHRvbkNvbXBvbmVudChidXR0b25zRWwpXG4gICAgICAgIC5zZXRCdXR0b25UZXh0KHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5wbHVnaW5TdWdnZXN0aW9uLm5vdE5vdykpXG4gICAgICAgIC5vbkNsaWNrKGNvbnZlcnRBc3luY1RvU3luYyhhc3luYyAoKSA9PiB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zZXRTdWdnZXN0aW9uRGVjbGluZWQodHJ1ZSk7XG4gICAgICAgIH0pKTtcbiAgICB9KTtcblxuICAgIHRoaXMucGx1Z2luTm90aWNlQ29tcG9uZW50LnNob3dOb3RpY2UoZnJhZ21lbnQsIHsgc2hvdWxkSGlkZU9uQ2xpY2s6IGZhbHNlIH0pO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBK0JBLG1CQUFtQztBQUNuQyxzQkFBZ0M7QUFLaEMsdUJBQXlCO0FBQ3pCLDBCQUEwQztBQUMxQyxrQkFBa0I7QUFDbEIsa0NBSU87QUFDUCwwQkFBNEI7QUFDNUIsb0NBQTZDO0FBU3RDLE1BQU0sdUJBQXVCO0FBNkU3QixNQUFNLGtDQUFrQyxnQ0FBWTtBQUFBLEVBQ3hDO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9WLFlBQVksUUFBb0Q7QUFDckUsVUFBTTtBQUNOLFNBQUssTUFBTSxPQUFPO0FBQ2xCLFNBQUssd0JBQXdCLE9BQU87QUFDcEMsU0FBSywwQkFBMEIsT0FBTztBQUN0QyxTQUFLLFNBQVMsT0FBTztBQUNyQixTQUFLLG9CQUFvQixPQUFPO0FBQ2hDLFNBQUssc0JBQXNCLE9BQU87QUFDbEMsU0FBSyx1QkFBdUIsT0FBTztBQUNuQyxTQUFLLHdCQUF3QixPQUFPO0FBQUEsRUFDdEM7QUFBQTtBQUFBO0FB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
261
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BsdWdpbi1zdWdnZXN0aW9uLWNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29tcG9uZW50IHRoYXQgc3VnZ2VzdHMgaW5zdGFsbGluZyBhbm90aGVyIGNvbW11bml0eSBwbHVnaW4gdGhlIGhvc3QgcGx1Z2luIG5lZWRzIGluIG9yZGVyIHRvIG9mZmVyXG4gKiBzb21lIG9mIGl0cyBiZWhhdmlvci5cbiAqXG4gKiBBIHN1Z2dlc3Rpb24gaXMgbm90IGEgZGVwZW5kZW5jeSDigJQgYnV0IGEgZGVwZW5kZW5jeSBpcyBub3cgYSB0aGluZyB0aGlzIGxpYnJhcnkgSEFTLCBzbyB0aGUgY2hvaWNlXG4gKiBiZXR3ZWVuIHRoZW0gaXMgYSByZWFsIG9uZS4gVXNlIGEgc3VnZ2VzdGlvbiB3aGVuIHRoZSBvdGhlciBwbHVnaW4gQUREUyBzb21ldGhpbmc6IHRoZSBob3N0IGtlZXBzXG4gKiB3b3JraW5nIHdpdGhvdXQgaXQsIHNpbXBseSB1bmFibGUgdG8gb2ZmZXIgd2hhdGV2ZXIgdGhhdCBwbHVnaW4gb3ducywgYW5kIHRoaXMgY29tcG9uZW50IGFza3Mgb25jZVxuICogd2hldGhlciB0aGUgdXNlciB3b3VsZCBsaWtlIGl0IGluc3RhbGxlZC4gVXNlIGBQbHVnaW5HYXRlQ29tcG9uZW50YCB3aGVuIHRoZSBob3N0J3MgYWR2ZXJ0aXNlZFxuICogYmVoYXZpb3IgaXMgbm90IHRoZXJlIGF0IGFsbCB3aXRob3V0IHRoZSBvdGhlciBwbHVnaW4uXG4gKlxuICogVGhpcyBmaWxlIHVzZWQgdG8gYXJndWUgdGhlIHN0cm9uZ2VyIHBvc2l0aW9uIOKAlCB0aGF0IHJlcXVpcmluZyBhbm90aGVyIHBsdWdpbiBzaG91bGQgbm90IGV4aXN0LCBiZWNhdXNlXG4gKiBcImludmVudGluZyBvbmUgYnkgcmVmdXNpbmcgdG8gbG9hZCB3b3VsZCBwdW5pc2ggdGhlIHVzZXIgZm9yIHNvbWV0aGluZyB0aGV5IG5ldmVyIGFncmVlZCB0b1wiLiBUaGF0IHdhc1xuICogd3JvbmcgYWJvdXQgd2hpY2ggb3B0aW9uIHB1bmlzaGVzIHRoZSB1c2VyLCBhbmQgdGhlIGNvdW50ZXItY2FzZSBpcyB3b3J0aCBrZWVwaW5nIHJhdGhlciB0aGFuIHF1aWV0bHlcbiAqIGRlbGV0aW5nLiBBIGxvYWQtYmVhcmluZyBwbHVnaW4gdGhlIHVzZXIgY2Fubm90IGlkZW50aWZ5IGlzIG5vdCBhIG5ldXRyYWwgb3V0Y29tZTogbW9udGhzIGxhdGVyIHRoZXlcbiAqIG1lZXQgaXQgaW4gdGhlaXIgcGx1Z2luIGxpc3QsIG5vdGhpbmcgaW4gT2JzaWRpYW4ncyBtYW5pZmVzdCBmb3JtYXQgc2F5cyBhbnl0aGluZyBkZXBlbmRzIG9uIGl0LCB0aGV5XG4gKiByZW1vdmUgaXQsIGFuZCB0aGUgZGFtYWdlIHN1cmZhY2VzIHdlZWtzIGFmdGVyIHRoYXQgd2l0aCBubyB3YXkgdG8gY29ubmVjdCB0aGUgdHdvLiBCZXNpZGUgdGhhdCwgYVxuICogbWFuZGF0b3J5IGRlcGVuZGVuY3kgdGhhdCBzdGF5cyBlbmFibGVkLWJ1dC1pbmVydCwgbmFtZXMgd2hhdCBpdCBpcyB3YWl0aW5nIGZvciwgaW5zdGFsbHMgaXQgaW4gb25lXG4gKiBjbGljayBhbmQgcmVzdW1lcyB3aXRob3V0IGEgcmVzdGFydCBpcyBub3QgYSBwdW5pc2htZW50IOKAlCBpdCBpcyB0aGUgc2FtZSBpbmZvcm1hdGlvbiwgZGVsaXZlcmVkIHdoaWxlXG4gKiB0aGUgdXNlciBjYW4gc3RpbGwgYWN0IG9uIGl0LlxuICpcbiAqIFRoZSBhc2sgaXMgc3VyZmFjZWQgdHdpY2UsIGRlbGliZXJhdGVseSwgYmVjYXVzZSB0aGUgdHdvIHBsYWNlbWVudHMgYW5zd2VyIGRpZmZlcmVudCBxdWVzdGlvbnM6XG4gKiBhIG5vdGljZSBvbiBsb2FkIChcInlvdSBhcmUgbWlzc2luZyBzb21ldGhpbmcgeW91IHByb2JhYmx5IHdhbnRcIikgYW5kIGEgc2V0dGluZ3MtdGFiIGJhbm5lciAoXCJ0aGVcbiAqIHNldHRpbmdzIHlvdSBjYW1lIGxvb2tpbmcgZm9yIGxpdmUgaW4gYW5vdGhlciBwbHVnaW5cIikuIERlY2xpbmluZyBzaWxlbmNlcyBvbmx5IHRoZSBub3RpY2Ug4oCUIGEgdXNlclxuICogd2hvIG9wZW5zIHRoZSBzZXR0aW5ncyB0YWIgaXMgYXNraW5nIGFib3V0IHRoZSBmZWF0dXJlIHJpZ2h0IHRoZW4sIHNvIHRoZSBiYW5uZXIgc3RheXMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBjb252ZXJ0QXN5bmNUb1N5bmMgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvYXN5bmMnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQgdHlwZSB7IFBsdWdpbk5vdGljZUNvbXBvbmVudCB9IGZyb20gJy4vcGx1Z2luLW5vdGljZS1jb21wb25lbnQudHMnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2UgfSBmcm9tICcuL3BsdWdpbi1zZXR0aW5ncy1jb21wb25lbnQudHMnO1xuXG5pbXBvcnQgeyBDc3NDbGFzcyB9IGZyb20gJy4uL2Nzcy1jbGFzcy50cyc7XG5pbXBvcnQgeyBhcHBlbmRUZXh0T3JGcmFnbWVudENsb25lIH0gZnJvbSAnLi4vaHRtbC1lbGVtZW50LnRzJztcbmltcG9ydCB7IHQgfSBmcm9tICcuLi9pMThuL2kxOG4udHMnO1xuaW1wb3J0IHtcbiAgZ2V0SW5zdGFsbGVkUGx1Z2luU3RhdGUsXG4gIGluc3RhbGxBbmRFbmFibGVQbHVnaW4sXG4gIEluc3RhbGxlZFBsdWdpblN0YXRlXG59IGZyb20gJy4uL3BsdWdpbi9wbHVnaW4taW5zdGFsbC1zdGF0ZS50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFeCB9IGZyb20gJy4vY29tcG9uZW50LWV4LnRzJztcbmltcG9ydCB7IENhbGxiYWNrTGF5b3V0UmVhZHlDb21wb25lbnQgfSBmcm9tICcuL2xheW91dC1yZWFkeS1jb21wb25lbnQudHMnO1xuXG4vKipcbiAqIEhvdyB0aGUgc3VnZ2VzdGVkIHBsdWdpbiBpcyBjdXJyZW50bHkgcHJlc2VudCBpbiB0aGUgdmF1bHQuXG4gKlxuICogVGhlIHNhbWUgdGhyZWUgc3RhdGVzIGEgbWFuZGF0b3J5IGRlcGVuZGVuY3kgaXMgaW4sIHNvIHRoaXMgaXMge0BsaW5rIEluc3RhbGxlZFBsdWdpblN0YXRlfSB1bmRlciB0aGVcbiAqIG5hbWUgdGhpcyBjb21wb25lbnQgaGFzIGFsd2F5cyB1c2VkIOKAlCBvbmUgZW51bSwgc28gYSBjYWxsZXIgaG9sZGluZyBhIHN0YXRlIGZyb20gZWl0aGVyIGNvbXBvbmVudCBjYW5cbiAqIGNvbXBhcmUgaXQgYWdhaW5zdCBlaXRoZXIgbmFtZS5cbiAqL1xuZXhwb3J0IGNvbnN0IFN1Z2dlc3RlZFBsdWdpblN0YXRlID0gSW5zdGFsbGVkUGx1Z2luU3RhdGU7XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3IgdGhlIHtAbGluayBQbHVnaW5TdWdnZXN0aW9uQ29tcG9uZW50fSBjb25zdHJ1Y3Rvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5TdWdnZXN0aW9uQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSB1c2VyIGhhcyBhbHJlYWR5IGRlY2xpbmVkIHRoaXMgc3VnZ2VzdGlvbi5cbiAgICpcbiAgICogU3RvcmFnZSBiZWxvbmdzIHRvIHRoZSBob3N0IHBsdWdpbiAodHlwaWNhbGx5IG9uZSBvZiBpdHMgc2V0dGluZ3MpLCBiZWNhdXNlIHRoaXMgY29tcG9uZW50IGhhcyBub1xuICAgKiBgZGF0YS5qc29uYCBvZiBpdHMgb3duIGFuZCBhIGRlY2xpbmUgaGFzIHRvIG91dGxpdmUgYSByZWxvYWQuXG4gICAqXG4gICAqIE9ubHkgZXZlciBjYWxsZWQgb25jZSB7QGxpbmsgcGx1Z2luU2V0dGluZ3NDb21wb25lbnR9IHJlcG9ydHMgaXRzIHNldHRpbmdzIGxvYWRlZCwgc28gYW4gaW1wbGVtZW50YXRpb25cbiAgICogcmVhZGluZyBhIHNldHRpbmcgaXMgZ3VhcmFudGVlZCB0byByZWFkIHRoZSBzdG9yZWQgdmFsdWUgcmF0aGVyIHRoYW4gaXRzIGRlZmF1bHQuXG4gICAqXG4gICAqIEByZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSBzdWdnZXN0aW9uIGhhcyBiZWVuIGRlY2xpbmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgaXNTdWdnZXN0aW9uRGVjbGluZWQ6ICgpID0+IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBub3RpY2UgY29tcG9uZW50IG9mIHRoZSBwbHVnaW4gbWFraW5nIHRoZSBzdWdnZXN0aW9uLCB1c2VkIHRvIHNob3cgdGhlIHN1Z2dlc3Rpb24gYW5kIGl0c1xuICAgKiBvdXRjb21lLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTm90aWNlQ29tcG9uZW50OiBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXR0aW5ncyBjb21wb25lbnQgaG9sZGluZyB3aGF0ZXZlciB7QGxpbmsgaXNTdWdnZXN0aW9uRGVjbGluZWR9IHJlYWRzLlxuICAgKlxuICAgKiBUYWtlbiBhcyBhIHdob2xlIGNvbXBvbmVudCByYXRoZXIgdGhhbiBhcyBhIGJhcmUgXCJyZWFkeVwiIGZsYWcgc28gdGhlIGhvc3QgY2Fubm90IGZvcmdldCB0byB3aXJlIHRoZVxuICAgKiB3YWl0OiB0aGUgbm90aWNlIGlzIGRlY2lkZWQgb25seSBhZnRlciB0aGlzIGNvbXBvbmVudCBoYXMgcmVhZCBgZGF0YS5qc29uYC4gU2VlXG4gICAqIHtAbGluayBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2Uud2hlbkxvYWRlZEZyb21GaWxlfSBmb3Igd2h5IHRoZSByZWFkIGNhbm5vdCBzaW1wbHkgaGFwcGVuIGF0XG4gICAqIGxheW91dC1yZWFkeS5cbiAgICovXG4gIHJlYWRvbmx5IHBsdWdpblNldHRpbmdzQ29tcG9uZW50OiBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2U8b2JqZWN0PjtcblxuICAvKipcbiAgICogVGhlIGxvY2FsaXplZCBzZW50ZW5jZSBleHBsYWluaW5nIHdoYXQgdGhlIGhvc3QgcGx1Z2luIGNhbm5vdCBkbyB3aXRob3V0IHRoZSBzdWdnZXN0ZWQgcGx1Z2luLiBUaGVcbiAgICogaG9zdCBwbHVnaW4gb3ducyB0aGlzIHN0cmluZzogb25seSBpdCBrbm93cyB3aGljaCBvZiBpdHMgZmVhdHVyZXMgYXJlIGFmZmVjdGVkLlxuICAgKlxuICAgKiBQYXNzIGEge0BsaW5rIERvY3VtZW50RnJhZ21lbnR9IHRvIG1hcmsgdXAgcGFydCBvZiB0aGUgc2VudGVuY2UsIHN1Y2ggYXMgYSBwbHVnaW4gbmFtZSByZW5kZXJlZCBhc1xuICAgKiBjb2RlLiBFYWNoIHJlbmRlciBhcHBlbmRzIGEgZnJlc2ggY2xvbmUgb2YgaXQsIGJlY2F1c2UgdGhlIG5vdGljZSBhbmQgdGhlIGJhbm5lciBlYWNoIG5lZWQgdGhlaXIgb3duXG4gICAqIGNvcHkgYW5kIGFwcGVuZGluZyBhIGZyYWdtZW50IGVtcHRpZXMgaXQuXG4gICAqL1xuICByZWFkb25seSByZWFzb246IERvY3VtZW50RnJhZ21lbnQgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlY29yZHMgdGhlIHVzZXIncyBhbnN3ZXIgdG8gdGhlIHN1Z2dlc3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSBpc0RlY2xpbmVkIC0gYHRydWVgIHdoZW4gdGhlIHVzZXIgZGVjbGluZWQuXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgYW5zd2VyIGlzIHBlcnNpc3RlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNldFN1Z2dlc3Rpb25EZWNsaW5lZDogKGlzRGVjbGluZWQ6IGJvb2xlYW4pID0+IFByb21pc2FibGU8dm9pZD47XG5cbiAgLyoqXG4gICAqIFRoZSBpZCBvZiB0aGUgc3VnZ2VzdGVkIHBsdWdpbiwgYXMgbGlzdGVkIGluIE9ic2lkaWFuJ3MgY29tbXVuaXR5IHBsdWdpbiByZWdpc3RyeS5cbiAgICovXG4gIHJlYWRvbmx5IHN1Z2dlc3RlZFBsdWdpbklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXNwbGF5IG5hbWUgb2YgdGhlIHN1Z2dlc3RlZCBwbHVnaW4sIHNob3duIHRvIHRoZSB1c2VyLlxuICAgKi9cbiAgcmVhZG9ubHkgc3VnZ2VzdGVkUGx1Z2luTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEhvdyB0aGUgc3VnZ2VzdGVkIHBsdWdpbiBpcyBjdXJyZW50bHkgcHJlc2VudCBpbiB0aGUgdmF1bHQuXG4gKi9cbmV4cG9ydCB0eXBlIFN1Z2dlc3RlZFBsdWdpblN0YXRlID0gSW5zdGFsbGVkUGx1Z2luU3RhdGU7XG5cbi8qKlxuICogU3VnZ2VzdHMgaW5zdGFsbGluZyBhbm90aGVyIGNvbW11bml0eSBwbHVnaW4sIHZpYSBhIGxvYWQtdGltZSBub3RpY2UgYW5kIGEgc2V0dGluZ3MtdGFiIGJhbm5lci5cbiAqL1xuZXhwb3J0IGNsYXNzIFBsdWdpblN1Z2dlc3Rpb25Db21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRFeCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBwOiBBcHA7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNTdWdnZXN0aW9uRGVjbGluZWQ6ICgpID0+IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luTm90aWNlQ29tcG9uZW50OiBQbHVnaW5Ob3RpY2VDb21wb25lbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luU2V0dGluZ3NDb21wb25lbnQ6IFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZTxvYmplY3Q+O1xuICBwcml2YXRlIHJlYWRvbmx5IHJlYXNvbjogRG9jdW1lbnRGcmFnbWVudCB8IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBzZXRTdWdnZXN0aW9uRGVjbGluZWQ6IChpc0RlY2xpbmVkOiBib29sZWFuKSA9PiBQcm9taXNhYmxlPHZvaWQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IHN1Z2dlc3RlZFBsdWdpbklkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3VnZ2VzdGVkUGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHtAbGluayBQbHVnaW5TdWdnZXN0aW9uQ29tcG9uZW50fS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogUGx1Z2luU3VnZ2VzdGlvbkNvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFwcCA9IHBhcmFtcy5hcHA7XG4gICAgdGhpcy5wbHVnaW5Ob3RpY2VDb21wb25lbnQgPSBwYXJhbXMucGx1Z2luTm90aWNlQ29tcG9uZW50O1xuICAgIHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQgPSBwYXJhbXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQ7XG4gICAgdGhpcy5yZWFzb24gPSBwYXJhbXMucmVhc29uO1xuICAgIHRoaXMuc3VnZ2VzdGVkUGx1Z2luSWQgPSBwYXJhbXMuc3VnZ2VzdGVkUGx1Z2luSWQ7XG4gICAgdGhpcy5zdWdnZXN0ZWRQbHVnaW5OYW1lID0gcGFyYW1zLnN1Z2dlc3RlZFBsdWdpbk5hbWU7XG4gICAgdGhpcy5pc1N1Z2dlc3Rpb25EZWNsaW5lZCA9IHBhcmFtcy5pc1N1Z2dlc3Rpb25EZWNsaW5lZDtcbiAgICB0aGlzLnNldFN1Z2dlc3Rpb25EZWNsaW5lZCA9IHBhcmFtcy5zZXRTdWdnZXN0aW9uRGVjbGluZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgaG93IHRoZSBzdWdnZXN0ZWQgcGx1Z2luIGlzIGN1cnJlbnRseSBwcmVzZW50IGluIHRoZSB2YXVsdC5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHtAbGluayBTdWdnZXN0ZWRQbHVnaW5TdGF0ZX0uXG4gICAqL1xuICBwdWJsaWMgZ2V0U3VnZ2VzdGVkUGx1Z2luU3RhdGUoKTogU3VnZ2VzdGVkUGx1Z2luU3RhdGUge1xuICAgIHJldHVybiBnZXRJbnN0YWxsZWRQbHVnaW5TdGF0ZSh7XG4gICAgICBhcHA6IHRoaXMuYXBwLFxuICAgICAgcGx1Z2luSWQ6IHRoaXMuc3VnZ2VzdGVkUGx1Z2luSWRcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnN0YWxscyAod2hlbiBuZWVkZWQpIGFuZCBlbmFibGVzIHRoZSBzdWdnZXN0ZWQgcGx1Z2luLCByZXBvcnRpbmcgdGhlIG91dGNvbWUgYXMgYSBub3RpY2UuXG4gICAqXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgcGx1Z2luIGlzIGVuYWJsZWQsIG9yIG9uY2UgdGhlIGZhaWx1cmUgaGFzIGJlZW5cbiAgICogcmVwb3J0ZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaW5zdGFsbEFuZEVuYWJsZVN1Z2dlc3RlZFBsdWdpbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5nZXRTdWdnZXN0ZWRQbHVnaW5TdGF0ZSgpID09PSBTdWdnZXN0ZWRQbHVnaW5TdGF0ZS5FbmFibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgaW5zdGFsbEFuZEVuYWJsZVBsdWdpbih7XG4gICAgICBhcHA6IHRoaXMuYXBwLFxuICAgICAgcGx1Z2luSWQ6IHRoaXMuc3VnZ2VzdGVkUGx1Z2luSWQsXG4gICAgICBwbHVnaW5OYW1lOiB0aGlzLnN1Z2dlc3RlZFBsdWdpbk5hbWUsXG4gICAgICBwbHVnaW5Ob3RpY2VDb21wb25lbnQ6IHRoaXMucGx1Z2luTm90aWNlQ29tcG9uZW50XG4gICAgfSk7XG5cbiAgICAvLyBPbmx5IGFmdGVyIHRoZSBpbnN0YWxsIGFjdHVhbGx5IHN1Y2NlZWRlZCDigJQgYGluc3RhbGxBbmRFbmFibGVQbHVnaW5gIHJldGhyb3dzIG9uIGZhaWx1cmUsIHNvIGFcbiAgICAvLyBmYWlsZWQgYXR0ZW1wdCBsZWF2ZXMgYSBwcmV2aW91cyBkZWNsaW5lIHN0YW5kaW5nIHJhdGhlciB0aGFuIHNpbGVudGx5IGNsZWFyaW5nIGl0LlxuICAgIGF3YWl0IHRoaXMuc2V0U3VnZ2VzdGlvbkRlY2xpbmVkKGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyB0aGUgY29tcG9uZW50LCBzaG93aW5nIHRoZSBzdWdnZXN0aW9uIG5vdGljZSBvbmNlIHRoZSBsYXlvdXQgaXMgcmVhZHkgQU5EIHRoZSBob3N0J3Mgc2V0dGluZ3NcbiAgICogaGF2ZSBiZWVuIHJlYWQgZnJvbSBkaXNrLlxuICAgKlxuICAgKiBCb3RoIHdhaXRzIG1hdHRlciwgYW5kIG5laXRoZXIgaW1wbGllcyB0aGUgb3RoZXI6XG4gICAqXG4gICAqIC0gTGF5b3V0LXJlYWR5LCBiZWNhdXNlIHBsdWdpbnMgbG9hZCBpbiBhbiB1bnNwZWNpZmllZCBvcmRlciwgc28gdGhlIHN1Z2dlc3RlZCBwbHVnaW4gbWF5IHdlbGwgYmVcbiAgICogICBlbmFibGVkIGEgbW9tZW50IGFmdGVyIHRoaXMgb25lLiBDaGVja2luZyBlYXJsaWVyIHdvdWxkIHN1Z2dlc3QgaW5zdGFsbGluZyBzb21ldGhpbmcgdGhlIHVzZXJcbiAgICogICBhbHJlYWR5IGhhcy5cbiAgICogLSBTZXR0aW5ncy1sb2FkZWQsIGJlY2F1c2Uge0BsaW5rIFBsdWdpblN1Z2dlc3Rpb25Db21wb25lbnRDb25zdHJ1Y3RvclBhcmFtcy5pc1N1Z2dlc3Rpb25EZWNsaW5lZH1cbiAgICogICByZWFkcyBhIHNldHRpbmcgb2YgdGhlIGhvc3QsIGFuZCB0aGUgaG9zdCdzIHNldHRpbmdzIGNvbXBvbmVudCBpcyBhIFNJQkxJTkcgd2hvc2Ugb3duIGFzeW5jIGxvYWQgaXNcbiAgICogICBzdGlsbCBpbiBmbGlnaHQgaGVyZS4gT24gYSBsYXlvdXQgdGhhdCBpcyBhbHJlYWR5IHJlYWR5IOKAlCBhIHJ1bnRpbWUgZW5hYmxlIGZyb20gdGhlIENvbW11bml0eVxuICAgKiAgIFBsdWdpbnMgdGFiLCBvciBhIHJlLWVuYWJsZSBhZnRlciBhbiB1cGRhdGUg4oCUIHRoZSBsYXlvdXQtcmVhZHkgY2FsbGJhY2sgZmlyZXMgaW1tZWRpYXRlbHksIHNvIHRoZVxuICAgKiAgIHJlYWQgd291bGQgc2VlIHRoZSBkZWZhdWx0IGBmYWxzZWAgYW5kIGFzayBhZ2FpbiBhIHVzZXIgd2hvIGhhcyBhbHJlYWR5IGRlY2xpbmVkLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIG9ubG9hZCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZENoaWxkKFxuICAgICAgbmV3IENhbGxiYWNrTGF5b3V0UmVhZHlDb21wb25lbnQodGhpcy5hcHAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW5TZXR0aW5nc0NvbXBvbmVudC53aGVuTG9hZGVkRnJvbUZpbGUoKTtcbiAgICAgICAgaWYgKHRoaXMuaXNVbmxvYWRlZCgpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zaG93U3VnZ2VzdGlvbk5vdGljZSgpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIHN1Z2dlc3Rpb24gYmFubmVyIGludG8gYSBzZXR0aW5ncy10YWIgY29udGFpbmVyLCB3aXRoIGEgYnV0dG9uIHRoYXQgaW5zdGFsbHMgYW5kIGVuYWJsZXNcbiAgICogdGhlIHN1Z2dlc3RlZCBwbHVnaW4uXG4gICAqXG4gICAqIFJlbmRlcnMgbm90aGluZyB3aGVuIHRoZSBzdWdnZXN0ZWQgcGx1Z2luIGlzIGFscmVhZHkgZW5hYmxlZC4gVW5saWtlIHRoZSBub3RpY2UsIHRoZSBiYW5uZXIgaWdub3JlcyBhXG4gICAqIHByZXZpb3VzIGRlY2xpbmUg4oCUIHRoZSB1c2VyIGlzIGxvb2tpbmcgYXQgdGhlc2Ugc2V0dGluZ3MgcmlnaHQgbm93LCB3aGljaCBpcyBhIGZyZXNoZXIgc2lnbmFsIHRoYW4gYW5cbiAgICogYW5zd2VyIHRoZXkgZ2F2ZSBlYXJsaWVyLlxuICAgKlxuICAgKiBAcGFyYW0gY29udGFpbmVyRWwgLSBUaGUgZWxlbWVudCB0byByZW5kZXIgdGhlIGJhbm5lciBpbnRvLlxuICAgKi9cbiAgcHVibGljIHJlbmRlckJhbm5lcihjb250YWluZXJFbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZ2V0U3VnZ2VzdGVkUGx1Z2luU3RhdGUoKTtcbiAgICBpZiAoc3RhdGUgPT09IFN1Z2dlc3RlZFBsdWdpblN0YXRlLkVuYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBiYW5uZXJFbCA9IGNvbnRhaW5lckVsLmNyZWF0ZURpdih7XG4gICAgICBjbHM6IFtDc3NDbGFzcy5MaWJyYXJ5TmFtZSwgQ3NzQ2xhc3MuUGx1Z2luU3VnZ2VzdGlvbkJhbm5lcl1cbiAgICB9KTtcbiAgICBhcHBlbmRUZXh0T3JGcmFnbWVudENsb25lKGJhbm5lckVsLmNyZWF0ZURpdigpLCB0aGlzLnJlYXNvbik7XG5cbiAgICBuZXcgQnV0dG9uQ29tcG9uZW50KGJhbm5lckVsKVxuICAgICAgLnNldEJ1dHRvblRleHQodGhpcy5nZXRBY3Rpb25CdXR0b25UZXh0KHN0YXRlKSlcbiAgICAgIC5zZXRDdGEoKVxuICAgICAgLm9uQ2xpY2soY29udmVydEFzeW5jVG9TeW5jKGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5pbnN0YWxsQW5kRW5hYmxlU3VnZ2VzdGVkUGx1Z2luKCk7XG4gICAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGdldEFjdGlvbkJ1dHRvblRleHQoc3RhdGU6IFN1Z2dlc3RlZFBsdWdpblN0YXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdCgoJCkgPT5cbiAgICAgIHN0YXRlID09PSBTdWdnZXN0ZWRQbHVnaW5TdGF0ZS5JbnN0YWxsZWRCdXREaXNhYmxlZFxuICAgICAgICA/ICQub2JzaWRpYW5EZXZVdGlscy5wbHVnaW5TdWdnZXN0aW9uLmVuYWJsZVxuICAgICAgICA6ICQub2JzaWRpYW5EZXZVdGlscy5wbHVnaW5TdWdnZXN0aW9uLmluc3RhbGxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93U3VnZ2VzdGlvbk5vdGljZSgpOiB2b2lkIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZ2V0U3VnZ2VzdGVkUGx1Z2luU3RhdGUoKTtcbiAgICBpZiAoc3RhdGUgPT09IFN1Z2dlc3RlZFBsdWdpblN0YXRlLkVuYWJsZWQgfHwgdGhpcy5pc1N1Z2dlc3Rpb25EZWNsaW5lZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudCgoZnJhZ21lbnRFbCkgPT4ge1xuICAgICAgYXBwZW5kVGV4dE9yRnJhZ21lbnRDbG9uZShmcmFnbWVudEVsLmNyZWF0ZURpdigpLCB0aGlzLnJlYXNvbik7XG4gICAgICBjb25zdCBidXR0b25zRWwgPSBmcmFnbWVudEVsLmNyZWF0ZURpdigpO1xuXG4gICAgICBuZXcgQnV0dG9uQ29tcG9uZW50KGJ1dHRvbnNFbClcbiAgICAgICAgLnNldEJ1dHRvblRleHQodGhpcy5nZXRBY3Rpb25CdXR0b25UZXh0KHN0YXRlKSlcbiAgICAgICAgLnNldEN0YSgpXG4gICAgICAgIC5vbkNsaWNrKGNvbnZlcnRBc3luY1RvU3luYyhhc3luYyAoKSA9PiB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5pbnN0YWxsQW5kRW5hYmxlU3VnZ2VzdGVkUGx1Z2luKCk7XG4gICAgICAgIH0pKTtcblxuICAgICAgbmV3IEJ1dHRvbkNvbXBvbmVudChidXR0b25zRWwpXG4gICAgICAgIC5zZXRCdXR0b25UZXh0KHQoKCQpID0+ICQub2JzaWRpYW5EZXZVdGlscy5wbHVnaW5TdWdnZXN0aW9uLm5vdE5vdykpXG4gICAgICAgIC5vbkNsaWNrKGNvbnZlcnRBc3luY1RvU3luYyhhc3luYyAoKSA9PiB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zZXRTdWdnZXN0aW9uRGVjbGluZWQodHJ1ZSk7XG4gICAgICAgIH0pKTtcbiAgICB9KTtcblxuICAgIHRoaXMucGx1Z2luTm90aWNlQ29tcG9uZW50LnNob3dOb3RpY2UoZnJhZ21lbnQsIHsgc2hvdWxkSGlkZU9uQ2xpY2s6IGZhbHNlIH0pO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQStCQSxtQkFBbUM7QUFDbkMsc0JBQWdDO0FBS2hDLHVCQUF5QjtBQUN6QiwwQkFBMEM7QUFDMUMsa0JBQWtCO0FBQ2xCLGtDQUlPO0FBQ1AsMEJBQTRCO0FBQzVCLG9DQUE2QztBQVN0QyxNQUFNLHVCQUF1QjtBQTZFN0IsTUFBTSxrQ0FBa0MsZ0NBQVk7QUFBQSxFQUN4QztBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPVixZQUFZLFFBQW9EO0FBQ3JFLFVBQU07QUFDTixTQUFLLE1BQU0sT0FBTztBQUNsQixTQUFLLHdCQUF3QixPQUFPO0FBQ3BDLFNBQUssMEJBQTBCLE9BQU87QUFDdEMsU0FBSyxTQUFTLE9BQU87QUFDckIsU0FBSyxvQkFBb0IsT0FBTztBQUNoQyxTQUFLLHNCQUFzQixPQUFPO0FBQ2xDLFNBQUssdUJBQXVCLE9BQU87QUFDbkMsU0FBSyx3QkFBd0IsT0FBTztBQUFBLEVBQ3RDO0FBQUE7QUFBQTtB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
@@ -50,7 +50,8 @@ if you want to view the source, please visit the github repository of this plugi
50
50
  if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
51
51
  return originalRequire?.(id);
52
52
  }
53
- if (globalThis.app.isMobile) {
53
+ const app = globalThis.app;
54
+ if (app?.isMobile) {
54
55
  if (id === "process" || id === "node:process") {
55
56
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
56
57
  return process;
@@ -117,4 +118,4 @@ class PointerPositionComponent extends import_all_windows_event_component.AllWin
117
118
  0 && (module.exports = {
118
119
  PointerPositionComponent
119
120
  });
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BvaW50ZXItcG9zaXRpb24tY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBSZW1lbWJlcnMgd2hlcmUgdGhlIGxhc3QgcG9pbnRlciBnZXN0dXJlIGhhcHBlbmVkLCBzbyBVSSBjYW4gYmUgYW5jaG9yZWQgdGhlcmUuXG4gKlxuICogQSBjb250ZXh0IG1lbnUgaXMgdGhlIHJlYXNvbiB0aGlzIGV4aXN0czogT2JzaWRpYW4ncyBgZmlsZS1tZW51YCAvIGB1cmwtbWVudWAgZXZlbnRzIGNhcnJ5IHRoZVxuICogdGFyZ2V0IGZpbGUgb3IgdXJsIGJ1dCBubyBldmVudCBhbmQgbm8gRE9NIGVsZW1lbnQsIGFuZCBieSB0aGUgdGltZSBhIG1lbnUgaXRlbSdzIGNhbGxiYWNrIHJ1bnMgdGhlXG4gKiBtZW51IGlzIGNsb3Npbmcg4oCUIHNvIHRoZXJlIGlzIG5vdGhpbmcgbGVmdCB0byBtZWFzdXJlLiBUaGUgcmlnaHQtY2xpY2sgKG9yIGxvbmctcHJlc3MpIHRoYXQgcmFpc2VkXG4gKiB0aGUgbWVudSBpcywgaG93ZXZlciwgZXhhY3RseSB3aGVyZSB0aGUgdXNlciBpcyBsb29raW5nLCBhbmQgaXQgYWx3YXlzIHByZWNlZGVzIHRoZSBtZW51LlxuICovXG5cbmltcG9ydCB0eXBlIHsgUG9wb3ZlckFuY2hvciB9IGZyb20gJy4uL3BvcG92ZXJzL3BvcG92ZXItYW5jaG9yLnRzJztcblxuaW1wb3J0IHsgY3JlYXRlQW5jaG9yRnJvbVBvaW50IH0gZnJvbSAnLi4vcG9wb3ZlcnMvcG9wb3Zlci1hbmNob3IudHMnO1xuaW1wb3J0IHsgQWxsV2luZG93c0V2ZW50Q29tcG9uZW50IH0gZnJvbSAnLi9hbGwtd2luZG93cy1ldmVudC1jb21wb25lbnQudHMnO1xuXG4vKipcbiAqIFJlY29yZHMgdGhlIHBvc2l0aW9uIG9mIHRoZSBsYXN0IHBvaW50ZXIgZ2VzdHVyZSBpbiBhbnkgd2luZG93LlxuICovXG5leHBvcnQgY2xhc3MgUG9pbnRlclBvc2l0aW9uQ29tcG9uZW50IGV4dGVuZHMgQWxsV2luZG93c0V2ZW50Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBsYXN0QW5jaG9yOiBudWxsIHwgUG9wb3ZlckFuY2hvciA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBhbmNob3IgZm9yIHRoZSBsYXN0IHBvaW50ZXIgZ2VzdHVyZS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGFuY2hvciwgb3IgYG51bGxgIHdoZW4gbm8gcG9pbnRlciBnZXN0dXJlIGhhcyBoYXBwZW5lZCB5ZXQuXG4gICAqL1xuICBwdWJsaWMgZ2V0TGFzdFBvaW50ZXJBbmNob3IoKTogbnVsbCB8IFBvcG92ZXJBbmNob3Ige1xuICAgIHJldHVybiB0aGlzLmxhc3RBbmNob3I7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnRzIHJlY29yZGluZyBwb2ludGVyIGdlc3R1cmVzIGluIGV2ZXJ5IHdpbmRvdy5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBvbmxvYWQoKTogdm9pZCB7XG4gICAgc3VwZXIub25sb2FkKCk7XG5cbiAgICAvKlxuICAgICAqIFJlZ2lzdGVyZWQgcGVyIHdpbmRvdyByYXRoZXIgdGhhbiB0aHJvdWdoIGByZWdpc3RlckFsbERvY3VtZW50c0RvbUV2ZW50YCBzbyB0aGUgZG9jdW1lbnQgaXNcbiAgICAgKiB0YWtlbiBmcm9tIHRoZSB3aW5kb3cgdGhlIGxpc3RlbmVyIGJlbG9uZ3MgdG8uIERlcml2aW5nIGl0IGZyb20gdGhlIGV2ZW50IHRhcmdldCBpbnN0ZWFkIHdvdWxkXG4gICAgICogYWRkIGEgYnJhbmNoIHRoYXQgYSBkb2N1bWVudC1sZXZlbCBsaXN0ZW5lciBjYW4gbmV2ZXIgdGFrZS5cbiAgICAgKlxuICAgICAqIGBwb2ludGVyZG93bmAgcmF0aGVyIHRoYW4gYGNsaWNrYCAvIGBjb250ZXh0bWVudWA6IGl0IGZpcmVzIGZvciBldmVyeSBidXR0b24gYW5kIGZvciB0b3VjaCwgc29cbiAgICAgKiBvbmUgbGlzdGVuZXIgY292ZXJzIGEgZGVza3RvcCByaWdodC1jbGljayBhbmQgYSBtb2JpbGUgbG9uZy1wcmVzcyBhbGlrZSwgYW5kIGl0IGFsd2F5cyBydW5zXG4gICAgICogYmVmb3JlIHRoZSBtZW51IG9wZW5zLlxuICAgICAqL1xuICAgIHRoaXMucmVnaXN0ZXJBbGxXaW5kb3dzSGFuZGxlcigod2luKSA9PiB7XG4gICAgICB0aGlzLnJlZ2lzdGVyRG9tRXZlbnQod2luLmRvY3VtZW50LCAncG9pbnRlcmRvd24nLCAoJGV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMubGFzdEFuY2hvciA9IGNyZWF0ZUFuY2hvckZyb21Qb2ludCgkZXZlbnQuY2xpZW50WCwgJGV2ZW50LmNsaWVudFksIHdpbi5kb2N1bWVudCk7XG4gICAgICB9LCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBYUEsNEJBQXNDO0FBQ3RDLHlDQUF5QztBQUtsQyxNQUFNLGlDQUFpQyw0REFBeUI7QUFBQSxFQUM3RCxhQUFtQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9wQyx1QkFBNkM7QUFDbEQsV0FBTyxLQUFLO0FBQUEsRUFDZDtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS2dCLFNBQWU7QUFDN0IsVUFBTSxPQUFPO0FBV2IsU0FBSywwQkFBMEIsQ0FBQyxRQUFRO0FBQ3RDLFdBQUssaUJBQWlCLElBQUksVUFBVSxlQUFlLENBQUMsV0FBVztBQUM3RCxhQUFLLGlCQUFhLDZDQUFzQixPQUFPLFNBQVMsT0FBTyxTQUFTLElBQUksUUFBUTtBQUFBLE1BQ3RGLEdBQUcsRUFBRSxTQUFTLEtBQUssQ0FBQztBQUFBLElBQ3RCLENBQUM7QUFBQSxFQUNIO0FBQ0Y7IiwibmFtZXMiOltdfQ==
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BvaW50ZXItcG9zaXRpb24tY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBSZW1lbWJlcnMgd2hlcmUgdGhlIGxhc3QgcG9pbnRlciBnZXN0dXJlIGhhcHBlbmVkLCBzbyBVSSBjYW4gYmUgYW5jaG9yZWQgdGhlcmUuXG4gKlxuICogQSBjb250ZXh0IG1lbnUgaXMgdGhlIHJlYXNvbiB0aGlzIGV4aXN0czogT2JzaWRpYW4ncyBgZmlsZS1tZW51YCAvIGB1cmwtbWVudWAgZXZlbnRzIGNhcnJ5IHRoZVxuICogdGFyZ2V0IGZpbGUgb3IgdXJsIGJ1dCBubyBldmVudCBhbmQgbm8gRE9NIGVsZW1lbnQsIGFuZCBieSB0aGUgdGltZSBhIG1lbnUgaXRlbSdzIGNhbGxiYWNrIHJ1bnMgdGhlXG4gKiBtZW51IGlzIGNsb3Npbmcg4oCUIHNvIHRoZXJlIGlzIG5vdGhpbmcgbGVmdCB0byBtZWFzdXJlLiBUaGUgcmlnaHQtY2xpY2sgKG9yIGxvbmctcHJlc3MpIHRoYXQgcmFpc2VkXG4gKiB0aGUgbWVudSBpcywgaG93ZXZlciwgZXhhY3RseSB3aGVyZSB0aGUgdXNlciBpcyBsb29raW5nLCBhbmQgaXQgYWx3YXlzIHByZWNlZGVzIHRoZSBtZW51LlxuICovXG5cbmltcG9ydCB0eXBlIHsgUG9wb3ZlckFuY2hvciB9IGZyb20gJy4uL3BvcG92ZXJzL3BvcG92ZXItYW5jaG9yLnRzJztcblxuaW1wb3J0IHsgY3JlYXRlQW5jaG9yRnJvbVBvaW50IH0gZnJvbSAnLi4vcG9wb3ZlcnMvcG9wb3Zlci1hbmNob3IudHMnO1xuaW1wb3J0IHsgQWxsV2luZG93c0V2ZW50Q29tcG9uZW50IH0gZnJvbSAnLi9hbGwtd2luZG93cy1ldmVudC1jb21wb25lbnQudHMnO1xuXG4vKipcbiAqIFJlY29yZHMgdGhlIHBvc2l0aW9uIG9mIHRoZSBsYXN0IHBvaW50ZXIgZ2VzdHVyZSBpbiBhbnkgd2luZG93LlxuICovXG5leHBvcnQgY2xhc3MgUG9pbnRlclBvc2l0aW9uQ29tcG9uZW50IGV4dGVuZHMgQWxsV2luZG93c0V2ZW50Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBsYXN0QW5jaG9yOiBudWxsIHwgUG9wb3ZlckFuY2hvciA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBhbmNob3IgZm9yIHRoZSBsYXN0IHBvaW50ZXIgZ2VzdHVyZS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGFuY2hvciwgb3IgYG51bGxgIHdoZW4gbm8gcG9pbnRlciBnZXN0dXJlIGhhcyBoYXBwZW5lZCB5ZXQuXG4gICAqL1xuICBwdWJsaWMgZ2V0TGFzdFBvaW50ZXJBbmNob3IoKTogbnVsbCB8IFBvcG92ZXJBbmNob3Ige1xuICAgIHJldHVybiB0aGlzLmxhc3RBbmNob3I7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnRzIHJlY29yZGluZyBwb2ludGVyIGdlc3R1cmVzIGluIGV2ZXJ5IHdpbmRvdy5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBvbmxvYWQoKTogdm9pZCB7XG4gICAgc3VwZXIub25sb2FkKCk7XG5cbiAgICAvKlxuICAgICAqIFJlZ2lzdGVyZWQgcGVyIHdpbmRvdyByYXRoZXIgdGhhbiB0aHJvdWdoIGByZWdpc3RlckFsbERvY3VtZW50c0RvbUV2ZW50YCBzbyB0aGUgZG9jdW1lbnQgaXNcbiAgICAgKiB0YWtlbiBmcm9tIHRoZSB3aW5kb3cgdGhlIGxpc3RlbmVyIGJlbG9uZ3MgdG8uIERlcml2aW5nIGl0IGZyb20gdGhlIGV2ZW50IHRhcmdldCBpbnN0ZWFkIHdvdWxkXG4gICAgICogYWRkIGEgYnJhbmNoIHRoYXQgYSBkb2N1bWVudC1sZXZlbCBsaXN0ZW5lciBjYW4gbmV2ZXIgdGFrZS5cbiAgICAgKlxuICAgICAqIGBwb2ludGVyZG93bmAgcmF0aGVyIHRoYW4gYGNsaWNrYCAvIGBjb250ZXh0bWVudWA6IGl0IGZpcmVzIGZvciBldmVyeSBidXR0b24gYW5kIGZvciB0b3VjaCwgc29cbiAgICAgKiBvbmUgbGlzdGVuZXIgY292ZXJzIGEgZGVza3RvcCByaWdodC1jbGljayBhbmQgYSBtb2JpbGUgbG9uZy1wcmVzcyBhbGlrZSwgYW5kIGl0IGFsd2F5cyBydW5zXG4gICAgICogYmVmb3JlIHRoZSBtZW51IG9wZW5zLlxuICAgICAqL1xuICAgIHRoaXMucmVnaXN0ZXJBbGxXaW5kb3dzSGFuZGxlcigod2luKSA9PiB7XG4gICAgICB0aGlzLnJlZ2lzdGVyRG9tRXZlbnQod2luLmRvY3VtZW50LCAncG9pbnRlcmRvd24nLCAoJGV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMubGFzdEFuY2hvciA9IGNyZWF0ZUFuY2hvckZyb21Qb2ludCgkZXZlbnQuY2xpZW50WCwgJGV2ZW50LmNsaWVudFksIHdpbi5kb2N1bWVudCk7XG4gICAgICB9LCB7IGNhcHR1cmU6IHRydWUgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQWFBLDRCQUFzQztBQUN0Qyx5Q0FBeUM7QUFLbEMsTUFBTSxpQ0FBaUMsNERBQXlCO0FBQUEsRUFDN0QsYUFBbUM7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPcEMsdUJBQTZDO0FBQ2xELFdBQU8sS0FBSztBQUFBLEVBQ2Q7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtnQixTQUFlO0FBQzdCLFVBQU0sT0FBTztBQVdiLFNBQUssMEJBQTBCLENBQUMsUUFBUTtBQUN0QyxXQUFLLGlCQUFpQixJQUFJLFVBQVUsZUFBZSxDQUFDLFdBQVc7QUFDN0QsYUFBSyxpQkFBYSw2Q0FBc0IsT0FBTyxTQUFTLE9BQU8sU0FBUyxJQUFJLFFBQVE7QUFBQSxNQUN0RixHQUFHLEVBQUUsU0FBUyxLQUFLLENBQUM7QUFBQSxJQUN0QixDQUFDO0FBQUEsRUFDSDtBQUNGOyIsIm5hbWVzIjpbXX0=
@@ -77,7 +77,8 @@ ensureBrowserProcess();
77
77
  if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
78
78
  return originalRequire?.(id);
79
79
  }
80
- if (globalThis.app.isMobile) {
80
+ const app = globalThis.app;
81
+ if (app?.isMobile) {
81
82
  if (id === "process" || id === "node:process") {
82
83
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
83
84
  return process;
@@ -165,4 +166,4 @@ class RegistryComponent extends import_component_ex.ComponentEx {
165
166
  0 && (module.exports = {
166
167
  RegistryComponent
167
168
  });
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3JlZ2lzdHJ5LWNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICoge0BsaW5rIFJlZ2lzdHJ5Q29tcG9uZW50fS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdG9yIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHsgZW5zdXJlTm9uTnVsbGFibGUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZS1ndWFyZHMnO1xuXG5pbXBvcnQgeyBDb21wb25lbnRFeCB9IGZyb20gJy4vY29tcG9uZW50LWV4LnRzJztcblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0aGF0IGtlZXBzIHJlZ2lzdHJ5IG9mIGl0cyBjaGlsZHJlbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlZ2lzdHJ5Q29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50RXgge1xuICAvKipcbiAgICogR2V0IHRoZSBzaW5nbGUgY2hpbGQgb2YgdGhlIGdpdmVuIHR5cGUuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVENvbXBvbmVudCAtIFRoZSB0eXBlIG9mIGNvbXBvbmVudCB0byBnZXQuXG4gICAqIEBwYXJhbSBjb21wb25lbnRDbGFzcyAtIFRoZSBjbGFzcyBvZiB0aGUgY29tcG9uZW50IHRvIGdldC5cbiAgICogQHJldHVybnMgVGhlIHNpbmdsZSByZWdpc3RlcmVkIGNoaWxkIG9mIHRoZSBnaXZlbiB0eXBlLlxuICAgKi9cbiAgcHVibGljIGdldENoaWxkPFRDb21wb25lbnQ+KGNvbXBvbmVudENsYXNzOiBDb25zdHJ1Y3RvcjxUQ29tcG9uZW50Pik6IFRDb21wb25lbnQge1xuICAgIGNvbnN0IGNoaWxkID0gdGhpcy5nZXRDaGlsZE9yTnVsbChjb21wb25lbnRDbGFzcyk7XG4gICAgaWYgKGNoaWxkKSB7XG4gICAgICByZXR1cm4gY2hpbGQ7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBObyBpbnN0YW5jZSBvZiAke2NvbXBvbmVudENsYXNzLm5hbWV9IHJlZ2lzdGVyZWRgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHNpbmdsZSBjaGlsZCBvZiB0aGUgZ2l2ZW4gdHlwZS5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBUQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgY29tcG9uZW50IHRvIGdldC5cbiAgICogQHBhcmFtIGNvbXBvbmVudENsYXNzIC0gVGhlIGNsYXNzIG9mIHRoZSBjb21wb25lbnQgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyBUaGUgc2luZ2xlIHJlZ2lzdGVyZWQgY2hpbGQgb2YgdGhlIGdpdmVuIHR5cGUsIG9yIGBudWxsYCBpZiBub25lIGFyZSByZWdpc3RlcmVkLlxuICAgKi9cbiAgcHVibGljIGdldENoaWxkT3JOdWxsPFRDb21wb25lbnQ+KGNvbXBvbmVudENsYXNzOiBDb25zdHJ1Y3RvcjxUQ29tcG9uZW50Pik6IG51bGwgfCBUQ29tcG9uZW50IHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oY29tcG9uZW50Q2xhc3MpO1xuICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBlbnN1cmVOb25OdWxsYWJsZShjaGlsZHJlblswXSk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBNdWx0aXBsZSBpbnN0YW5jZXMgb2YgJHtjb21wb25lbnRDbGFzcy5uYW1lfSByZWdpc3RlcmVkYCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCBjaGlsZHJlbiBvZiB0aGUgZ2l2ZW4gdHlwZS5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBUQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgY29tcG9uZW50IHRvIGdldC5cbiAgICogQHBhcmFtIGNvbXBvbmVudENsYXNzIC0gVGhlIGNsYXNzIG9mIHRoZSBjb21wb25lbnQgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyBBbGwgcmVnaXN0ZXJlZCBjaGlsZHJlbiBvZiB0aGUgZ2l2ZW4gdHlwZS5cbiAgICovXG4gIHB1YmxpYyBnZXRDaGlsZHJlbjxUQ29tcG9uZW50Pihjb21wb25lbnRDbGFzczogQ29uc3RydWN0b3I8VENvbXBvbmVudD4pOiBUQ29tcG9uZW50W10ge1xuICAgIHJldHVybiB0aGlzLl9jaGlsZHJlbi5maWx0ZXIoKGNoaWxkKSA9PiBjaGlsZCBpbnN0YW5jZW9mIGNvbXBvbmVudENsYXNzKSBhcyBUQ29tcG9uZW50W107XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBUUEseUJBQWtDO0FBRWxDLDBCQUE0QjtBQUtyQixNQUFNLDBCQUEwQixnQ0FBWTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFRMUMsU0FBcUIsZ0JBQXFEO0FBQy9FLFVBQU0sUUFBUSxLQUFLLGVBQWUsY0FBYztBQUNoRCxRQUFJLE9BQU87QUFDVCxhQUFPO0FBQUEsSUFDVDtBQUVBLFVBQU0sSUFBSSxNQUFNLGtCQUFrQixlQUFlLElBQUksYUFBYTtBQUFBLEVBQ3BFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVNPLGVBQTJCLGdCQUE0RDtBQUM1RixVQUFNLFdBQVcsS0FBSyxZQUFZLGNBQWM7QUFDaEQsUUFBSSxTQUFTLFdBQVcsR0FBRztBQUN6QixhQUFPO0FBQUEsSUFDVDtBQUVBLFFBQUksU0FBUyxXQUFXLEdBQUc7QUFDekIsaUJBQU8sc0NBQWtCLFNBQVMsQ0FBQyxDQUFDO0FBQUEsSUFDdEM7QUFFQSxVQUFNLElBQUksTUFBTSx5QkFBeUIsZUFBZSxJQUFJLGFBQWE7QUFBQSxFQUMzRTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFTTyxZQUF3QixnQkFBdUQ7QUFDcEYsV0FBTyxLQUFLLFVBQVUsT0FBTyxDQUFDLFVBQVUsaUJBQWlCLGNBQWM7QUFBQSxFQUN6RTtBQUNGOyIsIm5hbWVzIjpbXX0=
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3JlZ2lzdHJ5LWNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICoge0BsaW5rIFJlZ2lzdHJ5Q29tcG9uZW50fS5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdG9yIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHsgZW5zdXJlTm9uTnVsbGFibGUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZS1ndWFyZHMnO1xuXG5pbXBvcnQgeyBDb21wb25lbnRFeCB9IGZyb20gJy4vY29tcG9uZW50LWV4LnRzJztcblxuLyoqXG4gKiBBIGNvbXBvbmVudCB0aGF0IGtlZXBzIHJlZ2lzdHJ5IG9mIGl0cyBjaGlsZHJlbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlZ2lzdHJ5Q29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50RXgge1xuICAvKipcbiAgICogR2V0IHRoZSBzaW5nbGUgY2hpbGQgb2YgdGhlIGdpdmVuIHR5cGUuXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVENvbXBvbmVudCAtIFRoZSB0eXBlIG9mIGNvbXBvbmVudCB0byBnZXQuXG4gICAqIEBwYXJhbSBjb21wb25lbnRDbGFzcyAtIFRoZSBjbGFzcyBvZiB0aGUgY29tcG9uZW50IHRvIGdldC5cbiAgICogQHJldHVybnMgVGhlIHNpbmdsZSByZWdpc3RlcmVkIGNoaWxkIG9mIHRoZSBnaXZlbiB0eXBlLlxuICAgKi9cbiAgcHVibGljIGdldENoaWxkPFRDb21wb25lbnQ+KGNvbXBvbmVudENsYXNzOiBDb25zdHJ1Y3RvcjxUQ29tcG9uZW50Pik6IFRDb21wb25lbnQge1xuICAgIGNvbnN0IGNoaWxkID0gdGhpcy5nZXRDaGlsZE9yTnVsbChjb21wb25lbnRDbGFzcyk7XG4gICAgaWYgKGNoaWxkKSB7XG4gICAgICByZXR1cm4gY2hpbGQ7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBObyBpbnN0YW5jZSBvZiAke2NvbXBvbmVudENsYXNzLm5hbWV9IHJlZ2lzdGVyZWRgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHNpbmdsZSBjaGlsZCBvZiB0aGUgZ2l2ZW4gdHlwZS5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBUQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgY29tcG9uZW50IHRvIGdldC5cbiAgICogQHBhcmFtIGNvbXBvbmVudENsYXNzIC0gVGhlIGNsYXNzIG9mIHRoZSBjb21wb25lbnQgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyBUaGUgc2luZ2xlIHJlZ2lzdGVyZWQgY2hpbGQgb2YgdGhlIGdpdmVuIHR5cGUsIG9yIGBudWxsYCBpZiBub25lIGFyZSByZWdpc3RlcmVkLlxuICAgKi9cbiAgcHVibGljIGdldENoaWxkT3JOdWxsPFRDb21wb25lbnQ+KGNvbXBvbmVudENsYXNzOiBDb25zdHJ1Y3RvcjxUQ29tcG9uZW50Pik6IG51bGwgfCBUQ29tcG9uZW50IHtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuZ2V0Q2hpbGRyZW4oY29tcG9uZW50Q2xhc3MpO1xuICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChjaGlsZHJlbi5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBlbnN1cmVOb25OdWxsYWJsZShjaGlsZHJlblswXSk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBNdWx0aXBsZSBpbnN0YW5jZXMgb2YgJHtjb21wb25lbnRDbGFzcy5uYW1lfSByZWdpc3RlcmVkYCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFsbCBjaGlsZHJlbiBvZiB0aGUgZ2l2ZW4gdHlwZS5cbiAgICpcbiAgICogQHR5cGVQYXJhbSBUQ29tcG9uZW50IC0gVGhlIHR5cGUgb2YgY29tcG9uZW50IHRvIGdldC5cbiAgICogQHBhcmFtIGNvbXBvbmVudENsYXNzIC0gVGhlIGNsYXNzIG9mIHRoZSBjb21wb25lbnQgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyBBbGwgcmVnaXN0ZXJlZCBjaGlsZHJlbiBvZiB0aGUgZ2l2ZW4gdHlwZS5cbiAgICovXG4gIHB1YmxpYyBnZXRDaGlsZHJlbjxUQ29tcG9uZW50Pihjb21wb25lbnRDbGFzczogQ29uc3RydWN0b3I8VENvbXBvbmVudD4pOiBUQ29tcG9uZW50W10ge1xuICAgIHJldHVybiB0aGlzLl9jaGlsZHJlbi5maWx0ZXIoKGNoaWxkKSA9PiBjaGlsZCBpbnN0YW5jZW9mIGNvbXBvbmVudENsYXNzKSBhcyBUQ29tcG9uZW50W107XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVFBLHlCQUFrQztBQUVsQywwQkFBNEI7QUFLckIsTUFBTSwwQkFBMEIsZ0NBQVk7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBUTFDLFNBQXFCLGdCQUFxRDtBQUMvRSxVQUFNLFFBQVEsS0FBSyxlQUFlLGNBQWM7QUFDaEQsUUFBSSxPQUFPO0FBQ1QsYUFBTztBQUFBLElBQ1Q7QUFFQSxVQUFNLElBQUksTUFBTSxrQkFBa0IsZUFBZSxJQUFJLGFBQWE7QUFBQSxFQUNwRTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFTTyxlQUEyQixnQkFBNEQ7QUFDNUYsVUFBTSxXQUFXLEtBQUssWUFBWSxjQUFjO0FBQ2hELFFBQUksU0FBUyxXQUFXLEdBQUc7QUFDekIsYUFBTztBQUFBLElBQ1Q7QUFFQSxRQUFJLFNBQVMsV0FBVyxHQUFHO0FBQ3pCLGlCQUFPLHNDQUFrQixTQUFTLENBQUMsQ0FBQztBQUFBLElBQ3RDO0FBRUEsVUFBTSxJQUFJLE1BQU0seUJBQXlCLGVBQWUsSUFBSSxhQUFhO0FBQUEsRUFDM0U7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBU08sWUFBd0IsZ0JBQXVEO0FBQ3BGLFdBQU8sS0FBSyxVQUFVLE9BQU8sQ0FBQyxVQUFVLGlCQUFpQixjQUFjO0FBQUEsRUFDekU7QUFDRjsiLCJuYW1lcyI6W119
@@ -77,7 +77,8 @@ ensureBrowserProcess();
77
77
  if (OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id) || DEPRECATED_OBSIDIAN_BUILT_IN_MODULE_NAMES.has(id)) {
78
78
  return originalRequire?.(id);
79
79
  }
80
- if (globalThis.app.isMobile) {
80
+ const app = globalThis.app;
81
+ if (app?.isMobile) {
81
82
  if (id === "process" || id === "node:process") {
82
83
  console.debug(`The most likely you can safely ignore this error. Module not found: ${id}. Fake process object is returned instead.`);
83
84
  return process;
@@ -204,4 +205,4 @@ class ReleaseNotesComponent extends import_component_ex.ComponentEx {
204
205
  0 && (module.exports = {
205
206
  ReleaseNotesComponent
206
207
  });
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3JlbGVhc2Utbm90ZXMtY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb21wb25lbnQgdGhhdCBzaG93cyBhIHBsdWdpbidzIHJlbGVhc2Ugbm90ZXMgb25jZSwgd2hlbiB0aGUgd29ya3NwYWNlIGxheW91dCBpcyByZWFkeS5cbiAqXG4gKiBTZXZlcmFsIHBsdWdpbnMgaGFuZC1yb2xsZWQgdGhpcyBwb3B1cCwgYW5kIGV2ZXJ5IGNvcHkgaGFkIHRoZSBzYW1lIGRlZmVjdDogaXQgd2FzIHRpdGxlZCBvbmx5XG4gKiBgUmVsZWFzZSBub3Rlc2AsIG92ZXIgaGVhZGluZ3MgdGhhdCBhcmUgYmFyZSB2ZXJzaW9uIG51bWJlcnMsIHNvIG5vdGhpbmcgaW4gaXQgbmFtZWQgdGhlIHBsdWdpbi4gQSB1c2VyXG4gKiB3aXRoIGRvemVucyBvZiBwbHVnaW5zIGluc3RhbGxlZCBjb3VsZCBub3QgdGVsbCB3aG9zZSBwb3B1cCBpdCB3YXMuIFRoaXMgY29tcG9uZW50IGFsd2F5cyBuYW1lcyB0aGVcbiAqIHBsdWdpbiBpbiB0aGUgdGl0bGUuXG4gKlxuICogSXQgYWxzbyBvd25zIHRoZSB3YWl0IGV2ZXJ5IGNvcHkgbmVlZGVkLiBUaGUgbm90ZXMgYWxyZWFkeSBzaG93biBhcmUgc3RvcmVkIGluIHRoZSBob3N0J3Mgc2V0dGluZ3MsIGFuZFxuICogdGhlIGhvc3QncyBzZXR0aW5ncyBjb21wb25lbnQgaXMgYSBTSUJMSU5HIHdob3NlIG93biBhc3luYyBsb2FkIGlzIHN0aWxsIGluIGZsaWdodCB3aGVuIHRoZSBwbHVnaW4gaXNcbiAqIGVuYWJsZWQgYWZ0ZXIgdGhlIGxheW91dCBpcyByZWFkeS4gUmVhZGluZyB0aGUgbGlzdCB0aGVuIHNlZXMgdGhlIGRlZmF1bHQgZW1wdHkgb25lIGFuZCBzaG93cyBldmVyeSBub3RlXG4gKiBhZ2Fpbiwgb24gZXZlcnkgc3RhcnQuIFNlZSB7QGxpbmsgUGx1Z2luU2V0dGluZ3NDb21wb25lbnRCYXNlLndoZW5Mb2FkZWRGcm9tRmlsZX0uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBjb21wYXJlVmVyc2lvbnMgfSBmcm9tICdjb21wYXJlLXZlcnNpb25zJztcblxuaW1wb3J0IHR5cGUgeyBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2UgfSBmcm9tICcuL3BsdWdpbi1zZXR0aW5ncy1jb21wb25lbnQudHMnO1xuXG5pbXBvcnQge1xuICBhc0NvZGVCbG9jayxcbiAgY3JlYXRlRnJhZ21lbnRXaXRoQ29kZUJsb2Nrc1xufSBmcm9tICcuLi9odG1sLWVsZW1lbnQudHMnO1xuaW1wb3J0IHsgdCB9IGZyb20gJy4uL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgeyBhbGVydCB9IGZyb20gJy4uL21vZGFscy9hbGVydC50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFeCB9IGZyb20gJy4vY29tcG9uZW50LWV4LnRzJztcbmltcG9ydCB7IENhbGxiYWNrTGF5b3V0UmVhZHlDb21wb25lbnQgfSBmcm9tICcuL2xheW91dC1yZWFkeS1jb21wb25lbnQudHMnO1xuXG4vKipcbiAqIFJlbGVhc2Ugbm90ZXMsIGtleWVkIGJ5IHRoZSBzZW1hbnRpYyB2ZXJzaW9uIHRoYXQgaW50cm9kdWNlZCBlYWNoIG9uZS5cbiAqL1xuZXhwb3J0IHR5cGUgUmVsZWFzZU5vdGVzID0gUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgRG9jdW1lbnRGcmFnbWVudD4+O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHRoZSB7QGxpbmsgUmVsZWFzZU5vdGVzQ29tcG9uZW50fSBjb25zdHJ1Y3Rvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWxlYXNlTm90ZXNDb21wb25lbnRDb25zdHJ1Y3RvclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHZlcnNpb25zIHdob3NlIG5vdGVzIHRoZSB1c2VyIGhhcyBhbHJlYWR5IHNlZW4uXG4gICAqXG4gICAqIFN0b3JhZ2UgYmVsb25ncyB0byB0aGUgaG9zdCBwbHVnaW4sIHR5cGljYWxseSBhcyBvbmUgb2YgaXRzIHNldHRpbmdzLCBiZWNhdXNlIHRoaXMgY29tcG9uZW50IGhhcyBub1xuICAgKiBgZGF0YS5qc29uYCBvZiBpdHMgb3duIGFuZCB0aGUgbGlzdCBoYXMgdG8gb3V0bGl2ZSBhIHJlbG9hZC5cbiAgICpcbiAgICogT25seSBldmVyIGNhbGxlZCBvbmNlIHtAbGluayBwbHVnaW5TZXR0aW5nc0NvbXBvbmVudH0gcmVwb3J0cyBpdHMgc2V0dGluZ3MgbG9hZGVkLCBzbyBhbiBpbXBsZW1lbnRhdGlvblxuICAgKiB0aGF0IHJlYWRzIGEgc2V0dGluZyByZWFkcyB0aGUgc3RvcmVkIHZhbHVlIHJhdGhlciB0aGFuIGl0cyBkZWZhdWx0LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgdmVyc2lvbnMgYWxyZWFkeSBzaG93bi5cbiAgICovXG4gIHJlYWRvbmx5IGdldFNob3duUmVsZWFzZU5vdGVWZXJzaW9uczogKCkgPT4gcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBkaXNwbGF5IG5hbWUgb2YgdGhlIHBsdWdpbiwgc2hvd24gaW4gdGhlIHBvcHVwIHRpdGxlLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2V0dGluZ3MgY29tcG9uZW50IGhvbGRpbmcgd2hhdGV2ZXIge0BsaW5rIGdldFNob3duUmVsZWFzZU5vdGVWZXJzaW9uc30gcmVhZHMuXG4gICAqXG4gICAqIFRha2VuIGFzIGEgd2hvbGUgY29tcG9uZW50IHJhdGhlciB0aGFuIGFzIGEgYmFyZSBcInJlYWR5XCIgZmxhZywgc28gdGhlIGhvc3QgY2Fubm90IGZvcmdldCB0byB3aXJlIHRoZVxuICAgKiB3YWl0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luU2V0dGluZ3NDb21wb25lbnQ6IFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZTxvYmplY3Q+O1xuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIHJlbGVhc2Ugbm90ZXMuXG4gICAqXG4gICAqIENhbGxlZCBhdCBsYXlvdXQgcmVhZHkgcmF0aGVyIHRoYW4gYXQgY29uc3RydWN0aW9uLCBzbyB0aGUgZnJhZ21lbnRzIGFyZSBidWlsdCBvbmx5IHdoZW4gdGhleSBtYXkgYmVcbiAgICogc2hvd24sIGFuZCBhIGxvY2FsaXplZCBzdHJpbmcgaXMgcmVhZCBhZnRlciB0aGUgaG9zdCdzIHRyYW5zbGF0aW9ucyBhcmUgc2V0IHVwLlxuICAgKlxuICAgKiBFdmVyeSBrZXkgbXVzdCBiZSBhIHZhbGlkIHNlbWFudGljIHZlcnNpb24uIFRoZSBub3RlcyBhcmUgc2hvd24gaW4gYXNjZW5kaW5nIHZlcnNpb24gb3JkZXIsIHdoYXRldmVyXG4gICAqIG9yZGVyIHRoZSBrZXlzIHdlcmUgd3JpdHRlbiBpbi5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHJlbGVhc2Ugbm90ZXMuXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlTm90ZXNQcm92aWRlcjogKCkgPT4gUmVsZWFzZU5vdGVzO1xuXG4gIC8qKlxuICAgKiBSZWNvcmRzIHRoZSB2ZXJzaW9ucyB3aG9zZSBub3RlcyB0aGUgdXNlciBoYXMgbm93IHNlZW4uXG4gICAqXG4gICAqIENhbGxlZCBiZWZvcmUgdGhlIHBvcHVwIGlzIHNob3duLCB3aXRoIHRoZSBmdWxsIGxpc3Q6IHRoZSB2ZXJzaW9ucyBhbHJlYWR5IHNob3duIGZvbGxvd2VkIGJ5IHRoZSBvbmVzXG4gICAqIGFib3V0IHRvIGJlLlxuICAgKlxuICAgKiBAcGFyYW0gdmVyc2lvbnMgLSBUaGUgdmVyc2lvbnMgc2hvd24uXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgbGlzdCBpcyBwZXJzaXN0ZWQuXG4gICAqL1xuICByZWFkb25seSBzZXRTaG93blJlbGVhc2VOb3RlVmVyc2lvbnM6ICh2ZXJzaW9uczogcmVhZG9ubHkgc3RyaW5nW10pID0+IFByb21pc2FibGU8dm9pZD47XG5cbiAgLyoqXG4gICAqIERlY2lkZXMgd2hldGhlciB0aGUgcmVsZWFzZSBub3RlcyBtYXkgYmUgc2hvd24gbm93LlxuICAgKlxuICAgKiBXaGVuIGl0IHJldHVybnMgYGZhbHNlYCwgbm90aGluZyBpcyBzaG93biBhbmQgbm90aGluZyBpcyByZWNvcmRlZCwgc28gdGhlIG5vdGVzIGFyZSBzaG93biBhdCBhIGxhdGVyXG4gICAqIHN0YXJ0IG9uY2UgaXQgcmV0dXJucyBgdHJ1ZWAuIFVzZSBpdCB3aGVuIHRoZSBub3RlcyBvbmx5IG1ha2Ugc2Vuc2Ugd2hpbGUgc29tZSBmZWF0dXJlIGlzIG9uLlxuICAgKlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiB0aGUgbm90ZXMgbWF5IGJlIHNob3duLlxuICAgKiBAZGVmYXVsdCBBbHdheXMgYHRydWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2hvd1JlbGVhc2VOb3Rlcz86ICgpID0+IFByb21pc2FibGU8Ym9vbGVhbj47XG59XG5cbi8qKlxuICogU2hvd3MgYSBwbHVnaW4ncyByZWxlYXNlIG5vdGVzIHRoYXQgdGhlIHVzZXIgaGFzIG5vdCBzZWVuIHlldCwgb25jZSB0aGUgd29ya3NwYWNlIGxheW91dCBpcyByZWFkeS5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlbGVhc2VOb3Rlc0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEV4IHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXNwbGF5IG5hbWUgb2YgdGhlIHBsdWdpbiwgc2hvd24gaW4gdGhlIHBvcHVwIHRpdGxlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBsdWdpbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNldHRpbmdzIGNvbXBvbmVudCB3aG9zZSBsb2FkIGlzIGF3YWl0ZWQgYmVmb3JlIHRoZSBzaG93biB2ZXJzaW9ucyBhcmUgcmVhZC5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBwbHVnaW5TZXR0aW5nc0NvbXBvbmVudDogUGx1Z2luU2V0dGluZ3NDb21wb25lbnRCYXNlPG9iamVjdD47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBnZXRTaG93blJlbGVhc2VOb3RlVmVyc2lvbnM6ICgpID0+IHJlYWRvbmx5IHN0cmluZ1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlbGVhc2VOb3Rlc1Byb3ZpZGVyOiAoKSA9PiBSZWxlYXNlTm90ZXM7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2V0U2hvd25SZWxlYXNlTm90ZVZlcnNpb25zOiAodmVyc2lvbnM6IHJlYWRvbmx5IHN0cmluZ1tdKSA9PiBQcm9taXNhYmxlPHZvaWQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IHNob3VsZFNob3dSZWxlYXNlTm90ZXM6ICgpID0+IFByb21pc2FibGU8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2Yge0BsaW5rIFJlbGVhc2VOb3Rlc0NvbXBvbmVudH0uXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgY29uc3RydWN0b3IgcGFyYW1ldGVycy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IFJlbGVhc2VOb3Rlc0NvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFwcCA9IHBhcmFtcy5hcHA7XG4gICAgdGhpcy5nZXRTaG93blJlbGVhc2VOb3RlVmVyc2lvbnMgPSBwYXJhbXMuZ2V0U2hvd25SZWxlYXNlTm90ZVZlcnNpb25zO1xuICAgIHRoaXMucGx1Z2luTmFtZSA9IHBhcmFtcy5wbHVnaW5OYW1lO1xuICAgIHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQgPSBwYXJhbXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQ7XG4gICAgdGhpcy5yZWxlYXNlTm90ZXNQcm92aWRlciA9IHBhcmFtcy5yZWxlYXNlTm90ZXNQcm92aWRlcjtcbiAgICB0aGlzLnNldFNob3duUmVsZWFzZU5vdGVWZXJzaW9ucyA9IHBhcmFtcy5zZXRTaG93blJlbGVhc2VOb3RlVmVyc2lvbnM7XG4gICAgdGhpcy5zaG91bGRTaG93UmVsZWFzZU5vdGVzID0gcGFyYW1zLnNob3VsZFNob3dSZWxlYXNlTm90ZXMgPz8gKCgpOiBib29sZWFuID0+IHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIHRoZSBjb21wb25lbnQsIHNob3dpbmcgdGhlIHVuc2VlbiByZWxlYXNlIG5vdGVzIG9uY2UgdGhlIGxheW91dCBpcyByZWFkeSBBTkQgdGhlIGhvc3QncyBzZXR0aW5nc1xuICAgKiBoYXZlIGJlZW4gcmVhZCBmcm9tIGRpc2suXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgb25sb2FkKCk6IHZvaWQge1xuICAgIHRoaXMuYWRkQ2hpbGQoXG4gICAgICBuZXcgQ2FsbGJhY2tMYXlvdXRSZWFkeUNvbXBvbmVudCh0aGlzLmFwcCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLnBsdWdpblNldHRpbmdzQ29tcG9uZW50LndoZW5Mb2FkZWRGcm9tRmlsZSgpO1xuICAgICAgICBpZiAodGhpcy5pc1VubG9hZGVkKCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCB0aGlzLnNob3dVbnNlZW5SZWxlYXNlTm90ZXMoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93cyB0aGUgcmVsZWFzZSBub3RlcyB0aGUgdXNlciBoYXMgbm90IHNlZW4geWV0LCBhbmQgcmVjb3JkcyB0aGVtIGFzIHNlZW4uXG4gICAqXG4gICAqIERvZXMgbm90aGluZyB3aGVuIHtAbGluayBSZWxlYXNlTm90ZXNDb21wb25lbnRDb25zdHJ1Y3RvclBhcmFtcy5zaG91bGRTaG93UmVsZWFzZU5vdGVzfSBkZWNsaW5lcywgb3Igd2hlblxuICAgKiBldmVyeSBub3RlIGhhcyBiZWVuIHNob3duIGFscmVhZHkuXG4gICAqXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgcG9wdXAgaXMgY2xvc2VkLCBvciBhdCBvbmNlIHdoZW4gbm90aGluZyBpcyBzaG93bi5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBzaG93VW5zZWVuUmVsZWFzZU5vdGVzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghYXdhaXQgdGhpcy5zaG91bGRTaG93UmVsZWFzZU5vdGVzKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzaG93blZlcnNpb25zID0gdGhpcy5nZXRTaG93blJlbGVhc2VOb3RlVmVyc2lvbnMoKTtcbiAgICBjb25zdCBzaG93blZlcnNpb25TZXQgPSBuZXcgU2V0KHNob3duVmVyc2lvbnMpO1xuICAgIGNvbnN0IHVuc2VlblJlbGVhc2VOb3RlcyA9IE9iamVjdC5lbnRyaWVzKHRoaXMucmVsZWFzZU5vdGVzUHJvdmlkZXIoKSlcbiAgICAgIC5maWx0ZXIoKFt2ZXJzaW9uXSkgPT4gIXNob3duVmVyc2lvblNldC5oYXModmVyc2lvbikpXG4gICAgICAuc29ydCgoW3ZlcnNpb24xXSwgW3ZlcnNpb24yXSkgPT4gY29tcGFyZVZlcnNpb25zKHZlcnNpb24xLCB2ZXJzaW9uMikpO1xuXG4gICAgaWYgKHVuc2VlblJlbGVhc2VOb3Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlRnJhZ21lbnQoKTtcbiAgICBmb3IgKGNvbnN0IFt2ZXJzaW9uLCByZWxlYXNlTm90ZV0gb2YgdW5zZWVuUmVsZWFzZU5vdGVzKSB7XG4gICAgICBtZXNzYWdlLmNyZWF0ZUVsKCdoMycsIHsgdGV4dDogdmVyc2lvbiB9KTtcbiAgICAgIG1lc3NhZ2UuYXBwZW5kKHJlbGVhc2VOb3RlKTtcbiAgICB9XG5cbiAgICAvLyBSZWNvcmRlZCBiZWZvcmUgdGhlIHBvcHVwIGlzIHNob3duLCBzbyBhIHVzZXIgd2hvIHJlbG9hZHMgd2l0aG91dCBjbG9zaW5nIGl0IGlzIG5vdCBzaG93biBpdCBhZ2Fpbi5cbiAgICBhd2FpdCB0aGlzLnNldFNob3duUmVsZWFzZU5vdGVWZXJzaW9ucyhbLi4uc2hvd25WZXJzaW9ucywgLi4udW5zZWVuUmVsZWFzZU5vdGVzLm1hcCgoW3ZlcnNpb25dKSA9PiB2ZXJzaW9uKV0pO1xuXG4gICAgYXdhaXQgYWxlcnQoe1xuICAgICAgYXBwOiB0aGlzLmFwcCxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICB0aXRsZTogY3JlYXRlRnJhZ21lbnRXaXRoQ29kZUJsb2Nrcyh0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMucmVsZWFzZU5vdGVzLnRpdGxlLCB7IHBsdWdpbk5hbWU6IGFzQ29kZUJsb2NrKHRoaXMucGx1Z2luTmFtZSkgfSkpXG4gICAgfSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBbUJBLDhCQUFnQztBQUloQywwQkFHTztBQUNQLGtCQUFrQjtBQUNsQixtQkFBc0I7QUFDdEIsMEJBQTRCO0FBQzVCLG9DQUE2QztBQWlGdEMsTUFBTSw4QkFBOEIsZ0NBQVk7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUlsQztBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS0E7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBO0FBQUEsRUFFRjtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9WLFlBQVksUUFBZ0Q7QUFDakUsVUFBTTtBQUNOLFNBQUssTUFBTSxPQUFPO0FBQ2xCLFNBQUssOEJBQThCLE9BQU87QUFDMUMsU0FBSyxhQUFhLE9BQU87QUFDekIsU0FBSywwQkFBMEIsT0FBTztBQUN0QyxTQUFLLHVCQUF1QixPQUFPO0FBQ25DLFNBQUssOEJBQThCLE9BQU87QUFDMUMsU0FBSyx5QkFBeUIsT0FBTywyQkFBMkIsTUFBZTtBQUFBLEVBQ2pGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1nQixTQUFlO0FBQzdCLFNBQUs7QUFBQSxNQUNILElBQUksMkRBQTZCLEtBQUssS0FBSyxZQUFZO0FBQ3JELGNBQU0sS0FBSyx3QkFBd0IsbUJBQW1CO0FBQ3RELFlBQUksS0FBSyxXQUFXLEdBQUc7QUFDckI7QUFBQSxRQUNGO0FBRUEsY0FBTSxLQUFLLHVCQUF1QjtBQUFBLE1BQ3BDLENBQUM7QUFBQSxJQUNIO0FBQUEsRUFDRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVVBLE1BQWdCLHlCQUF3QztBQUN0RCxRQUFJLENBQUMsTUFBTSxLQUFLLHVCQUF1QixHQUFHO0FBQ3hDO0FBQUEsSUFDRjtBQUVBLFVBQU0sZ0JBQWdCLEtBQUssNEJBQTRCO0FBQ3ZELFVBQU0sa0JBQWtCLElBQUksSUFBSSxhQUFhO0FBQzdDLFVBQU0scUJBQXFCLE9BQU8sUUFBUSxLQUFLLHFCQUFxQixDQUFDLEVBQ2xFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixJQUFJLE9BQU8sQ0FBQyxFQUNuRCxLQUFLLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxRQUFRLFVBQU0seUNBQWdCLFVBQVUsUUFBUSxDQUFDO0FBRXZFLFFBQUksbUJBQW1CLFdBQVcsR0FBRztBQUNuQztBQUFBLElBQ0Y7QUFFQSxVQUFNLFVBQVUsZUFBZTtBQUMvQixlQUFXLENBQUMsU0FBUyxXQUFXLEtBQUssb0JBQW9CO0FBQ3ZELGNBQVEsU0FBUyxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDeEMsY0FBUSxPQUFPLFdBQVc7QUFBQSxJQUM1QjtBQUdBLFVBQU0sS0FBSyw0QkFBNEIsQ0FBQyxHQUFHLGVBQWUsR0FBRyxtQkFBbUIsSUFBSSxDQUFDLENBQUMsT0FBTyxNQUFNLE9BQU8sQ0FBQyxDQUFDO0FBRTVHLGNBQU0sb0JBQU07QUFBQSxNQUNWLEtBQUssS0FBSztBQUFBLE1BQ1Y7QUFBQSxNQUNBLFdBQU8sc0RBQTZCLGVBQUUsQ0FBQyxNQUFNLEVBQUUsaUJBQWlCLGFBQWEsT0FBTyxFQUFFLGdCQUFZLGlDQUFZLEtBQUssVUFBVSxFQUFFLENBQUMsQ0FBQztBQUFBLElBQ25JLENBQUM7QUFBQSxFQUNIO0FBQ0Y7IiwibmFtZXMiOltdfQ==
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3JlbGVhc2Utbm90ZXMtY29tcG9uZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBDb21wb25lbnQgdGhhdCBzaG93cyBhIHBsdWdpbidzIHJlbGVhc2Ugbm90ZXMgb25jZSwgd2hlbiB0aGUgd29ya3NwYWNlIGxheW91dCBpcyByZWFkeS5cbiAqXG4gKiBTZXZlcmFsIHBsdWdpbnMgaGFuZC1yb2xsZWQgdGhpcyBwb3B1cCwgYW5kIGV2ZXJ5IGNvcHkgaGFkIHRoZSBzYW1lIGRlZmVjdDogaXQgd2FzIHRpdGxlZCBvbmx5XG4gKiBgUmVsZWFzZSBub3Rlc2AsIG92ZXIgaGVhZGluZ3MgdGhhdCBhcmUgYmFyZSB2ZXJzaW9uIG51bWJlcnMsIHNvIG5vdGhpbmcgaW4gaXQgbmFtZWQgdGhlIHBsdWdpbi4gQSB1c2VyXG4gKiB3aXRoIGRvemVucyBvZiBwbHVnaW5zIGluc3RhbGxlZCBjb3VsZCBub3QgdGVsbCB3aG9zZSBwb3B1cCBpdCB3YXMuIFRoaXMgY29tcG9uZW50IGFsd2F5cyBuYW1lcyB0aGVcbiAqIHBsdWdpbiBpbiB0aGUgdGl0bGUuXG4gKlxuICogSXQgYWxzbyBvd25zIHRoZSB3YWl0IGV2ZXJ5IGNvcHkgbmVlZGVkLiBUaGUgbm90ZXMgYWxyZWFkeSBzaG93biBhcmUgc3RvcmVkIGluIHRoZSBob3N0J3Mgc2V0dGluZ3MsIGFuZFxuICogdGhlIGhvc3QncyBzZXR0aW5ncyBjb21wb25lbnQgaXMgYSBTSUJMSU5HIHdob3NlIG93biBhc3luYyBsb2FkIGlzIHN0aWxsIGluIGZsaWdodCB3aGVuIHRoZSBwbHVnaW4gaXNcbiAqIGVuYWJsZWQgYWZ0ZXIgdGhlIGxheW91dCBpcyByZWFkeS4gUmVhZGluZyB0aGUgbGlzdCB0aGVuIHNlZXMgdGhlIGRlZmF1bHQgZW1wdHkgb25lIGFuZCBzaG93cyBldmVyeSBub3RlXG4gKiBhZ2Fpbiwgb24gZXZlcnkgc3RhcnQuIFNlZSB7QGxpbmsgUGx1Z2luU2V0dGluZ3NDb21wb25lbnRCYXNlLndoZW5Mb2FkZWRGcm9tRmlsZX0uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBcHAgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgdHlwZSB7IFByb21pc2FibGUgfSBmcm9tICd0eXBlLWZlc3QnO1xuXG5pbXBvcnQgeyBjb21wYXJlVmVyc2lvbnMgfSBmcm9tICdjb21wYXJlLXZlcnNpb25zJztcblxuaW1wb3J0IHR5cGUgeyBQbHVnaW5TZXR0aW5nc0NvbXBvbmVudEJhc2UgfSBmcm9tICcuL3BsdWdpbi1zZXR0aW5ncy1jb21wb25lbnQudHMnO1xuXG5pbXBvcnQge1xuICBhc0NvZGVCbG9jayxcbiAgY3JlYXRlRnJhZ21lbnRXaXRoQ29kZUJsb2Nrc1xufSBmcm9tICcuLi9odG1sLWVsZW1lbnQudHMnO1xuaW1wb3J0IHsgdCB9IGZyb20gJy4uL2kxOG4vaTE4bi50cyc7XG5pbXBvcnQgeyBhbGVydCB9IGZyb20gJy4uL21vZGFscy9hbGVydC50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFeCB9IGZyb20gJy4vY29tcG9uZW50LWV4LnRzJztcbmltcG9ydCB7IENhbGxiYWNrTGF5b3V0UmVhZHlDb21wb25lbnQgfSBmcm9tICcuL2xheW91dC1yZWFkeS1jb21wb25lbnQudHMnO1xuXG4vKipcbiAqIFJlbGVhc2Ugbm90ZXMsIGtleWVkIGJ5IHRoZSBzZW1hbnRpYyB2ZXJzaW9uIHRoYXQgaW50cm9kdWNlZCBlYWNoIG9uZS5cbiAqL1xuZXhwb3J0IHR5cGUgUmVsZWFzZU5vdGVzID0gUmVhZG9ubHk8UmVjb3JkPHN0cmluZywgRG9jdW1lbnRGcmFnbWVudD4+O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHRoZSB7QGxpbmsgUmVsZWFzZU5vdGVzQ29tcG9uZW50fSBjb25zdHJ1Y3Rvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWxlYXNlTm90ZXNDb21wb25lbnRDb25zdHJ1Y3RvclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHZlcnNpb25zIHdob3NlIG5vdGVzIHRoZSB1c2VyIGhhcyBhbHJlYWR5IHNlZW4uXG4gICAqXG4gICAqIFN0b3JhZ2UgYmVsb25ncyB0byB0aGUgaG9zdCBwbHVnaW4sIHR5cGljYWxseSBhcyBvbmUgb2YgaXRzIHNldHRpbmdzLCBiZWNhdXNlIHRoaXMgY29tcG9uZW50IGhhcyBub1xuICAgKiBgZGF0YS5qc29uYCBvZiBpdHMgb3duIGFuZCB0aGUgbGlzdCBoYXMgdG8gb3V0bGl2ZSBhIHJlbG9hZC5cbiAgICpcbiAgICogT25seSBldmVyIGNhbGxlZCBvbmNlIHtAbGluayBwbHVnaW5TZXR0aW5nc0NvbXBvbmVudH0gcmVwb3J0cyBpdHMgc2V0dGluZ3MgbG9hZGVkLCBzbyBhbiBpbXBsZW1lbnRhdGlvblxuICAgKiB0aGF0IHJlYWRzIGEgc2V0dGluZyByZWFkcyB0aGUgc3RvcmVkIHZhbHVlIHJhdGhlciB0aGFuIGl0cyBkZWZhdWx0LlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgdmVyc2lvbnMgYWxyZWFkeSBzaG93bi5cbiAgICovXG4gIHJlYWRvbmx5IGdldFNob3duUmVsZWFzZU5vdGVWZXJzaW9uczogKCkgPT4gcmVhZG9ubHkgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBkaXNwbGF5IG5hbWUgb2YgdGhlIHBsdWdpbiwgc2hvd24gaW4gdGhlIHBvcHVwIHRpdGxlLlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2V0dGluZ3MgY29tcG9uZW50IGhvbGRpbmcgd2hhdGV2ZXIge0BsaW5rIGdldFNob3duUmVsZWFzZU5vdGVWZXJzaW9uc30gcmVhZHMuXG4gICAqXG4gICAqIFRha2VuIGFzIGEgd2hvbGUgY29tcG9uZW50IHJhdGhlciB0aGFuIGFzIGEgYmFyZSBcInJlYWR5XCIgZmxhZywgc28gdGhlIGhvc3QgY2Fubm90IGZvcmdldCB0byB3aXJlIHRoZVxuICAgKiB3YWl0LlxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luU2V0dGluZ3NDb21wb25lbnQ6IFBsdWdpblNldHRpbmdzQ29tcG9uZW50QmFzZTxvYmplY3Q+O1xuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIHJlbGVhc2Ugbm90ZXMuXG4gICAqXG4gICAqIENhbGxlZCBhdCBsYXlvdXQgcmVhZHkgcmF0aGVyIHRoYW4gYXQgY29uc3RydWN0aW9uLCBzbyB0aGUgZnJhZ21lbnRzIGFyZSBidWlsdCBvbmx5IHdoZW4gdGhleSBtYXkgYmVcbiAgICogc2hvd24sIGFuZCBhIGxvY2FsaXplZCBzdHJpbmcgaXMgcmVhZCBhZnRlciB0aGUgaG9zdCdzIHRyYW5zbGF0aW9ucyBhcmUgc2V0IHVwLlxuICAgKlxuICAgKiBFdmVyeSBrZXkgbXVzdCBiZSBhIHZhbGlkIHNlbWFudGljIHZlcnNpb24uIFRoZSBub3RlcyBhcmUgc2hvd24gaW4gYXNjZW5kaW5nIHZlcnNpb24gb3JkZXIsIHdoYXRldmVyXG4gICAqIG9yZGVyIHRoZSBrZXlzIHdlcmUgd3JpdHRlbiBpbi5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIHJlbGVhc2Ugbm90ZXMuXG4gICAqL1xuICByZWFkb25seSByZWxlYXNlTm90ZXNQcm92aWRlcjogKCkgPT4gUmVsZWFzZU5vdGVzO1xuXG4gIC8qKlxuICAgKiBSZWNvcmRzIHRoZSB2ZXJzaW9ucyB3aG9zZSBub3RlcyB0aGUgdXNlciBoYXMgbm93IHNlZW4uXG4gICAqXG4gICAqIENhbGxlZCBiZWZvcmUgdGhlIHBvcHVwIGlzIHNob3duLCB3aXRoIHRoZSBmdWxsIGxpc3Q6IHRoZSB2ZXJzaW9ucyBhbHJlYWR5IHNob3duIGZvbGxvd2VkIGJ5IHRoZSBvbmVzXG4gICAqIGFib3V0IHRvIGJlLlxuICAgKlxuICAgKiBAcGFyYW0gdmVyc2lvbnMgLSBUaGUgdmVyc2lvbnMgc2hvd24uXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgbGlzdCBpcyBwZXJzaXN0ZWQuXG4gICAqL1xuICByZWFkb25seSBzZXRTaG93blJlbGVhc2VOb3RlVmVyc2lvbnM6ICh2ZXJzaW9uczogcmVhZG9ubHkgc3RyaW5nW10pID0+IFByb21pc2FibGU8dm9pZD47XG5cbiAgLyoqXG4gICAqIERlY2lkZXMgd2hldGhlciB0aGUgcmVsZWFzZSBub3RlcyBtYXkgYmUgc2hvd24gbm93LlxuICAgKlxuICAgKiBXaGVuIGl0IHJldHVybnMgYGZhbHNlYCwgbm90aGluZyBpcyBzaG93biBhbmQgbm90aGluZyBpcyByZWNvcmRlZCwgc28gdGhlIG5vdGVzIGFyZSBzaG93biBhdCBhIGxhdGVyXG4gICAqIHN0YXJ0IG9uY2UgaXQgcmV0dXJucyBgdHJ1ZWAuIFVzZSBpdCB3aGVuIHRoZSBub3RlcyBvbmx5IG1ha2Ugc2Vuc2Ugd2hpbGUgc29tZSBmZWF0dXJlIGlzIG9uLlxuICAgKlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiB0aGUgbm90ZXMgbWF5IGJlIHNob3duLlxuICAgKiBAZGVmYXVsdCBBbHdheXMgYHRydWVgLlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvdWxkU2hvd1JlbGVhc2VOb3Rlcz86ICgpID0+IFByb21pc2FibGU8Ym9vbGVhbj47XG59XG5cbi8qKlxuICogU2hvd3MgYSBwbHVnaW4ncyByZWxlYXNlIG5vdGVzIHRoYXQgdGhlIHVzZXIgaGFzIG5vdCBzZWVuIHlldCwgb25jZSB0aGUgd29ya3NwYWNlIGxheW91dCBpcyByZWFkeS5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlbGVhc2VOb3Rlc0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEV4IHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBhcHAgaW5zdGFuY2UuXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXBwOiBBcHA7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXNwbGF5IG5hbWUgb2YgdGhlIHBsdWdpbiwgc2hvd24gaW4gdGhlIHBvcHVwIHRpdGxlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHBsdWdpbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNldHRpbmdzIGNvbXBvbmVudCB3aG9zZSBsb2FkIGlzIGF3YWl0ZWQgYmVmb3JlIHRoZSBzaG93biB2ZXJzaW9ucyBhcmUgcmVhZC5cbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBwbHVnaW5TZXR0aW5nc0NvbXBvbmVudDogUGx1Z2luU2V0dGluZ3NDb21wb25lbnRCYXNlPG9iamVjdD47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBnZXRTaG93blJlbGVhc2VOb3RlVmVyc2lvbnM6ICgpID0+IHJlYWRvbmx5IHN0cmluZ1tdO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlbGVhc2VOb3Rlc1Byb3ZpZGVyOiAoKSA9PiBSZWxlYXNlTm90ZXM7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2V0U2hvd25SZWxlYXNlTm90ZVZlcnNpb25zOiAodmVyc2lvbnM6IHJlYWRvbmx5IHN0cmluZ1tdKSA9PiBQcm9taXNhYmxlPHZvaWQ+O1xuICBwcml2YXRlIHJlYWRvbmx5IHNob3VsZFNob3dSZWxlYXNlTm90ZXM6ICgpID0+IFByb21pc2FibGU8Ym9vbGVhbj47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2Yge0BsaW5rIFJlbGVhc2VOb3Rlc0NvbXBvbmVudH0uXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgY29uc3RydWN0b3IgcGFyYW1ldGVycy5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJhbXM6IFJlbGVhc2VOb3Rlc0NvbXBvbmVudENvbnN0cnVjdG9yUGFyYW1zKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFwcCA9IHBhcmFtcy5hcHA7XG4gICAgdGhpcy5nZXRTaG93blJlbGVhc2VOb3RlVmVyc2lvbnMgPSBwYXJhbXMuZ2V0U2hvd25SZWxlYXNlTm90ZVZlcnNpb25zO1xuICAgIHRoaXMucGx1Z2luTmFtZSA9IHBhcmFtcy5wbHVnaW5OYW1lO1xuICAgIHRoaXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQgPSBwYXJhbXMucGx1Z2luU2V0dGluZ3NDb21wb25lbnQ7XG4gICAgdGhpcy5yZWxlYXNlTm90ZXNQcm92aWRlciA9IHBhcmFtcy5yZWxlYXNlTm90ZXNQcm92aWRlcjtcbiAgICB0aGlzLnNldFNob3duUmVsZWFzZU5vdGVWZXJzaW9ucyA9IHBhcmFtcy5zZXRTaG93blJlbGVhc2VOb3RlVmVyc2lvbnM7XG4gICAgdGhpcy5zaG91bGRTaG93UmVsZWFzZU5vdGVzID0gcGFyYW1zLnNob3VsZFNob3dSZWxlYXNlTm90ZXMgPz8gKCgpOiBib29sZWFuID0+IHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIHRoZSBjb21wb25lbnQsIHNob3dpbmcgdGhlIHVuc2VlbiByZWxlYXNlIG5vdGVzIG9uY2UgdGhlIGxheW91dCBpcyByZWFkeSBBTkQgdGhlIGhvc3QncyBzZXR0aW5nc1xuICAgKiBoYXZlIGJlZW4gcmVhZCBmcm9tIGRpc2suXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgb25sb2FkKCk6IHZvaWQge1xuICAgIHRoaXMuYWRkQ2hpbGQoXG4gICAgICBuZXcgQ2FsbGJhY2tMYXlvdXRSZWFkeUNvbXBvbmVudCh0aGlzLmFwcCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLnBsdWdpblNldHRpbmdzQ29tcG9uZW50LndoZW5Mb2FkZWRGcm9tRmlsZSgpO1xuICAgICAgICBpZiAodGhpcy5pc1VubG9hZGVkKCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCB0aGlzLnNob3dVbnNlZW5SZWxlYXNlTm90ZXMoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93cyB0aGUgcmVsZWFzZSBub3RlcyB0aGUgdXNlciBoYXMgbm90IHNlZW4geWV0LCBhbmQgcmVjb3JkcyB0aGVtIGFzIHNlZW4uXG4gICAqXG4gICAqIERvZXMgbm90aGluZyB3aGVuIHtAbGluayBSZWxlYXNlTm90ZXNDb21wb25lbnRDb25zdHJ1Y3RvclBhcmFtcy5zaG91bGRTaG93UmVsZWFzZU5vdGVzfSBkZWNsaW5lcywgb3Igd2hlblxuICAgKiBldmVyeSBub3RlIGhhcyBiZWVuIHNob3duIGFscmVhZHkuXG4gICAqXG4gICAqIEByZXR1cm5zIEEge0BsaW5rIFByb21pc2V9IHRoYXQgcmVzb2x2ZXMgb25jZSB0aGUgcG9wdXAgaXMgY2xvc2VkLCBvciBhdCBvbmNlIHdoZW4gbm90aGluZyBpcyBzaG93bi5cbiAgICovXG4gIHByb3RlY3RlZCBhc3luYyBzaG93VW5zZWVuUmVsZWFzZU5vdGVzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghYXdhaXQgdGhpcy5zaG91bGRTaG93UmVsZWFzZU5vdGVzKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzaG93blZlcnNpb25zID0gdGhpcy5nZXRTaG93blJlbGVhc2VOb3RlVmVyc2lvbnMoKTtcbiAgICBjb25zdCBzaG93blZlcnNpb25TZXQgPSBuZXcgU2V0KHNob3duVmVyc2lvbnMpO1xuICAgIGNvbnN0IHVuc2VlblJlbGVhc2VOb3RlcyA9IE9iamVjdC5lbnRyaWVzKHRoaXMucmVsZWFzZU5vdGVzUHJvdmlkZXIoKSlcbiAgICAgIC5maWx0ZXIoKFt2ZXJzaW9uXSkgPT4gIXNob3duVmVyc2lvblNldC5oYXModmVyc2lvbikpXG4gICAgICAuc29ydCgoW3ZlcnNpb24xXSwgW3ZlcnNpb24yXSkgPT4gY29tcGFyZVZlcnNpb25zKHZlcnNpb24xLCB2ZXJzaW9uMikpO1xuXG4gICAgaWYgKHVuc2VlblJlbGVhc2VOb3Rlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlRnJhZ21lbnQoKTtcbiAgICBmb3IgKGNvbnN0IFt2ZXJzaW9uLCByZWxlYXNlTm90ZV0gb2YgdW5zZWVuUmVsZWFzZU5vdGVzKSB7XG4gICAgICBtZXNzYWdlLmNyZWF0ZUVsKCdoMycsIHsgdGV4dDogdmVyc2lvbiB9KTtcbiAgICAgIG1lc3NhZ2UuYXBwZW5kKHJlbGVhc2VOb3RlKTtcbiAgICB9XG5cbiAgICAvLyBSZWNvcmRlZCBiZWZvcmUgdGhlIHBvcHVwIGlzIHNob3duLCBzbyBhIHVzZXIgd2hvIHJlbG9hZHMgd2l0aG91dCBjbG9zaW5nIGl0IGlzIG5vdCBzaG93biBpdCBhZ2Fpbi5cbiAgICBhd2FpdCB0aGlzLnNldFNob3duUmVsZWFzZU5vdGVWZXJzaW9ucyhbLi4uc2hvd25WZXJzaW9ucywgLi4udW5zZWVuUmVsZWFzZU5vdGVzLm1hcCgoW3ZlcnNpb25dKSA9PiB2ZXJzaW9uKV0pO1xuXG4gICAgYXdhaXQgYWxlcnQoe1xuICAgICAgYXBwOiB0aGlzLmFwcCxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICB0aXRsZTogY3JlYXRlRnJhZ21lbnRXaXRoQ29kZUJsb2Nrcyh0KCgkKSA9PiAkLm9ic2lkaWFuRGV2VXRpbHMucmVsZWFzZU5vdGVzLnRpdGxlLCB7IHBsdWdpbk5hbWU6IGFzQ29kZUJsb2NrKHRoaXMucGx1Z2luTmFtZSkgfSkpXG4gICAgfSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQW1CQSw4QkFBZ0M7QUFJaEMsMEJBR087QUFDUCxrQkFBa0I7QUFDbEIsbUJBQXNCO0FBQ3RCLDBCQUE0QjtBQUM1QixvQ0FBNkM7QUFpRnRDLE1BQU0sOEJBQThCLGdDQUFZO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFJbEM7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQUtBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBLEVBRUY7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPVixZQUFZLFFBQWdEO0FBQ2pFLFVBQU07QUFDTixTQUFLLE1BQU0sT0FBTztBQUNsQixTQUFLLDhCQUE4QixPQUFPO0FBQzFDLFNBQUssYUFBYSxPQUFPO0FBQ3pCLFNBQUssMEJBQTBCLE9BQU87QUFDdEMsU0FBSyx1QkFBdUIsT0FBTztBQUNuQyxTQUFLLDhCQUE4QixPQUFPO0FBQzFDLFNBQUsseUJBQXlCLE9BQU8sMkJBQTJCLE1BQWU7QUFBQSxFQUNqRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFNZ0IsU0FBZTtBQUM3QixTQUFLO0FBQUEsTUFDSCxJQUFJLDJEQUE2QixLQUFLLEtBQUssWUFBWTtBQUNyRCxjQUFNLEtBQUssd0JBQXdCLG1CQUFtQjtBQUN0RCxZQUFJLEtBQUssV0FBVyxHQUFHO0FBQ3JCO0FBQUEsUUFDRjtBQUVBLGNBQU0sS0FBSyx1QkFBdUI7QUFBQSxNQUNwQyxDQUFDO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFVQSxNQUFnQix5QkFBd0M7QUFDdEQsUUFBSSxDQUFDLE1BQU0sS0FBSyx1QkFBdUIsR0FBRztBQUN4QztBQUFBLElBQ0Y7QUFFQSxVQUFNLGdCQUFnQixLQUFLLDRCQUE0QjtBQUN2RCxVQUFNLGtCQUFrQixJQUFJLElBQUksYUFBYTtBQUM3QyxVQUFNLHFCQUFxQixPQUFPLFFBQVEsS0FBSyxxQkFBcUIsQ0FBQyxFQUNsRSxPQUFPLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxnQkFBZ0IsSUFBSSxPQUFPLENBQUMsRUFDbkQsS0FBSyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsUUFBUSxVQUFNLHlDQUFnQixVQUFVLFFBQVEsQ0FBQztBQUV2RSxRQUFJLG1CQUFtQixXQUFXLEdBQUc7QUFDbkM7QUFBQSxJQUNGO0FBRUEsVUFBTSxVQUFVLGVBQWU7QUFDL0IsZUFBVyxDQUFDLFNBQVMsV0FBVyxLQUFLLG9CQUFvQjtBQUN2RCxjQUFRLFNBQVMsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3hDLGNBQVEsT0FBTyxXQUFXO0FBQUEsSUFDNUI7QUFHQSxVQUFNLEtBQUssNEJBQTRCLENBQUMsR0FBRyxlQUFlLEdBQUcsbUJBQW1CLElBQUksQ0FBQyxDQUFDLE9BQU8sTUFBTSxPQUFPLENBQUMsQ0FBQztBQUU1RyxjQUFNLG9CQUFNO0FBQUEsTUFDVixLQUFLLEtBQUs7QUFBQSxNQUNWO0FBQUEsTUFDQSxXQUFPLHNEQUE2QixlQUFFLENBQUMsTUFBTSxFQUFFLGlCQUFpQixhQUFhLE9BQU8sRUFBRSxnQkFBWSxpQ0FBWSxLQUFLLFVBQVUsRUFBRSxDQUFDLENBQUM7QUFBQSxJQUNuSSxDQUFDO0FBQUEsRUFDSDtBQUNGOyIsIm5hbWVzIjpbXX0=