@mnaoumov/obsidian-lib 10.11.0 → 10.12.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 (117) hide show
  1. package/README.md +26 -0
  2. package/components/all-windows-status-bar-item-component/package.json +6 -0
  3. package/components/shared-component-pool-component/package.json +6 -0
  4. package/components/workspace-layout-state-component/package.json +6 -0
  5. package/dist/lib/cjs/__merged.cjs +76 -1
  6. package/dist/lib/cjs/__merged.d.cts +11 -4
  7. package/dist/lib/cjs/bug-report-diagnostics.cjs +222 -0
  8. package/dist/lib/cjs/bug-report-diagnostics.d.cts +186 -0
  9. package/dist/lib/cjs/bug-report.cjs +36 -10
  10. package/dist/lib/cjs/bug-report.d.cts +65 -0
  11. package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.cjs +93 -2
  12. package/dist/lib/cjs/command-handlers/open-bug-report-command-handler.d.cts +34 -2
  13. package/dist/lib/cjs/components/all-windows-status-bar-item-component.cjs +245 -0
  14. package/dist/lib/cjs/components/all-windows-status-bar-item-component.d.cts +146 -0
  15. package/dist/lib/cjs/components/embed-extensions-component.cjs +20 -3
  16. package/dist/lib/cjs/components/embed-extensions-component.d.cts +8 -0
  17. package/dist/lib/cjs/components/embeddable-markdown-editor-component.cjs +16 -2
  18. package/dist/lib/cjs/components/embeddable-markdown-editor-component.d.cts +9 -0
  19. package/dist/lib/cjs/components/index.cjs +12 -3
  20. package/dist/lib/cjs/components/index.d.cts +3 -0
  21. package/dist/lib/cjs/components/plugin-gate-component.cjs +2 -9
  22. package/dist/lib/cjs/components/plugin-settings-component.cjs +7 -2
  23. package/dist/lib/cjs/components/shared-component-pool-component.cjs +368 -0
  24. package/dist/lib/cjs/components/shared-component-pool-component.d.cts +129 -0
  25. package/dist/lib/cjs/components/workspace-layout-state-component.cjs +495 -0
  26. package/dist/lib/cjs/components/workspace-layout-state-component.d.cts +239 -0
  27. package/dist/lib/cjs/css-class.cjs +5 -1
  28. package/dist/lib/cjs/css-class.d.cts +16 -0
  29. package/dist/lib/cjs/data-handler.cjs +156 -5
  30. package/dist/lib/cjs/data-handler.d.cts +128 -2
  31. package/dist/lib/cjs/desktop-git-runner.cjs +4 -14
  32. package/dist/lib/cjs/desktop-git-runner.d.cts +8 -2
  33. package/dist/lib/cjs/generated-during-build.cjs +2 -2
  34. package/dist/lib/cjs/git-rename-history.cjs +1 -1
  35. package/dist/lib/cjs/git-rename-history.d.cts +2 -2
  36. package/dist/lib/cjs/i18n/locales/en.cjs +23 -1
  37. package/dist/lib/cjs/i18n/locales/en.d.cts +22 -0
  38. package/dist/lib/cjs/i18n/locales/translations-map.d.cts +22 -0
  39. package/dist/lib/cjs/index.cjs +4 -1
  40. package/dist/lib/cjs/index.d.cts +1 -0
  41. package/dist/lib/cjs/markdown-view.cjs +191 -3
  42. package/dist/lib/cjs/markdown-view.d.cts +48 -1
  43. package/dist/lib/cjs/modals/copy-text-manually.cjs +181 -0
  44. package/dist/lib/cjs/modals/copy-text-manually.d.cts +38 -0
  45. package/dist/lib/cjs/modals/index.cjs +7 -1
  46. package/dist/lib/cjs/modals/index.d.cts +2 -0
  47. package/dist/lib/cjs/modals/review-bug-report-diagnostics.cjs +202 -0
  48. package/dist/lib/cjs/modals/review-bug-report-diagnostics.d.cts +30 -0
  49. package/dist/lib/cjs/plugin/index.cjs +4 -1
  50. package/dist/lib/cjs/plugin/index.d.cts +1 -0
  51. package/dist/lib/cjs/plugin/plugin-api.cjs +13 -4
  52. package/dist/lib/cjs/plugin/plugin-api.d.cts +5 -1
  53. package/dist/lib/cjs/plugin/plugin-install-state.cjs +46 -1
  54. package/dist/lib/cjs/plugin/plugin-install-state.d.cts +30 -0
  55. package/dist/lib/cjs/plugin/plugin-instance.cjs +448 -0
  56. package/dist/lib/cjs/plugin/plugin-instance.d.cts +251 -0
  57. package/dist/lib/cjs/plugin/plugin.cjs +16 -1
  58. package/dist/lib/cjs/plugin/plugin.d.cts +7 -0
  59. package/dist/lib/esm/__merged.d.mts +11 -4
  60. package/dist/lib/esm/__merged.mjs +83 -3
  61. package/dist/lib/esm/bug-report-diagnostics.d.mts +186 -0
  62. package/dist/lib/esm/bug-report-diagnostics.mjs +127 -0
  63. package/dist/lib/esm/bug-report.d.mts +65 -0
  64. package/dist/lib/esm/bug-report.mjs +33 -10
  65. package/dist/lib/esm/command-handlers/open-bug-report-command-handler.d.mts +34 -2
  66. package/dist/lib/esm/command-handlers/open-bug-report-command-handler.mjs +99 -3
  67. package/dist/lib/esm/components/all-windows-status-bar-item-component.d.mts +146 -0
  68. package/dist/lib/esm/components/all-windows-status-bar-item-component.mjs +154 -0
  69. package/dist/lib/esm/components/embed-extensions-component.d.mts +8 -0
  70. package/dist/lib/esm/components/embed-extensions-component.mjs +20 -3
  71. package/dist/lib/esm/components/embeddable-markdown-editor-component.d.mts +9 -0
  72. package/dist/lib/esm/components/embeddable-markdown-editor-component.mjs +16 -2
  73. package/dist/lib/esm/components/index.d.mts +3 -0
  74. package/dist/lib/esm/components/index.mjs +8 -2
  75. package/dist/lib/esm/components/plugin-gate-component.mjs +5 -13
  76. package/dist/lib/esm/components/plugin-settings-component.mjs +7 -2
  77. package/dist/lib/esm/components/shared-component-pool-component.d.mts +129 -0
  78. package/dist/lib/esm/components/shared-component-pool-component.mjs +280 -0
  79. package/dist/lib/esm/components/workspace-layout-state-component.d.mts +239 -0
  80. package/dist/lib/esm/components/workspace-layout-state-component.mjs +404 -0
  81. package/dist/lib/esm/css-class.d.mts +16 -0
  82. package/dist/lib/esm/css-class.mjs +5 -1
  83. package/dist/lib/esm/data-handler.d.mts +128 -2
  84. package/dist/lib/esm/data-handler.mjs +152 -4
  85. package/dist/lib/esm/desktop-git-runner.d.mts +8 -2
  86. package/dist/lib/esm/desktop-git-runner.mjs +3 -3
  87. package/dist/lib/esm/generated-during-build.mjs +2 -2
  88. package/dist/lib/esm/git-rename-history.d.mts +2 -2
  89. package/dist/lib/esm/git-rename-history.mjs +1 -1
  90. package/dist/lib/esm/i18n/locales/en.d.mts +22 -0
  91. package/dist/lib/esm/i18n/locales/en.mjs +23 -1
  92. package/dist/lib/esm/i18n/locales/translations-map.d.mts +22 -0
  93. package/dist/lib/esm/index.d.mts +1 -0
  94. package/dist/lib/esm/index.mjs +3 -1
  95. package/dist/lib/esm/markdown-view.d.mts +48 -1
  96. package/dist/lib/esm/markdown-view.mjs +192 -2
  97. package/dist/lib/esm/modals/copy-text-manually.d.mts +38 -0
  98. package/dist/lib/esm/modals/copy-text-manually.mjs +99 -0
  99. package/dist/lib/esm/modals/index.d.mts +2 -0
  100. package/dist/lib/esm/modals/index.mjs +5 -1
  101. package/dist/lib/esm/modals/review-bug-report-diagnostics.d.mts +30 -0
  102. package/dist/lib/esm/modals/review-bug-report-diagnostics.mjs +120 -0
  103. package/dist/lib/esm/plugin/index.d.mts +1 -0
  104. package/dist/lib/esm/plugin/index.mjs +3 -1
  105. package/dist/lib/esm/plugin/plugin-api.d.mts +5 -1
  106. package/dist/lib/esm/plugin/plugin-api.mjs +13 -4
  107. package/dist/lib/esm/plugin/plugin-install-state.d.mts +30 -0
  108. package/dist/lib/esm/plugin/plugin-install-state.mjs +44 -1
  109. package/dist/lib/esm/plugin/plugin-instance.d.mts +251 -0
  110. package/dist/lib/esm/plugin/plugin-instance.mjs +366 -0
  111. package/dist/lib/esm/plugin/plugin.d.mts +7 -0
  112. package/dist/lib/esm/plugin/plugin.mjs +16 -1
  113. package/dist/styles.css +16 -1
  114. package/modals/copy-text-manually/package.json +6 -0
  115. package/modals/review-bug-report-diagnostics/package.json +6 -0
  116. package/package.json +2 -1
  117. package/plugin/plugin-instance/package.json +6 -0
