@bcgov/nr-ngx-component-lib 0.0.24 → 0.0.25

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.
@@ -24,7 +24,6 @@ export declare class ButtonComponent extends ConfigurationSubscriberBase {
24
24
  hasLabel: any;
25
25
  useContent: any;
26
26
  zone: NgZone;
27
- onClick(ev: PointerEvent): void;
28
27
  onConfigurationChange(): void;
29
28
  updateState(): void;
30
29
  static ɵfac: i0.ɵɵFactoryDeclaration<ButtonComponent, never>;
@@ -66,6 +66,8 @@ export declare class FilterSelectComponent extends NrclBase implements OnInit, O
66
66
  descriptionForCode(code: string): string;
67
67
  optionForCode(code: string): CodeDescription;
68
68
  formatOption(option: CodeDescription): string;
69
+ get isClosedNoSelection(): boolean;
70
+ get isClosedSelection(): boolean;
69
71
  static ɵfac: i0.ɵɵFactoryDeclaration<FilterSelectComponent, never>;
70
72
  static ɵcmp: i0.ɵɵComponentDeclaration<FilterSelectComponent, "nrcl-filter-select", never, { "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "hint": { "alias": "hint"; "required": false; }; "options": { "alias": "options"; "required": false; }; "value": { "alias": "value"; "required": false; }; "selectMax": { "alias": "selectMax"; "required": false; }; "tooltips": { "alias": "tooltips"; "required": false; }; "summary": { "alias": "summary"; "required": false; }; "clear": { "alias": "clear"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "filterCharsMin": { "alias": "filterCharsMin"; "required": false; }; "optionFormatter": { "alias": "optionFormatter"; "required": false; }; "overlayClass": { "alias": "overlayClass"; "required": false; }; "wide": { "alias": "wide"; "required": false; }; "filterCharsMinMessage": { "alias": "filterCharsMinMessage"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, false, never>;
71
73
  static ngAcceptInputType_selectMax: unknown;
@@ -12,15 +12,11 @@ export class ButtonComponent extends ConfigurationSubscriberBase {
12
12
  this.tertiary = false;
13
13
  this.disabled = false;
14
14
  this.small = false;
15
+ // the click event is already defined for the host element
16
+ // this declaration makes storybook happy
15
17
  this.click = new EventEmitter();
16
18
  this.zone = inject(NgZone);
17
19
  }
18
- onClick(ev) {
19
- if (this.disabled)
20
- return;
21
- ev.stopPropagation();
22
- this.click.emit(ev);
23
- }
24
20
  onConfigurationChange() {
25
21
  // apparently this is needed to ensure that the host binding updates properly
26
22
  this.zone.run(() => {
@@ -48,7 +44,7 @@ export class ButtonComponent extends ConfigurationSubscriberBase {
48
44
  this.useContent = !this.hasLabel && !this.hasIconLeft && !this.hasIconRight && !this.hasIconCompact;
49
45
  }
50
46
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ButtonComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
51
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ButtonComponent, selector: "nrcl-button", inputs: { label: "label", icon: "icon", iconRight: "iconRight", iconCompact: "iconCompact", tooltip: "tooltip", compact: "compact", primary: ["primary", "primary", booleanAttribute], secondary: ["secondary", "secondary", booleanAttribute], tertiary: ["tertiary", "tertiary", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], small: ["small", "small", booleanAttribute] }, outputs: { click: "click" }, host: { properties: { "class.disabled": "disabled", "class.primary": "isPrimary", "class.secondary": "isSecondary", "class.tertiary": "isTertiary", "class.normal": "!isCompact && !small", "class.compact": "isCompact", "class.small": "small && !isCompact", "class.label": "hasLabel", "class.icon-left": "hasIconLeft", "class.icon-right": "hasIconRight", "class.icon-compact": "hasIconCompact" } }, usesInheritance: true, ngImport: i0, template: "<button \n matRipple\n (click)=\"onClick( $event )\"\n [disabled]=\"disabled\"\n [matTooltip]=\"tooltip\"\n>\n @if ( useContent ) {\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n }\n @else {\n @if ( hasIconLeft ) { \n <nrcl-icon [small]=\"small\" class=\"left\">{{ icon }}</nrcl-icon> \n }\n\n @if ( hasIconRight ) { \n <nrcl-icon [small]=\"small\" class=\"right\">{{ iconRight }}</nrcl-icon> \n }\n\n @if ( hasIconCompact ) { \n <nrcl-icon class=\"compact\">{{ iconCompact || icon }}</nrcl-icon> \n }\n\n @if ( hasLabel ) {\n <span class=\"label\">{{ label }}</span> \n }\n }\n</button>\n", styles: ["::ng-deep :root{--nrcl-button-normal-height: 36px;--nrcl-button-normal-padding-horizontal: 16px;--nrcl-button-normal-font-size: var( --nrcl-font-size );--nrcl-button-normal-icon-size: var( --nrcl-icon-normal-size );--nrcl-button-small-height: 24px;--nrcl-button-small-padding-horizontal: 8px;--nrcl-button-small-font-size: var( --nrcl-font-size-small );--nrcl-button-small-icon-size: var( --nrcl-icon-small-size );--nrcl-button-compact-height: 44px;--nrcl-button-compact-padding-horizontal: 8px;--nrcl-button-compact-font-size: var( --nrcl-font-size-small );--nrcl-button-compact-icon-size: var( --nrcl-icon-normal-size );--nrcl-button-primary-foreground-color: white;--nrcl-button-primary-background-color: #003366;--nrcl-button-primary-border-color: #003366;--nrcl-button-primary-hover-background-color: #144a89cc;--nrcl-button-primary-disabled-foreground-color: #7E7E7E;--nrcl-button-primary-disabled-background-color: #CCCCCC;--nrcl-button-primary-disabled-border-color: #CCCCCC;--nrcl-button-primary-disabled-hover-background-color: #CCCCCC;--nrcl-button-secondary-foreground-color: black;--nrcl-button-secondary-background-color: white;--nrcl-button-secondary-border-color: #003366;--nrcl-button-secondary-hover-background-color: #f5f5f5;--nrcl-button-secondary-disabled-foreground-color: #7E7E7E;--nrcl-button-secondary-disabled-background-color: #CCCCCC;--nrcl-button-secondary-disabled-border-color: #CCCCCC;--nrcl-button-secondary-disabled-hover-background-color: #CCCCCC;--nrcl-button-tertiary-foreground-color: black;--nrcl-button-tertiary-background-color: transparent;--nrcl-button-tertiary-border-color: transparent;--nrcl-button-tertiary-hover-background-color: rgba(0, 0, 0, .04);--nrcl-button-tertiary-disabled-foreground-color: #7E7E7E;--nrcl-button-tertiary-disabled-background-color: transparent;--nrcl-button-tertiary-disabled-border-color: transparent;--nrcl-button-tertiary-disabled-hover-background-color: transparent}:host{--nrcl-button-height: 50px;--nrcl-button-font-size: 40px;--nrcl-button-padding-left: 50px;--nrcl-button-padding-right: 50px;--nrcl-button-foreground-color: #red;--nrcl-button-background-color: #green;--nrcl-button-border-color: #yellow;--nrcl-button-hover-background-color: #blue}:host button{display:flex;align-items:center;position:relative;height:var(--nrcl-button-height);min-width:var(--nrcl-button-height);width:var(--nrcl-button-width);cursor:pointer;margin:0;padding:0;background-color:var(--nrcl-button-background-color);color:var(--nrcl-button-foreground-color);border-color:var(--nrcl-button-border-color);border-width:1px;border-style:solid;border-radius:4px}:host button:hover{background-color:var(--nrcl-button-hover-background-color)}:host button .label,:host button .content{font-family:var(--nrcl-font-family);font-size:var(--nrcl-button-font-size);white-space:nowrap;font-weight:500}:host button .content{padding-left:var(--nrcl-button-padding-left);padding-right:var(--nrcl-button-padding-right);display:flex;align-items:center}:host.normal{--nrcl-button-height: var( --nrcl-button-normal-height );--nrcl-button-padding-left: var( --nrcl-button-normal-padding-horizontal );--nrcl-button-padding-right: var( --nrcl-button-normal-padding-horizontal );--nrcl-button-font-size: var( --nrcl-button-normal-font-size );--nrcl-button-icon-size: var( --nrcl-button-normal-icon-size )}:host.small{--nrcl-button-height: var( --nrcl-button-small-height );--nrcl-button-padding-left: var( --nrcl-button-small-padding-horizontal );--nrcl-button-padding-right: var( --nrcl-button-small-padding-horizontal );--nrcl-button-font-size: var( --nrcl-button-small-font-size );--nrcl-button-icon-size: var( --nrcl-button-small-icon-size )}:host.compact{--nrcl-button-height: var( --nrcl-button-compact-height );--nrcl-button-padding-left: var( --nrcl-button-compact-padding-horizontal );--nrcl-button-padding-right: var( --nrcl-button-compact-padding-horizontal );--nrcl-button-font-size: var( --nrcl-button-compact-font-size );--nrcl-button-icon-size: var( --nrcl-button-normal-icon-size )}:host.compact button{flex-direction:column;justify-content:center}:host.label button{padding-left:var(--nrcl-button-padding-left);padding-right:var(--nrcl-button-padding-right)}:host.icon-left button{--nrcl-button-padding-left: var( --nrcl-button-height )}:host.icon-left button .content{padding-left:0}:host.icon-left button ::ng-deep .mat-icon.left,:host.icon-left button ::ng-deep nrcl-icon.left{position:absolute;left:calc((var(--nrcl-button-height) - var(--nrcl-button-icon-size)) / 2 - 1px)}:host.icon-right button{--nrcl-button-padding-right: var( --nrcl-button-height )}:host.icon-right button .content{padding-right:0}:host.icon-right button ::ng-deep .mat-icon.right,:host.icon-right button ::ng-deep nrcl-icon.right{position:absolute;right:calc((var(--nrcl-button-height) - var(--nrcl-button-icon-size)) / 2 - 1px)}:host.primary{--nrcl-button-foreground-color: var( --nrcl-button-primary-foreground-color );--nrcl-button-background-color: var( --nrcl-button-primary-background-color );--nrcl-button-border-color: var( --nrcl-button-primary-border-color );--nrcl-button-hover-background-color: var( --nrcl-button-primary-hover-background-color )}:host.primary button{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host.primary.disabled{--nrcl-button-foreground-color: var( --nrcl-button-primary-disabled-foreground-color );--nrcl-button-background-color: var( --nrcl-button-primary-disabled-background-color );--nrcl-button-border-color: var( --nrcl-button-primary-disabled-border-color );--nrcl-button-hover-background-color: var( --nrcl-button-primary-disabled-hover-background-color )}:host.secondary{--nrcl-button-foreground-color: var( --nrcl-button-secondary-foreground-color );--nrcl-button-background-color: var( --nrcl-button-secondary-background-color );--nrcl-button-border-color: var( --nrcl-button-secondary-border-color );--nrcl-button-hover-background-color: var( --nrcl-button-secondary-hover-background-color )}:host.secondary button{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host.secondary.disabled{--nrcl-button-foreground-color: var( --nrcl-button-secondary-disabled-foreground-color );--nrcl-button-background-color: var( --nrcl-button-secondary-disabled-background-color );--nrcl-button-border-color: var( --nrcl-button-secondary-disabled-border-color );--nrcl-button-hover-background-color: var( --nrcl-button-secondary-disabled-hover-background-color )}:host.tertiary{--nrcl-button-foreground-color: var( --nrcl-button-tertiary-foreground-color );--nrcl-button-background-color: var( --nrcl-button-tertiary-background-color );--nrcl-button-border-color: var( --nrcl-button-tertiary-border-color );--nrcl-button-hover-background-color: var( --nrcl-button-tertiary-hover-background-color )}:host.tertiary.disabled{--nrcl-button-foreground-color: var( --nrcl-button-tertiary-disabled-foreground-color );--nrcl-button-background-color: var( --nrcl-button-tertiary-disabled-background-color );--nrcl-button-border-color: var( --nrcl-button-tertiary-disabled-border-color );--nrcl-button-hover-background-color: var( --nrcl-button-tertiary-disabled-hover-background-color )}\n"], dependencies: [{ kind: "directive", type: i1.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i3.IconComponent, selector: "nrcl-icon", inputs: ["small", "large"] }] }); }
47
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ButtonComponent, selector: "nrcl-button", inputs: { label: "label", icon: "icon", iconRight: "iconRight", iconCompact: "iconCompact", tooltip: "tooltip", compact: "compact", primary: ["primary", "primary", booleanAttribute], secondary: ["secondary", "secondary", booleanAttribute], tertiary: ["tertiary", "tertiary", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], small: ["small", "small", booleanAttribute] }, outputs: { click: "click" }, host: { properties: { "class.disabled": "disabled", "class.primary": "isPrimary", "class.secondary": "isSecondary", "class.tertiary": "isTertiary", "class.normal": "!isCompact && !small", "class.compact": "isCompact", "class.small": "small && !isCompact", "class.label": "hasLabel", "class.icon-left": "hasIconLeft", "class.icon-right": "hasIconRight", "class.icon-compact": "hasIconCompact" } }, usesInheritance: true, ngImport: i0, template: "<button \n matRipple\n [disabled]=\"disabled\"\n [matTooltip]=\"tooltip\"\n>\n @if ( useContent ) {\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n }\n @else {\n @if ( hasIconLeft ) { \n <nrcl-icon [small]=\"small\" class=\"left\">{{ icon }}</nrcl-icon> \n }\n\n @if ( hasIconRight ) { \n <nrcl-icon [small]=\"small\" class=\"right\">{{ iconRight }}</nrcl-icon> \n }\n\n @if ( hasIconCompact ) { \n <nrcl-icon class=\"compact\">{{ iconCompact || icon }}</nrcl-icon> \n }\n\n @if ( hasLabel ) {\n <span class=\"label\">{{ label }}</span> \n }\n }\n</button>\n", styles: ["::ng-deep :root{--nrcl-button-normal-height: 36px;--nrcl-button-normal-padding-horizontal: 16px;--nrcl-button-normal-font-size: var( --nrcl-font-size );--nrcl-button-normal-icon-size: var( --nrcl-icon-normal-size );--nrcl-button-small-height: 24px;--nrcl-button-small-padding-horizontal: 8px;--nrcl-button-small-font-size: var( --nrcl-font-size-small );--nrcl-button-small-icon-size: var( --nrcl-icon-small-size );--nrcl-button-compact-height: 44px;--nrcl-button-compact-padding-horizontal: 8px;--nrcl-button-compact-font-size: var( --nrcl-font-size-small );--nrcl-button-compact-icon-size: var( --nrcl-icon-normal-size );--nrcl-button-primary-foreground-color: white;--nrcl-button-primary-background-color: #003366;--nrcl-button-primary-border-color: #003366;--nrcl-button-primary-hover-background-color: #144a89cc;--nrcl-button-primary-disabled-foreground-color: #7E7E7E;--nrcl-button-primary-disabled-background-color: #CCCCCC;--nrcl-button-primary-disabled-border-color: #CCCCCC;--nrcl-button-primary-disabled-hover-background-color: #CCCCCC;--nrcl-button-secondary-foreground-color: black;--nrcl-button-secondary-background-color: white;--nrcl-button-secondary-border-color: #003366;--nrcl-button-secondary-hover-background-color: #f5f5f5;--nrcl-button-secondary-disabled-foreground-color: #7E7E7E;--nrcl-button-secondary-disabled-background-color: #CCCCCC;--nrcl-button-secondary-disabled-border-color: #CCCCCC;--nrcl-button-secondary-disabled-hover-background-color: #CCCCCC;--nrcl-button-tertiary-foreground-color: black;--nrcl-button-tertiary-background-color: transparent;--nrcl-button-tertiary-border-color: transparent;--nrcl-button-tertiary-hover-background-color: rgba(0, 0, 0, .04);--nrcl-button-tertiary-disabled-foreground-color: #7E7E7E;--nrcl-button-tertiary-disabled-background-color: transparent;--nrcl-button-tertiary-disabled-border-color: transparent;--nrcl-button-tertiary-disabled-hover-background-color: transparent}:host{--nrcl-button-height: 50px;--nrcl-button-font-size: 40px;--nrcl-button-padding-left: 50px;--nrcl-button-padding-right: 50px;--nrcl-button-foreground-color: #red;--nrcl-button-background-color: #green;--nrcl-button-border-color: #yellow;--nrcl-button-hover-background-color: #blue}:host button{display:flex;align-items:center;position:relative;height:var(--nrcl-button-height);min-width:var(--nrcl-button-height);width:var(--nrcl-button-width);cursor:pointer;margin:0;padding:0;background-color:var(--nrcl-button-background-color);color:var(--nrcl-button-foreground-color);border-color:var(--nrcl-button-border-color);border-width:1px;border-style:solid;border-radius:4px}:host button:hover{background-color:var(--nrcl-button-hover-background-color)}:host button .label,:host button .content{font-family:var(--nrcl-font-family);font-size:var(--nrcl-button-font-size);white-space:nowrap;font-weight:500}:host button .content{padding-left:var(--nrcl-button-padding-left);padding-right:var(--nrcl-button-padding-right);display:flex;align-items:center}:host.normal{--nrcl-button-height: var( --nrcl-button-normal-height );--nrcl-button-padding-left: var( --nrcl-button-normal-padding-horizontal );--nrcl-button-padding-right: var( --nrcl-button-normal-padding-horizontal );--nrcl-button-font-size: var( --nrcl-button-normal-font-size );--nrcl-button-icon-size: var( --nrcl-button-normal-icon-size )}:host.small{--nrcl-button-height: var( --nrcl-button-small-height );--nrcl-button-padding-left: var( --nrcl-button-small-padding-horizontal );--nrcl-button-padding-right: var( --nrcl-button-small-padding-horizontal );--nrcl-button-font-size: var( --nrcl-button-small-font-size );--nrcl-button-icon-size: var( --nrcl-button-small-icon-size )}:host.compact{--nrcl-button-height: var( --nrcl-button-compact-height );--nrcl-button-padding-left: var( --nrcl-button-compact-padding-horizontal );--nrcl-button-padding-right: var( --nrcl-button-compact-padding-horizontal );--nrcl-button-font-size: var( --nrcl-button-compact-font-size );--nrcl-button-icon-size: var( --nrcl-button-normal-icon-size )}:host.compact button{flex-direction:column;justify-content:center}:host.label button{padding-left:var(--nrcl-button-padding-left);padding-right:var(--nrcl-button-padding-right)}:host.icon-left button{--nrcl-button-padding-left: var( --nrcl-button-height )}:host.icon-left button .content{padding-left:0}:host.icon-left button ::ng-deep .mat-icon.left,:host.icon-left button ::ng-deep nrcl-icon.left{position:absolute;left:calc((var(--nrcl-button-height) - var(--nrcl-button-icon-size)) / 2 - 1px)}:host.icon-right button{--nrcl-button-padding-right: var( --nrcl-button-height )}:host.icon-right button .content{padding-right:0}:host.icon-right button ::ng-deep .mat-icon.right,:host.icon-right button ::ng-deep nrcl-icon.right{position:absolute;right:calc((var(--nrcl-button-height) - var(--nrcl-button-icon-size)) / 2 - 1px)}:host.primary{--nrcl-button-foreground-color: var( --nrcl-button-primary-foreground-color );--nrcl-button-background-color: var( --nrcl-button-primary-background-color );--nrcl-button-border-color: var( --nrcl-button-primary-border-color );--nrcl-button-hover-background-color: var( --nrcl-button-primary-hover-background-color )}:host.primary button{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host.primary.disabled{--nrcl-button-foreground-color: var( --nrcl-button-primary-disabled-foreground-color );--nrcl-button-background-color: var( --nrcl-button-primary-disabled-background-color );--nrcl-button-border-color: var( --nrcl-button-primary-disabled-border-color );--nrcl-button-hover-background-color: var( --nrcl-button-primary-disabled-hover-background-color )}:host.secondary{--nrcl-button-foreground-color: var( --nrcl-button-secondary-foreground-color );--nrcl-button-background-color: var( --nrcl-button-secondary-background-color );--nrcl-button-border-color: var( --nrcl-button-secondary-border-color );--nrcl-button-hover-background-color: var( --nrcl-button-secondary-hover-background-color )}:host.secondary button{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host.secondary.disabled{--nrcl-button-foreground-color: var( --nrcl-button-secondary-disabled-foreground-color );--nrcl-button-background-color: var( --nrcl-button-secondary-disabled-background-color );--nrcl-button-border-color: var( --nrcl-button-secondary-disabled-border-color );--nrcl-button-hover-background-color: var( --nrcl-button-secondary-disabled-hover-background-color )}:host.tertiary{--nrcl-button-foreground-color: var( --nrcl-button-tertiary-foreground-color );--nrcl-button-background-color: var( --nrcl-button-tertiary-background-color );--nrcl-button-border-color: var( --nrcl-button-tertiary-border-color );--nrcl-button-hover-background-color: var( --nrcl-button-tertiary-hover-background-color )}:host.tertiary.disabled{--nrcl-button-foreground-color: var( --nrcl-button-tertiary-disabled-foreground-color );--nrcl-button-background-color: var( --nrcl-button-tertiary-disabled-background-color );--nrcl-button-border-color: var( --nrcl-button-tertiary-disabled-border-color );--nrcl-button-hover-background-color: var( --nrcl-button-tertiary-disabled-hover-background-color )}\n"], dependencies: [{ kind: "directive", type: i1.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i3.IconComponent, selector: "nrcl-icon", inputs: ["small", "large"] }] }); }
52
48
  }
