@scion/workbench 18.0.0-beta.3 → 18.0.0-beta.5

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 (169) hide show
  1. package/esm2022/lib/common/class-list.mjs +67 -29
  2. package/esm2022/lib/common/operators.mjs +1 -12
  3. package/esm2022/lib/content-projection/content-as-overlay.component.mjs +3 -3
  4. package/esm2022/lib/dialog/dialog-header/dialog-header.component.mjs +3 -8
  5. package/esm2022/lib/dialog/workbench-dialog.component.mjs +22 -20
  6. package/esm2022/lib/dialog/workbench-dialog.mjs +61 -1
  7. package/esm2022/lib/dialog//311/265workbench-dialog.mjs +71 -26
  8. package/esm2022/lib/dialog//311/265workbench-dialog.service.mjs +25 -23
  9. package/esm2022/lib/executor/latest-task-executor.mjs +55 -0
  10. package/esm2022/lib/executor/single-task-executor.mjs +7 -17
  11. package/esm2022/lib/layout/main-area-layout/main-area-layout.component.mjs +5 -6
  12. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v5.model.mjs +1 -1
  13. package/esm2022/lib/layout/migration/workbench-layout-migration-v3.service.mjs +3 -3
  14. package/esm2022/lib/layout/stringifier.mjs +2 -2
  15. package/esm2022/lib/layout/workbench-layout.component.mjs +4 -5
  16. package/esm2022/lib/layout/workbench-layout.mjs +1 -1
  17. package/esm2022/lib/layout/workbench-layout.model.mjs +1 -1
  18. package/esm2022/lib/layout/workbench-layout.service.mjs +6 -7
  19. package/esm2022/lib/layout//311/265workbench-layout.factory.mjs +3 -2
  20. package/esm2022/lib/layout//311/265workbench-layout.mjs +34 -31
  21. package/esm2022/lib/message-box/message-box-footer/message-box-footer.component.mjs +3 -3
  22. package/esm2022/lib/message-box/message-box-header/message-box-header.component.mjs +3 -3
  23. package/esm2022/lib/microfrontend-platform/common/microfrontend.util.mjs +5 -6
  24. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +3 -3
  25. package/esm2022/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.mjs +14 -6
  26. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/microfrontend-host-message-box.component.mjs +3 -3
  27. package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +5 -5
  28. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.mjs +3 -3
  29. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.mjs +11 -12
  30. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +3 -3
  31. package/esm2022/lib/microfrontend-platform/microfrontend-splash/microfrontend-splash.component.mjs +3 -3
  32. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +11 -12
  33. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +18 -16
  34. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +13 -14
  35. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +3 -3
  36. package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +4 -4
  37. package/esm2022/lib/notification/notification-list.component.mjs +4 -8
  38. package/esm2022/lib/notification/notification.component.mjs +4 -5
  39. package/esm2022/lib/page-not-found/page-not-found.component.mjs +3 -3
  40. package/esm2022/lib/part/part-action-bar/part-action-bar.component.mjs +7 -13
  41. package/esm2022/lib/part/part-action-bar/part-action.directive.mjs +4 -4
  42. package/esm2022/lib/part/part-bar/part-bar.component.mjs +56 -75
  43. package/esm2022/lib/part/part-portal.pipe.mjs +8 -8
  44. package/esm2022/lib/part/part.component.mjs +32 -40
  45. package/esm2022/lib/part/view-context-menu/view-menu.component.mjs +4 -6
  46. package/esm2022/lib/part/view-context-menu/view-menu.directive.mjs +2 -2
  47. package/esm2022/lib/part/view-context-menu/view-menu.service.mjs +27 -28
  48. package/esm2022/lib/part/view-list/view-list.component.mjs +41 -48
  49. package/esm2022/lib/part/view-list-button/view-list-button.component.mjs +20 -24
  50. package/esm2022/lib/part/view-list-item/view-list-item.component.mjs +15 -17
  51. package/esm2022/lib/part/view-tab/view-tab.component.mjs +77 -88
  52. package/esm2022/lib/part/view-tab-content/view-tab-content.component.mjs +3 -4
  53. package/esm2022/lib/part/view-tab-drag-image/view-tab-drag-image.component.mjs +14 -15
  54. package/esm2022/lib/part/workbench-part-action.registry.mjs +18 -42
  55. package/esm2022/lib/part/workbench-part.model.mjs +10 -1
  56. package/esm2022/lib/part/workbench-part.registry.mjs +11 -45
  57. package/esm2022/lib/part//311/265workbench-part.model.mjs +71 -55
  58. package/esm2022/lib/perspective/workbench-perspective.model.mjs +1 -1
  59. package/esm2022/lib/perspective/workbench-perspective.registry.mjs +11 -43
  60. package/esm2022/lib/perspective/workbench-perspective.service.mjs +27 -28
  61. package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +53 -47
  62. package/esm2022/lib/popup/popup.component.mjs +3 -3
  63. package/esm2022/lib/popup/popup.config.mjs +23 -13
  64. package/esm2022/lib/popup/popup.service.mjs +48 -45
  65. package/esm2022/lib/portal/wb-component-portal.mjs +2 -2
  66. package/esm2022/lib/registry/workbench-object-registry.mjs +38 -17
  67. package/esm2022/lib/routing/public_api.mjs +2 -1
  68. package/esm2022/lib/routing/routing.model.mjs +1 -1
  69. package/esm2022/lib/routing/routing.util.mjs +210 -0
  70. package/esm2022/lib/routing/workbench-auxiliary-route-installer.service.mjs +19 -3
  71. package/esm2022/lib/routing/workbench-dialog-differ.mjs +3 -3
  72. package/esm2022/lib/routing/workbench-message-box-differ.mjs +3 -3
  73. package/esm2022/lib/routing/workbench-navigational-states.mjs +2 -2
  74. package/esm2022/lib/routing/workbench-popup-differ.mjs +3 -3
  75. package/esm2022/lib/routing/workbench-route-guards.mjs +57 -0
  76. package/esm2022/lib/routing/workbench-url-observer.service.mjs +132 -144
  77. package/esm2022/lib/routing/workbench-view-outlet-differ.mjs +3 -3
  78. package/esm2022/lib/routing//311/265workbench-router.service.mjs +52 -40
  79. package/esm2022/lib/startup/splash/splash.component.mjs +3 -3
  80. package/esm2022/lib/startup/workbench-launcher.service.mjs +7 -10
  81. package/esm2022/lib/testing/workbench.provider.mjs +2 -2
  82. package/esm2022/lib/theme/workbench-theme-switcher.service.mjs +15 -19
  83. package/esm2022/lib/view/public_api.mjs +1 -2
  84. package/esm2022/lib/view/view-move-handler.service.mjs +7 -7
  85. package/esm2022/lib/view/view-portal.pipe.mjs +7 -7
  86. package/esm2022/lib/view/view.component.mjs +22 -34
  87. package/esm2022/lib/view/workbench-view.model.mjs +1 -1
  88. package/esm2022/lib/view/workbench-view.registry.mjs +11 -45
  89. package/esm2022/lib/view//311/265workbench-view.model.mjs +136 -150
  90. package/esm2022/lib/view-dnd/view-drag.service.mjs +1 -1
  91. package/esm2022/lib/view-dnd/view-tab-drag-image-renderer.service.mjs +18 -20
  92. package/esm2022/lib/workbench.component.mjs +3 -3
  93. package/esm2022/lib/workbench.model.mjs +1 -1
  94. package/esm2022/lib/workbench.service.mjs +1 -1
  95. package/esm2022/lib//311/265workbench.service.mjs +31 -42
  96. package/fesm2022/scion-workbench.mjs +2028 -1953
  97. package/fesm2022/scion-workbench.mjs.map +1 -1
  98. package/lib/common/class-list.d.ts +35 -22
  99. package/lib/common/operators.d.ts +1 -6
  100. package/lib/dialog/workbench-dialog.component.d.ts +3 -2
  101. package/lib/dialog/workbench-dialog.d.ts +57 -13
  102. package/lib/dialog//311/265workbench-dialog.d.ts +36 -17
  103. package/lib/dialog//311/265workbench-dialog.service.d.ts +10 -11
  104. package/lib/executor/latest-task-executor.d.ts +26 -0
  105. package/lib/executor/single-task-executor.d.ts +3 -6
  106. package/lib/layout/migration/model/workbench-layout-migration-v5.model.d.ts +4 -0
  107. package/lib/layout/workbench-layout.d.ts +9 -6
  108. package/lib/layout/workbench-layout.model.d.ts +2 -0
  109. package/lib/layout/workbench-layout.service.d.ts +4 -4
  110. package/lib/layout//311/265workbench-layout.d.ts +12 -13
  111. package/lib/layout//311/265workbench-layout.factory.d.ts +3 -2
  112. package/lib/microfrontend-platform/microfrontend-host-dialog/microfrontend-host-dialog.component.d.ts +1 -5
  113. package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-intent-handler.interceptor.d.ts +4 -8
  114. package/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.d.ts +5 -8
  115. package/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.d.ts +3 -7
  116. package/lib/notification/notification-list.component.d.ts +0 -2
  117. package/lib/part/part-action-bar/part-action-bar.component.d.ts +4 -1
  118. package/lib/part/part-action-bar/part-action.directive.d.ts +2 -2
  119. package/lib/part/part-bar/part-bar.component.d.ts +8 -12
  120. package/lib/part/part-portal.pipe.d.ts +3 -5
  121. package/lib/part/part.component.d.ts +9 -12
  122. package/lib/part/view-context-menu/view-menu.directive.d.ts +1 -1
  123. package/lib/part/view-context-menu/view-menu.service.d.ts +8 -12
  124. package/lib/part/view-list/view-list.component.d.ts +8 -21
  125. package/lib/part/view-list-button/view-list-button.component.d.ts +8 -11
  126. package/lib/part/view-list-item/view-list-item.component.d.ts +3 -7
  127. package/lib/part/view-tab/view-tab.component.d.ts +17 -28
  128. package/lib/part/view-tab-drag-image/view-tab-drag-image.component.d.ts +4 -4
  129. package/lib/part/workbench-part-action.registry.d.ts +3 -23
  130. package/lib/part/workbench-part.model.d.ts +8 -27
  131. package/lib/part/workbench-part.registry.d.ts +3 -26
  132. package/lib/part//311/265workbench-part.model.d.ts +24 -17
  133. package/lib/perspective/workbench-perspective.model.d.ts +2 -8
  134. package/lib/perspective/workbench-perspective.registry.d.ts +3 -26
  135. package/lib/perspective/workbench-perspective.service.d.ts +8 -14
  136. package/lib/perspective//311/265workbench-perspective.model.d.ts +26 -21
  137. package/lib/popup/popup.config.d.ts +2 -0
  138. package/lib/popup/popup.service.d.ts +12 -14
  139. package/lib/registry/workbench-object-registry.d.ts +10 -6
  140. package/lib/routing/public_api.d.ts +2 -1
  141. package/lib/routing/routing.model.d.ts +25 -13
  142. package/lib/routing/{router.util.d.ts → routing.util.d.ts} +24 -1
  143. package/lib/routing/workbench-auxiliary-route-installer.service.d.ts +7 -0
  144. package/lib/routing/workbench-navigational-states.d.ts +8 -4
  145. package/lib/{view/workbench-view-route-guards.d.ts → routing/workbench-route-guards.d.ts} +8 -2
  146. package/lib/routing/workbench-url-observer.service.d.ts +31 -57
  147. package/lib/routing//311/265workbench-router.service.d.ts +10 -16
  148. package/lib/startup/workbench-launcher.service.d.ts +4 -5
  149. package/lib/testing/workbench.provider.d.ts +3 -1
  150. package/lib/theme/workbench-theme-switcher.service.d.ts +4 -6
  151. package/lib/view/public_api.d.ts +0 -1
  152. package/lib/view/view-portal.pipe.d.ts +1 -3
  153. package/lib/view/view.component.d.ts +2 -4
  154. package/lib/view/workbench-view.model.d.ts +49 -35
  155. package/lib/view/workbench-view.registry.d.ts +3 -27
  156. package/lib/view//311/265workbench-view.model.d.ts +51 -61
  157. package/lib/view-dnd/view-drag.service.d.ts +5 -2
  158. package/lib/workbench.model.d.ts +6 -2
  159. package/lib/workbench.service.d.ts +58 -56
  160. package/lib//311/265workbench.service.d.ts +18 -31
  161. package/package.json +1 -1
  162. package/esm2022/lib/common/filter-by-predicate.pipe.mjs +0 -27
  163. package/esm2022/lib/common/filter-by-text.pipe.mjs +0 -39
  164. package/esm2022/lib/part/part-action-bar/part-action-filter.pipe.mjs +0 -26
  165. package/esm2022/lib/routing/router.util.mjs +0 -126
  166. package/esm2022/lib/view/workbench-view-route-guards.mjs +0 -47
  167. package/lib/common/filter-by-predicate.pipe.d.ts +0 -10
  168. package/lib/common/filter-by-text.pipe.d.ts +0 -12
  169. package/lib/part/part-action-bar/part-action-filter.pipe.d.ts +0 -11
