@clr/angular 15.0.0-beta.1 → 15.0.0-beta.3

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 (119) hide show
  1. package/clarity.api.md +158 -489
  2. package/clr-angular.module.d.ts +12 -15
  3. package/data/datagrid/datagrid-column.d.ts +1 -22
  4. package/data/datagrid/datagrid-pagination.d.ts +2 -2
  5. package/data/datagrid/datagrid.module.d.ts +13 -13
  6. package/data/stack-view/index.d.ts +0 -2
  7. package/data/stack-view/stack-block.d.ts +1 -17
  8. package/data/stack-view/stack-view.d.ts +1 -11
  9. package/data/stack-view/stack-view.module.d.ts +5 -7
  10. package/data/tree-view/tree-node.d.ts +6 -6
  11. package/esm2020/accordion/accordion-panel.mjs +3 -3
  12. package/esm2020/accordion/stepper/stepper-panel.mjs +3 -3
  13. package/esm2020/clr-angular.module.mjs +1 -13
  14. package/esm2020/data/datagrid/datagrid-action-overflow.mjs +10 -10
  15. package/esm2020/data/datagrid/datagrid-column-separator.mjs +16 -15
  16. package/esm2020/data/datagrid/datagrid-column-toggle.mjs +18 -20
  17. package/esm2020/data/datagrid/datagrid-column.mjs +2 -48
  18. package/esm2020/data/datagrid/datagrid-detail.mjs +8 -6
  19. package/esm2020/data/datagrid/datagrid-filter.mjs +10 -10
  20. package/esm2020/data/datagrid/datagrid-pagination.mjs +10 -5
  21. package/esm2020/data/datagrid/datagrid-row-detail.mjs +7 -8
  22. package/esm2020/data/datagrid/datagrid-row.mjs +3 -3
  23. package/esm2020/data/datagrid/datagrid.module.mjs +9 -9
  24. package/esm2020/data/stack-view/index.mjs +1 -3
  25. package/esm2020/data/stack-view/stack-block.mjs +2 -8
  26. package/esm2020/data/stack-view/stack-header.mjs +2 -23
  27. package/esm2020/data/stack-view/stack-view.mjs +4 -28
  28. package/esm2020/data/stack-view/stack-view.module.mjs +3 -23
  29. package/esm2020/data/tree-view/tree-node.mjs +30 -26
  30. package/esm2020/forms/datepicker/date-container.mjs +9 -9
  31. package/esm2020/forms/datepicker/datepicker.module.mjs +5 -5
  32. package/esm2020/layout/nav/nav-level.mjs +23 -10
  33. package/esm2020/layout/vertical-nav/vertical-nav-group.mjs +3 -7
  34. package/esm2020/modal/modal.mjs +8 -19
  35. package/esm2020/modal/modal.module.mjs +5 -5
  36. package/esm2020/popover/dropdown/dropdown-item.mjs +30 -33
  37. package/esm2020/utils/cdk/cdk-drag.module.mjs +37 -0
  38. package/esm2020/utils/cdk/cdk-trap-focus.module.mjs +37 -0
  39. package/esm2020/utils/i18n/common-strings.default.mjs +2 -3
  40. package/esm2020/utils/i18n/common-strings.interface.mjs +1 -1
  41. package/esm2020/utils/index.mjs +1 -5
  42. package/esm2020/wizard/wizard.mjs +6 -30
  43. package/fesm2015/clr-angular.mjs +259 -1990
  44. package/fesm2015/clr-angular.mjs.map +1 -1
  45. package/fesm2020/clr-angular.mjs +306 -2033
  46. package/fesm2020/clr-angular.mjs.map +1 -1
  47. package/forms/datepicker/datepicker.module.d.ts +6 -6
  48. package/layout/nav/nav-level.d.ts +12 -4
  49. package/layout/vertical-nav/vertical-nav-group.d.ts +1 -2
  50. package/modal/modal.d.ts +1 -4
  51. package/modal/modal.module.d.ts +3 -3
  52. package/package.json +2 -1
  53. package/popover/dropdown/dropdown-item.d.ts +7 -13
  54. package/src/utils/popover/README.md +1 -1
  55. package/utils/cdk/cdk-drag.module.d.ts +17 -0
  56. package/utils/cdk/cdk-trap-focus.module.d.ts +17 -0
  57. package/utils/i18n/common-strings.interface.d.ts +0 -17
  58. package/utils/index.d.ts +0 -4
  59. package/wizard/wizard.d.ts +2 -13
  60. package/data/stack-view/stack-control.d.ts +0 -16
  61. package/data/stack-view/stack-input.d.ts +0 -10
  62. package/data/stack-view/stack-select.d.ts +0 -9
  63. package/esm2020/data/stack-view/stack-control.mjs +0 -34
  64. package/esm2020/data/stack-view/stack-input.mjs +0 -42
  65. package/esm2020/data/stack-view/stack-select.mjs +0 -48
  66. package/esm2020/utils/a11y/aria-live.service.mjs +0 -163
  67. package/esm2020/utils/a11y/index.mjs +0 -7
  68. package/esm2020/utils/drag-and-drop/drag-and-drop.module.mjs +0 -42
  69. package/esm2020/utils/drag-and-drop/drag-event.mjs +0 -16
  70. package/esm2020/utils/drag-and-drop/drag-handle.mjs +0 -35
  71. package/esm2020/utils/drag-and-drop/draggable/draggable.mjs +0 -135
  72. package/esm2020/utils/drag-and-drop/draggable-ghost.mjs +0 -124
  73. package/esm2020/utils/drag-and-drop/droppable/droppable.mjs +0 -222
  74. package/esm2020/utils/drag-and-drop/if-dragged.mjs +0 -47
  75. package/esm2020/utils/drag-and-drop/index.mjs +0 -14
  76. package/esm2020/utils/drag-and-drop/interfaces/drag-event.interface.mjs +0 -15
  77. package/esm2020/utils/drag-and-drop/interfaces/drop-tolerance.interface.mjs +0 -7
  78. package/esm2020/utils/drag-and-drop/providers/drag-and-drop-event-bus.service.mjs +0 -54
  79. package/esm2020/utils/drag-and-drop/providers/drag-event-listener.service.mjs +0 -179
  80. package/esm2020/utils/drag-and-drop/providers/drag-handle-registrar.service.mjs +0 -60
  81. package/esm2020/utils/drag-and-drop/providers/draggable-snapshot.service.mjs +0 -38
  82. package/esm2020/utils/drag-and-drop/providers/global-drag-mode.service.mjs +0 -26
  83. package/esm2020/utils/focus-trap/focus-trap-config.interface.mjs +0 -7
  84. package/esm2020/utils/focus-trap/focus-trap-tracker.service.mjs +0 -32
  85. package/esm2020/utils/focus-trap/focus-trap.directive.mjs +0 -158
  86. package/esm2020/utils/focus-trap/focus-trap.mjs +0 -141
  87. package/esm2020/utils/focus-trap/focus-trap.module.mjs +0 -24
  88. package/esm2020/utils/focus-trap/index.mjs +0 -9
  89. package/esm2020/utils/for-type-ahead/for-type-ahead.mjs +0 -54
  90. package/esm2020/utils/for-type-ahead/for-type-ahead.module.mjs +0 -23
  91. package/esm2020/utils/for-type-ahead/for-type-ahead.service.mjs +0 -29
  92. package/esm2020/utils/for-type-ahead/index.mjs +0 -8
  93. package/utils/a11y/aria-live.service.d.ts +0 -93
  94. package/utils/a11y/index.d.ts +0 -1
  95. package/utils/drag-and-drop/drag-and-drop.module.d.ts +0 -14
  96. package/utils/drag-and-drop/drag-event.d.ts +0 -8
  97. package/utils/drag-and-drop/drag-handle.d.ts +0 -11
  98. package/utils/drag-and-drop/draggable/draggable.d.ts +0 -36
  99. package/utils/drag-and-drop/draggable-ghost.d.ts +0 -30
  100. package/utils/drag-and-drop/droppable/droppable.d.ts +0 -42
  101. package/utils/drag-and-drop/if-dragged.d.ts +0 -13
  102. package/utils/drag-and-drop/index.d.ts +0 -8
  103. package/utils/drag-and-drop/interfaces/drag-event.interface.d.ts +0 -22
  104. package/utils/drag-and-drop/interfaces/drop-tolerance.interface.d.ts +0 -6
  105. package/utils/drag-and-drop/providers/drag-and-drop-event-bus.service.d.ts +0 -16
  106. package/utils/drag-and-drop/providers/drag-event-listener.service.d.ts +0 -39
  107. package/utils/drag-and-drop/providers/drag-handle-registrar.service.d.ts +0 -18
  108. package/utils/drag-and-drop/providers/draggable-snapshot.service.d.ts +0 -16
  109. package/utils/drag-and-drop/providers/global-drag-mode.service.d.ts +0 -10
  110. package/utils/focus-trap/focus-trap-config.interface.d.ts +0 -3
  111. package/utils/focus-trap/focus-trap-tracker.service.d.ts +0 -12
  112. package/utils/focus-trap/focus-trap.d.ts +0 -29
  113. package/utils/focus-trap/focus-trap.directive.d.ts +0 -38
  114. package/utils/focus-trap/focus-trap.module.d.ts +0 -10
  115. package/utils/focus-trap/index.d.ts +0 -3
  116. package/utils/for-type-ahead/for-type-ahead.d.ts +0 -15
  117. package/utils/for-type-ahead/for-type-ahead.module.d.ts +0 -8
  118. package/utils/for-type-ahead/for-type-ahead.service.d.ts +0 -11
  119. package/utils/for-type-ahead/index.d.ts +0 -2
@@ -6,7 +6,6 @@
6
6
  import { Component } from '@angular/core';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "./stack-view";
9
- import * as i2 from "@angular/common";
10
9
  export class ClrStackHeader {
11
10
  constructor(stackView) {
12
11
  this.stackView = stackView;
@@ -19,19 +18,9 @@ ClrStackHeader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version
19
18
 
20
19
  <span class="stack-actions">
21
20
  <ng-content select=".stack-action"></ng-content>
22
- <!-- Undocumented experimental feature: inline editing. -->
23
- <button
24
- *ngIf="stackView.editable"
25
- class="stack-action btn btn-sm btn-link"
26
- (click)="stackView.editing = !stackView.editing"
27
- type="button"
28
- >
29
- Edit
30
- </button>
31
- <!-- End of undocumented experimental feature. -->
32
21
  </span>
33
22
  </div>
34
- `, isInline: true, styles: [":host{display:block}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
23
+ `, isInline: true, styles: [":host{display:block}\n"] });
35
24
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackHeader, decorators: [{
36
25
  type: Component,
37
26
  args: [{ selector: 'clr-stack-header', template: `
@@ -40,18 +29,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
40
29
 
41
30
  <span class="stack-actions">
42
31
  <ng-content select=".stack-action"></ng-content>
43
- <!-- Undocumented experimental feature: inline editing. -->
44
- <button
45
- *ngIf="stackView.editable"
46
- class="stack-action btn btn-sm btn-link"
47
- (click)="stackView.editing = !stackView.editing"
48
- type="button"
49
- >
50
- Edit
51
- </button>
52
- <!-- End of undocumented experimental feature. -->
53
32
  </span>
54
33
  </div>
55
34
  `, styles: [":host{display:block}\n"] }]
56
35
  }], ctorParameters: function () { return [{ type: i1.ClrStackView }]; } });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2staGVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvZGF0YS9zdGFjay12aWV3L3N0YWNrLWhlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQWtDMUMsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFBbUIsU0FBdUI7UUFBdkIsY0FBUyxHQUFULFNBQVMsQ0FBYztJQUFHLENBQUM7OzJHQURuQyxjQUFjOytGQUFkLGNBQWMsd0RBNUJmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQ7MkZBVVUsY0FBYztrQkE5QjFCLFNBQVM7K0JBQ0Usa0JBQWtCLFlBQ2xCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQlQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgVk13YXJlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDbHJTdGFja1ZpZXcgfSBmcm9tICcuL3N0YWNrLXZpZXcnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjbHItc3RhY2staGVhZGVyJyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwic3RhY2staGVhZGVyXCI+XG4gICAgICA8aDQgY2xhc3M9XCJzdGFjay10aXRsZVwiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2g0PlxuXG4gICAgICA8c3BhbiBjbGFzcz1cInN0YWNrLWFjdGlvbnNcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiLnN0YWNrLWFjdGlvblwiPjwvbmctY29udGVudD5cbiAgICAgICAgPCEtLSBVbmRvY3VtZW50ZWQgZXhwZXJpbWVudGFsIGZlYXR1cmU6IGlubGluZSBlZGl0aW5nLiAtLT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwic3RhY2tWaWV3LmVkaXRhYmxlXCJcbiAgICAgICAgICBjbGFzcz1cInN0YWNrLWFjdGlvbiBidG4gYnRuLXNtIGJ0bi1saW5rXCJcbiAgICAgICAgICAoY2xpY2spPVwic3RhY2tWaWV3LmVkaXRpbmcgPSAhc3RhY2tWaWV3LmVkaXRpbmdcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAgRWRpdFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPCEtLSBFbmQgb2YgdW5kb2N1bWVudGVkIGV4cGVyaW1lbnRhbCBmZWF0dXJlLiAtLT5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgLy8gQ3VzdG9tIGVsZW1lbnRzIGFyZSBpbmxpbmUgYnkgZGVmYXVsdFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENsclN0YWNrSGVhZGVyIHtcbiAgY29uc3RydWN0b3IocHVibGljIHN0YWNrVmlldzogQ2xyU3RhY2tWaWV3KSB7fVxufVxuIl19
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2staGVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvZGF0YS9zdGFjay12aWV3L3N0YWNrLWhlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBd0IxQyxNQUFNLE9BQU8sY0FBYztJQUN6QixZQUFtQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO0lBQUcsQ0FBQzs7MkdBRG5DLGNBQWM7K0ZBQWQsY0FBYyx3REFsQmY7Ozs7Ozs7O0dBUVQ7MkZBVVUsY0FBYztrQkFwQjFCLFNBQVM7K0JBQ0Usa0JBQWtCLFlBQ2xCOzs7Ozs7OztHQVFUIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIFZNd2FyZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ2xyU3RhY2tWaWV3IH0gZnJvbSAnLi9zdGFjay12aWV3JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2xyLXN0YWNrLWhlYWRlcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInN0YWNrLWhlYWRlclwiPlxuICAgICAgPGg0IGNsYXNzPVwic3RhY2stdGl0bGVcIj48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9oND5cblxuICAgICAgPHNwYW4gY2xhc3M9XCJzdGFjay1hY3Rpb25zXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIi5zdGFjay1hY3Rpb25cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIGAsXG4gIC8vIEN1c3RvbSBlbGVtZW50cyBhcmUgaW5saW5lIGJ5IGRlZmF1bHRcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDbHJTdGFja0hlYWRlciB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzdGFja1ZpZXc6IENsclN0YWNrVmlldykge31cbn1cbiJdfQ==
@@ -3,33 +3,12 @@
3
3
  * This software is released under MIT license.
4
4
  * The full license information can be found in LICENSE in the root directory of this project.
5
5
  */
6
- import { Component, EventEmitter, Output } from '@angular/core';
6
+ import { Component } from '@angular/core';
7
7
  import * as i0 from "@angular/core";
8
8
  export class ClrStackView {
9
- constructor() {
10
- /**
11
- * Undocumented experimental feature: inline editing.
12
- */
13
- this.editable = false;
14
- this.save = new EventEmitter(false);
15
- this._editMode = false;
16
- this.editingChange = new EventEmitter(false);
17
- }
18
- get editing() {
19
- return this.editable && this._editMode;
20
- }
21
- set editing(value) {
22
- if (this.editable) {
23
- this._editMode = value;
24
- this.editingChange.emit(value);
25
- if (!value) {
26
- this.save.emit(null);
27
- }
28
- }
29
- }
30
9
  }
31
10
  ClrStackView.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackView, deps: [], target: i0.ɵɵFactoryTarget.Component });
32
- ClrStackView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrStackView, selector: "clr-stack-view", outputs: { save: "clrStackSave" }, ngImport: i0, template: `
11
+ ClrStackView.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrStackView, selector: "clr-stack-view", ngImport: i0, template: `
33
12
  <ng-content select="clr-stack-header"></ng-content>
34
13
  <div class="stack-view"><ng-content></ng-content></div>
35
14
  `, isInline: true, styles: [":host{display:block}\n"] });
@@ -39,8 +18,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
39
18
  <ng-content select="clr-stack-header"></ng-content>
40
19
  <div class="stack-view"><ng-content></ng-content></div>
41
20
  `, styles: [":host{display:block}\n"] }]