@@ -63,6 +63,17 @@ class EmbeddableMarkdownEditorComponent extends ComponentEx {
63
63
  get editorView() {
64
64
  return this.getScrollableEditor().cm;
65
65
  }
66
+ /**
67
+ * Whether the editor holds the focus within its window.
68
+ *
69
+ * Unlike CodeMirror's `EditorView.hasFocus`, this does not also require the window to have the operating system's
70
+ * focus, so it stays `true` while the user is in another application or another Obsidian window is in front.
71
+ *
72
+ * @returns `true` when the editor's content element is its document's active element.
73
+ */
74
+ get hasFocus() {
75
+ return isEditorViewFocusedInItsWindow(this.getScrollableEditor().activeCM);
76
+ }
66
77
  /**
67
78
  * The current document.
68
79
  *
@@ -161,7 +172,7 @@ class EmbeddableMarkdownEditorComponent extends ComponentEx {
161
172
  $object: this.app.workspace,
162
173
  methodName: "setActiveLeaf",
163
174
  patchHandler: ({ fallback }) => {
164
- if (scrollableEditor.activeCM.hasFocus) {
175
+ if (isEditorViewFocusedInItsWindow(scrollableEditor.activeCM)) {
165
176
  return;
166
177
  }
167
178
  fallback();
@@ -287,7 +298,10 @@ function getScrollableMarkdownEditorConstructor(app) {
287
298
  widgetEditorView.unload();
288
299
  }
289
300
  }
301
+ function isEditorViewFocusedInItsWindow(editorView) {
302
+ return editorView.root.activeElement === editorView.contentDOM;
303
+ }
290
304
  export {
291
305
  EmbeddableMarkdownEditorComponent
292
306
  };
293
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2VtYmVkZGFibGUtbWFya2Rvd24tZWRpdG9yLWNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgY2xhc3Mge0BsaW5rIEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudH06IGEgZnVsbCBPYnNpZGlhbiBNYXJrZG93biBlZGl0b3IgKExpdmUgUHJldmlldywgZWRpdG9yXG4gKiBjb21tYW5kcywgaG90a2V5cykgbW91bnRlZCBpbiBhbnkgZWxlbWVudCBhbmQgb3duZWQgYXMgYSBjb21wb25lbnQuXG4gKlxuICogT2JzaWRpYW4gZG9lcyBub3QgZXhwb3J0IGl0cyBlZGl0b3IgY2xhc3MsIHNvIHRoZSBjb21wb25lbnQgYm9ycm93cyBpdCBmcm9tIGEgdGhyb3dhd2F5IE1hcmtkb3duIGVtYmVkOiBhbiBlZGl0YWJsZVxuICogZW1iZWQgYnVpbGRzIGFuIGlmcmFtZWQgZWRpdG9yIHdob3NlIGdyYW5kcGFyZW50IHByb3RvdHlwZSBpcyB0aGUgc2Nyb2xsYWJsZSBNYXJrZG93biBlZGl0b3IgZXZlcnkgZW1iZWQgYW5kIHRhYmxlXG4gKiBjZWxsIGVkaXRvciB1c2VzLiBUaGUgcHJvYmUgb3BlbnMgbm8gbGVhZiBhbmQgZmlyZXMgbm8gd29ya3NwYWNlIGV2ZW50IChgZW1iZWRkYWJsZS1tYXJrZG93bi1lZGl0b3ItY29tcG9uZW50XG4gKiAub2JzaWRpYW4uaW50ZWdyYXRpb24udGVzdC50c2AgbWVhc3VyZXMgdGhhdCksIGFuZCBpdCBydW5zIG9uY2UgcGVyIGNvcHkgb2YgdGhpcyBsaWJyYXJ5LCBvbiBmaXJzdCB1c2UgcmF0aGVyIHRoYW4gYXRcbiAqIG1vZHVsZSBsb2FkLiBUaGUgY2xhc3MgaXMgY2FjaGVkIHBlciBjb3B5IGFuZCBuZXZlciBpbiB0aGUgc2hhcmVkLXN0YXRlIGJhZywgYmVjYXVzZSBhIGNvbnN0cnVjdG9yIGlzIG5vdCBwbGFpbiBkYXRhLlxuICpcbiAqIEFkYXB0ZWQgZnJvbSB0aGUgXCJFbWJlZGRhYmxlIENNIE1hcmtkb3duIEVkaXRvclwiIGdpc3RcbiAqIChodHRwczovL2dpc3QuZ2l0aHViLmNvbS9GZXZvbC9jYWE0NzhjZTMwM2U2OWVhYmVkZTdiMTJiMjMyMzgzOCksIGl0c2VsZiBhIHJld29yayBvZiB0aGUgYEthbmJhbmAgcGx1Z2luJ3NcbiAqIGBzcmMvY29tcG9uZW50cy9FZGl0b3IvTWFya2Rvd25FZGl0b3IudHN4YCwgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGJlbG93LlxuICpcbiAqIENvcHlyaWdodCAyMDI0IE1hdHRoZXcgTWV5ZXJzLCBGZXZvbFxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZFxuICogZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIOKAnFNvZnR3YXJl4oCdKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGVcbiAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0b1xuICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZVxuICogU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIOKAnEFTIElT4oCdLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1JcbiAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1JcbiAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4vLyBjc3BlbGw6d29yZHMgRmV2b2wgLS0gVGhlIGdpc3QgYXV0aG9yJ3MgaGFuZGxlLCBhcyB0aGUgbGljZW5zZSBub3RpY2UgYWJvdmUgbmFtZXMgaXQuXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBCdWlsZHMgb24gT2JzaWRpYW4ncyB1bmV4cG9ydGVkIGVkaXRvciBjbGFzcywgd2hpY2ggb25seSBhIHJ1bm5pbmcgT2JzaWRpYW4gaGFzOyBjb3ZlcmVkIGJ5IGl0cyBpbnRlZ3JhdGlvbiB0ZXN0LiAqL1xuXG5pbXBvcnQgdHlwZSB7IEV4dGVuc2lvbiB9IGZyb20gJ0Bjb2RlbWlycm9yL3N0YXRlJztcbmltcG9ydCB0eXBlIHsgVmlld1VwZGF0ZSB9IGZyb20gJ0Bjb2RlbWlycm9yL3ZpZXcnO1xuaW1wb3J0IHR5cGUge1xuICBFeHRyYWN0Q29uc3RydWN0b3IsXG4gIE1hcmtkb3duU2Nyb2xsYWJsZUVkaXRWaWV3LFxuICBNYXJrZG93blNjcm9sbGFibGVFZGl0Vmlld093bmVyLFxuICBXaWRnZXRFZGl0b3JWaWV3XG59IGZyb20gJ0BvYnNpZGlhbi10eXBpbmdzL29ic2lkaWFuLXB1YmxpYy1sYXRlc3QnO1xuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIEVkaXRvcixcbiAgVEZpbGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQge1xuICBFZGl0b3JTZWxlY3Rpb24sXG4gIFByZWNcbn0gZnJvbSAnQGNvZGVtaXJyb3Ivc3RhdGUnO1xuaW1wb3J0IHtcbiAgRWRpdG9yVmlldyxcbiAga2V5bWFwLFxuICBwbGFjZWhvbGRlclxufSBmcm9tICdAY29kZW1pcnJvci92aWV3JztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZnVuY3Rpb24nO1xuaW1wb3J0IHsgY2FzdFRvIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL29iamVjdC11dGlscyc7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5pbXBvcnQgeyBTY29wZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgQ29tcG9uZW50RXggfSBmcm9tICcuL2NvbXBvbmVudC1leC50cyc7XG5pbXBvcnQgeyBNb25rZXlBcm91bmRDb21wb25lbnQgfSBmcm9tICcuL21vbmtleS1hcm91bmQtY29tcG9uZW50LnRzJztcblxuLyoqXG4gKiBUaGUgcGFyYW1ldGVycyBvZiB0aGUge0BsaW5rIEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudH0gY29uc3RydWN0b3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1iZWRkYWJsZU1hcmtkb3duRWRpdG9yQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBhZGRlZCB0byB0aGUgZWRpdG9yIGVsZW1lbnQuXG4gICAqL1xuICByZWFkb25seSBjbHM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoZSBlZGl0b3IgaXMgbW91bnRlZCBpbi4gVGhlIGVkaXRvciBhcHBlbmRzIGl0cyBvd24gZWxlbWVudCB0byBpdCBhbmQgcmVtb3ZlcyBvbmx5IHRoYXQgZWxlbWVudCB3aGVuXG4gICAqIGl0IHVubG9hZHMuXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJFbDogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsIHNlbGVjdGlvbiwgYXMgZG9jdW1lbnQgb2Zmc2V0cy4gVGhlIGN1cnNvciBzdGFydHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZG9jdW1lbnQgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgY3Vyc29yTG9jYXRpb24/OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnRTZWxlY3Rpb247XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBlZGl0b3IgbG9zZXMgZm9jdXMsIHdoaWxlIHRoZSBjb21wb25lbnQgaXMgc3RpbGwgbG9hZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgb25CbHVyPzogKGNvbXBvbmVudDogRW1iZWRkYWJsZU1hcmtkb3duRWRpdG9yQ29tcG9uZW50KSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgZXZlcnkgY2hhbmdlIHRvIHRoZSBkb2N1bWVudC5cbiAgICovXG4gIHJlYWRvbmx5IG9uQ2hhbmdlPzogKHVwZGF0ZTogVmlld1VwZGF0ZSwgY29tcG9uZW50OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnQpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBvbiBgRW50ZXJgLCBgU2hpZnQrRW50ZXJgLCBgTW9kK0VudGVyYCBhbmQgYE1vZCtTaGlmdCtFbnRlcmAuXG4gICAqXG4gICAqIFdoZW4gZ2l2ZW4sIGBNb2QrRW50ZXJgIG5vIGxvbmdlciBydW5zIHRoZSBPYnNpZGlhbiBob3RrZXkgYm91bmQgdG8gaXQgKGJ5IGRlZmF1bHQsIG9wZW5pbmcgdGhlIGxpbmsgdW5kZXIgdGhlXG4gICAqIGN1cnNvciBpbiBhIG5ldyB0YWIpIHdoaWxlIHRoZSBlZGl0b3IgaGFzIHRoZSBmb2N1cywgc28gYSBmb3JtIGNhbiB1c2UgaXQgdG8gc3VibWl0LlxuICAgKlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiB0aGUga2V5IHdhcyBoYW5kbGVkLCB3aGljaCBzdG9wcyB0aGUgZWRpdG9yIGluc2VydGluZyBhIGxpbmUgYnJlYWs7IGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgb25FbnRlcj86IChwYXJhbXM6IEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudEVudGVyUGFyYW1zKSA9PiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgb24gYEVzY2FwZWAuIFdoZW4gZ2l2ZW4sIHRoZSBrZXkgZ29lcyBubyBmdXJ0aGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgb25Fc2NhcGU/OiAoY29tcG9uZW50OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnQpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBvbiBhIHBhc3RlIGludG8gdGhlIGVkaXRvciwgYmVmb3JlIHRoZSBlZGl0b3IgaGFuZGxlcyBpdC5cbiAgICovXG4gIHJlYWRvbmx5IG9uUGFzdGU/OiAoJGV2ZW50OiBDbGlwYm9hcmRFdmVudCwgY29tcG9uZW50OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnQpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHNob3duIHdoaWxlIHRoZSBkb2N1bWVudCBpcyBlbXB0eS5cbiAgICovXG4gIHJlYWRvbmx5IHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5pdGlhbCBkb2N1bWVudC5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBwYXJhbWV0ZXJzIG9mIHtAbGluayBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnRDb25zdHJ1Y3RvclBhcmFtcy5vbkVudGVyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnRFbnRlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgZWRpdG9yIGNvbXBvbmVudCB0aGUga2V5IHdhcyBwcmVzc2VkIGluLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHBsYXRmb3JtIG1vZGlmaWVyIChgQ3RybGAsIG9yIGBDbWRgIG9uIG1hY09TKSB3YXMgaGVsZC5cbiAgICovXG4gIHJlYWRvbmx5IGlzTW9kaWZpZXJQcmVzc2VkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGBTaGlmdGAgd2FzIGhlbGQuXG4gICAqL1xuICByZWFkb25seSBpc1NoaWZ0UHJlc3NlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIHNlbGVjdGlvbiBpbiBhbiB7QGxpbmsgRW1iZWRkYWJsZU1hcmtkb3duRWRpdG9yQ29tcG9uZW50fSwgYXMgZG9jdW1lbnQgb2Zmc2V0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnRTZWxlY3Rpb24ge1xuICAvKipcbiAgICogVGhlIG9mZnNldCB0aGUgc2VsZWN0aW9uIHN0YXJ0cyBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgYW5jaG9yOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBvZmZzZXQgdGhlIHNlbGVjdGlvbiBleHRlbmRzIHRvLCB3aGVyZSB0aGUgY3Vyc29yIGlzLlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhZDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgRWRpdG9ySG9va3Mge1xuICByZWFkb25seSBidWlsZEV4dGVuc2lvbnM6ICgpID0+IEV4dGVuc2lvbltdO1xuICByZWFkb25seSBoYW5kbGVVcGRhdGU6ICh1cGRhdGU6IFZpZXdVcGRhdGUsIGlzQ2hhbmdlZDogYm9vbGVhbikgPT4gdm9pZDtcbn1cblxudHlwZSBFbWJlZGRlZFNjcm9sbGFibGVNYXJrZG93bkVkaXRvckNvbnN0cnVjdG9yID0gbmV3IChcbiAgYXBwOiBBcHAsXG4gIGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCxcbiAgb3duZXI6IE1hcmtkb3duU2Nyb2xsYWJsZUVkaXRWaWV3T3duZXIsXG4gIGhvb2tzOiBFZGl0b3JIb29rc1xuKSA9PiBNYXJrZG93blNjcm9sbGFibGVFZGl0VmlldztcblxudHlwZSBTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxNYXJrZG93blNjcm9sbGFibGVFZGl0Vmlldz47XG5cbmludGVyZmFjZSBTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3RvckNhY2hlIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHR5cGVzY3JpcHQtZGV2LXRvb2xraXQvcmVhZG9ubHktaW50ZXJmYWNlLW1lbWJlcnMgLS0gRmlsbGVkIG9uIGZpcnN0IHVzZS5cbiAgdmFsdWU6IG51bGwgfCBTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3Rvcjtcbn1cblxuLyogZXNsaW50LWRpc2FibGUgdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9yZWFkb25seS1pbnRlcmZhY2UtbWVtYmVycyAtLSBUaGUgb3duZXIgbGVhcm5zIGl0cyBlZGl0b3IgYWZ0ZXIgdGhlIGVkaXRvciwgd2hpY2ggbmVlZHMgdGhlIG93bmVyLCBpcyBidWlsdC4gKi9cbmludGVyZmFjZSBTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JPd25lciBleHRlbmRzIE1hcmtkb3duU2Nyb2xsYWJsZUVkaXRWaWV3T3duZXIge1xuICBlZGl0TW9kZTogTWFya2Rvd25TY3JvbGxhYmxlRWRpdFZpZXcgfCBudWxsO1xuICByZWFkb25seSBnZXRNb2RlOiAoKSA9PiAnc291cmNlJztcbn1cbi8qIGVzbGludC1lbmFibGUgdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9yZWFkb25seS1pbnRlcmZhY2UtbWVtYmVycyAtLSBSZXN0b3JlIHRoZSBydWxlIGFmdGVyIHRoZSBvd25lci4gKi9cblxuaW50ZXJmYWNlIFNjcm9sbGFibGVNYXJrZG93bkVkaXRvclByb3RvdHlwZSB7XG4gIHJlYWRvbmx5IGNvbnN0cnVjdG9yOiBTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3Rvcjtcbn1cblxuY29uc3Qgc2Nyb2xsYWJsZU1hcmtkb3duRWRpdG9yQ29uc3RydWN0b3JDYWNoZTogU2Nyb2xsYWJsZU1hcmtkb3duRWRpdG9yQ29uc3RydWN0b3JDYWNoZSA9IHsgdmFsdWU6IG51bGwgfTtcblxuLyoqXG4gKiBBIGZ1bGwgT2JzaWRpYW4gTWFya2Rvd24gZWRpdG9yIG1vdW50ZWQgaW4gYW55IGVsZW1lbnQ6IExpdmUgUHJldmlldywgZWRpdG9yIGNvbW1hbmRzLCBob3RrZXlzIGFuZCB0aGUgZWRpdG9yXG4gKiBzdWdnZXN0ZXJzIGFsbCB3b3JrIGluIGl0IGFzIHRoZXkgZG8gaW4gYSBub3RlLlxuICpcbiAqIEFkZCBpdCBhcyBhIGNoaWxkIG9mIHRoZSBjb21wb25lbnQgdGhhdCBvd25zIGl0cyBlbGVtZW50OyB1bmxvYWRpbmcgaXQgZGVzdHJveXMgdGhlIGVkaXRvciBhbmQgcmVtb3ZlcyB0aGUgZWRpdG9yJ3NcbiAqIGVsZW1lbnQuIEl0IHdvcmtzIG9uIGRlc2t0b3AgYW5kIG1vYmlsZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IGVkaXRvckNvbXBvbmVudCA9IHRoaXMuYWRkQ2hpbGQobmV3IEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudCh7XG4gKiAgIGFwcDogdGhpcy5hcHAsXG4gKiAgIGNvbnRhaW5lckVsLFxuICogICBvbkVudGVyOiAoeyBjb21wb25lbnQsIGlzTW9kaWZpZXJQcmVzc2VkIH0pID0+IHtcbiAqICAgICBpZiAoIWlzTW9kaWZpZXJQcmVzc2VkKSB7XG4gKiAgICAgICByZXR1cm4gZmFsc2U7XG4gKiAgICAgfVxuICogICAgIHNhdmUoY29tcG9uZW50LnZhbHVlKTtcbiAqICAgICByZXR1cm4gdHJ1ZTtcbiAqICAgfSxcbiAqICAgdmFsdWU6ICdJbml0aWFsIHRleHQnXG4gKiB9KSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEV4IHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBlZGl0b3IsIGFzIGluIGEgbm90ZS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGVkaXRvci5cbiAgICovXG4gIHB1YmxpYyBnZXQgZWRpdG9yKCk6IEVkaXRvciB7XG4gICAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKHRoaXMuZ2V0U2Nyb2xsYWJsZUVkaXRvcigpLmVkaXRvcik7XG4gIH1cblxuICAvKipcbiAgICogVGhlIENvZGVNaXJyb3IgdmlldyBiZWhpbmQgdGhlIGVkaXRvci5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIENvZGVNaXJyb3Igdmlldy5cbiAgICovXG4gIHB1YmxpYyBnZXQgZWRpdG9yVmlldygpOiBFZGl0b3JWaWV3IHtcbiAgICByZXR1cm4gdGhpcy5nZXRTY3JvbGxhYmxlRWRpdG9yKCkuY207XG4gIH1cblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgZG9jdW1lbnQuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBkb2N1bWVudCB0ZXh0LlxuICAgKi9cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFNjcm9sbGFibGVFZGl0b3IoKS5jbS5zdGF0ZS5kb2MudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCB0aGUgZWRpdG9yIGlzIG1vdW50ZWQgaW4uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udGFpbmVyRWw6IEhUTUxFbGVtZW50O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2xzOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3Vyc29yTG9jYXRpb246IEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudFNlbGVjdGlvbiB8IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5pdGlhbFZhbHVlOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkga2V5bWFwU2NvcGU6IFNjb3BlO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uQmx1cjogKChjb21wb25lbnQ6IEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudCkgPT4gdm9pZCkgfCBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uQ2hhbmdlOiAoKHVwZGF0ZTogVmlld1VwZGF0ZSwgY29tcG9uZW50OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnQpID0+IHZvaWQpIHwgbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBvbkVudGVyOiAoKHBhcmFtczogRW1iZWRkYWJsZU1hcmtkb3duRWRpdG9yQ29tcG9uZW50RW50ZXJQYXJhbXMpID0+IGJvb2xlYW4pIHwgbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBvbkVzY2FwZTogKChjb21wb25lbnQ6IEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudCkgPT4gdm9pZCkgfCBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uUGFzdGU6ICgoJGV2ZW50OiBDbGlwYm9hcmRFdmVudCwgY29tcG9uZW50OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnQpID0+IHZvaWQpIHwgbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBvd25lcjogU2Nyb2xsYWJsZU1hcmtkb3duRWRpdG9yT3duZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGxhY2Vob2xkZXJUZXh0OiBzdHJpbmc7XG4gIHByaXZhdGUgc2Nyb2xsYWJsZUVkaXRvcjogTWFya2Rvd25TY3JvbGxhYmxlRWRpdFZpZXcgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgY29tcG9uZW50LiBUaGUgZWRpdG9yIGlzIGJ1aWx0IHdoZW4gdGhlIGNvbXBvbmVudCBsb2Fkcy5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogRW1iZWRkYWJsZU1hcmtkb3duRWRpdG9yQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXBwID0gcGFyYW1zLmFwcDtcbiAgICB0aGlzLmNvbnRhaW5lckVsID0gcGFyYW1zLmNvbnRhaW5lckVsO1xuICAgIHRoaXMuY2xzID0gcGFyYW1zLmNscyA/PyAnJztcbiAgICB0aGlzLmN1cnNvckxvY2F0aW9uID0gcGFyYW1zLmN1cnNvckxvY2F0aW9uID8/IG51bGw7XG4gICAgdGhpcy5pbml0aWFsVmFsdWUgPSBwYXJhbXMudmFsdWUgPz8gJyc7XG4gICAgdGhpcy5vbkJsdXIgPSBwYXJhbXMub25CbHVyID8/IG51bGw7XG4gICAgdGhpcy5vbkNoYW5nZSA9IHBhcmFtcy5vbkNoYW5nZSA/PyBudWxsO1xuICAgIHRoaXMub25FbnRlciA9IHBhcmFtcy5vbkVudGVyID8/IG51bGw7XG4gICAgdGhpcy5vbkVzY2FwZSA9IHBhcmFtcy5vbkVzY2FwZSA/PyBudWxsO1xuICAgIHRoaXMub25QYXN0ZSA9IHBhcmFtcy5vblBhc3RlID8/IG51bGw7XG4gICAgdGhpcy5wbGFjZWhvbGRlclRleHQgPSBwYXJhbXMucGxhY2Vob2xkZXIgPz8gJyc7XG4gICAgdGhpcy5rZXltYXBTY29wZSA9IG5ldyBTY29wZShwYXJhbXMuYXBwLnNjb3BlKTtcbiAgICAvLyBUaGUgZWRpdG9yJ3Mgb3duZXIgc3RhbmRzIGluIGZvciBhIGBNYXJrZG93blZpZXdgLiBUaGUgZWRpdG9yIGNvbW1hbmRzIHJlYWNoIHRoZSBlZGl0b3IgdGhyb3VnaFxuICAgIC8vIGBhY3RpdmVFZGl0b3IuZWRpdE1vZGVgIGFuZCBgYWN0aXZlRWRpdG9yLmVkaXRvcmAsIGFuZCBzY3JvbGxpbmcgY2FsbHMgYmFjayBpbnRvIHRoZSBvd25lci5cbiAgICB0aGlzLm93bmVyID0ge1xuICAgICAgYXBwOiBwYXJhbXMuYXBwLFxuICAgICAgZWRpdE1vZGU6IG51bGwsXG4gICAgICBmaWxlOiBudWxsLFxuICAgICAgZ2V0TW9kZTogKCk6ICdzb3VyY2UnID0+ICdzb3VyY2UnLFxuICAgICAgaG92ZXJQb3BvdmVyOiBudWxsLFxuICAgICAgc3luY1Njcm9sbDogbm9vcFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRm9jdXNlcyB0aGUgZWRpdG9yLlxuICAgKi9cbiAgcHVibGljIGZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0U2Nyb2xsYWJsZUVkaXRvcigpLmZvY3VzKCk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBlZGl0b3IgYW5kIG1vdW50cyBpdCBpbiB0aGUgY29udGFpbmVyLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIG9ubG9hZCgpOiB2b2lkIHtcbiAgICBzdXBlci5vbmxvYWQoKTtcbiAgICBjb25zdCBFZGl0b3JDb25zdHJ1Y3RvciA9IGNyZWF0ZUVkaXRvckNsYXNzKGdldFNjcm9sbGFibGVNYXJrZG93bkVkaXRvckNvbnN0cnVjdG9yKHRoaXMuYXBwKSk7XG4gICAgY29uc3Qgc2Nyb2xsYWJsZUVkaXRvciA9IG5ldyBFZGl0b3JDb25zdHJ1Y3Rvcih0aGlzLmFwcCwgdGhpcy5jb250YWluZXJFbCwgdGhpcy5vd25lciwge1xuICAgICAgYnVpbGRFeHRlbnNpb25zOiAoKTogRXh0ZW5zaW9uW10gPT4gdGhpcy5idWlsZEV4dGVuc2lvbnMoKSxcbiAgICAgIGhhbmRsZVVwZGF0ZTogKHVwZGF0ZTogVmlld1VwZGF0ZSwgaXNDaGFuZ2VkOiBib29sZWFuKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlVXBkYXRlKHVwZGF0ZSwgaXNDaGFuZ2VkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnNjcm9sbGFibGVFZGl0b3IgPSBzY3JvbGxhYmxlRWRpdG9yO1xuICAgIHRoaXMub3duZXIuZWRpdE1vZGUgPSBzY3JvbGxhYmxlRWRpdG9yO1xuICAgIHRoaXMub3duZXIuZWRpdG9yID0gZW5zdXJlTm9uTnVsbGFibGUoc2Nyb2xsYWJsZUVkaXRvci5lZGl0b3IpO1xuICAgIHRoaXMuYWRkQ2hpbGQoc2Nyb2xsYWJsZUVkaXRvcik7XG5cbiAgICBpZiAodGhpcy5vbkVudGVyKSB7XG4gICAgICAvLyBPYnNpZGlhbidzIGhvdGtleXMgcnVuIGJlZm9yZSBDb2RlTWlycm9yJ3Mga2V5bWFwLCBhbmQgYE1vZCtFbnRlcmAgb3BlbnMgdGhlIGxpbmsgdW5kZXIgdGhlIGN1cnNvci4gQSBoYW5kbGVyXG4gICAgICAvLyByZXR1cm5pbmcgYHRydWVgIHN0b3BzIHRoYXQgaG90a2V5IHdpdGhvdXQgc3RvcHBpbmcgdGhlIGV2ZW50LCBzbyB0aGUgZWRpdG9yIGtleW1hcCBzdGlsbCBzZWVzIHRoZSBrZXkuXG4gICAgICBjb25zdCBzdWJtaXRIb3RrZXlIYW5kbGVyID0gdGhpcy5rZXltYXBTY29wZS5yZWdpc3RlcihbJ01vZCddLCAnRW50ZXInLCAoKSA9PiB0cnVlKTtcbiAgICAgIHRoaXMucmVnaXN0ZXIoKCkgPT4ge1xuICAgICAgICB0aGlzLmtleW1hcFNjb3BlLnVucmVnaXN0ZXIoc3VibWl0SG90a2V5SGFuZGxlcik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jbHMpIHtcbiAgICAgIHNjcm9sbGFibGVFZGl0b3IuZWRpdG9yRWwuYWRkQ2xhc3ModGhpcy5jbHMpO1xuICAgIH1cblxuICAgIHNjcm9sbGFibGVFZGl0b3Iuc2V0KHRoaXMuaW5pdGlhbFZhbHVlLCBmYWxzZSk7XG5cbiAgICBpZiAodGhpcy5jdXJzb3JMb2NhdGlvbikge1xuICAgICAgc2Nyb2xsYWJsZUVkaXRvci5jbS5kaXNwYXRjaCh7XG4gICAgICAgIHNlbGVjdGlvbjogRWRpdG9yU2VsZWN0aW9uLnJhbmdlKHRoaXMuY3Vyc29yTG9jYXRpb24uYW5jaG9yLCB0aGlzLmN1cnNvckxvY2F0aW9uLmhlYWQpXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBmb2N1c0d1YXJkUGF0Y2hDb21wb25lbnQgPSB0aGlzLmFkZENoaWxkKG5ldyBNb25rZXlBcm91bmRDb21wb25lbnQoKSk7XG4gICAgZm9jdXNHdWFyZFBhdGNoQ29tcG9uZW50LnJlZ2lzdGVyTWV0aG9kUGF0Y2goe1xuICAgICAgJG9iamVjdDogdGhpcy5hcHAud29ya3NwYWNlLFxuICAgICAgbWV0aG9kTmFtZTogJ3NldEFjdGl2ZUxlYWYnLFxuICAgICAgcGF0Y2hIYW5kbGVyOiAoeyBmYWxsYmFjayB9KSA9PiB7XG4gICAgICAgIC8vIEEgZm9jdXNlZCBlZGl0b3IgdGhhdCBiZWxvbmdzIHRvIG5vIGxlYWYgd291bGQgb3RoZXJ3aXNlIGxvc2UgaXRzIGZvY3VzIHRvIHRoZSBsZWFmIHRoZSB3b3Jrc3BhY2UgYWN0aXZhdGVzLlxuICAgICAgICBpZiAoc2Nyb2xsYWJsZUVkaXRvci5hY3RpdmVDTS5oYXNGb2N1cykge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBmYWxsYmFjaygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5yZWdpc3RlcigoKSA9PiB7XG4gICAgICB0aGlzLmFwcC5rZXltYXAucG9wU2NvcGUodGhpcy5rZXltYXBTY29wZSk7XG4gICAgICBpZiAodGhpcy5hcHAud29ya3NwYWNlLmFjdGl2ZUVkaXRvciA9PT0gdGhpcy5vd25lcikge1xuICAgICAgICB0aGlzLmFwcC53b3Jrc3BhY2UuYWN0aXZlRWRpdG9yID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIHNjcm9sbGFibGVFZGl0b3IuZGVzdHJveSgpO1xuICAgICAgc2Nyb2xsYWJsZUVkaXRvci5lZGl0b3JFbC5yZW1vdmUoKTtcbiAgICAgIHRoaXMub3duZXIuZWRpdE1vZGUgPSBudWxsO1xuICAgICAgZGVsZXRlIHRoaXMub3duZXIuZWRpdG9yO1xuICAgICAgdGhpcy5zY3JvbGxhYmxlRWRpdG9yID0gbnVsbDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyB0aGUgZG9jdW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBuZXcgZG9jdW1lbnQuXG4gICAqL1xuICBwdWJsaWMgc2V0VmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZ2V0U2Nyb2xsYWJsZUVkaXRvcigpLnNldCh2YWx1ZSwgZmFsc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyB0aGUgZWRpdG9yJ3Mgb3duIGV4dGVuc2lvbnM6IHRoZSBwbGFjZWhvbGRlciwgdGhlIGZvY3VzIGFuZCBwYXN0ZSBoYW5kbGVycywgYW5kIHRoZSBrZXkgaGFuZGxlcnMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBleHRlbnNpb25zLlxuICAgKi9cbiAgcHJvdGVjdGVkIGJ1aWxkRXh0ZW5zaW9ucygpOiBFeHRlbnNpb25bXSB7XG4gICAgY29uc3QgZXh0ZW5zaW9uczogRXh0ZW5zaW9uW10gPSBbXG4gICAgICBFZGl0b3JWaWV3LmRvbUV2ZW50SGFuZGxlcnMoe1xuICAgICAgICBibHVyOiAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgdGhpcy5hcHAua2V5bWFwLnBvcFNjb3BlKHRoaXMua2V5bWFwU2NvcGUpO1xuICAgICAgICAgIGlmICh0aGlzLl9sb2FkZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25CbHVyPy4odGhpcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBmb2N1czogKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuYXBwLmtleW1hcC5wdXNoU2NvcGUodGhpcy5rZXltYXBTY29wZSk7XG4gICAgICAgIH0sXG4gICAgICAgIHBhc3RlOiAoJGV2ZW50OiBDbGlwYm9hcmRFdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMub25QYXN0ZT8uKCRldmVudCwgdGhpcyk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgUHJlYy5oaWdoZXN0KGtleW1hcC5vZihbXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6ICdFbnRlcicsXG4gICAgICAgICAgcnVuOiAoKTogYm9vbGVhbiA9PiB0aGlzLmlzRW50ZXJIYW5kbGVkKGZhbHNlLCBmYWxzZSksXG4gICAgICAgICAgc2hpZnQ6ICgpOiBib29sZWFuID0+IHRoaXMuaXNFbnRlckhhbmRsZWQoZmFsc2UsIHRydWUpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6ICdNb2QtRW50ZXInLFxuICAgICAgICAgIHJ1bjogKCk6IGJvb2xlYW4gPT4gdGhpcy5pc0VudGVySGFuZGxlZCh0cnVlLCBmYWxzZSksXG4gICAgICAgICAgc2hpZnQ6ICgpOiBib29sZWFuID0+IHRoaXMuaXNFbnRlckhhbmRsZWQodHJ1ZSwgdHJ1ZSlcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGtleTogJ0VzY2FwZScsXG4gICAgICAgICAgcHJldmVudERlZmF1bHQ6IHRydWUsXG4gICAgICAgICAgcnVuOiAoKTogYm9vbGVhbiA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMub25Fc2NhcGUpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5vbkVzY2FwZSh0aGlzKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgXSkpXG4gICAgXTtcblxuICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyVGV4dCkge1xuICAgICAgZXh0ZW5zaW9ucy5wdXNoKHBsYWNlaG9sZGVyKHRoaXMucGxhY2Vob2xkZXJUZXh0KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4dGVuc2lvbnM7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbGVkIGFmdGVyIGV2ZXJ5IHVwZGF0ZSBvZiB0aGUgZWRpdG9yLCB3aXRoIHdoZXRoZXIgdGhlIGRvY3VtZW50IGNoYW5nZWQuXG4gICAqXG4gICAqIEBwYXJhbSB1cGRhdGUgLSBUaGUgQ29kZU1pcnJvciB1cGRhdGUuXG4gICAqIEBwYXJhbSBpc0NoYW5nZWQgLSBXaGV0aGVyIHRoZSBkb2N1bWVudCBjaGFuZ2VkLlxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVVwZGF0ZSh1cGRhdGU6IFZpZXdVcGRhdGUsIGlzQ2hhbmdlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpc0NoYW5nZWQpIHtcbiAgICAgIHRoaXMub25DaGFuZ2U/Lih1cGRhdGUsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2Nyb2xsYWJsZUVkaXRvcigpOiBNYXJrZG93blNjcm9sbGFibGVFZGl0VmlldyB7XG4gICAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKHRoaXMuc2Nyb2xsYWJsZUVkaXRvciwgJ1RoZSBlZGl0b3IgaXMgYnVpbHQgd2hlbiB0aGUgY29tcG9uZW50IGxvYWRzLicpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0VudGVySGFuZGxlZChpc01vZGlmaWVyUHJlc3NlZDogYm9vbGVhbiwgaXNTaGlmdFByZXNzZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vbkVudGVyPy4oeyBjb21wb25lbnQ6IHRoaXMsIGlzTW9kaWZpZXJQcmVzc2VkLCBpc1NoaWZ0UHJlc3NlZCB9KSA/PyBmYWxzZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVFZGl0b3JDbGFzcyhCYXNlQ29uc3RydWN0b3I6IFNjcm9sbGFibGVNYXJrZG93bkVkaXRvckNvbnN0cnVjdG9yKTogRW1iZWRkZWRTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3RvciB7XG4gIHJldHVybiBjbGFzcyBFbWJlZGRlZFNjcm9sbGFibGVNYXJrZG93bkVkaXRvciBleHRlbmRzIEJhc2VDb25zdHJ1Y3RvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGFwcDogQXBwLCBjb250YWluZXJFbDogSFRNTEVsZW1lbnQsIG93bmVyOiBNYXJrZG93blNjcm9sbGFibGVFZGl0Vmlld093bmVyLCBwcml2YXRlIHJlYWRvbmx5IGhvb2tzOiBFZGl0b3JIb29rcykge1xuICAgICAgLy8gVGhlIGJhc2UgYnVpbGRzIGl0cyBleHRlbnNpb25zIGxhemlseSwgb24gdGhlIGZpcnN0IGBzZXQoKWAsIHNvIHRoZSBob29rcyBhcmUgbm90IG5lZWRlZCBkdXJpbmcgYHN1cGVyKClgLlxuICAgICAgc3VwZXIoYXBwLCBjb250YWluZXJFbCwgb3duZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBidWlsZExvY2FsRXh0ZW5zaW9ucygpOiBFeHRlbnNpb25bXSB7XG4gICAgICByZXR1cm4gWy4uLnN1cGVyLmJ1aWxkTG9jYWxFeHRlbnNpb25zKCksIC4uLnRoaXMuaG9va3MuYnVpbGRFeHRlbnNpb25zKCldO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBvblVwZGF0ZSh1cGRhdGU6IFZpZXdVcGRhdGUsIGlzQ2hhbmdlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgc3VwZXIub25VcGRhdGUodXBkYXRlLCBpc0NoYW5nZWQpO1xuICAgICAgdGhpcy5ob29rcy5oYW5kbGVVcGRhdGUodXBkYXRlLCBpc0NoYW5nZWQpO1xuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0U2Nyb2xsYWJsZU1hcmtkb3duRWRpdG9yQ29uc3RydWN0b3IoYXBwOiBBcHApOiBTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3RvciB7XG4gIGlmIChzY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3RvckNhY2hlLnZhbHVlKSB7XG4gICAgcmV0dXJuIHNjcm9sbGFibGVNYXJrZG93bkVkaXRvckNvbnN0cnVjdG9yQ2FjaGUudmFsdWU7XG4gIH1cblxuICAvLyBBbiBlZGl0YWJsZSBNYXJrZG93biBlbWJlZCBidWlsZHMgYW4gaWZyYW1lZCBlZGl0b3Igd2hvc2UgYmFzZSBjbGFzcyBpcyB0aGUgc2Nyb2xsYWJsZSBlZGl0b3IuIFRoZSBlbWJlZCBpcyBnaXZlblxuICAvLyBubyBmaWxlLCB3aGljaCBpcyB3aGF0IGtlZXBzIGl0IGZyb20gcmVhZGluZyBvciB3YXRjaGluZyBvbmUuXG4gIGNvbnN0IHdpZGdldEVkaXRvclZpZXcgPSBjYXN0VG88V2lkZ2V0RWRpdG9yVmlldz4oYXBwLmVtYmVkUmVnaXN0cnkuZW1iZWRCeUV4dGVuc2lvbi5tZCh7IGFwcCwgY29udGFpbmVyRWw6IGNyZWF0ZURpdigpIH0sIGNhc3RUbzxURmlsZT4obnVsbCksICcnKSk7XG5cbiAgdHJ5IHtcbiAgICB3aWRnZXRFZGl0b3JWaWV3LmVkaXRhYmxlID0gdHJ1ZTtcbiAgICB3aWRnZXRFZGl0b3JWaWV3LnNob3dFZGl0b3IoKTtcbiAgICBjb25zdCBpZnJhbWVkRWRpdG9yID0gZW5zdXJlTm9uTnVsbGFibGUod2lkZ2V0RWRpdG9yVmlldy5lZGl0TW9kZSwgJ1RoZSBNYXJrZG93biBlbWJlZCBidWlsdCBubyBlZGl0b3IuJyk7XG4gICAgY29uc3Qgc2Nyb2xsYWJsZUVkaXRvclByb3RvdHlwZSA9IGNhc3RUbzxTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JQcm90b3R5cGU+KE9iamVjdC5nZXRQcm90b3R5cGVPZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoaWZyYW1lZEVkaXRvcikgYXMgb2JqZWN0KSk7XG4gICAgc2Nyb2xsYWJsZU1hcmtkb3duRWRpdG9yQ29uc3RydWN0b3JDYWNoZS52YWx1ZSA9IHNjcm9sbGFibGVFZGl0b3JQcm90b3R5cGUuY29uc3RydWN0b3I7XG4gICAgcmV0dXJuIHNjcm9sbGFibGVFZGl0b3JQcm90b3R5cGUuY29uc3RydWN0b3I7XG4gIH0gZmluYWxseSB7XG4gICAgd2lkZ2V0RWRpdG9yVmlldy51bmxvYWQoKTtcbiAgfVxufVxuXG4vKiB2OCBpZ25vcmUgc3RvcCAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtEQTtBQUFBLEVBQ0U7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsT0FDSztBQUNQLFNBQVMsWUFBWTtBQUNyQixTQUFTLGNBQWM7QUFDdkIsU0FBUyx5QkFBeUI7QUFDbEMsU0FBUyxhQUFhO0FBRXRCLFNBQVMsbUJBQW1CO0FBQzVCLFNBQVMsNkJBQTZCO0FBcUl0QyxNQUFNLDJDQUFxRixFQUFFLE9BQU8sS0FBSztBQXlCbEcsTUFBTSwwQ0FBMEMsWUFBWTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1qRSxJQUFXLFNBQWlCO0FBQzFCLFdBQU8sa0JBQWtCLEtBQUssb0JBQW9CLEVBQUUsTUFBTTtBQUFBLEVBQzVEO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT0EsSUFBVyxhQUF5QjtBQUNsQyxXQUFPLEtBQUssb0JBQW9CLEVBQUU7QUFBQSxFQUNwQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLElBQVcsUUFBZ0I7QUFDekIsV0FBTyxLQUFLLG9CQUFvQixFQUFFLEdBQUcsTUFBTSxJQUFJLFNBQVM7QUFBQSxFQUMxRDtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBS21CO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFLQTtBQUFBLEVBRUY7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVB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
307
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2VtYmVkZGFibGUtbWFya2Rvd24tZWRpdG9yLWNvbXBvbmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogQ29udGFpbnMgY2xhc3Mge0BsaW5rIEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudH06IGEgZnVsbCBPYnNpZGlhbiBNYXJrZG93biBlZGl0b3IgKExpdmUgUHJldmlldywgZWRpdG9yXG4gKiBjb21tYW5kcywgaG90a2V5cykgbW91bnRlZCBpbiBhbnkgZWxlbWVudCBhbmQgb3duZWQgYXMgYSBjb21wb25lbnQuXG4gKlxuICogT2JzaWRpYW4gZG9lcyBub3QgZXhwb3J0IGl0cyBlZGl0b3IgY2xhc3MsIHNvIHRoZSBjb21wb25lbnQgYm9ycm93cyBpdCBmcm9tIGEgdGhyb3dhd2F5IE1hcmtkb3duIGVtYmVkOiBhbiBlZGl0YWJsZVxuICogZW1iZWQgYnVpbGRzIGFuIGlmcmFtZWQgZWRpdG9yIHdob3NlIGdyYW5kcGFyZW50IHByb3RvdHlwZSBpcyB0aGUgc2Nyb2xsYWJsZSBNYXJrZG93biBlZGl0b3IgZXZlcnkgZW1iZWQgYW5kIHRhYmxlXG4gKiBjZWxsIGVkaXRvciB1c2VzLiBUaGUgcHJvYmUgb3BlbnMgbm8gbGVhZiBhbmQgZmlyZXMgbm8gd29ya3NwYWNlIGV2ZW50IChgZW1iZWRkYWJsZS1tYXJrZG93bi1lZGl0b3ItY29tcG9uZW50XG4gKiAub2JzaWRpYW4uaW50ZWdyYXRpb24udGVzdC50c2AgbWVhc3VyZXMgdGhhdCksIGFuZCBpdCBydW5zIG9uY2UgcGVyIGNvcHkgb2YgdGhpcyBsaWJyYXJ5LCBvbiBmaXJzdCB1c2UgcmF0aGVyIHRoYW4gYXRcbiAqIG1vZHVsZSBsb2FkLiBUaGUgY2xhc3MgaXMgY2FjaGVkIHBlciBjb3B5IGFuZCBuZXZlciBpbiB0aGUgc2hhcmVkLXN0YXRlIGJhZywgYmVjYXVzZSBhIGNvbnN0cnVjdG9yIGlzIG5vdCBwbGFpbiBkYXRhLlxuICpcbiAqIEFkYXB0ZWQgZnJvbSB0aGUgXCJFbWJlZGRhYmxlIENNIE1hcmtkb3duIEVkaXRvclwiIGdpc3RcbiAqIChodHRwczovL2dpc3QuZ2l0aHViLmNvbS9GZXZvbC9jYWE0NzhjZTMwM2U2OWVhYmVkZTdiMTJiMjMyMzgzOCksIGl0c2VsZiBhIHJld29yayBvZiB0aGUgYEthbmJhbmAgcGx1Z2luJ3NcbiAqIGBzcmMvY29tcG9uZW50cy9FZGl0b3IvTWFya2Rvd25FZGl0b3IudHN4YCwgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGJlbG93LlxuICpcbiAqIENvcHlyaWdodCAyMDI0IE1hdHRoZXcgTWV5ZXJzLCBGZXZvbFxuICpcbiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZFxuICogZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIOKAnFNvZnR3YXJl4oCdKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGVcbiAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0b1xuICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZVxuICogU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIOKAnEFTIElT4oCdLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1JcbiAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1JcbiAqIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbiAqL1xuXG4vLyBjc3BlbGw6d29yZHMgRmV2b2wgLS0gVGhlIGdpc3QgYXV0aG9yJ3MgaGFuZGxlLCBhcyB0aGUgbGljZW5zZSBub3RpY2UgYWJvdmUgbmFtZXMgaXQuXG5cbi8qIHY4IGlnbm9yZSBzdGFydCAtLSBCdWlsZHMgb24gT2JzaWRpYW4ncyB1bmV4cG9ydGVkIGVkaXRvciBjbGFzcywgd2hpY2ggb25seSBhIHJ1bm5pbmcgT2JzaWRpYW4gaGFzOyBjb3ZlcmVkIGJ5IGl0cyBpbnRlZ3JhdGlvbiB0ZXN0LiAqL1xuXG5pbXBvcnQgdHlwZSB7IEV4dGVuc2lvbiB9IGZyb20gJ0Bjb2RlbWlycm9yL3N0YXRlJztcbmltcG9ydCB0eXBlIHsgVmlld1VwZGF0ZSB9IGZyb20gJ0Bjb2RlbWlycm9yL3ZpZXcnO1xuaW1wb3J0IHR5cGUge1xuICBFeHRyYWN0Q29uc3RydWN0b3IsXG4gIE1hcmtkb3duU2Nyb2xsYWJsZUVkaXRWaWV3LFxuICBNYXJrZG93blNjcm9sbGFibGVFZGl0Vmlld093bmVyLFxuICBXaWRnZXRFZGl0b3JWaWV3XG59IGZyb20gJ0BvYnNpZGlhbi10eXBpbmdzL29ic2lkaWFuLXB1YmxpYy1sYXRlc3QnO1xuaW1wb3J0IHR5cGUge1xuICBBcHAsXG4gIEVkaXRvcixcbiAgVEZpbGVcbn0gZnJvbSAnb2JzaWRpYW4nO1xuXG5pbXBvcnQge1xuICBFZGl0b3JTZWxlY3Rpb24sXG4gIFByZWNcbn0gZnJvbSAnQGNvZGVtaXJyb3Ivc3RhdGUnO1xuaW1wb3J0IHtcbiAgRWRpdG9yVmlldyxcbiAga2V5bWFwLFxuICBwbGFjZWhvbGRlclxufSBmcm9tICdAY29kZW1pcnJvci92aWV3JztcbmltcG9ydCB7IG5vb3AgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvZnVuY3Rpb24nO1xuaW1wb3J0IHsgY2FzdFRvIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL29iamVjdC11dGlscyc7XG5pbXBvcnQgeyBlbnN1cmVOb25OdWxsYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5pbXBvcnQgeyBTY29wZSB9IGZyb20gJ29ic2lkaWFuJztcblxuaW1wb3J0IHsgQ29tcG9uZW50RXggfSBmcm9tICcuL2NvbXBvbmVudC1leC50cyc7XG5pbXBvcnQgeyBNb25rZXlBcm91bmRDb21wb25lbnQgfSBmcm9tICcuL21vbmtleS1hcm91bmQtY29tcG9uZW50LnRzJztcblxuLyoqXG4gKiBUaGUgcGFyYW1ldGVycyBvZiB0aGUge0BsaW5rIEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudH0gY29uc3RydWN0b3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW1iZWRkYWJsZU1hcmtkb3duRWRpdG9yQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXMge1xuICAvKipcbiAgICogVGhlIE9ic2lkaWFuIGFwcCBpbnN0YW5jZS5cbiAgICovXG4gIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBBIENTUyBjbGFzcyBhZGRlZCB0byB0aGUgZWRpdG9yIGVsZW1lbnQuXG4gICAqL1xuICByZWFkb25seSBjbHM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoZSBlZGl0b3IgaXMgbW91bnRlZCBpbi4gVGhlIGVkaXRvciBhcHBlbmRzIGl0cyBvd24gZWxlbWVudCB0byBpdCBhbmQgcmVtb3ZlcyBvbmx5IHRoYXQgZWxlbWVudCB3aGVuXG4gICAqIGl0IHVubG9hZHMuXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJFbDogSFRNTEVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBpbml0aWFsIHNlbGVjdGlvbiwgYXMgZG9jdW1lbnQgb2Zmc2V0cy4gVGhlIGN1cnNvciBzdGFydHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZG9jdW1lbnQgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgY3Vyc29yTG9jYXRpb24/OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnRTZWxlY3Rpb247XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBlZGl0b3IgbG9zZXMgZm9jdXMsIHdoaWxlIHRoZSBjb21wb25lbnQgaXMgc3RpbGwgbG9hZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgb25CbHVyPzogKGNvbXBvbmVudDogRW1iZWRkYWJsZU1hcmtkb3duRWRpdG9yQ29tcG9uZW50KSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgYWZ0ZXIgZXZlcnkgY2hhbmdlIHRvIHRoZSBkb2N1bWVudC5cbiAgICovXG4gIHJlYWRvbmx5IG9uQ2hhbmdlPzogKHVwZGF0ZTogVmlld1VwZGF0ZSwgY29tcG9uZW50OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnQpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBvbiBgRW50ZXJgLCBgU2hpZnQrRW50ZXJgLCBgTW9kK0VudGVyYCBhbmQgYE1vZCtTaGlmdCtFbnRlcmAuXG4gICAqXG4gICAqIFdoZW4gZ2l2ZW4sIGBNb2QrRW50ZXJgIG5vIGxvbmdlciBydW5zIHRoZSBPYnNpZGlhbiBob3RrZXkgYm91bmQgdG8gaXQgKGJ5IGRlZmF1bHQsIG9wZW5pbmcgdGhlIGxpbmsgdW5kZXIgdGhlXG4gICAqIGN1cnNvciBpbiBhIG5ldyB0YWIpIHdoaWxlIHRoZSBlZGl0b3IgaGFzIHRoZSBmb2N1cywgc28gYSBmb3JtIGNhbiB1c2UgaXQgdG8gc3VibWl0LlxuICAgKlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgd2hlbiB0aGUga2V5IHdhcyBoYW5kbGVkLCB3aGljaCBzdG9wcyB0aGUgZWRpdG9yIGluc2VydGluZyBhIGxpbmUgYnJlYWs7IGBmYWxzZWAgb3RoZXJ3aXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgb25FbnRlcj86IChwYXJhbXM6IEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudEVudGVyUGFyYW1zKSA9PiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDYWxsZWQgb24gYEVzY2FwZWAuIFdoZW4gZ2l2ZW4sIHRoZSBrZXkgZ29lcyBubyBmdXJ0aGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgb25Fc2NhcGU/OiAoY29tcG9uZW50OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnQpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENhbGxlZCBvbiBhIHBhc3RlIGludG8gdGhlIGVkaXRvciwgYmVmb3JlIHRoZSBlZGl0b3IgaGFuZGxlcyBpdC5cbiAgICovXG4gIHJlYWRvbmx5IG9uUGFzdGU/OiAoJGV2ZW50OiBDbGlwYm9hcmRFdmVudCwgY29tcG9uZW50OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnQpID0+IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB0ZXh0IHNob3duIHdoaWxlIHRoZSBkb2N1bWVudCBpcyBlbXB0eS5cbiAgICovXG4gIHJlYWRvbmx5IHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5pdGlhbCBkb2N1bWVudC5cbiAgICovXG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBwYXJhbWV0ZXJzIG9mIHtAbGluayBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnRDb25zdHJ1Y3RvclBhcmFtcy5vbkVudGVyfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnRFbnRlclBhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgZWRpdG9yIGNvbXBvbmVudCB0aGUga2V5IHdhcyBwcmVzc2VkIGluLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHBsYXRmb3JtIG1vZGlmaWVyIChgQ3RybGAsIG9yIGBDbWRgIG9uIG1hY09TKSB3YXMgaGVsZC5cbiAgICovXG4gIHJlYWRvbmx5IGlzTW9kaWZpZXJQcmVzc2VkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGBTaGlmdGAgd2FzIGhlbGQuXG4gICAqL1xuICByZWFkb25seSBpc1NoaWZ0UHJlc3NlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIHNlbGVjdGlvbiBpbiBhbiB7QGxpbmsgRW1iZWRkYWJsZU1hcmtkb3duRWRpdG9yQ29tcG9uZW50fSwgYXMgZG9jdW1lbnQgb2Zmc2V0cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnRTZWxlY3Rpb24ge1xuICAvKipcbiAgICogVGhlIG9mZnNldCB0aGUgc2VsZWN0aW9uIHN0YXJ0cyBmcm9tLlxuICAgKi9cbiAgcmVhZG9ubHkgYW5jaG9yOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBvZmZzZXQgdGhlIHNlbGVjdGlvbiBleHRlbmRzIHRvLCB3aGVyZSB0aGUgY3Vyc29yIGlzLlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhZDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgRWRpdG9ySG9va3Mge1xuICByZWFkb25seSBidWlsZEV4dGVuc2lvbnM6ICgpID0+IEV4dGVuc2lvbltdO1xuICByZWFkb25seSBoYW5kbGVVcGRhdGU6ICh1cGRhdGU6IFZpZXdVcGRhdGUsIGlzQ2hhbmdlZDogYm9vbGVhbikgPT4gdm9pZDtcbn1cblxudHlwZSBFbWJlZGRlZFNjcm9sbGFibGVNYXJrZG93bkVkaXRvckNvbnN0cnVjdG9yID0gbmV3IChcbiAgYXBwOiBBcHAsXG4gIGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCxcbiAgb3duZXI6IE1hcmtkb3duU2Nyb2xsYWJsZUVkaXRWaWV3T3duZXIsXG4gIGhvb2tzOiBFZGl0b3JIb29rc1xuKSA9PiBNYXJrZG93blNjcm9sbGFibGVFZGl0VmlldztcblxudHlwZSBTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3RvciA9IEV4dHJhY3RDb25zdHJ1Y3RvcjxNYXJrZG93blNjcm9sbGFibGVFZGl0Vmlldz47XG5cbmludGVyZmFjZSBTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3RvckNhY2hlIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHR5cGVzY3JpcHQtZGV2LXRvb2xraXQvcmVhZG9ubHktaW50ZXJmYWNlLW1lbWJlcnMgLS0gRmlsbGVkIG9uIGZpcnN0IHVzZS5cbiAgdmFsdWU6IG51bGwgfCBTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3Rvcjtcbn1cblxuLyogZXNsaW50LWRpc2FibGUgdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9yZWFkb25seS1pbnRlcmZhY2UtbWVtYmVycyAtLSBUaGUgb3duZXIgbGVhcm5zIGl0cyBlZGl0b3IgYWZ0ZXIgdGhlIGVkaXRvciwgd2hpY2ggbmVlZHMgdGhlIG93bmVyLCBpcyBidWlsdC4gKi9cbmludGVyZmFjZSBTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JPd25lciBleHRlbmRzIE1hcmtkb3duU2Nyb2xsYWJsZUVkaXRWaWV3T3duZXIge1xuICBlZGl0TW9kZTogTWFya2Rvd25TY3JvbGxhYmxlRWRpdFZpZXcgfCBudWxsO1xuICByZWFkb25seSBnZXRNb2RlOiAoKSA9PiAnc291cmNlJztcbn1cbi8qIGVzbGludC1lbmFibGUgdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9yZWFkb25seS1pbnRlcmZhY2UtbWVtYmVycyAtLSBSZXN0b3JlIHRoZSBydWxlIGFmdGVyIHRoZSBvd25lci4gKi9cblxuaW50ZXJmYWNlIFNjcm9sbGFibGVNYXJrZG93bkVkaXRvclByb3RvdHlwZSB7XG4gIHJlYWRvbmx5IGNvbnN0cnVjdG9yOiBTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3Rvcjtcbn1cblxuY29uc3Qgc2Nyb2xsYWJsZU1hcmtkb3duRWRpdG9yQ29uc3RydWN0b3JDYWNoZTogU2Nyb2xsYWJsZU1hcmtkb3duRWRpdG9yQ29uc3RydWN0b3JDYWNoZSA9IHsgdmFsdWU6IG51bGwgfTtcblxuLyoqXG4gKiBBIGZ1bGwgT2JzaWRpYW4gTWFya2Rvd24gZWRpdG9yIG1vdW50ZWQgaW4gYW55IGVsZW1lbnQ6IExpdmUgUHJldmlldywgZWRpdG9yIGNvbW1hbmRzLCBob3RrZXlzIGFuZCB0aGUgZWRpdG9yXG4gKiBzdWdnZXN0ZXJzIGFsbCB3b3JrIGluIGl0IGFzIHRoZXkgZG8gaW4gYSBub3RlLlxuICpcbiAqIEFkZCBpdCBhcyBhIGNoaWxkIG9mIHRoZSBjb21wb25lbnQgdGhhdCBvd25zIGl0cyBlbGVtZW50OyB1bmxvYWRpbmcgaXQgZGVzdHJveXMgdGhlIGVkaXRvciBhbmQgcmVtb3ZlcyB0aGUgZWRpdG9yJ3NcbiAqIGVsZW1lbnQuIEl0IHdvcmtzIG9uIGRlc2t0b3AgYW5kIG1vYmlsZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGNvbnN0IGVkaXRvckNvbXBvbmVudCA9IHRoaXMuYWRkQ2hpbGQobmV3IEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudCh7XG4gKiAgIGFwcDogdGhpcy5hcHAsXG4gKiAgIGNvbnRhaW5lckVsLFxuICogICBvbkVudGVyOiAoeyBjb21wb25lbnQsIGlzTW9kaWZpZXJQcmVzc2VkIH0pID0+IHtcbiAqICAgICBpZiAoIWlzTW9kaWZpZXJQcmVzc2VkKSB7XG4gKiAgICAgICByZXR1cm4gZmFsc2U7XG4gKiAgICAgfVxuICogICAgIHNhdmUoY29tcG9uZW50LnZhbHVlKTtcbiAqICAgICByZXR1cm4gdHJ1ZTtcbiAqICAgfSxcbiAqICAgdmFsdWU6ICdJbml0aWFsIHRleHQnXG4gKiB9KSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEV4IHtcbiAgLyoqXG4gICAqIFRoZSBPYnNpZGlhbiBlZGl0b3IsIGFzIGluIGEgbm90ZS5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGVkaXRvci5cbiAgICovXG4gIHB1YmxpYyBnZXQgZWRpdG9yKCk6IEVkaXRvciB7XG4gICAgcmV0dXJuIGVuc3VyZU5vbk51bGxhYmxlKHRoaXMuZ2V0U2Nyb2xsYWJsZUVkaXRvcigpLmVkaXRvcik7XG4gIH1cblxuICAvKipcbiAgICogVGhlIENvZGVNaXJyb3IgdmlldyBiZWhpbmQgdGhlIGVkaXRvci5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIENvZGVNaXJyb3Igdmlldy5cbiAgICovXG4gIHB1YmxpYyBnZXQgZWRpdG9yVmlldygpOiBFZGl0b3JWaWV3IHtcbiAgICByZXR1cm4gdGhpcy5nZXRTY3JvbGxhYmxlRWRpdG9yKCkuY207XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZWRpdG9yIGhvbGRzIHRoZSBmb2N1cyB3aXRoaW4gaXRzIHdpbmRvdy5cbiAgICpcbiAgICogVW5saWtlIENvZGVNaXJyb3IncyBgRWRpdG9yVmlldy5oYXNGb2N1c2AsIHRoaXMgZG9lcyBub3QgYWxzbyByZXF1aXJlIHRoZSB3aW5kb3cgdG8gaGF2ZSB0aGUgb3BlcmF0aW5nIHN5c3RlbSdzXG4gICAqIGZvY3VzLCBzbyBpdCBzdGF5cyBgdHJ1ZWAgd2hpbGUgdGhlIHVzZXIgaXMgaW4gYW5vdGhlciBhcHBsaWNhdGlvbiBvciBhbm90aGVyIE9ic2lkaWFuIHdpbmRvdyBpcyBpbiBmcm9udC5cbiAgICpcbiAgICogQHJldHVybnMgYHRydWVgIHdoZW4gdGhlIGVkaXRvcidzIGNvbnRlbnQgZWxlbWVudCBpcyBpdHMgZG9jdW1lbnQncyBhY3RpdmUgZWxlbWVudC5cbiAgICovXG4gIHB1YmxpYyBnZXQgaGFzRm9jdXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzRWRpdG9yVmlld0ZvY3VzZWRJbkl0c1dpbmRvdyh0aGlzLmdldFNjcm9sbGFibGVFZGl0b3IoKS5hY3RpdmVDTSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgZG9jdW1lbnQuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBkb2N1bWVudCB0ZXh0LlxuICAgKi9cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFNjcm9sbGFibGVFZGl0b3IoKS5jbS5zdGF0ZS5kb2MudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgT2JzaWRpYW4gYXBwIGluc3RhbmNlLlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGFwcDogQXBwO1xuXG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCB0aGUgZWRpdG9yIGlzIG1vdW50ZWQgaW4uXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udGFpbmVyRWw6IEhUTUxFbGVtZW50O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2xzOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgY3Vyc29yTG9jYXRpb246IEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudFNlbGVjdGlvbiB8IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgaW5pdGlhbFZhbHVlOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkga2V5bWFwU2NvcGU6IFNjb3BlO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uQmx1cjogKChjb21wb25lbnQ6IEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudCkgPT4gdm9pZCkgfCBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uQ2hhbmdlOiAoKHVwZGF0ZTogVmlld1VwZGF0ZSwgY29tcG9uZW50OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnQpID0+IHZvaWQpIHwgbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBvbkVudGVyOiAoKHBhcmFtczogRW1iZWRkYWJsZU1hcmtkb3duRWRpdG9yQ29tcG9uZW50RW50ZXJQYXJhbXMpID0+IGJvb2xlYW4pIHwgbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBvbkVzY2FwZTogKChjb21wb25lbnQ6IEVtYmVkZGFibGVNYXJrZG93bkVkaXRvckNvbXBvbmVudCkgPT4gdm9pZCkgfCBudWxsO1xuICBwcml2YXRlIHJlYWRvbmx5IG9uUGFzdGU6ICgoJGV2ZW50OiBDbGlwYm9hcmRFdmVudCwgY29tcG9uZW50OiBFbWJlZGRhYmxlTWFya2Rvd25FZGl0b3JDb21wb25lbnQpID0+IHZvaWQpIHwgbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBvd25lcjogU2Nyb2xsYWJsZU1hcmtkb3duRWRpdG9yT3duZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGxhY2Vob2xkZXJUZXh0OiBzdHJpbmc7XG4gIHByaXZhdGUgc2Nyb2xsYWJsZUVkaXRvcjogTWFya2Rvd25TY3JvbGxhYmxlRWRpdFZpZXcgfCBudWxsID0gbnVsbDtcblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgY29tcG9uZW50LiBUaGUgZWRpdG9yIGlzIGJ1aWx0IHdoZW4gdGhlIGNvbXBvbmVudCBsb2Fkcy5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtcyAtIFRoZSBwYXJhbWV0ZXJzLlxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHBhcmFtczogRW1iZWRkYWJsZU1hcmtkb3duRWRpdG9yQ29tcG9uZW50Q29uc3RydWN0b3JQYXJhbXMpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXBwID0gcGFyYW1zLmFwcDtcbiAgICB0aGlzLmNvbnRhaW5lckVsID0gcGFyYW1zLmNvbnRhaW5lckVsO1xuICAgIHRoaXMuY2xzID0gcGFyYW1zLmNscyA/PyAnJztcbiAgICB0aGlzLmN1cnNvckxvY2F0aW9uID0gcGFyYW1zLmN1cnNvckxvY2F0aW9uID8/IG51bGw7XG4gICAgdGhpcy5pbml0aWFsVmFsdWUgPSBwYXJhbXMudmFsdWUgPz8gJyc7XG4gICAgdGhpcy5vbkJsdXIgPSBwYXJhbXMub25CbHVyID8/IG51bGw7XG4gICAgdGhpcy5vbkNoYW5nZSA9IHBhcmFtcy5vbkNoYW5nZSA/PyBudWxsO1xuICAgIHRoaXMub25FbnRlciA9IHBhcmFtcy5vbkVudGVyID8/IG51bGw7XG4gICAgdGhpcy5vbkVzY2FwZSA9IHBhcmFtcy5vbkVzY2FwZSA/PyBudWxsO1xuICAgIHRoaXMub25QYXN0ZSA9IHBhcmFtcy5vblBhc3RlID8/IG51bGw7XG4gICAgdGhpcy5wbGFjZWhvbGRlclRleHQgPSBwYXJhbXMucGxhY2Vob2xkZXIgPz8gJyc7XG4gICAgdGhpcy5rZXltYXBTY29wZSA9IG5ldyBTY29wZShwYXJhbXMuYXBwLnNjb3BlKTtcbiAgICAvLyBUaGUgZWRpdG9yJ3Mgb3duZXIgc3RhbmRzIGluIGZvciBhIGBNYXJrZG93blZpZXdgLiBUaGUgZWRpdG9yIGNvbW1hbmRzIHJlYWNoIHRoZSBlZGl0b3IgdGhyb3VnaFxuICAgIC8vIGBhY3RpdmVFZGl0b3IuZWRpdE1vZGVgIGFuZCBgYWN0aXZlRWRpdG9yLmVkaXRvcmAsIGFuZCBzY3JvbGxpbmcgY2FsbHMgYmFjayBpbnRvIHRoZSBvd25lci5cbiAgICB0aGlzLm93bmVyID0ge1xuICAgICAgYXBwOiBwYXJhbXMuYXBwLFxuICAgICAgZWRpdE1vZGU6IG51bGwsXG4gICAgICBmaWxlOiBudWxsLFxuICAgICAgZ2V0TW9kZTogKCk6ICdzb3VyY2UnID0+ICdzb3VyY2UnLFxuICAgICAgaG92ZXJQb3BvdmVyOiBudWxsLFxuICAgICAgc3luY1Njcm9sbDogbm9vcFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRm9jdXNlcyB0aGUgZWRpdG9yLlxuICAgKi9cbiAgcHVibGljIGZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0U2Nyb2xsYWJsZUVkaXRvcigpLmZvY3VzKCk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBlZGl0b3IgYW5kIG1vdW50cyBpdCBpbiB0aGUgY29udGFpbmVyLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIG9ubG9hZCgpOiB2b2lkIHtcbiAgICBzdXBlci5vbmxvYWQoKTtcbiAgICBjb25zdCBFZGl0b3JDb25zdHJ1Y3RvciA9IGNyZWF0ZUVkaXRvckNsYXNzKGdldFNjcm9sbGFibGVNYXJrZG93bkVkaXRvckNvbnN0cnVjdG9yKHRoaXMuYXBwKSk7XG4gICAgY29uc3Qgc2Nyb2xsYWJsZUVkaXRvciA9IG5ldyBFZGl0b3JDb25zdHJ1Y3Rvcih0aGlzLmFwcCwgdGhpcy5jb250YWluZXJFbCwgdGhpcy5vd25lciwge1xuICAgICAgYnVpbGRFeHRlbnNpb25zOiAoKTogRXh0ZW5zaW9uW10gPT4gdGhpcy5idWlsZEV4dGVuc2lvbnMoKSxcbiAgICAgIGhhbmRsZVVwZGF0ZTogKHVwZGF0ZTogVmlld1VwZGF0ZSwgaXNDaGFuZ2VkOiBib29sZWFuKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlVXBkYXRlKHVwZGF0ZSwgaXNDaGFuZ2VkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnNjcm9sbGFibGVFZGl0b3IgPSBzY3JvbGxhYmxlRWRpdG9yO1xuICAgIHRoaXMub3duZXIuZWRpdE1vZGUgPSBzY3JvbGxhYmxlRWRpdG9yO1xuICAgIHRoaXMub3duZXIuZWRpdG9yID0gZW5zdXJlTm9uTnVsbGFibGUoc2Nyb2xsYWJsZUVkaXRvci5lZGl0b3IpO1xuICAgIHRoaXMuYWRkQ2hpbGQoc2Nyb2xsYWJsZUVkaXRvcik7XG5cbiAgICBpZiAodGhpcy5vbkVudGVyKSB7XG4gICAgICAvLyBPYnNpZGlhbidzIGhvdGtleXMgcnVuIGJlZm9yZSBDb2RlTWlycm9yJ3Mga2V5bWFwLCBhbmQgYE1vZCtFbnRlcmAgb3BlbnMgdGhlIGxpbmsgdW5kZXIgdGhlIGN1cnNvci4gQSBoYW5kbGVyXG4gICAgICAvLyByZXR1cm5pbmcgYHRydWVgIHN0b3BzIHRoYXQgaG90a2V5IHdpdGhvdXQgc3RvcHBpbmcgdGhlIGV2ZW50LCBzbyB0aGUgZWRpdG9yIGtleW1hcCBzdGlsbCBzZWVzIHRoZSBrZXkuXG4gICAgICBjb25zdCBzdWJtaXRIb3RrZXlIYW5kbGVyID0gdGhpcy5rZXltYXBTY29wZS5yZWdpc3RlcihbJ01vZCddLCAnRW50ZXInLCAoKSA9PiB0cnVlKTtcbiAgICAgIHRoaXMucmVnaXN0ZXIoKCkgPT4ge1xuICAgICAgICB0aGlzLmtleW1hcFNjb3BlLnVucmVnaXN0ZXIoc3VibWl0SG90a2V5SGFuZGxlcik7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jbHMpIHtcbiAgICAgIHNjcm9sbGFibGVFZGl0b3IuZWRpdG9yRWwuYWRkQ2xhc3ModGhpcy5jbHMpO1xuICAgIH1cblxuICAgIHNjcm9sbGFibGVFZGl0b3Iuc2V0KHRoaXMuaW5pdGlhbFZhbHVlLCBmYWxzZSk7XG5cbiAgICBpZiAodGhpcy5jdXJzb3JMb2NhdGlvbikge1xuICAgICAgc2Nyb2xsYWJsZUVkaXRvci5jbS5kaXNwYXRjaCh7XG4gICAgICAgIHNlbGVjdGlvbjogRWRpdG9yU2VsZWN0aW9uLnJhbmdlKHRoaXMuY3Vyc29yTG9jYXRpb24uYW5jaG9yLCB0aGlzLmN1cnNvckxvY2F0aW9uLmhlYWQpXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBmb2N1c0d1YXJkUGF0Y2hDb21wb25lbnQgPSB0aGlzLmFkZENoaWxkKG5ldyBNb25rZXlBcm91bmRDb21wb25lbnQoKSk7XG4gICAgZm9jdXNHdWFyZFBhdGNoQ29tcG9uZW50LnJlZ2lzdGVyTWV0aG9kUGF0Y2goe1xuICAgICAgJG9iamVjdDogdGhpcy5hcHAud29ya3NwYWNlLFxuICAgICAgbWV0aG9kTmFtZTogJ3NldEFjdGl2ZUxlYWYnLFxuICAgICAgcGF0Y2hIYW5kbGVyOiAoeyBmYWxsYmFjayB9KSA9PiB7XG4gICAgICAgIC8vIEEgZm9jdXNlZCBlZGl0b3IgdGhhdCBiZWxvbmdzIHRvIG5vIGxlYWYgd291bGQgb3RoZXJ3aXNlIGxvc2UgaXRzIGZvY3VzIHRvIHRoZSBsZWFmIHRoZSB3b3Jrc3BhY2UgYWN0aXZhdGVzLlxuICAgICAgICAvLyBDb2RlTWlycm9yJ3Mgb3duIGBoYXNGb2N1c2AgaXMgYGZhbHNlYCB3aGVuZXZlciB0aGUgd2luZG93IGxhY2tzIHRoZSBvcGVyYXRpbmcgc3lzdGVtJ3MgZm9jdXMsIHdoaWNoIHdvdWxkIGxldFxuICAgICAgICAvLyB0aGUgd29ya3NwYWNlIHRha2UgdGhlIGZvY3VzIGF3YXkgd2hpbGUgYW5vdGhlciB3aW5kb3cgaXMgaW4gZnJvbnQsIHNvIHRoZSBndWFyZCByZWFkcyB0aGUgRE9NIGZvY3VzIGluc3RlYWQuXG4gICAgICAgIGlmIChpc0VkaXRvclZpZXdGb2N1c2VkSW5JdHNXaW5kb3coc2Nyb2xsYWJsZUVkaXRvci5hY3RpdmVDTSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZmFsbGJhY2soKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMucmVnaXN0ZXIoKCkgPT4ge1xuICAgICAgdGhpcy5hcHAua2V5bWFwLnBvcFNjb3BlKHRoaXMua2V5bWFwU2NvcGUpO1xuICAgICAgaWYgKHRoaXMuYXBwLndvcmtzcGFjZS5hY3RpdmVFZGl0b3IgPT09IHRoaXMub3duZXIpIHtcbiAgICAgICAgdGhpcy5hcHAud29ya3NwYWNlLmFjdGl2ZUVkaXRvciA9IG51bGw7XG4gICAgICB9XG4gICAgICBzY3JvbGxhYmxlRWRpdG9yLmRlc3Ryb3koKTtcbiAgICAgIHNjcm9sbGFibGVFZGl0b3IuZWRpdG9yRWwucmVtb3ZlKCk7XG4gICAgICB0aGlzLm93bmVyLmVkaXRNb2RlID0gbnVsbDtcbiAgICAgIGRlbGV0ZSB0aGlzLm93bmVyLmVkaXRvcjtcbiAgICAgIHRoaXMuc2Nyb2xsYWJsZUVkaXRvciA9IG51bGw7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZXMgdGhlIGRvY3VtZW50LlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBUaGUgbmV3IGRvY3VtZW50LlxuICAgKi9cbiAgcHVibGljIHNldFZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmdldFNjcm9sbGFibGVFZGl0b3IoKS5zZXQodmFsdWUsIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIGVkaXRvcidzIG93biBleHRlbnNpb25zOiB0aGUgcGxhY2Vob2xkZXIsIHRoZSBmb2N1cyBhbmQgcGFzdGUgaGFuZGxlcnMsIGFuZCB0aGUga2V5IGhhbmRsZXJzLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgZXh0ZW5zaW9ucy5cbiAgICovXG4gIHByb3RlY3RlZCBidWlsZEV4dGVuc2lvbnMoKTogRXh0ZW5zaW9uW10ge1xuICAgIGNvbnN0IGV4dGVuc2lvbnM6IEV4dGVuc2lvbltdID0gW1xuICAgICAgRWRpdG9yVmlldy5kb21FdmVudEhhbmRsZXJzKHtcbiAgICAgICAgYmx1cjogKCk6IHZvaWQgPT4ge1xuICAgICAgICAgIHRoaXMuYXBwLmtleW1hcC5wb3BTY29wZSh0aGlzLmtleW1hcFNjb3BlKTtcbiAgICAgICAgICBpZiAodGhpcy5fbG9hZGVkKSB7XG4gICAgICAgICAgICB0aGlzLm9uQmx1cj8uKHRoaXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZm9jdXM6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICB0aGlzLmFwcC5rZXltYXAucHVzaFNjb3BlKHRoaXMua2V5bWFwU2NvcGUpO1xuICAgICAgICB9LFxuICAgICAgICBwYXN0ZTogKCRldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgICB0aGlzLm9uUGFzdGU/LigkZXZlbnQsIHRoaXMpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIFByZWMuaGlnaGVzdChrZXltYXAub2YoW1xuICAgICAgICB7XG4gICAgICAgICAga2V5OiAnRW50ZXInLFxuICAgICAgICAgIHJ1bjogKCk6IGJvb2xlYW4gPT4gdGhpcy5pc0VudGVySGFuZGxlZChmYWxzZSwgZmFsc2UpLFxuICAgICAgICAgIHNoaWZ0OiAoKTogYm9vbGVhbiA9PiB0aGlzLmlzRW50ZXJIYW5kbGVkKGZhbHNlLCB0cnVlKVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAga2V5OiAnTW9kLUVudGVyJyxcbiAgICAgICAgICBydW46ICgpOiBib29sZWFuID0+IHRoaXMuaXNFbnRlckhhbmRsZWQodHJ1ZSwgZmFsc2UpLFxuICAgICAgICAgIHNoaWZ0OiAoKTogYm9vbGVhbiA9PiB0aGlzLmlzRW50ZXJIYW5kbGVkKHRydWUsIHRydWUpXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBrZXk6ICdFc2NhcGUnLFxuICAgICAgICAgIHByZXZlbnREZWZhdWx0OiB0cnVlLFxuICAgICAgICAgIHJ1bjogKCk6IGJvb2xlYW4gPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLm9uRXNjYXBlKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMub25Fc2NhcGUodGhpcyk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF0pKVxuICAgIF07XG5cbiAgICBpZiAodGhpcy5wbGFjZWhvbGRlclRleHQpIHtcbiAgICAgIGV4dGVuc2lvbnMucHVzaChwbGFjZWhvbGRlcih0aGlzLnBsYWNlaG9sZGVyVGV4dCkpO1xuICAgIH1cblxuICAgIHJldHVybiBleHRlbnNpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBhZnRlciBldmVyeSB1cGRhdGUgb2YgdGhlIGVkaXRvciwgd2l0aCB3aGV0aGVyIHRoZSBkb2N1bWVudCBjaGFuZ2VkLlxuICAgKlxuICAgKiBAcGFyYW0gdXBkYXRlIC0gVGhlIENvZGVNaXJyb3IgdXBkYXRlLlxuICAgKiBAcGFyYW0gaXNDaGFuZ2VkIC0gV2hldGhlciB0aGUgZG9jdW1lbnQgY2hhbmdlZC5cbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVVcGRhdGUodXBkYXRlOiBWaWV3VXBkYXRlLCBpc0NoYW5nZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoaXNDaGFuZ2VkKSB7XG4gICAgICB0aGlzLm9uQ2hhbmdlPy4odXBkYXRlLCB0aGlzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFNjcm9sbGFibGVFZGl0b3IoKTogTWFya2Rvd25TY3JvbGxhYmxlRWRpdFZpZXcge1xuICAgIHJldHVybiBlbnN1cmVOb25OdWxsYWJsZSh0aGlzLnNjcm9sbGFibGVFZGl0b3IsICdUaGUgZWRpdG9yIGlzIGJ1aWx0IHdoZW4gdGhlIGNvbXBvbmVudCBsb2Fkcy4nKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNFbnRlckhhbmRsZWQoaXNNb2RpZmllclByZXNzZWQ6IGJvb2xlYW4sIGlzU2hpZnRQcmVzc2VkOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMub25FbnRlcj8uKHsgY29tcG9uZW50OiB0aGlzLCBpc01vZGlmaWVyUHJlc3NlZCwgaXNTaGlmdFByZXNzZWQgfSkgPz8gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlRWRpdG9yQ2xhc3MoQmFzZUNvbnN0cnVjdG9yOiBTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3Rvcik6IEVtYmVkZGVkU2Nyb2xsYWJsZU1hcmtkb3duRWRpdG9yQ29uc3RydWN0b3Ige1xuICByZXR1cm4gY2xhc3MgRW1iZWRkZWRTY3JvbGxhYmxlTWFya2Rvd25FZGl0b3IgZXh0ZW5kcyBCYXNlQ29uc3RydWN0b3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgY29udGFpbmVyRWw6IEhUTUxFbGVtZW50LCBvd25lcjogTWFya2Rvd25TY3JvbGxhYmxlRWRpdFZpZXdPd25lciwgcHJpdmF0ZSByZWFkb25seSBob29rczogRWRpdG9ySG9va3MpIHtcbiAgICAgIC8vIFRoZSBiYXNlIGJ1aWxkcyBpdHMgZXh0ZW5zaW9ucyBsYXppbHksIG9uIHRoZSBmaXJzdCBgc2V0KClgLCBzbyB0aGUgaG9va3MgYXJlIG5vdCBuZWVkZWQgZHVyaW5nIGBzdXBlcigpYC5cbiAgICAgIHN1cGVyKGFwcCwgY29udGFpbmVyRWwsIG93bmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgYnVpbGRMb2NhbEV4dGVuc2lvbnMoKTogRXh0ZW5zaW9uW10ge1xuICAgICAgcmV0dXJuIFsuLi5zdXBlci5idWlsZExvY2FsRXh0ZW5zaW9ucygpLCAuLi50aGlzLmhvb2tzLmJ1aWxkRXh0ZW5zaW9ucygpXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgb25VcGRhdGUodXBkYXRlOiBWaWV3VXBkYXRlLCBpc0NoYW5nZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgIHN1cGVyLm9uVXBkYXRlKHVwZGF0ZSwgaXNDaGFuZ2VkKTtcbiAgICAgIHRoaXMuaG9va3MuaGFuZGxlVXBkYXRlKHVwZGF0ZSwgaXNDaGFuZ2VkKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFNjcm9sbGFibGVNYXJrZG93bkVkaXRvckNvbnN0cnVjdG9yKGFwcDogQXBwKTogU2Nyb2xsYWJsZU1hcmtkb3duRWRpdG9yQ29uc3RydWN0b3Ige1xuICBpZiAoc2Nyb2xsYWJsZU1hcmtkb3duRWRpdG9yQ29uc3RydWN0b3JDYWNoZS52YWx1ZSkge1xuICAgIHJldHVybiBzY3JvbGxhYmxlTWFya2Rvd25FZGl0b3JDb25zdHJ1Y3RvckNhY2hlLnZhbHVlO1xuICB9XG5cbiAgLy8gQW4gZWRpdGFibGUgTWFya2Rvd24gZW1iZWQgYnVpbGRzIGFuIGlmcmFtZWQgZWRpdG9yIHdob3NlIGJhc2UgY2xhc3MgaXMgdGhlIHNjcm9sbGFibGUgZWRpdG9yLiBUaGUgZW1iZWQgaXMgZ2l2ZW5cbiAgLy8gbm8gZmlsZSwgd2hpY2ggaXMgd2hhdCBrZWVwcyBpdCBmcm9tIHJlYWRpbmcgb3Igd2F0Y2hpbmcgb25lLlxuICBjb25zdCB3aWRnZXRFZGl0b3JWaWV3ID0gY2FzdFRvPFdpZGdldEVkaXRvclZpZXc+KGFwcC5lbWJlZFJlZ2lzdHJ5LmVtYmVkQnlFeHRlbnNpb24ubWQoeyBhcHAsIGNvbnRhaW5lckVsOiBjcmVhdGVEaXYoKSB9LCBjYXN0VG88VEZpbGU+KG51bGwpLCAnJykpO1xuXG4gIHRyeSB7XG4gICAgd2lkZ2V0RWRpdG9yVmlldy5lZGl0YWJsZSA9IHRydWU7XG4gICAgd2lkZ2V0RWRpdG9yVmlldy5zaG93RWRpdG9yKCk7XG4gICAgY29uc3QgaWZyYW1lZEVkaXRvciA9IGVuc3VyZU5vbk51bGxhYmxlKHdpZGdldEVkaXRvclZpZXcuZWRpdE1vZGUsICdUaGUgTWFya2Rvd24gZW1iZWQgYnVpbHQgbm8gZWRpdG9yLicpO1xuICAgIGNvbnN0IHNjcm9sbGFibGVFZGl0b3JQcm90b3R5cGUgPSBjYXN0VG88U2Nyb2xsYWJsZU1hcmtkb3duRWRpdG9yUHJvdG90eXBlPihPYmplY3QuZ2V0UHJvdG90eXBlT2YoT2JqZWN0LmdldFByb3RvdHlwZU9mKGlmcmFtZWRFZGl0b3IpIGFzIG9iamVjdCkpO1xuICAgIHNjcm9sbGFibGVNYXJrZG93bkVkaXRvckNvbnN0cnVjdG9yQ2FjaGUudmFsdWUgPSBzY3JvbGxhYmxlRWRpdG9yUHJvdG90eXBlLmNvbnN0cnVjdG9yO1xuICAgIHJldHVybiBzY3JvbGxhYmxlRWRpdG9yUHJvdG90eXBlLmNvbnN0cnVjdG9yO1xuICB9IGZpbmFsbHkge1xuICAgIHdpZGdldEVkaXRvclZpZXcudW5sb2FkKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNFZGl0b3JWaWV3Rm9jdXNlZEluSXRzV2luZG93KGVkaXRvclZpZXc6IEVkaXRvclZpZXcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGVkaXRvclZpZXcucm9vdC5hY3RpdmVFbGVtZW50ID09PSBlZGl0b3JWaWV3LmNvbnRlbnRET007XG59XG5cbi8qIHY4IGlnbm9yZSBzdG9wICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0RBO0FBQUEsRUFDRTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1A7QUFBQSxFQUNFO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxPQUNLO0FBQ1AsU0FBUyxZQUFZO0FBQ3JCLFNBQVMsY0FBYztBQUN2QixTQUFTLHlCQUF5QjtBQUNsQyxTQUFTLGFBQWE7QUFFdEIsU0FBUyxtQkFBbUI7QUFDNUIsU0FBUyw2QkFBNkI7QUFxSXRDLE1BQU0sMkNBQXFGLEVBQUUsT0FBTyxLQUFLO0FBeUJsRyxNQUFNLDBDQUEwQyxZQUFZO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTWpFLElBQVcsU0FBaUI7QUFDMUIsV0FBTyxrQkFBa0IsS0FBSyxvQkFBb0IsRUFBRSxNQUFNO0FBQUEsRUFDNUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPQSxJQUFXLGFBQXlCO0FBQ2xDLFdBQU8sS0FBSyxvQkFBb0IsRUFBRTtBQUFBLEVBQ3BDO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBVUEsSUFBVyxXQUFvQjtBQUM3QixXQUFPLCtCQUErQixLQUFLLG9CQUFvQixFQUFFLFFBQVE7QUFBQSxFQUMzRTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLElBQVcsUUFBZ0I7QUFDekIsV0FBTyxLQUFLLG9CQUFvQixFQUFFLEdBQUcsTUFBTSxJQUFJLFNBQVM7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
@@ -1,6 +1,7 @@
1
1
  /// <reference path="../library-references.d.mts" />
2
2
  export * as 'abort-signal-component' from './abort-signal-component.mjs';
3
3
  export * as 'all-windows-event-component' from './all-windows-event-component.mjs';
4
+ export * as 'all-windows-status-bar-item-component' from './all-windows-status-bar-item-component.mjs';
4
5
  export * as 'async-error-handler-component' from './async-error-handler-component.mjs';
5
6
  export * as 'async-events-component' from './async-events-component.mjs';
6
7
  export * as 'bulk-operation-commit-component' from './bulk-operation-commit-component.mjs';
@@ -32,6 +33,8 @@ export * as 'rename-delete-handler-component' from './rename-delete-handler-comp
32
33
  export * as 'rmdir-guard-component' from './rmdir-guard-component.mjs';
33
34
  export * as 'settings-facet-component' from './settings-facet-component.mjs';
34
35
  export * as 'settings-migration-component' from './settings-migration-component.mjs';
36
+ export * as 'shared-component-pool-component' from './shared-component-pool-component.mjs';
35
37
  export * as 'style-sheet-component' from './style-sheet-component.mjs';
36
38
  export * as 'syntax-highlighting-component' from './syntax-highlighting-component.mjs';
37
39
  export * as 'templates-language-component' from './templates-language-component.mjs';
40
+ export * as 'workspace-layout-state-component' from './workspace-layout-state-component.mjs';
@@ -5,6 +5,7 @@ if you want to view the source, please visit the github repository of this plugi
5
5
 
6
6
  import * as abort_signal_component from "./abort-signal-component.mjs";
7
7
  import * as all_windows_event_component from "./all-windows-event-component.mjs";
8
+ import * as all_windows_status_bar_item_component from "./all-windows-status-bar-item-component.mjs";
8
9
  import * as async_error_handler_component from "./async-error-handler-component.mjs";
9
10
  import * as async_events_component from "./async-events-component.mjs";
10
11
  import * as bulk_operation_commit_component from "./bulk-operation-commit-component.mjs";
@@ -36,12 +37,15 @@ import * as rename_delete_handler_component from "./rename-delete-handler-compon
36
37
  import * as rmdir_guard_component from "./rmdir-guard-component.mjs";
37
38
  import * as settings_facet_component from "./settings-facet-component.mjs";
38
39
  import * as settings_migration_component from "./settings-migration-component.mjs";
40
+ import * as shared_component_pool_component from "./shared-component-pool-component.mjs";
39
41
  import * as style_sheet_component from "./style-sheet-component.mjs";
40
42
  import * as syntax_highlighting_component from "./syntax-highlighting-component.mjs";
41
43
  import * as templates_language_component from "./templates-language-component.mjs";
44
+ import * as workspace_layout_state_component from "./workspace-layout-state-component.mjs";
42
45
  export {
43
46
  abort_signal_component as "abort-signal-component",
44
47
  all_windows_event_component as "all-windows-event-component",
48
+ all_windows_status_bar_item_component as "all-windows-status-bar-item-component",
45
49
  async_error_handler_component as "async-error-handler-component",
46
50
  async_events_component as "async-events-component",
47
51
  bulk_operation_commit_component as "bulk-operation-commit-component",
@@ -73,8 +77,10 @@ export {
73
77
  rmdir_guard_component as "rmdir-guard-component",
74
78
  settings_facet_component as "settings-facet-component",
75
79
  settings_migration_component as "settings-migration-component",
80
+ shared_component_pool_component as "shared-component-pool-component",
76
81
  style_sheet_component as "style-sheet-component",
77
82
  syntax_highlighting_component as "syntax-highlighting-component",
78
- templates_language_component as "templates-language-component"
83
+ templates_language_component as "templates-language-component",
84
+ workspace_layout_state_component as "workspace-layout-state-component"
79
85
  };
80
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyAnYWJvcnQtc2lnbmFsLWNvbXBvbmVudCcgZnJvbSAnLi9hYm9ydC1zaWduYWwtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdhbGwtd2luZG93cy1ldmVudC1jb21wb25lbnQnIGZyb20gJy4vYWxsLXdpbmRvd3MtZXZlbnQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdhc3luYy1lcnJvci1oYW5kbGVyLWNvbXBvbmVudCcgZnJvbSAnLi9hc3luYy1lcnJvci1oYW5kbGVyLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnYXN5bmMtZXZlbnRzLWNvbXBvbmVudCcgZnJvbSAnLi9hc3luYy1ldmVudHMtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdidWxrLW9wZXJhdGlvbi1jb21taXQtY29tcG9uZW50JyBmcm9tICcuL2J1bGstb3BlcmF0aW9uLWNvbW1pdC1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2Nhc2UtaW5zZW5zaXRpdmUtZmlsZS1pbmRleC1jb21wb25lbnQnIGZyb20gJy4vY2FzZS1pbnNlbnNpdGl2ZS1maWxlLWluZGV4LWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnY29tcG9uZW50LWV4JyBmcm9tICcuL2NvbXBvbmVudC1leC50cyc7XG5leHBvcnQgKiBhcyAnY29uc29sZS1kZWJ1Zy1jb21wb25lbnQnIGZyb20gJy4vY29uc29sZS1kZWJ1Zy1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2NvcmUtcGx1Z2luLXRvZ2dsZS1jb21wb25lbnQnIGZyb20gJy4vY29yZS1wbHVnaW4tdG9nZ2xlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnZGlzcG9zYWJsZS1jb21wb25lbnQnIGZyb20gJy4vZGlzcG9zYWJsZS1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2VtYmVkLWV4dGVuc2lvbnMtY29tcG9uZW50JyBmcm9tICcuL2VtYmVkLWV4dGVuc2lvbnMtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdlbWJlZGRhYmxlLW1hcmtkb3duLWVkaXRvci1jb21wb25lbnQnIGZyb20gJy4vZW1iZWRkYWJsZS1tYXJrZG93bi1lZGl0b3ItY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdmaWxlLWV4cGxvcmVyLXJvb3QtbWVudS1jb21wb25lbnQnIGZyb20gJy4vZmlsZS1leHBsb3Jlci1yb290LW1lbnUtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdnZW5lcmF0ZS1tYXJrZG93bi1saW5rLWRlZmF1bHQtcGFyYW1zLWNvbXBvbmVudCcgZnJvbSAnLi9nZW5lcmF0ZS1tYXJrZG93bi1saW5rLWRlZmF1bHQtcGFyYW1zLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnaW5jcmVtZW50YWwtZmlsZS1pbmRleC1jb21wb25lbnQnIGZyb20gJy4vaW5jcmVtZW50YWwtZmlsZS1pbmRleC1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2xheW91dC1yZWFkeS1jb21wb25lbnQnIGZyb20gJy4vbGF5b3V0LXJlYWR5LWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnbWVudS1ldmVudC1yZWdpc3RyYXItY29tcG9uZW50JyBmcm9tICcuL21lbnUtZXZlbnQtcmVnaXN0cmFyLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnbW9ua2V5LWFyb3VuZC1jb21wb25lbnQnIGZyb20gJy4vbW9ua2V5LWFyb3VuZC1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ25vdGVib29rLW5hdmlnYXRvci1tZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQnIGZyb20gJy4vbm90ZWJvb2stbmF2aWdhdG9yLW1lbnUtZXZlbnQtcmVnaXN0cmFyLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLWNvbnRleHQtY29tcG9uZW50JyBmcm9tICcuL3BsdWdpbi1jb250ZXh0LWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLWdhdGUtY29tcG9uZW50JyBmcm9tICcuL3BsdWdpbi1nYXRlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLW5vdGljZS1jb21wb25lbnQnIGZyb20gJy4vcGx1Z2luLW5vdGljZS1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1zZXR0aW5ncy1jb21wb25lbnQnIGZyb20gJy4vcGx1Z2luLXNldHRpbmdzLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLXNldHRpbmdzLXRhYi1jb21wb25lbnQnIGZyb20gJy4vcGx1Z2luLXNldHRpbmdzLXRhYi1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3BsdWdpbi1zdWdnZXN0aW9uLWNvbXBvbmVudCcgZnJvbSAnLi9wbHVnaW4tc3VnZ2VzdGlvbi1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3BvaW50ZXItcG9zaXRpb24tY29tcG9uZW50JyBmcm9tICcuL3BvaW50ZXItcG9zaXRpb24tY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdyZWNvbmZpZ3VyYWJsZS1lZGl0b3ItZXh0ZW5zaW9uLWNvbXBvbmVudCcgZnJvbSAnLi9yZWNvbmZpZ3VyYWJsZS1lZGl0b3ItZXh0ZW5zaW9uLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncmVnaXN0cnktY29tcG9uZW50JyBmcm9tICcuL3JlZ2lzdHJ5LWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncmVsZWFzZS1ub3Rlcy1jb21wb25lbnQnIGZyb20gJy4vcmVsZWFzZS1ub3Rlcy1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3JlbmFtZS1kZWxldGUtaGFuZGxlci1jb21wb25lbnQnIGZyb20gJy4vcmVuYW1lLWRlbGV0ZS1oYW5kbGVyLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncm1kaXItZ3VhcmQtY29tcG9uZW50JyBmcm9tICcuL3JtZGlyLWd1YXJkLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnc2V0dGluZ3MtZmFjZXQtY29tcG9uZW50JyBmcm9tICcuL3NldHRpbmdzLWZhY2V0LWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnc2V0dGluZ3MtbWlncmF0aW9uLWNvbXBvbmVudCcgZnJvbSAnLi9zZXR0aW5ncy1taWdyYXRpb24tY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdzdHlsZS1zaGVldC1jb21wb25lbnQnIGZyb20gJy4vc3R5bGUtc2hlZXQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdzeW50YXgtaGlnaGxpZ2h0aW5nLWNvbXBvbmVudCcgZnJvbSAnLi9zeW50YXgtaGlnaGxpZ2h0aW5nLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAndGVtcGxhdGVzLWxhbmd1YWdlLWNvbXBvbmVudCcgZnJvbSAnLi90ZW1wbGF0ZXMtbGFuZ3VhZ2UtY29tcG9uZW50LnRzJztcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7O0FBRUEsWUFBWUEsNEJBQThCO0FBQzFDLFlBQVlDLGlDQUFtQztBQUMvQyxZQUFZQyxtQ0FBcUM7QUFDakQsWUFBWUMsNEJBQThCO0FBQzFDLFlBQVlDLHFDQUF1QztBQUNuRCxZQUFZQywyQ0FBNkM7QUFDekQsWUFBWUMsa0JBQW9CO0FBQ2hDLFlBQVlDLDZCQUErQjtBQUMzQyxZQUFZQyxrQ0FBb0M7QUFDaEQsWUFBWUMsMEJBQTRCO0FBQ3hDLFlBQVlDLGdDQUFrQztBQUM5QyxZQUFZQywwQ0FBNEM7QUFDeEQsWUFBWUMsdUNBQXlDO0FBQ3JELFlBQVlDLHFEQUF1RDtBQUNuRSxZQUFZQyxzQ0FBd0M7QUFDcEQsWUFBWUMsNEJBQThCO0FBQzFDLFlBQVlDLG9DQUFzQztBQUNsRCxZQUFZQyw2QkFBK0I7QUFDM0MsWUFBWUMsdURBQXlEO0FBQ3JFLFlBQVlDLDhCQUFnQztBQUM1QyxZQUFZQywyQkFBNkI7QUFDekMsWUFBWUMsNkJBQStCO0FBQzNDLFlBQVlDLCtCQUFpQztBQUM3QyxZQUFZQyxtQ0FBcUM7QUFDakQsWUFBWUMsaUNBQW1DO0FBQy9DLFlBQVlDLGdDQUFrQztBQUM5QyxZQUFZQywrQ0FBaUQ7QUFDN0QsWUFBWUMsd0JBQTBCO0FBQ3RDLFlBQVlDLDZCQUErQjtBQUMzQyxZQUFZQyxxQ0FBdUM7QUFDbkQsWUFBWUMsMkJBQTZCO0FBQ3pDLFlBQVlDLDhCQUFnQztBQUM1QyxZQUFZQyxrQ0FBb0M7QUFDaEQsWUFBWUMsMkJBQTZCO0FBQ3pDLFlBQVlDLG1DQUFxQztBQUNqRCxZQUFZQyxrQ0FBb0M7IiwKICAibmFtZXMiOiBbImFib3J0LXNpZ25hbC1jb21wb25lbnQiLCAiYWxsLXdpbmRvd3MtZXZlbnQtY29tcG9uZW50IiwgImFzeW5jLWVycm9yLWhhbmRsZXItY29tcG9uZW50IiwgImFzeW5jLWV2ZW50cy1jb21wb25lbnQiLCAiYnVsay1vcGVyYXRpb24tY29tbWl0LWNvbXBvbmVudCIsICJjYXNlLWluc2Vuc2l0aXZlLWZpbGUtaW5kZXgtY29tcG9uZW50IiwgImNvbXBvbmVudC1leCIsICJjb25zb2xlLWRlYnVnLWNvbXBvbmVudCIsICJjb3JlLXBsdWdpbi10b2dnbGUtY29tcG9uZW50IiwgImRpc3Bvc2FibGUtY29tcG9uZW50IiwgImVtYmVkLWV4dGVuc2lvbnMtY29tcG9uZW50IiwgImVtYmVkZGFibGUtbWFya2Rvd24tZWRpdG9yLWNvbXBvbmVudCIsICJmaWxlLWV4cGxvcmVyLXJvb3QtbWVudS1jb21wb25lbnQiLCAiZ2VuZXJhdGUtbWFya2Rvd24tbGluay1kZWZhdWx0LXBhcmFtcy1jb21wb25lbnQiLCAiaW5jcmVtZW50YWwtZmlsZS1pbmRleC1jb21wb25lbnQiLCAibGF5b3V0LXJlYWR5LWNvbXBvbmVudCIsICJtZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQiLCAibW9ua2V5LWFyb3VuZC1jb21wb25lbnQiLCAibm90ZWJvb2stbmF2aWdhdG9yLW1lbnUtZXZlbnQtcmVnaXN0cmFyLWNvbXBvbmVudCIsICJwbHVnaW4tY29udGV4dC1jb21wb25lbnQiLCAicGx1Z2luLWdhdGUtY29tcG9uZW50IiwgInBsdWdpbi1ub3RpY2UtY29tcG9uZW50IiwgInBsdWdpbi1zZXR0aW5ncy1jb21wb25lbnQiLCAicGx1Z2luLXNldHRpbmdzLXRhYi1jb21wb25lbnQiLCAicGx1Z2luLXN1Z2dlc3Rpb24tY29tcG9uZW50IiwgInBvaW50ZXItcG9zaXRpb24tY29tcG9uZW50IiwgInJlY29uZmlndXJhYmxlLWVkaXRvci1leHRlbnNpb24tY29tcG9uZW50IiwgInJlZ2lzdHJ5LWNvbXBvbmVudCIsICJyZWxlYXNlLW5vdGVzLWNvbXBvbmVudCIsICJyZW5hbWUtZGVsZXRlLWhhbmRsZXItY29tcG9uZW50IiwgInJtZGlyLWd1YXJkLWNvbXBvbmVudCIsICJzZXR0aW5ncy1mYWNldC1jb21wb25lbnQiLCAic2V0dGluZ3MtbWlncmF0aW9uLWNvbXBvbmVudCIsICJzdHlsZS1zaGVldC1jb21wb25lbnQiLCAic3ludGF4LWhpZ2hsaWdodGluZy1jb21wb25lbnQiLCAidGVtcGxhdGVzLWxhbmd1YWdlLWNvbXBvbmVudCJdCn0K
86
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qIFRISVMgSVMgQSBHRU5FUkFURUQvQlVORExFRCBGSUxFIEJZIEJVSUxEIFNDUklQVCAqL1xuXG5leHBvcnQgKiBhcyAnYWJvcnQtc2lnbmFsLWNvbXBvbmVudCcgZnJvbSAnLi9hYm9ydC1zaWduYWwtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdhbGwtd2luZG93cy1ldmVudC1jb21wb25lbnQnIGZyb20gJy4vYWxsLXdpbmRvd3MtZXZlbnQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdhbGwtd2luZG93cy1zdGF0dXMtYmFyLWl0ZW0tY29tcG9uZW50JyBmcm9tICcuL2FsbC13aW5kb3dzLXN0YXR1cy1iYXItaXRlbS1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2FzeW5jLWVycm9yLWhhbmRsZXItY29tcG9uZW50JyBmcm9tICcuL2FzeW5jLWVycm9yLWhhbmRsZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdhc3luYy1ldmVudHMtY29tcG9uZW50JyBmcm9tICcuL2FzeW5jLWV2ZW50cy1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2J1bGstb3BlcmF0aW9uLWNvbW1pdC1jb21wb25lbnQnIGZyb20gJy4vYnVsay1vcGVyYXRpb24tY29tbWl0LWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnY2FzZS1pbnNlbnNpdGl2ZS1maWxlLWluZGV4LWNvbXBvbmVudCcgZnJvbSAnLi9jYXNlLWluc2Vuc2l0aXZlLWZpbGUtaW5kZXgtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdjb21wb25lbnQtZXgnIGZyb20gJy4vY29tcG9uZW50LWV4LnRzJztcbmV4cG9ydCAqIGFzICdjb25zb2xlLWRlYnVnLWNvbXBvbmVudCcgZnJvbSAnLi9jb25zb2xlLWRlYnVnLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnY29yZS1wbHVnaW4tdG9nZ2xlLWNvbXBvbmVudCcgZnJvbSAnLi9jb3JlLXBsdWdpbi10b2dnbGUtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdkaXNwb3NhYmxlLWNvbXBvbmVudCcgZnJvbSAnLi9kaXNwb3NhYmxlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnZW1iZWQtZXh0ZW5zaW9ucy1jb21wb25lbnQnIGZyb20gJy4vZW1iZWQtZXh0ZW5zaW9ucy1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2VtYmVkZGFibGUtbWFya2Rvd24tZWRpdG9yLWNvbXBvbmVudCcgZnJvbSAnLi9lbWJlZGRhYmxlLW1hcmtkb3duLWVkaXRvci1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2ZpbGUtZXhwbG9yZXItcm9vdC1tZW51LWNvbXBvbmVudCcgZnJvbSAnLi9maWxlLWV4cGxvcmVyLXJvb3QtbWVudS1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ2dlbmVyYXRlLW1hcmtkb3duLWxpbmstZGVmYXVsdC1wYXJhbXMtY29tcG9uZW50JyBmcm9tICcuL2dlbmVyYXRlLW1hcmtkb3duLWxpbmstZGVmYXVsdC1wYXJhbXMtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdpbmNyZW1lbnRhbC1maWxlLWluZGV4LWNvbXBvbmVudCcgZnJvbSAnLi9pbmNyZW1lbnRhbC1maWxlLWluZGV4LWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnbGF5b3V0LXJlYWR5LWNvbXBvbmVudCcgZnJvbSAnLi9sYXlvdXQtcmVhZHktY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdtZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQnIGZyb20gJy4vbWVudS1ldmVudC1yZWdpc3RyYXItY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdtb25rZXktYXJvdW5kLWNvbXBvbmVudCcgZnJvbSAnLi9tb25rZXktYXJvdW5kLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnbm90ZWJvb2stbmF2aWdhdG9yLW1lbnUtZXZlbnQtcmVnaXN0cmFyLWNvbXBvbmVudCcgZnJvbSAnLi9ub3RlYm9vay1uYXZpZ2F0b3ItbWVudS1ldmVudC1yZWdpc3RyYXItY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tY29udGV4dC1jb21wb25lbnQnIGZyb20gJy4vcGx1Z2luLWNvbnRleHQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tZ2F0ZS1jb21wb25lbnQnIGZyb20gJy4vcGx1Z2luLWdhdGUtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tbm90aWNlLWNvbXBvbmVudCcgZnJvbSAnLi9wbHVnaW4tbm90aWNlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLXNldHRpbmdzLWNvbXBvbmVudCcgZnJvbSAnLi9wbHVnaW4tc2V0dGluZ3MtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdwbHVnaW4tc2V0dGluZ3MtdGFiLWNvbXBvbmVudCcgZnJvbSAnLi9wbHVnaW4tc2V0dGluZ3MtdGFiLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncGx1Z2luLXN1Z2dlc3Rpb24tY29tcG9uZW50JyBmcm9tICcuL3BsdWdpbi1zdWdnZXN0aW9uLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncG9pbnRlci1wb3NpdGlvbi1jb21wb25lbnQnIGZyb20gJy4vcG9pbnRlci1wb3NpdGlvbi1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3JlY29uZmlndXJhYmxlLWVkaXRvci1leHRlbnNpb24tY29tcG9uZW50JyBmcm9tICcuL3JlY29uZmlndXJhYmxlLWVkaXRvci1leHRlbnNpb24tY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdyZWdpc3RyeS1jb21wb25lbnQnIGZyb20gJy4vcmVnaXN0cnktY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdyZWxlYXNlLW5vdGVzLWNvbXBvbmVudCcgZnJvbSAnLi9yZWxlYXNlLW5vdGVzLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAncmVuYW1lLWRlbGV0ZS1oYW5kbGVyLWNvbXBvbmVudCcgZnJvbSAnLi9yZW5hbWUtZGVsZXRlLWhhbmRsZXItY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdybWRpci1ndWFyZC1jb21wb25lbnQnIGZyb20gJy4vcm1kaXItZ3VhcmQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdzZXR0aW5ncy1mYWNldC1jb21wb25lbnQnIGZyb20gJy4vc2V0dGluZ3MtZmFjZXQtY29tcG9uZW50LnRzJztcbmV4cG9ydCAqIGFzICdzZXR0aW5ncy1taWdyYXRpb24tY29tcG9uZW50JyBmcm9tICcuL3NldHRpbmdzLW1pZ3JhdGlvbi1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3NoYXJlZC1jb21wb25lbnQtcG9vbC1jb21wb25lbnQnIGZyb20gJy4vc2hhcmVkLWNvbXBvbmVudC1wb29sLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnc3R5bGUtc2hlZXQtY29tcG9uZW50JyBmcm9tICcuL3N0eWxlLXNoZWV0LWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnc3ludGF4LWhpZ2hsaWdodGluZy1jb21wb25lbnQnIGZyb20gJy4vc3ludGF4LWhpZ2hsaWdodGluZy1jb21wb25lbnQudHMnO1xuZXhwb3J0ICogYXMgJ3RlbXBsYXRlcy1sYW5ndWFnZS1jb21wb25lbnQnIGZyb20gJy4vdGVtcGxhdGVzLWxhbmd1YWdlLWNvbXBvbmVudC50cyc7XG5leHBvcnQgKiBhcyAnd29ya3NwYWNlLWxheW91dC1zdGF0ZS1jb21wb25lbnQnIGZyb20gJy4vd29ya3NwYWNlLWxheW91dC1zdGF0ZS1jb21wb25lbnQudHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7QUFFQSxZQUFZQSw0QkFBOEI7QUFDMUMsWUFBWUMsaUNBQW1DO0FBQy9DLFlBQVlDLDJDQUE2QztBQUN6RCxZQUFZQyxtQ0FBcUM7QUFDakQsWUFBWUMsNEJBQThCO0FBQzFDLFlBQVlDLHFDQUF1QztBQUNuRCxZQUFZQywyQ0FBNkM7QUFDekQsWUFBWUMsa0JBQW9CO0FBQ2hDLFlBQVlDLDZCQUErQjtBQUMzQyxZQUFZQyxrQ0FBb0M7QUFDaEQsWUFBWUMsMEJBQTRCO0FBQ3hDLFlBQVlDLGdDQUFrQztBQUM5QyxZQUFZQywwQ0FBNEM7QUFDeEQsWUFBWUMsdUNBQXlDO0FBQ3JELFlBQVlDLHFEQUF1RDtBQUNuRSxZQUFZQyxzQ0FBd0M7QUFDcEQsWUFBWUMsNEJBQThCO0FBQzFDLFlBQVlDLG9DQUFzQztBQUNsRCxZQUFZQyw2QkFBK0I7QUFDM0MsWUFBWUMsdURBQXlEO0FBQ3JFLFlBQVlDLDhCQUFnQztBQUM1QyxZQUFZQywyQkFBNkI7QUFDekMsWUFBWUMsNkJBQStCO0FBQzNDLFlBQVlDLCtCQUFpQztBQUM3QyxZQUFZQyxtQ0FBcUM7QUFDakQsWUFBWUMsaUNBQW1DO0FBQy9DLFlBQVlDLGdDQUFrQztBQUM5QyxZQUFZQywrQ0FBaUQ7QUFDN0QsWUFBWUMsd0JBQTBCO0FBQ3RDLFlBQVlDLDZCQUErQjtBQUMzQyxZQUFZQyxxQ0FBdUM7QUFDbkQsWUFBWUMsMkJBQTZCO0FBQ3pDLFlBQVlDLDhCQUFnQztBQUM1QyxZQUFZQyxrQ0FBb0M7QUFDaEQsWUFBWUMscUNBQXVDO0FBQ25ELFlBQVlDLDJCQUE2QjtBQUN6QyxZQUFZQyxtQ0FBcUM7QUFDakQsWUFBWUMsa0NBQW9DO0FBQ2hELFlBQVlDLHNDQUF3QzsiLAogICJuYW1lcyI6IFsiYWJvcnQtc2lnbmFsLWNvbXBvbmVudCIsICJhbGwtd2luZG93cy1ldmVudC1jb21wb25lbnQiLCAiYWxsLXdpbmRvd3Mtc3RhdHVzLWJhci1pdGVtLWNvbXBvbmVudCIsICJhc3luYy1lcnJvci1oYW5kbGVyLWNvbXBvbmVudCIsICJhc3luYy1ldmVudHMtY29tcG9uZW50IiwgImJ1bGstb3BlcmF0aW9uLWNvbW1pdC1jb21wb25lbnQiLCAiY2FzZS1pbnNlbnNpdGl2ZS1maWxlLWluZGV4LWNvbXBvbmVudCIsICJjb21wb25lbnQtZXgiLCAiY29uc29sZS1kZWJ1Zy1jb21wb25lbnQiLCAiY29yZS1wbHVnaW4tdG9nZ2xlLWNvbXBvbmVudCIsICJkaXNwb3NhYmxlLWNvbXBvbmVudCIsICJlbWJlZC1leHRlbnNpb25zLWNvbXBvbmVudCIsICJlbWJlZGRhYmxlLW1hcmtkb3duLWVkaXRvci1jb21wb25lbnQiLCAiZmlsZS1leHBsb3Jlci1yb290LW1lbnUtY29tcG9uZW50IiwgImdlbmVyYXRlLW1hcmtkb3duLWxpbmstZGVmYXVsdC1wYXJhbXMtY29tcG9uZW50IiwgImluY3JlbWVudGFsLWZpbGUtaW5kZXgtY29tcG9uZW50IiwgImxheW91dC1yZWFkeS1jb21wb25lbnQiLCAibWVudS1ldmVudC1yZWdpc3RyYXItY29tcG9uZW50IiwgIm1vbmtleS1hcm91bmQtY29tcG9uZW50IiwgIm5vdGVib29rLW5hdmlnYXRvci1tZW51LWV2ZW50LXJlZ2lzdHJhci1jb21wb25lbnQiLCAicGx1Z2luLWNvbnRleHQtY29tcG9uZW50IiwgInBsdWdpbi1nYXRlLWNvbXBvbmVudCIsICJwbHVnaW4tbm90aWNlLWNvbXBvbmVudCIsICJwbHVnaW4tc2V0dGluZ3MtY29tcG9uZW50IiwgInBsdWdpbi1zZXR0aW5ncy10YWItY29tcG9uZW50IiwgInBsdWdpbi1zdWdnZXN0aW9uLWNvbXBvbmVudCIsICJwb2ludGVyLXBvc2l0aW9uLWNvbXBvbmVudCIsICJyZWNvbmZpZ3VyYWJsZS1lZGl0b3ItZXh0ZW5zaW9uLWNvbXBvbmVudCIsICJyZWdpc3RyeS1jb21wb25lbnQiLCAicmVsZWFzZS1ub3Rlcy1jb21wb25lbnQiLCAicmVuYW1lLWRlbGV0ZS1oYW5kbGVyLWNvbXBvbmVudCIsICJybWRpci1ndWFyZC1jb21wb25lbnQiLCAic2V0dGluZ3MtZmFjZXQtY29tcG9uZW50IiwgInNldHRpbmdzLW1pZ3JhdGlvbi1jb21wb25lbnQiLCAic2hhcmVkLWNvbXBvbmVudC1wb29sLWNvbXBvbmVudCIsICJzdHlsZS1zaGVldC1jb21wb25lbnQiLCAic3ludGF4LWhpZ2hsaWdodGluZy1jb21wb25lbnQiLCAidGVtcGxhdGVzLWxhbmd1YWdlLWNvbXBvbmVudCIsICJ3b3Jrc3BhY2UtbGF5b3V0LXN0YXRlLWNvbXBvbmVudCJdCn0K