@@ -7,59 +7,45 @@
7
7
  *
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
- import { Injectable } from '@angular/core';
10
+ import { computed, inject, Injectable } from '@angular/core';
11
11
  import { BehaviorSubject } from 'rxjs';
12
+ import { WorkbenchRouter } from './routing/workbench-router.service';
13
+ import { WORKBENCH_VIEW_REGISTRY } from './view/workbench-view.registry';
14
+ import { WorkbenchPerspectiveService } from './perspective/workbench-perspective.service';
15
+ import { WORKBENCH_PART_REGISTRY } from './part/workbench-part.registry';
16
+ import { WORKBENCH_PERSPECTIVE_REGISTRY } from './perspective/workbench-perspective.registry';
17
+ import { WORKBENCH_PART_ACTION_REGISTRY } from './part/workbench-part-action.registry';
18
+ import { WorkbenchThemeSwitcher } from './theme/workbench-theme-switcher.service';
19
+ import { WorkbenchLayoutService } from './layout/workbench-layout.service';
12
20
  import { throwError } from './common/throw-error.util';
13
21
  import * as i0 from "@angular/core";
14
- import * as i1 from "./routing/workbench-router.service";
15
- import * as i2 from "./perspective/workbench-perspective.registry";
16
- import * as i3 from "./part/workbench-part.registry";
17
- import * as i4 from "./part/workbench-part-action.registry";
18
- import * as i5 from "./view/workbench-view.registry";
19
- import * as i6 from "./perspective/workbench-perspective.service";
20
- import * as i7 from "./layout/workbench-layout.service";
21
- import * as i8 from "./theme/workbench-theme-switcher.service";
22
22
  export class ɵWorkbenchService {
23
- constructor(_workbenchRouter, _perspectiveRegistry, _partRegistry, _partActionRegistry, _viewRegistry, _perspectiveService, _layoutService, _workbenchThemeSwitcher) {
24
- this._workbenchRouter = _workbenchRouter;
25
- this._perspectiveRegistry = _perspectiveRegistry;
26
- this._partRegistry = _partRegistry;
27
- this._partActionRegistry = _partActionRegistry;
28
- this._viewRegistry = _viewRegistry;
29
- this._perspectiveService = _perspectiveService;
30
- this._layoutService = _layoutService;
31
- this._workbenchThemeSwitcher = _workbenchThemeSwitcher;
23
+ constructor() {
24
+ this._workbenchRouter = inject(WorkbenchRouter);
25
+ this._perspectiveRegistry = inject(WORKBENCH_PERSPECTIVE_REGISTRY);
26
+ this._partRegistry = inject(WORKBENCH_PART_REGISTRY);
27
+ this._partActionRegistry = inject(WORKBENCH_PART_ACTION_REGISTRY);
28
+ this._viewRegistry = inject(WORKBENCH_VIEW_REGISTRY);
29
+ this._perspectiveService = inject(WorkbenchPerspectiveService);
30
+ this._layoutService = inject(WorkbenchLayoutService);
31
+ this._workbenchThemeSwitcher = inject(WorkbenchThemeSwitcher);
32
32
  this.viewMenuItemProviders$ = new BehaviorSubject([]);
33
- this.layout$ = this._layoutService.layout$;
34
- this.perspectives$ = this._perspectiveRegistry.perspectives$;
35
- this.parts$ = this._partRegistry.parts$;
36
- this.views$ = this._viewRegistry.views$;
37
- this.theme$ = this._workbenchThemeSwitcher.theme$;
38
- }
39
- get layout() {
40
- return this._layoutService.layout ?? throwError('[NullLayoutError] Workbench layout not created yet.');
41
- }
42
- /** @inheritDoc */
43
- get perspectives() {
44
- return this._perspectiveRegistry.perspectives;
33
+ this.layout = computed(() => this._layoutService.layout() ?? throwError('[NullLayoutError] Workbench layout not created yet.'));
34
+ this.perspectives = this._perspectiveRegistry.objects;
35
+ this.parts = this._partRegistry.objects;
36
+ this.views = this._viewRegistry.objects;
37
+ this.theme = this._workbenchThemeSwitcher.theme;
38
+ this.activePerspective = this._perspectiveService.activePerspective;
45
39
  }
46
40
  /** @inheritDoc */
47
41
  getPerspective(perspectiveId) {
48
42
  return this._perspectiveRegistry.get(perspectiveId, { orElse: null });
49
43
  }
50
44
  /** @inheritDoc */
51
- get parts() {
52
- return this._partRegistry.parts;
53
- }
54
- /** @inheritDoc */
55
45
  getPart(partId) {
56
46
  return this._partRegistry.get(partId, { orElse: null });
57
47
  }
58
48
  /** @inheritDoc */
59
- get views() {
60
- return this._viewRegistry.views;
61
- }
62
- /** @inheritDoc */
63
49
  getView(viewId) {
64
50
  return this._viewRegistry.get(viewId, { orElse: null });
65
51
  }
@@ -81,7 +67,10 @@ export class ɵWorkbenchService {
81
67
  }
82
68
  /** @inheritDoc */
83
69
  registerPartAction(action) {
84
- return this._partActionRegistry.register(action);
70
+ this._partActionRegistry.register(action);
71
+ return {
72
+ dispose: () => this._partActionRegistry.unregister(action),
73
+ };
85
74
  }
86
75
  /** @inheritDoc */
87
76
  registerViewMenuItem(factoryFn) {
@@ -96,11 +85,11 @@ export class ɵWorkbenchService {
96
85
  switchTheme(theme) {
97
86
  return this._workbenchThemeSwitcher.switchTheme(theme);
98
87
  }
99
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchService, deps: [{ token: i1.WorkbenchRouter }, { token: i2.WorkbenchPerspectiveRegistry }, { token: i3.WorkbenchPartRegistry }, { token: i4.WorkbenchPartActionRegistry }, { token: i5.WorkbenchViewRegistry }, { token: i6.WorkbenchPerspectiveService }, { token: i7.WorkbenchLayoutService }, { token: i8.WorkbenchThemeSwitcher }], target: i0.ɵɵFactoryTarget.Injectable }); }
88
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
100
89
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchService, providedIn: 'root' }); }
101
90
  }