42
- }], propDecorators: { save: [{
43
- type: Output,
44
- args: ['clrStackSave']
45
- }] } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2RhdGEvc3RhY2stdmlldy9zdGFjay12aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBaUJoRSxNQUFNLE9BQU8sWUFBWTtJQWZ6QjtRQWdCRTs7V0FFRztRQUNILGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFTyxTQUFJLEdBQXVCLElBQUksWUFBWSxDQUFPLEtBQUssQ0FBQyxDQUFDO1FBRXpFLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFMUIsa0JBQWEsR0FBMEIsSUFBSSxZQUFZLENBQVUsS0FBSyxDQUFDLENBQUM7S0FrQnpFO0lBaEJDLElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxLQUFjO1FBQ3hCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3RCO1NBQ0Y7SUFDSCxDQUFDOzt5R0F4QlUsWUFBWTs2RkFBWixZQUFZLHlGQWJiOzs7R0FHVDsyRkFVVSxZQUFZO2tCQWZ4QixTQUFTOytCQUNFLGdCQUFnQixZQUNoQjs7O0dBR1Q7OEJBZ0J1QixJQUFJO3NCQUEzQixNQUFNO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgVk13YXJlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2xyLXN0YWNrLXZpZXcnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1zdGFjay1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgPGRpdiBjbGFzcz1cInN0YWNrLXZpZXdcIj48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9kaXY+XG4gIGAsXG4gIC8vIEN1c3RvbSBlbGVtZW50cyBhcmUgaW5saW5lIGJ5IGRlZmF1bHQuXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2xyU3RhY2tWaWV3IHtcbiAgLyoqXG4gICAqIFVuZG9jdW1lbnRlZCBleHBlcmltZW50YWwgZmVhdHVyZTogaW5saW5lIGVkaXRpbmcuXG4gICAqL1xuICBlZGl0YWJsZSA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoJ2NsclN0YWNrU2F2ZScpIHNhdmU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oZmFsc2UpO1xuXG4gIHByaXZhdGUgX2VkaXRNb2RlID0gZmFsc2U7XG5cbiAgZWRpdGluZ0NoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPihmYWxzZSk7XG5cbiAgZ2V0IGVkaXRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdGFibGUgJiYgdGhpcy5fZWRpdE1vZGU7XG4gIH1cblxuICBzZXQgZWRpdGluZyh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLmVkaXRhYmxlKSB7XG4gICAgICB0aGlzLl9lZGl0TW9kZSA9IHZhbHVlO1xuICAgICAgdGhpcy5lZGl0aW5nQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICB0aGlzLnNhdmUuZW1pdChudWxsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEVuZCBvZiB1bmRvY3VtZW50ZWQgZXhwZXJpbWVudGFsIGZlYXR1cmUuXG4gICAqL1xufVxuIl19
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stdmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2RhdGEvc3RhY2stdmlldy9zdGFjay12aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQWlCMUMsTUFBTSxPQUFPLFlBQVk7O3lHQUFaLFlBQVk7NkZBQVosWUFBWSxzREFiYjs7O0dBR1Q7MkZBVVUsWUFBWTtrQkFmeEIsU0FBUzsrQkFDRSxnQkFBZ0IsWUFDaEI7OztHQUdUIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIFZNd2FyZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2xyLXN0YWNrLXZpZXcnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1zdGFjay1oZWFkZXJcIj48L25nLWNvbnRlbnQ+XG4gICAgPGRpdiBjbGFzcz1cInN0YWNrLXZpZXdcIj48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9kaXY+XG4gIGAsXG4gIC8vIEN1c3RvbSBlbGVtZW50cyBhcmUgaW5saW5lIGJ5IGRlZmF1bHQuXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIDpob3N0IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2xyU3RhY2tWaWV3IHt9XG4iXX0=
@@ -12,8 +12,6 @@ import { ClrExpandableAnimationModule } from '../../utils/animations/expandable-
12
12
  import { ClrStackBlock } from './stack-block';
13
13
  import { ClrStackContentInput } from './stack-content-input';
14
14
  import { ClrStackHeader } from './stack-header';
15
- import { ClrStackInput } from './stack-input';
16
- import { ClrStackSelect } from './stack-select';
17
15
  import { ClrStackView } from './stack-view';
18
16
  import { ClrStackViewCustomTags, ClrStackViewLabel } from './stack-view-custom-tags';
19
17
  import * as i0 from "@angular/core";
@@ -24,14 +22,6 @@ export const CLR_STACK_VIEW_DIRECTIVES = [
24
22
  ClrStackContentInput,
25
23
  ClrStackViewLabel,
26
24
  ClrStackViewCustomTags,
27
- /**
28
- * Undocumented experimental feature: inline editing.
29
- */
30
- ClrStackInput,
31
- ClrStackSelect,
32
- /**
33
- * End of undocumented experimental feature.
34
- */
35
25
  ];
36
26
  export class ClrStackViewModule {
37
27
  constructor() {
@@ -44,22 +34,12 @@ ClrStackViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
44
34
  ClrStackBlock,
45
35
  ClrStackContentInput,
46
36
  ClrStackViewLabel,
47
- ClrStackViewCustomTags,
48
- /**
49
- * Undocumented experimental feature: inline editing.
50
- */
51
- ClrStackInput,
52
- ClrStackSelect], imports: [CommonModule, FormsModule, ClrIconModule, ClrExpandableAnimationModule], exports: [ClrStackView,
37
+ ClrStackViewCustomTags], imports: [CommonModule, FormsModule, ClrIconModule, ClrExpandableAnimationModule], exports: [ClrStackView,
53
38
  ClrStackHeader,
54
39
  ClrStackBlock,
55
40
  ClrStackContentInput,
56
41
  ClrStackViewLabel,
57
- ClrStackViewCustomTags,
58
- /**
59
- * Undocumented experimental feature: inline editing.
60
- */
61
- ClrStackInput,
62
- ClrStackSelect] });
42
+ ClrStackViewCustomTags] });
63
43
  ClrStackViewModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackViewModule, imports: [CommonModule, FormsModule, ClrIconModule, ClrExpandableAnimationModule] });
64
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrStackViewModule, decorators: [{
65
45
  type: NgModule,
@@ -69,4 +49,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
69
49
  exports: [CLR_STACK_VIEW_DIRECTIVES],
70
50
  }]
71
51
  }], ctorParameters: function () { return []; } });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stdmlldy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9kYXRhL3N0YWNrLXZpZXcvc3RhY2stdmlldy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQUN2SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUVyRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBZ0I7SUFDcEQsWUFBWTtJQUNaLGNBQWM7SUFDZCxhQUFhO0lBQ2Isb0JBQW9CO0lBQ3BCLGlCQUFpQjtJQUNqQixzQkFBc0I7SUFDdEI7O09BRUc7SUFDSCxhQUFhO0lBQ2IsY0FBYztJQUNkOztPQUVHO0NBQ0osQ0FBQztBQU9GLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0I7UUFDRSxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7OytHQUhVLGtCQUFrQjtnSEFBbEIsa0JBQWtCLGlCQXJCN0IsWUFBWTtRQUNaLGNBQWM7UUFDZCxhQUFhO1FBQ2Isb0JBQW9CO1FBQ3BCLGlCQUFpQjtRQUNqQixzQkFBc0I7UUFDdEI7O1dBRUc7UUFDSCxhQUFhO1FBQ2IsY0FBYyxhQU9KLFlBQVksRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLDRCQUE0QixhQWpCaEYsWUFBWTtRQUNaLGNBQWM7UUFDZCxhQUFhO1FBQ2Isb0JBQW9CO1FBQ3BCLGlCQUFpQjtRQUNqQixzQkFBc0I7UUFDdEI7O1dBRUc7UUFDSCxhQUFhO1FBQ2IsY0FBYztnSEFXSCxrQkFBa0IsWUFKbkIsWUFBWSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsNEJBQTRCOzJGQUlyRSxrQkFBa0I7a0JBTDlCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsNEJBQTRCLENBQUM7b0JBQ2pGLFlBQVksRUFBRSxDQUFDLHlCQUF5QixDQUFDO29CQUN6QyxPQUFPLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztpQkFDckMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgVk13YXJlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBhbmdsZUljb24sIENsYXJpdHlJY29ucyB9IGZyb20gJ0BjZHMvY29yZS9pY29uJztcblxuaW1wb3J0IHsgQ2xySWNvbk1vZHVsZSB9IGZyb20gJy4uLy4uL2ljb24vaWNvbi5tb2R1bGUnO1xuaW1wb3J0IHsgQ2xyRXhwYW5kYWJsZUFuaW1hdGlvbk1vZHVsZSB9IGZyb20gJy4uLy4uL3V0aWxzL2FuaW1hdGlvbnMvZXhwYW5kYWJsZS1hbmltYXRpb24vZXhwYW5kYWJsZS1hbmltYXRpb24ubW9kdWxlJztcbmltcG9ydCB7IENsclN0YWNrQmxvY2sgfSBmcm9tICcuL3N0YWNrLWJsb2NrJztcbmltcG9ydCB7IENsclN0YWNrQ29udGVudElucHV0IH0gZnJvbSAnLi9zdGFjay1jb250ZW50LWlucHV0JztcbmltcG9ydCB7IENsclN0YWNrSGVhZGVyIH0gZnJvbSAnLi9zdGFjay1oZWFkZXInO1xuaW1wb3J0IHsgQ2xyU3RhY2tJbnB1dCB9IGZyb20gJy4vc3RhY2staW5wdXQnO1xuaW1wb3J0IHsgQ2xyU3RhY2tTZWxlY3QgfSBmcm9tICcuL3N0YWNrLXNlbGVjdCc7XG5pbXBvcnQgeyBDbHJTdGFja1ZpZXcgfSBmcm9tICcuL3N0YWNrLXZpZXcnO1xuaW1wb3J0IHsgQ2xyU3RhY2tWaWV3Q3VzdG9tVGFncywgQ2xyU3RhY2tWaWV3TGFiZWwgfSBmcm9tICcuL3N0YWNrLXZpZXctY3VzdG9tLXRhZ3MnO1xuXG5leHBvcnQgY29uc3QgQ0xSX1NUQUNLX1ZJRVdfRElSRUNUSVZFUzogVHlwZTxhbnk+W10gPSBbXG4gIENsclN0YWNrVmlldyxcbiAgQ2xyU3RhY2tIZWFkZXIsXG4gIENsclN0YWNrQmxvY2ssXG4gIENsclN0YWNrQ29udGVudElucHV0LFxuICBDbHJTdGFja1ZpZXdMYWJlbCxcbiAgQ2xyU3RhY2tWaWV3Q3VzdG9tVGFncyxcbiAgLyoqXG4gICAqIFVuZG9jdW1lbnRlZCBleHBlcmltZW50YWwgZmVhdHVyZTogaW5saW5lIGVkaXRpbmcuXG4gICAqL1xuICBDbHJTdGFja0lucHV0LFxuICBDbHJTdGFja1NlbGVjdCxcbiAgLyoqXG4gICAqIEVuZCBvZiB1bmRvY3VtZW50ZWQgZXhwZXJpbWVudGFsIGZlYXR1cmUuXG4gICAqL1xuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIENsckljb25Nb2R1bGUsIENsckV4cGFuZGFibGVBbmltYXRpb25Nb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtDTFJfU1RBQ0tfVklFV19ESVJFQ1RJVkVTXSxcbiAgZXhwb3J0czogW0NMUl9TVEFDS19WSUVXX0RJUkVDVElWRVNdLFxufSlcbmV4cG9ydCBjbGFzcyBDbHJTdGFja1ZpZXdNb2R1bGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBDbGFyaXR5SWNvbnMuYWRkSWNvbnMoYW5nbGVJY29uKTtcbiAgfVxufVxuIl19
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stdmlldy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9kYXRhL3N0YWNrLXZpZXcvc3RhY2stdmlldy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQUN2SCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzVDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQUVyRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBZ0I7SUFDcEQsWUFBWTtJQUNaLGNBQWM7SUFDZCxhQUFhO0lBQ2Isb0JBQW9CO0lBQ3BCLGlCQUFpQjtJQUNqQixzQkFBc0I7Q0FDdkIsQ0FBQztBQU9GLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0I7UUFDRSxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7OytHQUhVLGtCQUFrQjtnSEFBbEIsa0JBQWtCLGlCQWI3QixZQUFZO1FBQ1osY0FBYztRQUNkLGFBQWE7UUFDYixvQkFBb0I7UUFDcEIsaUJBQWlCO1FBQ2pCLHNCQUFzQixhQUlaLFlBQVksRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLDRCQUE0QixhQVRoRixZQUFZO1FBQ1osY0FBYztRQUNkLGFBQWE7UUFDYixvQkFBb0I7UUFDcEIsaUJBQWlCO1FBQ2pCLHNCQUFzQjtnSEFRWCxrQkFBa0IsWUFKbkIsWUFBWSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsNEJBQTRCOzJGQUlyRSxrQkFBa0I7a0JBTDlCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsNEJBQTRCLENBQUM7b0JBQ2pGLFlBQVksRUFBRSxDQUFDLHlCQUF5QixDQUFDO29CQUN6QyxPQUFPLEVBQUUsQ0FBQyx5QkFBeUIsQ0FBQztpQkFDckMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgVk13YXJlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBhbmdsZUljb24sIENsYXJpdHlJY29ucyB9IGZyb20gJ0BjZHMvY29yZS9pY29uJztcblxuaW1wb3J0IHsgQ2xySWNvbk1vZHVsZSB9IGZyb20gJy4uLy4uL2ljb24vaWNvbi5tb2R1bGUnO1xuaW1wb3J0IHsgQ2xyRXhwYW5kYWJsZUFuaW1hdGlvbk1vZHVsZSB9IGZyb20gJy4uLy4uL3V0aWxzL2FuaW1hdGlvbnMvZXhwYW5kYWJsZS1hbmltYXRpb24vZXhwYW5kYWJsZS1hbmltYXRpb24ubW9kdWxlJztcbmltcG9ydCB7IENsclN0YWNrQmxvY2sgfSBmcm9tICcuL3N0YWNrLWJsb2NrJztcbmltcG9ydCB7IENsclN0YWNrQ29udGVudElucHV0IH0gZnJvbSAnLi9zdGFjay1jb250ZW50LWlucHV0JztcbmltcG9ydCB7IENsclN0YWNrSGVhZGVyIH0gZnJvbSAnLi9zdGFjay1oZWFkZXInO1xuaW1wb3J0IHsgQ2xyU3RhY2tWaWV3IH0gZnJvbSAnLi9zdGFjay12aWV3JztcbmltcG9ydCB7IENsclN0YWNrVmlld0N1c3RvbVRhZ3MsIENsclN0YWNrVmlld0xhYmVsIH0gZnJvbSAnLi9zdGFjay12aWV3LWN1c3RvbS10YWdzJztcblxuZXhwb3J0IGNvbnN0IENMUl9TVEFDS19WSUVXX0RJUkVDVElWRVM6IFR5cGU8YW55PltdID0gW1xuICBDbHJTdGFja1ZpZXcsXG4gIENsclN0YWNrSGVhZGVyLFxuICBDbHJTdGFja0Jsb2NrLFxuICBDbHJTdGFja0NvbnRlbnRJbnB1dCxcbiAgQ2xyU3RhY2tWaWV3TGFiZWwsXG4gIENsclN0YWNrVmlld0N1c3RvbVRhZ3MsXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgQ2xySWNvbk1vZHVsZSwgQ2xyRXhwYW5kYWJsZUFuaW1hdGlvbk1vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW0NMUl9TVEFDS19WSUVXX0RJUkVDVElWRVNdLFxuICBleHBvcnRzOiBbQ0xSX1NUQUNLX1ZJRVdfRElSRUNUSVZFU10sXG59KVxuZXhwb3J0IGNsYXNzIENsclN0YWNrVmlld01vZHVsZSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIENsYXJpdHlJY29ucy5hZGRJY29ucyhhbmdsZUljb24pO1xuICB9XG59XG4iXX0=
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { animate, state, style, transition, trigger } from '@angular/animations';
7
7
  import { isPlatformBrowser } from '@angular/common';
8
- import { Component, ContentChildren, ElementRef, EventEmitter, Inject, Input, Optional, Output, PLATFORM_ID, Self, SkipSelf, ViewChild, } from '@angular/core';
8
+ import { Component, ContentChildren, ElementRef, EventEmitter, Inject, Input, Optional, Output, PLATFORM_ID, SkipSelf, ViewChild, } from '@angular/core';
9
9
  import { Subject } from 'rxjs';
10
10
  import { debounceTime, filter } from 'rxjs/operators';
11
11
  import { IfExpandService } from '../../utils/conditional/if-expanded.service';
@@ -18,26 +18,25 @@ import { ClrSelectedState } from './models/selected-state.enum';
18
18
  import { TREE_FEATURES_PROVIDER } from './tree-features.service';
19
19
  import { ClrTreeNodeLink } from './tree-node-link';
20
20
  import * as i0 from "@angular/core";
21
- import * as i1 from "../../utils/for-type-ahead/for-type-ahead.service";
22
- import * as i2 from "./tree-features.service";
23
- import * as i3 from "../../utils/conditional/if-expanded.service";
24
- import * as i4 from "../../utils/i18n/common-strings.service";
25
- import * as i5 from "./tree-focus-manager.service";
26
- import * as i6 from "@angular/common";
27
- import * as i7 from "../../icon/icon";
28
- import * as i8 from "./recursive-children";
21
+ import * as i1 from "./tree-features.service";
22
+ import * as i2 from "../../utils/conditional/if-expanded.service";
23
+ import * as i3 from "../../utils/i18n/common-strings.service";
24
+ import * as i4 from "./tree-focus-manager.service";
25
+ import * as i5 from "@angular/common";
26
+ import * as i6 from "../../icon/icon";
27
+ import * as i7 from "./recursive-children";
29
28
  const LVIEW_CONTEXT_INDEX = 8;
30
29
  // If the user types multiple keys without allowing 200ms to pass between them,
31
30
  // then those keys are sent together in one request.
32
31
  const TREE_TYPE_AHEAD_TIMEOUT = 200;
