@leanix/components 0.4.183 → 0.4.185

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.
@@ -69,10 +69,11 @@ export class OptionsDropdownComponent {
69
69
  this.maxHeight = 'none';
70
70
  this.closeOnSelect = true;
71
71
  this.overlayPositioning = false;
72
+ this.dropdownClass = '';
72
73
  this.overlayScrollStrategy = this.closeOnScroll ? this.scrollStrategies.close() : this.scrollStrategies.reposition();
73
74
  this.opened = new EventEmitter();
74
75
  this.closed = new EventEmitter();
75
- this.closedManually = new EventEmitter();
76
+ this.closedWithoutSelection = new EventEmitter();
76
77
  this.highlightedOptionIndex$ = new BehaviorSubject(0);
77
78
  this._open = false;
78
79
  this.isSubdropdownExpanded = false;
@@ -104,7 +105,7 @@ export class OptionsDropdownComponent {
104
105
  .pipe(filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.CLOSE), takeUntil(this.destroyed$))
105
106
  .subscribe(() => {
106
107
  this.closeDropdown();
107
- this.closedManually.emit();
108
+ this.closedWithoutSelection.emit();
108
109
  this.lxButton?.focus();
109
110
  });
110
111
  this.trigger.keyboardActions$
@@ -152,7 +153,7 @@ export class OptionsDropdownComponent {
152
153
  this.open = !this.open;
153
154
  if (!this.open) {
154
155
  this.closed.emit();
155
- this.closedManually.emit();
156
+ this.closedWithoutSelection.emit();
156
157
  }
157
158
  }
158
159
  setInitialHighlightingIndex() {
@@ -237,11 +238,11 @@ export class OptionsDropdownComponent {
237
238
  this.lxButton?.dispatchEvent(newEvent);
238
239
  }
239
240
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: OptionsDropdownComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ScrollStrategyOptions }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
240
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: OptionsDropdownComponent, isStandalone: true, selector: "lx-options-dropdown", inputs: { align: "align", closeOnScroll: "closeOnScroll", disabled: "disabled", maxHeight: "maxHeight", closeOnSelect: "closeOnSelect", overlayPositioning: "overlayPositioning" }, outputs: { opened: "opened", closed: "closed", closedManually: "closedManually" }, queries: [{ propertyName: "trigger", first: true, predicate: KeyboardActionSourceDirective, descendants: true }, { propertyName: "_options", predicate: OptionComponent, descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"!overlayPositioning\">\n <div lxAutoclose (autoclose)=\"closeDropdown()\">\n <div class=\"triggerContainer\" (click)=\"open = !open\">\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </div>\n <ng-container [ngTemplateOutlet]=\"dropdownTemplate\"></ng-container>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"overlayPositioning\">\n <div class=\"overlayOrigin triggerContainer\" (click)=\"toggleOpen()\" cdkOverlayOrigin #selectOrigin=\"cdkOverlayOrigin\">\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectOrigin\"\n [cdkConnectedOverlayScrollStrategy]=\"overlayScrollStrategy\"\n [cdkConnectedOverlayOpen]=\"open\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n >\n <div class=\"overlayDropdown\">\n <ng-container [ngTemplateOutlet]=\"dropdownTemplate\"></ng-container>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #triggerTemplate>\n <ng-content select=\"[lxKeyboardActionSource]\"></ng-content>\n</ng-template>\n\n<ng-template #dropdownTemplate>\n <ul\n *ngIf=\"open\"\n [id]=\"listboxId\"\n [class.left]=\"align === 'left'\"\n [class.showScrollbar]=\"maxHeight !== 'none'\"\n [style.max-height]=\"maxHeight\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.aria-owns]=\"optionIds.join(' ')\"\n >\n <ng-content></ng-content>\n </ul>\n</ng-template>\n", styles: [":host{display:inline-block;position:relative}.overlayDropdown ul{position:static}ul{position:absolute;background-color:#fff;border-radius:3px;box-shadow:0 8px 12px 2px #00000026;border:solid 1px #e1e5eb;text-align:left;list-style:none;margin:0;padding-left:0;z-index:20;white-space:nowrap}ul::-webkit-scrollbar{width:.5em;height:.5em;background-color:transparent}ul::-webkit-scrollbar-thumb{background-color:#c2c9d6;border-radius:6px}ul::-webkit-scrollbar-track-piece{background-color:transparent}ul.left{right:0;padding-right:0}ul.showScrollbar{overflow-y:auto}.triggerContainer{display:inline-block}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: AutocloseDirective, selector: "[lxAutoclose]", inputs: ["autocloseGroup"], outputs: ["autoclose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
241
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: OptionsDropdownComponent, isStandalone: true, selector: "lx-options-dropdown", inputs: { align: "align", closeOnScroll: "closeOnScroll", disabled: "disabled", maxHeight: "maxHeight", closeOnSelect: "closeOnSelect", overlayPositioning: "overlayPositioning", dropdownClass: "dropdownClass" }, outputs: { opened: "opened", closed: "closed", closedWithoutSelection: "closedWithoutSelection" }, queries: [{ propertyName: "trigger", first: true, predicate: KeyboardActionSourceDirective, descendants: true }, { propertyName: "_options", predicate: OptionComponent, descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"!overlayPositioning\">\n <div lxAutoclose (autoclose)=\"closeDropdown()\">\n <div class=\"triggerContainer\" (click)=\"toggleOpen()\">\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </div>\n <ng-container [ngTemplateOutlet]=\"dropdownTemplate\"></ng-container>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"overlayPositioning\">\n <div class=\"overlayOrigin triggerContainer\" (click)=\"toggleOpen()\" cdkOverlayOrigin #selectOrigin=\"cdkOverlayOrigin\">\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectOrigin\"\n [cdkConnectedOverlayScrollStrategy]=\"overlayScrollStrategy\"\n [cdkConnectedOverlayOpen]=\"open\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n (overlayOutsideClick)=\"closeDropdown(); closedWithoutSelection.emit()\"\n >\n <div class=\"overlayDropdown\">\n <ng-container [ngTemplateOutlet]=\"dropdownTemplate\"></ng-container>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #triggerTemplate>\n <ng-content select=\"[lxKeyboardActionSource]\"></ng-content>\n</ng-template>\n\n<ng-template #dropdownTemplate>\n <ul\n *ngIf=\"open\"\n [id]=\"listboxId\"\n [class]=\"dropdownClass\"\n [class.left]=\"align === 'left'\"\n [class.showScrollbar]=\"maxHeight !== 'none'\"\n [style.max-height]=\"maxHeight\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.aria-owns]=\"optionIds.join(' ')\"\n >\n <ng-content></ng-content>\n </ul>\n</ng-template>\n", styles: [":host{display:inline-block;position:relative}.overlayDropdown ul{position:static}ul{position:absolute;background-color:#fff;border-radius:3px;box-shadow:0 8px 12px 2px #00000026;border:solid 1px #e1e5eb;text-align:left;list-style:none;margin:0;padding-left:0;z-index:20;white-space:nowrap}ul::-webkit-scrollbar{width:.5em;height:.5em;background-color:transparent}ul::-webkit-scrollbar-thumb{background-color:#c2c9d6;border-radius:6px}ul::-webkit-scrollbar-track-piece{background-color:transparent}ul.left{right:0;padding-right:0}ul.showScrollbar{overflow-y:auto}.triggerContainer{display:inline-block}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: AutocloseDirective, selector: "[lxAutoclose]", inputs: ["autocloseGroup"], outputs: ["autoclose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
241
242
  }
242
243
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: OptionsDropdownComponent, decorators: [{
243
244
  type: Component,
244
- args: [{ selector: 'lx-options-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, NgTemplateOutlet, CdkOverlayOrigin, CdkConnectedOverlay, AutocloseDirective], template: "<ng-container *ngIf=\"!overlayPositioning\">\n <div lxAutoclose (autoclose)=\"closeDropdown()\">\n <div class=\"triggerContainer\" (click)=\"open = !open\">\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </div>\n <ng-container [ngTemplateOutlet]=\"dropdownTemplate\"></ng-container>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"overlayPositioning\">\n <div class=\"overlayOrigin triggerContainer\" (click)=\"toggleOpen()\" cdkOverlayOrigin #selectOrigin=\"cdkOverlayOrigin\">\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectOrigin\"\n [cdkConnectedOverlayScrollStrategy]=\"overlayScrollStrategy\"\n [cdkConnectedOverlayOpen]=\"open\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n >\n <div class=\"overlayDropdown\">\n <ng-container [ngTemplateOutlet]=\"dropdownTemplate\"></ng-container>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #triggerTemplate>\n <ng-content select=\"[lxKeyboardActionSource]\"></ng-content>\n</ng-template>\n\n<ng-template #dropdownTemplate>\n <ul\n *ngIf=\"open\"\n [id]=\"listboxId\"\n [class.left]=\"align === 'left'\"\n [class.showScrollbar]=\"maxHeight !== 'none'\"\n [style.max-height]=\"maxHeight\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.aria-owns]=\"optionIds.join(' ')\"\n >\n <ng-content></ng-content>\n </ul>\n</ng-template>\n", styles: [":host{display:inline-block;position:relative}.overlayDropdown ul{position:static}ul{position:absolute;background-color:#fff;border-radius:3px;box-shadow:0 8px 12px 2px #00000026;border:solid 1px #e1e5eb;text-align:left;list-style:none;margin:0;padding-left:0;z-index:20;white-space:nowrap}ul::-webkit-scrollbar{width:.5em;height:.5em;background-color:transparent}ul::-webkit-scrollbar-thumb{background-color:#c2c9d6;border-radius:6px}ul::-webkit-scrollbar-track-piece{background-color:transparent}ul.left{right:0;padding-right:0}ul.showScrollbar{overflow-y:auto}.triggerContainer{display:inline-block}\n"] }]
245
+ args: [{ selector: 'lx-options-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, NgTemplateOutlet, CdkOverlayOrigin, CdkConnectedOverlay, AutocloseDirective], template: "<ng-container *ngIf=\"!overlayPositioning\">\n <div lxAutoclose (autoclose)=\"closeDropdown()\">\n <div class=\"triggerContainer\" (click)=\"toggleOpen()\">\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </div>\n <ng-container [ngTemplateOutlet]=\"dropdownTemplate\"></ng-container>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"overlayPositioning\">\n <div class=\"overlayOrigin triggerContainer\" (click)=\"toggleOpen()\" cdkOverlayOrigin #selectOrigin=\"cdkOverlayOrigin\">\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectOrigin\"\n [cdkConnectedOverlayScrollStrategy]=\"overlayScrollStrategy\"\n [cdkConnectedOverlayOpen]=\"open\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n (overlayOutsideClick)=\"closeDropdown(); closedWithoutSelection.emit()\"\n >\n <div class=\"overlayDropdown\">\n <ng-container [ngTemplateOutlet]=\"dropdownTemplate\"></ng-container>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #triggerTemplate>\n <ng-content select=\"[lxKeyboardActionSource]\"></ng-content>\n</ng-template>\n\n<ng-template #dropdownTemplate>\n <ul\n *ngIf=\"open\"\n [id]=\"listboxId\"\n [class]=\"dropdownClass\"\n [class.left]=\"align === 'left'\"\n [class.showScrollbar]=\"maxHeight !== 'none'\"\n [style.max-height]=\"maxHeight\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.aria-owns]=\"optionIds.join(' ')\"\n >\n <ng-content></ng-content>\n </ul>\n</ng-template>\n", styles: [":host{display:inline-block;position:relative}.overlayDropdown ul{position:static}ul{position:absolute;background-color:#fff;border-radius:3px;box-shadow:0 8px 12px 2px #00000026;border:solid 1px #e1e5eb;text-align:left;list-style:none;margin:0;padding-left:0;z-index:20;white-space:nowrap}ul::-webkit-scrollbar{width:.5em;height:.5em;background-color:transparent}ul::-webkit-scrollbar-thumb{background-color:#c2c9d6;border-radius:6px}ul::-webkit-scrollbar-track-piece{background-color:transparent}ul.left{right:0;padding-right:0}ul.showScrollbar{overflow-y:auto}.triggerContainer{display:inline-block}\n"] }]
245
246
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.ScrollStrategyOptions }, { type: i0.Renderer2 }], propDecorators: { align: [{
246
247
  type: Input
247
248
  }], closeOnScroll: [{
@@ -254,6 +255,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
254
255
  type: Input
255
256
  }], overlayPositioning: [{
256
257
  type: Input
258
+ }], dropdownClass: [{
259
+ type: Input
257
260
  }], trigger: [{
258
261
  type: ContentChild,
259
262
  args: [KeyboardActionSourceDirective]
@@ -264,7 +267,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
264
267
  type: Output
265
268
  }], closed: [{
266
269
  type: Output
267
- }], closedManually: [{
270
+ }], closedWithoutSelection: [{
268
271
  type: Output
269
272
  }] } });
270
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL29wdGlvbnMtZHJvcGRvd24vb3B0aW9ucy1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL29wdGlvbnMtZHJvcGRvd24vb3B0aW9ucy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQTRELE1BQU0sc0JBQXNCLENBQUM7QUFDdkksT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6SSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNyRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxtREFBbUQsQ0FB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QUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFFaEUsSUFBSSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekMsQ0FBQzs4R0FoVVUsd0JBQXdCO2tHQUF4Qix3QkFBd0IsMlhBU3JCLDZCQUE2Qiw4REFDMUIsZUFBZSxnREMxQ2xDLHkrQ0E0Q0EscXBCRGRZLElBQUksNkZBQUUsZ0JBQWdCLG9KQUFFLGdCQUFnQix1SUFBRSxtQkFBbUIsNCtCQUFFLGtCQUFrQjs7MkZBRWhGLHdCQUF3QjtrQkFScEMsU0FBUzsrQkFDRSxxQkFBcUIsbUJBR2QsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLENBQUM7a0pBS25GLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDdUMsT0FBTztzQkFBbkQsWUFBWTt1QkFBQyw2QkFBNkI7Z0JBRTNDLFFBQVE7c0JBRFAsZUFBZTt1QkFBQyxlQUFlLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUk3QyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtDb25uZWN0ZWRPdmVybGF5LCBDZGtPdmVybGF5T3JpZ2luLCBDb25uZWN0ZWRQb3NpdGlvbiwgU2Nyb2xsU3RyYXRlZ3ksIFNjcm9sbFN0cmF0ZWd5T3B0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBSZW5kZXJlcjJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBwaWNrLCB1bmlxdWVJZCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGZyb21FdmVudCwgbWVyZ2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGVsYXksIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgd2l0aExhdGVzdEZyb20gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBdXRvY2xvc2VEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9jb3JlLXVpL2RpcmVjdGl2ZXMvYXV0b2Nsb3NlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBLZXlib2FyZEFjdGlvblNvdXJjZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMva2V5Ym9hcmQtYWN0aW9uLXNvdXJjZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgS2V5Ym9hcmRTZWxlY3RBY3Rpb24gfSBmcm9tICcuLi9rZXlib2FyZC1zZWxlY3QuZGlyZWN0aXZlJztcbmltcG9ydCB7IE9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL29wdGlvbi9vcHRpb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHgtb3B0aW9ucy1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnb3B0aW9ucy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydvcHRpb25zLWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdJZiwgTmdUZW1wbGF0ZU91dGxldCwgQ2RrT3ZlcmxheU9yaWdpbiwgQ2RrQ29ubmVjdGVkT3ZlcmxheSwgQXV0b2Nsb3NlRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBPcHRpb25zRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICByZWFkb25seSBOQU1FID0gJ09wdGlvbnNEcm9wZG93bkNvbXBvbmVudCc7XG5cbiAgQElucHV0KCkgYWxpZ246ICdyaWdodCcgfCAnbGVmdCcgPSAncmlnaHQnO1xuICBASW5wdXQoKSBjbG9zZU9uU2Nyb2xsOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1heEhlaWdodDogc3RyaW5nID0gJ25vbmUnO1xuICBASW5wdXQoKSBjbG9zZU9uU2VsZWN0OiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgb3ZlcmxheVBvc2l0aW9uaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBDb250ZW50Q2hpbGQoS2V5Ym9hcmRBY3Rpb25Tb3VyY2VEaXJlY3RpdmUpIHRyaWdnZXIhOiBLZXlib2FyZEFjdGlvblNvdXJjZURpcmVjdGl2ZTtcbiAgQENvbnRlbnRDaGlsZHJlbihPcHRpb25Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgX29wdGlvbnMhOiBRdWVyeUxpc3Q8T3B0aW9uQ29tcG9uZW50PjtcbiAgb3ZlcmxheVNjcm9sbFN0cmF0ZWd5OiBTY3JvbGxTdHJhdGVneSA9IHRoaXMuY2xvc2VPblNjcm9sbCA/IHRoaXMuc2Nyb2xsU3RyYXRlZ2llcy5jbG9zZSgpIDogdGhpcy5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKTtcblxuICBAT3V0cHV0KCkgb3BlbmVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgY2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgY2xvc2VkTWFudWFsbHkgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgZ2V0IG92ZXJsYXlQb3NpdGlvbnMoKTogQ29ubmVjdGVkUG9zaXRpb25bXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luWDogdGhpcy5hbGlnbiA9PT0gJ3JpZ2h0JyA/ICdzdGFydCcgOiAnZW5kJyxcbiAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgIG92ZXJsYXlYOiB0aGlzLmFsaWduID09PSAncmlnaHQnID8gJ3N0YXJ0JyA6ICdlbmQnLFxuICAgICAgICBvdmVybGF5WTogJ3RvcCdcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6IHRoaXMuYWxpZ24gPT09ICdyaWdodCcgPyAnc3RhcnQnIDogJ2VuZCcsXG4gICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICBvdmVybGF5WDogdGhpcy5hbGlnbiA9PT0gJ3JpZ2h0JyA/ICdzdGFydCcgOiAnZW5kJyxcbiAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nXG4gICAgICB9XG4gICAgXTtcbiAgfVxuXG4gIHNldCBvcGVuKHZhbHVlKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9vcGVuID0gdmFsdWU7XG4gICAgaWYgKHRoaXMubHhCdXR0b24pIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMubHhCdXR0b24sICdhcmlhLWV4cGFuZGVkJywgdGhpcy5fb3Blbi50b1N0cmluZygpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50cmlnZ2VyKSB7XG4gICAgICAvLyBEb24ndCBlbWl0IGtleWJvYXJkIGFjdGlvbnMgd2hpbGUgdGhlIGRyb3Bkb3duIGlzIG5vdCBvcGVuIHlldC5cbiAgICAgIHRoaXMudHJpZ2dlci5kb250RW1pdCA9ICF0aGlzLm9wZW47XG4gICAgfVxuICAgIGlmICh0aGlzLm9wZW4pIHtcbiAgICAgIHRoaXMuaXNTdWJkcm9wZG93bkV4cGFuZGVkID0gZmFsc2U7XG4gICAgICB0aGlzLnNldEluaXRpYWxIaWdobGlnaHRpbmdJbmRleCgpO1xuICAgICAgdGhpcy5vcGVuZWQuZW1pdCgpO1xuICAgIH1cbiAgICB0aGlzLmNoYW5nZURldGVjdGlvbi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGdldCBvcGVuKCkge1xuICAgIHJldHVybiB0aGlzLl9vcGVuO1xuICB9XG5cbiAgZ2V0IG9wdGlvbnMoKTogT3B0aW9uQ29tcG9uZW50W10ge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zPy50b0FycmF5KCkgfHwgW107XG4gIH1cblxuICBnZXQgb3B0aW9uSWRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm1hcCgobykgPT4gby5vcHRpb25JZCk7XG4gIH1cblxuICBnZXQgbHhCdXR0b24oKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLnRyaWdnZXI/Lm5hdGl2ZUVsZW1lbnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgaGlnaGxpZ2h0ZWRPcHRpb25JbmRleCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gIHByaXZhdGUgX29wZW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc1N1YmRyb3Bkb3duRXhwYW5kZWQgPSBmYWxzZTtcbiAgcmVhZG9ubHkgbGlzdGJveElkOiBzdHJpbmc7XG5cbiAgcmVhZG9ubHkgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Nyb2xsU3RyYXRlZ2llczogU2Nyb2xsU3RyYXRlZ3lPcHRpb25zLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICApIHtcbiAgICB0aGlzLmxpc3Rib3hJZCA9IHVuaXF1ZUlkKCdsaXN0Ym94Jyk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy50cmlnZ2VyLmRvbnRFbWl0ID0gIXRoaXMub3BlbjtcblxuICAgIGNvbnN0IG9wdGlvbnNDaGFuZ2VzJCA9IHRoaXMuX29wdGlvbnMuY2hhbmdlcy5waXBlKFxuICAgICAgc3RhcnRXaXRoKHRoaXMuX29wdGlvbnMpLFxuICAgICAgbWFwKChvcHRpb25zOiBRdWVyeUxpc3Q8T3B0aW9uQ29tcG9uZW50PikgPT4gb3B0aW9ucy50b0FycmF5KCkpXG4gICAgKTtcblxuICAgIHRoaXMudHJpZ2dlci5rZXlib2FyZEFjdGlvbnMkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChrZXlib2FyZFNlbGVjdEFjdGlvbikgPT4ga2V5Ym9hcmRTZWxlY3RBY3Rpb24gPT09IEtleWJvYXJkU2VsZWN0QWN0aW9uLk5FWFQpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmhpZ2hsaWdodGVkT3B0aW9uSW5kZXgkLCBvcHRpb25zQ2hhbmdlcyQsIChfLCBpbmRleCwgb3B0aW9ucykgPT4gdGhpcy5uZXh0KGluZGV4LCBvcHRpb25zKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHRoaXMuaGlnaGxpZ2h0ZWRPcHRpb25JbmRleCQpO1xuXG4gICAgdGhpcy50cmlnZ2VyLmtleWJvYXJkQWN0aW9ucyRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGtleWJvYXJkU2VsZWN0QWN0aW9uKSA9PiBrZXlib2FyZFNlbGVjdEFjdGlvbiA9PT0gS2V5Ym9hcmRTZWxlY3RBY3Rpb24uUFJFViksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuaGlnaGxpZ2h0ZWRPcHRpb25JbmRleCQsIG9wdGlvbnNDaGFuZ2VzJCwgKF8sIGluZGV4LCBvcHRpb25zKSA9PiB0aGlzLnByZXYoaW5kZXgsIG9wdGlvbnMpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUodGhpcy5oaWdobGlnaHRlZE9wdGlvbkluZGV4JCk7XG5cbiAgICB0aGlzLnRyaWdnZXIua2V5Ym9hcmRBY3Rpb25zJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoa2V5Ym9hcmRTZWxlY3RBY3Rpb24pID0+IGtleWJvYXJkU2VsZWN0QWN0aW9uID09PSBLZXlib2FyZFNlbGVjdEFjdGlvbi5GSVJTVCksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuaGlnaGxpZ2h0ZWRPcHRpb25JbmRleCQsIG9wdGlvbnNDaGFuZ2VzJCwgKF8sIF9pbmRleCwgX29wdGlvbnMpID0+IDApLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh0aGlzLmhpZ2hsaWdodGVkT3B0aW9uSW5kZXgkKTtcblxuICAgIHRoaXMudHJpZ2dlci5rZXlib2FyZEFjdGlvbnMkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChrZXlib2FyZFNlbGVjdEFjdGlvbikgPT4ga2V5Ym9hcmRTZWxlY3RBY3Rpb24gPT09IEtleWJvYXJkU2VsZWN0QWN0aW9uLkxBU1QpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmhpZ2hsaWdodGVkT3B0aW9uSW5kZXgkLCBvcHRpb25zQ2hhbmdlcyQsIChfLCBfaW5kZXgsIF9vcHRpb25zKSA9PiB0aGlzLm9wdGlvbnMubGVuZ3RoIC0gMSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHRoaXMuaGlnaGxpZ2h0ZWRPcHRpb25JbmRleCQpO1xuXG4gICAgdGhpcy50cmlnZ2VyLmtleWJvYXJkQWN0aW9ucyRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGtleWJvYXJkU2VsZWN0QWN0aW9uKSA9PiBrZXlib2FyZFNlbGVjdEFjdGlvbiA9PT0gS2V5Ym9hcmRTZWxlY3RBY3Rpb24uTEVGVCksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuaGlnaGxpZ2h0ZWRPcHRpb25JbmRleCQsIG9wdGlvbnNDaGFuZ2VzJCwgKF8sIGluZGV4LCBvcHRpb25zKSA9PlxuICAgICAgICAgIHRoaXMuaXNTdWJkcm9wZG93bkV4cGFuZGVkID8gdGhpcy5jb2xsYXBzZShpbmRleCwgb3B0aW9ucykgOiB0aGlzLmV4cGFuZChpbmRleCwgb3B0aW9ucylcbiAgICAgICAgKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUodGhpcy5oaWdobGlnaHRlZE9wdGlvbkluZGV4JCk7XG5cbiAgICB0aGlzLnRyaWdnZXIua2V5Ym9hcmRBY3Rpb25zJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoa2V5Ym9hcmRTZWxlY3RBY3Rpb24pID0+IGtleWJvYXJkU2VsZWN0QWN0aW9uID09PSBLZXlib2FyZFNlbGVjdEFjdGlvbi5SSUdIVCksXG4gICAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuaGlnaGxpZ2h0ZWRPcHRpb25JbmRleCQsIG9wdGlvbnNDaGFuZ2VzJCwgKF8sIGluZGV4LCBvcHRpb25zKSA9PlxuICAgICAgICAgIHRoaXMuaXNTdWJkcm9wZG93bkV4cGFuZGVkID8gdGhpcy5jb2xsYXBzZShpbmRleCwgb3B0aW9ucykgOiB0aGlzLmV4cGFuZChpbmRleCwgb3B0aW9ucylcbiAgICAgICAgKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUodGhpcy5oaWdobGlnaHRlZE9wdGlvbkluZGV4JCk7XG5cbiAgICB0aGlzLnRyaWdnZXIua2V5Ym9hcmRBY3Rpb25zJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoa2V5Ym9hcmRTZWxlY3RBY3Rpb24pID0+IGtleWJvYXJkU2VsZWN0QWN0aW9uID09PSBLZXlib2FyZFNlbGVjdEFjdGlvbi5DTE9TRSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgIHRoaXMuY2xvc2VkTWFudWFsbHkuZW1pdCgpO1xuICAgICAgICB0aGlzLmx4QnV0dG9uPy5mb2N1cygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnRyaWdnZXIua2V5Ym9hcmRBY3Rpb25zJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoa2V5Ym9hcmRTZWxlY3RBY3Rpb24pID0+IGtleWJvYXJkU2VsZWN0QWN0aW9uID09PSBLZXlib2FyZFNlbGVjdEFjdGlvbi5FWEVDVVRFKSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5oaWdobGlnaHRlZE9wdGlvbkluZGV4JCwgKF8sIGluZGV4KSA9PiBpbmRleCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChpbmRleCkgPT4ge1xuICAgICAgICB0aGlzLm9wdGlvbnNbaW5kZXhdPy5zZWxlY3RPcHRpb24oKTtcbiAgICAgICAgdGhpcy5seEJ1dHRvbj8uZm9jdXMoKTtcbiAgICAgIH0pO1xuXG4gICAgLyoqIENvbWJpbmVkIHN0cmVhbSBvZiBhbGwgb2YgdGhlIGNoaWxkIG9wdGlvbnMnIHNlbGVjdCBvdXRwdXRzLiAqL1xuICAgIHRoaXMuX29wdGlvbnMuY2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh0aGlzLl9vcHRpb25zKSxcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuY2xvc2VPblNlbGVjdCksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiBtZXJnZSguLi50aGlzLl9vcHRpb25zLm1hcCgob3B0aW9uKSA9PiBvcHRpb24uc2VsZWN0KSwgLi4udGhpcy5fb3B0aW9ucy5tYXAoKG9wdGlvbikgPT4gb3B0aW9uLnNlbGVjdGVkQ2xpY2spKSksXG4gICAgICAgIGRlbGF5KDApLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoX3ZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9vcHRpb25zLmNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgodGhpcy5fb3B0aW9ucyksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiBtZXJnZSguLi50aGlzLl9vcHRpb25zLm1hcCgob3B0aW9uKSA9PiBvcHRpb24ua2V5RG93bkFjdGlvbikpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlT3B0aW9uS2V5RG93bihldmVudCk7XG4gICAgICB9KTtcblxuICAgIGNvbWJpbmVMYXRlc3QoW29wdGlvbnNDaGFuZ2VzJCwgdGhpcy5oaWdobGlnaHRlZE9wdGlvbkluZGV4JF0pXG4gICAgICAucGlwZShcbiAgICAgICAgZGVsYXkoMCksXG4gICAgICAgIG1hcCgoW29wdGlvbnMsIGluZGV4XTogW09wdGlvbkNvbXBvbmVudFtdLCBudW1iZXJdKSA9PiBvcHRpb25zW2luZGV4XSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChvcHRpb25Ub0JlSGlnaGxpZ2h0ZWQpID0+IHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmZvckVhY2goKG9wdGlvbikgPT4gb3B0aW9uLnNldEhpZ2hsaWdodGVkKG9wdGlvblRvQmVIaWdobGlnaHRlZCA9PT0gb3B0aW9uKSk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5jbG9zZU9uU2Nyb2xsKSB7XG4gICAgICBmcm9tRXZlbnQod2luZG93LCAnc2Nyb2xsJylcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMCksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnRyaWdnZXIuYmx1cigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnNldEluaXRpYWxBY2Nlc3NpYmlsaXR5QXR0cmlidXRlcygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGNsb3NlRHJvcGRvd24oKSB7XG4gICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICB9XG5cbiAgdG9nZ2xlT3BlbigpIHtcbiAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xuICAgIGlmICghdGhpcy5vcGVuKSB7XG4gICAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gICAgICB0aGlzLmNsb3NlZE1hbnVhbGx5LmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEluaXRpYWxIaWdobGlnaHRpbmdJbmRleCgpIHtcbiAgICBsZXQgaW5pdGlhbEluZGV4ID0gdGhpcy5vcHRpb25zLmZpbmRJbmRleCgob3B0aW9uKSA9PiBvcHRpb24uc2VsZWN0ZWQgJiYgdGhpcy5vcHRpb25Jc0hpZ2hsaWdodGFibGUob3B0aW9uKSk7XG4gICAgaWYgKGluaXRpYWxJbmRleCA9PT0gLTEpIHtcbiAgICAgIGluaXRpYWxJbmRleCA9IHRoaXMub3B0aW9ucy5maW5kSW5kZXgoKG9wdGlvbikgPT4gdGhpcy5vcHRpb25Jc0hpZ2hsaWdodGFibGUob3B0aW9uKSk7XG4gICAgfVxuICAgIHRoaXMuaGlnaGxpZ2h0ZWRPcHRpb25JbmRleCQubmV4dChpbml0aWFsSW5kZXgpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcmV2KGN1cnJlbnRJbmRleDogbnVtYmVyLCBpdGVtczogT3B0aW9uQ29tcG9uZW50W10pOiBudW1iZXIge1xuICAgIGlmIChjdXJyZW50SW5kZXggPiAwKSB7XG4gICAgICBjb25zdCBwcmV2RW5hYmxlZEluZGV4ID0gaXRlbXMubWFwKChvcHRpb24pID0+ICF0aGlzLm9wdGlvbklzSGlnaGxpZ2h0YWJsZShvcHRpb24pKS5sYXN0SW5kZXhPZihmYWxzZSwgY3VycmVudEluZGV4IC0gMSk7XG4gICAgICByZXR1cm4gcHJldkVuYWJsZWRJbmRleCAhPT0gLTEgPyBwcmV2RW5hYmxlZEluZGV4IDogY3VycmVudEluZGV4O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY3VycmVudEluZGV4O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbmV4dChjdXJyZW50SW5kZXg6IG51bWJlciwgaXRlbXM6IE9wdGlvbkNvbXBvbmVudFtdKTogbnVtYmVyIHtcbiAgICBpZiAoY3VycmVudEluZGV4IDwgaXRlbXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBuZXh0RW5hYmxlZEluZGV4ID0gaXRlbXMubWFwKChvcHRpb24pID0+ICF0aGlzLm9wdGlvbklzSGlnaGxpZ2h0YWJsZShvcHRpb24pKS5pbmRleE9mKGZhbHNlLCBjdXJyZW50SW5kZXggKyAxKTtcbiAgICAgIHJldHVybiBuZXh0RW5hYmxlZEluZGV4ICE9PSAtMSA/IG5leHRFbmFibGVkSW5kZXggOiBjdXJyZW50SW5kZXg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjdXJyZW50SW5kZXg7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBleHBhbmQoY3VycmVudEluZGV4OiBudW1iZXIsIGl0ZW1zOiBPcHRpb25Db21wb25lbnRbXSkge1xuICAgIGlmIChpdGVtc1tjdXJyZW50SW5kZXhdIS5oYXNTdWJkcm9wZG93bikge1xuICAgICAgdGhpcy5pc1N1YmRyb3Bkb3duRXhwYW5kZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuIHRoaXMubmV4dChjdXJyZW50SW5kZXgsIGl0ZW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGN1cnJlbnRJbmRleDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbGxhcHNlKGN1cnJlbnRJbmRleDogbnVtYmVyLCBpdGVtczogT3B0aW9uQ29tcG9uZW50W10pIHtcbiAgICBpZiAodGhpcy5pc1N1YmRyb3Bkb3duRXhwYW5kZWQpIHtcbiAgICAgIHRoaXMuaXNTdWJkcm9wZG93bkV4cGFuZGVkID0gZmFsc2U7XG4gICAgICByZXR1cm4gdGhpcy5wcmV2KGN1cnJlbnRJbmRleCwgaXRlbXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY3VycmVudEluZGV4O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb3B0aW9uSXNIaWdobGlnaHRhYmxlKG9wdGlvbjogT3B0aW9uQ29tcG9uZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3QgaXNUb3BsZXZlbE9wdGlvbkFuZEFsbG93ZWQgPSAhb3B0aW9uLmlzU3Vib3B0aW9uICYmICF0aGlzLmlzU3ViZHJvcGRvd25FeHBhbmRlZDtcbiAgICBjb25zdCBpc1NlY29uZGxldmVsT3B0aW9uQW5kQWxsb3dlZCA9IG9wdGlvbi5pc1N1Ym9wdGlvbiAmJiB0aGlzLmlzU3ViZHJvcGRvd25FeHBhbmRlZDtcbiAgICByZXR1cm4gIW9wdGlvbi5kaXNhYmxlZCAmJiAoaXNUb3BsZXZlbE9wdGlvbkFuZEFsbG93ZWQgfHwgaXNTZWNvbmRsZXZlbE9wdGlvbkFuZEFsbG93ZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2dyYW1tYXRpY2FsbHkgc2V0cyBpbml0aWFsIGFjY2Vzc2liaWxpdHkgYXR0cmlidXRlcyBvbiB0aGUgdHJpZ2dlciBidXR0b24gc28gdGhhdCB3ZVxuICAgKiBkb24ndCBoYXZlIHRvIGRvIGl0IG1hbnVhbGx5IGV2ZXJ5IHRpbWUgd2UgZGVjbGFyZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGlzIGNvbXBvbmVudFxuICAgKi9cbiAgcHJpdmF0ZSBzZXRJbml0aWFsQWNjZXNzaWJpbGl0eUF0dHJpYnV0ZXMoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmx4QnV0dG9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5seEJ1dHRvbiwgJ3JvbGUnLCAnY29tYm9ib3gnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmx4QnV0dG9uLCAnYXJpYS1oYXNwb3B1cCcsICdsaXN0Ym94Jyk7XG4gICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5seEJ1dHRvbiwgJ3RhYmluZGV4JywgJzAnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmx4QnV0dG9uLCAnYXJpYS1jb250cm9scycsIHRoaXMubGlzdGJveElkKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmx4QnV0dG9uLCAnYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xuICB9XG5cbiAgaGFuZGxlT3B0aW9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIC8vIEluIG9yZGVyIHRvIGtlZXAgdGhlIGNlbnRyYWxpemVkIGtleWJvYXJkIGV2ZW50IG1hbmFnZW1lbnQgbG9naWMgZnJvbSBgS2V5Ym9hcmRBY3Rpb25Tb3VyY2VEaXJlY3RpdmVgXG4gICAgLy8gd2UgZHVwbGljYXRlIHRoZSBvcHRpb24gZXZlbnQgaGVyZSBhbmQgdHJpZ2dlciBpdCBhZ2FpbiBmcm9tIGx4QnV0dG9uLlxuICAgIGNvbnN0IG5ld0V2ZW50T3B0aW9ucyA9IHBpY2soZXZlbnQsIFtcbiAgICAgICdpc1RydXN0ZWQnLFxuICAgICAgJ2FsdEtleScsXG4gICAgICAnYnViYmxlcycsXG4gICAgICAnY2hhckNvZGUnLFxuICAgICAgJ2NhbmNlbGFibGUnLFxuICAgICAgJ2NvbXBvc2VkJyxcbiAgICAgICdrZXknLFxuICAgICAgJ2N0cmxLZXknLFxuICAgICAgJ2RlZmF1bHRQcmV2ZW50ZWQnLFxuICAgICAgJ2tleUNvZGUnLFxuICAgICAgJ2NvZGUnXG4gICAgXSk7XG4gICAgY29uc3QgbmV3RXZlbnQgPSBuZXcgS2V5Ym9hcmRFdmVudChldmVudC50eXBlLCBuZXdFdmVudE9wdGlvbnMpO1xuXG4gICAgdGhpcy5seEJ1dHRvbj8uZGlzcGF0Y2hFdmVudChuZXdFdmVudCk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhb3ZlcmxheVBvc2l0aW9uaW5nXCI+XG4gIDxkaXYgbHhBdXRvY2xvc2UgKGF1dG9jbG9zZSk9XCJjbG9zZURyb3Bkb3duKClcIj5cbiAgICA8ZGl2IGNsYXNzPVwidHJpZ2dlckNvbnRhaW5lclwiIChjbGljayk9XCJvcGVuID0gIW9wZW5cIj5cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidHJpZ2dlclRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJkcm9wZG93blRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJvdmVybGF5UG9zaXRpb25pbmdcIj5cbiAgPGRpdiBjbGFzcz1cIm92ZXJsYXlPcmlnaW4gdHJpZ2dlckNvbnRhaW5lclwiIChjbGljayk9XCJ0b2dnbGVPcGVuKClcIiBjZGtPdmVybGF5T3JpZ2luICNzZWxlY3RPcmlnaW49XCJjZGtPdmVybGF5T3JpZ2luXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cmlnZ2VyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxuZy10ZW1wbGF0ZVxuICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlcbiAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9yaWdpbl09XCJzZWxlY3RPcmlnaW5cIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5U2Nyb2xsU3RyYXRlZ3ldPVwib3ZlcmxheVNjcm9sbFN0cmF0ZWd5XCJcbiAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwib3BlblwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbnNdPVwib3ZlcmxheVBvc2l0aW9uc1wiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwib3ZlcmxheURyb3Bkb3duXCI+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRyb3Bkb3duVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3RyaWdnZXJUZW1wbGF0ZT5cbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2x4S2V5Ym9hcmRBY3Rpb25Tb3VyY2VdXCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkcm9wZG93blRlbXBsYXRlPlxuICA8dWxcbiAgICAqbmdJZj1cIm9wZW5cIlxuICAgIFtpZF09XCJsaXN0Ym94SWRcIlxuICAgIFtjbGFzcy5sZWZ0XT1cImFsaWduID09PSAnbGVmdCdcIlxuICAgIFtjbGFzcy5zaG93U2Nyb2xsYmFyXT1cIm1heEhlaWdodCAhPT0gJ25vbmUnXCJcbiAgICBbc3R5bGUubWF4LWhlaWdodF09XCJtYXhIZWlnaHRcIlxuICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICBbYXR0ci5hcmlhLW93bnNdPVwib3B0aW9uSWRzLmpvaW4oJyAnKVwiXG4gID5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvdWw+XG48L25nLXRlbXBsYXRlPlxuIl19
273
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL29wdGlvbnMtZHJvcGRvd24vb3B0aW9ucy1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL29wdGlvbnMtZHJvcGRvd24vb3B0aW9ucy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQTRELE1BQU0sc0JBQXNCLENBQUM7QUFDdkksT0FBTyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBR1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakYsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6SSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNyRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxtREFBbUQsQ0FB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O1FBQ0gsTUFBTSxRQUFRLEdBQUcsSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQztRQUVoRSxJQUFJLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxDQUFDOzhHQWpVVSx3QkFBd0I7a0dBQXhCLHdCQUF3QiwyYUFVckIsNkJBQTZCLDhEQUMxQixlQUFlLGdEQzNDbEMsc2xEQThDQSxxcEJEaEJZLElBQUksNkZBQUUsZ0JBQWdCLG9KQUFFLGdCQUFnQix1SUFBRSxtQkFBbUIsNCtCQUFFLGtCQUFrQjs7MkZBRWhGLHdCQUF3QjtrQkFScEMsU0FBUzsrQkFDRSxxQkFBcUIsbUJBR2QsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLENBQUM7a0pBS25GLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUN1QyxPQUFPO3NCQUFuRCxZQUFZO3VCQUFDLDZCQUE2QjtnQkFFM0MsUUFBUTtzQkFEUCxlQUFlO3VCQUFDLGVBQWUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBSTdDLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csc0JBQXNCO3NCQUEvQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrQ29ubmVjdGVkT3ZlcmxheSwgQ2RrT3ZlcmxheU9yaWdpbiwgQ29ubmVjdGVkUG9zaXRpb24sIFNjcm9sbFN0cmF0ZWd5LCBTY3JvbGxTdHJhdGVneU9wdGlvbnMgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcGljaywgdW5pcXVlSWQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmcm9tRXZlbnQsIG1lcmdlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRlbGF5LCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXV0b2Nsb3NlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS11aS9kaXJlY3RpdmVzL2F1dG9jbG9zZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgS2V5Ym9hcmRBY3Rpb25Tb3VyY2VEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2tleWJvYXJkLWFjdGlvbi1zb3VyY2UuZGlyZWN0aXZlJztcbmltcG9ydCB7IEtleWJvYXJkU2VsZWN0QWN0aW9uIH0gZnJvbSAnLi4va2V5Ym9hcmQtc2VsZWN0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPcHRpb25Db21wb25lbnQgfSBmcm9tICcuLi9vcHRpb24vb3B0aW9uLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x4LW9wdGlvbnMtZHJvcGRvd24nLFxuICB0ZW1wbGF0ZVVybDogJ29wdGlvbnMtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnb3B0aW9ucy1kcm9wZG93bi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nSWYsIE5nVGVtcGxhdGVPdXRsZXQsIENka092ZXJsYXlPcmlnaW4sIENka0Nvbm5lY3RlZE92ZXJsYXksIEF1dG9jbG9zZURpcmVjdGl2ZV1cbn0pXG5leHBvcnQgY2xhc3MgT3B0aW9uc0Ryb3Bkb3duQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcmVhZG9ubHkgTkFNRSA9ICdPcHRpb25zRHJvcGRvd25Db21wb25lbnQnO1xuXG4gIEBJbnB1dCgpIGFsaWduOiAncmlnaHQnIHwgJ2xlZnQnID0gJ3JpZ2h0JztcbiAgQElucHV0KCkgY2xvc2VPblNjcm9sbDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBtYXhIZWlnaHQ6IHN0cmluZyA9ICdub25lJztcbiAgQElucHV0KCkgY2xvc2VPblNlbGVjdDogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIG92ZXJsYXlQb3NpdGlvbmluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkcm9wZG93bkNsYXNzOiBzdHJpbmcgPSAnJztcbiAgQENvbnRlbnRDaGlsZChLZXlib2FyZEFjdGlvblNvdXJjZURpcmVjdGl2ZSkgdHJpZ2dlciE6IEtleWJvYXJkQWN0aW9uU291cmNlRGlyZWN0aXZlO1xuICBAQ29udGVudENoaWxkcmVuKE9wdGlvbkNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBfb3B0aW9ucyE6IFF1ZXJ5TGlzdDxPcHRpb25Db21wb25lbnQ+O1xuICBvdmVybGF5U2Nyb2xsU3RyYXRlZ3k6IFNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5jbG9zZU9uU2Nyb2xsID8gdGhpcy5zY3JvbGxTdHJhdGVnaWVzLmNsb3NlKCkgOiB0aGlzLnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpO1xuXG4gIEBPdXRwdXQoKSBvcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBjbG9zZWRXaXRob3V0U2VsZWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIGdldCBvdmVybGF5UG9zaXRpb25zKCk6IENvbm5lY3RlZFBvc2l0aW9uW10ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6IHRoaXMuYWxpZ24gPT09ICdyaWdodCcgPyAnc3RhcnQnIDogJ2VuZCcsXG4gICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxuICAgICAgICBvdmVybGF5WDogdGhpcy5hbGlnbiA9PT0gJ3JpZ2h0JyA/ICdzdGFydCcgOiAnZW5kJyxcbiAgICAgICAgb3ZlcmxheVk6ICd0b3AnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvcmlnaW5YOiB0aGlzLmFsaWduID09PSAncmlnaHQnID8gJ3N0YXJ0JyA6ICdlbmQnLFxuICAgICAgICBvcmlnaW5ZOiAndG9wJyxcbiAgICAgICAgb3ZlcmxheVg6IHRoaXMuYWxpZ24gPT09ICdyaWdodCcgPyAnc3RhcnQnIDogJ2VuZCcsXG4gICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJ1xuICAgICAgfVxuICAgIF07XG4gIH1cblxuICBzZXQgb3Blbih2YWx1ZSkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fb3BlbiA9IHZhbHVlO1xuICAgIGlmICh0aGlzLmx4QnV0dG9uKSB7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmx4QnV0dG9uLCAnYXJpYS1leHBhbmRlZCcsIHRoaXMuX29wZW4udG9TdHJpbmcoKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudHJpZ2dlcikge1xuICAgICAgLy8gRG9uJ3QgZW1pdCBrZXlib2FyZCBhY3Rpb25zIHdoaWxlIHRoZSBkcm9wZG93biBpcyBub3Qgb3BlbiB5ZXQuXG4gICAgICB0aGlzLnRyaWdnZXIuZG9udEVtaXQgPSAhdGhpcy5vcGVuO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcGVuKSB7XG4gICAgICB0aGlzLmlzU3ViZHJvcGRvd25FeHBhbmRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5zZXRJbml0aWFsSGlnaGxpZ2h0aW5nSW5kZXgoKTtcbiAgICAgIHRoaXMub3BlbmVkLmVtaXQoKTtcbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb24ubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBnZXQgb3BlbigpIHtcbiAgICByZXR1cm4gdGhpcy5fb3BlbjtcbiAgfVxuXG4gIGdldCBvcHRpb25zKCk6IE9wdGlvbkNvbXBvbmVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucz8udG9BcnJheSgpIHx8IFtdO1xuICB9XG5cbiAgZ2V0IG9wdGlvbklkcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5tYXAoKG8pID0+IG8ub3B0aW9uSWQpO1xuICB9XG5cbiAgZ2V0IGx4QnV0dG9uKCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyPy5uYXRpdmVFbGVtZW50KCk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGhpZ2hsaWdodGVkT3B0aW9uSW5kZXgkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuICBwcml2YXRlIF9vcGVuID0gZmFsc2U7XG4gIHByaXZhdGUgaXNTdWJkcm9wZG93bkV4cGFuZGVkID0gZmFsc2U7XG4gIHJlYWRvbmx5IGxpc3Rib3hJZDogc3RyaW5nO1xuXG4gIHJlYWRvbmx5IGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNjcm9sbFN0cmF0ZWdpZXM6IFNjcm9sbFN0cmF0ZWd5T3B0aW9ucyxcbiAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgKSB7XG4gICAgdGhpcy5saXN0Ym94SWQgPSB1bmlxdWVJZCgnbGlzdGJveCcpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMudHJpZ2dlci5kb250RW1pdCA9ICF0aGlzLm9wZW47XG5cbiAgICBjb25zdCBvcHRpb25zQ2hhbmdlcyQgPSB0aGlzLl9vcHRpb25zLmNoYW5nZXMucGlwZShcbiAgICAgIHN0YXJ0V2l0aCh0aGlzLl9vcHRpb25zKSxcbiAgICAgIG1hcCgob3B0aW9uczogUXVlcnlMaXN0PE9wdGlvbkNvbXBvbmVudD4pID0+IG9wdGlvbnMudG9BcnJheSgpKVxuICAgICk7XG5cbiAgICB0aGlzLnRyaWdnZXIua2V5Ym9hcmRBY3Rpb25zJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoa2V5Ym9hcmRTZWxlY3RBY3Rpb24pID0+IGtleWJvYXJkU2VsZWN0QWN0aW9uID09PSBLZXlib2FyZFNlbGVjdEFjdGlvbi5ORVhUKSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5oaWdobGlnaHRlZE9wdGlvbkluZGV4JCwgb3B0aW9uc0NoYW5nZXMkLCAoXywgaW5kZXgsIG9wdGlvbnMpID0+IHRoaXMubmV4dChpbmRleCwgb3B0aW9ucykpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh0aGlzLmhpZ2hsaWdodGVkT3B0aW9uSW5kZXgkKTtcblxuICAgIHRoaXMudHJpZ2dlci5rZXlib2FyZEFjdGlvbnMkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChrZXlib2FyZFNlbGVjdEFjdGlvbikgPT4ga2V5Ym9hcmRTZWxlY3RBY3Rpb24gPT09IEtleWJvYXJkU2VsZWN0QWN0aW9uLlBSRVYpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmhpZ2hsaWdodGVkT3B0aW9uSW5kZXgkLCBvcHRpb25zQ2hhbmdlcyQsIChfLCBpbmRleCwgb3B0aW9ucykgPT4gdGhpcy5wcmV2KGluZGV4LCBvcHRpb25zKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHRoaXMuaGlnaGxpZ2h0ZWRPcHRpb25JbmRleCQpO1xuXG4gICAgdGhpcy50cmlnZ2VyLmtleWJvYXJkQWN0aW9ucyRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGtleWJvYXJkU2VsZWN0QWN0aW9uKSA9PiBrZXlib2FyZFNlbGVjdEFjdGlvbiA9PT0gS2V5Ym9hcmRTZWxlY3RBY3Rpb24uRklSU1QpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmhpZ2hsaWdodGVkT3B0aW9uSW5kZXgkLCBvcHRpb25zQ2hhbmdlcyQsIChfLCBfaW5kZXgsIF9vcHRpb25zKSA9PiAwKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUodGhpcy5oaWdobGlnaHRlZE9wdGlvbkluZGV4JCk7XG5cbiAgICB0aGlzLnRyaWdnZXIua2V5Ym9hcmRBY3Rpb25zJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoa2V5Ym9hcmRTZWxlY3RBY3Rpb24pID0+IGtleWJvYXJkU2VsZWN0QWN0aW9uID09PSBLZXlib2FyZFNlbGVjdEFjdGlvbi5MQVNUKSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5oaWdobGlnaHRlZE9wdGlvbkluZGV4JCwgb3B0aW9uc0NoYW5nZXMkLCAoXywgX2luZGV4LCBfb3B0aW9ucykgPT4gdGhpcy5vcHRpb25zLmxlbmd0aCAtIDEpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh0aGlzLmhpZ2hsaWdodGVkT3B0aW9uSW5kZXgkKTtcblxuICAgIHRoaXMudHJpZ2dlci5rZXlib2FyZEFjdGlvbnMkXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChrZXlib2FyZFNlbGVjdEFjdGlvbikgPT4ga2V5Ym9hcmRTZWxlY3RBY3Rpb24gPT09IEtleWJvYXJkU2VsZWN0QWN0aW9uLkxFRlQpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmhpZ2hsaWdodGVkT3B0aW9uSW5kZXgkLCBvcHRpb25zQ2hhbmdlcyQsIChfLCBpbmRleCwgb3B0aW9ucykgPT5cbiAgICAgICAgICB0aGlzLmlzU3ViZHJvcGRvd25FeHBhbmRlZCA/IHRoaXMuY29sbGFwc2UoaW5kZXgsIG9wdGlvbnMpIDogdGhpcy5leHBhbmQoaW5kZXgsIG9wdGlvbnMpXG4gICAgICAgICksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHRoaXMuaGlnaGxpZ2h0ZWRPcHRpb25JbmRleCQpO1xuXG4gICAgdGhpcy50cmlnZ2VyLmtleWJvYXJkQWN0aW9ucyRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGtleWJvYXJkU2VsZWN0QWN0aW9uKSA9PiBrZXlib2FyZFNlbGVjdEFjdGlvbiA9PT0gS2V5Ym9hcmRTZWxlY3RBY3Rpb24uUklHSFQpLFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbSh0aGlzLmhpZ2hsaWdodGVkT3B0aW9uSW5kZXgkLCBvcHRpb25zQ2hhbmdlcyQsIChfLCBpbmRleCwgb3B0aW9ucykgPT5cbiAgICAgICAgICB0aGlzLmlzU3ViZHJvcGRvd25FeHBhbmRlZCA/IHRoaXMuY29sbGFwc2UoaW5kZXgsIG9wdGlvbnMpIDogdGhpcy5leHBhbmQoaW5kZXgsIG9wdGlvbnMpXG4gICAgICAgICksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHRoaXMuaGlnaGxpZ2h0ZWRPcHRpb25JbmRleCQpO1xuXG4gICAgdGhpcy50cmlnZ2VyLmtleWJvYXJkQWN0aW9ucyRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoKGtleWJvYXJkU2VsZWN0QWN0aW9uKSA9PiBrZXlib2FyZFNlbGVjdEFjdGlvbiA9PT0gS2V5Ym9hcmRTZWxlY3RBY3Rpb24uQ0xPU0UpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICB0aGlzLmNsb3NlZFdpdGhvdXRTZWxlY3Rpb24uZW1pdCgpO1xuICAgICAgICB0aGlzLmx4QnV0dG9uPy5mb2N1cygpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLnRyaWdnZXIua2V5Ym9hcmRBY3Rpb25zJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoa2V5Ym9hcmRTZWxlY3RBY3Rpb24pID0+IGtleWJvYXJkU2VsZWN0QWN0aW9uID09PSBLZXlib2FyZFNlbGVjdEFjdGlvbi5FWEVDVVRFKSxcbiAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5oaWdobGlnaHRlZE9wdGlvbkluZGV4JCwgKF8sIGluZGV4KSA9PiBpbmRleCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChpbmRleCkgPT4ge1xuICAgICAgICB0aGlzLm9wdGlvbnNbaW5kZXhdPy5zZWxlY3RPcHRpb24oKTtcbiAgICAgICAgdGhpcy5seEJ1dHRvbj8uZm9jdXMoKTtcbiAgICAgIH0pO1xuXG4gICAgLyoqIENvbWJpbmVkIHN0cmVhbSBvZiBhbGwgb2YgdGhlIGNoaWxkIG9wdGlvbnMnIHNlbGVjdCBvdXRwdXRzLiAqL1xuICAgIHRoaXMuX29wdGlvbnMuY2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCh0aGlzLl9vcHRpb25zKSxcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuY2xvc2VPblNlbGVjdCksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiBtZXJnZSguLi50aGlzLl9vcHRpb25zLm1hcCgob3B0aW9uKSA9PiBvcHRpb24uc2VsZWN0KSwgLi4udGhpcy5fb3B0aW9ucy5tYXAoKG9wdGlvbikgPT4gb3B0aW9uLnNlbGVjdGVkQ2xpY2spKSksXG4gICAgICAgIGRlbGF5KDApLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoX3ZhbHVlKSA9PiB7XG4gICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLl9vcHRpb25zLmNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgodGhpcy5fb3B0aW9ucyksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiBtZXJnZSguLi50aGlzLl9vcHRpb25zLm1hcCgob3B0aW9uKSA9PiBvcHRpb24ua2V5RG93bkFjdGlvbikpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuaGFuZGxlT3B0aW9uS2V5RG93bihldmVudCk7XG4gICAgICB9KTtcblxuICAgIGNvbWJpbmVMYXRlc3QoW29wdGlvbnNDaGFuZ2VzJCwgdGhpcy5oaWdobGlnaHRlZE9wdGlvbkluZGV4JF0pXG4gICAgICAucGlwZShcbiAgICAgICAgZGVsYXkoMCksXG4gICAgICAgIG1hcCgoW29wdGlvbnMsIGluZGV4XTogW09wdGlvbkNvbXBvbmVudFtdLCBudW1iZXJdKSA9PiBvcHRpb25zW2luZGV4XSksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChvcHRpb25Ub0JlSGlnaGxpZ2h0ZWQpID0+IHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmZvckVhY2goKG9wdGlvbikgPT4gb3B0aW9uLnNldEhpZ2hsaWdodGVkKG9wdGlvblRvQmVIaWdobGlnaHRlZCA9PT0gb3B0aW9uKSk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0aW9uLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICBpZiAodGhpcy5jbG9zZU9uU2Nyb2xsKSB7XG4gICAgICBmcm9tRXZlbnQod2luZG93LCAnc2Nyb2xsJylcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMCksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnRyaWdnZXIuYmx1cigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLnNldEluaXRpYWxBY2Nlc3NpYmlsaXR5QXR0cmlidXRlcygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGNsb3NlRHJvcGRvd24oKSB7XG4gICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICB9XG5cbiAgdG9nZ2xlT3BlbigpIHtcbiAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xuICAgIGlmICghdGhpcy5vcGVuKSB7XG4gICAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gICAgICB0aGlzLmNsb3NlZFdpdGhvdXRTZWxlY3Rpb24uZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5pdGlhbEhpZ2hsaWdodGluZ0luZGV4KCkge1xuICAgIGxldCBpbml0aWFsSW5kZXggPSB0aGlzLm9wdGlvbnMuZmluZEluZGV4KChvcHRpb24pID0+IG9wdGlvbi5zZWxlY3RlZCAmJiB0aGlzLm9wdGlvbklzSGlnaGxpZ2h0YWJsZShvcHRpb24pKTtcbiAgICBpZiAoaW5pdGlhbEluZGV4ID09PSAtMSkge1xuICAgICAgaW5pdGlhbEluZGV4ID0gdGhpcy5vcHRpb25zLmZpbmRJbmRleCgob3B0aW9uKSA9PiB0aGlzLm9wdGlvbklzSGlnaGxpZ2h0YWJsZShvcHRpb24pKTtcbiAgICB9XG4gICAgdGhpcy5oaWdobGlnaHRlZE9wdGlvbkluZGV4JC5uZXh0KGluaXRpYWxJbmRleCk7XG4gIH1cblxuICBwcml2YXRlIHByZXYoY3VycmVudEluZGV4OiBudW1iZXIsIGl0ZW1zOiBPcHRpb25Db21wb25lbnRbXSk6IG51bWJlciB7XG4gICAgaWYgKGN1cnJlbnRJbmRleCA+IDApIHtcbiAgICAgIGNvbnN0IHByZXZFbmFibGVkSW5kZXggPSBpdGVtcy5tYXAoKG9wdGlvbikgPT4gIXRoaXMub3B0aW9uSXNIaWdobGlnaHRhYmxlKG9wdGlvbikpLmxhc3RJbmRleE9mKGZhbHNlLCBjdXJyZW50SW5kZXggLSAxKTtcbiAgICAgIHJldHVybiBwcmV2RW5hYmxlZEluZGV4ICE9PSAtMSA/IHByZXZFbmFibGVkSW5kZXggOiBjdXJyZW50SW5kZXg7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjdXJyZW50SW5kZXg7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBuZXh0KGN1cnJlbnRJbmRleDogbnVtYmVyLCBpdGVtczogT3B0aW9uQ29tcG9uZW50W10pOiBudW1iZXIge1xuICAgIGlmIChjdXJyZW50SW5kZXggPCBpdGVtcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IG5leHRFbmFibGVkSW5kZXggPSBpdGVtcy5tYXAoKG9wdGlvbikgPT4gIXRoaXMub3B0aW9uSXNIaWdobGlnaHRhYmxlKG9wdGlvbikpLmluZGV4T2YoZmFsc2UsIGN1cnJlbnRJbmRleCArIDEpO1xuICAgICAgcmV0dXJuIG5leHRFbmFibGVkSW5kZXggIT09IC0xID8gbmV4dEVuYWJsZWRJbmRleCA6IGN1cnJlbnRJbmRleDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGN1cnJlbnRJbmRleDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGV4cGFuZChjdXJyZW50SW5kZXg6IG51bWJlciwgaXRlbXM6IE9wdGlvbkNvbXBvbmVudFtdKSB7XG4gICAgaWYgKGl0ZW1zW2N1cnJlbnRJbmRleF0hLmhhc1N1YmRyb3Bkb3duKSB7XG4gICAgICB0aGlzLmlzU3ViZHJvcGRvd25FeHBhbmRlZCA9IHRydWU7XG4gICAgICByZXR1cm4gdGhpcy5uZXh0KGN1cnJlbnRJbmRleCwgaXRlbXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY3VycmVudEluZGV4O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29sbGFwc2UoY3VycmVudEluZGV4OiBudW1iZXIsIGl0ZW1zOiBPcHRpb25Db21wb25lbnRbXSkge1xuICAgIGlmICh0aGlzLmlzU3ViZHJvcGRvd25FeHBhbmRlZCkge1xuICAgICAgdGhpcy5pc1N1YmRyb3Bkb3duRXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgIHJldHVybiB0aGlzLnByZXYoY3VycmVudEluZGV4LCBpdGVtcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjdXJyZW50SW5kZXg7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvcHRpb25Jc0hpZ2hsaWdodGFibGUob3B0aW9uOiBPcHRpb25Db21wb25lbnQpOiBib29sZWFuIHtcbiAgICBjb25zdCBpc1RvcGxldmVsT3B0aW9uQW5kQWxsb3dlZCA9ICFvcHRpb24uaXNTdWJvcHRpb24gJiYgIXRoaXMuaXNTdWJkcm9wZG93bkV4cGFuZGVkO1xuICAgIGNvbnN0IGlzU2Vjb25kbGV2ZWxPcHRpb25BbmRBbGxvd2VkID0gb3B0aW9uLmlzU3Vib3B0aW9uICYmIHRoaXMuaXNTdWJkcm9wZG93bkV4cGFuZGVkO1xuICAgIHJldHVybiAhb3B0aW9uLmRpc2FibGVkICYmIChpc1RvcGxldmVsT3B0aW9uQW5kQWxsb3dlZCB8fCBpc1NlY29uZGxldmVsT3B0aW9uQW5kQWxsb3dlZCk7XG4gIH1cblxuICAvKipcbiAgICogUHJvZ3JhbW1hdGljYWxseSBzZXRzIGluaXRpYWwgYWNjZXNzaWJpbGl0eSBhdHRyaWJ1dGVzIG9uIHRoZSB0cmlnZ2VyIGJ1dHRvbiBzbyB0aGF0IHdlXG4gICAqIGRvbid0IGhhdmUgdG8gZG8gaXQgbWFudWFsbHkgZXZlcnkgdGltZSB3ZSBkZWNsYXJlIGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgY29tcG9uZW50XG4gICAqL1xuICBwcml2YXRlIHNldEluaXRpYWxBY2Nlc3NpYmlsaXR5QXR0cmlidXRlcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubHhCdXR0b24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmx4QnV0dG9uLCAncm9sZScsICdjb21ib2JveCcpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMubHhCdXR0b24sICdhcmlhLWhhc3BvcHVwJywgJ2xpc3Rib3gnKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmx4QnV0dG9uLCAndGFiaW5kZXgnLCAnMCcpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMubHhCdXR0b24sICdhcmlhLWNvbnRyb2xzJywgdGhpcy5saXN0Ym94SWQpO1xuICAgIHRoaXMucmVuZGVyZXIuc2V0QXR0cmlidXRlKHRoaXMubHhCdXR0b24sICdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7XG4gIH1cblxuICBoYW5kbGVPcHRpb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgLy8gSW4gb3JkZXIgdG8ga2VlcCB0aGUgY2VudHJhbGl6ZWQga2V5Ym9hcmQgZXZlbnQgbWFuYWdlbWVudCBsb2dpYyBmcm9tIGBLZXlib2FyZEFjdGlvblNvdXJjZURpcmVjdGl2ZWBcbiAgICAvLyB3ZSBkdXBsaWNhdGUgdGhlIG9wdGlvbiBldmVudCBoZXJlIGFuZCB0cmlnZ2VyIGl0IGFnYWluIGZyb20gbHhCdXR0b24uXG4gICAgY29uc3QgbmV3RXZlbnRPcHRpb25zID0gcGljayhldmVudCwgW1xuICAgICAgJ2lzVHJ1c3RlZCcsXG4gICAgICAnYWx0S2V5JyxcbiAgICAgICdidWJibGVzJyxcbiAgICAgICdjaGFyQ29kZScsXG4gICAgICAnY2FuY2VsYWJsZScsXG4gICAgICAnY29tcG9zZWQnLFxuICAgICAgJ2tleScsXG4gICAgICAnY3RybEtleScsXG4gICAgICAnZGVmYXVsdFByZXZlbnRlZCcsXG4gICAgICAna2V5Q29kZScsXG4gICAgICAnY29kZSdcbiAgICBdKTtcbiAgICBjb25zdCBuZXdFdmVudCA9IG5ldyBLZXlib2FyZEV2ZW50KGV2ZW50LnR5cGUsIG5ld0V2ZW50T3B0aW9ucyk7XG5cbiAgICB0aGlzLmx4QnV0dG9uPy5kaXNwYXRjaEV2ZW50KG5ld0V2ZW50KTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFvdmVybGF5UG9zaXRpb25pbmdcIj5cbiAgPGRpdiBseEF1dG9jbG9zZSAoYXV0b2Nsb3NlKT1cImNsb3NlRHJvcGRvd24oKVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0cmlnZ2VyQ29udGFpbmVyXCIgKGNsaWNrKT1cInRvZ2dsZU9wZW4oKVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJ0cmlnZ2VyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRyb3Bkb3duVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIm92ZXJsYXlQb3NpdGlvbmluZ1wiPlxuICA8ZGl2IGNsYXNzPVwib3ZlcmxheU9yaWdpbiB0cmlnZ2VyQ29udGFpbmVyXCIgKGNsaWNrKT1cInRvZ2dsZU9wZW4oKVwiIGNka092ZXJsYXlPcmlnaW4gI3NlbGVjdE9yaWdpbj1cImNka092ZXJsYXlPcmlnaW5cIj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRyaWdnZXJUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlXG4gICAgY2RrQ29ubmVjdGVkT3ZlcmxheVxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cInNlbGVjdE9yaWdpblwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlTY3JvbGxTdHJhdGVneV09XCJvdmVybGF5U2Nyb2xsU3RyYXRlZ3lcIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJvcGVuXCJcbiAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uc109XCJvdmVybGF5UG9zaXRpb25zXCJcbiAgICAob3ZlcmxheU91dHNpZGVDbGljayk9XCJjbG9zZURyb3Bkb3duKCk7IGNsb3NlZFdpdGhvdXRTZWxlY3Rpb24uZW1pdCgpXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5RHJvcGRvd25cIj5cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHJvcGRvd25UZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjdHJpZ2dlclRlbXBsYXRlPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbbHhLZXlib2FyZEFjdGlvblNvdXJjZV1cIj48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Ryb3Bkb3duVGVtcGxhdGU+XG4gIDx1bFxuICAgICpuZ0lmPVwib3BlblwiXG4gICAgW2lkXT1cImxpc3Rib3hJZFwiXG4gICAgW2NsYXNzXT1cImRyb3Bkb3duQ2xhc3NcIlxuICAgIFtjbGFzcy5sZWZ0XT1cImFsaWduID09PSAnbGVmdCdcIlxuICAgIFtjbGFzcy5zaG93U2Nyb2xsYmFyXT1cIm1heEhlaWdodCAhPT0gJ25vbmUnXCJcbiAgICBbc3R5bGUubWF4LWhlaWdodF09XCJtYXhIZWlnaHRcIlxuICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICBbYXR0ci5hcmlhLW93bnNdPVwib3B0aW9uSWRzLmpvaW4oJyAnKVwiXG4gID5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gIDwvdWw+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -45,7 +45,7 @@ export class SortingDropdownComponent {
45
45
  return key ? `sorting.${key}.label` : '';
46
46
  }
47
47
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: SortingDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
48
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: SortingDropdownComponent, isStandalone: true, selector: "lx-sorting-dropdown", inputs: { currentSorting: "currentSorting", sortingOptions: "sortingOptions", showDirectionOptions: "showDirectionOptions" }, outputs: { apply: "apply" }, ngImport: i0, template: "<lx-options-dropdown *ngIf=\"currentSorting\">\n <lx-sorting-dropdown-trigger\n lxKeyboardActionSource\n [label]=\"NAME + '.sortBy' | translate\"\n [currentSortingLabel]=\"getSortLabel(currentSorting.key) | translate\"\n >\n </lx-sorting-dropdown-trigger>\n <lx-option-group (select)=\"applySortingMode($event)\">\n <lx-option *ngFor=\"let option of sortingOptions\" [value]=\"option\" [selected]=\"option.key === currentSorting.key\">\n {{ getSortLabel(option?.key) | translate }}\n </lx-option>\n </lx-option-group>\n <lx-option-group *ngIf=\"showDirectionOptions\" (select)=\"applySortingDirection($event)\">\n <lx-option *ngFor=\"let sortDirection of sortingDirections\" [value]=\"sortDirection\" [selected]=\"sortDirection === currentSorting.order\">\n {{ 'sorting.' + currentSorting.key + '.' + sortDirection | translate }}\n </lx-option>\n </lx-option-group>\n</lx-options-dropdown>\n", styles: [""], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: OptionsDropdownComponent, selector: "lx-options-dropdown", inputs: ["align", "closeOnScroll", "disabled", "maxHeight", "closeOnSelect", "overlayPositioning"], outputs: ["opened", "closed", "closedManually"] }, { kind: "component", type: SortingDropdownTriggerComponent, selector: "lx-sorting-dropdown-trigger", inputs: ["label", "currentSortingLabel", "disabled"] }, { kind: "directive", type: KeyboardActionSourceDirective, selector: "[lxKeyboardActionSource]", exportAs: ["keyboardActionSource"] }, { kind: "component", type: OptionGroupComponent, selector: "lx-option-group", inputs: ["hasSelectedState", "label"], outputs: ["select"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: OptionComponent, selector: "lx-option", inputs: ["selected", "isHighlighted", "disabled", "value", "hasSelectedState", "selectIcon"], outputs: ["select", "highlight", "selectedClick", "keyDownAction"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: SortingDropdownComponent, isStandalone: true, selector: "lx-sorting-dropdown", inputs: { currentSorting: "currentSorting", sortingOptions: "sortingOptions", showDirectionOptions: "showDirectionOptions" }, outputs: { apply: "apply" }, ngImport: i0, template: "<lx-options-dropdown *ngIf=\"currentSorting\">\n <lx-sorting-dropdown-trigger\n lxKeyboardActionSource\n [label]=\"NAME + '.sortBy' | translate\"\n [currentSortingLabel]=\"getSortLabel(currentSorting.key) | translate\"\n >\n </lx-sorting-dropdown-trigger>\n <lx-option-group (select)=\"applySortingMode($event)\">\n <lx-option *ngFor=\"let option of sortingOptions\" [value]=\"option\" [selected]=\"option.key === currentSorting.key\">\n {{ getSortLabel(option?.key) | translate }}\n </lx-option>\n </lx-option-group>\n <lx-option-group *ngIf=\"showDirectionOptions\" (select)=\"applySortingDirection($event)\">\n <lx-option *ngFor=\"let sortDirection of sortingDirections\" [value]=\"sortDirection\" [selected]=\"sortDirection === currentSorting.order\">\n {{ 'sorting.' + currentSorting.key + '.' + sortDirection | translate }}\n </lx-option>\n </lx-option-group>\n</lx-options-dropdown>\n", styles: [""], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: OptionsDropdownComponent, selector: "lx-options-dropdown", inputs: ["align", "closeOnScroll", "disabled", "maxHeight", "closeOnSelect", "overlayPositioning", "dropdownClass"], outputs: ["opened", "closed", "closedWithoutSelection"] }, { kind: "component", type: SortingDropdownTriggerComponent, selector: "lx-sorting-dropdown-trigger", inputs: ["label", "currentSortingLabel", "disabled"] }, { kind: "directive", type: KeyboardActionSourceDirective, selector: "[lxKeyboardActionSource]", exportAs: ["keyboardActionSource"] }, { kind: "component", type: OptionGroupComponent, selector: "lx-option-group", inputs: ["hasSelectedState", "label"], outputs: ["select"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: OptionComponent, selector: "lx-option", inputs: ["selected", "isHighlighted", "disabled", "value", "hasSelectedState", "selectIcon"], outputs: ["select", "highlight", "selectedClick", "keyDownAction"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] }); }
49
49
  }
50
50
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: SortingDropdownComponent, decorators: [{
51
51
  type: Component,
@@ -68,4 +68,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
68
68
  }], apply: [{
69
69
  type: Output
70
70
  }] } });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGluZy1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL3NvcnRpbmctZHJvcGRvd24vc29ydGluZy1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL3NvcnRpbmctZHJvcGRvd24vc29ydGluZy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRWxHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUMxRixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQzs7O0FBRWpIOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxjQUFjLENBQUM7QUFrQnBELE1BQU0sT0FBTyx3QkFBd0I7SUFoQnJDO1FBa0JXLG1CQUFjLEdBQWMsRUFBRSxDQUFDO1FBQy9CLHlCQUFvQixHQUFHLElBQUksQ0FBQztRQUNwQixVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUM1QyxTQUFJLEdBQUcsMEJBQTBCLENBQUM7UUFDbEMsc0JBQWlCLEdBQW1CLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBMkI5RDtJQXpCQyxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ2hJO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQWE7UUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDZCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDbEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHFCQUFxQixDQUFDLGFBQTJCO1FBQy9DLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDZCxHQUFHLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHO2dCQUM1QixLQUFLLEVBQUUsYUFBYTthQUNyQixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsR0FBdUI7UUFDbEMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMzQyxDQUFDOzhHQWhDVSx3QkFBd0I7a0dBQXhCLHdCQUF3QiwwT0NqQ3JDLG02QkFrQkEsMERES0ksSUFBSSw2RkFDSix3QkFBd0IscU5BQ3hCLCtCQUErQiw4SEFDL0IsNkJBQTZCLHlHQUM3QixvQkFBb0Isd0hBQ3BCLEtBQUssbUhBQ0wsZUFBZSx1TkFDZixlQUFlOzsyRkFHTix3QkFBd0I7a0JBaEJwQyxTQUFTOytCQUNFLHFCQUFxQixjQUduQixJQUFJLFdBQ1A7d0JBQ1AsSUFBSTt3QkFDSix3QkFBd0I7d0JBQ3hCLCtCQUErQjt3QkFDL0IsNkJBQTZCO3dCQUM3QixvQkFBb0I7d0JBQ3BCLEtBQUs7d0JBQ0wsZUFBZTt3QkFDZixlQUFlO3FCQUNoQjs4QkFHUSxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNXLEtBQUs7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEtleWJvYXJkQWN0aW9uU291cmNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9rZXlib2FyZC1hY3Rpb24tc291cmNlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTb3J0aW5nLCBTb3J0aW5nT3JkZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvc29ydGluZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT3B0aW9uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9vcHRpb24tZ3JvdXAvb3B0aW9uLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPcHRpb25Db21wb25lbnQgfSBmcm9tICcuLi9vcHRpb24vb3B0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPcHRpb25zRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi9vcHRpb25zLWRyb3Bkb3duL29wdGlvbnMtZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IFNvcnRpbmdEcm9wZG93blRyaWdnZXJDb21wb25lbnQgfSBmcm9tICcuLi9zb3J0aW5nLWRyb3Bkb3duLXRyaWdnZXIvc29ydGluZy1kcm9wZG93bi10cmlnZ2VyLmNvbXBvbmVudCc7XG5cbi8qKlxuICogVXNlZCBmb3IgdHJhbnNsYXRpb24uIFRoZSBkYXNoIGluIHRoZSBuYW1lIGVuc3VyZXMgdGhhdCB0aGlzIHdpbGwgbm90IGNsYXNoIHdpdGggYSBEYXRhTW9kZWwgZmllbGQuXG4gKiBUaGlzIGtleSBpcyB1c2VkIHdoZW4gdGhlcmUgaXMgbm8gc29ydGluZyBwYXJhbWV0ZXIgc2VudCB0byB0aGUgYWxsRmFjdFNoZWV0cyBxdWVyeSwgbWVhbmluZyB0aGF0IHRoZSBFbGFzdGljU2VhcmNoXG4gKiBzY29yZSB3aWxsIGJlIHVzZWQgZm9yIHNvcnRpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBSRUxFVkFOQ0VfU09SVElOR19LRVkgPSAnbHgtcmVsZXZhbmNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHgtc29ydGluZy1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnc29ydGluZy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydzb3J0aW5nLWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0lmLFxuICAgIE9wdGlvbnNEcm9wZG93bkNvbXBvbmVudCxcbiAgICBTb3J0aW5nRHJvcGRvd25UcmlnZ2VyQ29tcG9uZW50LFxuICAgIEtleWJvYXJkQWN0aW9uU291cmNlRGlyZWN0aXZlLFxuICAgIE9wdGlvbkdyb3VwQ29tcG9uZW50LFxuICAgIE5nRm9yLFxuICAgIE9wdGlvbkNvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTb3J0aW5nRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBjdXJyZW50U29ydGluZyE6IFNvcnRpbmcgfCBudWxsO1xuICBASW5wdXQoKSBzb3J0aW5nT3B0aW9uczogU29ydGluZ1tdID0gW107XG4gIEBJbnB1dCgpIHNob3dEaXJlY3Rpb25PcHRpb25zID0gdHJ1ZTtcbiAgQE91dHB1dCgpIHB1YmxpYyBhcHBseSA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydGluZz4oKTtcbiAgcmVhZG9ubHkgTkFNRSA9ICdTb3J0aW5nRHJvcGRvd25Db21wb25lbnQnO1xuICByZWFkb25seSBzb3J0aW5nRGlyZWN0aW9uczogU29ydGluZ09yZGVyW10gPSBbJ2FzYycsICdkZXNjJ107XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTb3J0aW5nKSB7XG4gICAgICB0aGlzLmN1cnJlbnRTb3J0aW5nID0gdGhpcy5zb3J0aW5nT3B0aW9uc1swXSA/IHsga2V5OiB0aGlzLnNvcnRpbmdPcHRpb25zWzBdLmtleSwgb3JkZXI6IHRoaXMuc29ydGluZ09wdGlvbnNbMF0ub3JkZXIgfSA6IG51bGw7XG4gICAgfVxuICB9XG5cbiAgYXBwbHlTb3J0aW5nTW9kZShzb3J0OiBTb3J0aW5nKSB7XG4gICAgdGhpcy5hcHBseS5lbWl0KHtcbiAgICAgIGtleTogc29ydC5rZXksXG4gICAgICBvcmRlcjogc29ydC5vcmRlclxuICAgIH0pO1xuICB9XG5cbiAgYXBwbHlTb3J0aW5nRGlyZWN0aW9uKHNvcnREaXJlY3Rpb246IFNvcnRpbmdPcmRlcikge1xuICAgIGlmICh0aGlzLmN1cnJlbnRTb3J0aW5nKSB7XG4gICAgICB0aGlzLmFwcGx5LmVtaXQoe1xuICAgICAgICBrZXk6IHRoaXMuY3VycmVudFNvcnRpbmcua2V5LFxuICAgICAgICBvcmRlcjogc29ydERpcmVjdGlvblxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0U29ydExhYmVsKGtleTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGtleSA/IGBzb3J0aW5nLiR7a2V5fS5sYWJlbGAgOiAnJztcbiAgfVxufVxuIiwiPGx4LW9wdGlvbnMtZHJvcGRvd24gKm5nSWY9XCJjdXJyZW50U29ydGluZ1wiPlxuICA8bHgtc29ydGluZy1kcm9wZG93bi10cmlnZ2VyXG4gICAgbHhLZXlib2FyZEFjdGlvblNvdXJjZVxuICAgIFtsYWJlbF09XCJOQU1FICsgJy5zb3J0QnknIHwgdHJhbnNsYXRlXCJcbiAgICBbY3VycmVudFNvcnRpbmdMYWJlbF09XCJnZXRTb3J0TGFiZWwoY3VycmVudFNvcnRpbmcua2V5KSB8IHRyYW5zbGF0ZVwiXG4gID5cbiAgPC9seC1zb3J0aW5nLWRyb3Bkb3duLXRyaWdnZXI+XG4gIDxseC1vcHRpb24tZ3JvdXAgKHNlbGVjdCk9XCJhcHBseVNvcnRpbmdNb2RlKCRldmVudClcIj5cbiAgICA8bHgtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygc29ydGluZ09wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uXCIgW3NlbGVjdGVkXT1cIm9wdGlvbi5rZXkgPT09IGN1cnJlbnRTb3J0aW5nLmtleVwiPlxuICAgICAge3sgZ2V0U29ydExhYmVsKG9wdGlvbj8ua2V5KSB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbHgtb3B0aW9uPlxuICA8L2x4LW9wdGlvbi1ncm91cD5cbiAgPGx4LW9wdGlvbi1ncm91cCAqbmdJZj1cInNob3dEaXJlY3Rpb25PcHRpb25zXCIgKHNlbGVjdCk9XCJhcHBseVNvcnRpbmdEaXJlY3Rpb24oJGV2ZW50KVwiPlxuICAgIDxseC1vcHRpb24gKm5nRm9yPVwibGV0IHNvcnREaXJlY3Rpb24gb2Ygc29ydGluZ0RpcmVjdGlvbnNcIiBbdmFsdWVdPVwic29ydERpcmVjdGlvblwiIFtzZWxlY3RlZF09XCJzb3J0RGlyZWN0aW9uID09PSBjdXJyZW50U29ydGluZy5vcmRlclwiPlxuICAgICAge3sgJ3NvcnRpbmcuJyArIGN1cnJlbnRTb3J0aW5nLmtleSArICcuJyArIHNvcnREaXJlY3Rpb24gfCB0cmFuc2xhdGUgfX1cbiAgICA8L2x4LW9wdGlvbj5cbiAgPC9seC1vcHRpb24tZ3JvdXA+XG48L2x4LW9wdGlvbnMtZHJvcGRvd24+XG4iXX0=
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGluZy1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL3NvcnRpbmctZHJvcGRvd24vc29ydGluZy1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL3NvcnRpbmctZHJvcGRvd24vc29ydGluZy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRWxHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUMxRixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQzs7O0FBRWpIOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxjQUFjLENBQUM7QUFrQnBELE1BQU0sT0FBTyx3QkFBd0I7SUFoQnJDO1FBa0JXLG1CQUFjLEdBQWMsRUFBRSxDQUFDO1FBQy9CLHlCQUFvQixHQUFHLElBQUksQ0FBQztRQUNwQixVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUM1QyxTQUFJLEdBQUcsMEJBQTBCLENBQUM7UUFDbEMsc0JBQWlCLEdBQW1CLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBMkI5RDtJQXpCQyxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ2hJO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQWE7UUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDZCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDbEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHFCQUFxQixDQUFDLGFBQTJCO1FBQy9DLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztnQkFDZCxHQUFHLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHO2dCQUM1QixLQUFLLEVBQUUsYUFBYTthQUNyQixDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsR0FBdUI7UUFDbEMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMzQyxDQUFDOzhHQWhDVSx3QkFBd0I7a0dBQXhCLHdCQUF3QiwwT0NqQ3JDLG02QkFrQkEsMERES0ksSUFBSSw2RkFDSix3QkFBd0IsOE9BQ3hCLCtCQUErQiw4SEFDL0IsNkJBQTZCLHlHQUM3QixvQkFBb0Isd0hBQ3BCLEtBQUssbUhBQ0wsZUFBZSx1TkFDZixlQUFlOzsyRkFHTix3QkFBd0I7a0JBaEJwQyxTQUFTOytCQUNFLHFCQUFxQixjQUduQixJQUFJLFdBQ1A7d0JBQ1AsSUFBSTt3QkFDSix3QkFBd0I7d0JBQ3hCLCtCQUErQjt3QkFDL0IsNkJBQTZCO3dCQUM3QixvQkFBb0I7d0JBQ3BCLEtBQUs7d0JBQ0wsZUFBZTt3QkFDZixlQUFlO3FCQUNoQjs4QkFHUSxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNXLEtBQUs7c0JBQXJCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEtleWJvYXJkQWN0aW9uU291cmNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9rZXlib2FyZC1hY3Rpb24tc291cmNlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBTb3J0aW5nLCBTb3J0aW5nT3JkZXIgfSBmcm9tICcuLi8uLi9tb2RlbHMvc29ydGluZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgT3B0aW9uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuLi9vcHRpb24tZ3JvdXAvb3B0aW9uLWdyb3VwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPcHRpb25Db21wb25lbnQgfSBmcm9tICcuLi9vcHRpb24vb3B0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPcHRpb25zRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi9vcHRpb25zLWRyb3Bkb3duL29wdGlvbnMtZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IFNvcnRpbmdEcm9wZG93blRyaWdnZXJDb21wb25lbnQgfSBmcm9tICcuLi9zb3J0aW5nLWRyb3Bkb3duLXRyaWdnZXIvc29ydGluZy1kcm9wZG93bi10cmlnZ2VyLmNvbXBvbmVudCc7XG5cbi8qKlxuICogVXNlZCBmb3IgdHJhbnNsYXRpb24uIFRoZSBkYXNoIGluIHRoZSBuYW1lIGVuc3VyZXMgdGhhdCB0aGlzIHdpbGwgbm90IGNsYXNoIHdpdGggYSBEYXRhTW9kZWwgZmllbGQuXG4gKiBUaGlzIGtleSBpcyB1c2VkIHdoZW4gdGhlcmUgaXMgbm8gc29ydGluZyBwYXJhbWV0ZXIgc2VudCB0byB0aGUgYWxsRmFjdFNoZWV0cyBxdWVyeSwgbWVhbmluZyB0aGF0IHRoZSBFbGFzdGljU2VhcmNoXG4gKiBzY29yZSB3aWxsIGJlIHVzZWQgZm9yIHNvcnRpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBSRUxFVkFOQ0VfU09SVElOR19LRVkgPSAnbHgtcmVsZXZhbmNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHgtc29ydGluZy1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnc29ydGluZy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydzb3J0aW5nLWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0lmLFxuICAgIE9wdGlvbnNEcm9wZG93bkNvbXBvbmVudCxcbiAgICBTb3J0aW5nRHJvcGRvd25UcmlnZ2VyQ29tcG9uZW50LFxuICAgIEtleWJvYXJkQWN0aW9uU291cmNlRGlyZWN0aXZlLFxuICAgIE9wdGlvbkdyb3VwQ29tcG9uZW50LFxuICAgIE5nRm9yLFxuICAgIE9wdGlvbkNvbXBvbmVudCxcbiAgICBUcmFuc2xhdGVNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTb3J0aW5nRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBjdXJyZW50U29ydGluZyE6IFNvcnRpbmcgfCBudWxsO1xuICBASW5wdXQoKSBzb3J0aW5nT3B0aW9uczogU29ydGluZ1tdID0gW107XG4gIEBJbnB1dCgpIHNob3dEaXJlY3Rpb25PcHRpb25zID0gdHJ1ZTtcbiAgQE91dHB1dCgpIHB1YmxpYyBhcHBseSA9IG5ldyBFdmVudEVtaXR0ZXI8U29ydGluZz4oKTtcbiAgcmVhZG9ubHkgTkFNRSA9ICdTb3J0aW5nRHJvcGRvd25Db21wb25lbnQnO1xuICByZWFkb25seSBzb3J0aW5nRGlyZWN0aW9uczogU29ydGluZ09yZGVyW10gPSBbJ2FzYycsICdkZXNjJ107XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRTb3J0aW5nKSB7XG4gICAgICB0aGlzLmN1cnJlbnRTb3J0aW5nID0gdGhpcy5zb3J0aW5nT3B0aW9uc1swXSA/IHsga2V5OiB0aGlzLnNvcnRpbmdPcHRpb25zWzBdLmtleSwgb3JkZXI6IHRoaXMuc29ydGluZ09wdGlvbnNbMF0ub3JkZXIgfSA6IG51bGw7XG4gICAgfVxuICB9XG5cbiAgYXBwbHlTb3J0aW5nTW9kZShzb3J0OiBTb3J0aW5nKSB7XG4gICAgdGhpcy5hcHBseS5lbWl0KHtcbiAgICAgIGtleTogc29ydC5rZXksXG4gICAgICBvcmRlcjogc29ydC5vcmRlclxuICAgIH0pO1xuICB9XG5cbiAgYXBwbHlTb3J0aW5nRGlyZWN0aW9uKHNvcnREaXJlY3Rpb246IFNvcnRpbmdPcmRlcikge1xuICAgIGlmICh0aGlzLmN1cnJlbnRTb3J0aW5nKSB7XG4gICAgICB0aGlzLmFwcGx5LmVtaXQoe1xuICAgICAgICBrZXk6IHRoaXMuY3VycmVudFNvcnRpbmcua2V5LFxuICAgICAgICBvcmRlcjogc29ydERpcmVjdGlvblxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0U29ydExhYmVsKGtleTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGtleSA/IGBzb3J0aW5nLiR7a2V5fS5sYWJlbGAgOiAnJztcbiAgfVxufVxuIiwiPGx4LW9wdGlvbnMtZHJvcGRvd24gKm5nSWY9XCJjdXJyZW50U29ydGluZ1wiPlxuICA8bHgtc29ydGluZy1kcm9wZG93bi10cmlnZ2VyXG4gICAgbHhLZXlib2FyZEFjdGlvblNvdXJjZVxuICAgIFtsYWJlbF09XCJOQU1FICsgJy5zb3J0QnknIHwgdHJhbnNsYXRlXCJcbiAgICBbY3VycmVudFNvcnRpbmdMYWJlbF09XCJnZXRTb3J0TGFiZWwoY3VycmVudFNvcnRpbmcua2V5KSB8IHRyYW5zbGF0ZVwiXG4gID5cbiAgPC9seC1zb3J0aW5nLWRyb3Bkb3duLXRyaWdnZXI+XG4gIDxseC1vcHRpb24tZ3JvdXAgKHNlbGVjdCk9XCJhcHBseVNvcnRpbmdNb2RlKCRldmVudClcIj5cbiAgICA8bHgtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygc29ydGluZ09wdGlvbnNcIiBbdmFsdWVdPVwib3B0aW9uXCIgW3NlbGVjdGVkXT1cIm9wdGlvbi5rZXkgPT09IGN1cnJlbnRTb3J0aW5nLmtleVwiPlxuICAgICAge3sgZ2V0U29ydExhYmVsKG9wdGlvbj8ua2V5KSB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvbHgtb3B0aW9uPlxuICA8L2x4LW9wdGlvbi1ncm91cD5cbiAgPGx4LW9wdGlvbi1ncm91cCAqbmdJZj1cInNob3dEaXJlY3Rpb25PcHRpb25zXCIgKHNlbGVjdCk9XCJhcHBseVNvcnRpbmdEaXJlY3Rpb24oJGV2ZW50KVwiPlxuICAgIDxseC1vcHRpb24gKm5nRm9yPVwibGV0IHNvcnREaXJlY3Rpb24gb2Ygc29ydGluZ0RpcmVjdGlvbnNcIiBbdmFsdWVdPVwic29ydERpcmVjdGlvblwiIFtzZWxlY3RlZF09XCJzb3J0RGlyZWN0aW9uID09PSBjdXJyZW50U29ydGluZy5vcmRlclwiPlxuICAgICAge3sgJ3NvcnRpbmcuJyArIGN1cnJlbnRTb3J0aW5nLmtleSArICcuJyArIHNvcnREaXJlY3Rpb24gfCB0cmFuc2xhdGUgfX1cbiAgICA8L2x4LW9wdGlvbj5cbiAgPC9seC1vcHRpb24tZ3JvdXA+XG48L2x4LW9wdGlvbnMtZHJvcGRvd24+XG4iXX0=
@@ -6142,10 +6142,11 @@ class OptionsDropdownComponent {
6142
6142
  this.maxHeight = 'none';
6143
6143
  this.closeOnSelect = true;
6144
6144
  this.overlayPositioning = false;
6145
+ this.dropdownClass = '';
6145
6146
  this.overlayScrollStrategy = this.closeOnScroll ? this.scrollStrategies.close() : this.scrollStrategies.reposition();
6146
6147
  this.opened = new EventEmitter();
6147
6148
  this.closed = new EventEmitter();
6148
- this.closedManually = new EventEmitter();
6149
+ this.closedWithoutSelection = new EventEmitter();
6149
6150
  this.highlightedOptionIndex$ = new BehaviorSubject(0);
6150
6151
  this._open = false;
6151
6152
  this.isSubdropdownExpanded = false;
@@ -6177,7 +6178,7 @@ class OptionsDropdownComponent {
6177
6178
  .pipe(filter((keyboardSelectAction) => keyboardSelectAction === KeyboardSelectAction.CLOSE), takeUntil(this.destroyed$))
6178
6179
  .subscribe(() => {
6179
6180
  this.closeDropdown();
6180
- this.closedManually.emit();
6181
+ this.closedWithoutSelection.emit();
6181
6182
  this.lxButton?.focus();
6182
6183
  });
6183
6184
  this.trigger.keyboardActions$
@@ -6225,7 +6226,7 @@ class OptionsDropdownComponent {
6225
6226
  this.open = !this.open;
6226
6227
  if (!this.open) {
6227
6228
  this.closed.emit();
6228
- this.closedManually.emit();
6229
+ this.closedWithoutSelection.emit();
6229
6230
  }
6230
6231
  }
6231
6232
  setInitialHighlightingIndex() {
@@ -6310,11 +6311,11 @@ class OptionsDropdownComponent {
6310
6311
  this.lxButton?.dispatchEvent(newEvent);
6311
6312
  }
6312
6313
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: OptionsDropdownComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.ScrollStrategyOptions }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
6313
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: OptionsDropdownComponent, isStandalone: true, selector: "lx-options-dropdown", inputs: { align: "align", closeOnScroll: "closeOnScroll", disabled: "disabled", maxHeight: "maxHeight", closeOnSelect: "closeOnSelect", overlayPositioning: "overlayPositioning" }, outputs: { opened: "opened", closed: "closed", closedManually: "closedManually" }, queries: [{ propertyName: "trigger", first: true, predicate: KeyboardActionSourceDirective, descendants: true }, { propertyName: "_options", predicate: OptionComponent, descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"!overlayPositioning\">\n <div lxAutoclose (autoclose)=\"closeDropdown()\">\n <div class=\"triggerContainer\" (click)=\"open = !open\">\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </div>\n <ng-container [ngTemplateOutlet]=\"dropdownTemplate\"></ng-container>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"overlayPositioning\">\n <div class=\"overlayOrigin triggerContainer\" (click)=\"toggleOpen()\" cdkOverlayOrigin #selectOrigin=\"cdkOverlayOrigin\">\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectOrigin\"\n [cdkConnectedOverlayScrollStrategy]=\"overlayScrollStrategy\"\n [cdkConnectedOverlayOpen]=\"open\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n >\n <div class=\"overlayDropdown\">\n <ng-container [ngTemplateOutlet]=\"dropdownTemplate\"></ng-container>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #triggerTemplate>\n <ng-content select=\"[lxKeyboardActionSource]\"></ng-content>\n</ng-template>\n\n<ng-template #dropdownTemplate>\n <ul\n *ngIf=\"open\"\n [id]=\"listboxId\"\n [class.left]=\"align === 'left'\"\n [class.showScrollbar]=\"maxHeight !== 'none'\"\n [style.max-height]=\"maxHeight\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.aria-owns]=\"optionIds.join(' ')\"\n >\n <ng-content></ng-content>\n </ul>\n</ng-template>\n", styles: [":host{display:inline-block;position:relative}.overlayDropdown ul{position:static}ul{position:absolute;background-color:#fff;border-radius:3px;box-shadow:0 8px 12px 2px #00000026;border:solid 1px #e1e5eb;text-align:left;list-style:none;margin:0;padding-left:0;z-index:20;white-space:nowrap}ul::-webkit-scrollbar{width:.5em;height:.5em;background-color:transparent}ul::-webkit-scrollbar-thumb{background-color:#c2c9d6;border-radius:6px}ul::-webkit-scrollbar-track-piece{background-color:transparent}ul.left{right:0;padding-right:0}ul.showScrollbar{overflow-y:auto}.triggerContainer{display:inline-block}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: AutocloseDirective, selector: "[lxAutoclose]", inputs: ["autocloseGroup"], outputs: ["autoclose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6314
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: OptionsDropdownComponent, isStandalone: true, selector: "lx-options-dropdown", inputs: { align: "align", closeOnScroll: "closeOnScroll", disabled: "disabled", maxHeight: "maxHeight", closeOnSelect: "closeOnSelect", overlayPositioning: "overlayPositioning", dropdownClass: "dropdownClass" }, outputs: { opened: "opened", closed: "closed", closedWithoutSelection: "closedWithoutSelection" }, queries: [{ propertyName: "trigger", first: true, predicate: KeyboardActionSourceDirective, descendants: true }, { propertyName: "_options", predicate: OptionComponent, descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"!overlayPositioning\">\n <div lxAutoclose (autoclose)=\"closeDropdown()\">\n <div class=\"triggerContainer\" (click)=\"toggleOpen()\">\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </div>\n <ng-container [ngTemplateOutlet]=\"dropdownTemplate\"></ng-container>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"overlayPositioning\">\n <div class=\"overlayOrigin triggerContainer\" (click)=\"toggleOpen()\" cdkOverlayOrigin #selectOrigin=\"cdkOverlayOrigin\">\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectOrigin\"\n [cdkConnectedOverlayScrollStrategy]=\"overlayScrollStrategy\"\n [cdkConnectedOverlayOpen]=\"open\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n (overlayOutsideClick)=\"closeDropdown(); closedWithoutSelection.emit()\"\n >\n <div class=\"overlayDropdown\">\n <ng-container [ngTemplateOutlet]=\"dropdownTemplate\"></ng-container>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #triggerTemplate>\n <ng-content select=\"[lxKeyboardActionSource]\"></ng-content>\n</ng-template>\n\n<ng-template #dropdownTemplate>\n <ul\n *ngIf=\"open\"\n [id]=\"listboxId\"\n [class]=\"dropdownClass\"\n [class.left]=\"align === 'left'\"\n [class.showScrollbar]=\"maxHeight !== 'none'\"\n [style.max-height]=\"maxHeight\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.aria-owns]=\"optionIds.join(' ')\"\n >\n <ng-content></ng-content>\n </ul>\n</ng-template>\n", styles: [":host{display:inline-block;position:relative}.overlayDropdown ul{position:static}ul{position:absolute;background-color:#fff;border-radius:3px;box-shadow:0 8px 12px 2px #00000026;border:solid 1px #e1e5eb;text-align:left;list-style:none;margin:0;padding-left:0;z-index:20;white-space:nowrap}ul::-webkit-scrollbar{width:.5em;height:.5em;background-color:transparent}ul::-webkit-scrollbar-thumb{background-color:#c2c9d6;border-radius:6px}ul::-webkit-scrollbar-track-piece{background-color:transparent}ul.left{right:0;padding-right:0}ul.showScrollbar{overflow-y:auto}.triggerContainer{display:inline-block}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: AutocloseDirective, selector: "[lxAutoclose]", inputs: ["autocloseGroup"], outputs: ["autoclose"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
6314
6315
  }
6315
6316
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: OptionsDropdownComponent, decorators: [{
6316
6317
  type: Component,
6317
- args: [{ selector: 'lx-options-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, NgTemplateOutlet, CdkOverlayOrigin, CdkConnectedOverlay, AutocloseDirective], template: "<ng-container *ngIf=\"!overlayPositioning\">\n <div lxAutoclose (autoclose)=\"closeDropdown()\">\n <div class=\"triggerContainer\" (click)=\"open = !open\">\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </div>\n <ng-container [ngTemplateOutlet]=\"dropdownTemplate\"></ng-container>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"overlayPositioning\">\n <div class=\"overlayOrigin triggerContainer\" (click)=\"toggleOpen()\" cdkOverlayOrigin #selectOrigin=\"cdkOverlayOrigin\">\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectOrigin\"\n [cdkConnectedOverlayScrollStrategy]=\"overlayScrollStrategy\"\n [cdkConnectedOverlayOpen]=\"open\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n >\n <div class=\"overlayDropdown\">\n <ng-container [ngTemplateOutlet]=\"dropdownTemplate\"></ng-container>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #triggerTemplate>\n <ng-content select=\"[lxKeyboardActionSource]\"></ng-content>\n</ng-template>\n\n<ng-template #dropdownTemplate>\n <ul\n *ngIf=\"open\"\n [id]=\"listboxId\"\n [class.left]=\"align === 'left'\"\n [class.showScrollbar]=\"maxHeight !== 'none'\"\n [style.max-height]=\"maxHeight\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.aria-owns]=\"optionIds.join(' ')\"\n >\n <ng-content></ng-content>\n </ul>\n</ng-template>\n", styles: [":host{display:inline-block;position:relative}.overlayDropdown ul{position:static}ul{position:absolute;background-color:#fff;border-radius:3px;box-shadow:0 8px 12px 2px #00000026;border:solid 1px #e1e5eb;text-align:left;list-style:none;margin:0;padding-left:0;z-index:20;white-space:nowrap}ul::-webkit-scrollbar{width:.5em;height:.5em;background-color:transparent}ul::-webkit-scrollbar-thumb{background-color:#c2c9d6;border-radius:6px}ul::-webkit-scrollbar-track-piece{background-color:transparent}ul.left{right:0;padding-right:0}ul.showScrollbar{overflow-y:auto}.triggerContainer{display:inline-block}\n"] }]
6318
+ args: [{ selector: 'lx-options-dropdown', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, NgTemplateOutlet, CdkOverlayOrigin, CdkConnectedOverlay, AutocloseDirective], template: "<ng-container *ngIf=\"!overlayPositioning\">\n <div lxAutoclose (autoclose)=\"closeDropdown()\">\n <div class=\"triggerContainer\" (click)=\"toggleOpen()\">\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </div>\n <ng-container [ngTemplateOutlet]=\"dropdownTemplate\"></ng-container>\n </div>\n</ng-container>\n\n<ng-container *ngIf=\"overlayPositioning\">\n <div class=\"overlayOrigin triggerContainer\" (click)=\"toggleOpen()\" cdkOverlayOrigin #selectOrigin=\"cdkOverlayOrigin\">\n <ng-container [ngTemplateOutlet]=\"triggerTemplate\"></ng-container>\n </div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectOrigin\"\n [cdkConnectedOverlayScrollStrategy]=\"overlayScrollStrategy\"\n [cdkConnectedOverlayOpen]=\"open\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n (overlayOutsideClick)=\"closeDropdown(); closedWithoutSelection.emit()\"\n >\n <div class=\"overlayDropdown\">\n <ng-container [ngTemplateOutlet]=\"dropdownTemplate\"></ng-container>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #triggerTemplate>\n <ng-content select=\"[lxKeyboardActionSource]\"></ng-content>\n</ng-template>\n\n<ng-template #dropdownTemplate>\n <ul\n *ngIf=\"open\"\n [id]=\"listboxId\"\n [class]=\"dropdownClass\"\n [class.left]=\"align === 'left'\"\n [class.showScrollbar]=\"maxHeight !== 'none'\"\n [style.max-height]=\"maxHeight\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.aria-owns]=\"optionIds.join(' ')\"\n >\n <ng-content></ng-content>\n </ul>\n</ng-template>\n", styles: [":host{display:inline-block;position:relative}.overlayDropdown ul{position:static}ul{position:absolute;background-color:#fff;border-radius:3px;box-shadow:0 8px 12px 2px #00000026;border:solid 1px #e1e5eb;text-align:left;list-style:none;margin:0;padding-left:0;z-index:20;white-space:nowrap}ul::-webkit-scrollbar{width:.5em;height:.5em;background-color:transparent}ul::-webkit-scrollbar-thumb{background-color:#c2c9d6;border-radius:6px}ul::-webkit-scrollbar-track-piece{background-color:transparent}ul.left{right:0;padding-right:0}ul.showScrollbar{overflow-y:auto}.triggerContainer{display:inline-block}\n"] }]
6318
6319
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1$1.ScrollStrategyOptions }, { type: i0.Renderer2 }], propDecorators: { align: [{
6319
6320
  type: Input
6320
6321
  }], closeOnScroll: [{
@@ -6327,6 +6328,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
6327
6328
  type: Input
6328
6329
  }], overlayPositioning: [{
6329
6330
  type: Input
6331
+ }], dropdownClass: [{
6332
+ type: Input
6330
6333
  }], trigger: [{
6331
6334
  type: ContentChild,
6332
6335
  args: [KeyboardActionSourceDirective]
@@ -6337,7 +6340,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
6337
6340
  type: Output
6338
6341
  }], closed: [{
6339
6342
  type: Output
6340
- }], closedManually: [{
6343
+ }], closedWithoutSelection: [{
6341
6344
  type: Output
6342
6345
  }] } });
6343
6346
 
@@ -7430,7 +7433,7 @@ class SortingDropdownComponent {
7430
7433
  return key ? `sorting.${key}.label` : '';
7431
7434
  }
7432
7435
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: SortingDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7433
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: SortingDropdownComponent, isStandalone: true, selector: "lx-sorting-dropdown", inputs: { currentSorting: "currentSorting", sortingOptions: "sortingOptions", showDirectionOptions: "showDirectionOptions" }, outputs: { apply: "apply" }, ngImport: i0, template: "<lx-options-dropdown *ngIf=\"currentSorting\">\n <lx-sorting-dropdown-trigger\n lxKeyboardActionSource\n [label]=\"NAME + '.sortBy' | translate\"\n [currentSortingLabel]=\"getSortLabel(currentSorting.key) | translate\"\n >\n </lx-sorting-dropdown-trigger>\n <lx-option-group (select)=\"applySortingMode($event)\">\n <lx-option *ngFor=\"let option of sortingOptions\" [value]=\"option\" [selected]=\"option.key === currentSorting.key\">\n {{ getSortLabel(option?.key) | translate }}\n </lx-option>\n </lx-option-group>\n <lx-option-group *ngIf=\"showDirectionOptions\" (select)=\"applySortingDirection($event)\">\n <lx-option *ngFor=\"let sortDirection of sortingDirections\" [value]=\"sortDirection\" [selected]=\"sortDirection === currentSorting.order\">\n {{ 'sorting.' + currentSorting.key + '.' + sortDirection | translate }}\n </lx-option>\n </lx-option-group>\n</lx-options-dropdown>\n", styles: [""], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: OptionsDropdownComponent, selector: "lx-options-dropdown", inputs: ["align", "closeOnScroll", "disabled", "maxHeight", "closeOnSelect", "overlayPositioning"], outputs: ["opened", "closed", "closedManually"] }, { kind: "component", type: SortingDropdownTriggerComponent, selector: "lx-sorting-dropdown-trigger", inputs: ["label", "currentSortingLabel", "disabled"] }, { kind: "directive", type: KeyboardActionSourceDirective, selector: "[lxKeyboardActionSource]", exportAs: ["keyboardActionSource"] }, { kind: "component", type: OptionGroupComponent, selector: "lx-option-group", inputs: ["hasSelectedState", "label"], outputs: ["select"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: OptionComponent, selector: "lx-option", inputs: ["selected", "isHighlighted", "disabled", "value", "hasSelectedState", "selectIcon"], outputs: ["select", "highlight", "selectedClick", "keyDownAction"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] }); }
7436
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: SortingDropdownComponent, isStandalone: true, selector: "lx-sorting-dropdown", inputs: { currentSorting: "currentSorting", sortingOptions: "sortingOptions", showDirectionOptions: "showDirectionOptions" }, outputs: { apply: "apply" }, ngImport: i0, template: "<lx-options-dropdown *ngIf=\"currentSorting\">\n <lx-sorting-dropdown-trigger\n lxKeyboardActionSource\n [label]=\"NAME + '.sortBy' | translate\"\n [currentSortingLabel]=\"getSortLabel(currentSorting.key) | translate\"\n >\n </lx-sorting-dropdown-trigger>\n <lx-option-group (select)=\"applySortingMode($event)\">\n <lx-option *ngFor=\"let option of sortingOptions\" [value]=\"option\" [selected]=\"option.key === currentSorting.key\">\n {{ getSortLabel(option?.key) | translate }}\n </lx-option>\n </lx-option-group>\n <lx-option-group *ngIf=\"showDirectionOptions\" (select)=\"applySortingDirection($event)\">\n <lx-option *ngFor=\"let sortDirection of sortingDirections\" [value]=\"sortDirection\" [selected]=\"sortDirection === currentSorting.order\">\n {{ 'sorting.' + currentSorting.key + '.' + sortDirection | translate }}\n </lx-option>\n </lx-option-group>\n</lx-options-dropdown>\n", styles: [""], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: OptionsDropdownComponent, selector: "lx-options-dropdown", inputs: ["align", "closeOnScroll", "disabled", "maxHeight", "closeOnSelect", "overlayPositioning", "dropdownClass"], outputs: ["opened", "closed", "closedWithoutSelection"] }, { kind: "component", type: SortingDropdownTriggerComponent, selector: "lx-sorting-dropdown-trigger", inputs: ["label", "currentSortingLabel", "disabled"] }, { kind: "directive", type: KeyboardActionSourceDirective, selector: "[lxKeyboardActionSource]", exportAs: ["keyboardActionSource"] }, { kind: "component", type: OptionGroupComponent, selector: "lx-option-group", inputs: ["hasSelectedState", "label"], outputs: ["select"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: OptionComponent, selector: "lx-option", inputs: ["selected", "isHighlighted", "disabled", "value", "hasSelectedState", "selectIcon"], outputs: ["select", "highlight", "selectedClick", "keyDownAction"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }] }); }
7434
7437
  }
7435
7438
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: SortingDropdownComponent, decorators: [{
7436
7439
  type: Component,