@leanix/components 0.4.119 → 0.4.121

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,7 +3,7 @@ import { AsyncPipe, NgClass, NgFor, NgIf, NgTemplateOutlet, UpperCasePipe } from
3
3
  import { ChangeDetectionStrategy, Component, ContentChild, EventEmitter, forwardRef, Input, Output, ViewChild } from '@angular/core';
4
4
  import { TranslateModule } from '@ngx-translate/core';
5
5
  import { InfiniteScrollModule } from 'ngx-infinite-scroll';
6
- import { BadgeComponent } from '../../../core-ui/components/badge/badge.component';
6
+ import { CounterComponent } from '../../../core-ui/components/counter/counter.component';
7
7
  import { SpinnerComponent } from '../../../core-ui/components/spinner/spinner.component';
8
8
  import { SelectableItemDirective } from '../../directives/selectable-item.directive';
9
9
  import { BasicDropdownItemComponent } from '../basic-dropdown-item/basic-dropdown-item.component';
@@ -71,7 +71,7 @@ export class OptionGroupDropdownComponent extends KeyboardSelectDirective {
71
71
  this.isTopDropdown = event.connectionPair.originY === 'top';
72
72
  }
73
73
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: OptionGroupDropdownComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
74
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: OptionGroupDropdownComponent, isStandalone: true, selector: "lx-option-group-dropdown", inputs: { optionGroups: "optionGroups", newOptionLabel: "newOptionLabel", highlightTerm: "highlightTerm", showCreateNewOption: "showCreateNewOption", labelKey: "labelKey", loading: "loading", trackByProperty: "trackByProperty", showNoResultsIfGroupIsEmpty: "showNoResultsIfGroupIsEmpty", overlayPositioning: "overlayPositioning" }, outputs: { onItemSelected: "onItemSelected", containerScrolled: "containerScrolled", createNewOption: "createNewOption" }, providers: [{ provide: KeyboardSelectDirective, useExisting: forwardRef(() => OptionGroupDropdownComponent) }], queries: [{ propertyName: "optionTemplateRef", first: true, predicate: ["optionTemplate"], descendants: true }, { propertyName: "noResultsOptionTemplateRef", first: true, predicate: ["noResultsOptionTemplateRef"], descendants: true }], viewQueries: [{ propertyName: "selectOrigin", first: true, predicate: ["selectOrigin"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"overlayPositioning; else dropdown\">\n <div class=\"overlayOrigin\" cdkOverlayOrigin #selectOrigin=\"cdkOverlayOrigin\"></div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectOrigin\"\n [cdkConnectedOverlayOpen]=\"!!(cdkOverlayOpen$ | async)\"\n [cdkConnectedOverlayWidth]=\"selectOrigin.elementRef.nativeElement.offsetWidth\"\n (positionChange)=\"onPositionChange($event)\"\n >\n <div class=\"overlayDropdown\" [ngClass]=\"{ top: isTopDropdown }\">\n <ng-container [ngTemplateOutlet]=\"dropdown\"></ng-container>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #dropdown>\n <div\n #keyboardSelectContainer\n class=\"scrollingPanel lxThinScrollbar\"\n infinite-scroll\n [scrollWindow]=\"false\"\n [fromRoot]=\"true\"\n (scrolled)=\"containerScrolled.emit()\"\n >\n <ul class=\"options\">\n <li\n *ngIf=\"showCreateNewOption && newOptionLabel && isNewItem\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (click)=\"onCreateNewOption()\"\n (select)=\"onCreateNewOption()\"\n [class.highlighted]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n class=\"option\"\n >\n <span class=\"newEntryContent\">\n {{ newOptionLabel }}\n </span>\n <lx-badge class=\"lx-margin-left\" size=\"small\" [content]=\"'common.new' | translate | uppercase\"></lx-badge>\n </li>\n <ng-container *ngFor=\"let optionGroup of optionGroups; let groupIndex = index; trackBy: trackByLabel\">\n <li>\n <div class=\"groupLabel\" *ngIf=\"optionGroup.label\">\n <span>{{ optionGroup.label | uppercase }}</span>\n </div>\n <ul>\n <ng-container *ngIf=\"showNoResultsIfGroupIsEmpty && optionGroup.options.length === 0; else options\">\n <li class=\"noResult\">\n <ng-container *ngIf=\"noResultsOptionTemplateRef; else defaultText\">\n <ng-container\n *ngTemplateOutlet=\"noResultsOptionTemplateRef; context: { group: optionGroup, groupIndex: groupIndex }\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultText>\n <span>{{ NAME + '.noResults' | translate }}</span>\n </ng-template>\n </li>\n </ng-container>\n <ng-template #options>\n <li\n *ngFor=\"let option of optionGroup.options; let index = index; trackBy: trackByValue\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n class=\"option\"\n (click)=\"selectOption(option)\"\n (select)=\"selectOption(option)\"\n [class.highlighted]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n >\n <ng-container *ngIf=\"optionTemplateRef; else basicDropdownOption\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplateRef; context: { $implicit: option, index: index, groupIndex: groupIndex }\"\n ></ng-container>\n </ng-container>\n <ng-template #basicDropdownOption>\n <lx-basic-dropdown-item\n [label]=\"option.label\"\n labelFontWeight=\"normal\"\n [highlightTerm]=\"highlightTerm\"\n ></lx-basic-dropdown-item>\n </ng-template>\n </li>\n </ng-template>\n </ul>\n </li>\n </ng-container>\n <lx-spinner *ngIf=\"loading\" [fadeBackground]=\"true\"></lx-spinner>\n </ul>\n </div>\n</ng-template>\n", styles: [":host{display:block}.overlayDropdown{width:100%;background:#fff;border-radius:3px;border-left:solid 1px #e1e5eb;border-right:solid 1px #e1e5eb;margin:0 -1px;width:calc(100% + 2px)}.overlayDropdown:not(.top){box-shadow:0 6px 6px #21252933;border-top:0;border-bottom:solid 1px #e1e5eb;border-top-left-radius:0;border-top-right-radius:0}.overlayDropdown.top{box-shadow:0 -4px 6px #21252933;border-top:solid 1px #e1e5eb;border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.scrollingPanel{overflow-y:auto;max-height:400px}.groupLabel{line-height:23px;padding:4px 12px;color:#99a5bb;letter-spacing:.5px;font-weight:700;text-transform:uppercase;cursor:default}ul{list-style:none;margin:0;padding:0}ul:not(:last-child){border-bottom:solid 1px #eaedf1}.noResult{display:block;padding:4px 12px}.option{cursor:pointer;display:block;padding:4px 12px}.option:hover{background-color:#e1e5eb!important}.option.highlighted{background:#eaedf1}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: InfiniteScrollModule }, { kind: "directive", type: i1.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "directive", type: SelectableItemDirective, selector: "[lxSelectableItem]", inputs: ["scrollInContainer", "lxSelectableItem"], outputs: ["select"] }, { kind: "component", type: BadgeComponent, selector: "lx-badge", inputs: ["content", "size", "color"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: BasicDropdownItemComponent, selector: "lx-basic-dropdown-item", inputs: ["label", "description", "highlightTerm", "labelFontWeight", "descriptionFontStyle", "descriptionStyleOptions"] }, { kind: "component", type: SpinnerComponent, selector: "lx-spinner", inputs: ["fadeBackground"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
74
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: OptionGroupDropdownComponent, isStandalone: true, selector: "lx-option-group-dropdown", inputs: { optionGroups: "optionGroups", newOptionLabel: "newOptionLabel", highlightTerm: "highlightTerm", showCreateNewOption: "showCreateNewOption", labelKey: "labelKey", loading: "loading", trackByProperty: "trackByProperty", showNoResultsIfGroupIsEmpty: "showNoResultsIfGroupIsEmpty", overlayPositioning: "overlayPositioning" }, outputs: { onItemSelected: "onItemSelected", containerScrolled: "containerScrolled", createNewOption: "createNewOption" }, providers: [{ provide: KeyboardSelectDirective, useExisting: forwardRef(() => OptionGroupDropdownComponent) }], queries: [{ propertyName: "optionTemplateRef", first: true, predicate: ["optionTemplate"], descendants: true }, { propertyName: "noResultsOptionTemplateRef", first: true, predicate: ["noResultsOptionTemplateRef"], descendants: true }], viewQueries: [{ propertyName: "selectOrigin", first: true, predicate: ["selectOrigin"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"overlayPositioning; else dropdown\">\n <div class=\"overlayOrigin\" cdkOverlayOrigin #selectOrigin=\"cdkOverlayOrigin\"></div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectOrigin\"\n [cdkConnectedOverlayOpen]=\"!!(cdkOverlayOpen$ | async)\"\n [cdkConnectedOverlayWidth]=\"selectOrigin.elementRef.nativeElement.offsetWidth\"\n (positionChange)=\"onPositionChange($event)\"\n >\n <div class=\"overlayDropdown\" [ngClass]=\"{ top: isTopDropdown }\">\n <ng-container [ngTemplateOutlet]=\"dropdown\"></ng-container>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #dropdown>\n <div\n #keyboardSelectContainer\n class=\"scrollingPanel lxThinScrollbar\"\n infinite-scroll\n [scrollWindow]=\"false\"\n [fromRoot]=\"true\"\n (scrolled)=\"containerScrolled.emit()\"\n >\n <ul class=\"options\">\n <li\n *ngIf=\"showCreateNewOption && newOptionLabel && isNewItem\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (click)=\"onCreateNewOption()\"\n (select)=\"onCreateNewOption()\"\n [class.highlighted]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n class=\"option\"\n >\n <span class=\"newEntryContent\">\n {{ newOptionLabel }}\n </span>\n <lx-counter class=\"lx-margin-left\" size=\"small\" [content]=\"'common.new' | translate | uppercase\"></lx-counter>\n </li>\n <ng-container *ngFor=\"let optionGroup of optionGroups; let groupIndex = index; trackBy: trackByLabel\">\n <li>\n <div class=\"groupLabel\" *ngIf=\"optionGroup.label\">\n <span>{{ optionGroup.label | uppercase }}</span>\n </div>\n <ul>\n <ng-container *ngIf=\"showNoResultsIfGroupIsEmpty && optionGroup.options.length === 0; else options\">\n <li class=\"noResult\">\n <ng-container *ngIf=\"noResultsOptionTemplateRef; else defaultText\">\n <ng-container\n *ngTemplateOutlet=\"noResultsOptionTemplateRef; context: { group: optionGroup, groupIndex: groupIndex }\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultText>\n <span>{{ NAME + '.noResults' | translate }}</span>\n </ng-template>\n </li>\n </ng-container>\n <ng-template #options>\n <li\n *ngFor=\"let option of optionGroup.options; let index = index; trackBy: trackByValue\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n class=\"option\"\n (click)=\"selectOption(option)\"\n (select)=\"selectOption(option)\"\n [class.highlighted]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n >\n <ng-container *ngIf=\"optionTemplateRef; else basicDropdownOption\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplateRef; context: { $implicit: option, index: index, groupIndex: groupIndex }\"\n ></ng-container>\n </ng-container>\n <ng-template #basicDropdownOption>\n <lx-basic-dropdown-item\n [label]=\"option.label\"\n labelFontWeight=\"normal\"\n [highlightTerm]=\"highlightTerm\"\n ></lx-basic-dropdown-item>\n </ng-template>\n </li>\n </ng-template>\n </ul>\n </li>\n </ng-container>\n <lx-spinner *ngIf=\"loading\" [fadeBackground]=\"true\"></lx-spinner>\n </ul>\n </div>\n</ng-template>\n", styles: [":host{display:block}.overlayDropdown{width:100%;background:#fff;border-radius:3px;border-left:solid 1px #e1e5eb;border-right:solid 1px #e1e5eb;margin:0 -1px;width:calc(100% + 2px)}.overlayDropdown:not(.top){box-shadow:0 6px 6px #21252933;border-top:0;border-bottom:solid 1px #e1e5eb;border-top-left-radius:0;border-top-right-radius:0}.overlayDropdown.top{box-shadow:0 -4px 6px #21252933;border-top:solid 1px #e1e5eb;border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.scrollingPanel{overflow-y:auto;max-height:400px}.groupLabel{line-height:23px;padding:4px 12px;color:#99a5bb;letter-spacing:.5px;font-weight:700;text-transform:uppercase;cursor:default}ul{list-style:none;margin:0;padding:0}ul:not(:last-child){border-bottom:solid 1px #eaedf1}.noResult{display:block;padding:4px 12px}.option{cursor:pointer;display:block;padding:4px 12px}.option:hover{background-color:#e1e5eb!important}.option.highlighted{background:#eaedf1}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: InfiniteScrollModule }, { kind: "directive", type: i1.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "directive", type: SelectableItemDirective, selector: "[lxSelectableItem]", inputs: ["scrollInContainer", "lxSelectableItem"], outputs: ["select"] }, { kind: "component", type: CounterComponent, selector: "lx-counter", inputs: ["content", "size", "color"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: BasicDropdownItemComponent, selector: "lx-basic-dropdown-item", inputs: ["label", "description", "highlightTerm", "labelFontWeight", "descriptionFontStyle", "descriptionStyleOptions"] }, { kind: "component", type: SpinnerComponent, selector: "lx-spinner", inputs: ["fadeBackground"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: UpperCasePipe, name: "uppercase" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
75
75
  }
76
76
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: OptionGroupDropdownComponent, decorators: [{
77
77
  type: Component,
@@ -83,14 +83,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
83
83
  NgTemplateOutlet,
84
84
  InfiniteScrollModule,
85
85
  SelectableItemDirective,
86
- BadgeComponent,
86
+ CounterComponent,
87
87
  NgFor,
88
88
  BasicDropdownItemComponent,
89
89
  SpinnerComponent,
90
90
  AsyncPipe,
91
91
  UpperCasePipe,
92
92
  TranslateModule
93
- ], template: "<ng-container *ngIf=\"overlayPositioning; else dropdown\">\n <div class=\"overlayOrigin\" cdkOverlayOrigin #selectOrigin=\"cdkOverlayOrigin\"></div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectOrigin\"\n [cdkConnectedOverlayOpen]=\"!!(cdkOverlayOpen$ | async)\"\n [cdkConnectedOverlayWidth]=\"selectOrigin.elementRef.nativeElement.offsetWidth\"\n (positionChange)=\"onPositionChange($event)\"\n >\n <div class=\"overlayDropdown\" [ngClass]=\"{ top: isTopDropdown }\">\n <ng-container [ngTemplateOutlet]=\"dropdown\"></ng-container>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #dropdown>\n <div\n #keyboardSelectContainer\n class=\"scrollingPanel lxThinScrollbar\"\n infinite-scroll\n [scrollWindow]=\"false\"\n [fromRoot]=\"true\"\n (scrolled)=\"containerScrolled.emit()\"\n >\n <ul class=\"options\">\n <li\n *ngIf=\"showCreateNewOption && newOptionLabel && isNewItem\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (click)=\"onCreateNewOption()\"\n (select)=\"onCreateNewOption()\"\n [class.highlighted]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n class=\"option\"\n >\n <span class=\"newEntryContent\">\n {{ newOptionLabel }}\n </span>\n <lx-badge class=\"lx-margin-left\" size=\"small\" [content]=\"'common.new' | translate | uppercase\"></lx-badge>\n </li>\n <ng-container *ngFor=\"let optionGroup of optionGroups; let groupIndex = index; trackBy: trackByLabel\">\n <li>\n <div class=\"groupLabel\" *ngIf=\"optionGroup.label\">\n <span>{{ optionGroup.label | uppercase }}</span>\n </div>\n <ul>\n <ng-container *ngIf=\"showNoResultsIfGroupIsEmpty && optionGroup.options.length === 0; else options\">\n <li class=\"noResult\">\n <ng-container *ngIf=\"noResultsOptionTemplateRef; else defaultText\">\n <ng-container\n *ngTemplateOutlet=\"noResultsOptionTemplateRef; context: { group: optionGroup, groupIndex: groupIndex }\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultText>\n <span>{{ NAME + '.noResults' | translate }}</span>\n </ng-template>\n </li>\n </ng-container>\n <ng-template #options>\n <li\n *ngFor=\"let option of optionGroup.options; let index = index; trackBy: trackByValue\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n class=\"option\"\n (click)=\"selectOption(option)\"\n (select)=\"selectOption(option)\"\n [class.highlighted]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n >\n <ng-container *ngIf=\"optionTemplateRef; else basicDropdownOption\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplateRef; context: { $implicit: option, index: index, groupIndex: groupIndex }\"\n ></ng-container>\n </ng-container>\n <ng-template #basicDropdownOption>\n <lx-basic-dropdown-item\n [label]=\"option.label\"\n labelFontWeight=\"normal\"\n [highlightTerm]=\"highlightTerm\"\n ></lx-basic-dropdown-item>\n </ng-template>\n </li>\n </ng-template>\n </ul>\n </li>\n </ng-container>\n <lx-spinner *ngIf=\"loading\" [fadeBackground]=\"true\"></lx-spinner>\n </ul>\n </div>\n</ng-template>\n", styles: [":host{display:block}.overlayDropdown{width:100%;background:#fff;border-radius:3px;border-left:solid 1px #e1e5eb;border-right:solid 1px #e1e5eb;margin:0 -1px;width:calc(100% + 2px)}.overlayDropdown:not(.top){box-shadow:0 6px 6px #21252933;border-top:0;border-bottom:solid 1px #e1e5eb;border-top-left-radius:0;border-top-right-radius:0}.overlayDropdown.top{box-shadow:0 -4px 6px #21252933;border-top:solid 1px #e1e5eb;border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.scrollingPanel{overflow-y:auto;max-height:400px}.groupLabel{line-height:23px;padding:4px 12px;color:#99a5bb;letter-spacing:.5px;font-weight:700;text-transform:uppercase;cursor:default}ul{list-style:none;margin:0;padding:0}ul:not(:last-child){border-bottom:solid 1px #eaedf1}.noResult{display:block;padding:4px 12px}.option{cursor:pointer;display:block;padding:4px 12px}.option:hover{background-color:#e1e5eb!important}.option.highlighted{background:#eaedf1}\n"] }]
93
+ ], template: "<ng-container *ngIf=\"overlayPositioning; else dropdown\">\n <div class=\"overlayOrigin\" cdkOverlayOrigin #selectOrigin=\"cdkOverlayOrigin\"></div>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"selectOrigin\"\n [cdkConnectedOverlayOpen]=\"!!(cdkOverlayOpen$ | async)\"\n [cdkConnectedOverlayWidth]=\"selectOrigin.elementRef.nativeElement.offsetWidth\"\n (positionChange)=\"onPositionChange($event)\"\n >\n <div class=\"overlayDropdown\" [ngClass]=\"{ top: isTopDropdown }\">\n <ng-container [ngTemplateOutlet]=\"dropdown\"></ng-container>\n </div>\n </ng-template>\n</ng-container>\n\n<ng-template #dropdown>\n <div\n #keyboardSelectContainer\n class=\"scrollingPanel lxThinScrollbar\"\n infinite-scroll\n [scrollWindow]=\"false\"\n [fromRoot]=\"true\"\n (scrolled)=\"containerScrolled.emit()\"\n >\n <ul class=\"options\">\n <li\n *ngIf=\"showCreateNewOption && newOptionLabel && isNewItem\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n (click)=\"onCreateNewOption()\"\n (select)=\"onCreateNewOption()\"\n [class.highlighted]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n class=\"option\"\n >\n <span class=\"newEntryContent\">\n {{ newOptionLabel }}\n </span>\n <lx-counter class=\"lx-margin-left\" size=\"small\" [content]=\"'common.new' | translate | uppercase\"></lx-counter>\n </li>\n <ng-container *ngFor=\"let optionGroup of optionGroups; let groupIndex = index; trackBy: trackByLabel\">\n <li>\n <div class=\"groupLabel\" *ngIf=\"optionGroup.label\">\n <span>{{ optionGroup.label | uppercase }}</span>\n </div>\n <ul>\n <ng-container *ngIf=\"showNoResultsIfGroupIsEmpty && optionGroup.options.length === 0; else options\">\n <li class=\"noResult\">\n <ng-container *ngIf=\"noResultsOptionTemplateRef; else defaultText\">\n <ng-container\n *ngTemplateOutlet=\"noResultsOptionTemplateRef; context: { group: optionGroup, groupIndex: groupIndex }\"\n ></ng-container>\n </ng-container>\n <ng-template #defaultText>\n <span>{{ NAME + '.noResults' | translate }}</span>\n </ng-template>\n </li>\n </ng-container>\n <ng-template #options>\n <li\n *ngFor=\"let option of optionGroup.options; let index = index; trackBy: trackByValue\"\n lxSelectableItem\n [scrollInContainer]=\"keyboardSelectContainer\"\n #item\n class=\"option\"\n (click)=\"selectOption(option)\"\n (select)=\"selectOption(option)\"\n [class.highlighted]=\"isItemSelected(item, (selectedItem$ | async)?.element)\"\n >\n <ng-container *ngIf=\"optionTemplateRef; else basicDropdownOption\">\n <ng-container\n *ngTemplateOutlet=\"optionTemplateRef; context: { $implicit: option, index: index, groupIndex: groupIndex }\"\n ></ng-container>\n </ng-container>\n <ng-template #basicDropdownOption>\n <lx-basic-dropdown-item\n [label]=\"option.label\"\n labelFontWeight=\"normal\"\n [highlightTerm]=\"highlightTerm\"\n ></lx-basic-dropdown-item>\n </ng-template>\n </li>\n </ng-template>\n </ul>\n </li>\n </ng-container>\n <lx-spinner *ngIf=\"loading\" [fadeBackground]=\"true\"></lx-spinner>\n </ul>\n </div>\n</ng-template>\n", styles: [":host{display:block}.overlayDropdown{width:100%;background:#fff;border-radius:3px;border-left:solid 1px #e1e5eb;border-right:solid 1px #e1e5eb;margin:0 -1px;width:calc(100% + 2px)}.overlayDropdown:not(.top){box-shadow:0 6px 6px #21252933;border-top:0;border-bottom:solid 1px #e1e5eb;border-top-left-radius:0;border-top-right-radius:0}.overlayDropdown.top{box-shadow:0 -4px 6px #21252933;border-top:solid 1px #e1e5eb;border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.scrollingPanel{overflow-y:auto;max-height:400px}.groupLabel{line-height:23px;padding:4px 12px;color:#99a5bb;letter-spacing:.5px;font-weight:700;text-transform:uppercase;cursor:default}ul{list-style:none;margin:0;padding:0}ul:not(:last-child){border-bottom:solid 1px #eaedf1}.noResult{display:block;padding:4px 12px}.option{cursor:pointer;display:block;padding:4px 12px}.option:hover{background-color:#e1e5eb!important}.option.highlighted{background:#eaedf1}\n"] }]
94
94
  }], propDecorators: { optionGroups: [{
95
95
  type: Input
96
96
  }], newOptionLabel: [{
@@ -125,4 +125,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
125
125
  type: ViewChild,
126
126
  args: ['selectOrigin', { static: false }]
127
127
  }] } });
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLWdyb3VwLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2Zvcm1zLXVpL2NvbXBvbmVudHMvb3B0aW9uLWdyb3VwLWRyb3Bkb3duL29wdGlvbi1ncm91cC1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL29wdGlvbi1ncm91cC1kcm9wZG93bi9vcHRpb24tZ3JvdXAtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFrQyxNQUFNLHNCQUFzQixDQUFDO0FBQzdHLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkcsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNuRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN6RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNyRixPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNs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QzdGLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNQO3dCQUNQLElBQUk7d0JBQ0osZ0JBQWdCO3dCQUNoQixtQkFBbUI7d0JBQ25CLE9BQU87d0JBQ1AsZ0JBQWdCO3dCQUNoQixvQkFBb0I7d0JBQ3BCLHVCQUF1Qjt3QkFDdkIsY0FBYzt3QkFDZCxLQUFLO3dCQUNMLDBCQUEwQjt3QkFDMUIsZ0JBQWdCO3dCQUNoQixTQUFTO3dCQUNULGFBQWE7d0JBQ2IsZUFBZTtxQkFDaEI7OEJBSVEsWUFBWTtzQkFBcEIsS0FBSztnQkFJRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csMkJBQTJCO3NCQUFuQyxLQUFLO2dCQUNZLGtCQUFrQjtzQkFBbkMsS0FBSztnQkFFSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUV5QixpQkFBaUI7c0JBQWhELFlBQVk7dUJBQUMsZ0JBQWdCO2dCQU1jLDBCQUEwQjtzQkFBckUsWUFBWTt1QkFBQyw0QkFBNEI7Z0JBQ0ksWUFBWTtzQkFBekQsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrQ29ubmVjdGVkT3ZlcmxheSwgQ2RrT3ZlcmxheU9yaWdpbiwgQ29ubmVjdGVkT3ZlcmxheVBvc2l0aW9uQ2hhbmdlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ0ZvciwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCwgVXBwZXJDYXNlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgSW5maW5pdGVTY3JvbGxNb2R1bGUgfSBmcm9tICduZ3gtaW5maW5pdGUtc2Nyb2xsJztcbmltcG9ydCB7IEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS11aS9jb21wb25lbnRzL2JhZGdlL2JhZGdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTcGlubmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS11aS9jb21wb25lbnRzL3NwaW5uZXIvc3Bpbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VsZWN0YWJsZUl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3NlbGVjdGFibGUtaXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQmFzaWNEcm9wZG93bkl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9iYXNpYy1kcm9wZG93bi1pdGVtL2Jhc2ljLWRyb3Bkb3duLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IEJhc2ljRHJvcGRvd25Db21wb25lbnQgfSBmcm9tICcuLi9iYXNpYy1kcm9wZG93bi9iYXNpYy1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgS2V5Ym9hcmRTZWxlY3REaXJlY3RpdmUgfSBmcm9tICcuLi9rZXlib2FyZC1zZWxlY3QuZGlyZWN0aXZlJztcblxuZXhwb3J0IHR5cGUgT3B0aW9uR3JvdXBPcHRpb24gPSB7IHZhbHVlOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfTtcbi8qKlxuICogVE9ETzogcmVuYW1lIHRvIHNvbWV0aGluZyB1bnNwZWNpZmljIGZvciBzaW5nbGUgc2VsZWN0cyBiZWNhdXNlIG11bHRpc2VsZWN0cyBhcmUgYWxzbyBzdXBwb3J0ZWRcbiAqL1xuZXhwb3J0IHR5cGUgU2luZ2xlU2VsZWN0T3B0aW9uR3JvdXA8VCA9IGFueT4gPSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIG9wdGlvbnM6IChPcHRpb25Hcm91cE9wdGlvbiB8IFQpW107XG59O1xuXG4vKipcbiAqIFVzYWdlOlxuICogPGx4LXNpbmdsZS1zZWxlY3RcbiAqICAgICNzaW5nbGVTZWxlY3RcbiAqICAgIFtzZWxlY3Rpb25dPVwidmFsdWVcIlxuICogICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCI+XG4gKiAgIDxzcGFuIGNsYXNzPVwic2VsZWN0ZWRPcHRpb25cIj5cbiAqICAgICB7eyB2YWx1ZS5sYWJlbCB9fVxuICogICA8L3NwYW4+XG4gKiAgIDxseC1vcHRpb24tZ3JvdXAtZHJvcGRvd25cbiAqICAgICBjbGFzcz1cImRyb3Bkb3duQ29tcG9uZW50XCJcbiAqICAgICBba2V5Ym9hcmRTZWxlY3RBY3Rpb25dPVwic2luZ2xlU2VsZWN0Lm9wdGlvbnNLZXlib2FyZFNlbGVjdEFjdGlvbiRcIlxuICogICAgIFtvcHRpb25Hcm91cHNdPVwib3B0aW9uR3JvdXBzXCJcbiAqICAgICAob25JdGVtU2VsZWN0ZWQpPVwic2luZ2xlU2VsZWN0LnNlbGVjdE9wdGlvbigkZXZlbnQpXCI+XG4gKiAgICA8L2x4LW9wdGlvbi1ncm91cC1kcm9wZG93bj5cbiAqIDwvbHgtc2luZ2xlLXNlbGVjdD5cbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2x4LW9wdGlvbi1ncm91cC1kcm9wZG93bicsXG4gIHRlbXBsYXRlVXJsOiAnb3B0aW9uLWdyb3VwLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ29wdGlvbi1ncm91cC1kcm9wZG93bi5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IEtleWJvYXJkU2VsZWN0RGlyZWN0aXZlLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBPcHRpb25Hcm91cERyb3Bkb3duQ29tcG9uZW50KSB9XSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBOZ0lmLFxuICAgIENka092ZXJsYXlPcmlnaW4sXG4gICAgQ2RrQ29ubmVjdGVkT3ZlcmxheSxcbiAgICBOZ0NsYXNzLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgSW5maW5pdGVTY3JvbGxNb2R1bGUsXG4gICAgU2VsZWN0YWJsZUl0ZW1EaXJlY3RpdmUsXG4gICAgQmFkZ2VDb21wb25lbnQsXG4gICAgTmdGb3IsXG4gICAgQmFzaWNEcm9wZG93bkl0ZW1Db21wb25lbnQsXG4gICAgU3Bpbm5lckNvbXBvbmVudCxcbiAgICBBc3luY1BpcGUsXG4gICAgVXBwZXJDYXNlUGlwZSxcbiAgICBUcmFuc2xhdGVNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBPcHRpb25Hcm91cERyb3Bkb3duQ29tcG9uZW50IGV4dGVuZHMgS2V5Ym9hcmRTZWxlY3REaXJlY3RpdmUge1xuICByZWFkb25seSBOQU1FID0gJ09wdGlvbkdyb3VwRHJvcGRvd25Db21wb25lbnQnO1xuICBASW5wdXQoKSBvcHRpb25Hcm91cHM6IFNpbmdsZVNlbGVjdE9wdGlvbkdyb3VwW10gPSBbXTtcbiAgLyoqXG4gICAqIFVzdWFsbHkgYSBzdHJlYW0gb2YgdGhlIGN1cnJlbnQgaW5wdXQgdmFsdWUgb2YgdGhlIHBhcmVudCBzZWxlY3QuXG4gICAqL1xuICBASW5wdXQoKSBuZXdPcHRpb25MYWJlbD86IHN0cmluZztcbiAgQElucHV0KCkgaGlnaGxpZ2h0VGVybT86IHN0cmluZztcbiAgQElucHV0KCkgc2hvd0NyZWF0ZU5ld09wdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBsYWJlbEtleTogc3RyaW5nID0gJ2xhYmVsJztcbiAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSB0cmFja0J5UHJvcGVydHk/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNob3dOb1Jlc3VsdHNJZkdyb3VwSXNFbXB0eTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBvdmVycmlkZSBvdmVybGF5UG9zaXRpb25pbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgb25JdGVtU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE9wdGlvbkdyb3VwT3B0aW9uIHwgYW55PigpO1xuICBAT3V0cHV0KCkgY29udGFpbmVyU2Nyb2xsZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBjcmVhdGVOZXdPcHRpb24gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICBAQ29udGVudENoaWxkKCdvcHRpb25UZW1wbGF0ZScpIG9wdGlvblRlbXBsYXRlUmVmPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgLyoqXG4gICAqIElmIHlvdSBwcm92aWRlIGEgPG5nLXRlbXBsYXRlICNub1Jlc3VsdHNPcHRpb25UZW1wbGF0ZVJlZj48L25nLXRlbXBsYXRlPiBpbnNpZGUgdGhlIDxseC1vcHRpb24tZ3JvdXAtZHJvcGRvd24+XG4gICAqIGl0IHdpbGwgYmUgdXNlZCB0byBkaXNwbGF5IHRoZSBcIm5vIHJlc3VsdHNcIiBvcHRpb24gaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBcIk5vIHJlc3VsdHNcIiB0ZXh0LlxuICAgKiBUaGlzIHdheSB5b3UgY2FuIGVhc2lseSBkZWZpbmUgZGlmZmVyZW50IFwiTm8gcmVzdWx0c1wiIHRleHRzIGZvciBkaWZmZXJlbnQgZ3JvdXBzIHRvby5cbiAgICovXG4gIEBDb250ZW50Q2hpbGQoJ25vUmVzdWx0c09wdGlvblRlbXBsYXRlUmVmJykgbm9SZXN1bHRzT3B0aW9uVGVtcGxhdGVSZWY/OiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBAVmlld0NoaWxkKCdzZWxlY3RPcmlnaW4nLCB7IHN0YXRpYzogZmFsc2UgfSkgc2VsZWN0T3JpZ2luITogQ2RrT3ZlcmxheU9yaWdpbjtcbiAgaXNUb3BEcm9wZG93biA9IGZhbHNlO1xuXG4gIHB1YmxpYyBnZXQgaXNOZXdJdGVtKCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPVxuICAgICAgdGhpcy5vcHRpb25Hcm91cHM/LnJlZHVjZTwoT3B0aW9uR3JvdXBPcHRpb24gfCBhbnkpW10+KChmbGF0T3B0aW9ucywgb3B0aW9uR3JvdXApID0+IGZsYXRPcHRpb25zLmNvbmNhdChvcHRpb25Hcm91cC5vcHRpb25zKSwgW10pID8/XG4gICAgICBbXTtcbiAgICByZXR1cm4gQmFzaWNEcm9wZG93bkNvbXBvbmVudC5pc05ld0l0ZW0ob3B0aW9ucywgdGhpcy5uZXdPcHRpb25MYWJlbCA/PyAnJywgdGhpcy5sYWJlbEtleSk7XG4gIH1cblxuICBzZWxlY3RPcHRpb24ob3B0aW9uOiBPcHRpb25Hcm91cE9wdGlvbiB8IGFueSkge1xuICAgIHRoaXMub25JdGVtU2VsZWN0ZWQuZW1pdChvcHRpb24pO1xuICB9XG5cbiAgdHJhY2tCeUxhYmVsKGluZGV4OiBudW1iZXIsIG9wdGlvbkdyb3VwOiBTaW5nbGVTZWxlY3RPcHRpb25Hcm91cCkge1xuICAgIHJldHVybiBvcHRpb25Hcm91cC5sYWJlbCArIGluZGV4O1xuICB9XG5cbiAgcHVibGljIG9uQ3JlYXRlTmV3T3B0aW9uKCkge1xuICAgIGlmICghdGhpcy5sb2FkaW5nICYmIHRoaXMubmV3T3B0aW9uTGFiZWwpIHtcbiAgICAgIHRoaXMuY3JlYXRlTmV3T3B0aW9uLmVtaXQodGhpcy5uZXdPcHRpb25MYWJlbCk7XG4gICAgfVxuICB9XG5cbiAgdHJhY2tCeVZhbHVlKF9pbmRleDogbnVtYmVyLCBvcHRpb246IE9wdGlvbkdyb3VwT3B0aW9uIHwgYW55KSB7XG4gICAgaWYgKHRoaXMudHJhY2tCeVByb3BlcnR5KSB7XG4gICAgICByZXR1cm4gb3B0aW9uW3RoaXMudHJhY2tCeVByb3BlcnR5XTtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbi52YWx1ZTtcbiAgfVxuXG4gIG9uUG9zaXRpb25DaGFuZ2UoZXZlbnQ6IENvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbkNoYW5nZSkge1xuICAgIHRoaXMuaXNUb3BEcm9wZG93biA9IGV2ZW50LmNvbm5lY3Rpb25QYWlyLm9yaWdpblkgPT09ICd0b3AnO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwib3ZlcmxheVBvc2l0aW9uaW5nOyBlbHNlIGRyb3Bkb3duXCI+XG4gIDxkaXYgY2xhc3M9XCJvdmVybGF5T3JpZ2luXCIgY2RrT3ZlcmxheU9yaWdpbiAjc2VsZWN0T3JpZ2luPVwiY2RrT3ZlcmxheU9yaWdpblwiPjwvZGl2PlxuICA8bmctdGVtcGxhdGVcbiAgICBjZGtDb25uZWN0ZWRPdmVybGF5XG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcmlnaW5dPVwic2VsZWN0T3JpZ2luXCJcbiAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwiISEoY2RrT3ZlcmxheU9wZW4kIHwgYXN5bmMpXCJcbiAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheVdpZHRoXT1cInNlbGVjdE9yaWdpbi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGhcIlxuICAgIChwb3NpdGlvbkNoYW5nZSk9XCJvblBvc2l0aW9uQ2hhbmdlKCRldmVudClcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cIm92ZXJsYXlEcm9wZG93blwiIFtuZ0NsYXNzXT1cInsgdG9wOiBpc1RvcERyb3Bkb3duIH1cIj5cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHJvcGRvd25cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2Ryb3Bkb3duPlxuICA8ZGl2XG4gICAgI2tleWJvYXJkU2VsZWN0Q29udGFpbmVyXG4gICAgY2xhc3M9XCJzY3JvbGxpbmdQYW5lbCBseFRoaW5TY3JvbGxiYXJcIlxuICAgIGluZmluaXRlLXNjcm9sbFxuICAgIFtzY3JvbGxXaW5kb3ddPVwiZmFsc2VcIlxuICAgIFtmcm9tUm9vdF09XCJ0cnVlXCJcbiAgICAoc2Nyb2xsZWQpPVwiY29udGFpbmVyU2Nyb2xsZWQuZW1pdCgpXCJcbiAgPlxuICAgIDx1bCBjbGFzcz1cIm9wdGlvbnNcIj5cbiAgICAgIDxsaVxuICAgICAgICAqbmdJZj1cInNob3dDcmVhdGVOZXdPcHRpb24gJiYgbmV3T3B0aW9uTGFiZWwgJiYgaXNOZXdJdGVtXCJcbiAgICAgICAgbHhTZWxlY3RhYmxlSXRlbVxuICAgICAgICBbc2Nyb2xsSW5Db250YWluZXJdPVwia2V5Ym9hcmRTZWxlY3RDb250YWluZXJcIlxuICAgICAgICAjaXRlbVxuICAgICAgICAoY2xpY2spPVwib25DcmVhdGVOZXdPcHRpb24oKVwiXG4gICAgICAgIChzZWxlY3QpPVwib25DcmVhdGVOZXdPcHRpb24oKVwiXG4gICAgICAgIFtjbGFzcy5oaWdobGlnaHRlZF09XCJpc0l0ZW1TZWxlY3RlZChpdGVtLCAoc2VsZWN0ZWRJdGVtJCB8IGFzeW5jKT8uZWxlbWVudClcIlxuICAgICAgICBjbGFzcz1cIm9wdGlvblwiXG4gICAgICA+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibmV3RW50cnlDb250ZW50XCI+XG4gICAgICAgICAge3sgbmV3T3B0aW9uTGFiZWwgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8bHgtYmFkZ2UgY2xhc3M9XCJseC1tYXJnaW4tbGVmdFwiIHNpemU9XCJzbWFsbFwiIFtjb250ZW50XT1cIidjb21tb24ubmV3JyB8IHRyYW5zbGF0ZSB8IHVwcGVyY2FzZVwiPjwvbHgtYmFkZ2U+XG4gICAgICA8L2xpPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3B0aW9uR3JvdXAgb2Ygb3B0aW9uR3JvdXBzOyBsZXQgZ3JvdXBJbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5TGFiZWxcIj5cbiAgICAgICAgPGxpPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncm91cExhYmVsXCIgKm5nSWY9XCJvcHRpb25Hcm91cC5sYWJlbFwiPlxuICAgICAgICAgICAgPHNwYW4+e3sgb3B0aW9uR3JvdXAubGFiZWwgfCB1cHBlcmNhc2UgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHVsPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dOb1Jlc3VsdHNJZkdyb3VwSXNFbXB0eSAmJiBvcHRpb25Hcm91cC5vcHRpb25zLmxlbmd0aCA9PT0gMDsgZWxzZSBvcHRpb25zXCI+XG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cIm5vUmVzdWx0XCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vUmVzdWx0c09wdGlvblRlbXBsYXRlUmVmOyBlbHNlIGRlZmF1bHRUZXh0XCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibm9SZXN1bHRzT3B0aW9uVGVtcGxhdGVSZWY7IGNvbnRleHQ6IHsgZ3JvdXA6IG9wdGlvbkdyb3VwLCBncm91cEluZGV4OiBncm91cEluZGV4IH1cIlxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFRleHQ+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj57eyBOQU1FICsgJy5ub1Jlc3VsdHMnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb3B0aW9ucz5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25Hcm91cC5vcHRpb25zOyBsZXQgaW5kZXggPSBpbmRleDsgdHJhY2tCeTogdHJhY2tCeVZhbHVlXCJcbiAgICAgICAgICAgICAgICBseFNlbGVjdGFibGVJdGVtXG4gICAgICAgICAgICAgICAgW3Njcm9sbEluQ29udGFpbmVyXT1cImtleWJvYXJkU2VsZWN0Q29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAjaXRlbVxuICAgICAgICAgICAgICAgIGNsYXNzPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0T3B0aW9uKG9wdGlvbilcIlxuICAgICAgICAgICAgICAgIChzZWxlY3QpPVwic2VsZWN0T3B0aW9uKG9wdGlvbilcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5oaWdobGlnaHRlZF09XCJpc0l0ZW1TZWxlY3RlZChpdGVtLCAoc2VsZWN0ZWRJdGVtJCB8IGFzeW5jKT8uZWxlbWVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm9wdGlvblRlbXBsYXRlUmVmOyBlbHNlIGJhc2ljRHJvcGRvd25PcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJvcHRpb25UZW1wbGF0ZVJlZjsgY29udGV4dDogeyAkaW1wbGljaXQ6IG9wdGlvbiwgaW5kZXg6IGluZGV4LCBncm91cEluZGV4OiBncm91cEluZGV4IH1cIlxuICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjYmFzaWNEcm9wZG93bk9wdGlvbj5cbiAgICAgICAgICAgICAgICAgIDxseC1iYXNpYy1kcm9wZG93bi1pdGVtXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJvcHRpb24ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBsYWJlbEZvbnRXZWlnaHQ9XCJub3JtYWxcIlxuICAgICAgICAgICAgICAgICAgICBbaGlnaGxpZ2h0VGVybV09XCJoaWdobGlnaHRUZXJtXCJcbiAgICAgICAgICAgICAgICAgID48L2x4LWJhc2ljLWRyb3Bkb3duLWl0ZW0+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGx4LXNwaW5uZXIgKm5nSWY9XCJsb2FkaW5nXCIgW2ZhZGVCYWNrZ3JvdW5kXT1cInRydWVcIj48L2x4LXNwaW5uZXI+XG4gICAgPC91bD5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9uLWdyb3VwLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2Zvcm1zLXVpL2NvbXBvbmVudHMvb3B0aW9uLWdyb3VwLWRyb3Bkb3duL29wdGlvbi1ncm91cC1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9jb21wb25lbnRzL29wdGlvbi1ncm91cC1kcm9wZG93bi9vcHRpb24tZ3JvdXAtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFrQyxNQUFNLHNCQUFzQixDQUFDO0FBQzdHLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkcsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FB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QyxtQkFDN0YsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ1AsSUFBSTt3QkFDSixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsdUJBQXVCO3dCQUN2QixnQkFBZ0I7d0JBQ2hCLEtBQUs7d0JBQ0wsMEJBQTBCO3dCQUMxQixnQkFBZ0I7d0JBQ2hCLFNBQVM7d0JBQ1QsYUFBYTt3QkFDYixlQUFlO3FCQUNoQjs4QkFJUSxZQUFZO3NCQUFwQixLQUFLO2dCQUlHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRywyQkFBMkI7c0JBQW5DLEtBQUs7Z0JBQ1ksa0JBQWtCO3NCQUFuQyxLQUFLO2dCQUVJLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBRXlCLGlCQUFpQjtzQkFBaEQsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBTWMsMEJBQTBCO3NCQUFyRSxZQUFZO3VCQUFDLDRCQUE0QjtnQkFDSSxZQUFZO3NCQUF6RCxTQUFTO3VCQUFDLGNBQWMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtDb25uZWN0ZWRPdmVybGF5LCBDZGtPdmVybGF5T3JpZ2luLCBDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25DaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nQ2xhc3MsIE5nRm9yLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0LCBVcHBlckNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBJbmZpbml0ZVNjcm9sbE1vZHVsZSB9IGZyb20gJ25neC1pbmZpbml0ZS1zY3JvbGwnO1xuaW1wb3J0IHsgQ291bnRlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2NvcmUtdWkvY29tcG9uZW50cy9jb3VudGVyL2NvdW50ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFNwaW5uZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb3JlLXVpL2NvbXBvbmVudHMvc3Bpbm5lci9zcGlubmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWxlY3RhYmxlSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvc2VsZWN0YWJsZS1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCYXNpY0Ryb3Bkb3duSXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2ljLWRyb3Bkb3duLWl0ZW0vYmFzaWMtZHJvcGRvd24taXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmFzaWNEcm9wZG93bkNvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2ljLWRyb3Bkb3duL2Jhc2ljLWRyb3Bkb3duLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLZXlib2FyZFNlbGVjdERpcmVjdGl2ZSB9IGZyb20gJy4uL2tleWJvYXJkLXNlbGVjdC5kaXJlY3RpdmUnO1xuXG5leHBvcnQgdHlwZSBPcHRpb25Hcm91cE9wdGlvbiA9IHsgdmFsdWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9O1xuLyoqXG4gKiBUT0RPOiByZW5hbWUgdG8gc29tZXRoaW5nIHVuc3BlY2lmaWMgZm9yIHNpbmdsZSBzZWxlY3RzIGJlY2F1c2UgbXVsdGlzZWxlY3RzIGFyZSBhbHNvIHN1cHBvcnRlZFxuICovXG5leHBvcnQgdHlwZSBTaW5nbGVTZWxlY3RPcHRpb25Hcm91cDxUID0gYW55PiA9IHtcbiAgbGFiZWw6IHN0cmluZztcbiAgb3B0aW9uczogKE9wdGlvbkdyb3VwT3B0aW9uIHwgVClbXTtcbn07XG5cbi8qKlxuICogVXNhZ2U6XG4gKiA8bHgtc2luZ2xlLXNlbGVjdFxuICogICAgI3NpbmdsZVNlbGVjdFxuICogICAgW3NlbGVjdGlvbl09XCJ2YWx1ZVwiXG4gKiAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIj5cbiAqICAgPHNwYW4gY2xhc3M9XCJzZWxlY3RlZE9wdGlvblwiPlxuICogICAgIHt7IHZhbHVlLmxhYmVsIH19XG4gKiAgIDwvc3Bhbj5cbiAqICAgPGx4LW9wdGlvbi1ncm91cC1kcm9wZG93blxuICogICAgIGNsYXNzPVwiZHJvcGRvd25Db21wb25lbnRcIlxuICogICAgIFtrZXlib2FyZFNlbGVjdEFjdGlvbl09XCJzaW5nbGVTZWxlY3Qub3B0aW9uc0tleWJvYXJkU2VsZWN0QWN0aW9uJFwiXG4gKiAgICAgW29wdGlvbkdyb3Vwc109XCJvcHRpb25Hcm91cHNcIlxuICogICAgIChvbkl0ZW1TZWxlY3RlZCk9XCJzaW5nbGVTZWxlY3Quc2VsZWN0T3B0aW9uKCRldmVudClcIj5cbiAqICAgIDwvbHgtb3B0aW9uLWdyb3VwLWRyb3Bkb3duPlxuICogPC9seC1zaW5nbGUtc2VsZWN0PlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHgtb3B0aW9uLWdyb3VwLWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICdvcHRpb24tZ3JvdXAtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnb3B0aW9uLWdyb3VwLWRyb3Bkb3duLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogS2V5Ym9hcmRTZWxlY3REaXJlY3RpdmUsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE9wdGlvbkdyb3VwRHJvcGRvd25Db21wb25lbnQpIH1dLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nSWYsXG4gICAgQ2RrT3ZlcmxheU9yaWdpbixcbiAgICBDZGtDb25uZWN0ZWRPdmVybGF5LFxuICAgIE5nQ2xhc3MsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBJbmZpbml0ZVNjcm9sbE1vZHVsZSxcbiAgICBTZWxlY3RhYmxlSXRlbURpcmVjdGl2ZSxcbiAgICBDb3VudGVyQ29tcG9uZW50LFxuICAgIE5nRm9yLFxuICAgIEJhc2ljRHJvcGRvd25JdGVtQ29tcG9uZW50LFxuICAgIFNwaW5uZXJDb21wb25lbnQsXG4gICAgQXN5bmNQaXBlLFxuICAgIFVwcGVyQ2FzZVBpcGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgT3B0aW9uR3JvdXBEcm9wZG93bkNvbXBvbmVudCBleHRlbmRzIEtleWJvYXJkU2VsZWN0RGlyZWN0aXZlIHtcbiAgcmVhZG9ubHkgTkFNRSA9ICdPcHRpb25Hcm91cERyb3Bkb3duQ29tcG9uZW50JztcbiAgQElucHV0KCkgb3B0aW9uR3JvdXBzOiBTaW5nbGVTZWxlY3RPcHRpb25Hcm91cFtdID0gW107XG4gIC8qKlxuICAgKiBVc3VhbGx5IGEgc3RyZWFtIG9mIHRoZSBjdXJyZW50IGlucHV0IHZhbHVlIG9mIHRoZSBwYXJlbnQgc2VsZWN0LlxuICAgKi9cbiAgQElucHV0KCkgbmV3T3B0aW9uTGFiZWw/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGhpZ2hsaWdodFRlcm0/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNob3dDcmVhdGVOZXdPcHRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbGFiZWxLZXk6IHN0cmluZyA9ICdsYWJlbCc7XG4gIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdHJhY2tCeVByb3BlcnR5Pzogc3RyaW5nO1xuICBASW5wdXQoKSBzaG93Tm9SZXN1bHRzSWZHcm91cElzRW1wdHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgb3ZlcnJpZGUgb3ZlcmxheVBvc2l0aW9uaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIG9uSXRlbVNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxPcHRpb25Hcm91cE9wdGlvbiB8IGFueT4oKTtcbiAgQE91dHB1dCgpIGNvbnRhaW5lclNjcm9sbGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY3JlYXRlTmV3T3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgQENvbnRlbnRDaGlsZCgnb3B0aW9uVGVtcGxhdGUnKSBvcHRpb25UZW1wbGF0ZVJlZj86IFRlbXBsYXRlUmVmPGFueT47XG4gIC8qKlxuICAgKiBJZiB5b3UgcHJvdmlkZSBhIDxuZy10ZW1wbGF0ZSAjbm9SZXN1bHRzT3B0aW9uVGVtcGxhdGVSZWY+PC9uZy10ZW1wbGF0ZT4gaW5zaWRlIHRoZSA8bHgtb3B0aW9uLWdyb3VwLWRyb3Bkb3duPlxuICAgKiBpdCB3aWxsIGJlIHVzZWQgdG8gZGlzcGxheSB0aGUgXCJubyByZXN1bHRzXCIgb3B0aW9uIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgXCJObyByZXN1bHRzXCIgdGV4dC5cbiAgICogVGhpcyB3YXkgeW91IGNhbiBlYXNpbHkgZGVmaW5lIGRpZmZlcmVudCBcIk5vIHJlc3VsdHNcIiB0ZXh0cyBmb3IgZGlmZmVyZW50IGdyb3VwcyB0b28uXG4gICAqL1xuICBAQ29udGVudENoaWxkKCdub1Jlc3VsdHNPcHRpb25UZW1wbGF0ZVJlZicpIG5vUmVzdWx0c09wdGlvblRlbXBsYXRlUmVmPzogVGVtcGxhdGVSZWY8YW55PjtcbiAgQFZpZXdDaGlsZCgnc2VsZWN0T3JpZ2luJywgeyBzdGF0aWM6IGZhbHNlIH0pIHNlbGVjdE9yaWdpbiE6IENka092ZXJsYXlPcmlnaW47XG4gIGlzVG9wRHJvcGRvd24gPSBmYWxzZTtcblxuICBwdWJsaWMgZ2V0IGlzTmV3SXRlbSgpIHtcbiAgICBjb25zdCBvcHRpb25zID1cbiAgICAgIHRoaXMub3B0aW9uR3JvdXBzPy5yZWR1Y2U8KE9wdGlvbkdyb3VwT3B0aW9uIHwgYW55KVtdPigoZmxhdE9wdGlvbnMsIG9wdGlvbkdyb3VwKSA9PiBmbGF0T3B0aW9ucy5jb25jYXQob3B0aW9uR3JvdXAub3B0aW9ucyksIFtdKSA/P1xuICAgICAgW107XG4gICAgcmV0dXJuIEJhc2ljRHJvcGRvd25Db21wb25lbnQuaXNOZXdJdGVtKG9wdGlvbnMsIHRoaXMubmV3T3B0aW9uTGFiZWwgPz8gJycsIHRoaXMubGFiZWxLZXkpO1xuICB9XG5cbiAgc2VsZWN0T3B0aW9uKG9wdGlvbjogT3B0aW9uR3JvdXBPcHRpb24gfCBhbnkpIHtcbiAgICB0aGlzLm9uSXRlbVNlbGVjdGVkLmVtaXQob3B0aW9uKTtcbiAgfVxuXG4gIHRyYWNrQnlMYWJlbChpbmRleDogbnVtYmVyLCBvcHRpb25Hcm91cDogU2luZ2xlU2VsZWN0T3B0aW9uR3JvdXApIHtcbiAgICByZXR1cm4gb3B0aW9uR3JvdXAubGFiZWwgKyBpbmRleDtcbiAgfVxuXG4gIHB1YmxpYyBvbkNyZWF0ZU5ld09wdGlvbigpIHtcbiAgICBpZiAoIXRoaXMubG9hZGluZyAmJiB0aGlzLm5ld09wdGlvbkxhYmVsKSB7XG4gICAgICB0aGlzLmNyZWF0ZU5ld09wdGlvbi5lbWl0KHRoaXMubmV3T3B0aW9uTGFiZWwpO1xuICAgIH1cbiAgfVxuXG4gIHRyYWNrQnlWYWx1ZShfaW5kZXg6IG51bWJlciwgb3B0aW9uOiBPcHRpb25Hcm91cE9wdGlvbiB8IGFueSkge1xuICAgIGlmICh0aGlzLnRyYWNrQnlQcm9wZXJ0eSkge1xuICAgICAgcmV0dXJuIG9wdGlvblt0aGlzLnRyYWNrQnlQcm9wZXJ0eV07XG4gICAgfVxuICAgIHJldHVybiBvcHRpb24udmFsdWU7XG4gIH1cblxuICBvblBvc2l0aW9uQ2hhbmdlKGV2ZW50OiBDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25DaGFuZ2UpIHtcbiAgICB0aGlzLmlzVG9wRHJvcGRvd24gPSBldmVudC5jb25uZWN0aW9uUGFpci5vcmlnaW5ZID09PSAndG9wJztcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIm92ZXJsYXlQb3NpdGlvbmluZzsgZWxzZSBkcm9wZG93blwiPlxuICA8ZGl2IGNsYXNzPVwib3ZlcmxheU9yaWdpblwiIGNka092ZXJsYXlPcmlnaW4gI3NlbGVjdE9yaWdpbj1cImNka092ZXJsYXlPcmlnaW5cIj48L2Rpdj5cbiAgPG5nLXRlbXBsYXRlXG4gICAgY2RrQ29ubmVjdGVkT3ZlcmxheVxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cInNlbGVjdE9yaWdpblwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlPcGVuXT1cIiEhKGNka092ZXJsYXlPcGVuJCB8IGFzeW5jKVwiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlXaWR0aF09XCJzZWxlY3RPcmlnaW4uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoXCJcbiAgICAocG9zaXRpb25DaGFuZ2UpPVwib25Qb3NpdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5RHJvcGRvd25cIiBbbmdDbGFzc109XCJ7IHRvcDogaXNUb3BEcm9wZG93biB9XCI+XG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImRyb3Bkb3duXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNkcm9wZG93bj5cbiAgPGRpdlxuICAgICNrZXlib2FyZFNlbGVjdENvbnRhaW5lclxuICAgIGNsYXNzPVwic2Nyb2xsaW5nUGFuZWwgbHhUaGluU2Nyb2xsYmFyXCJcbiAgICBpbmZpbml0ZS1zY3JvbGxcbiAgICBbc2Nyb2xsV2luZG93XT1cImZhbHNlXCJcbiAgICBbZnJvbVJvb3RdPVwidHJ1ZVwiXG4gICAgKHNjcm9sbGVkKT1cImNvbnRhaW5lclNjcm9sbGVkLmVtaXQoKVwiXG4gID5cbiAgICA8dWwgY2xhc3M9XCJvcHRpb25zXCI+XG4gICAgICA8bGlcbiAgICAgICAgKm5nSWY9XCJzaG93Q3JlYXRlTmV3T3B0aW9uICYmIG5ld09wdGlvbkxhYmVsICYmIGlzTmV3SXRlbVwiXG4gICAgICAgIGx4U2VsZWN0YWJsZUl0ZW1cbiAgICAgICAgW3Njcm9sbEluQ29udGFpbmVyXT1cImtleWJvYXJkU2VsZWN0Q29udGFpbmVyXCJcbiAgICAgICAgI2l0ZW1cbiAgICAgICAgKGNsaWNrKT1cIm9uQ3JlYXRlTmV3T3B0aW9uKClcIlxuICAgICAgICAoc2VsZWN0KT1cIm9uQ3JlYXRlTmV3T3B0aW9uKClcIlxuICAgICAgICBbY2xhc3MuaGlnaGxpZ2h0ZWRdPVwiaXNJdGVtU2VsZWN0ZWQoaXRlbSwgKHNlbGVjdGVkSXRlbSQgfCBhc3luYyk/LmVsZW1lbnQpXCJcbiAgICAgICAgY2xhc3M9XCJvcHRpb25cIlxuICAgICAgPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm5ld0VudHJ5Q29udGVudFwiPlxuICAgICAgICAgIHt7IG5ld09wdGlvbkxhYmVsIH19XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPGx4LWNvdW50ZXIgY2xhc3M9XCJseC1tYXJnaW4tbGVmdFwiIHNpemU9XCJzbWFsbFwiIFtjb250ZW50XT1cIidjb21tb24ubmV3JyB8IHRyYW5zbGF0ZSB8IHVwcGVyY2FzZVwiPjwvbHgtY291bnRlcj5cbiAgICAgIDwvbGk+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb25Hcm91cCBvZiBvcHRpb25Hcm91cHM7IGxldCBncm91cEluZGV4ID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlMYWJlbFwiPlxuICAgICAgICA8bGk+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyb3VwTGFiZWxcIiAqbmdJZj1cIm9wdGlvbkdyb3VwLmxhYmVsXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyBvcHRpb25Hcm91cC5sYWJlbCB8IHVwcGVyY2FzZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8dWw+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2hvd05vUmVzdWx0c0lmR3JvdXBJc0VtcHR5ICYmIG9wdGlvbkdyb3VwLm9wdGlvbnMubGVuZ3RoID09PSAwOyBlbHNlIG9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibm9SZXN1bHRcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9SZXN1bHRzT3B0aW9uVGVtcGxhdGVSZWY7IGVsc2UgZGVmYXVsdFRleHRcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJub1Jlc3VsdHNPcHRpb25UZW1wbGF0ZVJlZjsgY29udGV4dDogeyBncm91cDogb3B0aW9uR3JvdXAsIGdyb3VwSW5kZXg6IGdyb3VwSW5kZXggfVwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGV4dD5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IE5BTUUgKyAnLm5vUmVzdWx0cycgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNvcHRpb25zPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbkdyb3VwLm9wdGlvbnM7IGxldCBpbmRleCA9IGluZGV4OyB0cmFja0J5OiB0cmFja0J5VmFsdWVcIlxuICAgICAgICAgICAgICAgIGx4U2VsZWN0YWJsZUl0ZW1cbiAgICAgICAgICAgICAgICBbc2Nyb2xsSW5Db250YWluZXJdPVwia2V5Ym9hcmRTZWxlY3RDb250YWluZXJcIlxuICAgICAgICAgICAgICAgICNpdGVtXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJvcHRpb25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RPcHRpb24ob3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgKHNlbGVjdCk9XCJzZWxlY3RPcHRpb24ob3B0aW9uKVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmhpZ2hsaWdodGVkXT1cImlzSXRlbVNlbGVjdGVkKGl0ZW0sIChzZWxlY3RlZEl0ZW0kIHwgYXN5bmMpPy5lbGVtZW50KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwib3B0aW9uVGVtcGxhdGVSZWY7IGVsc2UgYmFzaWNEcm9wZG93bk9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIm9wdGlvblRlbXBsYXRlUmVmOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogb3B0aW9uLCBpbmRleDogaW5kZXgsIGdyb3VwSW5kZXg6IGdyb3VwSW5kZXggfVwiXG4gICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNiYXNpY0Ryb3Bkb3duT3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPGx4LWJhc2ljLWRyb3Bkb3duLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIm9wdGlvbi5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsRm9udFdlaWdodD1cIm5vcm1hbFwiXG4gICAgICAgICAgICAgICAgICAgIFtoaWdobGlnaHRUZXJtXT1cImhpZ2hsaWdodFRlcm1cIlxuICAgICAgICAgICAgICAgICAgPjwvbHgtYmFzaWMtZHJvcGRvd24taXRlbT5cbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2xpPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8bHgtc3Bpbm5lciAqbmdJZj1cImxvYWRpbmdcIiBbZmFkZUJhY2tncm91bmRdPVwidHJ1ZVwiPjwvbHgtc3Bpbm5lcj5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -5,7 +5,7 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewCh
5
5
  import { RouterLink, RouterLinkActive } from '@angular/router';