33
32
  export class ClrTreeNode {
34
- constructor(platformId, parent, forTypeAheadProvider, featuresService, expandService, commonStrings, focusManager, injector) {
33
+ constructor(platformId, parent, featuresService, expandService, commonStrings, focusManager, elementRef, injector) {
35
34
  this.platformId = platformId;
36
- this.forTypeAheadProvider = forTypeAheadProvider;
37
35
  this.featuresService = featuresService;
38
36
  this.expandService = expandService;
39
37
  this.commonStrings = commonStrings;
40
38
  this.focusManager = focusManager;
39
+ this.elementRef = elementRef;
41
40
  this.STATES = ClrSelectedState;
42
41
  this.skipEmitChange = false;
43
42
  this.isModelLoading = false;
@@ -116,6 +115,9 @@ export class ClrTreeNode {
116
115
  set expanded(value) {
117
116
  this.expandService.expanded = value;
118
117
  }
118
+ set clrForTypeAhead(value) {
119
+ this._model.textContent = trimAndLowerCase(value || this.elementRef.nativeElement.textContent);
120
+ }
119
121
  ngOnInit() {
120
122
  this._model.expanded = this.expanded;
121
123
  this.subscriptions.push(this._model.selected.pipe(filter(() => !this.skipEmitChange)).subscribe(value => {
@@ -135,14 +137,14 @@ export class ClrTreeNode {
135
137
  this.subscriptions.push(this._model.loading$.pipe(debounceTime(0)).subscribe(isLoading => (this.isModelLoading = isLoading)));
136
138
  }
137
139
  ngAfterContentInit() {
138
- if (this.forTypeAheadProvider) {
139
- this._model.textContent = this.forTypeAheadProvider.textContent;
140
- this.subscriptions.push(this.typeAheadKeyEvent.pipe(debounceTime(TREE_TYPE_AHEAD_TIMEOUT)).subscribe((bufferedKeys) => {
141
- this.focusManager.focusNodeStartsWith(bufferedKeys, this._model);
142
- // reset once bufferedKeys are used
143
- this.typeAheadKeyBuffer = '';
144
- }));
140
+ if (!this._model.textContent) {
141
+ this._model.textContent = trimAndLowerCase(this.elementRef.nativeElement.textContent);
145
142
  }
143
+ this.subscriptions.push(this.typeAheadKeyEvent.pipe(debounceTime(TREE_TYPE_AHEAD_TIMEOUT)).subscribe((bufferedKeys) => {
144
+ this.focusManager.focusNodeStartsWith(bufferedKeys, this._model);
145
+ // reset once bufferedKeys are used
146
+ this.typeAheadKeyBuffer = '';
147
+ }));
146
148
  }
147
149
  ngOnDestroy() {
148
150
  this._model.destroy();
@@ -264,8 +266,8 @@ export class ClrTreeNode {
264
266
  }
265
267
  }
266
268
  }
267
- ClrTreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrTreeNode, deps: [{ token: PLATFORM_ID }, { token: ClrTreeNode, optional: true, skipSelf: true }, { token: i1.ForTypeAheadProvider, optional: true, self: true }, { token: i2.TreeFeaturesService }, { token: i3.IfExpandService }, { token: i4.ClrCommonStringsService }, { token: i5.TreeFocusManagerService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
268
- ClrTreeNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrTreeNode, selector: "clr-tree-node", inputs: { selected: ["clrSelected", "selected"], expandable: ["clrExpandable", "expandable"], expanded: ["clrExpanded", "expanded"] }, outputs: { selectedChange: "clrSelectedChange", expandedChange: "clrExpandedChange" }, host: { properties: { "class.clr-tree-node": "true" } }, providers: [TREE_FEATURES_PROVIDER, IfExpandService, { provide: LoadingListener, useExisting: IfExpandService }], queries: [{ propertyName: "treeNodeLinkList", predicate: ClrTreeNodeLink }], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n id=\"{{nodeId}}-check\"\n class=\"clr-checkbox\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label for=\"{{nodeId}}-check\" class=\"clr-control-label\"></label>\n </div>\n <div class=\"clr-treenode-content\" (mousedown)=\"focusTreeNode()\">\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable || ariaSelected\">\n <span *ngIf=\"ariaSelected\"> selected</span>\n <span *ngIf=\"!ariaSelected\"> unselected</span>\n </div>\n </div>\n</div>\n<div\n class=\"clr-treenode-children\"\n [@toggleChildrenAnim]=\"expandService.expanded ? 'expanded' : 'collapsed'\"\n [attr.role]=\"isExpandable() && !featuresService.recursion ? 'group' : null\"\n>\n <ng-content select=\"clr-tree-node\"></ng-content>\n <ng-content select=\"[clrIfExpanded]\"></ng-content>\n <clr-recursive-children [parent]=\"_model\"></clr-recursive-children>\n</div>\n", dependencies: [{ kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: i8.RecursiveChildren, selector: "clr-recursive-children", inputs: ["parent", "children"] }], animations: [
269
+ ClrTreeNode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrTreeNode, deps: [{ token: PLATFORM_ID }, { token: ClrTreeNode, optional: true, skipSelf: true }, { token: i1.TreeFeaturesService }, { token: i2.IfExpandService }, { token: i3.ClrCommonStringsService }, { token: i4.TreeFocusManagerService }, { token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
270
+ ClrTreeNode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.2", type: ClrTreeNode, selector: "clr-tree-node", inputs: { selected: ["clrSelected", "selected"], expandable: ["clrExpandable", "expandable"], expanded: ["clrExpanded", "expanded"], clrForTypeAhead: "clrForTypeAhead" }, outputs: { selectedChange: "clrSelectedChange", expandedChange: "clrExpandedChange" }, host: { properties: { "class.clr-tree-node": "true" } }, providers: [TREE_FEATURES_PROVIDER, IfExpandService, { provide: LoadingListener, useExisting: IfExpandService }], queries: [{ propertyName: "treeNodeLinkList", predicate: ClrTreeNodeLink }], viewQueries: [{ propertyName: "contentContainer", first: true, predicate: ["contentContainer"], descendants: true, read: ElementRef, static: true }], ngImport: i0, template: "<!--\n ~ Copyright (c) 2016-2021 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n id=\"{{nodeId}}-check\"\n class=\"clr-checkbox\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label for=\"{{nodeId}}-check\" class=\"clr-control-label\"></label>\n </div>\n <div class=\"clr-treenode-content\" (mousedown)=\"focusTreeNode()\">\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable || ariaSelected\">\n <span *ngIf=\"ariaSelected\"> selected</span>\n <span *ngIf=\"!ariaSelected\"> unselected</span>\n </div>\n </div>\n</div>\n<div\n class=\"clr-treenode-children\"\n [@toggleChildrenAnim]=\"expandService.expanded ? 'expanded' : 'collapsed'\"\n [attr.role]=\"isExpandable() && !featuresService.recursion ? 'group' : null\"\n>\n <ng-content select=\"clr-tree-node\"></ng-content>\n <ng-content select=\"[clrIfExpanded]\"></ng-content>\n <clr-recursive-children [parent]=\"_model\"></clr-recursive-children>\n</div>\n", dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.CdsIconCustomTag, selector: "cds-icon" }, { kind: "component", type: i7.RecursiveChildren, selector: "clr-recursive-children", inputs: ["parent", "children"] }], animations: [
269
271
  trigger('toggleChildrenAnim', [
270
272
  transition('collapsed => expanded', [style({ height: 0 }), animate(200, style({ height: '*' }))]),
271
273
  transition('expanded => collapsed', [style({ height: '*' }), animate(200, style({ height: 0 }))]),
@@ -292,11 +294,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
292
294
  type: Optional
293
295
  }, {
294
296
  type: SkipSelf
295
- }] }, { type: i1.ForTypeAheadProvider, decorators: [{
296
- type: Optional
297
- }, {
298
- type: Self
299
- }] }, { type: i2.TreeFeaturesService }, { type: i3.IfExpandService }, { type: i4.ClrCommonStringsService }, { type: i5.TreeFocusManagerService }, { type: i0.Injector }]; }, propDecorators: { selected: [{
297
+ }] }, { type: i1.TreeFeaturesService }, { type: i2.IfExpandService }, { type: i3.ClrCommonStringsService }, { type: i4.TreeFocusManagerService }, { type: i0.ElementRef }, { type: i0.Injector }]; }, propDecorators: { selected: [{
300
298
  type: Input,
301
299
  args: ['clrSelected']
302
300
  }], selectedChange: [{
@@ -308,6 +306,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
308
306
  }], expanded: [{
309
307
  type: Input,
310
308
  args: ['clrExpanded']
309
+ }], clrForTypeAhead: [{
310
+ type: Input,
311
+ args: ['clrForTypeAhead']
311
312
  }], expandedChange: [{
312
313
  type: Output,
313
314
  args: ['clrExpandedChange']
@@ -318,4 +319,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
318
319
  type: ContentChildren,
319
320
  args: [ClrTreeNodeLink, { descendants: false }]
320
321
  }] } });
321
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvZGF0YS90cmVlLXZpZXcvdHJlZS1ub2RlLnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvZGF0YS90cmVlLXZpZXcvdHJlZS1ub2RlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBRU4sS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sV0FBVyxFQUVYLElBQUksRUFDSixRQUFRLEVBQ1IsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHbEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNoRixPQUFP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ZUFBZTt1QkFBQyxlQUFlLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIFZNd2FyZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUExBVEZPUk1fSUQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2VsZixcbiAgU2tpcFNlbGYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBJZkV4cGFuZFNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9jb25kaXRpb25hbC9pZi1leHBhbmRlZC5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUNvZGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvZW51bXMva2V5LWNvZGVzLmVudW0nO1xuaW1wb3J0IHsgaXNLZXlFaXRoZXJMZXR0ZXJPck51bWJlciwga2V5VmFsaWRhdG9yLCBwcmV2ZW50QXJyb3dLZXlTY3JvbGwgfSBmcm9tICcuLi8uLi91dGlscy9mb2N1cy9rZXktZm9jdXMvdXRpbCc7XG5pbXBvcnQgeyBGb3JUeXBlQWhlYWRQcm92aWRlciB9IGZyb20gJy4uLy4uL3V0aWxzL2Zvci10eXBlLWFoZWFkL2Zvci10eXBlLWFoZWFkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9pMThuL2NvbW1vbi1zdHJpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgdW5pcXVlSWRGYWN0b3J5IH0gZnJvbSAnLi4vLi4vdXRpbHMvaWQtZ2VuZXJhdG9yL2lkLWdlbmVyYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IExvYWRpbmdMaXN0ZW5lciB9IGZyb20gJy4uLy4uL3V0aWxzL2xvYWRpbmcvbG9hZGluZy1saXN0ZW5lcic7XG5pbXBvcnQgeyBEZWNsYXJhdGl2ZVRyZWVOb2RlTW9kZWwgfSBmcm9tICcuL21vZGVscy9kZWNsYXJhdGl2ZS10cmVlLW5vZGUubW9kZWwnO1xuaW1wb3J0IHsgQ2xyU2VsZWN0ZWRTdGF0ZSB9IGZyb20gJy4vbW9kZWxzL3NlbGVjdGVkLXN0YXRlLmVudW0nO1xuaW1wb3J0IHsgVHJlZU5vZGVNb2RlbCB9IGZyb20gJy4vbW9kZWxzL3RyZWUtbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyBUUkVFX0ZFQVRVUkVTX1BST1ZJREVSLCBUcmVlRmVhdHVyZXNTZXJ2aWNlIH0gZnJvbSAnLi90cmVlLWZlYXR1cmVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJlZUZvY3VzTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL3RyZWUtZm9jdXMtbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IENsclRyZWVOb2RlTGluayB9IGZyb20gJy4vdHJlZS1ub2RlLWxpbmsnO1xuXG5jb25zdCBMVklFV19DT05URVhUX0lOREVYID0gODtcblxuLy8gSWYgdGhlIHVzZXIgdHlwZXMgbXVsdGlwbGUga2V5cyB3aXRob3V0IGFsbG93aW5nIDIwMG1zIHRvIHBhc3MgYmV0d2VlbiB0aGVtLFxuLy8gdGhlbiB0aG9zZSBrZXlzIGFyZSBzZW50IHRvZ2V0aGVyIGluIG9uZSByZXF1ZXN0LlxuY29uc3QgVFJFRV9UWVBFX0FIRUFEX1RJTUVPVVQgPSAyMDA7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nsci10cmVlLW5vZGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS1ub2RlLmh0bWwnLFxuICBwcm92aWRlcnM6IFtUUkVFX0ZFQVRVUkVTX1BST1ZJREVSLCBJZkV4cGFuZFNlcnZpY2UsIHsgcHJvdmlkZTogTG9hZGluZ0xpc3RlbmVyLCB1c2VFeGlzdGluZzogSWZFeHBhbmRTZXJ2aWNlIH1dLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcigndG9nZ2xlQ2hpbGRyZW5BbmltJywgW1xuICAgICAgdHJhbnNpdGlvbignY29sbGFwc2VkID0+IGV4cGFuZGVkJywgW3N0eWxlKHsgaGVpZ2h0OiAwIH0pLCBhbmltYXRlKDIwMCwgc3R5bGUoeyBoZWlnaHQ6ICcqJyB9KSldKSxcbiAgICAgIHRyYW5zaXRpb24oJ2V4cGFuZGVkID0+IGNvbGxhcHNlZCcsIFtzdHlsZSh7IGhlaWdodDogJyonIH0pLCBhbmltYXRlKDIwMCwgc3R5bGUoeyBoZWlnaHQ6IDAgfSkpXSksXG4gICAgICBzdGF0ZSgnZXhwYW5kZWQnLCBzdHlsZSh7IGhlaWdodDogJyonLCAnb3ZlcmZsb3cteSc6ICd2aXNpYmxlJyB9KSksXG4gICAgICBzdGF0ZSgnY29sbGFwc2VkJywgc3R5bGUoeyBoZWlnaHQ6IDAgfSkpLFxuICAgIF0pLFxuICBdLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5jbHItdHJlZS1ub2RlXSc6ICd0cnVlJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgQ2xyVHJlZU5vZGU8VD4gaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gIFNUQVRFUyA9IENsclNlbGVjdGVkU3RhdGU7XG4gIHByaXZhdGUgc2tpcEVtaXRDaGFuZ2UgPSBmYWxzZTtcbiAgaXNNb2RlbExvYWRpbmcgPSBmYWxzZTtcbiAgbm9kZUlkID0gdW5pcXVlSWRGYWN0b3J5KCk7XG5cbiAgcHJpdmF0ZSB0eXBlQWhlYWRLZXlFdmVudDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIHByaXZhdGUgdHlwZUFoZWFkS2V5QnVmZmVyID0gJyc7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnksXG4gICAgQE9wdGlvbmFsKClcbiAgICBAU2tpcFNlbGYoKVxuICAgIHBhcmVudDogQ2xyVHJlZU5vZGU8VD4sXG4gICAgQE9wdGlvbmFsKCkgQFNlbGYoKSBwcml2YXRlIGZvclR5cGVBaGVhZFByb3ZpZGVyOiBGb3JUeXBlQWhlYWRQcm92aWRlcixcbiAgICBwdWJsaWMgZmVhdHVyZXNTZXJ2aWNlOiBUcmVlRmVhdHVyZXNTZXJ2aWNlPFQ+LFxuICAgIHB1YmxpYyBleHBhbmRTZXJ2aWNlOiBJZkV4cGFuZFNlcnZpY2UsXG4gICAgcHVibGljIGNvbW1vblN0cmluZ3M6IENsckNvbW1vblN0cmluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9jdXNNYW5hZ2VyOiBUcmVlRm9jdXNNYW5hZ2VyU2VydmljZTxUPixcbiAgICBpbmplY3RvcjogSW5qZWN0b3JcbiAgKSB7XG4gICAgaWYgKHRoaXMuZmVhdHVyZXNTZXJ2aWNlLnJlY3Vyc2lvbikge1xuICAgICAgLy8gSSdtIGNvbXBsZXRlbHkgc3R1Y2ssIHdlIGhhdmUgdG8gaGFjayBpbnRvIHByaXZhdGUgcHJvcGVydGllcyB1bnRpbCBlaXRoZXJcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzE0OTM1IG9yIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvaXNzdWVzLzE1OTk4XG4gICAgICAvLyBhcmUgZml4ZWRcbiAgICAgIC8vIFRoaXMgaXMgZm9yIG5vbi1pdnkgaW1wbGVtZW50YXRpb25zXG4gICAgICBpZiAoKGluamVjdG9yIGFzIGFueSkudmlldykge1xuICAgICAgICB0aGlzLl9tb2RlbCA9IChpbmplY3RvciBhcyBhbnkpLnZpZXcuY29udGV4dC5jbHJNb2RlbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEl2eSBwdXRzIHRoaXMgb24gYSBzcGVjaWZpYyBpbmRleCBvZiBhIF9sVmlldyBwcm9wZXJ0eVxuICAgICAgICB0aGlzLl9tb2RlbCA9IChpbmplY3RvciBhcyBhbnkpLl9sVmlld1tMVklFV19DT05URVhUX0lOREVYXS5jbHJNb2RlbDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRm9yY2UgY2FzdCBmb3Igbm93LCBub3Qgc3VyZSBob3cgdG8gdGllIHRoZSBjb3JyZWN0IHR5cGUgaGVyZSB0byBmZWF0dXJlc1NlcnZpY2UucmVjdXJzaW9uXG4gICAgICB0aGlzLl9tb2RlbCA9IG5ldyBEZWNsYXJhdGl2ZVRyZWVOb2RlTW9kZWwocGFyZW50ID8gKHBhcmVudC5fbW9kZWwgYXMgRGVjbGFyYXRpdmVUcmVlTm9kZU1vZGVsPFQ+KSA6IG51bGwpO1xuICAgIH1cbiAgICB0aGlzLl9tb2RlbC5ub2RlSWQgPSB0aGlzLm5vZGVJZDtcbiAgfVxuXG4gIF9tb2RlbDogVHJlZU5vZGVNb2RlbDxUPjtcblxuICBpc0V4cGFuZGFibGUoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmV4cGFuZGFibGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gdGhpcy5leHBhbmRhYmxlO1xuICAgIH1cbiAgICByZXR1cm4gISF0aGlzLmV4cGFuZFNlcnZpY2UuZXhwYW5kYWJsZSB8fCB0aGlzLmlzUGFyZW50O1xuICB9XG5cbiAgaXNTZWxlY3RhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLmZlYXR1cmVzU2VydmljZS5zZWxlY3RhYmxlO1xuICB9XG5cbiAgQElucHV0KCdjbHJTZWxlY3RlZCcpXG4gIGdldCBzZWxlY3RlZCgpOiBDbHJTZWxlY3RlZFN0YXRlIHwgYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX21vZGVsLnNlbGVjdGVkLnZhbHVlO1xuICB9XG4gIHNldCBzZWxlY3RlZCh2YWx1ZTogQ2xyU2VsZWN0ZWRTdGF0ZSB8IGJvb2xlYW4pIHtcbiAgICB0aGlzLmZlYXR1cmVzU2VydmljZS5zZWxlY3RhYmxlID0gdHJ1ZTtcbiAgICAvLyBHcmFjZWZ1bGx5IGhhbmRsZSBmYWxzeSBzdGF0ZXMgbGlrZSBudWxsIG9yIHVuZGVmaW5lZCBiZWNhdXNlIGl0J3MganVzdCBlYXNpZXIgdGhhbiBhbnN3ZXJpbmcgcXVlc3Rpb25zLlxuICAgIC8vIFRoaXMgc2hvdWxkbid0IGhhcHBlbiB3aXRoIHN0cmljdCB0eXBpbmcgb24gdGhlIGFwcCdzIHNpZGUsIGJ1dCBpdCdzIG5vdCB1cCB0byB1cy5cbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdmFsdWUgPSBDbHJTZWxlY3RlZFN0YXRlLlVOU0VMRUNURUQ7XG4gICAgfVxuICAgIC8vIFdlIG1hdGNoIGJvb2xlYW5zIHRvIHRoZSBjb3JyZXNwb25kaW5nIENsclNlbGVjdGVkU3RhdGVcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUgPyBDbHJTZWxlY3RlZFN0YXRlLlNFTEVDVEVEIDogQ2xyU2VsZWN0ZWRTdGF0ZS5VTlNFTEVDVEVEO1xuICAgIH1cbiAgICAvLyBXZSBwcm9wYWdhdGUgb25seSBpZiB0aGUgdHJlZSBpcyBpbiBzbWFydCBtb2RlLCBhbmQgc2tpcCBlbWl0dGluZyB0aGUgb3V0cHV0IHdoZW4gd2Ugc2V0IHRoZSBpbnB1dFxuICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdm13YXJlL2NsYXJpdHkvaXNzdWVzLzMwNzNcbiAgICB0aGlzLnNraXBFbWl0Q2hhbmdlID0gdHJ1ZTtcbiAgICB0aGlzLl9tb2RlbC5zZXRTZWxlY3RlZCh2YWx1ZSwgdGhpcy5mZWF0dXJlc1NlcnZpY2UuZWFnZXIsIHRoaXMuZmVhdHVyZXNTZXJ2aWNlLmVhZ2VyKTtcbiAgICB0aGlzLnNraXBFbWl0Q2hhbmdlID0gZmFsc2U7XG4gIH1cblxuICBAT3V0cHV0KCdjbHJTZWxlY3RlZENoYW5nZScpIHNlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxDbHJTZWxlY3RlZFN0YXRlPihmYWxzZSk7XG5cbiAgZ2V0IGFyaWFTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pc1NlbGVjdGFibGUoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX21vZGVsLnNlbGVjdGVkLnZhbHVlID09PSBDbHJTZWxlY3RlZFN0YXRlLlNFTEVDVEVEO1xuICAgIH0gZWxzZSBpZiAodGhpcy50cmVlTm9kZUxpbms/LmFjdGl2ZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFsbG93cyB0aGUgY29uc3VtZXIgdG8gb3ZlcnJpZGUgb3VyIGxvZ2ljIGRlY2lkaW5nIGlmIGEgbm9kZSBpcyBleHBhbmRhYmxlLlxuICAvLyBVc2VmdWwgZm9yIHJlY3Vyc2l2ZSB0cmVlcyB0aGF0IGRvbid0IHdhbnQgdG8gcHJlLWxvYWQgb25lIGxldmVsIGFoZWFkIGp1c3QgdG8ga25vdyB3aGljaCBub2RlcyBhcmUgZXhwYW5kYWJsZS5cbiAgQElucHV0KCdjbHJFeHBhbmRhYmxlJykgZXhwYW5kYWJsZTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvLyBJJ20gY2F2aW5nIG9uIHRoaXMsIGZvciB0cmVlIG5vZGVzIEkgdGhpbmsgd2UgY2FuIHRvbGVyYXRlIGhhdmluZyBhIHR3by13YXkgYmluZGluZyBvbiB0aGUgY29tcG9uZW50XG4gIC8vIHJhdGhlciB0aGFuIGVuZm9yY2UgdGhlIGNscklmRXhwYW5kZWQgc3RydWN0dXJhbCBkaXJlY3RpdmUgZm9yIGR5bmFtaWMgY2FzZXMuIE1vc3RseSBiZWNhdXNlIGZvciB0aGUgc21hcnRcbiAgLy8gY2FzZSwgeW91IGNhbid0IHVzZSBhIHN0cnVjdHVyYWwgZGlyZWN0aXZlLCBpdCB3b3VsZCBuZWVkIHRvIGdvIG9uIGFuIG5nLWNvbnRhaW5lci5cbiAgQElucHV0KCdjbHJFeHBhbmRlZCcpXG4gIGdldCBleHBhbmRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFuZGVkO1xuICB9XG4gIHNldCBleHBhbmRlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuZXhwYW5kU2VydmljZS5leHBhbmRlZCA9IHZhbHVlO1xuICB9XG5cbiAgQE91dHB1dCgnY2xyRXhwYW5kZWRDaGFuZ2UnKSBleHBhbmRlZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG5cbiAgY29udGVudENvbnRhaW5lclRhYmluZGV4ID0gLTE7XG4gIEBWaWV3Q2hpbGQoJ2NvbnRlbnRDb250YWluZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICBwcml2YXRlIGNvbnRlbnRDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fbW9kZWwuZXhwYW5kZWQgPSB0aGlzLmV4cGFuZGVkO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5fbW9kZWwuc2VsZWN0ZWQucGlwZShmaWx0ZXIoKCkgPT4gIXRoaXMuc2tpcEVtaXRDaGFuZ2UpKS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFuZENoYW5nZS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICB0aGlzLmV4cGFuZGVkQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgICAgICB0aGlzLl9tb2RlbC5leHBhbmRlZCA9IHZhbHVlO1xuICAgICAgfSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5mb2N1c01hbmFnZXIuZm9jdXNSZXF1ZXN0LnN1YnNjcmliZShub2RlSWQgPT4ge1xuICAgICAgICBpZiAodGhpcy5ub2RlSWQgPT09IG5vZGVJZCkge1xuICAgICAgICAgIHRoaXMuZm9jdXNUcmVlTm9kZSgpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHRoaXMuZm9jdXNNYW5hZ2VyLmZvY3VzQ2hhbmdlLnN1YnNjcmliZShub2RlSWQgPT4ge1xuICAgICAgICB0aGlzLmNoZWNrVGFiSW5kZXgobm9kZUlkKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5fbW9kZWwubG9hZGluZyQucGlwZShkZWJvdW5jZVRpbWUoMCkpLnN1YnNjcmliZShpc0xvYWRpbmcgPT4gKHRoaXMuaXNNb2RlbExvYWRpbmcgPSBpc0xvYWRpbmcpKVxuICAgICk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgaWYgKHRoaXMuZm9yVHlwZUFoZWFkUHJvdmlkZXIpIHtcbiAgICAgIHRoaXMuX21vZGVsLnRleHRDb250ZW50ID0gdGhpcy5mb3JUeXBlQWhlYWRQcm92aWRlci50ZXh0Q29udGVudDtcblxuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICAgIHRoaXMudHlwZUFoZWFkS2V5RXZlbnQucGlwZShkZWJvdW5jZVRpbWUoVFJFRV9UWVBFX0FIRUFEX1RJTUVPVVQpKS5zdWJzY3JpYmUoKGJ1ZmZlcmVkS2V5czogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgdGhpcy5mb2N1c01hbmFnZXIuZm9jdXNOb2RlU3RhcnRzV2l0aChidWZmZXJlZEtleXMsIHRoaXMuX21vZGVsKTtcbiAgICAgICAgICAvLyByZXNldCBvbmNlIGJ1ZmZlcmVkS2V5cyBhcmUgdXNlZFxuICAgICAgICAgIHRoaXMudHlwZUFoZWFkS2V5QnVmZmVyID0gJyc7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX21vZGVsLmRlc3Ryb3koKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgLy8gQENvbnRlbnRDaGlsZCB3b3VsZCBoYXZlIGJlZW4gbW9yZSBzdWNjaW5jdFxuICAvLyBidXQgaXQgZG9lc24ndCBvZmZlciBhIHdheSB0byBxdWVyeSBvbmx5IGFuIGltbWVkaWF0ZSBjaGlsZFxuICBAQ29udGVudENoaWxkcmVuKENsclRyZWVOb2RlTGluaywgeyBkZXNjZW5kYW50czogZmFsc2UgfSlcbiAgcHJpdmF0ZSB0cmVlTm9kZUxpbmtMaXN0OiBRdWVyeUxpc3Q8Q2xyVHJlZU5vZGVMaW5rPjtcblxuICBnZXQgdHJlZU5vZGVMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLnRyZWVOb2RlTGlua0xpc3QgJiYgdGhpcy50cmVlTm9kZUxpbmtMaXN0LmZpcnN0O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRUYWJJbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5jb250ZW50Q29udGFpbmVyVGFiaW5kZXggPSB2YWx1ZTtcbiAgICB0aGlzLmNvbnRlbnRDb250YWluZXIubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgdmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1RhYkluZGV4KG5vZGVJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgJiYgdGhpcy5ub2RlSWQgIT09IG5vZGVJZCAmJiB0aGlzLmNvbnRlbnRDb250YWluZXJUYWJpbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuc2V0VGFiSW5kZXgoLTEpO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzVHJlZU5vZGUoKTogdm9pZCB7XG4gICAgY29uc3QgY29udGFpbmVyRWwgPSB0aGlzLmNvbnRlbnRDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSBjb250YWluZXJFbCkge1xuICAgICAgdGhpcy5zZXRUYWJJbmRleCgwKTtcbiAgICAgIGNvbnRhaW5lckVsLmZvY3VzKCk7XG4gICAgICBjb250YWluZXJFbC5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnbmVhcmVzdCcsIGlubGluZTogJ25lYXJlc3QnIH0pO1xuICAgIH1cbiAgfVxuXG4gIGJyb2FkY2FzdEZvY3VzT25Db250YWluZXIoKSB7XG4gICAgdGhpcy5mb2N1c01hbmFnZXIuYnJvYWRjYXN0Rm9jdXNlZE5vZGUodGhpcy5ub2RlSWQpO1xuICB9XG5cbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgLy8gVHdvIHJlYXNvbnMgdG8gcHJldmVudCBkZWZhdWx0IGJlaGF2aW9yOlxuICAgIC8vIDEuIHRvIHByZXZlbnQgc2Nyb2xsaW5nIG9uIGFycm93IGtleXNcbiAgICAvLyAyLiBBc3Npc3RpdmUgVGVjaG5vbG9neSBmb2N1cyBkaWZmZXJzIGZyb20gS2V5Ym9hcmQgZm9jdXMgYmVoYXZpb3IuXG4gICAgLy8gICAgQnkgZGVmYXVsdCwgcHJlc3NpbmcgYXJyb3cga2V5IG1ha2VzIEFUIGZvY3VzIGdvIGludG8gdGhlIG5lc3RlZCBjb250ZW50IG9mIHRoZSBpdGVtLlxuICAgIHByZXZlbnRBcnJvd0tleVNjcm9sbChldmVudCk7XG5cbiAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtcHJhY3RpY2VzLTEuMS8ja2V5Ym9hcmQtaW50ZXJhY3Rpb24tMjJcbiAgICBzd2l0Y2ggKGtleVZhbGlkYXRvcihldmVudC5rZXkpKSB7XG4gICAgICBjYXNlIEtleUNvZGVzLkFycm93VXA6XG4gICAgICAgIHRoaXMuZm9jdXNNYW5hZ2VyLmZvY3VzTm9kZUFib3ZlKHRoaXMuX21vZGVsKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEtleUNvZGVzLkFycm93RG93bjpcbiAgICAgICAgdGhpcy5mb2N1c01hbmFnZXIuZm9jdXNOb2RlQmVsb3codGhpcy5fbW9kZWwpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgS2V5Q29kZXMuQXJyb3dSaWdodDpcbiAgICAgICAgdGhpcy5leHBhbmRPckZvY3VzRmlyc3RDaGlsZCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgS2V5Q29kZXMuQXJyb3dMZWZ0OlxuICAgICAgICB0aGlzLmNvbGxhcHNlT3JGb2N1c1BhcmVudCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgS2V5Q29kZXMuSG9tZTpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5mb2N1c01hbmFnZXIuZm9jdXNGaXJzdFZpc2libGVOb2RlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBLZXlDb2Rlcy5FbmQ6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuZm9jdXNNYW5hZ2VyLmZvY3VzTGFzdFZpc2libGVOb2RlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBLZXlDb2Rlcy5FbnRlcjpcbiAgICAgICAgdGhpcy50b2dnbGVFeHBhbmRPclRyaWdnZXJEZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBLZXlDb2Rlcy5TcGFjZTpcbiAgICAgIGNhc2UgS2V5Q29kZXMuU3BhY2ViYXI6XG4gICAgICAgIC8vIHRvIHByZXZlbnQgc2Nyb2xsaW5nIG9uIHNwYWNlIGtleSBpbiB0aGlzIHNwZWNpZmljIGNhc2VcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy50b2dnbGVFeHBhbmRPclRyaWdnZXJEZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKHRoaXMuX21vZGVsLnRleHRDb250ZW50ICYmIGlzS2V5RWl0aGVyTGV0dGVyT3JOdW1iZXIoZXZlbnQpKSB7XG4gICAgICAgICAgdGhpcy50eXBlQWhlYWRLZXlCdWZmZXIgKz0gZXZlbnQua2V5O1xuICAgICAgICAgIHRoaXMudHlwZUFoZWFkS2V5RXZlbnQubmV4dCh0aGlzLnR5cGVBaGVhZEtleUJ1ZmZlcik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIGlmIG5vbi1sZXR0ZXIga2V5cyBhcmUgcHJlc3NlZCwgZG8gcmVzZXQuXG4gICAgdGhpcy50eXBlQWhlYWRLZXlCdWZmZXIgPSAnJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGlzUGFyZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9tb2RlbC5jaGlsZHJlbiAmJiB0aGlzLl9tb2RlbC5jaGlsZHJlbi5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVFeHBhbmRPclRyaWdnZXJEZWZhdWx0KCkge1xuICAgIGlmICh0aGlzLmlzRXhwYW5kYWJsZSgpICYmICF0aGlzLmlzU2VsZWN0YWJsZSgpKSB7XG4gICAgICB0aGlzLmV4cGFuZFNlcnZpY2UuZXhwYW5kZWQgPSAhdGhpcy5leHBhbmRlZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50cmlnZ2VyRGVmYXVsdEFjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZXhwYW5kT3JGb2N1c0ZpcnN0Q2hpbGQoKSB7XG4gICAgaWYgKHRoaXMuZXhwYW5kZWQpIHtcbiAgICAgIC8vIGlmIHRoZSBub2RlIGlzIGFscmVhZHkgZXhwYW5kZWQgYW5kIGhhcyBjaGlsZHJlbiwgZm9jdXMgaXRzIHZlcnkgZmlyc3QgY2hpbGRcbiAgICAgIGlmICh0aGlzLmlzUGFyZW50KSB7XG4gICAgICAgIHRoaXMuZm9jdXNNYW5hZ2VyLmZvY3VzTm9kZUJlbG93KHRoaXMuX21vZGVsKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gd2UgbXVzdCBjaGVjayBpZiB0aGUgbm9kZSBpcyBleHBhbmRhYmxlLCBpbiBvcmRlciB0byBzZXQgLmV4cGFuZGVkIHRvIHRydWUgZnJvbSBmYWxzZVxuICAgICAgLy8gYmVjYXVzZSB3ZSBzaG91bGRuJ3Qgc2V0IC5leHBhbmRlZCB0byB0cnVlIGlmIGl0J3Mgbm90IGV4cGFuZGFibGUgbm9kZVxuICAgICAgaWYgKHRoaXMuaXNFeHBhbmRhYmxlKCkpIHtcbiAgICAgICAgdGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbGxhcHNlT3JGb2N1c1BhcmVudCgpIHtcbiAgICBpZiAodGhpcy5leHBhbmRlZCkge1xuICAgICAgdGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFuZGVkID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNNYW5hZ2VyLmZvY3VzUGFyZW50KHRoaXMuX21vZGVsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRyaWdnZXJEZWZhdWx0QWN0aW9uKCkge1xuICAgIGlmICh0aGlzLnRyZWVOb2RlTGluaykge1xuICAgICAgdGhpcy50cmVlTm9kZUxpbmsuYWN0aXZhdGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuaXNTZWxlY3RhYmxlKCkpIHtcbiAgICAgICAgdGhpcy5fbW9kZWwudG9nZ2xlU2VsZWN0aW9uKHRoaXMuZmVhdHVyZXNTZXJ2aWNlLmVhZ2VyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMSBWTXdhcmUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAgfiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICB+IFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAgLS0+XG5cbjxkaXZcbiAgI2NvbnRlbnRDb250YWluZXJcbiAgcm9sZT1cInRyZWVpdGVtXCJcbiAgY2xhc3M9XCJjbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVyXCJcbiAgdGFiaW5kZXg9XCItMVwiXG4gIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNFeHBhbmRhYmxlKCkgPyBleHBhbmRlZCA6IG51bGxcIlxuICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImFyaWFTZWxlY3RlZFwiXG4gIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgKGZvY3VzKT1cImJyb2FkY2FzdEZvY3VzT25Db250YWluZXIoKVwiXG4+XG4gIDxidXR0b25cbiAgICAqbmdJZj1cImlzRXhwYW5kYWJsZSgpICYmICFpc01vZGVsTG9hZGluZyAmJiAhZXhwYW5kU2VydmljZS5sb2FkaW5nXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIGNsYXNzPVwiY2xyLXRyZWVub2RlLWNhcmV0XCJcbiAgICAoY2xpY2spPVwiZXhwYW5kU2VydmljZS50b2dnbGUoKTtcIlxuICAgIChmb2N1cyk9XCJmb2N1c1RyZWVOb2RlKClcIlxuICA+XG4gICAgPGNkcy1pY29uXG4gICAgICBjbGFzcz1cImNsci10cmVlbm9kZS1jYXJldC1pY29uXCJcbiAgICAgIHNoYXBlPVwiYW5nbGVcIlxuICAgICAgW2F0dHIuZGlyZWN0aW9uXT1cImV4cGFuZFNlcnZpY2UuZXhwYW5kZWQgPyAnZG93bicgOiAncmlnaHQnXCJcbiAgICA+PC9jZHMtaWNvbj5cbiAgPC9idXR0b24+XG4gIDxkaXYgY2xhc3M9XCJjbHItdHJlZW5vZGUtc3Bpbm5lci1jb250YWluZXJcIiAqbmdJZj1cImV4cGFuZFNlcnZpY2UubG9hZGluZyB8fCBpc01vZGVsTG9hZGluZ1wiPlxuICAgIDxzcGFuIGNsYXNzPVwiY2xyLXRyZWVub2RlLXNwaW5uZXIgc3Bpbm5lclwiPjwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjbHItY2hlY2tib3gtd3JhcHBlciBjbHItdHJlZW5vZGUtY2hlY2tib3hcIiAqbmdJZj1cImZlYXR1cmVzU2VydmljZS5zZWxlY3RhYmxlXCI+XG4gICAgPGlucHV0XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgIGlkPVwie3tub2RlSWR9fS1jaGVja1wiXG4gICAgICBjbGFzcz1cImNsci1jaGVja2JveFwiXG4gICAgICBbY2hlY2tlZF09XCJfbW9kZWwuc2VsZWN0ZWQudmFsdWUgPT09IFNUQVRFUy5TRUxFQ1RFRFwiXG4gICAgICBbaW5kZXRlcm1pbmF0ZV09XCJfbW9kZWwuc2VsZWN0ZWQudmFsdWUgPT09IFNUQVRFUy5JTkRFVEVSTUlOQVRFXCJcbiAgICAgIChjaGFuZ2UpPVwiX21vZGVsLnRvZ2dsZVNlbGVjdGlvbihmZWF0dXJlc1NlcnZpY2UuZWFnZXIpXCJcbiAgICAgIChmb2N1cyk9XCJmb2N1c1RyZWVOb2RlKClcIlxuICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgLz5cbiAgICA8bGFiZWwgZm9yPVwie3tub2RlSWR9fS1jaGVja1wiIGNsYXNzPVwiY2xyLWNvbnRyb2wtbGFiZWxcIj48L2xhYmVsPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNsci10cmVlbm9kZS1jb250ZW50XCIgKG1vdXNlZG93bik9XCJmb2N1c1RyZWVOb2RlKClcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPGRpdiBjbGFzcz1cImNsci1zci1vbmx5XCIgKm5nSWY9XCJmZWF0dXJlc1NlcnZpY2Uuc2VsZWN0YWJsZSB8fCBhcmlhU2VsZWN0ZWRcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiYXJpYVNlbGVjdGVkXCI+IHNlbGVjdGVkPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCIhYXJpYVNlbGVjdGVkXCI+IHVuc2VsZWN0ZWQ8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2XG4gIGNsYXNzPVwiY2xyLXRyZWVub2RlLWNoaWxkcmVuXCJcbiAgW0B0b2dnbGVDaGlsZHJlbkFuaW1dPVwiZXhwYW5kU2VydmljZS5leHBhbmRlZCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJ1wiXG4gIFthdHRyLnJvbGVdPVwiaXNFeHBhbmRhYmxlKCkgJiYgIWZlYXR1cmVzU2VydmljZS5yZWN1cnNpb24gPyAnZ3JvdXAnIDogbnVsbFwiXG4+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci10cmVlLW5vZGVcIj48L25nLWNvbnRlbnQ+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIltjbHJJZkV4cGFuZGVkXVwiPjwvbmctY29udGVudD5cbiAgPGNsci1yZWN1cnNpdmUtY2hpbGRyZW4gW3BhcmVudF09XCJfbW9kZWxcIj48L2Nsci1yZWN1cnNpdmUtY2hpbGRyZW4+XG48L2Rpdj5cbiJdfQ==
322
+ function trimAndLowerCase(value) {
323
+ return value.toLocaleLowerCase().trim();
324
+ }
325
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1ub2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvZGF0YS90cmVlLXZpZXcvdHJlZS1ub2RlLnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvZGF0YS90cmVlLXZpZXcvdHJlZS1ub2RlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUVMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBRU4sS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBQ04sV0FBVyxFQUVYLFFBQVEsRUFDUixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzVELE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxZQUFZLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUVsSCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxnQkFB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QURsQixLQUFLO3VCQUFDLGlCQUFpQjtnQkFLSyxjQUFjO3NCQUExQyxNQUFNO3VCQUFDLG1CQUFtQjtnQkFNbkIsZ0JBQWdCO3NCQUR2QixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQXNEekQsZ0JBQWdCO3NCQUR2QixlQUFlO3VCQUFDLGVBQWUsRUFBRSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUU7O0FBZ0kxRCxTQUFTLGdCQUFnQixDQUFDLEtBQWE7SUFDckMsT0FBTyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUMxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIFZNd2FyZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBhbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUExBVEZPUk1fSUQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2tpcFNlbGYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBJZkV4cGFuZFNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9jb25kaXRpb25hbC9pZi1leHBhbmRlZC5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUNvZGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvZW51bXMva2V5LWNvZGVzLmVudW0nO1xuaW1wb3J0IHsgaXNLZXlFaXRoZXJMZXR0ZXJPck51bWJlciwga2V5VmFsaWRhdG9yLCBwcmV2ZW50QXJyb3dLZXlTY3JvbGwgfSBmcm9tICcuLi8uLi91dGlscy9mb2N1cy9rZXktZm9jdXMvdXRpbCc7XG5pbXBvcnQgeyBDbHJDb21tb25TdHJpbmdzU2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL2kxOG4vY29tbW9uLXN0cmluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyB1bmlxdWVJZEZhY3RvcnkgfSBmcm9tICcuLi8uLi91dGlscy9pZC1nZW5lcmF0b3IvaWQtZ2VuZXJhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9hZGluZ0xpc3RlbmVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9hZGluZy9sb2FkaW5nLWxpc3RlbmVyJztcbmltcG9ydCB7IERlY2xhcmF0aXZlVHJlZU5vZGVNb2RlbCB9IGZyb20gJy4vbW9kZWxzL2RlY2xhcmF0aXZlLXRyZWUtbm9kZS5tb2RlbCc7XG5pbXBvcnQgeyBDbHJTZWxlY3RlZFN0YXRlIH0gZnJvbSAnLi9tb2RlbHMvc2VsZWN0ZWQtc3RhdGUuZW51bSc7XG5pbXBvcnQgeyBUcmVlTm9kZU1vZGVsIH0gZnJvbSAnLi9tb2RlbHMvdHJlZS1ub2RlLm1vZGVsJztcbmltcG9ydCB7IFRSRUVfRkVBVFVSRVNfUFJPVklERVIsIFRyZWVGZWF0dXJlc1NlcnZpY2UgfSBmcm9tICcuL3RyZWUtZmVhdHVyZXMuc2VydmljZSc7XG5pbXBvcnQgeyBUcmVlRm9jdXNNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4vdHJlZS1mb2N1cy1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xyVHJlZU5vZGVMaW5rIH0gZnJvbSAnLi90cmVlLW5vZGUtbGluayc7XG5cbmNvbnN0IExWSUVXX0NPTlRFWFRfSU5ERVggPSA4O1xuXG4vLyBJZiB0aGUgdXNlciB0eXBlcyBtdWx0aXBsZSBrZXlzIHdpdGhvdXQgYWxsb3dpbmcgMjAwbXMgdG8gcGFzcyBiZXR3ZWVuIHRoZW0sXG4vLyB0aGVuIHRob3NlIGtleXMgYXJlIHNlbnQgdG9nZXRoZXIgaW4gb25lIHJlcXVlc3QuXG5jb25zdCBUUkVFX1RZUEVfQUhFQURfVElNRU9VVCA9IDIwMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2xyLXRyZWUtbm9kZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90cmVlLW5vZGUuaHRtbCcsXG4gIHByb3ZpZGVyczogW1RSRUVfRkVBVFVSRVNfUFJPVklERVIsIElmRXhwYW5kU2VydmljZSwgeyBwcm92aWRlOiBMb2FkaW5nTGlzdGVuZXIsIHVzZUV4aXN0aW5nOiBJZkV4cGFuZFNlcnZpY2UgfV0sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCd0b2dnbGVDaGlsZHJlbkFuaW0nLCBbXG4gICAgICB0cmFuc2l0aW9uKCdjb2xsYXBzZWQgPT4gZXhwYW5kZWQnLCBbc3R5bGUoeyBoZWlnaHQ6IDAgfSksIGFuaW1hdGUoMjAwLCBzdHlsZSh7IGhlaWdodDogJyonIH0pKV0pLFxuICAgICAgdHJhbnNpdGlvbignZXhwYW5kZWQgPT4gY29sbGFwc2VkJywgW3N0eWxlKHsgaGVpZ2h0OiAnKicgfSksIGFuaW1hdGUoMjAwLCBzdHlsZSh7IGhlaWdodDogMCB9KSldKSxcbiAgICAgIHN0YXRlKCdleHBhbmRlZCcsIHN0eWxlKHsgaGVpZ2h0OiAnKicsICdvdmVyZmxvdy15JzogJ3Zpc2libGUnIH0pKSxcbiAgICAgIHN0YXRlKCdjb2xsYXBzZWQnLCBzdHlsZSh7IGhlaWdodDogMCB9KSksXG4gICAgXSksXG4gIF0sXG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLmNsci10cmVlLW5vZGVdJzogJ3RydWUnLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBDbHJUcmVlTm9kZTxUPiBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgU1RBVEVTID0gQ2xyU2VsZWN0ZWRTdGF0ZTtcbiAgcHJpdmF0ZSBza2lwRW1pdENoYW5nZSA9IGZhbHNlO1xuICBpc01vZGVsTG9hZGluZyA9IGZhbHNlO1xuICBub2RlSWQgPSB1bmlxdWVJZEZhY3RvcnkoKTtcblxuICBwcml2YXRlIHR5cGVBaGVhZEtleUV2ZW50OiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgcHJpdmF0ZSB0eXBlQWhlYWRLZXlCdWZmZXIgPSAnJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueSxcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBTa2lwU2VsZigpXG4gICAgcGFyZW50OiBDbHJUcmVlTm9kZTxUPixcbiAgICBwdWJsaWMgZmVhdHVyZXNTZXJ2aWNlOiBUcmVlRmVhdHVyZXNTZXJ2aWNlPFQ+LFxuICAgIHB1YmxpYyBleHBhbmRTZXJ2aWNlOiBJZkV4cGFuZFNlcnZpY2UsXG4gICAgcHVibGljIGNvbW1vblN0cmluZ3M6IENsckNvbW1vblN0cmluZ3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9jdXNNYW5hZ2VyOiBUcmVlRm9jdXNNYW5hZ2VyU2VydmljZTxUPixcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIGluamVjdG9yOiBJbmplY3RvclxuICApIHtcbiAgICBpZiAodGhpcy5mZWF0dXJlc1NlcnZpY2UucmVjdXJzaW9uKSB7XG4gICAgICAvLyBJJ20gY29tcGxldGVseSBzdHVjaywgd2UgaGF2ZSB0byBoYWNrIGludG8gcHJpdmF0ZSBwcm9wZXJ0aWVzIHVudGlsIGVpdGhlclxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTQ5MzUgb3IgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTU5OThcbiAgICAgIC8vIGFyZSBmaXhlZFxuICAgICAgLy8gVGhpcyBpcyBmb3Igbm9uLWl2eSBpbXBsZW1lbnRhdGlvbnNcbiAgICAgIGlmICgoaW5qZWN0b3IgYXMgYW55KS52aWV3KSB7XG4gICAgICAgIHRoaXMuX21vZGVsID0gKGluamVjdG9yIGFzIGFueSkudmlldy5jb250ZXh0LmNsck1vZGVsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSXZ5IHB1dHMgdGhpcyBvbiBhIHNwZWNpZmljIGluZGV4IG9mIGEgX2xWaWV3IHByb3BlcnR5XG4gICAgICAgIHRoaXMuX21vZGVsID0gKGluamVjdG9yIGFzIGFueSkuX2xWaWV3W0xWSUVXX0NPTlRFWFRfSU5ERVhdLmNsck1vZGVsO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGb3JjZSBjYXN0IGZvciBub3csIG5vdCBzdXJlIGhvdyB0byB0aWUgdGhlIGNvcnJlY3QgdHlwZSBoZXJlIHRvIGZlYXR1cmVzU2VydmljZS5yZWN1cnNpb25cbiAgICAgIHRoaXMuX21vZGVsID0gbmV3IERlY2xhcmF0aXZlVHJlZU5vZGVNb2RlbChwYXJlbnQgPyAocGFyZW50Ll9tb2RlbCBhcyBEZWNsYXJhdGl2ZVRyZWVOb2RlTW9kZWw8VD4pIDogbnVsbCk7XG4gICAgfVxuICAgIHRoaXMuX21vZGVsLm5vZGVJZCA9IHRoaXMubm9kZUlkO1xuICB9XG5cbiAgX21vZGVsOiBUcmVlTm9kZU1vZGVsPFQ+O1xuXG4gIGlzRXhwYW5kYWJsZSgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuZXhwYW5kYWJsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmV4cGFuZGFibGU7XG4gICAgfVxuICAgIHJldHVybiAhIXRoaXMuZXhwYW5kU2VydmljZS5leHBhbmRhYmxlIHx8IHRoaXMuaXNQYXJlbnQ7XG4gIH1cblxuICBpc1NlbGVjdGFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmVhdHVyZXNTZXJ2aWNlLnNlbGVjdGFibGU7XG4gIH1cblxuICBASW5wdXQoJ2NsclNlbGVjdGVkJylcbiAgZ2V0IHNlbGVjdGVkKCk6IENsclNlbGVjdGVkU3RhdGUgfCBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbW9kZWwuc2VsZWN0ZWQudmFsdWU7XG4gIH1cbiAgc2V0IHNlbGVjdGVkKHZhbHVlOiBDbHJTZWxlY3RlZFN0YXRlIHwgYm9vbGVhbikge1xuICAgIHRoaXMuZmVhdHVyZXNTZXJ2aWNlLnNlbGVjdGFibGUgPSB0cnVlO1xuICAgIC8vIEdyYWNlZnVsbHkgaGFuZGxlIGZhbHN5IHN0YXRlcyBsaWtlIG51bGwgb3IgdW5kZWZpbmVkIGJlY2F1c2UgaXQncyBqdXN0IGVhc2llciB0aGFuIGFuc3dlcmluZyBxdWVzdGlvbnMuXG4gICAgLy8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuIHdpdGggc3RyaWN0IHR5cGluZyBvbiB0aGUgYXBwJ3Mgc2lkZSwgYnV0IGl0J3Mgbm90IHVwIHRvIHVzLlxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB2YWx1ZSA9IENsclNlbGVjdGVkU3RhdGUuVU5TRUxFQ1RFRDtcbiAgICB9XG4gICAgLy8gV2UgbWF0Y2ggYm9vbGVhbnMgdG8gdGhlIGNvcnJlc3BvbmRpbmcgQ2xyU2VsZWN0ZWRTdGF0ZVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgdmFsdWUgPSB2YWx1ZSA/IENsclNlbGVjdGVkU3RhdGUuU0VMRUNURUQgOiBDbHJTZWxlY3RlZFN0YXRlLlVOU0VMRUNURUQ7XG4gICAgfVxuICAgIC8vIFdlIHByb3BhZ2F0ZSBvbmx5IGlmIHRoZSB0cmVlIGlzIGluIHNtYXJ0IG1vZGUsIGFuZCBza2lwIGVtaXR0aW5nIHRoZSBvdXRwdXQgd2hlbiB3ZSBzZXQgdGhlIGlucHV0XG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS92bXdhcmUvY2xhcml0eS9pc3N1ZXMvMzA3M1xuICAgIHRoaXMuc2tpcEVtaXRDaGFuZ2UgPSB0cnVlO1xuICAgIHRoaXMuX21vZGVsLnNldFNlbGVjdGVkKHZhbHVlLCB0aGlzLmZlYXR1cmVzU2VydmljZS5lYWdlciwgdGhpcy5mZWF0dXJlc1NlcnZpY2UuZWFnZXIpO1xuICAgIHRoaXMuc2tpcEVtaXRDaGFuZ2UgPSBmYWxzZTtcbiAgfVxuXG4gIEBPdXRwdXQoJ2NsclNlbGVjdGVkQ2hhbmdlJykgc2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPENsclNlbGVjdGVkU3RhdGU+KGZhbHNlKTtcblxuICBnZXQgYXJpYVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmlzU2VsZWN0YWJsZSgpKSB7XG4gICAgICByZXR1cm4gdGhpcy5fbW9kZWwuc2VsZWN0ZWQudmFsdWUgPT09IENsclNlbGVjdGVkU3RhdGUuU0VMRUNURUQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLnRyZWVOb2RlTGluaz8uYWN0aXZlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgLy8gQWxsb3dzIHRoZSBjb25zdW1lciB0byBvdmVycmlkZSBvdXIgbG9naWMgZGVjaWRpbmcgaWYgYSBub2RlIGlzIGV4cGFuZGFibGUuXG4gIC8vIFVzZWZ1bCBmb3IgcmVjdXJzaXZlIHRyZWVzIHRoYXQgZG9uJ3Qgd2FudCB0byBwcmUtbG9hZCBvbmUgbGV2ZWwgYWhlYWQganVzdCB0byBrbm93IHdoaWNoIG5vZGVzIGFyZSBleHBhbmRhYmxlLlxuICBASW5wdXQoJ2NsckV4cGFuZGFibGUnKSBleHBhbmRhYmxlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIC8vIEknbSBjYXZpbmcgb24gdGhpcywgZm9yIHRyZWUgbm9kZXMgSSB0aGluayB3ZSBjYW4gdG9sZXJhdGUgaGF2aW5nIGEgdHdvLXdheSBiaW5kaW5nIG9uIHRoZSBjb21wb25lbnRcbiAgLy8gcmF0aGVyIHRoYW4gZW5mb3JjZSB0aGUgY2xySWZFeHBhbmRlZCBzdHJ1Y3R1cmFsIGRpcmVjdGl2ZSBmb3IgZHluYW1pYyBjYXNlcy4gTW9zdGx5IGJlY2F1c2UgZm9yIHRoZSBzbWFydFxuICAvLyBjYXNlLCB5b3UgY2FuJ3QgdXNlIGEgc3RydWN0dXJhbCBkaXJlY3RpdmUsIGl0IHdvdWxkIG5lZWQgdG8gZ28gb24gYW4gbmctY29udGFpbmVyLlxuICBASW5wdXQoJ2NsckV4cGFuZGVkJylcbiAgZ2V0IGV4cGFuZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmV4cGFuZFNlcnZpY2UuZXhwYW5kZWQ7XG4gIH1cbiAgc2V0IGV4cGFuZGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFuZGVkID0gdmFsdWU7XG4gIH1cblxuICBASW5wdXQoJ2NsckZvclR5cGVBaGVhZCcpXG4gIHNldCBjbHJGb3JUeXBlQWhlYWQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX21vZGVsLnRleHRDb250ZW50ID0gdHJpbUFuZExvd2VyQ2FzZSh2YWx1ZSB8fCB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC50ZXh0Q29udGVudCk7XG4gIH1cblxuICBAT3V0cHV0KCdjbHJFeHBhbmRlZENoYW5nZScpIGV4cGFuZGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBjb250ZW50Q29udGFpbmVyVGFiaW5kZXggPSAtMTtcbiAgQFZpZXdDaGlsZCgnY29udGVudENvbnRhaW5lcicsIHsgcmVhZDogRWxlbWVudFJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIHByaXZhdGUgY29udGVudENvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl9tb2RlbC5leHBhbmRlZCA9IHRoaXMuZXhwYW5kZWQ7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLl9tb2RlbC5zZWxlY3RlZC5waXBlKGZpbHRlcigoKSA9PiAhdGhpcy5za2lwRW1pdENoYW5nZSkpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmV4cGFuZFNlcnZpY2UuZXhwYW5kQ2hhbmdlLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIHRoaXMuZXhwYW5kZWRDaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gICAgICAgIHRoaXMuX21vZGVsLmV4cGFuZGVkID0gdmFsdWU7XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmZvY3VzTWFuYWdlci5mb2N1c1JlcXVlc3Quc3Vic2NyaWJlKG5vZGVJZCA9PiB7XG4gICAgICAgIGlmICh0aGlzLm5vZGVJZCA9PT0gbm9kZUlkKSB7XG4gICAgICAgICAgdGhpcy5mb2N1c1RyZWVOb2RlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgICAgdGhpcy5mb2N1c01hbmFnZXIuZm9jdXNDaGFuZ2Uuc3Vic2NyaWJlKG5vZGVJZCA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tUYWJJbmRleChub2RlSWQpO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLl9tb2RlbC5sb2FkaW5nJC5waXBlKGRlYm91bmNlVGltZSgwKSkuc3Vic2NyaWJlKGlzTG9hZGluZyA9PiAodGhpcy5pc01vZGVsTG9hZGluZyA9IGlzTG9hZGluZykpXG4gICAgKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuX21vZGVsLnRleHRDb250ZW50KSB7XG4gICAgICB0aGlzLl9tb2RlbC50ZXh0Q29udGVudCA9IHRyaW1BbmRMb3dlckNhc2UodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudGV4dENvbnRlbnQpO1xuICAgIH1cblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy50eXBlQWhlYWRLZXlFdmVudC5waXBlKGRlYm91bmNlVGltZShUUkVFX1RZUEVfQUhFQURfVElNRU9VVCkpLnN1YnNjcmliZSgoYnVmZmVyZWRLZXlzOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5mb2N1c01hbmFnZXIuZm9jdXNOb2RlU3RhcnRzV2l0aChidWZmZXJlZEtleXMsIHRoaXMuX21vZGVsKTtcbiAgICAgICAgLy8gcmVzZXQgb25jZSBidWZmZXJlZEtleXMgYXJlIHVzZWRcbiAgICAgICAgdGhpcy50eXBlQWhlYWRLZXlCdWZmZXIgPSAnJztcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX21vZGVsLmRlc3Ryb3koKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgLy8gQENvbnRlbnRDaGlsZCB3b3VsZCBoYXZlIGJlZW4gbW9yZSBzdWNjaW5jdFxuICAvLyBidXQgaXQgZG9lc24ndCBvZmZlciBhIHdheSB0byBxdWVyeSBvbmx5IGFuIGltbWVkaWF0ZSBjaGlsZFxuICBAQ29udGVudENoaWxkcmVuKENsclRyZWVOb2RlTGluaywgeyBkZXNjZW5kYW50czogZmFsc2UgfSlcbiAgcHJpdmF0ZSB0cmVlTm9kZUxpbmtMaXN0OiBRdWVyeUxpc3Q8Q2xyVHJlZU5vZGVMaW5rPjtcblxuICBnZXQgdHJlZU5vZGVMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLnRyZWVOb2RlTGlua0xpc3QgJiYgdGhpcy50cmVlTm9kZUxpbmtMaXN0LmZpcnN0O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRUYWJJbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5jb250ZW50Q29udGFpbmVyVGFiaW5kZXggPSB2YWx1ZTtcbiAgICB0aGlzLmNvbnRlbnRDb250YWluZXIubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgdmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja1RhYkluZGV4KG5vZGVJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgJiYgdGhpcy5ub2RlSWQgIT09IG5vZGVJZCAmJiB0aGlzLmNvbnRlbnRDb250YWluZXJUYWJpbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuc2V0VGFiSW5kZXgoLTEpO1xuICAgIH1cbiAgfVxuXG4gIGZvY3VzVHJlZU5vZGUoKTogdm9pZCB7XG4gICAgY29uc3QgY29udGFpbmVyRWwgPSB0aGlzLmNvbnRlbnRDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSBjb250YWluZXJFbCkge1xuICAgICAgdGhpcy5zZXRUYWJJbmRleCgwKTtcbiAgICAgIGNvbnRhaW5lckVsLmZvY3VzKCk7XG4gICAgICBjb250YWluZXJFbC5zY3JvbGxJbnRvVmlldyh7IGJsb2NrOiAnbmVhcmVzdCcsIGlubGluZTogJ25lYXJlc3QnIH0pO1xuICAgIH1cbiAgfVxuXG4gIGJyb2FkY2FzdEZvY3VzT25Db250YWluZXIoKSB7XG4gICAgdGhpcy5mb2N1c01hbmFnZXIuYnJvYWRjYXN0Rm9jdXNlZE5vZGUodGhpcy5ub2RlSWQpO1xuICB9XG5cbiAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgLy8gVHdvIHJlYXNvbnMgdG8gcHJldmVudCBkZWZhdWx0IGJlaGF2aW9yOlxuICAgIC8vIDEuIHRvIHByZXZlbnQgc2Nyb2xsaW5nIG9uIGFycm93IGtleXNcbiAgICAvLyAyLiBBc3Npc3RpdmUgVGVjaG5vbG9neSBmb2N1cyBkaWZmZXJzIGZyb20gS2V5Ym9hcmQgZm9jdXMgYmVoYXZpb3IuXG4gICAgLy8gICAgQnkgZGVmYXVsdCwgcHJlc3NpbmcgYXJyb3cga2V5IG1ha2VzIEFUIGZvY3VzIGdvIGludG8gdGhlIG5lc3RlZCBjb250ZW50IG9mIHRoZSBpdGVtLlxuICAgIHByZXZlbnRBcnJvd0tleVNjcm9sbChldmVudCk7XG5cbiAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2FpLWFyaWEtcHJhY3RpY2VzLTEuMS8ja2V5Ym9hcmQtaW50ZXJhY3Rpb24tMjJcbiAgICBzd2l0Y2ggKGtleVZhbGlkYXRvcihldmVudC5rZXkpKSB7XG4gICAgICBjYXNlIEtleUNvZGVzLkFycm93VXA6XG4gICAgICAgIHRoaXMuZm9jdXNNYW5hZ2VyLmZvY3VzTm9kZUFib3ZlKHRoaXMuX21vZGVsKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEtleUNvZGVzLkFycm93RG93bjpcbiAgICAgICAgdGhpcy5mb2N1c01hbmFnZXIuZm9jdXNOb2RlQmVsb3codGhpcy5fbW9kZWwpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgS2V5Q29kZXMuQXJyb3dSaWdodDpcbiAgICAgICAgdGhpcy5leHBhbmRPckZvY3VzRmlyc3RDaGlsZCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgS2V5Q29kZXMuQXJyb3dMZWZ0OlxuICAgICAgICB0aGlzLmNvbGxhcHNlT3JGb2N1c1BhcmVudCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgS2V5Q29kZXMuSG9tZTpcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5mb2N1c01hbmFnZXIuZm9jdXNGaXJzdFZpc2libGVOb2RlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBLZXlDb2Rlcy5FbmQ6XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuZm9jdXNNYW5hZ2VyLmZvY3VzTGFzdFZpc2libGVOb2RlKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBLZXlDb2Rlcy5FbnRlcjpcbiAgICAgICAgdGhpcy50b2dnbGVFeHBhbmRPclRyaWdnZXJEZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBLZXlDb2Rlcy5TcGFjZTpcbiAgICAgIGNhc2UgS2V5Q29kZXMuU3BhY2ViYXI6XG4gICAgICAgIC8vIHRvIHByZXZlbnQgc2Nyb2xsaW5nIG9uIHNwYWNlIGtleSBpbiB0aGlzIHNwZWNpZmljIGNhc2VcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy50b2dnbGVFeHBhbmRPclRyaWdnZXJEZWZhdWx0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKHRoaXMuX21vZGVsLnRleHRDb250ZW50ICYmIGlzS2V5RWl0aGVyTGV0dGVyT3JOdW1iZXIoZXZlbnQpKSB7XG4gICAgICAgICAgdGhpcy50eXBlQWhlYWRLZXlCdWZmZXIgKz0gZXZlbnQua2V5O1xuICAgICAgICAgIHRoaXMudHlwZUFoZWFkS2V5RXZlbnQubmV4dCh0aGlzLnR5cGVBaGVhZEtleUJ1ZmZlcik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIGlmIG5vbi1sZXR0ZXIga2V5cyBhcmUgcHJlc3NlZCwgZG8gcmVzZXQuXG4gICAgdGhpcy50eXBlQWhlYWRLZXlCdWZmZXIgPSAnJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGlzUGFyZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9tb2RlbC5jaGlsZHJlbiAmJiB0aGlzLl9tb2RlbC5jaGlsZHJlbi5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVFeHBhbmRPclRyaWdnZXJEZWZhdWx0KCkge1xuICAgIGlmICh0aGlzLmlzRXhwYW5kYWJsZSgpICYmICF0aGlzLmlzU2VsZWN0YWJsZSgpKSB7XG4gICAgICB0aGlzLmV4cGFuZFNlcnZpY2UuZXhwYW5kZWQgPSAhdGhpcy5leHBhbmRlZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50cmlnZ2VyRGVmYXVsdEFjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZXhwYW5kT3JGb2N1c0ZpcnN0Q2hpbGQoKSB7XG4gICAgaWYgKHRoaXMuZXhwYW5kZWQpIHtcbiAgICAgIC8vIGlmIHRoZSBub2RlIGlzIGFscmVhZHkgZXhwYW5kZWQgYW5kIGhhcyBjaGlsZHJlbiwgZm9jdXMgaXRzIHZlcnkgZmlyc3QgY2hpbGRcbiAgICAgIGlmICh0aGlzLmlzUGFyZW50KSB7XG4gICAgICAgIHRoaXMuZm9jdXNNYW5hZ2VyLmZvY3VzTm9kZUJlbG93KHRoaXMuX21vZGVsKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gd2UgbXVzdCBjaGVjayBpZiB0aGUgbm9kZSBpcyBleHBhbmRhYmxlLCBpbiBvcmRlciB0byBzZXQgLmV4cGFuZGVkIHRvIHRydWUgZnJvbSBmYWxzZVxuICAgICAgLy8gYmVjYXVzZSB3ZSBzaG91bGRuJ3Qgc2V0IC5leHBhbmRlZCB0byB0cnVlIGlmIGl0J3Mgbm90IGV4cGFuZGFibGUgbm9kZVxuICAgICAgaWYgKHRoaXMuaXNFeHBhbmRhYmxlKCkpIHtcbiAgICAgICAgdGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbGxhcHNlT3JGb2N1c1BhcmVudCgpIHtcbiAgICBpZiAodGhpcy5leHBhbmRlZCkge1xuICAgICAgdGhpcy5leHBhbmRTZXJ2aWNlLmV4cGFuZGVkID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9jdXNNYW5hZ2VyLmZvY3VzUGFyZW50KHRoaXMuX21vZGVsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHRyaWdnZXJEZWZhdWx0QWN0aW9uKCkge1xuICAgIGlmICh0aGlzLnRyZWVOb2RlTGluaykge1xuICAgICAgdGhpcy50cmVlTm9kZUxpbmsuYWN0aXZhdGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuaXNTZWxlY3RhYmxlKCkpIHtcbiAgICAgICAgdGhpcy5fbW9kZWwudG9nZ2xlU2VsZWN0aW9uKHRoaXMuZmVhdHVyZXNTZXJ2aWNlLmVhZ2VyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdHJpbUFuZExvd2VyQ2FzZSh2YWx1ZTogc3RyaW5nKSB7XG4gIHJldHVybiB2YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnRyaW0oKTtcbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMSBWTXdhcmUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAgfiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICB+IFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAgLS0+XG5cbjxkaXZcbiAgI2NvbnRlbnRDb250YWluZXJcbiAgcm9sZT1cInRyZWVpdGVtXCJcbiAgY2xhc3M9XCJjbHItdHJlZS1ub2RlLWNvbnRlbnQtY29udGFpbmVyXCJcbiAgdGFiaW5kZXg9XCItMVwiXG4gIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNFeHBhbmRhYmxlKCkgPyBleHBhbmRlZCA6IG51bGxcIlxuICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImFyaWFTZWxlY3RlZFwiXG4gIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgKGZvY3VzKT1cImJyb2FkY2FzdEZvY3VzT25Db250YWluZXIoKVwiXG4+XG4gIDxidXR0b25cbiAgICAqbmdJZj1cImlzRXhwYW5kYWJsZSgpICYmICFpc01vZGVsTG9hZGluZyAmJiAhZXhwYW5kU2VydmljZS5sb2FkaW5nXCJcbiAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIGNsYXNzPVwiY2xyLXRyZWVub2RlLWNhcmV0XCJcbiAgICAoY2xpY2spPVwiZXhwYW5kU2VydmljZS50b2dnbGUoKTtcIlxuICAgIChmb2N1cyk9XCJmb2N1c1RyZWVOb2RlKClcIlxuICA+XG4gICAgPGNkcy1pY29uXG4gICAgICBjbGFzcz1cImNsci10cmVlbm9kZS1jYXJldC1pY29uXCJcbiAgICAgIHNoYXBlPVwiYW5nbGVcIlxuICAgICAgW2F0dHIuZGlyZWN0aW9uXT1cImV4cGFuZFNlcnZpY2UuZXhwYW5kZWQgPyAnZG93bicgOiAncmlnaHQnXCJcbiAgICA+PC9jZHMtaWNvbj5cbiAgPC9idXR0b24+XG4gIDxkaXYgY2xhc3M9XCJjbHItdHJlZW5vZGUtc3Bpbm5lci1jb250YWluZXJcIiAqbmdJZj1cImV4cGFuZFNlcnZpY2UubG9hZGluZyB8fCBpc01vZGVsTG9hZGluZ1wiPlxuICAgIDxzcGFuIGNsYXNzPVwiY2xyLXRyZWVub2RlLXNwaW5uZXIgc3Bpbm5lclwiPjwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjbHItY2hlY2tib3gtd3JhcHBlciBjbHItdHJlZW5vZGUtY2hlY2tib3hcIiAqbmdJZj1cImZlYXR1cmVzU2VydmljZS5zZWxlY3RhYmxlXCI+XG4gICAgPGlucHV0XG4gICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgIGlkPVwie3tub2RlSWR9fS1jaGVja1wiXG4gICAgICBjbGFzcz1cImNsci1jaGVja2JveFwiXG4gICAgICBbY2hlY2tlZF09XCJfbW9kZWwuc2VsZWN0ZWQudmFsdWUgPT09IFNUQVRFUy5TRUxFQ1RFRFwiXG4gICAgICBbaW5kZXRlcm1pbmF0ZV09XCJfbW9kZWwuc2VsZWN0ZWQudmFsdWUgPT09IFNUQVRFUy5JTkRFVEVSTUlOQVRFXCJcbiAgICAgIChjaGFuZ2UpPVwiX21vZGVsLnRvZ2dsZVNlbGVjdGlvbihmZWF0dXJlc1NlcnZpY2UuZWFnZXIpXCJcbiAgICAgIChmb2N1cyk9XCJmb2N1c1RyZWVOb2RlKClcIlxuICAgICAgdGFiaW5kZXg9XCItMVwiXG4gICAgLz5cbiAgICA8bGFiZWwgZm9yPVwie3tub2RlSWR9fS1jaGVja1wiIGNsYXNzPVwiY2xyLWNvbnRyb2wtbGFiZWxcIj48L2xhYmVsPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNsci10cmVlbm9kZS1jb250ZW50XCIgKG1vdXNlZG93bik9XCJmb2N1c1RyZWVOb2RlKClcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPGRpdiBjbGFzcz1cImNsci1zci1vbmx5XCIgKm5nSWY9XCJmZWF0dXJlc1NlcnZpY2Uuc2VsZWN0YWJsZSB8fCBhcmlhU2VsZWN0ZWRcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiYXJpYVNlbGVjdGVkXCI+IHNlbGVjdGVkPC9zcGFuPlxuICAgICAgPHNwYW4gKm5nSWY9XCIhYXJpYVNlbGVjdGVkXCI+IHVuc2VsZWN0ZWQ8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2XG4gIGNsYXNzPVwiY2xyLXRyZWVub2RlLWNoaWxkcmVuXCJcbiAgW0B0b2dnbGVDaGlsZHJlbkFuaW1dPVwiZXhwYW5kU2VydmljZS5leHBhbmRlZCA/ICdleHBhbmRlZCcgOiAnY29sbGFwc2VkJ1wiXG4gIFthdHRyLnJvbGVdPVwiaXNFeHBhbmRhYmxlKCkgJiYgIWZlYXR1cmVzU2VydmljZS5yZWN1cnNpb24gPyAnZ3JvdXAnIDogbnVsbFwiXG4+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci10cmVlLW5vZGVcIj48L25nLWNvbnRlbnQ+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIltjbHJJZkV4cGFuZGVkXVwiPjwvbmctY29udGVudD5cbiAgPGNsci1yZWN1cnNpdmUtY2hpbGRyZW4gW3BhcmVudF09XCJfbW9kZWxcIj48L2Nsci1yZWN1cnNpdmUtY2hpbGRyZW4+XG48L2Rpdj5cbiJdfQ==
@@ -35,11 +35,11 @@ import * as i10 from "../common/providers/layout.service";
35
35
  import * as i11 from "../common/providers/ng-control.service";
36
36
  import * as i12 from "../common/if-control-state/if-control-state.service";
37
37
  import * as i13 from "@angular/common";
38
- import * as i14 from "../../utils/popover/popover-anchor";
39
- import * as i15 from "../../utils/popover/popover-open-close-button";
40
- import * as i16 from "../../utils/popover/popover-content";
41
- import * as i17 from "../../icon/icon";
42
- import * as i18 from "../../utils/focus-trap/focus-trap.directive";
38
+ import * as i14 from "../../utils/cdk/cdk-trap-focus.module";
39
+ import * as i15 from "../../utils/popover/popover-anchor";
40
+ import * as i16 from "../../utils/popover/popover-open-close-button";
41
+ import * as i17 from "../../utils/popover/popover-content";
42
+ import * as i18 from "../../icon/icon";
43
43
  import * as i19 from "../common/label";
44
44
  import * as i20 from "./datepicker-view-manager";
45
45
  export class ClrDateContainer extends ClrAbstractContainer {
@@ -172,7 +172,7 @@ ClrDateContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
172
172
  </button>
173
173
  <clr-datepicker-view-manager
174
174
  *clrPopoverContent="open; at: popoverPosition; outsideClickToClose: true; scrollToClose: true"
175
- clrFocusTrap
175
+ cdkTrapFocus
176
176
  ></clr-datepicker-view-manager>
177
177
  </div>
178
178
  <cds-icon
@@ -194,7 +194,7 @@ ClrDateContainer.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", versi
194
194
  <ng-content select="clr-control-error" *ngIf="showInvalid"></ng-content>
195
195
  <ng-content select="clr-control-success" *ngIf="showValid"></ng-content>
196
196
  </div>
197
- `, isInline: true, dependencies: [{ kind: "directive", type: i13.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i14.ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { kind: "directive", type: i15.ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: i16.ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }, { kind: "directive", type: i17.CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i18.FocusTrapDirective, selector: "[clrFocusTrap]", inputs: ["clrFocusTrap"] }, { kind: "directive", type: i19.ClrLabel, selector: "label", inputs: ["for"] }, { kind: "component", type: i20.ClrDatepickerViewManager, selector: "clr-datepicker-view-manager" }] });
197
+ `, isInline: true, dependencies: [{ kind: "directive", type: i13.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i13.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i14.CdkTrapFocusModule_CdkTrapFocus, selector: "[cdkTrapFocus]" }, { kind: "directive", type: i15.ClrPopoverAnchor, selector: "[clrPopoverAnchor]" }, { kind: "directive", type: i16.ClrPopoverOpenCloseButton, selector: "[clrPopoverOpenCloseButton]", outputs: ["clrPopoverOpenCloseChange"] }, { kind: "directive", type: i17.ClrPopoverContent, selector: "[clrPopoverContent]", inputs: ["clrPopoverContent", "clrPopoverContentAt", "clrPopoverContentOutsideClickToClose", "clrPopoverContentScrollToClose"] }, { kind: "directive", type: i18.CdsIconCustomTag, selector: "cds-icon" }, { kind: "directive", type: i19.ClrLabel, selector: "label", inputs: ["for"] }, { kind: "component", type: i20.ClrDatepickerViewManager, selector: "clr-datepicker-view-manager" }] });
198
198
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClrDateContainer, decorators: [{
199
199
  type: Component,
200
200
  args: [{
@@ -218,7 +218,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
218
218
  </button>
219
219
  <clr-datepicker-view-manager
220
220
  *clrPopoverContent="open; at: popoverPosition; outsideClickToClose: true; scrollToClose: true"
221
- clrFocusTrap
221
+ cdkTrapFocus
222
222
  ></clr-datepicker-view-manager>
223
223
  </div>
224
224
  <cds-icon
@@ -273,4 +273,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
273
273
  type: ViewChild,
274
274
  args: ['actionButton']
275
275
  }] } });
276
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9mb3Jtcy9kYXRlcGlja2VyL2RhdGUtY29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQWlCLFNBQVMsRUFBYyxLQUFLLEVBQUUsUUFBUSxFQUFhLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFL0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDL0YsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDbkcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDL0YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDNUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRWpFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUs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QkFBcUI7d0JBQ3JCLHdCQUF3Qjt3QkFDeEIsc0JBQXNCO3dCQUN0QixrQkFBa0I7d0JBQ2xCLHFCQUFxQjtxQkFDdEI7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLDRCQUE0QixFQUFFLE1BQU07d0JBQ3BDLG1DQUFtQyxFQUFFLHFCQUFxQjt3QkFDMUQsMEJBQTBCLEVBQUUsTUFBTTt3QkFDbEMsaUJBQWlCLEVBQUUsV0FBVztxQkFDL0I7aUJBQ0Y7OzBCQW1DSSxRQUFRO2lIQTlCUCxXQUFXO3NCQURkLEtBQUs7dUJBQUMsYUFBYTtnQkFnQmhCLFlBQVk7c0JBRGYsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIFZNd2FyZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPcHRpb25hbCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9pMThuL2NvbW1vbi1zdHJpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xyUG9wb3ZlclBvc2l0aW9ucyB9IGZyb20gJy4uLy4uL3V0aWxzL3BvcG92ZXIvZW51bXMvcG9zaXRpb25zLmVudW0nO1xuaW1wb3J0IHsgQ2xyUG9wb3ZlclBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9pbnRlcmZhY2VzL3BvcG92ZXItcG9zaXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IENsclBvcG92ZXJFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9wcm92aWRlcnMvcG9wb3Zlci1ldmVudHMuc2VydmljZSc7XG5pbXBvcnQgeyBDbHJQb3BvdmVyUG9zaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9wcm92aWRlcnMvcG9wb3Zlci1wb3NpdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENsclBvcG92ZXJUb2dnbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9wcm92aWRlcnMvcG9wb3Zlci10b2dnbGUuc2VydmljZSc7XG5pbXBvcnQgeyBDbHJBYnN0cmFjdENvbnRhaW5lciB9IGZyb20gJy4uL2NvbW1vbi9hYnN0cmFjdC1jb250YWluZXInO1xuaW1wb3J0IHsgSWZDb250cm9sU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL2lmLWNvbnRyb2wtc3RhdGUvaWYtY29udHJvbC1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRyb2xDbGFzc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vcHJvdmlkZXJzL2NvbnRyb2wtY2xhc3Muc2VydmljZSc7XG5pbXBvcnQgeyBDb250cm9sSWRTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3Byb3ZpZGVycy9jb250cm9sLWlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9jdXNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3Byb3ZpZGVycy9mb2N1cy5zZXJ2aWNlJztcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vcHJvdmlkZXJzL2xheW91dC5zZXJ2aWNlJztcbmltcG9ydCB7IE5nQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vcHJvdmlkZXJzL25nLWNvbnRyb2wuc2VydmljZSc7XG5pbXBvcnQgeyBEYXlNb2RlbCB9IGZyb20gJy4vbW9kZWwvZGF5Lm1vZGVsJztcbmltcG9ydCB7IERhdGVGb3JtQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy9kYXRlLWZvcm0tY29udHJvbC5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVJT1NlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy9kYXRlLWlvLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0ZU5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvZGF0ZS1uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0ZXBpY2tlckVuYWJsZWRTZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvZGF0ZXBpY2tlci1lbmFibGVkLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYWxlSGVscGVyU2VydmljZSB9IGZyb20gJy4vcHJvdmlkZXJzL2xvY2FsZS1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBWaWV3TWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy92aWV3LW1hbmFnZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nsci1kYXRlLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibGFiZWxcIj48L25nLWNvbnRlbnQ+XG4gICAgPGxhYmVsICpuZ0lmPVwiIWxhYmVsICYmIGFkZEdyaWQoKVwiPjwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNsci1jb250cm9sLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cImNvbnRyb2xDbGFzcygpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2xyLWlucHV0LXdyYXBwZXJcIiBjbHJQb3BvdmVyQW5jaG9yPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2xyLWlucHV0LWdyb3VwXCIgW2NsYXNzLmNsci1mb2N1c109XCJmb2N1c1wiPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjbHJEYXRlXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAjYWN0aW9uQnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsclBvcG92ZXJPcGVuQ2xvc2VCdXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiY2xyLWlucHV0LWdyb3VwLWljb24tYWN0aW9uXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0lucHV0RGF0ZURpc2FibGVkXCJcbiAgICAgICAgICAgICpuZ0lmPVwiaXNFbmFibGVkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Y2RzLWljb24gc3RhdHVzPVwiaW5mb1wiIHNoYXBlPVwiY2FsZW5kYXJcIj48L2Nkcy1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxjbHItZGF0ZXBpY2tlci12aWV3LW1hbmFnZXJcbiAgICAgICAgICAgICpjbHJQb3BvdmVyQ29udGVudD1cIm9wZW47IGF0OiBwb3BvdmVyUG9zaXRpb247IG91dHNpZGVDbGlja1RvQ2xvc2U6IHRydWU7IHNjcm9sbFRvQ2xvc2U6IHRydWVcIlxuICAgICAgICAgICAgY2xyRm9jdXNUcmFwXG4gICAgICAgICAgPjwvY2xyLWRhdGVwaWNrZXItdmlldy1tYW5hZ2VyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGNkcy1pY29uXG4gICAgICAgICAgKm5nSWY9XCJzaG93SW52YWxpZFwiXG4gICAgICAgICAgY2xhc3M9XCJjbHItdmFsaWRhdGUtaWNvblwiXG4gICAgICAgICAgc2hhcGU9XCJleGNsYW1hdGlvbi1jaXJjbGVcIlxuICAgICAgICAgIHN0YXR1cz1cImRhbmdlclwiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPjwvY2RzLWljb24+XG4gICAgICAgIDxjZHMtaWNvblxuICAgICAgICAgICpuZ0lmPVwic2hvd1ZhbGlkXCJcbiAgICAgICAgICBjbGFzcz1cImNsci12YWxpZGF0ZS1pY29uXCJcbiAgICAgICAgICBzaGFwZT1cImNoZWNrLWNpcmNsZVwiXG4gICAgICAgICAgc3RhdHVzPVwic3VjY2Vzc1wiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPjwvY2RzLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1jb250cm9sLWhlbHBlclwiICpuZ0lmPVwic2hvd0hlbHBlclwiPjwvbmctY29udGVudD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1jb250cm9sLWVycm9yXCIgKm5nSWY9XCJzaG93SW52YWxpZFwiPjwvbmctY29udGVudD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1jb250cm9sLXN1Y2Nlc3NcIiAqbmdJZj1cInNob3dWYWxpZFwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgQ29udHJvbElkU2VydmljZSxcbiAgICBDbHJQb3BvdmVyVG9nZ2xlU2VydmljZSxcbiAgICBDbHJQb3BvdmVyRXZlbnRzU2VydmljZSxcbiAgICBDbHJQb3BvdmVyUG9zaXRpb25TZXJ2aWNlLFxuICAgIExvY2FsZUhlbHBlclNlcnZpY2UsXG4gICAgQ29udHJvbENsYXNzU2VydmljZSxcbiAgICBGb2N1c1NlcnZpY2UsXG4gICAgTmdDb250cm9sU2VydmljZSxcbiAgICBEYXRlSU9TZXJ2aWNlLFxuICAgIERhdGVOYXZpZ2F0aW9uU2VydmljZSxcbiAgICBEYXRlcGlja2VyRW5hYmxlZFNlcnZpY2UsXG4gICAgRGF0ZUZvcm1Db250cm9sU2VydmljZSxcbiAgICBWaWV3TWFuYWdlclNlcnZpY2UsXG4gICAgSWZDb250cm9sU3RhdGVTZXJ2aWNlLFxuICBdLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5jbHItZGF0ZS1jb250YWluZXJdJzogJ3RydWUnLFxuICAgICdbY2xhc3MuY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZF0nOiAnaXNJbnB1dERhdGVEaXNhYmxlZCcsXG4gICAgJ1tjbGFzcy5jbHItZm9ybS1jb250cm9sXSc6ICd0cnVlJyxcbiAgICAnW2NsYXNzLmNsci1yb3ddJzogJ2FkZEdyaWQoKScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIENsckRhdGVDb250YWluZXIgZXh0ZW5kcyBDbHJBYnN0cmFjdENvbnRhaW5lciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBmb2N1cyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnY2xyUG9zaXRpb24nKVxuICBzZXQgY2xyUG9zaXRpb24ocG9zaXRpb246IHN0cmluZykge1xuICAgIGlmIChwb3NpdGlvbiAmJiAoQ2xyUG9wb3ZlclBvc2l0aW9ucyBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtwb3NpdGlvbl0pIHtcbiAgICAgIHRoaXMudmlld01hbmFnZXJTZXJ2aWNlLnBvc2l0aW9uID0gKENsclBvcG92ZXJQb3NpdGlvbnMgYXMgUmVjb3JkPHN0cmluZywgYW55PilbcG9zaXRpb25dO1xuICAgIH1cbiAgfVxuICBnZXQgcG9wb3ZlclBvc2l0aW9uKCk6IENsclBvcG92ZXJQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMudmlld01hbmFnZXJTZXJ2aWNlLnBvc2l0aW9uO1xuICB9XG5cbiAgZ2V0IG9wZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9nZ2xlU2VydmljZS5vcGVuO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVCdXR0b246IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2FjdGlvbkJ1dHRvbicpXG4gIHNldCBhY3Rpb25CdXR0b24oYnV0dG9uOiBFbGVtZW50UmVmKSB7XG4gICAgdGhpcy50b2dnbGVCdXR0b24gPSBidXR0b247XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHRvZ2dsZVNlcnZpY2U6IENsclBvcG92ZXJUb2dnbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0ZU5hdmlnYXRpb25TZXJ2aWNlOiBEYXRlTmF2aWdhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRlcGlja2VyRW5hYmxlZFNlcnZpY2U6IERhdGVwaWNrZXJFbmFibGVkU2VydmljZSxcbiAgICBwcml2YXRlIGRhdGVGb3JtQ29udHJvbFNlcnZpY2U6IERhdGVGb3JtQ29udHJvbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRlSU9TZXJ2aWNlOiBEYXRlSU9TZXJ2aWNlLFxuICAgIHB1YmxpYyBjb21tb25TdHJpbmdzOiBDbHJDb21tb25TdHJpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIGZvY3VzU2VydmljZTogRm9jdXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdmlld01hbmFnZXJTZXJ2aWNlOiBWaWV3TWFuYWdlclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGNvbnRyb2xDbGFzc1NlcnZpY2U6IENvbnRyb2xDbGFzc1NlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIG92ZXJyaWRlIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIG5nQ29udHJvbFNlcnZpY2U6IE5nQ29udHJvbFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGlmQ29udHJvbFN0YXRlU2VydmljZTogSWZDb250cm9sU3RhdGVTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGlmQ29udHJvbFN0YXRlU2VydmljZSwgbGF5b3V0U2VydmljZSwgY29udHJvbENsYXNzU2VydmljZSwgbmdDb250cm9sU2VydmljZSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuZm9jdXNTZXJ2aWNlLmZvY3VzQ2hhbmdlLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICAgIHRoaXMuZm9jdXMgPSBzdGF0ZTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMudG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShvcGVuID0+IHtcbiAgICAgICAgaWYgKG9wZW4pIHtcbiAgICAgICAgICB0aGlzLmluaXRpYWxpemVDYWxlbmRhcigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudG9nZ2xlQnV0dG9uLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5saXN0ZW5Gb3JEYXRlQ2hhbmdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGlmIHRoZSBEYXRlcGlja2VyIGlzIGVuYWJsZWQgb3Igbm90LiBJZiBkaXNhYmxlZCwgaGlkZXMgdGhlIGRhdGVwaWNrZXIgdHJpZ2dlci5cbiAgICovXG4gIGdldCBpc0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZXBpY2tlckVuYWJsZWRTZXJ2aWNlLmlzRW5hYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gaWYgRGF0ZXBpY2tlciBpcyBkaWFibGVkIG9yIG5vdCBhcyBGb3JtIENvbnRyb2xcbiAgICovXG4gIGdldCBpc0lucHV0RGF0ZURpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIC8qIGNsckZvcm0gd3JhcHBlciBvciB3aXRob3V0IGNsckZvcm0gKi9cbiAgICByZXR1cm4gKFxuICAgICAgKHRoaXMuY29udHJvbCAmJiB0aGlzLmNvbnRyb2wuZGlzYWJsZWQpIHx8ICh0aGlzLmRhdGVGb3JtQ29udHJvbFNlcnZpY2UgJiYgdGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlLmRpc2FibGVkKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBsYWJlbCBmb3IgdGhlIHRvZ2dsZSBidXR0b24uXG4gICAqIElmIHRoZXJlJ3MgYSBzZWxlY3RlZCBkYXRlLCB0aGUgZGF0ZSBpcyBpbmNsdWRlZCBpbiB0aGUgbGFiZWwuXG4gICAqL1xuICBwcml2YXRlIGdldFRvZ2dsZUJ1dHRvbkxhYmVsKGRheTogRGF5TW9kZWwpOiBzdHJpbmcge1xuICAgIGlmIChkYXkpIHtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB0aGlzLmRhdGVJT1NlcnZpY2UudG9Mb2NhbGVEaXNwbGF5Rm9ybWF0U3RyaW5nKGRheS50b0RhdGUoKSk7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRoaXMuY29tbW9uU3RyaW5ncy5wYXJzZSh0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyVG9nZ2xlQ2hhbmdlRGF0ZUxhYmVsLCB7XG4gICAgICAgICAgU0VMRUNURURfREFURTogZm9ybWF0dGVkRGF0ZSxcbiAgICAgICAgfSkgfHwgdGhpcy5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclRvZ2dsZVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJUb2dnbGVDaG9vc2VEYXRlTGFiZWwgfHwgdGhpcy5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclRvZ2dsZTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuRm9yRGF0ZUNoYW5nZXMoKSB7XG4gICAgLy8gYmVjYXVzZSBkYXRlLWlucHV0LnRzIGluaXRpYWxpemVzIHRoZSBpbnB1dCBpbiBuZ0FmdGVyVmlld0luaXQsXG4gICAgLy8gdXNpbmcgYSBkYXRhYm91bmQgYXR0cmlidXRlIHRvIGNoYW5nZSB0aGUgYnV0dG9uIGxhYmVscyByZXN1bHRzIGluIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3IuXG4gICAgLy8gc28gaW5zdGVhZCwgdXBkYXRlIHRoZSBhdHRyaWJ1dGUgZGlyZWN0bHkgb24gdGhlIGVsZW1lbnRcbiAgICByZXR1cm4gdGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXlDaGFuZ2VcbiAgICAgIC5waXBlKHN0YXJ0V2l0aCh0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZERheSkpXG4gICAgICAuc3Vic2NyaWJlKGRheSA9PiB7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5nZXRUb2dnbGVCdXR0b25MYWJlbChkYXkpO1xuICAgICAgICBjb25zdCB0b2dnbGVFbCA9IHRoaXMudG9nZ2xlQnV0dG9uLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRvZ2dsZUVsLCAnYXJpYS1sYWJlbCcsIGxhYmVsKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodG9nZ2xlRWwsICd0aXRsZScsIGxhYmVsKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyB0aGUgdXNlciBpbnB1dCBhbmQgSW5pdGlhbGl6ZXMgdGhlIENhbGVuZGFyIGV2ZXJ5dGltZSB0aGUgZGF0ZXBpY2tlciBwb3BvdmVyIGlzIG9wZW4uXG4gICAqL1xuICBwcml2YXRlIGluaXRpYWxpemVDYWxlbmRhcigpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZS5pbml0aWFsaXplQ2FsZW5kYXIoKTtcbiAgfVxufVxuIl19
276
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9mb3Jtcy9kYXRlcGlja2VyL2RhdGUtY29udGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQWlCLFNBQVMsRUFBYyxLQUFLLEVBQUUsUUFBUSxFQUFhLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFFL0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDL0YsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDbkcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDL0YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDNUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDaEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRWpFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRTFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUs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QkFBcUI7d0JBQ3JCLHdCQUF3Qjt3QkFDeEIsc0JBQXNCO3dCQUN0QixrQkFBa0I7d0JBQ2xCLHFCQUFxQjtxQkFDdEI7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLDRCQUE0QixFQUFFLE1BQU07d0JBQ3BDLG1DQUFtQyxFQUFFLHFCQUFxQjt3QkFDMUQsMEJBQTBCLEVBQUUsTUFBTTt3QkFDbEMsaUJBQWlCLEVBQUUsV0FBVztxQkFDL0I7aUJBQ0Y7OzBCQW1DSSxRQUFRO2lIQTlCUCxXQUFXO3NCQURkLEtBQUs7dUJBQUMsYUFBYTtnQkFnQmhCLFlBQVk7c0JBRGYsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIFZNd2FyZSwgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciBNSVQgbGljZW5zZS5cbiAqIFRoZSBmdWxsIGxpY2Vuc2UgaW5mb3JtYXRpb24gY2FuIGJlIGZvdW5kIGluIExJQ0VOU0UgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgcHJvamVjdC5cbiAqL1xuXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIElucHV0LCBPcHRpb25hbCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ2xyQ29tbW9uU3RyaW5nc1NlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9pMThuL2NvbW1vbi1zdHJpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xyUG9wb3ZlclBvc2l0aW9ucyB9IGZyb20gJy4uLy4uL3V0aWxzL3BvcG92ZXIvZW51bXMvcG9zaXRpb25zLmVudW0nO1xuaW1wb3J0IHsgQ2xyUG9wb3ZlclBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9pbnRlcmZhY2VzL3BvcG92ZXItcG9zaXRpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IENsclBvcG92ZXJFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9wcm92aWRlcnMvcG9wb3Zlci1ldmVudHMuc2VydmljZSc7XG5pbXBvcnQgeyBDbHJQb3BvdmVyUG9zaXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9wcm92aWRlcnMvcG9wb3Zlci1wb3NpdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENsclBvcG92ZXJUb2dnbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvcG9wb3Zlci9wcm92aWRlcnMvcG9wb3Zlci10b2dnbGUuc2VydmljZSc7XG5pbXBvcnQgeyBDbHJBYnN0cmFjdENvbnRhaW5lciB9IGZyb20gJy4uL2NvbW1vbi9hYnN0cmFjdC1jb250YWluZXInO1xuaW1wb3J0IHsgSWZDb250cm9sU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL2lmLWNvbnRyb2wtc3RhdGUvaWYtY29udHJvbC1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRyb2xDbGFzc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vcHJvdmlkZXJzL2NvbnRyb2wtY2xhc3Muc2VydmljZSc7XG5pbXBvcnQgeyBDb250cm9sSWRTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3Byb3ZpZGVycy9jb250cm9sLWlkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9jdXNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3Byb3ZpZGVycy9mb2N1cy5zZXJ2aWNlJztcbmltcG9ydCB7IExheW91dFNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vcHJvdmlkZXJzL2xheW91dC5zZXJ2aWNlJztcbmltcG9ydCB7IE5nQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vcHJvdmlkZXJzL25nLWNvbnRyb2wuc2VydmljZSc7XG5pbXBvcnQgeyBEYXlNb2RlbCB9IGZyb20gJy4vbW9kZWwvZGF5Lm1vZGVsJztcbmltcG9ydCB7IERhdGVGb3JtQ29udHJvbFNlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy9kYXRlLWZvcm0tY29udHJvbC5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVJT1NlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy9kYXRlLWlvLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0ZU5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvZGF0ZS1uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGF0ZXBpY2tlckVuYWJsZWRTZXJ2aWNlIH0gZnJvbSAnLi9wcm92aWRlcnMvZGF0ZXBpY2tlci1lbmFibGVkLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9jYWxlSGVscGVyU2VydmljZSB9IGZyb20gJy4vcHJvdmlkZXJzL2xvY2FsZS1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBWaWV3TWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL3Byb3ZpZGVycy92aWV3LW1hbmFnZXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nsci1kYXRlLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibGFiZWxcIj48L25nLWNvbnRlbnQ+XG4gICAgPGxhYmVsICpuZ0lmPVwiIWxhYmVsICYmIGFkZEdyaWQoKVwiPjwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNsci1jb250cm9sLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cImNvbnRyb2xDbGFzcygpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2xyLWlucHV0LXdyYXBwZXJcIiBjbHJQb3BvdmVyQW5jaG9yPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2xyLWlucHV0LWdyb3VwXCIgW2NsYXNzLmNsci1mb2N1c109XCJmb2N1c1wiPlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjbHJEYXRlXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAjYWN0aW9uQnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsclBvcG92ZXJPcGVuQ2xvc2VCdXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiY2xyLWlucHV0LWdyb3VwLWljb24tYWN0aW9uXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0lucHV0RGF0ZURpc2FibGVkXCJcbiAgICAgICAgICAgICpuZ0lmPVwiaXNFbmFibGVkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Y2RzLWljb24gc3RhdHVzPVwiaW5mb1wiIHNoYXBlPVwiY2FsZW5kYXJcIj48L2Nkcy1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxjbHItZGF0ZXBpY2tlci12aWV3LW1hbmFnZXJcbiAgICAgICAgICAgICpjbHJQb3BvdmVyQ29udGVudD1cIm9wZW47IGF0OiBwb3BvdmVyUG9zaXRpb247IG91dHNpZGVDbGlja1RvQ2xvc2U6IHRydWU7IHNjcm9sbFRvQ2xvc2U6IHRydWVcIlxuICAgICAgICAgICAgY2RrVHJhcEZvY3VzXG4gICAgICAgICAgPjwvY2xyLWRhdGVwaWNrZXItdmlldy1tYW5hZ2VyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGNkcy1pY29uXG4gICAgICAgICAgKm5nSWY9XCJzaG93SW52YWxpZFwiXG4gICAgICAgICAgY2xhc3M9XCJjbHItdmFsaWRhdGUtaWNvblwiXG4gICAgICAgICAgc2hhcGU9XCJleGNsYW1hdGlvbi1jaXJjbGVcIlxuICAgICAgICAgIHN0YXR1cz1cImRhbmdlclwiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPjwvY2RzLWljb24+XG4gICAgICAgIDxjZHMtaWNvblxuICAgICAgICAgICpuZ0lmPVwic2hvd1ZhbGlkXCJcbiAgICAgICAgICBjbGFzcz1cImNsci12YWxpZGF0ZS1pY29uXCJcbiAgICAgICAgICBzaGFwZT1cImNoZWNrLWNpcmNsZVwiXG4gICAgICAgICAgc3RhdHVzPVwic3VjY2Vzc1wiXG4gICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgPjwvY2RzLWljb24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1jb250cm9sLWhlbHBlclwiICpuZ0lmPVwic2hvd0hlbHBlclwiPjwvbmctY29udGVudD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1jb250cm9sLWVycm9yXCIgKm5nSWY9XCJzaG93SW52YWxpZFwiPjwvbmctY29udGVudD5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImNsci1jb250cm9sLXN1Y2Nlc3NcIiAqbmdJZj1cInNob3dWYWxpZFwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgQ29udHJvbElkU2VydmljZSxcbiAgICBDbHJQb3BvdmVyVG9nZ2xlU2VydmljZSxcbiAgICBDbHJQb3BvdmVyRXZlbnRzU2VydmljZSxcbiAgICBDbHJQb3BvdmVyUG9zaXRpb25TZXJ2aWNlLFxuICAgIExvY2FsZUhlbHBlclNlcnZpY2UsXG4gICAgQ29udHJvbENsYXNzU2VydmljZSxcbiAgICBGb2N1c1NlcnZpY2UsXG4gICAgTmdDb250cm9sU2VydmljZSxcbiAgICBEYXRlSU9TZXJ2aWNlLFxuICAgIERhdGVOYXZpZ2F0aW9uU2VydmljZSxcbiAgICBEYXRlcGlja2VyRW5hYmxlZFNlcnZpY2UsXG4gICAgRGF0ZUZvcm1Db250cm9sU2VydmljZSxcbiAgICBWaWV3TWFuYWdlclNlcnZpY2UsXG4gICAgSWZDb250cm9sU3RhdGVTZXJ2aWNlLFxuICBdLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5jbHItZGF0ZS1jb250YWluZXJdJzogJ3RydWUnLFxuICAgICdbY2xhc3MuY2xyLWZvcm0tY29udHJvbC1kaXNhYmxlZF0nOiAnaXNJbnB1dERhdGVEaXNhYmxlZCcsXG4gICAgJ1tjbGFzcy5jbHItZm9ybS1jb250cm9sXSc6ICd0cnVlJyxcbiAgICAnW2NsYXNzLmNsci1yb3ddJzogJ2FkZEdyaWQoKScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIENsckRhdGVDb250YWluZXIgZXh0ZW5kcyBDbHJBYnN0cmFjdENvbnRhaW5lciBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBmb2N1cyA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnY2xyUG9zaXRpb24nKVxuICBzZXQgY2xyUG9zaXRpb24ocG9zaXRpb246IHN0cmluZykge1xuICAgIGlmIChwb3NpdGlvbiAmJiAoQ2xyUG9wb3ZlclBvc2l0aW9ucyBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtwb3NpdGlvbl0pIHtcbiAgICAgIHRoaXMudmlld01hbmFnZXJTZXJ2aWNlLnBvc2l0aW9uID0gKENsclBvcG92ZXJQb3NpdGlvbnMgYXMgUmVjb3JkPHN0cmluZywgYW55PilbcG9zaXRpb25dO1xuICAgIH1cbiAgfVxuICBnZXQgcG9wb3ZlclBvc2l0aW9uKCk6IENsclBvcG92ZXJQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMudmlld01hbmFnZXJTZXJ2aWNlLnBvc2l0aW9uO1xuICB9XG5cbiAgZ2V0IG9wZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMudG9nZ2xlU2VydmljZS5vcGVuO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVCdXR0b246IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2FjdGlvbkJ1dHRvbicpXG4gIHNldCBhY3Rpb25CdXR0b24oYnV0dG9uOiBFbGVtZW50UmVmKSB7XG4gICAgdGhpcy50b2dnbGVCdXR0b24gPSBidXR0b247XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHRvZ2dsZVNlcnZpY2U6IENsclBvcG92ZXJUb2dnbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0ZU5hdmlnYXRpb25TZXJ2aWNlOiBEYXRlTmF2aWdhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRlcGlja2VyRW5hYmxlZFNlcnZpY2U6IERhdGVwaWNrZXJFbmFibGVkU2VydmljZSxcbiAgICBwcml2YXRlIGRhdGVGb3JtQ29udHJvbFNlcnZpY2U6IERhdGVGb3JtQ29udHJvbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRlSU9TZXJ2aWNlOiBEYXRlSU9TZXJ2aWNlLFxuICAgIHB1YmxpYyBjb21tb25TdHJpbmdzOiBDbHJDb21tb25TdHJpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIGZvY3VzU2VydmljZTogRm9jdXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgdmlld01hbmFnZXJTZXJ2aWNlOiBWaWV3TWFuYWdlclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGNvbnRyb2xDbGFzc1NlcnZpY2U6IENvbnRyb2xDbGFzc1NlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJvdGVjdGVkIG92ZXJyaWRlIGxheW91dFNlcnZpY2U6IExheW91dFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIG5nQ29udHJvbFNlcnZpY2U6IE5nQ29udHJvbFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGlmQ29udHJvbFN0YXRlU2VydmljZTogSWZDb250cm9sU3RhdGVTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKGlmQ29udHJvbFN0YXRlU2VydmljZSwgbGF5b3V0U2VydmljZSwgY29udHJvbENsYXNzU2VydmljZSwgbmdDb250cm9sU2VydmljZSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuZm9jdXNTZXJ2aWNlLmZvY3VzQ2hhbmdlLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICAgIHRoaXMuZm9jdXMgPSBzdGF0ZTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy50b2dnbGVTZXJ2aWNlLm9wZW5DaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlLm1hcmtBc1RvdWNoZWQoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMudG9nZ2xlU2VydmljZS5vcGVuQ2hhbmdlLnN1YnNjcmliZShvcGVuID0+IHtcbiAgICAgICAgaWYgKG9wZW4pIHtcbiAgICAgICAgICB0aGlzLmluaXRpYWxpemVDYWxlbmRhcigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudG9nZ2xlQnV0dG9uLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5saXN0ZW5Gb3JEYXRlQ2hhbmdlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGlmIHRoZSBEYXRlcGlja2VyIGlzIGVuYWJsZWQgb3Igbm90LiBJZiBkaXNhYmxlZCwgaGlkZXMgdGhlIGRhdGVwaWNrZXIgdHJpZ2dlci5cbiAgICovXG4gIGdldCBpc0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZXBpY2tlckVuYWJsZWRTZXJ2aWNlLmlzRW5hYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gaWYgRGF0ZXBpY2tlciBpcyBkaWFibGVkIG9yIG5vdCBhcyBGb3JtIENvbnRyb2xcbiAgICovXG4gIGdldCBpc0lucHV0RGF0ZURpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIC8qIGNsckZvcm0gd3JhcHBlciBvciB3aXRob3V0IGNsckZvcm0gKi9cbiAgICByZXR1cm4gKFxuICAgICAgKHRoaXMuY29udHJvbCAmJiB0aGlzLmNvbnRyb2wuZGlzYWJsZWQpIHx8ICh0aGlzLmRhdGVGb3JtQ29udHJvbFNlcnZpY2UgJiYgdGhpcy5kYXRlRm9ybUNvbnRyb2xTZXJ2aWNlLmRpc2FibGVkKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBsYWJlbCBmb3IgdGhlIHRvZ2dsZSBidXR0b24uXG4gICAqIElmIHRoZXJlJ3MgYSBzZWxlY3RlZCBkYXRlLCB0aGUgZGF0ZSBpcyBpbmNsdWRlZCBpbiB0aGUgbGFiZWwuXG4gICAqL1xuICBwcml2YXRlIGdldFRvZ2dsZUJ1dHRvbkxhYmVsKGRheTogRGF5TW9kZWwpOiBzdHJpbmcge1xuICAgIGlmIChkYXkpIHtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB0aGlzLmRhdGVJT1NlcnZpY2UudG9Mb2NhbGVEaXNwbGF5Rm9ybWF0U3RyaW5nKGRheS50b0RhdGUoKSk7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRoaXMuY29tbW9uU3RyaW5ncy5wYXJzZSh0aGlzLmNvbW1vblN0cmluZ3Mua2V5cy5kYXRlcGlja2VyVG9nZ2xlQ2hhbmdlRGF0ZUxhYmVsLCB7XG4gICAgICAgICAgU0VMRUNURURfREFURTogZm9ybWF0dGVkRGF0ZSxcbiAgICAgICAgfSkgfHwgdGhpcy5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclRvZ2dsZVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY29tbW9uU3RyaW5ncy5rZXlzLmRhdGVwaWNrZXJUb2dnbGVDaG9vc2VEYXRlTGFiZWwgfHwgdGhpcy5jb21tb25TdHJpbmdzLmtleXMuZGF0ZXBpY2tlclRvZ2dsZTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuRm9yRGF0ZUNoYW5nZXMoKSB7XG4gICAgLy8gYmVjYXVzZSBkYXRlLWlucHV0LnRzIGluaXRpYWxpemVzIHRoZSBpbnB1dCBpbiBuZ0FmdGVyVmlld0luaXQsXG4gICAgLy8gdXNpbmcgYSBkYXRhYm91bmQgYXR0cmlidXRlIHRvIGNoYW5nZSB0aGUgYnV0dG9uIGxhYmVscyByZXN1bHRzIGluIEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3IuXG4gICAgLy8gc28gaW5zdGVhZCwgdXBkYXRlIHRoZSBhdHRyaWJ1dGUgZGlyZWN0bHkgb24gdGhlIGVsZW1lbnRcbiAgICByZXR1cm4gdGhpcy5kYXRlTmF2aWdhdGlvblNlcnZpY2Uuc2VsZWN0ZWREYXlDaGFuZ2VcbiAgICAgIC5waXBlKHN0YXJ0V2l0aCh0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZS5zZWxlY3RlZERheSkpXG4gICAgICAuc3Vic2NyaWJlKGRheSA9PiB7XG4gICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5nZXRUb2dnbGVCdXR0b25MYWJlbChkYXkpO1xuICAgICAgICBjb25zdCB0b2dnbGVFbCA9IHRoaXMudG9nZ2xlQnV0dG9uLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRvZ2dsZUVsLCAnYXJpYS1sYWJlbCcsIGxhYmVsKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodG9nZ2xlRWwsICd0aXRsZScsIGxhYmVsKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3NlcyB0aGUgdXNlciBpbnB1dCBhbmQgSW5pdGlhbGl6ZXMgdGhlIENhbGVuZGFyIGV2ZXJ5dGltZSB0aGUgZGF0ZXBpY2tlciBwb3BvdmVyIGlzIG9wZW4uXG4gICAqL1xuICBwcml2YXRlIGluaXRpYWxpemVDYWxlbmRhcigpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGVOYXZpZ2F0aW9uU2VydmljZS5pbml0aWFsaXplQ2FsZW5kYXIoKTtcbiAgfVxufVxuIl19