53
49
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ButtonComponent, decorators: [{
54
50
  type: Component,
@@ -64,7 +60,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
64
60
  '[class.icon-left]': 'hasIconLeft',
65
61
  '[class.icon-right]': 'hasIconRight',
66
62
  '[class.icon-compact]': 'hasIconCompact',
67
- }, template: "<button \n matRipple\n (click)=\"onClick( $event )\"\n [disabled]=\"disabled\"\n [matTooltip]=\"tooltip\"\n>\n @if ( useContent ) {\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n }\n @else {\n @if ( hasIconLeft ) { \n <nrcl-icon [small]=\"small\" class=\"left\">{{ icon }}</nrcl-icon> \n }\n\n @if ( hasIconRight ) { \n <nrcl-icon [small]=\"small\" class=\"right\">{{ iconRight }}</nrcl-icon> \n }\n\n @if ( hasIconCompact ) { \n <nrcl-icon class=\"compact\">{{ iconCompact || icon }}</nrcl-icon> \n }\n\n @if ( hasLabel ) {\n <span class=\"label\">{{ label }}</span> \n }\n }\n</button>\n", styles: ["::ng-deep :root{--nrcl-button-normal-height: 36px;--nrcl-button-normal-padding-horizontal: 16px;--nrcl-button-normal-font-size: var( --nrcl-font-size );--nrcl-button-normal-icon-size: var( --nrcl-icon-normal-size );--nrcl-button-small-height: 24px;--nrcl-button-small-padding-horizontal: 8px;--nrcl-button-small-font-size: var( --nrcl-font-size-small );--nrcl-button-small-icon-size: var( --nrcl-icon-small-size );--nrcl-button-compact-height: 44px;--nrcl-button-compact-padding-horizontal: 8px;--nrcl-button-compact-font-size: var( --nrcl-font-size-small );--nrcl-button-compact-icon-size: var( --nrcl-icon-normal-size );--nrcl-button-primary-foreground-color: white;--nrcl-button-primary-background-color: #003366;--nrcl-button-primary-border-color: #003366;--nrcl-button-primary-hover-background-color: #144a89cc;--nrcl-button-primary-disabled-foreground-color: #7E7E7E;--nrcl-button-primary-disabled-background-color: #CCCCCC;--nrcl-button-primary-disabled-border-color: #CCCCCC;--nrcl-button-primary-disabled-hover-background-color: #CCCCCC;--nrcl-button-secondary-foreground-color: black;--nrcl-button-secondary-background-color: white;--nrcl-button-secondary-border-color: #003366;--nrcl-button-secondary-hover-background-color: #f5f5f5;--nrcl-button-secondary-disabled-foreground-color: #7E7E7E;--nrcl-button-secondary-disabled-background-color: #CCCCCC;--nrcl-button-secondary-disabled-border-color: #CCCCCC;--nrcl-button-secondary-disabled-hover-background-color: #CCCCCC;--nrcl-button-tertiary-foreground-color: black;--nrcl-button-tertiary-background-color: transparent;--nrcl-button-tertiary-border-color: transparent;--nrcl-button-tertiary-hover-background-color: rgba(0, 0, 0, .04);--nrcl-button-tertiary-disabled-foreground-color: #7E7E7E;--nrcl-button-tertiary-disabled-background-color: transparent;--nrcl-button-tertiary-disabled-border-color: transparent;--nrcl-button-tertiary-disabled-hover-background-color: transparent}:host{--nrcl-button-height: 50px;--nrcl-button-font-size: 40px;--nrcl-button-padding-left: 50px;--nrcl-button-padding-right: 50px;--nrcl-button-foreground-color: #red;--nrcl-button-background-color: #green;--nrcl-button-border-color: #yellow;--nrcl-button-hover-background-color: #blue}:host button{display:flex;align-items:center;position:relative;height:var(--nrcl-button-height);min-width:var(--nrcl-button-height);width:var(--nrcl-button-width);cursor:pointer;margin:0;padding:0;background-color:var(--nrcl-button-background-color);color:var(--nrcl-button-foreground-color);border-color:var(--nrcl-button-border-color);border-width:1px;border-style:solid;border-radius:4px}:host button:hover{background-color:var(--nrcl-button-hover-background-color)}:host button .label,:host button .content{font-family:var(--nrcl-font-family);font-size:var(--nrcl-button-font-size);white-space:nowrap;font-weight:500}:host button .content{padding-left:var(--nrcl-button-padding-left);padding-right:var(--nrcl-button-padding-right);display:flex;align-items:center}:host.normal{--nrcl-button-height: var( --nrcl-button-normal-height );--nrcl-button-padding-left: var( --nrcl-button-normal-padding-horizontal );--nrcl-button-padding-right: var( --nrcl-button-normal-padding-horizontal );--nrcl-button-font-size: var( --nrcl-button-normal-font-size );--nrcl-button-icon-size: var( --nrcl-button-normal-icon-size )}:host.small{--nrcl-button-height: var( --nrcl-button-small-height );--nrcl-button-padding-left: var( --nrcl-button-small-padding-horizontal );--nrcl-button-padding-right: var( --nrcl-button-small-padding-horizontal );--nrcl-button-font-size: var( --nrcl-button-small-font-size );--nrcl-button-icon-size: var( --nrcl-button-small-icon-size )}:host.compact{--nrcl-button-height: var( --nrcl-button-compact-height );--nrcl-button-padding-left: var( --nrcl-button-compact-padding-horizontal );--nrcl-button-padding-right: var( --nrcl-button-compact-padding-horizontal );--nrcl-button-font-size: var( --nrcl-button-compact-font-size );--nrcl-button-icon-size: var( --nrcl-button-normal-icon-size )}:host.compact button{flex-direction:column;justify-content:center}:host.label button{padding-left:var(--nrcl-button-padding-left);padding-right:var(--nrcl-button-padding-right)}:host.icon-left button{--nrcl-button-padding-left: var( --nrcl-button-height )}:host.icon-left button .content{padding-left:0}:host.icon-left button ::ng-deep .mat-icon.left,:host.icon-left button ::ng-deep nrcl-icon.left{position:absolute;left:calc((var(--nrcl-button-height) - var(--nrcl-button-icon-size)) / 2 - 1px)}:host.icon-right button{--nrcl-button-padding-right: var( --nrcl-button-height )}:host.icon-right button .content{padding-right:0}:host.icon-right button ::ng-deep .mat-icon.right,:host.icon-right button ::ng-deep nrcl-icon.right{position:absolute;right:calc((var(--nrcl-button-height) - var(--nrcl-button-icon-size)) / 2 - 1px)}:host.primary{--nrcl-button-foreground-color: var( --nrcl-button-primary-foreground-color );--nrcl-button-background-color: var( --nrcl-button-primary-background-color );--nrcl-button-border-color: var( --nrcl-button-primary-border-color );--nrcl-button-hover-background-color: var( --nrcl-button-primary-hover-background-color )}:host.primary button{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host.primary.disabled{--nrcl-button-foreground-color: var( --nrcl-button-primary-disabled-foreground-color );--nrcl-button-background-color: var( --nrcl-button-primary-disabled-background-color );--nrcl-button-border-color: var( --nrcl-button-primary-disabled-border-color );--nrcl-button-hover-background-color: var( --nrcl-button-primary-disabled-hover-background-color )}:host.secondary{--nrcl-button-foreground-color: var( --nrcl-button-secondary-foreground-color );--nrcl-button-background-color: var( --nrcl-button-secondary-background-color );--nrcl-button-border-color: var( --nrcl-button-secondary-border-color );--nrcl-button-hover-background-color: var( --nrcl-button-secondary-hover-background-color )}:host.secondary button{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host.secondary.disabled{--nrcl-button-foreground-color: var( --nrcl-button-secondary-disabled-foreground-color );--nrcl-button-background-color: var( --nrcl-button-secondary-disabled-background-color );--nrcl-button-border-color: var( --nrcl-button-secondary-disabled-border-color );--nrcl-button-hover-background-color: var( --nrcl-button-secondary-disabled-hover-background-color )}:host.tertiary{--nrcl-button-foreground-color: var( --nrcl-button-tertiary-foreground-color );--nrcl-button-background-color: var( --nrcl-button-tertiary-background-color );--nrcl-button-border-color: var( --nrcl-button-tertiary-border-color );--nrcl-button-hover-background-color: var( --nrcl-button-tertiary-hover-background-color )}:host.tertiary.disabled{--nrcl-button-foreground-color: var( --nrcl-button-tertiary-disabled-foreground-color );--nrcl-button-background-color: var( --nrcl-button-tertiary-disabled-background-color );--nrcl-button-border-color: var( --nrcl-button-tertiary-disabled-border-color );--nrcl-button-hover-background-color: var( --nrcl-button-tertiary-disabled-hover-background-color )}\n"] }]
63
+ }, template: "<button \n matRipple\n [disabled]=\"disabled\"\n [matTooltip]=\"tooltip\"\n>\n @if ( useContent ) {\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n }\n @else {\n @if ( hasIconLeft ) { \n <nrcl-icon [small]=\"small\" class=\"left\">{{ icon }}</nrcl-icon> \n }\n\n @if ( hasIconRight ) { \n <nrcl-icon [small]=\"small\" class=\"right\">{{ iconRight }}</nrcl-icon> \n }\n\n @if ( hasIconCompact ) { \n <nrcl-icon class=\"compact\">{{ iconCompact || icon }}</nrcl-icon> \n }\n\n @if ( hasLabel ) {\n <span class=\"label\">{{ label }}</span> \n }\n }\n</button>\n", styles: ["::ng-deep :root{--nrcl-button-normal-height: 36px;--nrcl-button-normal-padding-horizontal: 16px;--nrcl-button-normal-font-size: var( --nrcl-font-size );--nrcl-button-normal-icon-size: var( --nrcl-icon-normal-size );--nrcl-button-small-height: 24px;--nrcl-button-small-padding-horizontal: 8px;--nrcl-button-small-font-size: var( --nrcl-font-size-small );--nrcl-button-small-icon-size: var( --nrcl-icon-small-size );--nrcl-button-compact-height: 44px;--nrcl-button-compact-padding-horizontal: 8px;--nrcl-button-compact-font-size: var( --nrcl-font-size-small );--nrcl-button-compact-icon-size: var( --nrcl-icon-normal-size );--nrcl-button-primary-foreground-color: white;--nrcl-button-primary-background-color: #003366;--nrcl-button-primary-border-color: #003366;--nrcl-button-primary-hover-background-color: #144a89cc;--nrcl-button-primary-disabled-foreground-color: #7E7E7E;--nrcl-button-primary-disabled-background-color: #CCCCCC;--nrcl-button-primary-disabled-border-color: #CCCCCC;--nrcl-button-primary-disabled-hover-background-color: #CCCCCC;--nrcl-button-secondary-foreground-color: black;--nrcl-button-secondary-background-color: white;--nrcl-button-secondary-border-color: #003366;--nrcl-button-secondary-hover-background-color: #f5f5f5;--nrcl-button-secondary-disabled-foreground-color: #7E7E7E;--nrcl-button-secondary-disabled-background-color: #CCCCCC;--nrcl-button-secondary-disabled-border-color: #CCCCCC;--nrcl-button-secondary-disabled-hover-background-color: #CCCCCC;--nrcl-button-tertiary-foreground-color: black;--nrcl-button-tertiary-background-color: transparent;--nrcl-button-tertiary-border-color: transparent;--nrcl-button-tertiary-hover-background-color: rgba(0, 0, 0, .04);--nrcl-button-tertiary-disabled-foreground-color: #7E7E7E;--nrcl-button-tertiary-disabled-background-color: transparent;--nrcl-button-tertiary-disabled-border-color: transparent;--nrcl-button-tertiary-disabled-hover-background-color: transparent}:host{--nrcl-button-height: 50px;--nrcl-button-font-size: 40px;--nrcl-button-padding-left: 50px;--nrcl-button-padding-right: 50px;--nrcl-button-foreground-color: #red;--nrcl-button-background-color: #green;--nrcl-button-border-color: #yellow;--nrcl-button-hover-background-color: #blue}:host button{display:flex;align-items:center;position:relative;height:var(--nrcl-button-height);min-width:var(--nrcl-button-height);width:var(--nrcl-button-width);cursor:pointer;margin:0;padding:0;background-color:var(--nrcl-button-background-color);color:var(--nrcl-button-foreground-color);border-color:var(--nrcl-button-border-color);border-width:1px;border-style:solid;border-radius:4px}:host button:hover{background-color:var(--nrcl-button-hover-background-color)}:host button .label,:host button .content{font-family:var(--nrcl-font-family);font-size:var(--nrcl-button-font-size);white-space:nowrap;font-weight:500}:host button .content{padding-left:var(--nrcl-button-padding-left);padding-right:var(--nrcl-button-padding-right);display:flex;align-items:center}:host.normal{--nrcl-button-height: var( --nrcl-button-normal-height );--nrcl-button-padding-left: var( --nrcl-button-normal-padding-horizontal );--nrcl-button-padding-right: var( --nrcl-button-normal-padding-horizontal );--nrcl-button-font-size: var( --nrcl-button-normal-font-size );--nrcl-button-icon-size: var( --nrcl-button-normal-icon-size )}:host.small{--nrcl-button-height: var( --nrcl-button-small-height );--nrcl-button-padding-left: var( --nrcl-button-small-padding-horizontal );--nrcl-button-padding-right: var( --nrcl-button-small-padding-horizontal );--nrcl-button-font-size: var( --nrcl-button-small-font-size );--nrcl-button-icon-size: var( --nrcl-button-small-icon-size )}:host.compact{--nrcl-button-height: var( --nrcl-button-compact-height );--nrcl-button-padding-left: var( --nrcl-button-compact-padding-horizontal );--nrcl-button-padding-right: var( --nrcl-button-compact-padding-horizontal );--nrcl-button-font-size: var( --nrcl-button-compact-font-size );--nrcl-button-icon-size: var( --nrcl-button-normal-icon-size )}:host.compact button{flex-direction:column;justify-content:center}:host.label button{padding-left:var(--nrcl-button-padding-left);padding-right:var(--nrcl-button-padding-right)}:host.icon-left button{--nrcl-button-padding-left: var( --nrcl-button-height )}:host.icon-left button .content{padding-left:0}:host.icon-left button ::ng-deep .mat-icon.left,:host.icon-left button ::ng-deep nrcl-icon.left{position:absolute;left:calc((var(--nrcl-button-height) - var(--nrcl-button-icon-size)) / 2 - 1px)}:host.icon-right button{--nrcl-button-padding-right: var( --nrcl-button-height )}:host.icon-right button .content{padding-right:0}:host.icon-right button ::ng-deep .mat-icon.right,:host.icon-right button ::ng-deep nrcl-icon.right{position:absolute;right:calc((var(--nrcl-button-height) - var(--nrcl-button-icon-size)) / 2 - 1px)}:host.primary{--nrcl-button-foreground-color: var( --nrcl-button-primary-foreground-color );--nrcl-button-background-color: var( --nrcl-button-primary-background-color );--nrcl-button-border-color: var( --nrcl-button-primary-border-color );--nrcl-button-hover-background-color: var( --nrcl-button-primary-hover-background-color )}:host.primary button{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host.primary.disabled{--nrcl-button-foreground-color: var( --nrcl-button-primary-disabled-foreground-color );--nrcl-button-background-color: var( --nrcl-button-primary-disabled-background-color );--nrcl-button-border-color: var( --nrcl-button-primary-disabled-border-color );--nrcl-button-hover-background-color: var( --nrcl-button-primary-disabled-hover-background-color )}:host.secondary{--nrcl-button-foreground-color: var( --nrcl-button-secondary-foreground-color );--nrcl-button-background-color: var( --nrcl-button-secondary-background-color );--nrcl-button-border-color: var( --nrcl-button-secondary-border-color );--nrcl-button-hover-background-color: var( --nrcl-button-secondary-hover-background-color )}:host.secondary button{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}:host.secondary.disabled{--nrcl-button-foreground-color: var( --nrcl-button-secondary-disabled-foreground-color );--nrcl-button-background-color: var( --nrcl-button-secondary-disabled-background-color );--nrcl-button-border-color: var( --nrcl-button-secondary-disabled-border-color );--nrcl-button-hover-background-color: var( --nrcl-button-secondary-disabled-hover-background-color )}:host.tertiary{--nrcl-button-foreground-color: var( --nrcl-button-tertiary-foreground-color );--nrcl-button-background-color: var( --nrcl-button-tertiary-background-color );--nrcl-button-border-color: var( --nrcl-button-tertiary-border-color );--nrcl-button-hover-background-color: var( --nrcl-button-tertiary-hover-background-color )}:host.tertiary.disabled{--nrcl-button-foreground-color: var( --nrcl-button-tertiary-disabled-foreground-color );--nrcl-button-background-color: var( --nrcl-button-tertiary-disabled-background-color );--nrcl-button-border-color: var( --nrcl-button-tertiary-disabled-border-color );--nrcl-button-hover-background-color: var( --nrcl-button-tertiary-disabled-hover-background-color )}\n"] }]
68
64
  }], propDecorators: { label: [{
69
65
  type: Input
70
66
  }], icon: [{
@@ -95,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
95
91
  }], click: [{
96
92
  type: Output
97
93
  }] } });
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25yLW5neC1jb21wb25lbnQtbGliL3NyYy9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnItbmd4LWNvbXBvbmVudC1saWIvc3JjL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7Ozs7O0FBb0I3RixNQUFNLE9BQU8sZUFBZ0IsU0FBUSwyQkFBMkI7SUFsQmhFOztRQXlCOEMsWUFBTyxHQUFHLEtBQUssQ0FBQTtRQUNmLGNBQVMsR0FBRyxLQUFLLENBQUE7UUFDakIsYUFBUSxHQUFHLEtBQUssQ0FBQTtRQUNoQixhQUFRLEdBQUcsS0FBSyxDQUFBO1FBQ2hCLFVBQUssR0FBRyxLQUFLLENBQUE7UUFFN0MsVUFBSyxHQUFHLElBQUksWUFBWSxFQUFnQixDQUFBO1FBWWxELFNBQUksR0FBRyxNQUFNLENBQUUsTUFBTSxDQUFFLENBQUE7S0F1QzFCO0lBckNHLE9BQU8sQ0FBRSxFQUFnQjtRQUNyQixJQUFLLElBQUksQ0FBQyxRQUFRO1lBQUcsT0FBTTtRQUUzQixFQUFFLENBQUMsZUFBZSxFQUFFLENBQUE7UUFDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUUsRUFBRSxDQUFFLENBQUE7SUFDekIsQ0FBQztJQUVELHFCQUFxQjtRQUNqQiw2RUFBNkU7UUFDN0UsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUUsR0FBRyxF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QUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNvQyxPQUFPO3NCQUFoRCxLQUFLO3VCQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNHLFNBQVM7c0JBQWxELEtBQUs7dUJBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0csUUFBUTtzQkFBakQsS0FBSzt1QkFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRyxRQUFRO3NCQUFqRCxLQUFLO3VCQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNHLEtBQUs7c0JBQTlDLEtBQUs7dUJBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBRTdCLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJvb2xlYW5BdHRyaWJ1dGUsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBOZ1pvbmUsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblN1YnNjcmliZXJCYXNlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jb25maWd1cmF0aW9uLXN1YnNjcmliZXIuYmFzZSc7XG5cbkBDb21wb25lbnQoIHtcbiAgICBzZWxlY3RvcjogJ25yY2wtYnV0dG9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vYnV0dG9uLmNvbXBvbmVudC5zY3NzJyxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MuZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAgICAgJ1tjbGFzcy5wcmltYXJ5XSc6ICdpc1ByaW1hcnknLFxuICAgICAgICAnW2NsYXNzLnNlY29uZGFyeV0nOiAnaXNTZWNvbmRhcnknLFxuICAgICAgICAnW2NsYXNzLnRlcnRpYXJ5XSc6ICdpc1RlcnRpYXJ5JyxcbiAgICAgICAgJ1tjbGFzcy5ub3JtYWxdJzogJyFpc0NvbXBhY3QgJiYgIXNtYWxsJyxcbiAgICAgICAgJ1tjbGFzcy5jb21wYWN0XSc6ICdpc0NvbXBhY3QnLFxuICAgICAgICAnW2NsYXNzLnNtYWxsXSc6ICdzbWFsbCAmJiAhaXNDb21wYWN0JyxcbiAgICAgICAgJ1tjbGFzcy5sYWJlbF0nOiAnaGFzTGFiZWwnLFxuICAgICAgICAnW2NsYXNzLmljb24tbGVmdF0nOiAnaGFzSWNvbkxlZnQnLFxuICAgICAgICAnW2NsYXNzLmljb24tcmlnaHRdJzogJ2hhc0ljb25SaWdodCcsXG4gICAgICAgICdbY2xhc3MuaWNvbi1jb21wYWN0XSc6ICdoYXNJY29uQ29tcGFjdCcsXG4gICAgfVxufSApXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29tcG9uZW50IGV4dGVuZHMgQ29uZmlndXJhdGlvblN1YnNjcmliZXJCYXNlIHsgICAgXG4gICAgQElucHV0KCkgbGFiZWxcbiAgICBASW5wdXQoKSBpY29uXG4gICAgQElucHV0KCkgaWNvblJpZ2h0XG4gICAgQElucHV0KCkgaWNvbkNvbXBhY3RcbiAgICBASW5wdXQoKSB0b29sdGlwXG4gICAgQElucHV0KCkgY29tcGFjdFxuICAgIEBJbnB1dCggeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSApIHByaW1hcnkgPSBmYWxzZVxuICAgIEBJbnB1dCggeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSApIHNlY29uZGFyeSA9IGZhbHNlXG4gICAgQElucHV0KCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9ICkgdGVydGlhcnkgPSBmYWxzZVxuICAgIEBJbnB1dCggeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSApIGRpc2FibGVkID0gZmFsc2VcbiAgICBASW5wdXQoIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0gKSBzbWFsbCA9IGZhbHNlXG5cbiAgICBAT3V0cHV0KCkgY2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFBvaW50ZXJFdmVudD4oKVxuXG4gICAgaXNDb21wYWN0XG4gICAgaXNQcmltYXJ5XG4gICAgaXNTZWNvbmRhcnlcbiAgICBpc1RlcnRpYXJ5XG4gICAgaGFzSWNvbkxlZnRcbiAgICBoYXNJY29uUmlnaHRcbiAgICBoYXNJY29uQ29tcGFjdFxuICAgIGhhc0xhYmVsXG4gICAgdXNlQ29udGVudFxuXG4gICAgem9uZSA9IGluamVjdCggTmdab25lIClcblxuICAgIG9uQ2xpY2soIGV2OiBQb2ludGVyRXZlbnQgKSB7XG4gICAgICAgIGlmICggdGhpcy5kaXNhYmxlZCApIHJldHVyblxuXG4gICAgICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgIHRoaXMuY2xpY2suZW1pdCggZXYgKVxuICAgIH1cblxuICAgIG9uQ29uZmlndXJhdGlvbkNoYW5nZSgpOiB2b2lkIHtcbiAgICAgICAgLy8gYXBwYXJlbnRseSB0aGlzIGlzIG5lZWRlZCB0byBlbnN1cmUgdGhhdCB0aGUgaG9zdCBiaW5kaW5nIHVwZGF0ZXMgcHJvcGVybHlcbiAgICAgICAgdGhpcy56b25lLnJ1biggKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSgpXG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpXG4gICAgICAgIH0gKVxuICAgIH1cblxuICAgIHVwZGF0ZVN0YXRlKCkge1xuICAgICAgICBpZiAoIHRoaXMuY29tcGFjdCA9PSBudWxsIHx8IHRoaXMuY29tcGFjdCA9PT0gZmFsc2UgKSB7XG4gICAgICAgICAgICB0aGlzLmlzQ29tcGFjdCA9IGZhbHNlXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIHRoaXMuY29tcGFjdCA9PSAnJyB8fCB0aGlzLmNvbXBhY3QgPT09IHRydWUgKSB7XG4gICAgICAgICAgICB0aGlzLmlzQ29tcGFjdCA9IHRydWVcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaXNDb21wYWN0ID0gdGhpcy5jb21wYWN0ID09IHRoaXMuY29uZmlndXJhdGlvbi5kaXNwbGF5TW9kZVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc1ByaW1hcnkgPSB0aGlzLnByaW1hcnlcbiAgICAgICAgdGhpcy5pc1NlY29uZGFyeSA9ICggdGhpcy5zZWNvbmRhcnkgJiYgIXRoaXMucHJpbWFyeSApIHx8ICggIXRoaXMucHJpbWFyeSAmJiAhdGhpcy50ZXJ0aWFyeSAmJiAhdGhpcy5zbWFsbCAmJiAhdGhpcy5pc0NvbXBhY3QgKVxuICAgICAgICB0aGlzLmlzVGVydGlhcnkgPSAoIHRoaXMudGVydGlhcnkgfHwgdGhpcy5zbWFsbCB8fCB0aGlzLmlzQ29tcGFjdCApICYmICF0aGlzLnByaW1hcnkgJiYgIXRoaXMuc2Vjb25kYXJ5XG5cbiAgICAgICAgdGhpcy5oYXNMYWJlbCA9ICEhdGhpcy5sYWJlbFxuICAgICAgICB0aGlzLmhhc0ljb25MZWZ0ID0gISF0aGlzLmljb24gJiYgIXRoaXMuaXNDb21wYWN0XG4gICAgICAgIHRoaXMuaGFzSWNvblJpZ2h0ID0gISF0aGlzLmljb25SaWdodCAmJiB0aGlzLmhhc0xhYmVsICYmICF0aGlzLmlzQ29tcGFjdFxuICAgICAgICB0aGlzLmhhc0ljb25Db21wYWN0ID0gKCAhIXRoaXMuaWNvbkNvbXBhY3QgfHwgISF0aGlzLmljb24gKSAmJiB0aGlzLmlzQ29tcGFjdFxuXG4gICAgICAgIHRoaXMudXNlQ29udGVudCA9ICF0aGlzLmhhc0xhYmVsICYmICF0aGlzLmhhc0ljb25MZWZ0ICYmICF0aGlzLmhhc0ljb25SaWdodCAmJiAhdGhpcy5oYXNJY29uQ29tcGFjdFxuICAgIH1cbn1cbiIsIjxidXR0b24gXG4gICAgbWF0UmlwcGxlXG4gICAgKGNsaWNrKT1cIm9uQ2xpY2soICRldmVudCApXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFttYXRUb29sdGlwXT1cInRvb2x0aXBcIlxuPlxuICAgIEBpZiAoIHVzZUNvbnRlbnQgKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAgIEBpZiAoIGhhc0ljb25MZWZ0ICkgeyBcbiAgICAgICAgICAgIDxucmNsLWljb24gW3NtYWxsXT1cInNtYWxsXCIgY2xhc3M9XCJsZWZ0XCI+e3sgaWNvbiB9fTwvbnJjbC1pY29uPiBcbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoIGhhc0ljb25SaWdodCApIHsgXG4gICAgICAgICAgICA8bnJjbC1pY29uIFtzbWFsbF09XCJzbWFsbFwiIGNsYXNzPVwicmlnaHRcIj57eyBpY29uUmlnaHQgfX08L25yY2wtaWNvbj4gXG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCBoYXNJY29uQ29tcGFjdCApIHsgXG4gICAgICAgICAgICA8bnJjbC1pY29uIGNsYXNzPVwiY29tcGFjdFwiPnt7IGljb25Db21wYWN0IHx8IGljb24gfX08L25yY2wtaWNvbj4gXG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCBoYXNMYWJlbCApIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj57eyBsYWJlbCB9fTwvc3Bhbj4gICAgICAgIFxuICAgICAgICB9XG4gICAgfVxuPC9idXR0b24+XG4iXX0=
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25yLW5neC1jb21wb25lbnQtbGliL3NyYy9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnItbmd4LWNvbXBvbmVudC1saWIvc3JjL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7Ozs7O0FBb0I3RixNQUFNLE9BQU8sZUFBZ0IsU0FBUSwyQkFBMkI7SUFsQmhFOztRQXlCOEMsWUFBTyxHQUFHLEtBQUssQ0FBQTtRQUNmLGNBQVMsR0FBRyxLQUFLLENBQUE7UUFDakIsYUFBUSxHQUFHLEtBQUssQ0FBQTtRQUNoQixhQUFRLEdBQUcsS0FBSyxDQUFBO1FBQ2hCLFVBQUssR0FBRyxLQUFLLENBQUE7UUFFdkQsMERBQTBEO1FBQzFELHlDQUF5QztRQUMvQixVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQWdCLENBQUE7UUFZbEQsU0FBSSxHQUFHLE1BQU0sQ0FBRSxNQUFNLENBQUUsQ0FBQTtLQWdDMUI7SUE5QkcscUJBQXFCO1FBQ2pCLDZFQUE2RTtRQUM3RSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBRSxHQUFHLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1lBQ2xCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUN6QyxDQUFDLENBQUUsQ0FBQTtJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1As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QUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0csU0FBUztzQkFBbEQsS0FBSzt1QkFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRyxRQUFRO3NCQUFqRCxLQUFLO3VCQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNHLFFBQVE7c0JBQWpELEtBQUs7dUJBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0csS0FBSztzQkFBOUMsS0FBSzt1QkFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFJN0IsS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYm9vbGVhbkF0dHJpYnV0ZSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE5nWm9uZSwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uU3Vic2NyaWJlckJhc2UgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2NvbmZpZ3VyYXRpb24tc3Vic2NyaWJlci5iYXNlJztcblxuQENvbXBvbmVudCgge1xuICAgIHNlbGVjdG9yOiAnbnJjbC1idXR0b24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9idXR0b24uY29tcG9uZW50LnNjc3MnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tjbGFzcy5kaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICAgICAnW2NsYXNzLnByaW1hcnldJzogJ2lzUHJpbWFyeScsXG4gICAgICAgICdbY2xhc3Muc2Vjb25kYXJ5XSc6ICdpc1NlY29uZGFyeScsXG4gICAgICAgICdbY2xhc3MudGVydGlhcnldJzogJ2lzVGVydGlhcnknLFxuICAgICAgICAnW2NsYXNzLm5vcm1hbF0nOiAnIWlzQ29tcGFjdCAmJiAhc21hbGwnLFxuICAgICAgICAnW2NsYXNzLmNvbXBhY3RdJzogJ2lzQ29tcGFjdCcsXG4gICAgICAgICdbY2xhc3Muc21hbGxdJzogJ3NtYWxsICYmICFpc0NvbXBhY3QnLFxuICAgICAgICAnW2NsYXNzLmxhYmVsXSc6ICdoYXNMYWJlbCcsXG4gICAgICAgICdbY2xhc3MuaWNvbi1sZWZ0XSc6ICdoYXNJY29uTGVmdCcsXG4gICAgICAgICdbY2xhc3MuaWNvbi1yaWdodF0nOiAnaGFzSWNvblJpZ2h0JyxcbiAgICAgICAgJ1tjbGFzcy5pY29uLWNvbXBhY3RdJzogJ2hhc0ljb25Db21wYWN0JyxcbiAgICB9XG59IClcbmV4cG9ydCBjbGFzcyBCdXR0b25Db21wb25lbnQgZXh0ZW5kcyBDb25maWd1cmF0aW9uU3Vic2NyaWJlckJhc2UgeyAgICBcbiAgICBASW5wdXQoKSBsYWJlbFxuICAgIEBJbnB1dCgpIGljb25cbiAgICBASW5wdXQoKSBpY29uUmlnaHRcbiAgICBASW5wdXQoKSBpY29uQ29tcGFjdFxuICAgIEBJbnB1dCgpIHRvb2x0aXBcbiAgICBASW5wdXQoKSBjb21wYWN0XG4gICAgQElucHV0KCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9ICkgcHJpbWFyeSA9IGZhbHNlXG4gICAgQElucHV0KCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9ICkgc2Vjb25kYXJ5ID0gZmFsc2VcbiAgICBASW5wdXQoIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0gKSB0ZXJ0aWFyeSA9IGZhbHNlXG4gICAgQElucHV0KCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9ICkgZGlzYWJsZWQgPSBmYWxzZVxuICAgIEBJbnB1dCggeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSApIHNtYWxsID0gZmFsc2VcblxuICAgIC8vIHRoZSBjbGljayBldmVudCBpcyBhbHJlYWR5IGRlZmluZWQgZm9yIHRoZSBob3N0IGVsZW1lbnRcbiAgICAvLyB0aGlzIGRlY2xhcmF0aW9uIG1ha2VzIHN0b3J5Ym9vayBoYXBweVxuICAgIEBPdXRwdXQoKSBjbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8UG9pbnRlckV2ZW50PigpXG5cbiAgICBpc0NvbXBhY3RcbiAgICBpc1ByaW1hcnlcbiAgICBpc1NlY29uZGFyeVxuICAgIGlzVGVydGlhcnlcbiAgICBoYXNJY29uTGVmdFxuICAgIGhhc0ljb25SaWdodFxuICAgIGhhc0ljb25Db21wYWN0XG4gICAgaGFzTGFiZWxcbiAgICB1c2VDb250ZW50XG5cbiAgICB6b25lID0gaW5qZWN0KCBOZ1pvbmUgKVxuXG4gICAgb25Db25maWd1cmF0aW9uQ2hhbmdlKCk6IHZvaWQge1xuICAgICAgICAvLyBhcHBhcmVudGx5IHRoaXMgaXMgbmVlZGVkIHRvIGVuc3VyZSB0aGF0IHRoZSBob3N0IGJpbmRpbmcgdXBkYXRlcyBwcm9wZXJseVxuICAgICAgICB0aGlzLnpvbmUucnVuKCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKClcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKClcbiAgICAgICAgfSApXG4gICAgfVxuXG4gICAgdXBkYXRlU3RhdGUoKSB7XG4gICAgICAgIGlmICggdGhpcy5jb21wYWN0ID09IG51bGwgfHwgdGhpcy5jb21wYWN0ID09PSBmYWxzZSApIHtcbiAgICAgICAgICAgIHRoaXMuaXNDb21wYWN0ID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICggdGhpcy5jb21wYWN0ID09ICcnIHx8IHRoaXMuY29tcGFjdCA9PT0gdHJ1ZSApIHtcbiAgICAgICAgICAgIHRoaXMuaXNDb21wYWN0ID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc0NvbXBhY3QgPSB0aGlzLmNvbXBhY3QgPT0gdGhpcy5jb25maWd1cmF0aW9uLmRpc3BsYXlNb2RlXG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlzUHJpbWFyeSA9IHRoaXMucHJpbWFyeVxuICAgICAgICB0aGlzLmlzU2Vjb25kYXJ5ID0gKCB0aGlzLnNlY29uZGFyeSAmJiAhdGhpcy5wcmltYXJ5ICkgfHwgKCAhdGhpcy5wcmltYXJ5ICYmICF0aGlzLnRlcnRpYXJ5ICYmICF0aGlzLnNtYWxsICYmICF0aGlzLmlzQ29tcGFjdCApXG4gICAgICAgIHRoaXMuaXNUZXJ0aWFyeSA9ICggdGhpcy50ZXJ0aWFyeSB8fCB0aGlzLnNtYWxsIHx8IHRoaXMuaXNDb21wYWN0ICkgJiYgIXRoaXMucHJpbWFyeSAmJiAhdGhpcy5zZWNvbmRhcnlcblxuICAgICAgICB0aGlzLmhhc0xhYmVsID0gISF0aGlzLmxhYmVsXG4gICAgICAgIHRoaXMuaGFzSWNvbkxlZnQgPSAhIXRoaXMuaWNvbiAmJiAhdGhpcy5pc0NvbXBhY3RcbiAgICAgICAgdGhpcy5oYXNJY29uUmlnaHQgPSAhIXRoaXMuaWNvblJpZ2h0ICYmIHRoaXMuaGFzTGFiZWwgJiYgIXRoaXMuaXNDb21wYWN0XG4gICAgICAgIHRoaXMuaGFzSWNvbkNvbXBhY3QgPSAoICEhdGhpcy5pY29uQ29tcGFjdCB8fCAhIXRoaXMuaWNvbiApICYmIHRoaXMuaXNDb21wYWN0XG5cbiAgICAgICAgdGhpcy51c2VDb250ZW50ID0gIXRoaXMuaGFzTGFiZWwgJiYgIXRoaXMuaGFzSWNvbkxlZnQgJiYgIXRoaXMuaGFzSWNvblJpZ2h0ICYmICF0aGlzLmhhc0ljb25Db21wYWN0XG4gICAgfVxufVxuIiwiPGJ1dHRvbiBcbiAgICBtYXRSaXBwbGVcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFttYXRUb29sdGlwXT1cInRvb2x0aXBcIlxuPlxuICAgIEBpZiAoIHVzZUNvbnRlbnQgKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAgIEBpZiAoIGhhc0ljb25MZWZ0ICkgeyBcbiAgICAgICAgICAgIDxucmNsLWljb24gW3NtYWxsXT1cInNtYWxsXCIgY2xhc3M9XCJsZWZ0XCI+e3sgaWNvbiB9fTwvbnJjbC1pY29uPiBcbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoIGhhc0ljb25SaWdodCApIHsgXG4gICAgICAgICAgICA8bnJjbC1pY29uIFtzbWFsbF09XCJzbWFsbFwiIGNsYXNzPVwicmlnaHRcIj57eyBpY29uUmlnaHQgfX08L25yY2wtaWNvbj4gXG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCBoYXNJY29uQ29tcGFjdCApIHsgXG4gICAgICAgICAgICA8bnJjbC1pY29uIGNsYXNzPVwiY29tcGFjdFwiPnt7IGljb25Db21wYWN0IHx8IGljb24gfX08L25yY2wtaWNvbj4gXG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCBoYXNMYWJlbCApIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj57eyBsYWJlbCB9fTwvc3Bhbj4gICAgICAgIFxuICAgICAgICB9XG4gICAgfVxuPC9idXR0b24+XG4iXX0=
@@ -50,8 +50,9 @@ export class FilterSelectComponent extends NrclBase {
50
50
  const clickTarget = event.target;
51
51
  const triggerEl = this.trigger.nativeElement;
52
52
  const overlayEl = this.overlayRef?.overlayElement;
53
- // console.log('triggerEl',triggerEl,triggerEl?.contains(clickTarget))
54
- // console.log('overlayEl',overlayEl,overlayEl?.contains(clickTarget))
53
+ // console.log(this.label,'target',clickTarget)
54
+ // console.log(this.label,'triggerEl',triggerEl?.contains(clickTarget),triggerEl)
55
+ // console.log(this.label,'overlayEl',overlayEl?.contains(clickTarget),overlayEl)
55
56
  // Only close if click is outside both trigger and overlay
56
57
  if (triggerEl?.contains(clickTarget))
57
58
  return;
@@ -59,7 +60,7 @@ export class FilterSelectComponent extends NrclBase {
59
60
  return;
60
61
  if (overlayEl?.contains(clickTarget))
61
62
  return;
62
- // console.log('outside click')
63
+ // console.log(this.label,'outside click')
63
64
  this.close();
64
65
  this.setInputToSelection();
65
66
  this.floatLabel = 'auto';
@@ -115,7 +116,7 @@ export class FilterSelectComponent extends NrclBase {
115
116
  this.valueChange.emit(this.selection.value || []);
116
117
  }
117
118
  open() {
118
- // console.log('open',this.isOpen)
119
+ // console.warn('open',this.isOpen)
119
120
  if (this.isOpen)
120
121
  return;
121
122
  this.isOpen = true;
@@ -244,6 +245,7 @@ export class FilterSelectComponent extends NrclBase {
244
245
  this.open();
245
246
  }
246
247
  onCloseClick() {
248
+ // console.log('onCloseClick')
247
249
  this.close();
248
250
  this.setInputToSelection();
249
251
  this.floatLabel = 'auto';
@@ -258,8 +260,14 @@ export class FilterSelectComponent extends NrclBase {
258
260
  formatOption(option) {
259
261
  return this.optionFormatter(option, false);
260
262
  }
263
+ get isClosedNoSelection() {
264
+ return !this.isOpen && !(this.selection?.value?.length > 0 && this.clear);
265
+ }
266
+ get isClosedSelection() {
267
+ return !this.isOpen && this.selection?.value?.length > 0 && this.clear;
268
+ }
261
269
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterSelectComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
262
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FilterSelectComponent, selector: "nrcl-filter-select", inputs: { label: "label", placeholder: "placeholder", hint: "hint", options: "options", value: "value", selectMax: ["selectMax", "selectMax", numberAttribute], tooltips: ["tooltips", "tooltips", booleanAttribute], summary: ["summary", "summary", booleanAttribute], clear: ["clear", "clear", booleanAttribute], filter: ["filter", "filter", booleanAttribute], filterCharsMin: ["filterCharsMin", "filterCharsMin", numberAttribute], optionFormatter: "optionFormatter", overlayClass: "overlayClass", wide: "wide", filterCharsMinMessage: "filterCharsMinMessage" }, outputs: { valueChange: "valueChange" }, host: { properties: { "class.has-value": "hasValue", "class.is-open": "isOpen", "class.is-closed": "!isOpen", "class.use-filter": "filter", "style.--nrcl-filter-select-width": "this.wide ? \"var( --nrcl-filter-width-\" + this.wide + \" )\" : null" } }, viewQueries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true, read: ElementRef }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }, { propertyName: "overlayTemplate", first: true, predicate: ["overlayTemplate"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<mat-form-field #trigger\n [floatLabel]=\"floatLabel\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n>\n @if ( label ) {\n <mat-label>{{ label }}</mat-label>\n }\n\n <input class=\"filter-input\" #filterInput\n matInput \n [placeholder]=\"placeholder\" \n [value]=\"inputValue\"\n (input)=\"onInput( $event )\"\n (keydown.escape)=\"close()\"\n (focus)=\"onInputFocus()\"\n [matTooltip]=\"inputValue\"\n [readonly]=\"!filter\"\n >\n\n @if ( isOpen ) {\n <nrcl-button tertiary matSuffix\n icon=\"arrow_drop_up\"\n (click)=\"onCloseClick($event); $event.stopPropagation()\"\n ></nrcl-button>\n }\n @else if ( selection?.value?.length > 0 && clear ) {\n <nrcl-button tertiary matSuffix\n icon=\"close\"\n (click)=\"onCancelClick($event); $event.stopPropagation()\"\n ></nrcl-button>\n }\n @else {\n <nrcl-button tertiary matSuffix\n icon=\"arrow_drop_down\"\n (click)=\"onInputFocus(); $event.stopPropagation()\"\n ></nrcl-button>\n } \n</mat-form-field> \n\n<ng-template #overlayTemplate>\n <div class=\"nrcl filter-select-options\" [class.multiple]=\"!single\" [class.single]=\"single\" [class]=\"overlayClass\">\n @if ( !isFiltered && ( !single || filterCharsMin ) && summary ) {\n @if ( !selection?.value?.length && ( hint || filterCharsMin ) ) {\n <div class=\"selection-overview\">\n @if ( hint ) {\n <div class=\"summary\">\n <span>{{ hint }}</span>\n </div>\n } \n\n @if ( filterCharsMin && filterCharsMinMessage ) {\n <div class=\"summary\">\n <span>{{ filterCharsMinMessage }}</span>\n </div>\n }\n </div>\n }\n\n @if ( selection?.value?.length > 0 && selection?.value?.length < options?.length ) {\n <div class=\"selection-overview\">\n @if ( !single ) {\n <div class=\"summary\">\n <span>Selected {{ selection?.value?.length }} of {{ options?.length }} options</span>\n </div>\n }\n\n <mat-selection-list\n (selectionChange)=\"onUpperSelectionChange( $event )\"\n >\n @for ( code of selection?.value; track code ) {\n <mat-list-option \n [value]=\"code\" \n togglePosition=\"before\"\n selected\n [matTooltip]=\"tooltips ? descriptionForCode( code ) : null\"\n matTooltipPosition=\"after\"\n >\n <span [innerHTML]=\"formatOption( optionForCode( code ) )\"></span>\n </mat-list-option>\n }\n </mat-selection-list>\n\n @if ( hint ) {\n <div class=\"summary\">\n <span>{{ hint }}</span>\n </div>\n } \n\n @if ( filterCharsMin && filterCharsMinMessage ) {\n <div class=\"summary\">\n <span>{{ filterCharsMinMessage }}</span>\n </div>\n }\n </div>\n }\n\n @if ( selection?.value?.length == options?.length ) {\n <div class=\"selection-overview\">\n <div class=\"summary\">All options selected</div>\n </div>\n }\n }\n\n @if ( !filterCharsMin || isFiltered ) {\n <mat-selection-list\n [formControl]=\"selection\"\n (selectionChange)=\"onSelectionChange( $event )\"\n [multiple]=\"!single\"\n hideSingleSelectionIndicator\n >\n @for ( option of options; track option ) {\n <mat-list-option [class.hide]=\"!matchesFilter( option )\"\n [value]=\"option.code\" \n togglePosition=\"before\" \n [matTooltip]=\"tooltips ? option.description : null\"\n matTooltipPosition=\"after\" \n >\n <span [innerHTML]=\"formatOption( option )\"></span>\n </mat-list-option>\n }\n </mat-selection-list>\n }\n </div>\n</ng-template>\n", styles: ["::ng-deep :root{--nrcl-filter-select-width: var( --nrcl-filter-width-2 );--nrcl-filter-select-height: var( --nrcl-filter-height )}:host{--mat-form-field-container-height: calc( var( --nrcl-filter-select-height ) - 4px );--mat-form-field-container-vertical-padding: 8px;--mat-form-field-container-text-size: 15px;--mdc-outlined-text-field-focus-label-text-color: black;--mdc-outlined-text-field-hover-label-text-color: black;width:var(--nrcl-filter-select-width);display:block}:host.has-value{--mdc-outlined-text-field-label-text-color: black}:host ::ng-deep .mat-mdc-form-field{width:100%}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper{background-color:#fff;height:var(--nrcl-filter-select-height);cursor:pointer}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix{width:var(--nrcl-filter-select-width)}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .filter-input{cursor:pointer}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-icon-suffix{margin:0}:host.is-open.use-filter ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .filter-input{cursor:text}::ng-deep .filter-select-options{--mdc-list-list-item-selected-container-color: #007bff;font-family:var(--nrcl-font-family);overflow-x:hidden;overflow-y:auto;padding:0;background:#fff;color:#000;border:1px solid #aaa;border-radius:4px;font-size:var(--nrcl-font-size);pointer-events:all;box-shadow:0 4px 5px #00000026;display:block;width:100%}::ng-deep .filter-select-options .selection-overview{background-color:#eee;border-bottom:1px solid black}::ng-deep .filter-select-options .selection-overview .summary{padding:4px 8px 4px 16px;font-size:14px;color:#000000bc;font-family:var(--nrcl-font-family)}::ng-deep .filter-select-options .mat-mdc-selection-list{padding-top:0;padding-bottom:0}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option{height:30px;font-size:var(--nrcl-font-size);padding-left:16px;padding-right:8px}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option.hide{display:none}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option .mdc-list-item__start{margin:0;padding:0 8px 0 0}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option .mdc-list-item__start .mdc-checkbox{padding:0}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option .mdc-list-item__start .mdc-checkbox .mdc-checkbox__background{top:0;left:0}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option .mdc-list-item__primary-text{flex-grow:1;font-size:var(--nrcl-font-size)}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option.mdc-list-item--selected .mdc-list-item__primary-text{color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i4.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i6.ButtonComponent, selector: "nrcl-button", inputs: ["label", "icon", "iconRight", "iconCompact", "tooltip", "compact", "primary", "secondary", "tertiary", "disabled", "small"], outputs: ["click"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
270
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FilterSelectComponent, selector: "nrcl-filter-select", inputs: { label: "label", placeholder: "placeholder", hint: "hint", options: "options", value: "value", selectMax: ["selectMax", "selectMax", numberAttribute], tooltips: ["tooltips", "tooltips", booleanAttribute], summary: ["summary", "summary", booleanAttribute], clear: ["clear", "clear", booleanAttribute], filter: ["filter", "filter", booleanAttribute], filterCharsMin: ["filterCharsMin", "filterCharsMin", numberAttribute], optionFormatter: "optionFormatter", overlayClass: "overlayClass", wide: "wide", filterCharsMinMessage: "filterCharsMinMessage" }, outputs: { valueChange: "valueChange" }, host: { properties: { "class.has-value": "hasValue", "class.is-open": "isOpen", "class.is-closed": "!isOpen", "class.use-filter": "filter", "style.--nrcl-filter-select-width": "this.wide ? \"var( --nrcl-filter-width-\" + this.wide + \" )\" : null" } }, viewQueries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true, read: ElementRef }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }, { propertyName: "overlayTemplate", first: true, predicate: ["overlayTemplate"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<mat-form-field #trigger\n [floatLabel]=\"floatLabel\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n>\n @if ( label ) {\n <mat-label>{{ label }}</mat-label>\n }\n\n <input class=\"filter-input\" #filterInput\n matInput \n [placeholder]=\"placeholder\" \n [value]=\"inputValue\"\n (input)=\"onInput( $event )\"\n (keydown.escape)=\"close()\"\n (focus)=\"onInputFocus()\"\n [matTooltip]=\"inputValue\"\n [readonly]=\"!filter\"\n >\n</mat-form-field> \n\n<nrcl-button tertiary matSuffix [class.hide]=\"!isOpen\"\n icon=\"arrow_drop_up\"\n (click)=\"onCloseClick()\"\n></nrcl-button>\n\n<nrcl-button tertiary matSuffix [class.hide]=\"!isClosedSelection\"\n icon=\"close\"\n (click)=\"onCancelClick()\"\n></nrcl-button>\n\n<nrcl-button tertiary matSuffix [class.hide]=\"!isClosedNoSelection\"\n icon=\"arrow_drop_down\"\n (click)=\"onInputFocus()\"\n></nrcl-button>\n\n<ng-template #overlayTemplate>\n <div class=\"nrcl filter-select-options\" [class.multiple]=\"!single\" [class.single]=\"single\" [class]=\"overlayClass\">\n @if ( !isFiltered && ( !single || filterCharsMin ) && summary ) {\n @if ( !selection?.value?.length && ( hint || filterCharsMin ) ) {\n <div class=\"selection-overview\">\n @if ( hint ) {\n <div class=\"summary\">\n <span>{{ hint }}</span>\n </div>\n } \n\n @if ( filterCharsMin && filterCharsMinMessage ) {\n <div class=\"summary\">\n <span>{{ filterCharsMinMessage }}</span>\n </div>\n }\n </div>\n }\n\n @if ( selection?.value?.length > 0 && selection?.value?.length < options?.length ) {\n <div class=\"selection-overview\">\n @if ( !single ) {\n <div class=\"summary\">\n <span>Selected {{ selection?.value?.length }} of {{ options?.length }} options</span>\n </div>\n }\n\n <mat-selection-list\n (selectionChange)=\"onUpperSelectionChange( $event )\"\n >\n @for ( code of selection?.value; track code ) {\n <mat-list-option \n [value]=\"code\" \n togglePosition=\"before\"\n selected\n [matTooltip]=\"tooltips ? descriptionForCode( code ) : null\"\n matTooltipPosition=\"after\"\n >\n <span [innerHTML]=\"formatOption( optionForCode( code ) )\"></span>\n </mat-list-option>\n }\n </mat-selection-list>\n\n @if ( hint ) {\n <div class=\"summary\">\n <span>{{ hint }}</span>\n </div>\n } \n\n @if ( filterCharsMin && filterCharsMinMessage ) {\n <div class=\"summary\">\n <span>{{ filterCharsMinMessage }}</span>\n </div>\n }\n </div>\n }\n\n @if ( selection?.value?.length == options?.length ) {\n <div class=\"selection-overview\">\n <div class=\"summary\">All options selected</div>\n </div>\n }\n }\n\n @if ( !filterCharsMin || isFiltered ) {\n <mat-selection-list\n [formControl]=\"selection\"\n (selectionChange)=\"onSelectionChange( $event )\"\n [multiple]=\"!single\"\n hideSingleSelectionIndicator\n >\n @for ( option of options; track option ) {\n <mat-list-option [class.hide]=\"!matchesFilter( option )\"\n [value]=\"option.code\" \n togglePosition=\"before\" \n [matTooltip]=\"tooltips ? option.description : null\"\n matTooltipPosition=\"after\" \n >\n <span [innerHTML]=\"formatOption( option )\"></span>\n </mat-list-option>\n }\n </mat-selection-list>\n }\n </div>\n</ng-template>\n", styles: ["::ng-deep :root{--nrcl-filter-select-width: var( --nrcl-filter-width-2 );--nrcl-filter-select-height: var( --nrcl-filter-height )}:host{--mat-form-field-container-height: calc( var( --nrcl-filter-select-height ) - 4px );--mat-form-field-container-vertical-padding: 8px;--mat-form-field-container-text-size: 15px;--mdc-outlined-text-field-focus-label-text-color: black;--mdc-outlined-text-field-hover-label-text-color: black;width:var(--nrcl-filter-select-width);display:block;position:relative}:host .nrcl-button{position:absolute;right:2px;top:2px;bottom:2px}:host .hide{display:none}:host.has-value{--mdc-outlined-text-field-label-text-color: black}:host ::ng-deep .mat-mdc-form-field{width:100%}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper{background-color:#fff;height:var(--nrcl-filter-select-height);cursor:pointer}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix{width:var(--nrcl-filter-select-width)}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .filter-input{cursor:pointer}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-icon-suffix{margin:0}:host.is-open.use-filter ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .filter-input{cursor:text}::ng-deep .filter-select-options{--mdc-list-list-item-selected-container-color: #007bff;font-family:var(--nrcl-font-family);overflow-x:hidden;overflow-y:auto;padding:0;background:#fff;color:#000;border:1px solid #aaa;border-radius:4px;font-size:var(--nrcl-font-size);pointer-events:all;box-shadow:0 4px 5px #00000026;display:block;width:100%}::ng-deep .filter-select-options .selection-overview{background-color:#eee;border-bottom:1px solid black}::ng-deep .filter-select-options .selection-overview .summary{padding:4px 8px 4px 16px;font-size:14px;color:#000000bc;font-family:var(--nrcl-font-family)}::ng-deep .filter-select-options .mat-mdc-selection-list{padding-top:0;padding-bottom:0}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option{height:30px;font-size:var(--nrcl-font-size);padding-left:16px;padding-right:8px}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option.hide{display:none}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option .mdc-list-item__start{margin:0;padding:0 8px 0 0}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option .mdc-list-item__start .mdc-checkbox{padding:0}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option .mdc-list-item__start .mdc-checkbox .mdc-checkbox__background{top:0;left:0}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option .mdc-list-item__primary-text{flex-grow:1;font-size:var(--nrcl-font-size)}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option.mdc-list-item--selected .mdc-list-item__primary-text{color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i3.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i4.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i4.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i6.ButtonComponent, selector: "nrcl-button", inputs: ["label", "icon", "iconRight", "iconCompact", "tooltip", "compact", "primary", "secondary", "tertiary", "disabled", "small"], outputs: ["click"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
263
271
  }
264
272
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FilterSelectComponent, decorators: [{
265
273
  type: Component,
@@ -269,7 +277,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
269
277
  '[class.is-closed]': "!isOpen",
270
278
  '[class.use-filter]': "filter",
271
279
  '[style.--nrcl-filter-select-width]': 'this.wide ? "var( --nrcl-filter-width-" + this.wide + " )" : null'
272
- }, template: "<mat-form-field #trigger\n [floatLabel]=\"floatLabel\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n>\n @if ( label ) {\n <mat-label>{{ label }}</mat-label>\n }\n\n <input class=\"filter-input\" #filterInput\n matInput \n [placeholder]=\"placeholder\" \n [value]=\"inputValue\"\n (input)=\"onInput( $event )\"\n (keydown.escape)=\"close()\"\n (focus)=\"onInputFocus()\"\n [matTooltip]=\"inputValue\"\n [readonly]=\"!filter\"\n >\n\n @if ( isOpen ) {\n <nrcl-button tertiary matSuffix\n icon=\"arrow_drop_up\"\n (click)=\"onCloseClick($event); $event.stopPropagation()\"\n ></nrcl-button>\n }\n @else if ( selection?.value?.length > 0 && clear ) {\n <nrcl-button tertiary matSuffix\n icon=\"close\"\n (click)=\"onCancelClick($event); $event.stopPropagation()\"\n ></nrcl-button>\n }\n @else {\n <nrcl-button tertiary matSuffix\n icon=\"arrow_drop_down\"\n (click)=\"onInputFocus(); $event.stopPropagation()\"\n ></nrcl-button>\n } \n</mat-form-field> \n\n<ng-template #overlayTemplate>\n <div class=\"nrcl filter-select-options\" [class.multiple]=\"!single\" [class.single]=\"single\" [class]=\"overlayClass\">\n @if ( !isFiltered && ( !single || filterCharsMin ) && summary ) {\n @if ( !selection?.value?.length && ( hint || filterCharsMin ) ) {\n <div class=\"selection-overview\">\n @if ( hint ) {\n <div class=\"summary\">\n <span>{{ hint }}</span>\n </div>\n } \n\n @if ( filterCharsMin && filterCharsMinMessage ) {\n <div class=\"summary\">\n <span>{{ filterCharsMinMessage }}</span>\n </div>\n }\n </div>\n }\n\n @if ( selection?.value?.length > 0 && selection?.value?.length < options?.length ) {\n <div class=\"selection-overview\">\n @if ( !single ) {\n <div class=\"summary\">\n <span>Selected {{ selection?.value?.length }} of {{ options?.length }} options</span>\n </div>\n }\n\n <mat-selection-list\n (selectionChange)=\"onUpperSelectionChange( $event )\"\n >\n @for ( code of selection?.value; track code ) {\n <mat-list-option \n [value]=\"code\" \n togglePosition=\"before\"\n selected\n [matTooltip]=\"tooltips ? descriptionForCode( code ) : null\"\n matTooltipPosition=\"after\"\n >\n <span [innerHTML]=\"formatOption( optionForCode( code ) )\"></span>\n </mat-list-option>\n }\n </mat-selection-list>\n\n @if ( hint ) {\n <div class=\"summary\">\n <span>{{ hint }}</span>\n </div>\n } \n\n @if ( filterCharsMin && filterCharsMinMessage ) {\n <div class=\"summary\">\n <span>{{ filterCharsMinMessage }}</span>\n </div>\n }\n </div>\n }\n\n @if ( selection?.value?.length == options?.length ) {\n <div class=\"selection-overview\">\n <div class=\"summary\">All options selected</div>\n </div>\n }\n }\n\n @if ( !filterCharsMin || isFiltered ) {\n <mat-selection-list\n [formControl]=\"selection\"\n (selectionChange)=\"onSelectionChange( $event )\"\n [multiple]=\"!single\"\n hideSingleSelectionIndicator\n >\n @for ( option of options; track option ) {\n <mat-list-option [class.hide]=\"!matchesFilter( option )\"\n [value]=\"option.code\" \n togglePosition=\"before\" \n [matTooltip]=\"tooltips ? option.description : null\"\n matTooltipPosition=\"after\" \n >\n <span [innerHTML]=\"formatOption( option )\"></span>\n </mat-list-option>\n }\n </mat-selection-list>\n }\n </div>\n</ng-template>\n", styles: ["::ng-deep :root{--nrcl-filter-select-width: var( --nrcl-filter-width-2 );--nrcl-filter-select-height: var( --nrcl-filter-height )}:host{--mat-form-field-container-height: calc( var( --nrcl-filter-select-height ) - 4px );--mat-form-field-container-vertical-padding: 8px;--mat-form-field-container-text-size: 15px;--mdc-outlined-text-field-focus-label-text-color: black;--mdc-outlined-text-field-hover-label-text-color: black;width:var(--nrcl-filter-select-width);display:block}:host.has-value{--mdc-outlined-text-field-label-text-color: black}:host ::ng-deep .mat-mdc-form-field{width:100%}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper{background-color:#fff;height:var(--nrcl-filter-select-height);cursor:pointer}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix{width:var(--nrcl-filter-select-width)}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .filter-input{cursor:pointer}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-icon-suffix{margin:0}:host.is-open.use-filter ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .filter-input{cursor:text}::ng-deep .filter-select-options{--mdc-list-list-item-selected-container-color: #007bff;font-family:var(--nrcl-font-family);overflow-x:hidden;overflow-y:auto;padding:0;background:#fff;color:#000;border:1px solid #aaa;border-radius:4px;font-size:var(--nrcl-font-size);pointer-events:all;box-shadow:0 4px 5px #00000026;display:block;width:100%}::ng-deep .filter-select-options .selection-overview{background-color:#eee;border-bottom:1px solid black}::ng-deep .filter-select-options .selection-overview .summary{padding:4px 8px 4px 16px;font-size:14px;color:#000000bc;font-family:var(--nrcl-font-family)}::ng-deep .filter-select-options .mat-mdc-selection-list{padding-top:0;padding-bottom:0}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option{height:30px;font-size:var(--nrcl-font-size);padding-left:16px;padding-right:8px}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option.hide{display:none}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option .mdc-list-item__start{margin:0;padding:0 8px 0 0}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option .mdc-list-item__start .mdc-checkbox{padding:0}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option .mdc-list-item__start .mdc-checkbox .mdc-checkbox__background{top:0;left:0}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option .mdc-list-item__primary-text{flex-grow:1;font-size:var(--nrcl-font-size)}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option.mdc-list-item--selected .mdc-list-item__primary-text{color:#fff}\n"] }]
280
+ }, template: "<mat-form-field #trigger\n [floatLabel]=\"floatLabel\"\n appearance=\"outline\"\n subscriptSizing=\"dynamic\"\n>\n @if ( label ) {\n <mat-label>{{ label }}</mat-label>\n }\n\n <input class=\"filter-input\" #filterInput\n matInput \n [placeholder]=\"placeholder\" \n [value]=\"inputValue\"\n (input)=\"onInput( $event )\"\n (keydown.escape)=\"close()\"\n (focus)=\"onInputFocus()\"\n [matTooltip]=\"inputValue\"\n [readonly]=\"!filter\"\n >\n</mat-form-field> \n\n<nrcl-button tertiary matSuffix [class.hide]=\"!isOpen\"\n icon=\"arrow_drop_up\"\n (click)=\"onCloseClick()\"\n></nrcl-button>\n\n<nrcl-button tertiary matSuffix [class.hide]=\"!isClosedSelection\"\n icon=\"close\"\n (click)=\"onCancelClick()\"\n></nrcl-button>\n\n<nrcl-button tertiary matSuffix [class.hide]=\"!isClosedNoSelection\"\n icon=\"arrow_drop_down\"\n (click)=\"onInputFocus()\"\n></nrcl-button>\n\n<ng-template #overlayTemplate>\n <div class=\"nrcl filter-select-options\" [class.multiple]=\"!single\" [class.single]=\"single\" [class]=\"overlayClass\">\n @if ( !isFiltered && ( !single || filterCharsMin ) && summary ) {\n @if ( !selection?.value?.length && ( hint || filterCharsMin ) ) {\n <div class=\"selection-overview\">\n @if ( hint ) {\n <div class=\"summary\">\n <span>{{ hint }}</span>\n </div>\n } \n\n @if ( filterCharsMin && filterCharsMinMessage ) {\n <div class=\"summary\">\n <span>{{ filterCharsMinMessage }}</span>\n </div>\n }\n </div>\n }\n\n @if ( selection?.value?.length > 0 && selection?.value?.length < options?.length ) {\n <div class=\"selection-overview\">\n @if ( !single ) {\n <div class=\"summary\">\n <span>Selected {{ selection?.value?.length }} of {{ options?.length }} options</span>\n </div>\n }\n\n <mat-selection-list\n (selectionChange)=\"onUpperSelectionChange( $event )\"\n >\n @for ( code of selection?.value; track code ) {\n <mat-list-option \n [value]=\"code\" \n togglePosition=\"before\"\n selected\n [matTooltip]=\"tooltips ? descriptionForCode( code ) : null\"\n matTooltipPosition=\"after\"\n >\n <span [innerHTML]=\"formatOption( optionForCode( code ) )\"></span>\n </mat-list-option>\n }\n </mat-selection-list>\n\n @if ( hint ) {\n <div class=\"summary\">\n <span>{{ hint }}</span>\n </div>\n } \n\n @if ( filterCharsMin && filterCharsMinMessage ) {\n <div class=\"summary\">\n <span>{{ filterCharsMinMessage }}</span>\n </div>\n }\n </div>\n }\n\n @if ( selection?.value?.length == options?.length ) {\n <div class=\"selection-overview\">\n <div class=\"summary\">All options selected</div>\n </div>\n }\n }\n\n @if ( !filterCharsMin || isFiltered ) {\n <mat-selection-list\n [formControl]=\"selection\"\n (selectionChange)=\"onSelectionChange( $event )\"\n [multiple]=\"!single\"\n hideSingleSelectionIndicator\n >\n @for ( option of options; track option ) {\n <mat-list-option [class.hide]=\"!matchesFilter( option )\"\n [value]=\"option.code\" \n togglePosition=\"before\" \n [matTooltip]=\"tooltips ? option.description : null\"\n matTooltipPosition=\"after\" \n >\n <span [innerHTML]=\"formatOption( option )\"></span>\n </mat-list-option>\n }\n </mat-selection-list>\n }\n </div>\n</ng-template>\n", styles: ["::ng-deep :root{--nrcl-filter-select-width: var( --nrcl-filter-width-2 );--nrcl-filter-select-height: var( --nrcl-filter-height )}:host{--mat-form-field-container-height: calc( var( --nrcl-filter-select-height ) - 4px );--mat-form-field-container-vertical-padding: 8px;--mat-form-field-container-text-size: 15px;--mdc-outlined-text-field-focus-label-text-color: black;--mdc-outlined-text-field-hover-label-text-color: black;width:var(--nrcl-filter-select-width);display:block;position:relative}:host .nrcl-button{position:absolute;right:2px;top:2px;bottom:2px}:host .hide{display:none}:host.has-value{--mdc-outlined-text-field-label-text-color: black}:host ::ng-deep .mat-mdc-form-field{width:100%}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper{background-color:#fff;height:var(--nrcl-filter-select-height);cursor:pointer}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix{width:var(--nrcl-filter-select-width)}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .filter-input{cursor:pointer}:host ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-icon-suffix{margin:0}:host.is-open.use-filter ::ng-deep .mat-mdc-form-field .mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .filter-input{cursor:text}::ng-deep .filter-select-options{--mdc-list-list-item-selected-container-color: #007bff;font-family:var(--nrcl-font-family);overflow-x:hidden;overflow-y:auto;padding:0;background:#fff;color:#000;border:1px solid #aaa;border-radius:4px;font-size:var(--nrcl-font-size);pointer-events:all;box-shadow:0 4px 5px #00000026;display:block;width:100%}::ng-deep .filter-select-options .selection-overview{background-color:#eee;border-bottom:1px solid black}::ng-deep .filter-select-options .selection-overview .summary{padding:4px 8px 4px 16px;font-size:14px;color:#000000bc;font-family:var(--nrcl-font-family)}::ng-deep .filter-select-options .mat-mdc-selection-list{padding-top:0;padding-bottom:0}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option{height:30px;font-size:var(--nrcl-font-size);padding-left:16px;padding-right:8px}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option.hide{display:none}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option .mdc-list-item__start{margin:0;padding:0 8px 0 0}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option .mdc-list-item__start .mdc-checkbox{padding:0}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option .mdc-list-item__start .mdc-checkbox .mdc-checkbox__background{top:0;left:0}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option .mdc-list-item__primary-text{flex-grow:1;font-size:var(--nrcl-font-size)}::ng-deep .filter-select-options .mat-mdc-selection-list .mat-mdc-list-option.mdc-list-item--selected .mdc-list-item__primary-text{color:#fff}\n"] }]
273
281
  }], propDecorators: { label: [{
274
282
  type: Input
275
283
  }], placeholder: [{
@@ -318,4 +326,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
318
326
  type: ViewChild,
319
327
  args: ['overlayTemplate']
320
328
  }] } });