6
6
  import { uniqueId } from 'lodash/fp';
7
7
  import { switchMap } from 'rxjs';
8
- import { BadgeComponent } from '../../../core-ui/components/badge/badge.component';
8
+ import { CounterComponent } from '../../../core-ui/components/counter/counter.component';
9
9
  import { Observe } from '../../../shared/observe';
10
10
  import { LxTabGroupKeyCode } from '../tab-group/tab-group-key-codes.enum';
11
11
  import * as i0 from "@angular/core";
@@ -71,14 +71,14 @@ export class TabComponent {
71
71
  }
72
72
  }
73
73
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: TabComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
74
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: TabComponent, isStandalone: true, selector: "lx-tab", inputs: { icon: "icon", label: "label", title: "title", tabLink: "tabLink", counter: "counter", routerLinkActiveOptions: "routerLinkActiveOptions", counterBadgeSize: "counterBadgeSize", noMargin: "noMargin", noLeftMarginForFirstTab: "noLeftMarginForFirstTab", background: "background", disabled: "disabled" }, outputs: { switch: "switch", keyDownAction: "keyDownAction" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["contentTemplate"], descendants: true, static: true }, { propertyName: "tabElement", first: true, predicate: ["tabElement"], descendants: true }, { propertyName: "routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true }], ngImport: i0, template: "<li\n #tabElement\n class=\"tab\"\n [class.active]=\"isActive\"\n [class.withIcon]=\"icon\"\n [class.noMargin]=\"noMargin\"\n [class.noLeftMarginForFirstTab]=\"noLeftMarginForFirstTab\"\n [class.backgroundGray]=\"background === 'gray'\"\n [class.disabled]=\"disabled\"\n [class.portalTab]=\"!tabLink\"\n [class.routerLinkTab]=\"tabLink\"\n [attr.title]=\"title\"\n (click)=\"select()\"\n (keydown)=\"handleKeyDown($event)\"\n role=\"tab\"\n [attr.id]=\"tabId\"\n [attr.aria-selected]=\"isActive\"\n [attr.tabindex]=\"isActive ? '0' : '-1'\"\n>\n <a\n *ngIf=\"tabLink; else portalTab\"\n tabindex=\"-1\"\n [routerLink]=\"tabLink\"\n routerLinkActive\n [routerLinkActiveOptions]=\"routerLinkActiveOptions\"\n >\n <ng-container *ngTemplateOutlet=\"portalTab\"></ng-container>\n </a>\n\n <ng-template #portalTab>\n <i *ngIf=\"icon\" class=\"icon {{ icon }}\"></i>\n <span *ngIf=\"label\" class=\"tabLabel\">{{ label }}</span>\n <lx-badge *ngIf=\"counter\" [size]=\"counterBadgeSize\" [content]=\"counter\" [color]=\"'gray'\"></lx-badge>\n </ng-template>\n\n <ng-template cdkPortal #contentTemplate=\"cdkPortal\">\n <div *ngIf=\"!tabLink\" class=\"content\" role=\"tabpanel\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n</li>\n", styles: [":host{display:inline-block}.tab{position:relative;display:inline-block;margin:0 8px;text-align:center;transition:border-bottom .5s;cursor:pointer}.tab:after{position:absolute;content:\"\";left:0;right:0;bottom:-1px;height:2px;background-color:transparent}.tab:hover:after,.tab.active:after{transition:background-color .1s;background-color:#1666ee}.tab.active{cursor:default}.tab.disabled{opacity:.3;cursor:default}.tab:hover .tabLabel,.tab.active .tabLabel{color:#2a303d;transition:color .1s}.portalTab,.routerLinkTab a{display:inline-block;padding:8px 8px 12px;line-height:20px}.portalTab.withIcon,.routerLinkTab a.withIcon{padding:10px 14px;line-height:16px}.routerLinkTab a:focus{outline:0}.routerLinkTab.active a,.routerLinkTab.disabled a{cursor:default}.icon{font-size:16px;opacity:.6}.noMargin{margin:0}.noLeftMarginForFirstTab{margin-left:0}.backgroundGray{background-color:#c2c9d6}.backgroundGray:not(.active):not(.disabled){background-color:#cfd5df}.tabLabel{color:#61779d;display:inline-block;font-size:14.5px;text-decoration:none}.content{height:100%}lx-badge{margin-left:8px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: BadgeComponent, selector: "lx-badge", inputs: ["content", "size", "color"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i2.CdkPortal, selector: "[cdkPortal]", exportAs: ["cdkPortal"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
74
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.0", type: TabComponent, isStandalone: true, selector: "lx-tab", inputs: { icon: "icon", label: "label", title: "title", tabLink: "tabLink", counter: "counter", routerLinkActiveOptions: "routerLinkActiveOptions", counterBadgeSize: "counterBadgeSize", noMargin: "noMargin", noLeftMarginForFirstTab: "noLeftMarginForFirstTab", background: "background", disabled: "disabled" }, outputs: { switch: "switch", keyDownAction: "keyDownAction" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["contentTemplate"], descendants: true, static: true }, { propertyName: "tabElement", first: true, predicate: ["tabElement"], descendants: true }, { propertyName: "routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true }], ngImport: i0, template: "<li\n #tabElement\n class=\"tab\"\n [class.active]=\"isActive\"\n [class.withIcon]=\"icon\"\n [class.noMargin]=\"noMargin\"\n [class.noLeftMarginForFirstTab]=\"noLeftMarginForFirstTab\"\n [class.backgroundGray]=\"background === 'gray'\"\n [class.disabled]=\"disabled\"\n [class.portalTab]=\"!tabLink\"\n [class.routerLinkTab]=\"tabLink\"\n [attr.title]=\"title\"\n (click)=\"select()\"\n (keydown)=\"handleKeyDown($event)\"\n role=\"tab\"\n [attr.id]=\"tabId\"\n [attr.aria-selected]=\"isActive\"\n [attr.tabindex]=\"isActive ? '0' : '-1'\"\n>\n <a\n *ngIf=\"tabLink; else portalTab\"\n tabindex=\"-1\"\n [routerLink]=\"tabLink\"\n routerLinkActive\n [routerLinkActiveOptions]=\"routerLinkActiveOptions\"\n >\n <ng-container *ngTemplateOutlet=\"portalTab\"></ng-container>\n </a>\n\n <ng-template #portalTab>\n <i *ngIf=\"icon\" class=\"icon {{ icon }}\"></i>\n <span *ngIf=\"label\" class=\"tabLabel\">{{ label }}</span>\n <lx-counter *ngIf=\"counter\" [size]=\"counterBadgeSize\" [content]=\"counter\" [color]=\"'gray'\"></lx-counter>\n </ng-template>\n\n <ng-template cdkPortal #contentTemplate=\"cdkPortal\">\n <div *ngIf=\"!tabLink\" class=\"content\" role=\"tabpanel\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n</li>\n", styles: [":host{display:inline-block}.tab{position:relative;display:inline-block;margin:0 8px;text-align:center;transition:border-bottom .5s;cursor:pointer}.tab:after{position:absolute;content:\"\";left:0;right:0;bottom:-1px;height:2px;background-color:transparent}.tab:hover:after,.tab.active:after{transition:background-color .1s;background-color:#1666ee}.tab.active{cursor:default}.tab.disabled{opacity:.3;cursor:default}.tab:hover .tabLabel,.tab.active .tabLabel{color:#2a303d;transition:color .1s}.portalTab,.routerLinkTab a{display:inline-block;padding:8px 8px 12px;line-height:20px}.portalTab.withIcon,.routerLinkTab a.withIcon{padding:10px 14px;line-height:16px}.routerLinkTab a:focus{outline:0}.routerLinkTab.active a,.routerLinkTab.disabled a{cursor:default}.icon{font-size:16px;opacity:.6}.noMargin{margin:0}.noLeftMarginForFirstTab{margin-left:0}.backgroundGray{background-color:#c2c9d6}.backgroundGray:not(.active):not(.disabled){background-color:#cfd5df}.tabLabel{color:#61779d;display:inline-block;font-size:14.5px;text-decoration:none}.content{height:100%}lx-counter{margin-left:8px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: CounterComponent, selector: "lx-counter", inputs: ["content", "size", "color"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i2.CdkPortal, selector: "[cdkPortal]", exportAs: ["cdkPortal"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
75
75
  }