102
91
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: ɵWorkbenchService, decorators: [{
103
92
  type: Injectable,
104
93
  args: [{ providedIn: 'root' }]
105
- }], ctorParameters: () => [{ type: i1.WorkbenchRouter }, { type: i2.WorkbenchPerspectiveRegistry }, { type: i3.WorkbenchPartRegistry }, { type: i4.WorkbenchPartActionRegistry }, { type: i5.WorkbenchViewRegistry }, { type: i6.WorkbenchPerspectiveService }, { type: i7.WorkbenchLayoutService }, { type: i8.WorkbenchThemeSwitcher }] });
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiybV3b3JrYmVuY2guc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL8m1d29ya2JlbmNoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxlQUFlLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFrQmpELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7OztBQUdyRCxNQUFNLE9BQU8saUJBQWlCO0lBVTVCLFlBQW9CLGdCQUFpQyxFQUNqQyxvQkFBa0QsRUFDbEQsYUFBb0MsRUFDcEMsbUJBQWdELEVBQ2hELGFBQW9DLEVBQ3BDLG1CQUFnRCxFQUNoRCxjQUFzQyxFQUN0Qyx1QkFBK0M7UUFQL0MscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtRQUNqQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQThCO1FBQ2xELGtCQUFhLEdBQWIsYUFBYSxDQUF1QjtRQUNwQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTZCO1FBQ2hELGtCQUFhLEdBQWIsYUFBYSxDQUF1QjtRQUNwQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQTZCO1FBQ2hELG1CQUFjLEdBQWQsY0FBYyxDQUF3QjtRQUN0Qyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXdCO1FBVG5ELDJCQUFzQixHQUFHLElBQUksZUFBZSxDQUErQixFQUFFLENBQUMsQ0FBQztRQVU3RixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDO1FBQzNDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQztRQUM3RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENB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Q0FBQztZQUNyRyxDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxrQkFBa0I7SUFDWCxXQUFXLENBQUMsS0FBYTtRQUM5QixPQUFPLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekQsQ0FBQzs4R0FqR1UsaUJBQWlCO2tIQUFqQixpQkFBaUIsY0FETCxNQUFNOzsyRkFDbEIsaUJBQWlCO2tCQUQ3QixVQUFVO21CQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcbmltcG9ydCB7V29ya2JlbmNoTWVudUl0ZW1GYWN0b3J5Rm4sIFdvcmtiZW5jaFBhcnRBY3Rpb24sIFdvcmtiZW5jaFRoZW1lfSBmcm9tICcuL3dvcmtiZW5jaC5tb2RlbCc7XG5pbXBvcnQge0Rpc3Bvc2FibGV9IGZyb20gJy4vY29tbW9uL2Rpc3Bvc2FibGUnO1xuaW1wb3J0IHtXb3JrYmVuY2hTZXJ2aWNlfSBmcm9tICcuL3dvcmtiZW5jaC5zZXJ2aWNlJztcbmltcG9ydCB7V29ya2JlbmNoUm91dGVyfSBmcm9tICcuL3JvdXRpbmcvd29ya2JlbmNoLXJvdXRlci5zZXJ2aWNlJztcbmltcG9ydCB7V29ya2JlbmNoVmlld1JlZ2lzdHJ5fSBmcm9tICcuL3ZpZXcvd29ya2JlbmNoLXZpZXcucmVnaXN0cnknO1xuaW1wb3J0IHtXb3JrYmVuY2hQZXJzcGVjdGl2ZVNlcnZpY2V9IGZyb20gJy4vcGVyc3BlY3RpdmUvd29ya2JlbmNoLXBlcnNwZWN0aXZlLnNlcnZpY2UnO1xuaW1wb3J0IHtXb3JrYmVuY2hQZXJzcGVjdGl2ZURlZmluaXRpb259IGZyb20gJy4vcGVyc3BlY3RpdmUvd29ya2JlbmNoLXBlcnNwZWN0aXZlLm1vZGVsJztcbmltcG9ydCB7V29ya2JlbmNoUGFydFJlZ2lzdHJ5fSBmcm9tICcuL3BhcnQvd29ya2JlbmNoLXBhcnQucmVnaXN0cnknO1xuaW1wb3J0IHvJtVdvcmtiZW5jaFZpZXd9IGZyb20gJy4vdmlldy/JtXdvcmtiZW5jaC12aWV3Lm1vZGVsJztcbmltcG9ydCB7ybVXb3JrYmVuY2hQYXJ0fSBmcm9tICcuL3BhcnQvybV3b3JrYmVuY2gtcGFydC5tb2RlbCc7XG5pbXBvcnQge8m1V29ya2JlbmNoUGVyc3BlY3RpdmV9IGZyb20gJy4vcGVyc3BlY3RpdmUvybV3b3JrYmVuY2gtcGVyc3BlY3RpdmUubW9kZWwnO1xuaW1wb3J0IHtXb3JrYmVuY2hQZXJzcGVjdGl2ZVJlZ2lzdHJ5fSBmcm9tICcuL3BlcnNwZWN0aXZlL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS5yZWdpc3RyeSc7XG5pbXBvcnQge1dvcmtiZW5jaFBhcnRBY3Rpb25SZWdpc3RyeX0gZnJvbSAnLi9wYXJ0L3dvcmtiZW5jaC1wYXJ0LWFjdGlvbi5yZWdpc3RyeSc7XG5pbXBvcnQge1dvcmtiZW5jaFRoZW1lU3dpdGNoZXJ9IGZyb20gJy4vdGhlbWUvd29ya2JlbmNoLXRoZW1lLXN3aXRjaGVyLnNlcnZpY2UnO1xuaW1wb3J0IHtWaWV3SWR9IGZyb20gJy4vdmlldy93b3JrYmVuY2gtdmlldy5tb2RlbCc7XG5pbXBvcnQge8m1V29ya2JlbmNoTGF5b3V0fSBmcm9tICcuL2xheW91dC/JtXdvcmtiZW5jaC1sYXlvdXQnO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXRTZXJ2aWNlfSBmcm9tICcuL2xheW91dC93b3JrYmVuY2gtbGF5b3V0LnNlcnZpY2UnO1xuaW1wb3J0IHt0aHJvd0Vycm9yfSBmcm9tICcuL2NvbW1vbi90aHJvdy1lcnJvci51dGlsJztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgybVXb3JrYmVuY2hTZXJ2aWNlIGltcGxlbWVudHMgV29ya2JlbmNoU2VydmljZSB7XG5cbiAgcHVibGljIHJlYWRvbmx5IGxheW91dCQ6IE9ic2VydmFibGU8ybVXb3JrYmVuY2hMYXlvdXQ+O1xuICBwdWJsaWMgcmVhZG9ubHkgcGVyc3BlY3RpdmVzJDogT2JzZXJ2YWJsZTxyZWFkb25seSDJtVdvcmtiZW5jaFBlcnNwZWN0aXZlW10+O1xuICBwdWJsaWMgcmVhZG9ubHkgcGFydHMkOiBPYnNlcnZhYmxlPHJlYWRvbmx5IMm1V29ya2JlbmNoUGFydFtdPjtcbiAgcHVibGljIHJlYWRvbmx5IHZpZXdzJDogT2JzZXJ2YWJsZTxyZWFkb25seSDJtVdvcmtiZW5jaFZpZXdbXT47XG4gIHB1YmxpYyByZWFkb25seSB0aGVtZSQ6IE9ic2VydmFibGU8V29ya2JlbmNoVGhlbWUgfCBudWxsPjtcblxuICBwdWJsaWMgcmVhZG9ubHkgdmlld01lbnVJdGVtUHJvdmlkZXJzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8V29ya2JlbmNoTWVudUl0ZW1GYWN0b3J5Rm5bXT4oW10pO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3dvcmtiZW5jaFJvdXRlcjogV29ya2JlbmNoUm91dGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIF9wZXJzcGVjdGl2ZVJlZ2lzdHJ5OiBXb3JrYmVuY2hQZXJzcGVjdGl2ZVJlZ2lzdHJ5LFxuICAgICAgICAgICAgICBwcml2YXRlIF9wYXJ0UmVnaXN0cnk6IFdvcmtiZW5jaFBhcnRSZWdpc3RyeSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfcGFydEFjdGlvblJlZ2lzdHJ5OiBXb3JrYmVuY2hQYXJ0QWN0aW9uUmVnaXN0cnksXG4gICAgICAgICAgICAgIHByaXZhdGUgX3ZpZXdSZWdpc3RyeTogV29ya2JlbmNoVmlld1JlZ2lzdHJ5LFxuICAgICAgICAgICAgICBwcml2YXRlIF9wZXJzcGVjdGl2ZVNlcnZpY2U6IFdvcmtiZW5jaFBlcnNwZWN0aXZlU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfbGF5b3V0U2VydmljZTogV29ya2JlbmNoTGF5b3V0U2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfd29ya2JlbmNoVGhlbWVTd2l0Y2hlcjogV29ya2JlbmNoVGhlbWVTd2l0Y2hlcikge1xuICAgIHRoaXMubGF5b3V0JCA9IHRoaXMuX2xheW91dFNlcnZpY2UubGF5b3V0JDtcbiAgICB0aGlzLnBlcnNwZWN0aXZlcyQgPSB0aGlzLl9wZXJzcGVjdGl2ZVJlZ2lzdHJ5LnBlcnNwZWN0aXZlcyQ7XG4gICAgdGhpcy5wYXJ0cyQgPSB0aGlzLl9wYXJ0UmVnaXN0cnkucGFydHMkO1xuICAgIHRoaXMudmlld3MkID0gdGhpcy5fdmlld1JlZ2lzdHJ5LnZpZXdzJDtcbiAgICB0aGlzLnRoZW1lJCA9IHRoaXMuX3dvcmtiZW5jaFRoZW1lU3dpdGNoZXIudGhlbWUkO1xuICB9XG5cbiAgcHVibGljIGdldCBsYXlvdXQoKTogybVXb3JrYmVuY2hMYXlvdXQge1xuICAgIHJldHVybiB0aGlzLl9sYXlvdXRTZXJ2aWNlLmxheW91dCA/PyB0aHJvd0Vycm9yKCdbTnVsbExheW91dEVycm9yXSBXb3JrYmVuY2ggbGF5b3V0IG5vdCBjcmVhdGVkIHlldC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgZ2V0IHBlcnNwZWN0aXZlcygpOiByZWFkb25seSDJtVdvcmtiZW5jaFBlcnNwZWN0aXZlW10ge1xuICAgIHJldHVybiB0aGlzLl9wZXJzcGVjdGl2ZVJlZ2lzdHJ5LnBlcnNwZWN0aXZlcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgZ2V0UGVyc3BlY3RpdmUocGVyc3BlY3RpdmVJZDogc3RyaW5nKTogybVXb3JrYmVuY2hQZXJzcGVjdGl2ZSB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZXJzcGVjdGl2ZVJlZ2lzdHJ5LmdldChwZXJzcGVjdGl2ZUlkLCB7b3JFbHNlOiBudWxsfSk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIGdldCBwYXJ0cygpOiByZWFkb25seSDJtVdvcmtiZW5jaFBhcnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcnRSZWdpc3RyeS5wYXJ0cztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgZ2V0UGFydChwYXJ0SWQ6IHN0cmluZyk6IMm1V29ya2JlbmNoUGFydCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wYXJ0UmVnaXN0cnkuZ2V0KHBhcnRJZCwge29yRWxzZTogbnVsbH0pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHB1YmxpYyBnZXQgdmlld3MoKTogcmVhZG9ubHkgybVXb3JrYmVuY2hWaWV3W10ge1xuICAgIHJldHVybiB0aGlzLl92aWV3UmVnaXN0cnkudmlld3M7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIGdldFZpZXcodmlld0lkOiBWaWV3SWQpOiDJtVdvcmtiZW5jaFZpZXcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdmlld1JlZ2lzdHJ5LmdldCh2aWV3SWQsIHtvckVsc2U6IG51bGx9KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgcmVnaXN0ZXJQZXJzcGVjdGl2ZShwZXJzcGVjdGl2ZTogV29ya2JlbmNoUGVyc3BlY3RpdmVEZWZpbml0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3BlcnNwZWN0aXZlU2VydmljZS5yZWdpc3RlclBlcnNwZWN0aXZlKHBlcnNwZWN0aXZlKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgc3dpdGNoUGVyc3BlY3RpdmUoaWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9wZXJzcGVjdGl2ZVNlcnZpY2Uuc3dpdGNoUGVyc3BlY3RpdmUoaWQpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHB1YmxpYyBhc3luYyByZXNldFBlcnNwZWN0aXZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuX3BlcnNwZWN0aXZlU2VydmljZS5yZXNldFBlcnNwZWN0aXZlKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIGFzeW5jIGNsb3NlVmlld3MoLi4udmlld0lkczogVmlld0lkW10pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fd29ya2JlbmNoUm91dGVyLm5hdmlnYXRlKGxheW91dCA9PiB2aWV3SWRzLnJlZHVjZSgobGF5b3V0LCB2aWV3SWQpID0+IGxheW91dC5yZW1vdmVWaWV3KHZpZXdJZCksIGxheW91dCkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHB1YmxpYyByZWdpc3RlclBhcnRBY3Rpb24oYWN0aW9uOiBXb3JrYmVuY2hQYXJ0QWN0aW9uKTogRGlzcG9zYWJsZSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcnRBY3Rpb25SZWdpc3RyeS5yZWdpc3RlcihhY3Rpb24pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHB1YmxpYyByZWdpc3RlclZpZXdNZW51SXRlbShmYWN0b3J5Rm46IFdvcmtiZW5jaE1lbnVJdGVtRmFjdG9yeUZuKTogRGlzcG9zYWJsZSB7XG4gICAgdGhpcy52aWV3TWVudUl0ZW1Qcm92aWRlcnMkLm5leHQodGhpcy52aWV3TWVudUl0ZW1Qcm92aWRlcnMkLnZhbHVlLmNvbmNhdChmYWN0b3J5Rm4pKTtcbiAgICByZXR1cm4ge1xuICAgICAgZGlzcG9zZTogKCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLnZpZXdNZW51SXRlbVByb3ZpZGVycyQubmV4dCh0aGlzLnZpZXdNZW51SXRlbVByb3ZpZGVycyQudmFsdWUuZmlsdGVyKGl0ID0+IGl0ICE9PSBmYWN0b3J5Rm4pKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgc3dpdGNoVGhlbWUodGhlbWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLl93b3JrYmVuY2hUaGVtZVN3aXRjaGVyLnN3aXRjaFRoZW1lKHRoZW1lKTtcbiAgfVxufVxuIl19
94
+ }], ctorParameters: () => [] });
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiybV3b3JrYmVuY2guc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL8m1d29ya2JlbmNoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFFSCxPQUFPLEVBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVMsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUlyQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDbkUsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDdkUsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFFeEYsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFJdkUsT0FBTyxFQUFDLDhCQUE4QixFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDNUYsT0FBTyxFQUFDLDhCQUE4QixFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDckYsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFHaEYsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDekUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDJCQUEyQixDQUFDOztBQUdyRCxNQUFNLE9BQU8saUJBQWlCO0lBbUI1QjtRQWpCaUIscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzNDLHlCQUFvQixHQUFHLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQzlELGtCQUFhLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDaEQsd0JBQW1CLEdBQUcsTUFBTSxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDN0Qsa0JBQWEsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNoRCx3QkFBbUIsR0FBRyxNQUFNLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUMxRCxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2hELDRCQUF1QixHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBUTFELDJCQUFzQixHQUFHLElBQUksZUFBZSxDQUErQixFQUFFLENBQUMsQ0FBQztRQUc3RixJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxJQUFJLFVBQVUsQ0FBQyxxREFBcUQsQ0FBQyxDQUFDLENBQUM7UUFDaEksSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDO1FBQ3RELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7UUFDeEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztRQUN4QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUM7UUFDaEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxpQkFBaUIsQ0FBQztJQUN0RSxDQUFDO0lBRUQsa0JBQWtCO0lBQ1gsY0FBYyxDQUFDLGFBQXFCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsa0JBQWtCO0lBQ1gsT0FBTyxDQUFDLE1BQWM7UUFDM0IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1gsT0FBTyxDQUFDLE1BQWM7UUFDM0IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1gsbUJBQW1CLENBQUMsV0FBMkM7UUFDcEUsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELGtCQUFrQjtJQUNYLGlCQUFpQixDQUFDLEVBQVU7UUFDakMsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELGtCQUFrQjtJQUNYLEtBQUssQ0FBQyxnQkFBZ0I7UUFDM0IsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1gsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLE9BQWlCO1FBQzFDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDekgsQ0FBQztJQUVELGtCQUFrQjtJQUNYLGtCQUFrQixDQUFDLE1BQTJCO1FBQ25ELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsT0FBTztZQUNMLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztTQUMzRCxDQUFDO0lBQ0osQ0FBQztJQUVELGtCQUFrQjtJQUNYLG9CQUFvQixDQUFDLFNBQXFDO1FBQy9ELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUN0RixPQUFPO1lBQ0wsT0FBTyxFQUFFLEdBQVMsRUFBRTtnQkFDbEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3JHLENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELGtCQUFrQjtJQUNYLFdBQVcsQ0FBQyxLQUFhO1FBQzlCLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RCxDQUFDOzhHQXBGVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQURMLE1BQU07OzJGQUNsQixpQkFBaUI7a0JBRDdCLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge2NvbXB1dGVkLCBpbmplY3QsIEluamVjdGFibGUsIFNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1dvcmtiZW5jaE1lbnVJdGVtRmFjdG9yeUZuLCBXb3JrYmVuY2hQYXJ0QWN0aW9uLCBXb3JrYmVuY2hUaGVtZX0gZnJvbSAnLi93b3JrYmVuY2gubW9kZWwnO1xuaW1wb3J0IHtEaXNwb3NhYmxlfSBmcm9tICcuL2NvbW1vbi9kaXNwb3NhYmxlJztcbmltcG9ydCB7V29ya2JlbmNoU2VydmljZX0gZnJvbSAnLi93b3JrYmVuY2guc2VydmljZSc7XG5pbXBvcnQge1dvcmtiZW5jaFJvdXRlcn0gZnJvbSAnLi9yb3V0aW5nL3dvcmtiZW5jaC1yb3V0ZXIuc2VydmljZSc7XG5pbXBvcnQge1dPUktCRU5DSF9WSUVXX1JFR0lTVFJZfSBmcm9tICcuL3ZpZXcvd29ya2JlbmNoLXZpZXcucmVnaXN0cnknO1xuaW1wb3J0IHtXb3JrYmVuY2hQZXJzcGVjdGl2ZVNlcnZpY2V9IGZyb20gJy4vcGVyc3BlY3RpdmUvd29ya2JlbmNoLXBlcnNwZWN0aXZlLnNlcnZpY2UnO1xuaW1wb3J0IHtXb3JrYmVuY2hQZXJzcGVjdGl2ZSwgV29ya2JlbmNoUGVyc3BlY3RpdmVEZWZpbml0aW9ufSBmcm9tICcuL3BlcnNwZWN0aXZlL3dvcmtiZW5jaC1wZXJzcGVjdGl2ZS5tb2RlbCc7XG5pbXBvcnQge1dPUktCRU5DSF9QQVJUX1JFR0lTVFJZfSBmcm9tICcuL3BhcnQvd29ya2JlbmNoLXBhcnQucmVnaXN0cnknO1xuaW1wb3J0IHvJtVdvcmtiZW5jaFZpZXd9IGZyb20gJy4vdmlldy/JtXdvcmtiZW5jaC12aWV3Lm1vZGVsJztcbmltcG9ydCB7ybVXb3JrYmVuY2hQYXJ0fSBmcm9tICcuL3BhcnQvybV3b3JrYmVuY2gtcGFydC5tb2RlbCc7XG5pbXBvcnQge8m1V29ya2JlbmNoUGVyc3BlY3RpdmV9IGZyb20gJy4vcGVyc3BlY3RpdmUvybV3b3JrYmVuY2gtcGVyc3BlY3RpdmUubW9kZWwnO1xuaW1wb3J0IHtXT1JLQkVOQ0hfUEVSU1BFQ1RJVkVfUkVHSVNUUll9IGZyb20gJy4vcGVyc3BlY3RpdmUvd29ya2JlbmNoLXBlcnNwZWN0aXZlLnJlZ2lzdHJ5JztcbmltcG9ydCB7V09SS0JFTkNIX1BBUlRfQUNUSU9OX1JFR0lTVFJZfSBmcm9tICcuL3BhcnQvd29ya2JlbmNoLXBhcnQtYWN0aW9uLnJlZ2lzdHJ5JztcbmltcG9ydCB7V29ya2JlbmNoVGhlbWVTd2l0Y2hlcn0gZnJvbSAnLi90aGVtZS93b3JrYmVuY2gtdGhlbWUtc3dpdGNoZXIuc2VydmljZSc7XG5pbXBvcnQge1ZpZXdJZH0gZnJvbSAnLi92aWV3L3dvcmtiZW5jaC12aWV3Lm1vZGVsJztcbmltcG9ydCB7ybVXb3JrYmVuY2hMYXlvdXR9IGZyb20gJy4vbGF5b3V0L8m1d29ya2JlbmNoLWxheW91dCc7XG5pbXBvcnQge1dvcmtiZW5jaExheW91dFNlcnZpY2V9IGZyb20gJy4vbGF5b3V0L3dvcmtiZW5jaC1sYXlvdXQuc2VydmljZSc7XG5pbXBvcnQge3Rocm93RXJyb3J9IGZyb20gJy4vY29tbW9uL3Rocm93LWVycm9yLnV0aWwnO1xuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyDJtVdvcmtiZW5jaFNlcnZpY2UgaW1wbGVtZW50cyBXb3JrYmVuY2hTZXJ2aWNlIHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF93b3JrYmVuY2hSb3V0ZXIgPSBpbmplY3QoV29ya2JlbmNoUm91dGVyKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGVyc3BlY3RpdmVSZWdpc3RyeSA9IGluamVjdChXT1JLQkVOQ0hfUEVSU1BFQ1RJVkVfUkVHSVNUUlkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYXJ0UmVnaXN0cnkgPSBpbmplY3QoV09SS0JFTkNIX1BBUlRfUkVHSVNUUlkpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYXJ0QWN0aW9uUmVnaXN0cnkgPSBpbmplY3QoV09SS0JFTkNIX1BBUlRfQUNUSU9OX1JFR0lTVFJZKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlld1JlZ2lzdHJ5ID0gaW5qZWN0KFdPUktCRU5DSF9WSUVXX1JFR0lTVFJZKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGVyc3BlY3RpdmVTZXJ2aWNlID0gaW5qZWN0KFdvcmtiZW5jaFBlcnNwZWN0aXZlU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xheW91dFNlcnZpY2UgPSBpbmplY3QoV29ya2JlbmNoTGF5b3V0U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3dvcmtiZW5jaFRoZW1lU3dpdGNoZXIgPSBpbmplY3QoV29ya2JlbmNoVGhlbWVTd2l0Y2hlcik7XG5cbiAgcHVibGljIHJlYWRvbmx5IGxheW91dDogU2lnbmFsPMm1V29ya2JlbmNoTGF5b3V0PjtcbiAgcHVibGljIHJlYWRvbmx5IHBlcnNwZWN0aXZlczogU2lnbmFsPMm1V29ya2JlbmNoUGVyc3BlY3RpdmVbXT47XG4gIHB1YmxpYyByZWFkb25seSBwYXJ0czogU2lnbmFsPMm1V29ya2JlbmNoUGFydFtdPjtcbiAgcHVibGljIHJlYWRvbmx5IHZpZXdzOiBTaWduYWw8ybVXb3JrYmVuY2hWaWV3W10+O1xuICBwdWJsaWMgcmVhZG9ubHkgdGhlbWU6IFNpZ25hbDxXb3JrYmVuY2hUaGVtZSB8IG51bGw+O1xuICBwdWJsaWMgcmVhZG9ubHkgYWN0aXZlUGVyc3BlY3RpdmU6IFNpZ25hbDxXb3JrYmVuY2hQZXJzcGVjdGl2ZSB8IHVuZGVmaW5lZD47XG4gIHB1YmxpYyByZWFkb25seSB2aWV3TWVudUl0ZW1Qcm92aWRlcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxXb3JrYmVuY2hNZW51SXRlbUZhY3RvcnlGbltdPihbXSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5sYXlvdXQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLl9sYXlvdXRTZXJ2aWNlLmxheW91dCgpID8/IHRocm93RXJyb3IoJ1tOdWxsTGF5b3V0RXJyb3JdIFdvcmtiZW5jaCBsYXlvdXQgbm90IGNyZWF0ZWQgeWV0LicpKTtcbiAgICB0aGlzLnBlcnNwZWN0aXZlcyA9IHRoaXMuX3BlcnNwZWN0aXZlUmVnaXN0cnkub2JqZWN0cztcbiAgICB0aGlzLnBhcnRzID0gdGhpcy5fcGFydFJlZ2lzdHJ5Lm9iamVjdHM7XG4gICAgdGhpcy52aWV3cyA9IHRoaXMuX3ZpZXdSZWdpc3RyeS5vYmplY3RzO1xuICAgIHRoaXMudGhlbWUgPSB0aGlzLl93b3JrYmVuY2hUaGVtZVN3aXRjaGVyLnRoZW1lO1xuICAgIHRoaXMuYWN0aXZlUGVyc3BlY3RpdmUgPSB0aGlzLl9wZXJzcGVjdGl2ZVNlcnZpY2UuYWN0aXZlUGVyc3BlY3RpdmU7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIGdldFBlcnNwZWN0aXZlKHBlcnNwZWN0aXZlSWQ6IHN0cmluZyk6IMm1V29ya2JlbmNoUGVyc3BlY3RpdmUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVyc3BlY3RpdmVSZWdpc3RyeS5nZXQocGVyc3BlY3RpdmVJZCwge29yRWxzZTogbnVsbH0pO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHB1YmxpYyBnZXRQYXJ0KHBhcnRJZDogc3RyaW5nKTogybVXb3JrYmVuY2hQYXJ0IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcnRSZWdpc3RyeS5nZXQocGFydElkLCB7b3JFbHNlOiBudWxsfSk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIGdldFZpZXcodmlld0lkOiBWaWV3SWQpOiDJtVdvcmtiZW5jaFZpZXcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fdmlld1JlZ2lzdHJ5LmdldCh2aWV3SWQsIHtvckVsc2U6IG51bGx9KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgcmVnaXN0ZXJQZXJzcGVjdGl2ZShwZXJzcGVjdGl2ZTogV29ya2JlbmNoUGVyc3BlY3RpdmVEZWZpbml0aW9uKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3BlcnNwZWN0aXZlU2VydmljZS5yZWdpc3RlclBlcnNwZWN0aXZlKHBlcnNwZWN0aXZlKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgc3dpdGNoUGVyc3BlY3RpdmUoaWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9wZXJzcGVjdGl2ZVNlcnZpY2Uuc3dpdGNoUGVyc3BlY3RpdmUoaWQpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHB1YmxpYyBhc3luYyByZXNldFBlcnNwZWN0aXZlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuX3BlcnNwZWN0aXZlU2VydmljZS5yZXNldFBlcnNwZWN0aXZlKCk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIGFzeW5jIGNsb3NlVmlld3MoLi4udmlld0lkczogVmlld0lkW10pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fd29ya2JlbmNoUm91dGVyLm5hdmlnYXRlKGxheW91dCA9PiB2aWV3SWRzLnJlZHVjZSgobGF5b3V0LCB2aWV3SWQpID0+IGxheW91dC5yZW1vdmVWaWV3KHZpZXdJZCksIGxheW91dCkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHB1YmxpYyByZWdpc3RlclBhcnRBY3Rpb24oYWN0aW9uOiBXb3JrYmVuY2hQYXJ0QWN0aW9uKTogRGlzcG9zYWJsZSB7XG4gICAgdGhpcy5fcGFydEFjdGlvblJlZ2lzdHJ5LnJlZ2lzdGVyKGFjdGlvbik7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRpc3Bvc2U6ICgpID0+IHRoaXMuX3BhcnRBY3Rpb25SZWdpc3RyeS51bnJlZ2lzdGVyKGFjdGlvbiksXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgcmVnaXN0ZXJWaWV3TWVudUl0ZW0oZmFjdG9yeUZuOiBXb3JrYmVuY2hNZW51SXRlbUZhY3RvcnlGbik6IERpc3Bvc2FibGUge1xuICAgIHRoaXMudmlld01lbnVJdGVtUHJvdmlkZXJzJC5uZXh0KHRoaXMudmlld01lbnVJdGVtUHJvdmlkZXJzJC52YWx1ZS5jb25jYXQoZmFjdG9yeUZuKSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRpc3Bvc2U6ICgpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy52aWV3TWVudUl0ZW1Qcm92aWRlcnMkLm5leHQodGhpcy52aWV3TWVudUl0ZW1Qcm92aWRlcnMkLnZhbHVlLmZpbHRlcihpdCA9PiBpdCAhPT0gZmFjdG9yeUZuKSk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIHN3aXRjaFRoZW1lKHRoZW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fd29ya2JlbmNoVGhlbWVTd2l0Y2hlci5zd2l0Y2hUaGVtZSh0aGVtZSk7XG4gIH1cbn1cbiJdfQ==