321
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uci1uZ3gtY29tcG9uZW50LWxpYi9zcmMvY29tcG9uZW50cy9maWx0ZXItc2VsZWN0L2ZpbHRlci1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnItbmd4LWNvbXBvbmVudC1saWIvc3JjL2NvbXBvbmVudHMvZmlsdGVyLXNlbGVjdC9maWx0ZXItc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUNILGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsZUFBZSxFQUlmLE1BQU0sRUFHTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7QUFHdEQ7Ozs7Ozs7O0dBUUc7QUFjSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsUUFBUTtJQWJuRDs7UUFlYSxnQkFBVyxHQUFHLFdBQVcsQ0FBQTtRQUlPLGNBQVMsR0FBRyxDQUFDLENBQUE7UUFDWixhQUFRLEdBQUcsSUFBSSxDQUFBO1FBQ2YsWUFBTyxHQUFHLElBQUksQ0FBQTtRQUNkLFVBQUssR0FBRyxJQUFJLENBQUE7UUFDWixXQUFNLEdBQUcsSUFBSSxDQUFBO1FB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O3NCQUE3QixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBaUJ1QyxPQUFPO3NCQUFwRCxTQUFTO3VCQUFFLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ2YsV0FBVztzQkFBdEMsU0FBUzt1QkFBRSxhQUFhO2dCQUNPLGVBQWU7c0JBQTlDLFNBQVM7dUJBQUUsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xuaW1wb3J0IHtcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgbnVtYmVyQXR0cmlidXRlLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgTWF0U2VsZWN0aW9uTGlzdENoYW5nZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9saXN0XCI7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgTnJjbEJhc2UgfSBmcm9tIFwiLi4vLi4vZGlyZWN0aXZlcy9ucmNsLmJhc2VcIjtcbmltcG9ydCB7IENvZGVEZXNjcmlwdGlvbiB9IGZyb20gXCIuLi8uLi91dGlscy9jb2RlLXRhYmxlLnV0aWxcIjtcblxuLyoqXG4gKiBBIGZpbHRlciBzZWxlY3QgY29tcG9uZW50IHRoYXQgYWxsb3dzIHVzZXJzIHRvIHNlbGVjdCBtdWx0aXBsZSBvcHRpb25zIGZyb20gYSBsaXN0LlxuICpcbiAqIEZlYXR1cmVzOlxuICogLSBNdWx0aS1zZWxlY3Qgd2l0aCBvcHRpb25hbCBtYXhpbXVtIHNlbGVjdGlvbiBsaW1pdFxuICogLSBTZWFyY2gvZmlsdGVyIGZ1bmN0aW9uYWxpdHlcbiAqIC0gVG9vbHRpcHMgZm9yIGxvbmcgZGVzY3JpcHRpb25zXG4gKiAtIFN1bW1hcnkgZGlzcGxheSBvZiBzZWxlY3RlZCBpdGVtc1xuICovXG5AQ29tcG9uZW50KCB7XG4gICAgc2VsZWN0b3I6IFwibnJjbC1maWx0ZXItc2VsZWN0XCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9maWx0ZXItc2VsZWN0LmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmw6IFwiLi9maWx0ZXItc2VsZWN0LmNvbXBvbmVudC5zY3NzXCIsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2NsYXNzLmhhcy12YWx1ZV0nOiBcImhhc1ZhbHVlXCIsXG4gICAgICAgICdbY2xhc3MuaXMtb3Blbl0nOiBcImlzT3BlblwiLFxuICAgICAgICAnW2NsYXNzLmlzLWNsb3NlZF0nOiBcIiFpc09wZW5cIixcbiAgICAgICAgJ1tjbGFzcy51c2UtZmlsdGVyXSc6IFwiZmlsdGVyXCIsXG4gICAgICAgICdbc3R5bGUuLS1ucmNsLWZpbHRlci1zZWxlY3Qtd2lkdGhdJzogJ3RoaXMud2lkZSA/IFwidmFyKCAtLW5yY2wtZmlsdGVyLXdpZHRoLVwiICsgdGhpcy53aWRlICsgXCIgKVwiIDogbnVsbCdcbiAgICB9XG59IClcbmV4cG9ydCBjbGFzcyBGaWx0ZXJTZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBOcmNsQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIGxhYmVsXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnRmlsdGVyLi4uJ1xuICAgIEBJbnB1dCgpIGhpbnRcbiAgICBASW5wdXQoKSBvcHRpb25zOiBDb2RlRGVzY3JpcHRpb25bXVxuICAgIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmdbXVxuICAgIEBJbnB1dCggeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9ICkgc2VsZWN0TWF4ID0gMFxuICAgIEBJbnB1dCggeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSApIHRvb2x0aXBzID0gdHJ1ZVxuICAgIEBJbnB1dCggeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSApIHN1bW1hcnkgPSB0cnVlXG4gICAgQElucHV0KCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9ICkgY2xlYXIgPSB0cnVlXG4gICAgQElucHV0KCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9ICkgZmlsdGVyID0gdHJ1ZVxuICAgIEBJbnB1dCggeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9ICkgZmlsdGVyQ2hhcnNNaW4gPSAwXG4gICAgQElucHV0KCkgb3B0aW9uRm9ybWF0dGVyOiAoIG9wdGlvbjogQ29kZURlc2NyaXB0aW9uLCBwbGFpbnRleHQ6IGJvb2xlYW4gKSA9PiBzdHJpbmcgPSAoIG8sIHAgKSA9PiBvLmRlc2NyaXB0aW9uXG4gICAgQElucHV0KCkgb3ZlcmxheUNsYXNzXG4gICAgQElucHV0KCkgd2lkZSBcbiAgICBASW5wdXQoKSBmaWx0ZXJDaGFyc01pbk1lc3NhZ2UgPSAnVG9vIG1hbnkgb3B0aW9ucydcblxuICAgIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XG5cbiAgICBmbG9hdExhYmVsID0gJ2F1dG8nXG4gICAgaW5wdXRWYWx1ZVxuICAgIG9wZW5pbmdWYWx1ZVxuICAgIGlzRmlsdGVyZWQgPSBmYWxzZVxuICAgIGlzT3BlbiA9IGZhbHNlXG4gICAgaGFzVmFsdWUgPSBmYWxzZVxuICAgIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWZcbiAgICBzZWxlY3Rpb24gPSBuZXcgRm9ybUNvbnRyb2woKVxuICAgIG1hdGNoOiAoIG9wdGlvbjogQ29kZURlc2NyaXB0aW9uICkgPT4gYm9vbGVhbiA9ICggbyApID0+IHRydWVcbiAgICBjbGlja1N1YnNjcmlwdGlvblxuXG4gICAgY2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoIENoYW5nZURldGVjdG9yUmVmIClcbiAgICBvdmVybGF5ID0gaW5qZWN0KCBPdmVybGF5IClcbiAgICB2aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KCBWaWV3Q29udGFpbmVyUmVmIClcblxuICAgIEBWaWV3Q2hpbGQoICd0cmlnZ2VyJywgeyByZWFkOiBFbGVtZW50UmVmIH0gKSB0cmlnZ2VyITogRWxlbWVudFJlZlxuICAgIEBWaWV3Q2hpbGQoICdmaWx0ZXJJbnB1dCcgKSBmaWx0ZXJJbnB1dCE6IEVsZW1lbnRSZWZcbiAgICBAVmlld0NoaWxkKCAnb3ZlcmxheVRlbXBsYXRlJyApIG92ZXJsYXlUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT5cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpXG5cbiAgICAgICAgdGhpcy5jbGlja1N1YnNjcmlwdGlvbiA9IGZyb21FdmVudDxNb3VzZUV2ZW50PiggZG9jdW1lbnQsICdjbGljaycgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSggKCBldmVudDogTW91c2VFdmVudCApID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjbGlja1RhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudFxuICAgICAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJFbCA9IHRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgICAgICAgY29uc3Qgb3ZlcmxheUVsID0gdGhpcy5vdmVybGF5UmVmPy5vdmVybGF5RWxlbWVudFxuXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ3RyaWdnZXJFbCcsdHJpZ2dlckVsLHRyaWdnZXJFbD8uY29udGFpbnMoY2xpY2tUYXJnZXQpKVxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdvdmVybGF5RWwnLG92ZXJsYXlFbCxvdmVybGF5RWw/LmNvbnRhaW5zKGNsaWNrVGFyZ2V0KSlcblxuICAgICAgICAgICAgICAgIC8vIE9ubHkgY2xvc2UgaWYgY2xpY2sgaXMgb3V0c2lkZSBib3RoIHRyaWdnZXIgYW5kIG92ZXJsYXlcbiAgICAgICAgICAgICAgICBpZiAoIHRyaWdnZXJFbD8uY29udGFpbnMoY2xpY2tUYXJnZXQpICkgcmV0dXJuIFxuICAgICAgICAgICAgICAgIGlmICggIW92ZXJsYXlFbCApIHJldHVybiBcbiAgICAgICAgICAgICAgICBpZiAoIG92ZXJsYXlFbD8uY29udGFpbnMoY2xpY2tUYXJnZXQpICkgcmV0dXJuIFxuXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ291dHNpZGUgY2xpY2snKVxuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0SW5wdXRUb1NlbGVjdGlvbigpXG4gICAgICAgICAgICAgICAgdGhpcy5mbG9hdExhYmVsID0gJ2F1dG8nXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgICAgIH0gKVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKCBjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzICk6IHZvaWQge1xuICAgICAgICBpZiAoIHRoaXMuaXNPcGVuICkgcmV0dXJuXG5cbiAgICAgICAgaWYgKCBjaGFuZ2VzLm9wdGlvbnMgKSB7XG4gICAgICAgICAgICBsZXQgcHYgPSBKU09OLnN0cmluZ2lmeSggY2hhbmdlcy5vcHRpb25zLnByZXZpb3VzVmFsdWUgKVxuICAgICAgICAgICAgbGV0IGN2ID0gSlNPTi5zdHJpbmdpZnkoIGNoYW5nZXMub3B0aW9ucy5jdXJyZW50VmFsdWUgKVxuICAgICAgICAgICAgaWYgKCBwdiAhPSBjdiApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5zZXRWYWx1ZSggbnVsbCApXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRJbnB1dFRvU2VsZWN0aW9uKClcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZpbHRlcigpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIGNoYW5nZXMudmFsdWUgKSB7XG4gICAgICAgICAgICBsZXQgcHYgPSBKU09OLnN0cmluZ2lmeSggY2hhbmdlcy52YWx1ZS5wcmV2aW91c1ZhbHVlIClcbiAgICAgICAgICAgIGxldCBjdiA9IEpTT04uc3RyaW5naWZ5KCBjaGFuZ2VzLnZhbHVlLmN1cnJlbnRWYWx1ZSApXG4gICAgICAgICAgICBpZiAoIHB2ICE9IGN2ICkge1xuICAgICAgICAgICAgICAgIGlmICggdGhpcy52YWx1ZSApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYXNWYWx1ZSA9IHRoaXMudmFsdWUubGVuZ3RoID4gMFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5zZXRWYWx1ZSggdGhpcy52YWx1ZSApXG4gICAgICAgICAgICAgICAgICAgIGlmICggdGhpcy5zZWxlY3RNYXggPiAxICYmIHRoaXMudmFsdWUubGVuZ3RoID49IHRoaXMuc2VsZWN0TWF4ICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uZGlzYWJsZSgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5lbmFibGUoKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhc1ZhbHVlID0gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uc2V0VmFsdWUoIG51bGwgKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5lbmFibGUoKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RmlsdGVyKClcbiAgICAgICAgICAgICAgICB0aGlzLnNldElucHV0VG9TZWxlY3Rpb24oKVxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ2Rlc3Ryb3knLHRoaXMuaW5zdClcbiAgICAgICAgdGhpcy5jbGlja1N1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKVxuICAgIH1cblxuICAgIGdldCBzaW5nbGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdE1heCA9PSAxXG4gICAgfVxuXG4gICAgZW1pdFZhbHVlQ2hhbmdlKCkge1xuICAgICAgICB0aGlzLmhhc1ZhbHVlID0gKCB0aGlzLnNlbGVjdGlvbi52YWx1ZSB8fCBbXSApLmxlbmd0aCA+IDBcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KCB0aGlzLnNlbGVjdGlvbi52YWx1ZSB8fCBbXSApXG4gICAgfVxuXG4gICAgb3BlbigpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ29wZW4nLHRoaXMuaXNPcGVuKVxuICAgICAgICBpZiAoIHRoaXMuaXNPcGVuICkgcmV0dXJuXG5cbiAgICAgICAgdGhpcy5pc09wZW4gPSB0cnVlXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKClcblxuICAgICAgICAvLyBDcmVhdGUgb3ZlcmxheVxuICAgICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XG4gICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8oIHRoaXMudHJpZ2dlciApXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyggW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IDBcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IDBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdIClcbiAgICAgICAgICAgIC53aXRoUHVzaCggZmFsc2UgKVxuXG4gICAgICAgIGNvbnN0IHNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXG5cbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSgge1xuICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneSxcbiAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5LFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgICAgICAgICAgbWF4V2lkdGg6IHRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoICogMixcbiAgICAgICAgICAgIG1pbldpZHRoOiB0aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCxcbiAgICAgICAgICAgIG1heEhlaWdodDogMzAwLFxuICAgICAgICB9IClcblxuICAgICAgICAvLyBBdHRhY2ggdGVtcGxhdGVcbiAgICAgICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKCB0aGlzLm92ZXJsYXlUZW1wbGF0ZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmIClcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaCggcG9ydGFsIClcblxuICAgICAgICAvLyBGb2N1cyBpbnB1dCBhZnRlciBvdmVybGF5IGlzIGF0dGFjaGVkXG4gICAgICAgIHNldFRpbWVvdXQoICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVySW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblxuICAgICAgICAgICAgLy8gcHJldmVudCBsaXN0IGZyb20gc2Nyb2xsaW5nIHdoZW4gc2VsZWN0aW9uIGNoYW5nZXMgICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZj8ub3ZlcmxheUVsZW1lbnQuY2hpbGRyZW5bMF0uc2Nyb2xsKCAwLCAxIClcbiAgICAgICAgfSwxMDAgKVxuXG4gICAgICAgIHRoaXMub3BlbmluZ1ZhbHVlID0gSlNPTi5zdHJpbmdpZnkoIHRoaXMuc2VsZWN0aW9uLnZhbHVlIClcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgLy8gY29uc29sZS53YXJuKCdjbG9zZScsdGhpcy5pc09wZW4pXG4gICAgICAgIGlmICggIXRoaXMuaXNPcGVuICkgcmV0dXJuXG5cbiAgICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZVxuXG4gICAgICAgIGlmICggdGhpcy5vdmVybGF5UmVmICkge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKVxuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gbnVsbFxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKClcblxuICAgICAgICBsZXQgY2xvc2luZ1ZhbHVlID0gSlNPTi5zdHJpbmdpZnkoIHRoaXMuc2VsZWN0aW9uLnZhbHVlIClcbiAgICAgICAgaWYgKCB0aGlzLm9wZW5pbmdWYWx1ZSAhPSBjbG9zaW5nVmFsdWUgKVxuICAgICAgICAgICAgdGhpcy5lbWl0VmFsdWVDaGFuZ2UoKVxuICAgIH1cblxuICAgIHNldElucHV0VG9TZWxlY3Rpb24oKSB7XG4gICAgICAgIC8vIGNvbnNvbGUud2Fybignc2V0SW5wdXRUb1NlbGVjdGlvbicpXG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMuc2VsZWN0aW9uPy52YWx1ZT8ubWFwKCBjID0+IHRoaXMub3B0aW9uRm9ybWF0dGVyKCB0aGlzLm9wdGlvbkZvckNvZGUoIGMgKSwgdHJ1ZSApICkuam9pbiggJywgJyApIHx8IG51bGxcbiAgICAgICAgdGhpcy5pc0ZpbHRlcmVkID0gZmFsc2VcbiAgICB9XG5cbiAgICBvbklucHV0KCBldj8pIHtcbiAgICAgICAgdGhpcy5zZXRGaWx0ZXIoIGV2Py50YXJnZXQ/LnZhbHVlIClcbiAgICB9XG5cbiAgICBzZXRGaWx0ZXIoIHRleHQ/OiBzdHJpbmcgKSB7XG4gICAgICAgIGxldCB0ID0gdGV4dD8udHJpbSgpLnRvTG93ZXJDYXNlKClcblxuICAgICAgICBpZiAoIHQ/Lmxlbmd0aCA+PSB0aGlzLmZpbHRlckNoYXJzTWluICkge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ2ZpbHRlcmluZycpXG4gICAgICAgICAgICB0aGlzLmlzRmlsdGVyZWQgPSB0cnVlXG4gICAgICAgICAgICB0aGlzLm1hdGNoID0gKCBvcHRpb24gKSA9PiBvcHRpb24uZGVzY3JpcHRpb24udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyggdCApXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnbm90IGZpbHRlcmluZycpXG4gICAgICAgICAgICB0aGlzLmlzRmlsdGVyZWQgPSBmYWxzZVxuICAgICAgICAgICAgdGhpcy5tYXRjaCA9ICggbyApID0+IHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgfVxuXG4gICAgbWF0Y2hlc0ZpbHRlciggb3B0aW9uOiBDb2RlRGVzY3JpcHRpb24gKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hdGNoKCBvcHRpb24gKVxuICAgIH1cblxuICAgIG9uU2VsZWN0aW9uQ2hhbmdlKCBldiApIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ29uU2VsZWN0aW9uQ2hhbmdlJyx0aGlzLnNpbmdsZSlcbiAgICAgICAgaWYgKCB0aGlzLnNpbmdsZSApIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKVxuICAgICAgICAgICAgdGhpcy5zZXRJbnB1dFRvU2VsZWN0aW9uKClcbiAgICAgICAgICAgIHRoaXMuZmxvYXRMYWJlbCA9ICdhdXRvJ1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJJbnB1dD8ubmF0aXZlRWxlbWVudC5mb2N1cygpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHRoaXMuc2VsZWN0TWF4ID4gMSApIHtcbiAgICAgICAgICAgIGlmICggdGhpcy5zZWxlY3Rpb24udmFsdWUubGVuZ3RoID49IHRoaXMuc2VsZWN0TWF4ICkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmRpc2FibGUoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uZW5hYmxlKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgfVxuXG4gICAgb25VcHBlclNlbGVjdGlvbkNoYW5nZSggZXY6IE1hdFNlbGVjdGlvbkxpc3RDaGFuZ2UgKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgbGV0IGNvZGVzID0gdGhpcy5zZWxlY3Rpb24udmFsdWUuZmlsdGVyKCBjID0+IGMgIT0gZXYub3B0aW9uc1sgMCBdLnZhbHVlIClcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLnNldFZhbHVlKCBjb2RlcyApXG5cbiAgICAgICAgICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UoIGV2IClcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBvbkNhbmNlbENsaWNrKCkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnb25DYW5jZWxDbGljaycpXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLnNldFZhbHVlKCBudWxsIClcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uZW5hYmxlKClcbiAgICAgICAgdGhpcy5zZXRJbnB1dFRvU2VsZWN0aW9uKClcbiAgICAgICAgdGhpcy5lbWl0VmFsdWVDaGFuZ2UoKVxuICAgIH1cblxuICAgIG9uSW5wdXRGb2N1cygpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ29uSW5wdXRGb2N1cycpXG4gICAgICAgIHRoaXMuZmxvYXRMYWJlbCA9ICdhbHdheXMnXG5cbiAgICAgICAgaWYgKCB0aGlzLmZpbHRlciApIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnXG4gICAgICAgICAgICB0aGlzLnNldEZpbHRlcigpXG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9wZW4oKVxuICAgIH1cblxuICAgIG9uQ2xvc2VDbGljaygpIHtcbiAgICAgICAgdGhpcy5jbG9zZSgpXG4gICAgICAgIHRoaXMuc2V0SW5wdXRUb1NlbGVjdGlvbigpXG4gICAgICAgIHRoaXMuZmxvYXRMYWJlbCA9ICdhdXRvJ1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKVxuICAgIH1cblxuICAgIGRlc2NyaXB0aW9uRm9yQ29kZSggY29kZTogc3RyaW5nICk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZmluZCggbyA9PiBvLmNvZGUgPT0gY29kZSApPy5kZXNjcmlwdGlvblxuICAgIH1cblxuICAgIG9wdGlvbkZvckNvZGUoIGNvZGU6IHN0cmluZyApOiBDb2RlRGVzY3JpcHRpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmZpbmQoIG8gPT4gby5jb2RlID09IGNvZGUgKVxuICAgIH1cblxuICAgIGZvcm1hdE9wdGlvbiggb3B0aW9uOiBDb2RlRGVzY3JpcHRpb24gKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uRm9ybWF0dGVyKCBvcHRpb24sIGZhbHNlIClcbiAgICB9XG59XG4iLCI8bWF0LWZvcm0tZmllbGQgI3RyaWdnZXJcbiAgICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCJcbiAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXG4gICAgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiXG4+XG4gICAgQGlmICggbGFiZWwgKSB7XG4gICAgICAgIDxtYXQtbGFiZWw+e3sgbGFiZWwgfX08L21hdC1sYWJlbD5cbiAgICB9XG5cbiAgICA8aW5wdXQgY2xhc3M9XCJmaWx0ZXItaW5wdXRcIiAjZmlsdGVySW5wdXRcbiAgICAgICAgbWF0SW5wdXQgXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFxuICAgICAgICBbdmFsdWVdPVwiaW5wdXRWYWx1ZVwiXG4gICAgICAgIChpbnB1dCk9XCJvbklucHV0KCAkZXZlbnQgKVwiXG4gICAgICAgIChrZXlkb3duLmVzY2FwZSk9XCJjbG9zZSgpXCJcbiAgICAgICAgKGZvY3VzKT1cIm9uSW5wdXRGb2N1cygpXCJcbiAgICAgICAgW21hdFRvb2x0aXBdPVwiaW5wdXRWYWx1ZVwiXG4gICAgICAgIFtyZWFkb25seV09XCIhZmlsdGVyXCJcbiAgICA+XG5cbiAgICBAaWYgKCBpc09wZW4gKSB7XG4gICAgICAgIDxucmNsLWJ1dHRvbiB0ZXJ0aWFyeSBtYXRTdWZmaXhcbiAgICAgICAgICAgIGljb249XCJhcnJvd19kcm9wX3VwXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkNsb3NlQ2xpY2soJGV2ZW50KTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgPjwvbnJjbC1idXR0b24+XG4gICAgfVxuICAgIEBlbHNlIGlmICggc2VsZWN0aW9uPy52YWx1ZT8ubGVuZ3RoID4gMCAmJiBjbGVhciApIHtcbiAgICAgICAgPG5yY2wtYnV0dG9uIHRlcnRpYXJ5IG1hdFN1ZmZpeFxuICAgICAgICAgICAgaWNvbj1cImNsb3NlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkNhbmNlbENsaWNrKCRldmVudCk7ICRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICAgID48L25yY2wtYnV0dG9uPlxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAgIDxucmNsLWJ1dHRvbiB0ZXJ0aWFyeSBtYXRTdWZmaXhcbiAgICAgICAgICAgIGljb249XCJhcnJvd19kcm9wX2Rvd25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uSW5wdXRGb2N1cygpOyAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICA+PC9ucmNsLWJ1dHRvbj5cbiAgICB9ICAgICAgICAgICAgICAgIFxuPC9tYXQtZm9ybS1maWVsZD4gICAgICAgIFxuXG48bmctdGVtcGxhdGUgI292ZXJsYXlUZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwibnJjbCBmaWx0ZXItc2VsZWN0LW9wdGlvbnNcIiBbY2xhc3MubXVsdGlwbGVdPVwiIXNpbmdsZVwiIFtjbGFzcy5zaW5nbGVdPVwic2luZ2xlXCIgW2NsYXNzXT1cIm92ZXJsYXlDbGFzc1wiPlxuICAgICAgICBAaWYgKCAhaXNGaWx0ZXJlZCAmJiAoICFzaW5nbGUgfHwgZmlsdGVyQ2hhcnNNaW4gKSAmJiBzdW1tYXJ5ICkge1xuICAgICAgICAgICAgQGlmICggIXNlbGVjdGlvbj8udmFsdWU/Lmxlbmd0aCAmJiAoIGhpbnQgfHwgZmlsdGVyQ2hhcnNNaW4gKSApIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0aW9uLW92ZXJ2aWV3XCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIGhpbnQgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VtbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGhpbnQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgXG5cbiAgICAgICAgICAgICAgICAgICAgQGlmICggZmlsdGVyQ2hhcnNNaW4gJiYgZmlsdGVyQ2hhcnNNaW5NZXNzYWdlICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1bW1hcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBmaWx0ZXJDaGFyc01pbk1lc3NhZ2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKCBzZWxlY3Rpb24/LnZhbHVlPy5sZW5ndGggPiAwICYmIHNlbGVjdGlvbj8udmFsdWU/Lmxlbmd0aCA8IG9wdGlvbnM/Lmxlbmd0aCApIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0aW9uLW92ZXJ2aWV3XCI+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoICFzaW5nbGUgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VtbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlNlbGVjdGVkIHt7IHNlbGVjdGlvbj8udmFsdWU/Lmxlbmd0aCB9fSBvZiB7eyBvcHRpb25zPy5sZW5ndGggfX0gb3B0aW9uczwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3Rpb24tbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblVwcGVyU2VsZWN0aW9uQ2hhbmdlKCAkZXZlbnQgKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKCBjb2RlIG9mIHNlbGVjdGlvbj8udmFsdWU7IHRyYWNrIGNvZGUgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1saXN0LW9wdGlvbiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImNvZGVcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlUG9zaXRpb249XCJiZWZvcmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJ0b29sdGlwcyA/IGRlc2NyaXB0aW9uRm9yQ29kZSggY29kZSApIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFmdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZm9ybWF0T3B0aW9uKCBvcHRpb25Gb3JDb2RlKCBjb2RlICkgKVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1saXN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0aW9uLWxpc3Q+XG5cbiAgICAgICAgICAgICAgICAgICAgQGlmICggaGludCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdW1tYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgaGludCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICBcblxuICAgICAgICAgICAgICAgICAgICBAaWYgKCBmaWx0ZXJDaGFyc01pbiAmJiBmaWx0ZXJDaGFyc01pbk1lc3NhZ2UgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VtbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGZpbHRlckNoYXJzTWluTWVzc2FnZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAoIHNlbGVjdGlvbj8udmFsdWU/Lmxlbmd0aCA9PSBvcHRpb25zPy5sZW5ndGggKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGlvbi1vdmVydmlld1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VtbWFyeVwiPkFsbCBvcHRpb25zIHNlbGVjdGVkPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKCAhZmlsdGVyQ2hhcnNNaW4gfHwgaXNGaWx0ZXJlZCApIHtcbiAgICAgICAgICAgIDxtYXQtc2VsZWN0aW9uLWxpc3RcbiAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwic2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCAkZXZlbnQgKVwiXG4gICAgICAgICAgICAgICAgW211bHRpcGxlXT1cIiFzaW5nbGVcIlxuICAgICAgICAgICAgICAgIGhpZGVTaW5nbGVTZWxlY3Rpb25JbmRpY2F0b3JcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBAZm9yICggb3B0aW9uIG9mIG9wdGlvbnM7IHRyYWNrIG9wdGlvbiApIHtcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1saXN0LW9wdGlvbiBbY2xhc3MuaGlkZV09XCIhbWF0Y2hlc0ZpbHRlciggb3B0aW9uIClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbi5jb2RlXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVQb3NpdGlvbj1cImJlZm9yZVwiICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cInRvb2x0aXBzID8gb3B0aW9uLmRlc2NyaXB0aW9uIDogbnVsbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwUG9zaXRpb249XCJhZnRlclwiICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZm9ybWF0T3B0aW9uKCBvcHRpb24gKVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGlzdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9tYXQtc2VsZWN0aW9uLWxpc3Q+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
329
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uci1uZ3gtY29tcG9uZW50LWxpYi9zcmMvY29tcG9uZW50cy9maWx0ZXItc2VsZWN0L2ZpbHRlci1zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnItbmd4LWNvbXBvbmVudC1saWIvc3JjL2NvbXBvbmVudHMvZmlsdGVyLXNlbGVjdC9maWx0ZXItc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQWMsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUNILGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsZUFBZSxFQUlmLE1BQU0sRUFHTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7QUFHdEQ7Ozs7Ozs7O0dBUUc7QUFjSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsUUFBUTtJQWJuRDs7UUFlYSxnQkFBVyxHQUFHLFdBQVcsQ0FBQTtRQUlPLGNBQVMsR0FBRyxDQUFDLENBQUE7UUFDWixhQUFRLEdBQUcsSUFBSSxDQUFBO1FBQ2YsWUFBTyxHQUFHLElBQUksQ0FBQTtRQUNkLFVBQUssR0FBRyxJQUFJLENBQUE7UUFDWixXQUFNLEdBQUcsSUFBSSxDQUFBO1FB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LEVBQUU7Z0JBQ0csT0FBTztzQkFBaEQsS0FBSzt1QkFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRyxLQUFLO3NCQUE5QyxLQUFLO3VCQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNHLE1BQU07c0JBQS9DLEtBQUs7dUJBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsY0FBYztzQkFBdEQsS0FBSzt1QkFBRSxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUU7Z0JBQzdCLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBaUJ1QyxPQUFPO3NCQUFwRCxTQUFTO3VCQUFFLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ2YsV0FBVztzQkFBdEMsU0FBUzt1QkFBRSxhQUFhO2dCQUNPLGVBQWU7c0JBQTlDLFNBQVM7dUJBQUUsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWwgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL3BvcnRhbFwiO1xuaW1wb3J0IHtcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgbnVtYmVyQXR0cmlidXRlLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgTWF0U2VsZWN0aW9uTGlzdENoYW5nZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9saXN0XCI7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgTnJjbEJhc2UgfSBmcm9tIFwiLi4vLi4vZGlyZWN0aXZlcy9ucmNsLmJhc2VcIjtcbmltcG9ydCB7IENvZGVEZXNjcmlwdGlvbiB9IGZyb20gXCIuLi8uLi91dGlscy9jb2RlLXRhYmxlLnV0aWxcIjtcblxuLyoqXG4gKiBBIGZpbHRlciBzZWxlY3QgY29tcG9uZW50IHRoYXQgYWxsb3dzIHVzZXJzIHRvIHNlbGVjdCBtdWx0aXBsZSBvcHRpb25zIGZyb20gYSBsaXN0LlxuICpcbiAqIEZlYXR1cmVzOlxuICogLSBNdWx0aS1zZWxlY3Qgd2l0aCBvcHRpb25hbCBtYXhpbXVtIHNlbGVjdGlvbiBsaW1pdFxuICogLSBTZWFyY2gvZmlsdGVyIGZ1bmN0aW9uYWxpdHlcbiAqIC0gVG9vbHRpcHMgZm9yIGxvbmcgZGVzY3JpcHRpb25zXG4gKiAtIFN1bW1hcnkgZGlzcGxheSBvZiBzZWxlY3RlZCBpdGVtc1xuICovXG5AQ29tcG9uZW50KCB7XG4gICAgc2VsZWN0b3I6IFwibnJjbC1maWx0ZXItc2VsZWN0XCIsXG4gICAgdGVtcGxhdGVVcmw6IFwiLi9maWx0ZXItc2VsZWN0LmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmw6IFwiLi9maWx0ZXItc2VsZWN0LmNvbXBvbmVudC5zY3NzXCIsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2NsYXNzLmhhcy12YWx1ZV0nOiBcImhhc1ZhbHVlXCIsXG4gICAgICAgICdbY2xhc3MuaXMtb3Blbl0nOiBcImlzT3BlblwiLFxuICAgICAgICAnW2NsYXNzLmlzLWNsb3NlZF0nOiBcIiFpc09wZW5cIixcbiAgICAgICAgJ1tjbGFzcy51c2UtZmlsdGVyXSc6IFwiZmlsdGVyXCIsXG4gICAgICAgICdbc3R5bGUuLS1ucmNsLWZpbHRlci1zZWxlY3Qtd2lkdGhdJzogJ3RoaXMud2lkZSA/IFwidmFyKCAtLW5yY2wtZmlsdGVyLXdpZHRoLVwiICsgdGhpcy53aWRlICsgXCIgKVwiIDogbnVsbCdcbiAgICB9XG59IClcbmV4cG9ydCBjbGFzcyBGaWx0ZXJTZWxlY3RDb21wb25lbnQgZXh0ZW5kcyBOcmNsQmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICAgIEBJbnB1dCgpIGxhYmVsXG4gICAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnRmlsdGVyLi4uJ1xuICAgIEBJbnB1dCgpIGhpbnRcbiAgICBASW5wdXQoKSBvcHRpb25zOiBDb2RlRGVzY3JpcHRpb25bXVxuICAgIEBJbnB1dCgpIHZhbHVlOiBzdHJpbmdbXVxuICAgIEBJbnB1dCggeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9ICkgc2VsZWN0TWF4ID0gMFxuICAgIEBJbnB1dCggeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSApIHRvb2x0aXBzID0gdHJ1ZVxuICAgIEBJbnB1dCggeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSApIHN1bW1hcnkgPSB0cnVlXG4gICAgQElucHV0KCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9ICkgY2xlYXIgPSB0cnVlXG4gICAgQElucHV0KCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9ICkgZmlsdGVyID0gdHJ1ZVxuICAgIEBJbnB1dCggeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9ICkgZmlsdGVyQ2hhcnNNaW4gPSAwXG4gICAgQElucHV0KCkgb3B0aW9uRm9ybWF0dGVyOiAoIG9wdGlvbjogQ29kZURlc2NyaXB0aW9uLCBwbGFpbnRleHQ6IGJvb2xlYW4gKSA9PiBzdHJpbmcgPSAoIG8sIHAgKSA9PiBvLmRlc2NyaXB0aW9uXG4gICAgQElucHV0KCkgb3ZlcmxheUNsYXNzXG4gICAgQElucHV0KCkgd2lkZSBcbiAgICBASW5wdXQoKSBmaWx0ZXJDaGFyc01pbk1lc3NhZ2UgPSAnVG9vIG1hbnkgb3B0aW9ucydcblxuICAgIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nW10+KCk7XG5cbiAgICBmbG9hdExhYmVsID0gJ2F1dG8nXG4gICAgaW5wdXRWYWx1ZVxuICAgIG9wZW5pbmdWYWx1ZVxuICAgIGlzRmlsdGVyZWQgPSBmYWxzZVxuICAgIGlzT3BlbiA9IGZhbHNlXG4gICAgaGFzVmFsdWUgPSBmYWxzZVxuICAgIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWZcbiAgICBzZWxlY3Rpb24gPSBuZXcgRm9ybUNvbnRyb2woKVxuICAgIG1hdGNoOiAoIG9wdGlvbjogQ29kZURlc2NyaXB0aW9uICkgPT4gYm9vbGVhbiA9ICggbyApID0+IHRydWVcbiAgICBjbGlja1N1YnNjcmlwdGlvblxuXG4gICAgY2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoIENoYW5nZURldGVjdG9yUmVmIClcbiAgICBvdmVybGF5ID0gaW5qZWN0KCBPdmVybGF5IClcbiAgICB2aWV3Q29udGFpbmVyUmVmID0gaW5qZWN0KCBWaWV3Q29udGFpbmVyUmVmIClcblxuICAgIEBWaWV3Q2hpbGQoICd0cmlnZ2VyJywgeyByZWFkOiBFbGVtZW50UmVmIH0gKSB0cmlnZ2VyITogRWxlbWVudFJlZlxuICAgIEBWaWV3Q2hpbGQoICdmaWx0ZXJJbnB1dCcgKSBmaWx0ZXJJbnB1dCE6IEVsZW1lbnRSZWZcbiAgICBAVmlld0NoaWxkKCAnb3ZlcmxheVRlbXBsYXRlJyApIG92ZXJsYXlUZW1wbGF0ZSE6IFRlbXBsYXRlUmVmPGFueT5cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpXG5cbiAgICAgICAgdGhpcy5jbGlja1N1YnNjcmlwdGlvbiA9IGZyb21FdmVudDxNb3VzZUV2ZW50PiggZG9jdW1lbnQsICdjbGljaycgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSggKCBldmVudDogTW91c2VFdmVudCApID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjbGlja1RhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudFxuICAgICAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJFbCA9IHRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgICAgICAgY29uc3Qgb3ZlcmxheUVsID0gdGhpcy5vdmVybGF5UmVmPy5vdmVybGF5RWxlbWVudFxuXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5sYWJlbCwndGFyZ2V0JyxjbGlja1RhcmdldClcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmxhYmVsLCd0cmlnZ2VyRWwnLHRyaWdnZXJFbD8uY29udGFpbnMoY2xpY2tUYXJnZXQpLHRyaWdnZXJFbClcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmxhYmVsLCdvdmVybGF5RWwnLG92ZXJsYXlFbD8uY29udGFpbnMoY2xpY2tUYXJnZXQpLG92ZXJsYXlFbClcblxuICAgICAgICAgICAgICAgIC8vIE9ubHkgY2xvc2UgaWYgY2xpY2sgaXMgb3V0c2lkZSBib3RoIHRyaWdnZXIgYW5kIG92ZXJsYXlcbiAgICAgICAgICAgICAgICBpZiAoIHRyaWdnZXJFbD8uY29udGFpbnMoY2xpY2tUYXJnZXQpICkgcmV0dXJuIFxuICAgICAgICAgICAgICAgIGlmICggIW92ZXJsYXlFbCApIHJldHVybiBcbiAgICAgICAgICAgICAgICBpZiAoIG92ZXJsYXlFbD8uY29udGFpbnMoY2xpY2tUYXJnZXQpICkgcmV0dXJuIFxuXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5sYWJlbCwnb3V0c2lkZSBjbGljaycpXG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRJbnB1dFRvU2VsZWN0aW9uKClcbiAgICAgICAgICAgICAgICB0aGlzLmZsb2F0TGFiZWwgPSAnYXV0bydcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKVxuICAgICAgICAgICAgfSApXG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoIGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMgKTogdm9pZCB7XG4gICAgICAgIGlmICggdGhpcy5pc09wZW4gKSByZXR1cm5cblxuICAgICAgICBpZiAoIGNoYW5nZXMub3B0aW9ucyApIHtcbiAgICAgICAgICAgIGxldCBwdiA9IEpTT04uc3RyaW5naWZ5KCBjaGFuZ2VzLm9wdGlvbnMucHJldmlvdXNWYWx1ZSApXG4gICAgICAgICAgICBsZXQgY3YgPSBKU09OLnN0cmluZ2lmeSggY2hhbmdlcy5vcHRpb25zLmN1cnJlbnRWYWx1ZSApXG4gICAgICAgICAgICBpZiAoIHB2ICE9IGN2ICkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLnNldFZhbHVlKCBudWxsIClcbiAgICAgICAgICAgICAgICB0aGlzLnNldElucHV0VG9TZWxlY3Rpb24oKVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RmlsdGVyKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggY2hhbmdlcy52YWx1ZSApIHtcbiAgICAgICAgICAgIGxldCBwdiA9IEpTT04uc3RyaW5naWZ5KCBjaGFuZ2VzLnZhbHVlLnByZXZpb3VzVmFsdWUgKVxuICAgICAgICAgICAgbGV0IGN2ID0gSlNPTi5zdHJpbmdpZnkoIGNoYW5nZXMudmFsdWUuY3VycmVudFZhbHVlIClcbiAgICAgICAgICAgIGlmICggcHYgIT0gY3YgKSB7XG4gICAgICAgICAgICAgICAgaWYgKCB0aGlzLnZhbHVlICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhc1ZhbHVlID0gdGhpcy52YWx1ZS5sZW5ndGggPiAwXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLnNldFZhbHVlKCB0aGlzLnZhbHVlIClcbiAgICAgICAgICAgICAgICAgICAgaWYgKCB0aGlzLnNlbGVjdE1heCA+IDEgJiYgdGhpcy52YWx1ZS5sZW5ndGggPj0gdGhpcy5zZWxlY3RNYXggKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5kaXNhYmxlKClcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmVuYWJsZSgpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzVmFsdWUgPSBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5zZXRWYWx1ZSggbnVsbCApXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmVuYWJsZSgpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGaWx0ZXIoKVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0SW5wdXRUb1NlbGVjdGlvbigpXG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnZGVzdHJveScsdGhpcy5pbnN0KVxuICAgICAgICB0aGlzLmNsaWNrU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpXG4gICAgfVxuXG4gICAgZ2V0IHNpbmdsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0TWF4ID09IDFcbiAgICB9XG5cbiAgICBlbWl0VmFsdWVDaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMuaGFzVmFsdWUgPSAoIHRoaXMuc2VsZWN0aW9uLnZhbHVlIHx8IFtdICkubGVuZ3RoID4gMFxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoIHRoaXMuc2VsZWN0aW9uLnZhbHVlIHx8IFtdIClcbiAgICB9XG5cbiAgICBvcGVuKCkge1xuICAgICAgICAvLyBjb25zb2xlLndhcm4oJ29wZW4nLHRoaXMuaXNPcGVuKVxuICAgICAgICBpZiAoIHRoaXMuaXNPcGVuICkgcmV0dXJuXG5cbiAgICAgICAgdGhpcy5pc09wZW4gPSB0cnVlXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKClcblxuICAgICAgICAvLyBDcmVhdGUgb3ZlcmxheVxuICAgICAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5XG4gICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8oIHRoaXMudHJpZ2dlciApXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyggW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IDBcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IDBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdIClcbiAgICAgICAgICAgIC53aXRoUHVzaCggZmFsc2UgKVxuXG4gICAgICAgIGNvbnN0IHNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXG5cbiAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSgge1xuICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneSxcbiAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5LFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgICAgICAgICAgbWF4V2lkdGg6IHRoaXMudHJpZ2dlci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoICogMixcbiAgICAgICAgICAgIG1pbldpZHRoOiB0aGlzLnRyaWdnZXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCxcbiAgICAgICAgICAgIG1heEhlaWdodDogMzAwLFxuICAgICAgICB9IClcblxuICAgICAgICAvLyBBdHRhY2ggdGVtcGxhdGVcbiAgICAgICAgY29uc3QgcG9ydGFsID0gbmV3IFRlbXBsYXRlUG9ydGFsKCB0aGlzLm92ZXJsYXlUZW1wbGF0ZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmIClcbiAgICAgICAgdGhpcy5vdmVybGF5UmVmLmF0dGFjaCggcG9ydGFsIClcblxuICAgICAgICAvLyBGb2N1cyBpbnB1dCBhZnRlciBvdmVybGF5IGlzIGF0dGFjaGVkXG4gICAgICAgIHNldFRpbWVvdXQoICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVySW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcblxuICAgICAgICAgICAgLy8gcHJldmVudCBsaXN0IGZyb20gc2Nyb2xsaW5nIHdoZW4gc2VsZWN0aW9uIGNoYW5nZXMgICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZj8ub3ZlcmxheUVsZW1lbnQuY2hpbGRyZW5bMF0uc2Nyb2xsKCAwLCAxIClcbiAgICAgICAgfSwxMDAgKVxuXG4gICAgICAgIHRoaXMub3BlbmluZ1ZhbHVlID0gSlNPTi5zdHJpbmdpZnkoIHRoaXMuc2VsZWN0aW9uLnZhbHVlIClcbiAgICB9XG5cbiAgICBjbG9zZSgpIHtcbiAgICAgICAgLy8gY29uc29sZS53YXJuKCdjbG9zZScsdGhpcy5pc09wZW4pXG4gICAgICAgIGlmICggIXRoaXMuaXNPcGVuICkgcmV0dXJuXG5cbiAgICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZVxuXG4gICAgICAgIGlmICggdGhpcy5vdmVybGF5UmVmICkge1xuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLmRpc3Bvc2UoKVxuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmID0gbnVsbFxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKClcblxuICAgICAgICBsZXQgY2xvc2luZ1ZhbHVlID0gSlNPTi5zdHJpbmdpZnkoIHRoaXMuc2VsZWN0aW9uLnZhbHVlIClcbiAgICAgICAgaWYgKCB0aGlzLm9wZW5pbmdWYWx1ZSAhPSBjbG9zaW5nVmFsdWUgKVxuICAgICAgICAgICAgdGhpcy5lbWl0VmFsdWVDaGFuZ2UoKVxuICAgIH1cblxuICAgIHNldElucHV0VG9TZWxlY3Rpb24oKSB7XG4gICAgICAgIC8vIGNvbnNvbGUud2Fybignc2V0SW5wdXRUb1NlbGVjdGlvbicpXG4gICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMuc2VsZWN0aW9uPy52YWx1ZT8ubWFwKCBjID0+IHRoaXMub3B0aW9uRm9ybWF0dGVyKCB0aGlzLm9wdGlvbkZvckNvZGUoIGMgKSwgdHJ1ZSApICkuam9pbiggJywgJyApIHx8IG51bGxcbiAgICAgICAgdGhpcy5pc0ZpbHRlcmVkID0gZmFsc2VcbiAgICB9XG5cbiAgICBvbklucHV0KCBldj8pIHtcbiAgICAgICAgdGhpcy5zZXRGaWx0ZXIoIGV2Py50YXJnZXQ/LnZhbHVlIClcbiAgICB9XG5cbiAgICBzZXRGaWx0ZXIoIHRleHQ/OiBzdHJpbmcgKSB7XG4gICAgICAgIGxldCB0ID0gdGV4dD8udHJpbSgpLnRvTG93ZXJDYXNlKClcblxuICAgICAgICBpZiAoIHQ/Lmxlbmd0aCA+PSB0aGlzLmZpbHRlckNoYXJzTWluICkge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ2ZpbHRlcmluZycpXG4gICAgICAgICAgICB0aGlzLmlzRmlsdGVyZWQgPSB0cnVlXG4gICAgICAgICAgICB0aGlzLm1hdGNoID0gKCBvcHRpb24gKSA9PiBvcHRpb24uZGVzY3JpcHRpb24udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyggdCApXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnbm90IGZpbHRlcmluZycpXG4gICAgICAgICAgICB0aGlzLmlzRmlsdGVyZWQgPSBmYWxzZVxuICAgICAgICAgICAgdGhpcy5tYXRjaCA9ICggbyApID0+IHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgfVxuXG4gICAgbWF0Y2hlc0ZpbHRlciggb3B0aW9uOiBDb2RlRGVzY3JpcHRpb24gKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hdGNoKCBvcHRpb24gKVxuICAgIH1cblxuICAgIG9uU2VsZWN0aW9uQ2hhbmdlKCBldiApIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ29uU2VsZWN0aW9uQ2hhbmdlJyx0aGlzLnNpbmdsZSlcbiAgICAgICAgaWYgKCB0aGlzLnNpbmdsZSApIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKVxuICAgICAgICAgICAgdGhpcy5zZXRJbnB1dFRvU2VsZWN0aW9uKClcbiAgICAgICAgICAgIHRoaXMuZmxvYXRMYWJlbCA9ICdhdXRvJ1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJJbnB1dD8ubmF0aXZlRWxlbWVudC5mb2N1cygpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIHRoaXMuc2VsZWN0TWF4ID4gMSApIHtcbiAgICAgICAgICAgIGlmICggdGhpcy5zZWxlY3Rpb24udmFsdWUubGVuZ3RoID49IHRoaXMuc2VsZWN0TWF4ICkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmRpc2FibGUoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb24uZW5hYmxlKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgfVxuXG4gICAgb25VcHBlclNlbGVjdGlvbkNoYW5nZSggZXY6IE1hdFNlbGVjdGlvbkxpc3RDaGFuZ2UgKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgbGV0IGNvZGVzID0gdGhpcy5zZWxlY3Rpb24udmFsdWUuZmlsdGVyKCBjID0+IGMgIT0gZXYub3B0aW9uc1sgMCBdLnZhbHVlIClcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLnNldFZhbHVlKCBjb2RlcyApXG5cbiAgICAgICAgICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UoIGV2IClcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBvbkNhbmNlbENsaWNrKCkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnb25DYW5jZWxDbGljaycpXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uLnNldFZhbHVlKCBudWxsIClcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uZW5hYmxlKClcbiAgICAgICAgdGhpcy5zZXRJbnB1dFRvU2VsZWN0aW9uKClcbiAgICAgICAgdGhpcy5lbWl0VmFsdWVDaGFuZ2UoKVxuICAgIH1cblxuICAgIG9uSW5wdXRGb2N1cygpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ29uSW5wdXRGb2N1cycpXG4gICAgICAgIHRoaXMuZmxvYXRMYWJlbCA9ICdhbHdheXMnXG5cbiAgICAgICAgaWYgKCB0aGlzLmZpbHRlciApIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnXG4gICAgICAgICAgICB0aGlzLnNldEZpbHRlcigpXG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm9wZW4oKVxuICAgIH1cblxuICAgIG9uQ2xvc2VDbGljaygpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ29uQ2xvc2VDbGljaycpXG4gICAgICAgIHRoaXMuY2xvc2UoKVxuICAgICAgICB0aGlzLnNldElucHV0VG9TZWxlY3Rpb24oKVxuICAgICAgICB0aGlzLmZsb2F0TGFiZWwgPSAnYXV0bydcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICB9XG5cbiAgICBkZXNjcmlwdGlvbkZvckNvZGUoIGNvZGU6IHN0cmluZyApOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmZpbmQoIG8gPT4gby5jb2RlID09IGNvZGUgKT8uZGVzY3JpcHRpb25cbiAgICB9XG5cbiAgICBvcHRpb25Gb3JDb2RlKCBjb2RlOiBzdHJpbmcgKTogQ29kZURlc2NyaXB0aW9uIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5maW5kKCBvID0+IG8uY29kZSA9PSBjb2RlIClcbiAgICB9XG5cbiAgICBmb3JtYXRPcHRpb24oIG9wdGlvbjogQ29kZURlc2NyaXB0aW9uICk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbkZvcm1hdHRlciggb3B0aW9uLCBmYWxzZSApXG4gICAgfVxuXG4gICAgZ2V0IGlzQ2xvc2VkTm9TZWxlY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiAhdGhpcy5pc09wZW4gJiYgISggdGhpcy5zZWxlY3Rpb24/LnZhbHVlPy5sZW5ndGggPiAwICYmIHRoaXMuY2xlYXIgKVxuICAgIH1cblxuICAgIGdldCBpc0Nsb3NlZFNlbGVjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzT3BlbiAmJiB0aGlzLnNlbGVjdGlvbj8udmFsdWU/Lmxlbmd0aCA+IDAgJiYgdGhpcy5jbGVhclxuICAgIH1cbn1cbiIsIjxtYXQtZm9ybS1maWVsZCAjdHJpZ2dlclxuICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWxcIlxuICAgIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCJcbiAgICBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCJcbj5cbiAgICBAaWYgKCBsYWJlbCApIHtcbiAgICAgICAgPG1hdC1sYWJlbD57eyBsYWJlbCB9fTwvbWF0LWxhYmVsPlxuICAgIH1cblxuICAgIDxpbnB1dCBjbGFzcz1cImZpbHRlci1pbnB1dFwiICNmaWx0ZXJJbnB1dFxuICAgICAgICBtYXRJbnB1dCBcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgXG4gICAgICAgIFt2YWx1ZV09XCJpbnB1dFZhbHVlXCJcbiAgICAgICAgKGlucHV0KT1cIm9uSW5wdXQoICRldmVudCApXCJcbiAgICAgICAgKGtleWRvd24uZXNjYXBlKT1cImNsb3NlKClcIlxuICAgICAgICAoZm9jdXMpPVwib25JbnB1dEZvY3VzKClcIlxuICAgICAgICBbbWF0VG9vbHRpcF09XCJpbnB1dFZhbHVlXCJcbiAgICAgICAgW3JlYWRvbmx5XT1cIiFmaWx0ZXJcIlxuICAgID5cbjwvbWF0LWZvcm0tZmllbGQ+ICAgICAgICBcblxuPG5yY2wtYnV0dG9uIHRlcnRpYXJ5IG1hdFN1ZmZpeCBbY2xhc3MuaGlkZV09XCIhaXNPcGVuXCJcbiAgICBpY29uPVwiYXJyb3dfZHJvcF91cFwiXG4gICAgKGNsaWNrKT1cIm9uQ2xvc2VDbGljaygpXCJcbj48L25yY2wtYnV0dG9uPlxuXG48bnJjbC1idXR0b24gdGVydGlhcnkgbWF0U3VmZml4IFtjbGFzcy5oaWRlXT1cIiFpc0Nsb3NlZFNlbGVjdGlvblwiXG4gICAgaWNvbj1cImNsb3NlXCJcbiAgICAoY2xpY2spPVwib25DYW5jZWxDbGljaygpXCJcbj48L25yY2wtYnV0dG9uPlxuXG48bnJjbC1idXR0b24gdGVydGlhcnkgbWF0U3VmZml4IFtjbGFzcy5oaWRlXT1cIiFpc0Nsb3NlZE5vU2VsZWN0aW9uXCJcbiAgICBpY29uPVwiYXJyb3dfZHJvcF9kb3duXCJcbiAgICAoY2xpY2spPVwib25JbnB1dEZvY3VzKClcIlxuPjwvbnJjbC1idXR0b24+XG5cbjxuZy10ZW1wbGF0ZSAjb3ZlcmxheVRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJucmNsIGZpbHRlci1zZWxlY3Qtb3B0aW9uc1wiIFtjbGFzcy5tdWx0aXBsZV09XCIhc2luZ2xlXCIgW2NsYXNzLnNpbmdsZV09XCJzaW5nbGVcIiBbY2xhc3NdPVwib3ZlcmxheUNsYXNzXCI+XG4gICAgICAgIEBpZiAoICFpc0ZpbHRlcmVkICYmICggIXNpbmdsZSB8fCBmaWx0ZXJDaGFyc01pbiApICYmIHN1bW1hcnkgKSB7XG4gICAgICAgICAgICBAaWYgKCAhc2VsZWN0aW9uPy52YWx1ZT8ubGVuZ3RoICYmICggaGludCB8fCBmaWx0ZXJDaGFyc01pbiApICkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Rpb24tb3ZlcnZpZXdcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmICggaGludCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdW1tYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgaGludCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICBcblxuICAgICAgICAgICAgICAgICAgICBAaWYgKCBmaWx0ZXJDaGFyc01pbiAmJiBmaWx0ZXJDaGFyc01pbk1lc3NhZ2UgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VtbWFyeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGZpbHRlckNoYXJzTWluTWVzc2FnZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAoIHNlbGVjdGlvbj8udmFsdWU/Lmxlbmd0aCA+IDAgJiYgc2VsZWN0aW9uPy52YWx1ZT8ubGVuZ3RoIDwgb3B0aW9ucz8ubGVuZ3RoICkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Rpb24tb3ZlcnZpZXdcIj5cbiAgICAgICAgICAgICAgICAgICAgQGlmICggIXNpbmdsZSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdW1tYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+U2VsZWN0ZWQge3sgc2VsZWN0aW9uPy52YWx1ZT8ubGVuZ3RoIH19IG9mIHt7IG9wdGlvbnM/Lmxlbmd0aCB9fSBvcHRpb25zPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdGlvbi1saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uVXBwZXJTZWxlY3Rpb25DaGFuZ2UoICRldmVudCApXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoIGNvZGUgb2Ygc2VsZWN0aW9uPy52YWx1ZTsgdHJhY2sgY29kZSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxpc3Qtb3B0aW9uIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY29kZVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVQb3NpdGlvbj1cImJlZm9yZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cInRvb2x0aXBzID8gZGVzY3JpcHRpb25Gb3JDb2RlKCBjb2RlICkgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWZ0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJmb3JtYXRPcHRpb24oIG9wdGlvbkZvckNvZGUoIGNvZGUgKSApXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxpc3Qtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Rpb24tbGlzdD5cblxuICAgICAgICAgICAgICAgICAgICBAaWYgKCBoaW50ICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1bW1hcnlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBoaW50IH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgIFxuXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIGZpbHRlckNoYXJzTWluICYmIGZpbHRlckNoYXJzTWluTWVzc2FnZSApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdW1tYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZmlsdGVyQ2hhcnNNaW5NZXNzYWdlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmICggc2VsZWN0aW9uPy52YWx1ZT8ubGVuZ3RoID09IG9wdGlvbnM/Lmxlbmd0aCApIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0aW9uLW92ZXJ2aWV3XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdW1tYXJ5XCI+QWxsIG9wdGlvbnMgc2VsZWN0ZWQ8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoICFmaWx0ZXJDaGFyc01pbiB8fCBpc0ZpbHRlcmVkICkge1xuICAgICAgICAgICAgPG1hdC1zZWxlY3Rpb24tbGlzdFxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWxlY3Rpb25cIlxuICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoICRldmVudCApXCJcbiAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwiIXNpbmdsZVwiXG4gICAgICAgICAgICAgICAgaGlkZVNpbmdsZVNlbGVjdGlvbkluZGljYXRvclxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBmb3IgKCBvcHRpb24gb2Ygb3B0aW9uczsgdHJhY2sgb3B0aW9uICkge1xuICAgICAgICAgICAgICAgICAgICA8bWF0LWxpc3Qtb3B0aW9uIFtjbGFzcy5oaWRlXT1cIiFtYXRjaGVzRmlsdGVyKCBvcHRpb24gKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uLmNvZGVcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZVBvc2l0aW9uPVwiYmVmb3JlXCIgICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwidG9vbHRpcHMgPyBvcHRpb24uZGVzY3JpcHRpb24gOiBudWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXBQb3NpdGlvbj1cImFmdGVyXCIgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJmb3JtYXRPcHRpb24oIG9wdGlvbiApXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1saXN0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L21hdC1zZWxlY3Rpb24tbGlzdD5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==