76
76
  __decorate([
77
77
  Observe('routerLinkActive')
78
78
  ], TabComponent.prototype, "routerLinkActive$", void 0);
79
79
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: TabComponent, decorators: [{
80
80
  type: Component,
81
- args: [{ selector: 'lx-tab', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, RouterLinkActive, RouterLink, NgTemplateOutlet, BadgeComponent, PortalModule], template: "<li\n #tabElement\n class=\"tab\"\n [class.active]=\"isActive\"\n [class.withIcon]=\"icon\"\n [class.noMargin]=\"noMargin\"\n [class.noLeftMarginForFirstTab]=\"noLeftMarginForFirstTab\"\n [class.backgroundGray]=\"background === 'gray'\"\n [class.disabled]=\"disabled\"\n [class.portalTab]=\"!tabLink\"\n [class.routerLinkTab]=\"tabLink\"\n [attr.title]=\"title\"\n (click)=\"select()\"\n (keydown)=\"handleKeyDown($event)\"\n role=\"tab\"\n [attr.id]=\"tabId\"\n [attr.aria-selected]=\"isActive\"\n [attr.tabindex]=\"isActive ? '0' : '-1'\"\n>\n <a\n *ngIf=\"tabLink; else portalTab\"\n tabindex=\"-1\"\n [routerLink]=\"tabLink\"\n routerLinkActive\n [routerLinkActiveOptions]=\"routerLinkActiveOptions\"\n >\n <ng-container *ngTemplateOutlet=\"portalTab\"></ng-container>\n </a>\n\n <ng-template #portalTab>\n <i *ngIf=\"icon\" class=\"icon {{ icon }}\"></i>\n <span *ngIf=\"label\" class=\"tabLabel\">{{ label }}</span>\n <lx-badge *ngIf=\"counter\" [size]=\"counterBadgeSize\" [content]=\"counter\" [color]=\"'gray'\"></lx-badge>\n </ng-template>\n\n <ng-template cdkPortal #contentTemplate=\"cdkPortal\">\n <div *ngIf=\"!tabLink\" class=\"content\" role=\"tabpanel\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n</li>\n", styles: [":host{display:inline-block}.tab{position:relative;display:inline-block;margin:0 8px;text-align:center;transition:border-bottom .5s;cursor:pointer}.tab:after{position:absolute;content:\"\";left:0;right:0;bottom:-1px;height:2px;background-color:transparent}.tab:hover:after,.tab.active:after{transition:background-color .1s;background-color:#1666ee}.tab.active{cursor:default}.tab.disabled{opacity:.3;cursor:default}.tab:hover .tabLabel,.tab.active .tabLabel{color:#2a303d;transition:color .1s}.portalTab,.routerLinkTab a{display:inline-block;padding:8px 8px 12px;line-height:20px}.portalTab.withIcon,.routerLinkTab a.withIcon{padding:10px 14px;line-height:16px}.routerLinkTab a:focus{outline:0}.routerLinkTab.active a,.routerLinkTab.disabled a{cursor:default}.icon{font-size:16px;opacity:.6}.noMargin{margin:0}.noLeftMarginForFirstTab{margin-left:0}.backgroundGray{background-color:#c2c9d6}.backgroundGray:not(.active):not(.disabled){background-color:#cfd5df}.tabLabel{color:#61779d;display:inline-block;font-size:14.5px;text-decoration:none}.content{height:100%}lx-badge{margin-left:8px}\n"] }]
81
+ args: [{ selector: 'lx-tab', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgIf, RouterLinkActive, RouterLink, NgTemplateOutlet, CounterComponent, PortalModule], template: "<li\n #tabElement\n class=\"tab\"\n [class.active]=\"isActive\"\n [class.withIcon]=\"icon\"\n [class.noMargin]=\"noMargin\"\n [class.noLeftMarginForFirstTab]=\"noLeftMarginForFirstTab\"\n [class.backgroundGray]=\"background === 'gray'\"\n [class.disabled]=\"disabled\"\n [class.portalTab]=\"!tabLink\"\n [class.routerLinkTab]=\"tabLink\"\n [attr.title]=\"title\"\n (click)=\"select()\"\n (keydown)=\"handleKeyDown($event)\"\n role=\"tab\"\n [attr.id]=\"tabId\"\n [attr.aria-selected]=\"isActive\"\n [attr.tabindex]=\"isActive ? '0' : '-1'\"\n>\n <a\n *ngIf=\"tabLink; else portalTab\"\n tabindex=\"-1\"\n [routerLink]=\"tabLink\"\n routerLinkActive\n [routerLinkActiveOptions]=\"routerLinkActiveOptions\"\n >\n <ng-container *ngTemplateOutlet=\"portalTab\"></ng-container>\n </a>\n\n <ng-template #portalTab>\n <i *ngIf=\"icon\" class=\"icon {{ icon }}\"></i>\n <span *ngIf=\"label\" class=\"tabLabel\">{{ label }}</span>\n <lx-counter *ngIf=\"counter\" [size]=\"counterBadgeSize\" [content]=\"counter\" [color]=\"'gray'\"></lx-counter>\n </ng-template>\n\n <ng-template cdkPortal #contentTemplate=\"cdkPortal\">\n <div *ngIf=\"!tabLink\" class=\"content\" role=\"tabpanel\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n</li>\n", styles: [":host{display:inline-block}.tab{position:relative;display:inline-block;margin:0 8px;text-align:center;transition:border-bottom .5s;cursor:pointer}.tab:after{position:absolute;content:\"\";left:0;right:0;bottom:-1px;height:2px;background-color:transparent}.tab:hover:after,.tab.active:after{transition:background-color .1s;background-color:#1666ee}.tab.active{cursor:default}.tab.disabled{opacity:.3;cursor:default}.tab:hover .tabLabel,.tab.active .tabLabel{color:#2a303d;transition:color .1s}.portalTab,.routerLinkTab a{display:inline-block;padding:8px 8px 12px;line-height:20px}.portalTab.withIcon,.routerLinkTab a.withIcon{padding:10px 14px;line-height:16px}.routerLinkTab a:focus{outline:0}.routerLinkTab.active a,.routerLinkTab.disabled a{cursor:default}.icon{font-size:16px;opacity:.6}.noMargin{margin:0}.noLeftMarginForFirstTab{margin-left:0}.backgroundGray{background-color:#c2c9d6}.backgroundGray:not(.active):not(.disabled){background-color:#cfd5df}.tabLabel{color:#61779d;display:inline-block;font-size:14.5px;text-decoration:none}.content{height:100%}lx-counter{margin-left:8px}\n"] }]
82
82
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.Router }, { type: i1.ActivatedRoute }], propDecorators: { icon: [{
83
83
  type: Input
84
84
  }], label: [{
@@ -115,4 +115,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImpor
115
115
  type: ViewChild,
116
116
  args: [RouterLinkActive]
117
117
  }] } });
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL3RhYi11aS9jb21wb25lbnRzL3RhYi90YWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvdGFiLXVpL2NvbXBvbmVudHMvdGFiL3RhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBa0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFJLE9BQU8sRUFBMEIsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQWMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNuRixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7QUFVMUUsTUFBTSxPQUFPLFlBQVk7SUF3Q3ZCLElBQUksUUFBUSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxRQUFRO1FBQ1YsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO1NBQ3ZDO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFHRCxZQUNVLEVBQXFCLEVBQ3JCLE1BQWMsRUFDZCxjQUE4QjtRQUY5QixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQUNyQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBakQvQixVQUFLLEdBQVcsRUFBRSxDQUFDO1FBU25CLDRCQUF1QixHQUF1QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM5RCxxQkFBZ0IsR0FBd0IsU0FBUyxDQUFDO1FBQ2xELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsNEJBQXVCLEdBQVksS0FBSyxDQUFDO1FBQ3pDLGVBQVUsR0FBcUIsT0FBTyxDQUFDO1FBQ3ZDLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFekIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDNUIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQTJCcEQsY0FBUyxHQUFHLEtBQUssQ0FBQztRQU94QixJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUMvSCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQW9CO1FBQ2hDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBUyxpQkFBaUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDakUsK0RBQStEO1lBQy9ELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLE9BQU87U0FDUjtRQUVELE1BQU0sMkJBQTJCLEdBQUcsS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxPQUFPLENBQUM7UUFDckYsSUFBSSxDQUFDLDJCQUEyQixFQUFFO1lBQ2hDLE9BQU87U0FDUjtRQUVEOzs7V0FHRztRQUNILEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUMxRixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNwRixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ2Y7SUFDSCxDQUFDOzhHQTlGVSxZQUFZO2tHQUFaLFlBQVksK3FCQWlDWixnQkFBZ0IsZ0RDbkQ3QixreENBeUNBLDJuQ0R6QlksSUFBSSw2RkFBRSxnQkFBZ0IsOE1BQUUsVUFBVSxvT0FBRSxnQkFBZ0Isb0pBQUUsY0FBYywwRkFBRSxZQUFZOztBQWtDL0Q7SUFBNUIsT0FBTyxDQUFDLGtCQUFrQixDQUFDO3VEQUFrRDsyRkFoQ25FLFlBQVk7a0JBUnhCLFNBQVM7K0JBQ0UsUUFBUSxtQkFHRCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLFlBQVksQ0FBQzt3SUFPcEYsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBTUcsT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFLUCxPQUFPO3NCQUROLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdyQixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBRU0saUJBQWlCLE1BQ2pCLGdCQUFnQjtzQkFBNUMsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3J0YWxNb2R1bGUsIFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciwgUm91dGVyTGluaywgUm91dGVyTGlua0FjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyB1bmlxdWVJZCB9IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vY29yZS11aS9jb21wb25lbnRzL2JhZGdlL2JhZGdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPYnNlcnZlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL29ic2VydmUnO1xuaW1wb3J0IHsgTHhUYWJHcm91cEtleUNvZGUgfSBmcm9tICcuLi90YWItZ3JvdXAvdGFiLWdyb3VwLWtleS1jb2Rlcy5lbnVtJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHgtdGFiJyxcbiAgdGVtcGxhdGVVcmw6ICd0YWIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsndGFiLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdJZiwgUm91dGVyTGlua0FjdGl2ZSwgUm91dGVyTGluaywgTmdUZW1wbGF0ZU91dGxldCwgQmFkZ2VDb21wb25lbnQsIFBvcnRhbE1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgVGFiQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFRoZSBpY29uIGlucHV0IHRha2VzIGEgZm9udCBhd2Vzb21lIHNlbGVjdG9yXG4gICAqIFdBUk5JTkc6IEN1cnJlbnRseSB0aGlzIGNvbXBvbmVudCBkb2VzIG5vdCBzdXBwb3J0IHVzaW5nIGFuIGljb24gdG9nZXRoZXIgd2l0aCBhIGxhYmVsIG9yIGNvdW50ZXIuXG4gICAqL1xuICBASW5wdXQoKSBpY29uPzogc3RyaW5nO1xuICBASW5wdXQoKSBsYWJlbDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHRpdGxlPzogc3RyaW5nO1xuICAvKipcbiAgICogSW4gc29tZSBwYXJ0cyBvZiB0aGUgYXBwbGljYXRpb24sIHdlIGFyZSBwYXNzaW5nIGEgcGxhaW4gc3RyaW5nIHRvIHRoZSB0YWJMaW5rIGlucHV0LCB3aGVyZWFzIGluXG4gICAqIG1vc3QgcGFydHMsIHRoZSBpbnB1dCBpcyBwYXNzZWQgYXMgYW4gYXJyYXkuIFRoZSBSb3V0ZXJMaW5rIGRpcmVjdGl2ZSBhbHNvIGFjY2VwdHMgYm90aCB0eXBlcyxcbiAgICogdGhlcmVmb3JlIHdlIGFyZSB1c2luZyB0eXBlIG9mIHRoZSBpbnB1dCBhcyBzdHJpbmcgfCBhbnlbXS5cbiAgICovXG4gIEBJbnB1dCgpIHRhYkxpbms/OiBzdHJpbmcgfCBhbnlbXTtcbiAgQElucHV0KCkgY291bnRlcj86IG51bWJlcjtcbiAgQElucHV0KCkgcm91dGVyTGlua0FjdGl2ZU9wdGlvbnM6IHsgZXhhY3Q6IGJvb2xlYW4gfSA9IHsgZXhhY3Q6IHRydWUgfTtcbiAgQElucHV0KCkgY291bnRlckJhZGdlU2l6ZTogJ2RlZmF1bHQnIHwgJ3NtYWxsJyA9ICdkZWZhdWx0JztcbiAgQElucHV0KCkgbm9NYXJnaW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbm9MZWZ0TWFyZ2luRm9yRmlyc3RUYWI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgYmFja2dyb3VuZDogJ3doaXRlJyB8ICdncmF5JyA9ICd3aGl0ZSc7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHN3aXRjaCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGtleURvd25BY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPEtleWJvYXJkRXZlbnQ+KCk7XG5cbiAgdGFiSWQ6IHN0cmluZztcblxuICBAVmlld0NoaWxkKCdjb250ZW50VGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBjb250ZW50PzogVGVtcGxhdGVQb3J0YWw8YW55PjtcblxuICBAVmlld0NoaWxkKCd0YWJFbGVtZW50JykgdGFiRWxlbWVudD86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gIEBPYnNlcnZlKCdyb3V0ZXJMaW5rQWN0aXZlJykgcm91dGVyTGlua0FjdGl2ZSQhOiBPYnNlcnZhYmxlPFJvdXRlckxpbmtBY3RpdmU+O1xuICBAVmlld0NoaWxkKFJvdXRlckxpbmtBY3RpdmUpIHJvdXRlckxpbmtBY3RpdmU/OiBSb3V0ZXJMaW5rQWN0aXZlO1xuICAvKipcbiAgICogVXNlZCBieSB0aGUgbHgtdGFiLWdyb3VwIHRvIGJlIG5vdGlmaWVkIHdoZW4gYSBseC10YWIgdGhhdCBpcyBhIGxpbmtcbiAgICogaXMgc2V0IHRvIGFjdGl2ZSBieSB0aGUgQW5ndWxhciByb3V0ZXIuXG4gICAqL1xuICByb3V0ZXJMaW5rQWN0aXZlQ2hhbmdlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBzZXQgaXNBY3RpdmUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pc0FjdGl2ZSA9IHZhbHVlO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cbiAgZ2V0IGlzQWN0aXZlKCkge1xuICAgIGlmICh0aGlzLnJvdXRlckxpbmtBY3RpdmUpIHtcbiAgICAgIHJldHVybiB0aGlzLnJvdXRlckxpbmtBY3RpdmUuaXNBY3RpdmU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9pc0FjdGl2ZTtcbiAgfVxuICBwcml2YXRlIF9pc0FjdGl2ZSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGVcbiAgKSB7XG4gICAgdGhpcy50YWJJZCA9IHVuaXF1ZUlkKCd0YWInKTtcbiAgICB0aGlzLnJvdXRlckxpbmtBY3RpdmVDaGFuZ2UkID0gdGhpcy5yb3V0ZXJMaW5rQWN0aXZlJC5waXBlKHN3aXRjaE1hcCgocm91dGVyTGlua0FjdGl2ZSkgPT4gcm91dGVyTGlua0FjdGl2ZS5pc0FjdGl2ZUNoYW5nZSkpO1xuICB9XG5cbiAgc2VsZWN0KCk6IHZvaWQge1xuICAgIHRoaXMuc3dpdGNoLmVtaXQoKTtcbiAgfVxuXG4gIHNldEZvY3VzKCk6IHZvaWQge1xuICAgIHRoaXMudGFiRWxlbWVudD8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgfVxuXG4gIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAoT2JqZWN0LnZhbHVlczxzdHJpbmc+KEx4VGFiR3JvdXBLZXlDb2RlKS5pbmNsdWRlcyhldmVudC5jb2RlKSkge1xuICAgICAgLy8gU2VuZCB0aGlzIEtleURvd24gZXZlbnQgdXAgdG8gb3VyIHBhcmVudCB0byBiZSBoYW5kbGVkIHRoZXJlXG4gICAgICB0aGlzLmtleURvd25BY3Rpb24uZW1pdChldmVudCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaXNLZXlDb2RlVG9TZWxlY3RGb2N1c2VkVGFiID0gZXZlbnQuY29kZSA9PT0gJ0VudGVyJyB8fCBldmVudC5jb2RlID09PSAnU3BhY2UnO1xuICAgIGlmICghaXNLZXlDb2RlVG9TZWxlY3RGb2N1c2VkVGFiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2UgYXJlIHByZXZlbnRpbmcgdGhlIGRlZmF1bHQgYnJvd3NlciBiZWhhdmlvciB3aGVuIHRoZSBgU1BBQ0VgIGtleSBpcyBwcmVzc2VkLCBpbiB3aGljaFxuICAgICAqIGNhc2UgdGhlIGJyb3dzZXIgd291bGQgc2Nyb2xsIGRvd24gdGhlIHBhZ2UuXG4gICAgICovXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAodGhpcy50YWJMaW5rKSB7XG4gICAgICBjb25zdCBmb3JtYXR0ZWRUYWJMaW5rID0gdHlwZW9mIHRoaXMudGFiTGluayA9PT0gJ3N0cmluZycgPyBbdGhpcy50YWJMaW5rXSA6IHRoaXMudGFiTGluaztcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKGZvcm1hdHRlZFRhYkxpbmssIHsgcmVsYXRpdmVUbzogdGhpcy5hY3RpdmF0ZWRSb3V0ZSB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5zZWxlY3QoKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdCgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGxpXG4gICN0YWJFbGVtZW50XG4gIGNsYXNzPVwidGFiXCJcbiAgW2NsYXNzLmFjdGl2ZV09XCJpc0FjdGl2ZVwiXG4gIFtjbGFzcy53aXRoSWNvbl09XCJpY29uXCJcbiAgW2NsYXNzLm5vTWFyZ2luXT1cIm5vTWFyZ2luXCJcbiAgW2NsYXNzLm5vTGVmdE1hcmdpbkZvckZpcnN0VGFiXT1cIm5vTGVmdE1hcmdpbkZvckZpcnN0VGFiXCJcbiAgW2NsYXNzLmJhY2tncm91bmRHcmF5XT1cImJhY2tncm91bmQgPT09ICdncmF5J1wiXG4gIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtjbGFzcy5wb3J0YWxUYWJdPVwiIXRhYkxpbmtcIlxuICBbY2xhc3Mucm91dGVyTGlua1RhYl09XCJ0YWJMaW5rXCJcbiAgW2F0dHIudGl0bGVdPVwidGl0bGVcIlxuICAoY2xpY2spPVwic2VsZWN0KClcIlxuICAoa2V5ZG93bik9XCJoYW5kbGVLZXlEb3duKCRldmVudClcIlxuICByb2xlPVwidGFiXCJcbiAgW2F0dHIuaWRdPVwidGFiSWRcIlxuICBbYXR0ci5hcmlhLXNlbGVjdGVkXT1cImlzQWN0aXZlXCJcbiAgW2F0dHIudGFiaW5kZXhdPVwiaXNBY3RpdmUgPyAnMCcgOiAnLTEnXCJcbj5cbiAgPGFcbiAgICAqbmdJZj1cInRhYkxpbms7IGVsc2UgcG9ydGFsVGFiXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICBbcm91dGVyTGlua109XCJ0YWJMaW5rXCJcbiAgICByb3V0ZXJMaW5rQWN0aXZlXG4gICAgW3JvdXRlckxpbmtBY3RpdmVPcHRpb25zXT1cInJvdXRlckxpbmtBY3RpdmVPcHRpb25zXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwb3J0YWxUYWJcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9hPlxuXG4gIDxuZy10ZW1wbGF0ZSAjcG9ydGFsVGFiPlxuICAgIDxpICpuZ0lmPVwiaWNvblwiIGNsYXNzPVwiaWNvbiB7eyBpY29uIH19XCI+PC9pPlxuICAgIDxzcGFuICpuZ0lmPVwibGFiZWxcIiBjbGFzcz1cInRhYkxhYmVsXCI+e3sgbGFiZWwgfX08L3NwYW4+XG4gICAgPGx4LWJhZGdlICpuZ0lmPVwiY291bnRlclwiIFtzaXplXT1cImNvdW50ZXJCYWRnZVNpemVcIiBbY29udGVudF09XCJjb3VudGVyXCIgW2NvbG9yXT1cIidncmF5J1wiPjwvbHgtYmFkZ2U+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPG5nLXRlbXBsYXRlIGNka1BvcnRhbCAjY29udGVudFRlbXBsYXRlPVwiY2RrUG9ydGFsXCI+XG4gICAgPGRpdiAqbmdJZj1cIiF0YWJMaW5rXCIgY2xhc3M9XCJjb250ZW50XCIgcm9sZT1cInRhYnBhbmVsXCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2xpPlxuIl19
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL3RhYi11aS9jb21wb25lbnRzL3RhYi90YWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvdGFiLXVpL2NvbXBvbmVudHMvdGFiL3RhYi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBa0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFJLE9BQU8sRUFBMEIsVUFBVSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQWMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7OztBQVUxRSxNQUFNLE9BQU8sWUFBWTtJQXdDdkIsSUFBSSxRQUFRLENBQUMsS0FBYztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFJLFFBQVE7UUFDVixJQUFJLElB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QVEsbUJBR0QsdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1AsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLFlBQVksQ0FBQzt3SUFPdEYsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBTUcsT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyx1QkFBdUI7c0JBQS9CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFLUCxPQUFPO3NCQUROLFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUdyQixVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBRU0saUJBQWlCLE1BQ2pCLGdCQUFnQjtzQkFBNUMsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3J0YWxNb2R1bGUsIFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciwgUm91dGVyTGluaywgUm91dGVyTGlua0FjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyB1bmlxdWVJZCB9IGZyb20gJ2xvZGFzaC9mcCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvdW50ZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb3JlLXVpL2NvbXBvbmVudHMvY291bnRlci9jb3VudGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBPYnNlcnZlIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL29ic2VydmUnO1xuaW1wb3J0IHsgTHhUYWJHcm91cEtleUNvZGUgfSBmcm9tICcuLi90YWItZ3JvdXAvdGFiLWdyb3VwLWtleS1jb2Rlcy5lbnVtJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbHgtdGFiJyxcbiAgdGVtcGxhdGVVcmw6ICd0YWIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsndGFiLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdJZiwgUm91dGVyTGlua0FjdGl2ZSwgUm91dGVyTGluaywgTmdUZW1wbGF0ZU91dGxldCwgQ291bnRlckNvbXBvbmVudCwgUG9ydGFsTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJDb21wb25lbnQge1xuICAvKipcbiAgICogVGhlIGljb24gaW5wdXQgdGFrZXMgYSBmb250IGF3ZXNvbWUgc2VsZWN0b3JcbiAgICogV0FSTklORzogQ3VycmVudGx5IHRoaXMgY29tcG9uZW50IGRvZXMgbm90IHN1cHBvcnQgdXNpbmcgYW4gaWNvbiB0b2dldGhlciB3aXRoIGEgbGFiZWwgb3IgY291bnRlci5cbiAgICovXG4gIEBJbnB1dCgpIGljb24/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgdGl0bGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJbiBzb21lIHBhcnRzIG9mIHRoZSBhcHBsaWNhdGlvbiwgd2UgYXJlIHBhc3NpbmcgYSBwbGFpbiBzdHJpbmcgdG8gdGhlIHRhYkxpbmsgaW5wdXQsIHdoZXJlYXMgaW5cbiAgICogbW9zdCBwYXJ0cywgdGhlIGlucHV0IGlzIHBhc3NlZCBhcyBhbiBhcnJheS4gVGhlIFJvdXRlckxpbmsgZGlyZWN0aXZlIGFsc28gYWNjZXB0cyBib3RoIHR5cGVzLFxuICAgKiB0aGVyZWZvcmUgd2UgYXJlIHVzaW5nIHR5cGUgb2YgdGhlIGlucHV0IGFzIHN0cmluZyB8IGFueVtdLlxuICAgKi9cbiAgQElucHV0KCkgdGFiTGluaz86IHN0cmluZyB8IGFueVtdO1xuICBASW5wdXQoKSBjb3VudGVyPzogbnVtYmVyO1xuICBASW5wdXQoKSByb3V0ZXJMaW5rQWN0aXZlT3B0aW9uczogeyBleGFjdDogYm9vbGVhbiB9ID0geyBleGFjdDogdHJ1ZSB9O1xuICBASW5wdXQoKSBjb3VudGVyQmFkZ2VTaXplOiAnZGVmYXVsdCcgfCAnc21hbGwnID0gJ2RlZmF1bHQnO1xuICBASW5wdXQoKSBub01hcmdpbjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBub0xlZnRNYXJnaW5Gb3JGaXJzdFRhYjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBiYWNrZ3JvdW5kOiAnd2hpdGUnIHwgJ2dyYXknID0gJ3doaXRlJztcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgc3dpdGNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkga2V5RG93bkFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8S2V5Ym9hcmRFdmVudD4oKTtcblxuICB0YWJJZDogc3RyaW5nO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRlbnRUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGNvbnRlbnQ/OiBUZW1wbGF0ZVBvcnRhbDxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ3RhYkVsZW1lbnQnKSB0YWJFbGVtZW50PzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgQE9ic2VydmUoJ3JvdXRlckxpbmtBY3RpdmUnKSByb3V0ZXJMaW5rQWN0aXZlJCE6IE9ic2VydmFibGU8Um91dGVyTGlua0FjdGl2ZT47XG4gIEBWaWV3Q2hpbGQoUm91dGVyTGlua0FjdGl2ZSkgcm91dGVyTGlua0FjdGl2ZT86IFJvdXRlckxpbmtBY3RpdmU7XG4gIC8qKlxuICAgKiBVc2VkIGJ5IHRoZSBseC10YWItZ3JvdXAgdG8gYmUgbm90aWZpZWQgd2hlbiBhIGx4LXRhYiB0aGF0IGlzIGEgbGlua1xuICAgKiBpcyBzZXQgdG8gYWN0aXZlIGJ5IHRoZSBBbmd1bGFyIHJvdXRlci5cbiAgICovXG4gIHJvdXRlckxpbmtBY3RpdmVDaGFuZ2UkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIHNldCBpc0FjdGl2ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzQWN0aXZlID0gdmFsdWU7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuICBnZXQgaXNBY3RpdmUoKSB7XG4gICAgaWYgKHRoaXMucm91dGVyTGlua0FjdGl2ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucm91dGVyTGlua0FjdGl2ZS5pc0FjdGl2ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2lzQWN0aXZlO1xuICB9XG4gIHByaXZhdGUgX2lzQWN0aXZlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVxuICApIHtcbiAgICB0aGlzLnRhYklkID0gdW5pcXVlSWQoJ3RhYicpO1xuICAgIHRoaXMucm91dGVyTGlua0FjdGl2ZUNoYW5nZSQgPSB0aGlzLnJvdXRlckxpbmtBY3RpdmUkLnBpcGUoc3dpdGNoTWFwKChyb3V0ZXJMaW5rQWN0aXZlKSA9PiByb3V0ZXJMaW5rQWN0aXZlLmlzQWN0aXZlQ2hhbmdlKSk7XG4gIH1cblxuICBzZWxlY3QoKTogdm9pZCB7XG4gICAgdGhpcy5zd2l0Y2guZW1pdCgpO1xuICB9XG5cbiAgc2V0Rm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy50YWJFbGVtZW50Py5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICB9XG5cbiAgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChPYmplY3QudmFsdWVzPHN0cmluZz4oTHhUYWJHcm91cEtleUNvZGUpLmluY2x1ZGVzKGV2ZW50LmNvZGUpKSB7XG4gICAgICAvLyBTZW5kIHRoaXMgS2V5RG93biBldmVudCB1cCB0byBvdXIgcGFyZW50IHRvIGJlIGhhbmRsZWQgdGhlcmVcbiAgICAgIHRoaXMua2V5RG93bkFjdGlvbi5lbWl0KGV2ZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpc0tleUNvZGVUb1NlbGVjdEZvY3VzZWRUYWIgPSBldmVudC5jb2RlID09PSAnRW50ZXInIHx8IGV2ZW50LmNvZGUgPT09ICdTcGFjZSc7XG4gICAgaWYgKCFpc0tleUNvZGVUb1NlbGVjdEZvY3VzZWRUYWIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXZSBhcmUgcHJldmVudGluZyB0aGUgZGVmYXVsdCBicm93c2VyIGJlaGF2aW9yIHdoZW4gdGhlIGBTUEFDRWAga2V5IGlzIHByZXNzZWQsIGluIHdoaWNoXG4gICAgICogY2FzZSB0aGUgYnJvd3NlciB3b3VsZCBzY3JvbGwgZG93biB0aGUgcGFnZS5cbiAgICAgKi9cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmICh0aGlzLnRhYkxpbmspIHtcbiAgICAgIGNvbnN0IGZvcm1hdHRlZFRhYkxpbmsgPSB0eXBlb2YgdGhpcy50YWJMaW5rID09PSAnc3RyaW5nJyA/IFt0aGlzLnRhYkxpbmtdIDogdGhpcy50YWJMaW5rO1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoZm9ybWF0dGVkVGFiTGluaywgeyByZWxhdGl2ZVRvOiB0aGlzLmFjdGl2YXRlZFJvdXRlIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLnNlbGVjdCgpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0KCk7XG4gICAgfVxuICB9XG59XG4iLCI8bGlcbiAgI3RhYkVsZW1lbnRcbiAgY2xhc3M9XCJ0YWJcIlxuICBbY2xhc3MuYWN0aXZlXT1cImlzQWN0aXZlXCJcbiAgW2NsYXNzLndpdGhJY29uXT1cImljb25cIlxuICBbY2xhc3Mubm9NYXJnaW5dPVwibm9NYXJnaW5cIlxuICBbY2xhc3Mubm9MZWZ0TWFyZ2luRm9yRmlyc3RUYWJdPVwibm9MZWZ0TWFyZ2luRm9yRmlyc3RUYWJcIlxuICBbY2xhc3MuYmFja2dyb3VuZEdyYXldPVwiYmFja2dyb3VuZCA9PT0gJ2dyYXknXCJcbiAgW2NsYXNzLmRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW2NsYXNzLnBvcnRhbFRhYl09XCIhdGFiTGlua1wiXG4gIFtjbGFzcy5yb3V0ZXJMaW5rVGFiXT1cInRhYkxpbmtcIlxuICBbYXR0ci50aXRsZV09XCJ0aXRsZVwiXG4gIChjbGljayk9XCJzZWxlY3QoKVwiXG4gIChrZXlkb3duKT1cImhhbmRsZUtleURvd24oJGV2ZW50KVwiXG4gIHJvbGU9XCJ0YWJcIlxuICBbYXR0ci5pZF09XCJ0YWJJZFwiXG4gIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiaXNBY3RpdmVcIlxuICBbYXR0ci50YWJpbmRleF09XCJpc0FjdGl2ZSA/ICcwJyA6ICctMSdcIlxuPlxuICA8YVxuICAgICpuZ0lmPVwidGFiTGluazsgZWxzZSBwb3J0YWxUYWJcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIFtyb3V0ZXJMaW5rXT1cInRhYkxpbmtcIlxuICAgIHJvdXRlckxpbmtBY3RpdmVcbiAgICBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwicm91dGVyTGlua0FjdGl2ZU9wdGlvbnNcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBvcnRhbFRhYlwiPjwvbmctY29udGFpbmVyPlxuICA8L2E+XG5cbiAgPG5nLXRlbXBsYXRlICNwb3J0YWxUYWI+XG4gICAgPGkgKm5nSWY9XCJpY29uXCIgY2xhc3M9XCJpY29uIHt7IGljb24gfX1cIj48L2k+XG4gICAgPHNwYW4gKm5nSWY9XCJsYWJlbFwiIGNsYXNzPVwidGFiTGFiZWxcIj57eyBsYWJlbCB9fTwvc3Bhbj5cbiAgICA8bHgtY291bnRlciAqbmdJZj1cImNvdW50ZXJcIiBbc2l6ZV09XCJjb3VudGVyQmFkZ2VTaXplXCIgW2NvbnRlbnRdPVwiY291bnRlclwiIFtjb2xvcl09XCInZ3JheSdcIj48L2x4LWNvdW50ZXI+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPG5nLXRlbXBsYXRlIGNka1BvcnRhbCAjY29udGVudFRlbXBsYXRlPVwiY2RrUG9ydGFsXCI+XG4gICAgPGRpdiAqbmdJZj1cIiF0YWJMaW5rXCIgY2xhc3M9XCJjb250ZW50XCIgcm9sZT1cInRhYnBhbmVsXCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2xpPlxuIl19