@rxap/layout 16.0.0-dev.4 → 16.0.0-dev.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/CHANGELOG.md +263 -0
  2. package/LICENSE +621 -0
  3. package/LICENSE.md +621 -0
  4. package/README.md +1 -1
  5. package/esm2022/index.mjs +2 -6
  6. package/esm2022/lib/app-url.service.mjs +66 -0
  7. package/esm2022/lib/footer/footer.component.mjs +3 -3
  8. package/esm2022/lib/header/apps-button/apps-button.component.mjs +29 -46
  9. package/esm2022/lib/header/header.component.mjs +44 -66
  10. package/esm2022/lib/header/language-selector/language-selector.component.mjs +13 -72
  11. package/esm2022/lib/header/navigation-progress-bar/navigation-progress-bar.component.mjs +6 -2
  12. package/esm2022/lib/header/reset-button/reset-button.component.mjs +3 -3
  13. package/esm2022/lib/header/settings-button/settings-button.component.mjs +87 -0
  14. package/esm2022/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.mjs +19 -18
  15. package/esm2022/lib/header/sign-out/sign-out.component.mjs +14 -18
  16. package/esm2022/lib/header/user-profile-icon/user-profile-icon.component.mjs +31 -28
  17. package/esm2022/lib/layout/layout.component.mjs +68 -23
  18. package/esm2022/lib/layout/layout.component.service.mjs +54 -20
  19. package/esm2022/lib/navigation/navigation-item/navigation-item.component.mjs +50 -102
  20. package/esm2022/lib/navigation/navigation.component.mjs +26 -31
  21. package/esm2022/lib/sidenav/sidenav.component.mjs +3 -3
  22. package/esm2022/lib/sidenav/version/version.component.mjs +2 -8
  23. package/esm2022/lib/toggle-window-sidenav-button/toggle-window-sidenav-button.component.mjs +3 -3
  24. package/esm2022/lib/types.mjs +1 -1
  25. package/esm2022/lib/window-container-sidenav/window-container-sidenav.component.mjs +6 -7
  26. package/fesm2022/rxap-layout.mjs +710 -722
  27. package/fesm2022/rxap-layout.mjs.map +1 -1
  28. package/index.d.ts +1 -3
  29. package/lib/app-url.service.d.ts +26 -0
  30. package/lib/header/apps-button/apps-button.component.d.ts +12 -20
  31. package/lib/header/header.component.d.ts +9 -19
  32. package/lib/header/language-selector/language-selector.component.d.ts +1 -16
  33. package/lib/header/settings-button/settings-button.component.d.ts +39 -0
  34. package/lib/header/sidenav-toggle-button/sidenav-toggle-button.component.d.ts +6 -3
  35. package/lib/header/sign-out/sign-out.component.d.ts +4 -4
  36. package/lib/header/user-profile-icon/user-profile-icon.component.d.ts +13 -9
  37. package/lib/layout/layout.component.d.ts +21 -5
  38. package/lib/layout/layout.component.service.d.ts +15 -9
  39. package/lib/navigation/navigation-item/navigation-item.component.d.ts +10 -17
  40. package/lib/navigation/navigation.component.d.ts +5 -5
  41. package/lib/types.d.ts +3 -2
  42. package/package.json +93 -41
  43. package/theme.css +1 -0
  44. package/esm2022/lib/layout/layout.component.module.mjs +0 -30
  45. package/esm2022/lib/sidenav-content/sidenav-content.component.mjs +0 -27
  46. package/esm2022/lib/sidenav-content/sidenav-content.component.service.mjs +0 -36
  47. package/lib/layout/layout.component.module.d.ts +0 -10
  48. package/lib/sidenav-content/sidenav-content.component.d.ts +0 -10
  49. package/lib/sidenav-content/sidenav-content.component.service.d.ts +0 -15
  50. package/src/lib/header/apps-button/_apps-button.component.theme.scss +0 -45
  51. package/src/lib/navigation/_navigation.component.theme.scss +0 -33
  52. package/src/lib/navigation/navigation-item/_navigation-item.component.theme.scss +0 -45
  53. package/src/lib/sidenav/_sidenav.component.theme.scss +0 -65
  54. package/src/lib/toggle-window-sidenav-button/_toggle-window-sidenav-button.component.theme.scss +0 -15
@@ -1,29 +1,31 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { ChangeDetectionStrategy, Component, ElementRef, HostBinding, HostListener, Inject, Input, Renderer2, TemplateRef, ViewChild, ViewContainerRef, ViewEncapsulation, } from '@angular/core';
3
- import { DebounceCall, Required, } from '@rxap/utilities';
1
+ import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, HostBinding, Inject, Input, Renderer2, signal, ViewChild, ViewContainerRef, ViewEncapsulation, } from '@angular/core';
4
2
  import { animate, style, transition, trigger, } from '@angular/animations';
5
3
  import { NavigationEnd, Router, RouterLink, RouterLinkActive, } from '@angular/router';
6
- import { Subscription } from 'rxjs';
7
- import { delay, distinctUntilChanged, filter, skip, startWith, tap, } from 'rxjs/operators';
4
+ import { debounceTime, Subscription, } from 'rxjs';
5
+ import { filter, startWith, tap, } from 'rxjs/operators';
6
+ import { Overlay } from '@angular/cdk/overlay';
8
7
  import { SidenavComponentService } from '../../sidenav/sidenav.component.service';
9
- import { Overlay, } from '@angular/cdk/overlay';
10
- import { TemplatePortal } from '@angular/cdk/portal';
11
- import { FlexModule } from '@angular/flex-layout/flex';
12
8
  import { NavigationComponent } from '../navigation.component';
9
+ import { MatDividerModule } from '@angular/material/divider';
13
10
  import { IconDirective } from '@rxap/material-directives/icon';
14
11
  import { MatIconModule } from '@angular/material/icon';
15
- import { AsyncPipe, NgFor, NgIf, } from '@angular/common';
16
- import { MatTooltipModule } from '@angular/material/tooltip';
17
12
  import { MatRippleModule } from '@angular/material/core';
13
+ import { NgClass, NgIf, } from '@angular/common';
18
14
  import * as i0 from "@angular/core";
19
15
  import * as i1 from "@angular/material/core";
20
- import * as i2 from "@angular/material/tooltip";
21
- import * as i3 from "@angular/material/icon";
22
- import * as i4 from "@angular/flex-layout/flex";
23
- import * as i5 from "@angular/router";
24
- import * as i6 from "../../sidenav/sidenav.component.service";
25
- import * as i7 from "@angular/cdk/overlay";
16
+ import * as i2 from "@angular/material/icon";
17
+ import * as i3 from "@angular/material/divider";
18
+ import * as i4 from "@angular/router";
19
+ import * as i5 from "../../sidenav/sidenav.component.service";
20
+ import * as i6 from "@angular/cdk/overlay";
26
21
  export class NavigationItemComponent {
22
+ get isActive() {
23
+ return this._isActive;
24
+ }
25
+ set isActive(value) {
26
+ this._isActive = value;
27
+ this.active.set(value);
28
+ }
27
29
  constructor(router, sidenav, elementRef, renderer, overlay, viewContainerRef) {
28
30
  this.router = router;
29
31
  this.sidenav = sidenav;
@@ -31,14 +33,11 @@ export class NavigationItemComponent {
31
33
  this.renderer = renderer;
32
34
  this.overlay = overlay;
33
35
  this.viewContainerRef = viewContainerRef;
34
- this.children = null;
35
36
  this.level = 0;
36
- this.isActive = false;
37
+ this._isActive = false;
38
+ this.children = null;
39
+ this.active = signal(false);
37
40
  this._subscription = new Subscription();
38
- /**
39
- * indicates the mouse is over the
40
- */
41
- this.lockeOverlay = false;
42
41
  }
43
42
  ngOnChanges(changes) {
44
43
  if (changes['item']) {
@@ -49,12 +48,20 @@ export class NavigationItemComponent {
49
48
  }
50
49
  ngAfterViewInit() {
51
50
  this._subscription.add(this.router.events
52
- .pipe(filter((event) => event instanceof NavigationEnd), startWith(true), delay(100), tap(() => {
53
- if (this.routerLinkActive.isActive) {
54
- if (!this.sidenav.collapsed$.value) {
55
- // only close the overlay if sidenav collapsed
56
- this._overlayRef?.detach();
51
+ .pipe(filter((event) => event instanceof NavigationEnd), debounceTime(100), startWith(true), tap(() => {
52
+ let isActive = true;
53
+ const urlParts = this.router.url.split('/');
54
+ if (urlParts[0] === '') {
55
+ urlParts[0] = '/';
56
+ }
57
+ for (let i = 0; i < this.item.routerLink.length; i++) {
58
+ if (urlParts[i] !== this.item.routerLink[i]) {
59
+ isActive = false;
60
+ break;
57
61
  }
62
+ }
63
+ this.isActive = isActive;
64
+ if (isActive) {
58
65
  this.renderer.addClass(this.elementRef.nativeElement, 'active');
59
66
  }
60
67
  else {
@@ -63,45 +70,8 @@ export class NavigationItemComponent {
63
70
  }))
64
71
  .subscribe());
65
72
  }
66
- ngOnInit() {
67
- // detach the navigation overlay if the sidenav collapsed
68
- // state is changed
69
- this._subscription.add(this.sidenav.collapsed$
70
- .pipe(skip(1), distinctUntilChanged(), tap(() => this._overlayRef?.detach()))
71
- .subscribe());
72
- }
73
73
  ngOnDestroy() {
74
74
  this._subscription?.unsubscribe();
75
- this._overlayRef?.dispose();
76
- }
77
- onMouseenter() {
78
- if (this.children) {
79
- if (!this.routerLinkActive.isActive || this.sidenav.collapsed$.value) {
80
- if (!this._overlayRef) {
81
- this._overlayRef = this.overlay.create({
82
- positionStrategy: this.overlay
83
- .position()
84
- .flexibleConnectedTo(this.elementRef)
85
- .withPositions([
86
- {
87
- originY: 'top',
88
- originX: 'end',
89
- overlayY: 'top',
90
- overlayX: 'start',
91
- },
92
- ]),
93
- });
94
- }
95
- if (!this._overlayRef.hasAttached()) {
96
- this._embeddedViewRef = this._overlayRef.attach(new TemplatePortal(this._navigationOverlay, this.viewContainerRef));
97
- }
98
- }
99
- }
100
- }
101
- onMouseleave() {
102
- if (!this.lockeOverlay) {
103
- this._overlayRef?.detach();
104
- }
105
75
  }
106
76
  // region type save item property
107
77
  // required to check the type of the item property in the ngFor loop
@@ -118,7 +88,7 @@ export class NavigationItemComponent {
118
88
  return item;
119
89
  }
120
90
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: NavigationItemComponent, deps: [{ token: Router }, { token: SidenavComponentService }, { token: ElementRef }, { token: Renderer2 }, { token: Overlay }, { token: ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
121
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: NavigationItemComponent, isStandalone: true, selector: "li[rxap-navigation-item]", inputs: { item: "item", level: "level" }, host: { listeners: { "mouseenter": "onMouseenter()", "mouseleave": "onMouseleave()" }, properties: { "class.active": "this.isActive" }, classAttribute: "rxap-navigation-item" }, viewQueries: [{ propertyName: "routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true, static: true }, { propertyName: "_navigationOverlay", first: true, predicate: ["navigationOverlay"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<a [matTooltipDisabled]=\"(sidenav.collapsed$ | async) === false\"\n [matTooltip]=\"item.label\"\n [routerLink]=\"item.routerLink\"\n class=\"navigation-link mat-body-2 mat-body-strong navigation-level-{{level}}\"\n matRipple routerLinkActive=\"link-active\">\n <mat-icon *ngIf=\"item.icon\" [rxapIcon]=\"item.icon\" class=\"icon\"></mat-icon>\n <ng-template [ngIf]=\"(sidenav.collapsed$ | async) === false\">\n <span class=\"label\">{{ item.label }}</span>\n </ng-template>\n</a>\n\n<ul *ngIf=\"routerLinkActive.isActive && (sidenav.collapsed$ | async) === false && children\"\n [@sub-nav]\n [items]=\"children\"\n [level]=\"level + 1\"\n class=\"sub-items\"\n fxFlex=\"nogrow\"\n rxap-navigation\n>\n</ul>\n\n<ng-template #navigationOverlay>\n <div (mouseenter)=\"lockeOverlay = true\"\n (mouseleave)=\"lockeOverlay = false; onMouseleave()\" class=\"navigation-overlay-container mat-elevation-z1\">\n <ul>\n <li *ngFor=\"let child of children\">\n <a *ngIf=\"isNavigationItem(child)\" [routerLink]=\"asNavigationItem(child).routerLink\"\n class=\"navigation-link mat-subtitle-2 mat-body-strong\" matRipple>\n <mat-icon *ngIf=\"asNavigationItem(child).icon\" [rxapIcon]=\"asNavigationItem(child).icon\"\n class=\"icon\"></mat-icon>\n <span class=\"label\">{{ asNavigationItem(child).label }}</span>\n </a>\n </li>\n </ul>\n </div>\n</ng-template>\n", styles: [".rxap-navigation-item,.navigation-overlay-container{display:flex;flex-direction:column;min-height:48px}.rxap-navigation-item .navigation-link,.navigation-overlay-container .navigation-link{display:flex;flex-direction:row;align-items:center;text-decoration:none;height:48px}.rxap-navigation-item .navigation-link .icon,.navigation-overlay-container .navigation-link .icon{margin:0 16px}.rxap-navigation-item .navigation-link .label,.navigation-overlay-container .navigation-link .label{padding-right:12px}.rxap-navigation-item .navigation-link.navigation-level-1,.navigation-overlay-container .navigation-link.navigation-level-1{padding-left:52px}.rxap-navigation-item .navigation-link.navigation-level-1 .icon,.navigation-overlay-container .navigation-link.navigation-level-1 .icon{padding-left:0}.rxap-navigation-item .navigation-link.navigation-level-2,.navigation-overlay-container .navigation-link.navigation-level-2{padding-left:88px}.rxap-navigation-item .navigation-link.navigation-level-2 .icon,.navigation-overlay-container .navigation-link.navigation-level-2 .icon{padding-left:0}.navigation-overlay-container{padding:0 16px}.navigation-overlay-container ul{list-style-type:none;margin:0;padding:0}.navigation-overlay-container ul .navigation-link .label{padding-right:0}.navigation-overlay-container ul .navigation-link .icon{margin-left:0}\n"], dependencies: [{ kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "ngmodule", type: MatRippleModule }, { kind: "directive", type: i1.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: IconDirective, selector: "mat-icon[rxapIcon]", inputs: ["rxapIcon"] }, { kind: "component", type: NavigationComponent, selector: "ul[rxap-navigation]", inputs: ["root", "items", "level"] }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], animations: [
91
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: NavigationItemComponent, isStandalone: true, selector: "li[rxap-navigation-item]", inputs: { level: "level", item: "item" }, host: { properties: { "class.active": "this.isActive" } }, viewQueries: [{ propertyName: "routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div [ngClass]=\"{\n 'border-l-4 text-accent-400 border-accent-600': active(),\n }\">\n <a [routerLink]=\"item.routerLink\"\n class=\"h-12 pl-4 pr-5 flex flex-row justify-between items-center gap-x-4\"\n matRipple\n routerLinkActive\n\n >\n <span\n [ngClass]=\"{\n 'pl-0': level === 0,\n 'pl-4': level === 1,\n 'pl-8': level === 2,\n 'pl-12': level === 3\n }\"\n class=\"grow whitespace-nowrap\"\n >\n {{ item.label }}\n </span>\n <mat-icon *ngIf=\"item.icon\" [rxapIcon]=\"item.icon\"></mat-icon>\n </a>\n\n <ng-container *ngIf=\"item.children?.length && active()\">\n\n <mat-divider></mat-divider>\n\n <ul [@sub-nav]\n [items]=\"children ?? []\"\n [level]=\"level + 1\"\n rxap-navigation\n >\n </ul>\n\n <mat-divider></mat-divider>\n\n </ng-container>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return RouterLinkActive; }), selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i0.forwardRef(function () { return RouterLink; }), selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i0.forwardRef(function () { return NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatRippleModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i1.MatRipple; }), selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatIconModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i2.MatIcon; }), selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i0.forwardRef(function () { return IconDirective; }), selector: "mat-icon[rxapIcon]", inputs: ["rxapIcon"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatDividerModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i3.MatDivider; }), selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i0.forwardRef(function () { return NavigationComponent; }), selector: "ul[rxap-navigation]", inputs: ["items", "level", "root"] }, { kind: "directive", type: i0.forwardRef(function () { return NgClass; }), selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [
122
92
  trigger('sub-nav', [
123
93
  transition(':enter', [
124
94
  style({
@@ -136,21 +106,9 @@ export class NavigationItemComponent {
136
106
  ]),
137
107
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
138
108
  }
139
- __decorate([
140
- Required,
141
- __metadata("design:type", Object)
142
- ], NavigationItemComponent.prototype, "item", void 0);
143
- __decorate([
144
- DebounceCall(100),
145
- __metadata("design:type", Function),
146
- __metadata("design:paramtypes", []),
147
- __metadata("design:returntype", void 0)
148
- ], NavigationItemComponent.prototype, "onMouseleave", null);
149
109
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: NavigationItemComponent, decorators: [{
150
110
  type: Component,
151
- args: [{ selector: 'li[rxap-navigation-item]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
152
- class: 'rxap-navigation-item',
153
- }, animations: [
111
+ args: [{ selector: 'li[rxap-navigation-item]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, animations: [
154
112
  trigger('sub-nav', [
155
113
  transition(':enter', [
156
114
  style({
@@ -168,21 +126,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImpor
168
126
  ]),
169
127
  ], standalone: true, imports: [
170
128
  RouterLinkActive,
171
- MatRippleModule,
172
129
  RouterLink,
173
- MatTooltipModule,
174
130
  NgIf,
131
+ MatRippleModule,
175
132
  MatIconModule,
176
133
  IconDirective,
177
- NavigationComponent,
178
- FlexModule,
179
- NgFor,
180
- AsyncPipe,
181
- ], template: "<a [matTooltipDisabled]=\"(sidenav.collapsed$ | async) === false\"\n [matTooltip]=\"item.label\"\n [routerLink]=\"item.routerLink\"\n class=\"navigation-link mat-body-2 mat-body-strong navigation-level-{{level}}\"\n matRipple routerLinkActive=\"link-active\">\n <mat-icon *ngIf=\"item.icon\" [rxapIcon]=\"item.icon\" class=\"icon\"></mat-icon>\n <ng-template [ngIf]=\"(sidenav.collapsed$ | async) === false\">\n <span class=\"label\">{{ item.label }}</span>\n </ng-template>\n</a>\n\n<ul *ngIf=\"routerLinkActive.isActive && (sidenav.collapsed$ | async) === false && children\"\n [@sub-nav]\n [items]=\"children\"\n [level]=\"level + 1\"\n class=\"sub-items\"\n fxFlex=\"nogrow\"\n rxap-navigation\n>\n</ul>\n\n<ng-template #navigationOverlay>\n <div (mouseenter)=\"lockeOverlay = true\"\n (mouseleave)=\"lockeOverlay = false; onMouseleave()\" class=\"navigation-overlay-container mat-elevation-z1\">\n <ul>\n <li *ngFor=\"let child of children\">\n <a *ngIf=\"isNavigationItem(child)\" [routerLink]=\"asNavigationItem(child).routerLink\"\n class=\"navigation-link mat-subtitle-2 mat-body-strong\" matRipple>\n <mat-icon *ngIf=\"asNavigationItem(child).icon\" [rxapIcon]=\"asNavigationItem(child).icon\"\n class=\"icon\"></mat-icon>\n <span class=\"label\">{{ asNavigationItem(child).label }}</span>\n </a>\n </li>\n </ul>\n </div>\n</ng-template>\n", styles: [".rxap-navigation-item,.navigation-overlay-container{display:flex;flex-direction:column;min-height:48px}.rxap-navigation-item .navigation-link,.navigation-overlay-container .navigation-link{display:flex;flex-direction:row;align-items:center;text-decoration:none;height:48px}.rxap-navigation-item .navigation-link .icon,.navigation-overlay-container .navigation-link .icon{margin:0 16px}.rxap-navigation-item .navigation-link .label,.navigation-overlay-container .navigation-link .label{padding-right:12px}.rxap-navigation-item .navigation-link.navigation-level-1,.navigation-overlay-container .navigation-link.navigation-level-1{padding-left:52px}.rxap-navigation-item .navigation-link.navigation-level-1 .icon,.navigation-overlay-container .navigation-link.navigation-level-1 .icon{padding-left:0}.rxap-navigation-item .navigation-link.navigation-level-2,.navigation-overlay-container .navigation-link.navigation-level-2{padding-left:88px}.rxap-navigation-item .navigation-link.navigation-level-2 .icon,.navigation-overlay-container .navigation-link.navigation-level-2 .icon{padding-left:0}.navigation-overlay-container{padding:0 16px}.navigation-overlay-container ul{list-style-type:none;margin:0;padding:0}.navigation-overlay-container ul .navigation-link .label{padding-right:0}.navigation-overlay-container ul .navigation-link .icon{margin-left:0}\n"] }]
182
- }], ctorParameters: function () { return [{ type: i5.Router, decorators: [{
134
+ MatDividerModule,
135
+ forwardRef(() => NavigationComponent),
136
+ NgClass,
137
+ ], template: "<div [ngClass]=\"{\n 'border-l-4 text-accent-400 border-accent-600': active(),\n }\">\n <a [routerLink]=\"item.routerLink\"\n class=\"h-12 pl-4 pr-5 flex flex-row justify-between items-center gap-x-4\"\n matRipple\n routerLinkActive\n\n >\n <span\n [ngClass]=\"{\n 'pl-0': level === 0,\n 'pl-4': level === 1,\n 'pl-8': level === 2,\n 'pl-12': level === 3\n }\"\n class=\"grow whitespace-nowrap\"\n >\n {{ item.label }}\n </span>\n <mat-icon *ngIf=\"item.icon\" [rxapIcon]=\"item.icon\"></mat-icon>\n </a>\n\n <ng-container *ngIf=\"item.children?.length && active()\">\n\n <mat-divider></mat-divider>\n\n <ul [@sub-nav]\n [items]=\"children ?? []\"\n [level]=\"level + 1\"\n rxap-navigation\n >\n </ul>\n\n <mat-divider></mat-divider>\n\n </ng-container>\n</div>\n" }]
138
+ }], ctorParameters: function () { return [{ type: i4.Router, decorators: [{
183
139
  type: Inject,
184
140
  args: [Router]
185
- }] }, { type: i6.SidenavComponentService, decorators: [{
141
+ }] }, { type: i5.SidenavComponentService, decorators: [{
186
142
  type: Inject,
187
143
  args: [SidenavComponentService]
188
144
  }] }, { type: i0.ElementRef, decorators: [{
@@ -191,30 +147,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImpor
191
147
  }] }, { type: i0.Renderer2, decorators: [{
192
148
  type: Inject,
193
149
  args: [Renderer2]
194
- }] }, { type: i7.Overlay, decorators: [{
150
+ }] }, { type: i6.Overlay, decorators: [{
195
151
  type: Inject,
196
152
  args: [Overlay]
197
153
  }] }, { type: i0.ViewContainerRef, decorators: [{
198
154
  type: Inject,
199
155
  args: [ViewContainerRef]
200
- }] }]; }, propDecorators: { routerLinkActive: [{
156
+ }] }]; }, propDecorators: { level: [{
157
+ type: Input
158
+ }], routerLinkActive: [{
201
159
  type: ViewChild,
202
160
  args: [RouterLinkActive, { static: true }]
203
161
  }], item: [{
204
- type: Input
205
- }], level: [{
206
- type: Input
162
+ type: Input,
163
+ args: [{ required: true }]
207
164
  }], isActive: [{
208
165
  type: HostBinding,
209
166
  args: ['class.active']
210
- }], _navigationOverlay: [{
211
- type: ViewChild,
212
- args: ['navigationOverlay']
213
- }], onMouseenter: [{
214
- type: HostListener,
215
- args: ['mouseenter']
216
- }], onMouseleave: [{
217
- type: HostListener,
218
- args: ['mouseleave']
219
167
  }] } });
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWl0ZW0vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWl0ZW0vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBRVYsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUlMLFNBQVMsRUFFVCxXQUFXLEVBQ1gsU0FBUyxFQUNULGdCQUFnQixFQUNoQixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLFlBQVksRUFDWixRQUFRLEdBQ1QsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxHQUNSLE1BQU0scUJBQXFCLENBQUM7QUFNN0IsT0FBTyxFQUNMLGFBQWEsRUFDYixNQUFNLEVBQ04sVUFBVSxFQUNWLGdCQUFnQixHQUNqQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUNMLEtBQUssRUFDTCxvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbEYsT0FBTyxFQUNMLE9BQU8sR0FF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QkFDM0IsQ0FBQzt5QkFDSCxDQUFDO3FCQUNILGNBQ1csSUFBSSxXQUNQO3dCQUNQLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixVQUFVO3dCQUNWLGdCQUFnQjt3QkFDaEIsSUFBSTt3QkFDSixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsbUJBQW1CO3dCQUNuQixVQUFVO3dCQUNWLEtBQUs7d0JBQ0wsU0FBUztxQkFDVjs7MEJBaUNFLE1BQU07MkJBQUMsTUFBTTs7MEJBRWIsTUFBTTsyQkFBQyx1QkFBdUI7OzBCQUU5QixNQUFNOzJCQUFDLFVBQVU7OzBCQUVqQixNQUFNOzJCQUFDLFNBQVM7OzBCQUVoQixNQUFNOzJCQUFDLE9BQU87OzBCQUVkLE1BQU07MkJBQUMsZ0JBQWdCOzRDQXBDbkIsZ0JBQWdCO3NCQUR0QixTQUFTO3VCQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFLdEMsSUFBSTtzQkFGVixLQUFLO2dCQUtDLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxRQUFRO3NCQURkLFdBQVc7dUJBQUMsY0FBYztnQkFJbkIsa0JBQWtCO3NCQUR6QixTQUFTO3VCQUFDLG1CQUFtQjtnQkFtRnZCLFlBQVk7c0JBRGxCLFlBQVk7dUJBQUMsWUFBWTtnQkE4Qm5CLFlBQVk7c0JBRmxCLFlBQVk7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEVtYmVkZGVkVmlld1JlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBEZWJvdW5jZUNhbGwsXG4gIFJlcXVpcmVkLFxufSBmcm9tICdAcnhhcC91dGlsaXRpZXMnO1xuaW1wb3J0IHtcbiAgYW5pbWF0ZSxcbiAgc3R5bGUsXG4gIHRyYW5zaXRpb24sXG4gIHRyaWdnZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgTmF2aWdhdGlvbixcbiAgTmF2aWdhdGlvbkRpdmlkZXJJdGVtLFxuICBOYXZpZ2F0aW9uSXRlbSxcbn0gZnJvbSAnLi4vbmF2aWdhdGlvbi1pdGVtJztcbmltcG9ydCB7XG4gIE5hdmlnYXRpb25FbmQsXG4gIFJvdXRlcixcbiAgUm91dGVyTGluayxcbiAgUm91dGVyTGlua0FjdGl2ZSxcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGVsYXksXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaWx0ZXIsXG4gIHNraXAsXG4gIHN0YXJ0V2l0aCxcbiAgdGFwLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTaWRlbmF2Q29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uLy4uL3NpZGVuYXYvc2lkZW5hdi5jb21wb25lbnQuc2VydmljZSc7XG5pbXBvcnQge1xuICBPdmVybGF5LFxuICBPdmVybGF5UmVmLFxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgRmxleE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2ZsZXgtbGF5b3V0L2ZsZXgnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL25hdmlnYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEljb25EaXJlY3RpdmUgfSBmcm9tICdAcnhhcC9tYXRlcmlhbC1kaXJlY3RpdmVzL2ljb24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHtcbiAgQXN5bmNQaXBlLFxuICBOZ0ZvcixcbiAgTmdJZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdFRvb2x0aXBNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJztcbmltcG9ydCB7IE1hdFJpcHBsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaVtyeGFwLW5hdmlnYXRpb24taXRlbV0nLFxuICB0ZW1wbGF0ZVVybDogJy4vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbICcuL25hdmlnYXRpb24taXRlbS5jb21wb25lbnQuc2NzcycgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taG9zdC1tZXRhZGF0YS1wcm9wZXJ0eVxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdyeGFwLW5hdmlnYXRpb24taXRlbScsXG4gIH0sXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdzdWItbmF2JywgW1xuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICAgICAgICBoZWlnaHQ6ICcwJyxcbiAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgIH0pLFxuICAgICAgICBhbmltYXRlKDE1MCwgc3R5bGUoeyBoZWlnaHQ6ICcqJyB9KSksXG4gICAgICBdKSxcbiAgICAgIHRyYW5zaXRpb24oJzpsZWF2ZScsIFtcbiAgICAgICAgc3R5bGUoeyBvdmVyZmxvdzogJ2hpZGRlbicgfSksXG4gICAgICAgIGFuaW1hdGUoMzAwLCBzdHlsZSh7IGhlaWdodDogJzAnIH0pKSxcbiAgICAgICAgc3R5bGUoeyBkaXNwbGF5OiAnbm9uZScgfSksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIFJvdXRlckxpbmtBY3RpdmUsXG4gICAgTWF0UmlwcGxlTW9kdWxlLFxuICAgIFJvdXRlckxpbmssXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcbiAgICBOZ0lmLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgSWNvbkRpcmVjdGl2ZSxcbiAgICBOYXZpZ2F0aW9uQ29tcG9uZW50LFxuICAgIEZsZXhNb2R1bGUsXG4gICAgTmdGb3IsXG4gICAgQXN5bmNQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uSXRlbUNvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBPbkluaXQge1xuICBwdWJsaWMgY2hpbGRyZW46IE5hdmlnYXRpb24gfCBudWxsID0gbnVsbDtcblxuICBAVmlld0NoaWxkKFJvdXRlckxpbmtBY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXG4gIHB1YmxpYyByb3V0ZXJMaW5rQWN0aXZlITogUm91dGVyTGlua0FjdGl2ZTtcblxuICBASW5wdXQoKVxuICBAUmVxdWlyZWRcbiAgcHVibGljIGl0ZW0hOiBOYXZpZ2F0aW9uSXRlbTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgbGV2ZWwgPSAwO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYWN0aXZlJylcbiAgcHVibGljIGlzQWN0aXZlID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnbmF2aWdhdGlvbk92ZXJsYXknKVxuICBwcml2YXRlIF9uYXZpZ2F0aW9uT3ZlcmxheSE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHByaXZhdGUgX292ZXJsYXlSZWY/OiBPdmVybGF5UmVmO1xuICBwcml2YXRlIF9lbWJlZGRlZFZpZXdSZWY/OiBFbWJlZGRlZFZpZXdSZWY8YW55PjtcblxuICAvKipcbiAgICogaW5kaWNhdGVzIHRoZSBtb3VzZSBpcyBvdmVyIHRoZVxuICAgKi9cbiAgcHVibGljIGxvY2tlT3ZlcmxheSA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoUm91dGVyKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgQEluamVjdChTaWRlbmF2Q29tcG9uZW50U2VydmljZSlcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2lkZW5hdjogU2lkZW5hdkNvbXBvbmVudFNlcnZpY2UsXG4gICAgQEluamVjdChFbGVtZW50UmVmKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBASW5qZWN0KFJlbmRlcmVyMilcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgQEluamVjdChPdmVybGF5KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBASW5qZWN0KFZpZXdDb250YWluZXJSZWYpXG4gICAgcHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2l0ZW0nXSkge1xuICAgICAgY29uc3QgaXRlbTogTmF2aWdhdGlvbkl0ZW0gPSBjaGFuZ2VzWydpdGVtJ10uY3VycmVudFZhbHVlO1xuICAgICAgdGhpcy5jaGlsZHJlbiA9XG4gICAgICAgIGl0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGggPyBpdGVtLmNoaWxkcmVuIDogbnVsbDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgICAgICAgICBzdGFydFdpdGgodHJ1ZSksXG4gICAgICAgICAgICBkZWxheSgxMDApLFxuICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMucm91dGVyTGlua0FjdGl2ZS5pc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5zaWRlbmF2LmNvbGxhcHNlZCQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgIC8vIG9ubHkgY2xvc2UgdGhlIG92ZXJsYXkgaWYgc2lkZW5hdiBjb2xsYXBzZWRcbiAgICAgICAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWY/LmRldGFjaCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnYWN0aXZlJyk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyhcbiAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgJ2FjdGl2ZScsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIC8vIGRldGFjaCB0aGUgbmF2aWdhdGlvbiBvdmVybGF5IGlmIHRoZSBzaWRlbmF2IGNvbGxhcHNlZFxuICAgIC8vIHN0YXRlIGlzIGNoYW5nZWRcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy5zaWRlbmF2LmNvbGxhcHNlZCRcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHNraXAoMSksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMuX292ZXJsYXlSZWY/LmRldGFjaCgpKSxcbiAgICAgICAgICApXG4gICAgICAgICAgLnN1YnNjcmliZSgpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX292ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZW50ZXInKVxuICBwdWJsaWMgb25Nb3VzZWVudGVyKCkge1xuICAgIGlmICh0aGlzLmNoaWxkcmVuKSB7XG4gICAgICBpZiAoIXRoaXMucm91dGVyTGlua0FjdGl2ZS5pc0FjdGl2ZSB8fCB0aGlzLnNpZGVuYXYuY29sbGFwc2VkJC52YWx1ZSkge1xuICAgICAgICBpZiAoIXRoaXMuX292ZXJsYXlSZWYpIHtcbiAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLm92ZXJsYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudFJlZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLl9vdmVybGF5UmVmLmhhc0F0dGFjaGVkKCkpIHtcbiAgICAgICAgICB0aGlzLl9lbWJlZGRlZFZpZXdSZWYgPSB0aGlzLl9vdmVybGF5UmVmLmF0dGFjaChcbiAgICAgICAgICAgIG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLl9uYXZpZ2F0aW9uT3ZlcmxheSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKSxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScpXG4gIEBEZWJvdW5jZUNhbGwoMTAwKVxuICBwdWJsaWMgb25Nb3VzZWxlYXZlKCkge1xuICAgIGlmICghdGhpcy5sb2NrZU92ZXJsYXkpIHtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWY/LmRldGFjaCgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHJlZ2lvbiB0eXBlIHNhdmUgaXRlbSBwcm9wZXJ0eVxuXG4gIC8vIHJlcXVpcmVkIHRvIGNoZWNrIHRoZSB0eXBlIG9mIHRoZSBpdGVtIHByb3BlcnR5IGluIHRoZSBuZ0ZvciBsb29wXG5cbiAgcHVibGljIGlzTmF2aWdhdGlvbkRpdmlkZXJJdGVtKFxuICAgIGl0ZW06IE5hdmlnYXRpb25JdGVtIHwgTmF2aWdhdGlvbkRpdmlkZXJJdGVtLFxuICApOiBpdGVtIGlzIE5hdmlnYXRpb25EaXZpZGVySXRlbSB7XG4gICAgcmV0dXJuIChpdGVtIGFzIGFueSlbJ2RpdmlkZXInXTtcbiAgfVxuXG4gIHB1YmxpYyBpc05hdmlnYXRpb25JdGVtKFxuICAgIGl0ZW06IE5hdmlnYXRpb25JdGVtIHwgTmF2aWdhdGlvbkRpdmlkZXJJdGVtLFxuICApOiBpdGVtIGlzIE5hdmlnYXRpb25JdGVtIHtcbiAgICByZXR1cm4gIXRoaXMuaXNOYXZpZ2F0aW9uRGl2aWRlckl0ZW0oaXRlbSk7XG4gIH1cblxuICBwdWJsaWMgYXNOYXZpZ2F0aW9uSXRlbShcbiAgICBpdGVtOiBOYXZpZ2F0aW9uSXRlbSB8IE5hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgKTogTmF2aWdhdGlvbkl0ZW0ge1xuICAgIGlmICghdGhpcy5pc05hdmlnYXRpb25JdGVtKGl0ZW0pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBpdGVtIGlzIG5vdCBhIE5hdmlnYXRpb25JdGVtJyk7XG4gICAgfVxuICAgIHJldHVybiBpdGVtO1xuICB9XG5cbiAgLy8gZW5kcmVnaW9uXG59XG4iLCI8YSBbbWF0VG9vbHRpcERpc2FibGVkXT1cIihzaWRlbmF2LmNvbGxhcHNlZCQgfCBhc3luYykgPT09IGZhbHNlXCJcbiAgIFttYXRUb29sdGlwXT1cIml0ZW0ubGFiZWxcIlxuICAgW3JvdXRlckxpbmtdPVwiaXRlbS5yb3V0ZXJMaW5rXCJcbiAgIGNsYXNzPVwibmF2aWdhdGlvbi1saW5rIG1hdC1ib2R5LTIgbWF0LWJvZHktc3Ryb25nIG5hdmlnYXRpb24tbGV2ZWwte3tsZXZlbH19XCJcbiAgIG1hdFJpcHBsZSByb3V0ZXJMaW5rQWN0aXZlPVwibGluay1hY3RpdmVcIj5cbiAgPG1hdC1pY29uICpuZ0lmPVwiaXRlbS5pY29uXCIgW3J4YXBJY29uXT1cIml0ZW0uaWNvblwiIGNsYXNzPVwiaWNvblwiPjwvbWF0LWljb24+XG4gIDxuZy10ZW1wbGF0ZSBbbmdJZl09XCIoc2lkZW5hdi5jb2xsYXBzZWQkIHwgYXN5bmMpID09PSBmYWxzZVwiPlxuICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj57eyBpdGVtLmxhYmVsIH19PC9zcGFuPlxuICA8L25nLXRlbXBsYXRlPlxuPC9hPlxuXG48dWwgKm5nSWY9XCJyb3V0ZXJMaW5rQWN0aXZlLmlzQWN0aXZlICYmIChzaWRlbmF2LmNvbGxhcHNlZCQgfCBhc3luYykgPT09IGZhbHNlICYmIGNoaWxkcmVuXCJcbiAgICBbQHN1Yi1uYXZdXG4gICAgW2l0ZW1zXT1cImNoaWxkcmVuXCJcbiAgICBbbGV2ZWxdPVwibGV2ZWwgKyAxXCJcbiAgICBjbGFzcz1cInN1Yi1pdGVtc1wiXG4gICAgZnhGbGV4PVwibm9ncm93XCJcbiAgICByeGFwLW5hdmlnYXRpb25cbj5cbjwvdWw+XG5cbjxuZy10ZW1wbGF0ZSAjbmF2aWdhdGlvbk92ZXJsYXk+XG4gIDxkaXYgKG1vdXNlZW50ZXIpPVwibG9ja2VPdmVybGF5ID0gdHJ1ZVwiXG4gICAgICAgKG1vdXNlbGVhdmUpPVwibG9ja2VPdmVybGF5ID0gZmFsc2U7IG9uTW91c2VsZWF2ZSgpXCIgY2xhc3M9XCJuYXZpZ2F0aW9uLW92ZXJsYXktY29udGFpbmVyIG1hdC1lbGV2YXRpb24tejFcIj5cbiAgICA8dWw+XG4gICAgICA8bGkgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGNoaWxkcmVuXCI+XG4gICAgICAgIDxhICpuZ0lmPVwiaXNOYXZpZ2F0aW9uSXRlbShjaGlsZClcIiBbcm91dGVyTGlua109XCJhc05hdmlnYXRpb25JdGVtKGNoaWxkKS5yb3V0ZXJMaW5rXCJcbiAgICAgICAgICAgY2xhc3M9XCJuYXZpZ2F0aW9uLWxpbmsgbWF0LXN1YnRpdGxlLTIgbWF0LWJvZHktc3Ryb25nXCIgbWF0UmlwcGxlPlxuICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImFzTmF2aWdhdGlvbkl0ZW0oY2hpbGQpLmljb25cIiBbcnhhcEljb25dPVwiYXNOYXZpZ2F0aW9uSXRlbShjaGlsZCkuaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvblwiPjwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPnt7IGFzTmF2aWdhdGlvbkl0ZW0oY2hpbGQpLmxhYmVsIH19PC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWl0ZW0vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbGF5b3V0L3NyYy9saWIvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLWl0ZW0vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBR0wsU0FBUyxFQUNULE1BQU0sRUFFTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsT0FBTyxFQUNQLEtBQUssRUFDTCxVQUFVLEVBQ1YsT0FBTyxHQUNSLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLGFBQWEsRUFDYixNQUFNLEVBQ04sVUFBVSxFQUNWLGdCQUFnQixHQUNqQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFDTCxZQUFZLEVBQ1osWUFBWSxHQUNiLE1BQU0sTUFBTSxDQUFDO0FBQ2QsT0FBTyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsR0FBRyxHQUNKLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFB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SyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDOzZCQUMzQixDQUFDO3lCQUNILENBQUM7cUJBQ0gsY0FDVyxJQUFJLFdBQ1A7d0JBQ1AsZ0JBQWdCO3dCQUNoQixVQUFVO3dCQUNWLElBQUk7d0JBQ0osZUFBZTt3QkFDZixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7d0JBQ3JDLE9BQU87cUJBQ1I7OzBCQWlDRSxNQUFNOzJCQUFDLE1BQU07OzBCQUViLE1BQU07MkJBQUMsdUJBQXVCOzswQkFFOUIsTUFBTTsyQkFBQyxVQUFVOzswQkFFakIsTUFBTTsyQkFBQyxTQUFTOzswQkFFaEIsTUFBTTsyQkFBQyxPQUFPOzswQkFFZCxNQUFNOzJCQUFDLGdCQUFnQjs0Q0FyQ25CLEtBQUs7c0JBRFgsS0FBSztnQkFRQyxnQkFBZ0I7c0JBRHRCLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl0QyxJQUFJO3NCQURWLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQU1yQixRQUFRO3NCQURYLFdBQVc7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgUmVuZGVyZXIyLFxuICBzaWduYWwsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVxdWlyZWQgfSBmcm9tICdAcnhhcC91dGlsaXRpZXMnO1xuaW1wb3J0IHtcbiAgYW5pbWF0ZSxcbiAgc3R5bGUsXG4gIHRyYW5zaXRpb24sXG4gIHRyaWdnZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgTmF2aWdhdGlvbkVuZCxcbiAgUm91dGVyLFxuICBSb3V0ZXJMaW5rLFxuICBSb3V0ZXJMaW5rQWN0aXZlLFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtcbiAgZGVib3VuY2VUaW1lLFxuICBTdWJzY3JpcHRpb24sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZmlsdGVyLFxuICBzdGFydFdpdGgsXG4gIHRhcCxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFNpZGVuYXZDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2lkZW5hdi9zaWRlbmF2LmNvbXBvbmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi9uYXZpZ2F0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XG5pbXBvcnQgeyBJY29uRGlyZWN0aXZlIH0gZnJvbSAnQHJ4YXAvbWF0ZXJpYWwtZGlyZWN0aXZlcy9pY29uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdFJpcHBsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtcbiAgTmdDbGFzcyxcbiAgTmdJZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIE5hdmlnYXRpb24sXG4gIE5hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgTmF2aWdhdGlvbkl0ZW0sXG59IGZyb20gJy4uL25hdmlnYXRpb24taXRlbSc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2xpW3J4YXAtbmF2aWdhdGlvbi1pdGVtXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9uYXZpZ2F0aW9uLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsgJy4vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudC5zY3NzJyBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ3N1Yi1uYXYnLCBbXG4gICAgICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgICAgIHN0eWxlKHtcbiAgICAgICAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgICAgICAgIGhlaWdodDogJzAnLFxuICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgfSksXG4gICAgICAgIGFuaW1hdGUoMTUwLCBzdHlsZSh7IGhlaWdodDogJyonIH0pKSxcbiAgICAgIF0pLFxuICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICBzdHlsZSh7IG92ZXJmbG93OiAnaGlkZGVuJyB9KSxcbiAgICAgICAgYW5pbWF0ZSgzMDAsIHN0eWxlKHsgaGVpZ2h0OiAnMCcgfSkpLFxuICAgICAgICBzdHlsZSh7IGRpc3BsYXk6ICdub25lJyB9KSxcbiAgICAgIF0pLFxuICAgIF0pLFxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgUm91dGVyTGlua0FjdGl2ZSxcbiAgICBSb3V0ZXJMaW5rLFxuICAgIE5nSWYsXG4gICAgTWF0UmlwcGxlTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgSWNvbkRpcmVjdGl2ZSxcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxuICAgIGZvcndhcmRSZWYoKCkgPT4gTmF2aWdhdGlvbkNvbXBvbmVudCksXG4gICAgTmdDbGFzcyxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvbkl0ZW1Db21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGxldmVsID0gMDtcblxuICBwcml2YXRlIF9pc0FjdGl2ZSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBjaGlsZHJlbjogTmF2aWdhdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIEBWaWV3Q2hpbGQoUm91dGVyTGlua0FjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSlcbiAgcHVibGljIHJvdXRlckxpbmtBY3RpdmUhOiBSb3V0ZXJMaW5rQWN0aXZlO1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIHB1YmxpYyBpdGVtITogTmF2aWdhdGlvbkl0ZW07XG5cbiAgcHVibGljIGFjdGl2ZSA9IHNpZ25hbChmYWxzZSk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hY3RpdmUnKVxuICBnZXQgaXNBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzQWN0aXZlO1xuICB9XG5cbiAgc2V0IGlzQWN0aXZlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faXNBY3RpdmUgPSB2YWx1ZTtcbiAgICB0aGlzLmFjdGl2ZS5zZXQodmFsdWUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoUm91dGVyKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgQEluamVjdChTaWRlbmF2Q29tcG9uZW50U2VydmljZSlcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2lkZW5hdjogU2lkZW5hdkNvbXBvbmVudFNlcnZpY2UsXG4gICAgQEluamVjdChFbGVtZW50UmVmKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBASW5qZWN0KFJlbmRlcmVyMilcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgQEluamVjdChPdmVybGF5KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3ZlcmxheTogT3ZlcmxheSxcbiAgICBASW5qZWN0KFZpZXdDb250YWluZXJSZWYpXG4gICAgcHJpdmF0ZSByZWFkb25seSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICApIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2l0ZW0nXSkge1xuICAgICAgY29uc3QgaXRlbTogTmF2aWdhdGlvbkl0ZW0gPSBjaGFuZ2VzWydpdGVtJ10uY3VycmVudFZhbHVlO1xuICAgICAgdGhpcy5jaGlsZHJlbiA9XG4gICAgICAgIGl0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGggPyBpdGVtLmNoaWxkcmVuIDogbnVsbDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbi5hZGQoXG4gICAgICB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcbiAgICAgICAgICAgIHN0YXJ0V2l0aCh0cnVlKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgIGxldCBpc0FjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgIGNvbnN0IHVybFBhcnRzID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcvJyk7XG4gICAgICAgICAgICAgIGlmICh1cmxQYXJ0c1swXSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICB1cmxQYXJ0c1swXSA9ICcvJztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuaXRlbS5yb3V0ZXJMaW5rLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHVybFBhcnRzW2ldICE9PSB0aGlzLml0ZW0ucm91dGVyTGlua1tpXSkge1xuICAgICAgICAgICAgICAgICAgaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aGlzLmlzQWN0aXZlID0gaXNBY3RpdmU7XG4gICAgICAgICAgICAgIGlmIChpc0FjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdhY3RpdmUnKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnYWN0aXZlJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgICAuc3Vic2NyaWJlKCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvLyByZWdpb24gdHlwZSBzYXZlIGl0ZW0gcHJvcGVydHlcblxuICAvLyByZXF1aXJlZCB0byBjaGVjayB0aGUgdHlwZSBvZiB0aGUgaXRlbSBwcm9wZXJ0eSBpbiB0aGUgbmdGb3IgbG9vcFxuXG4gIHB1YmxpYyBpc05hdmlnYXRpb25EaXZpZGVySXRlbShcbiAgICBpdGVtOiBOYXZpZ2F0aW9uSXRlbSB8IE5hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgKTogaXRlbSBpcyBOYXZpZ2F0aW9uRGl2aWRlckl0ZW0ge1xuICAgIHJldHVybiAoaXRlbSBhcyBhbnkpWydkaXZpZGVyJ107XG4gIH1cblxuICBwdWJsaWMgaXNOYXZpZ2F0aW9uSXRlbShcbiAgICBpdGVtOiBOYXZpZ2F0aW9uSXRlbSB8IE5hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgKTogaXRlbSBpcyBOYXZpZ2F0aW9uSXRlbSB7XG4gICAgcmV0dXJuICF0aGlzLmlzTmF2aWdhdGlvbkRpdmlkZXJJdGVtKGl0ZW0pO1xuICB9XG5cbiAgcHVibGljIGFzTmF2aWdhdGlvbkl0ZW0oXG4gICAgaXRlbTogTmF2aWdhdGlvbkl0ZW0gfCBOYXZpZ2F0aW9uRGl2aWRlckl0ZW0sXG4gICk6IE5hdmlnYXRpb25JdGVtIHtcbiAgICBpZiAoIXRoaXMuaXNOYXZpZ2F0aW9uSXRlbShpdGVtKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgaXRlbSBpcyBub3QgYSBOYXZpZ2F0aW9uSXRlbScpO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuXG4gIC8vIGVuZHJlZ2lvblxufVxuIiwiPGRpdiBbbmdDbGFzc109XCJ7XG4gICAgICdib3JkZXItbC00IHRleHQtYWNjZW50LTQwMCBib3JkZXItYWNjZW50LTYwMCc6IGFjdGl2ZSgpLFxuICAgICB9XCI+XG4gIDxhIFtyb3V0ZXJMaW5rXT1cIml0ZW0ucm91dGVyTGlua1wiXG4gICAgIGNsYXNzPVwiaC0xMiBwbC00IHByLTUgZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIGdhcC14LTRcIlxuICAgICBtYXRSaXBwbGVcbiAgICAgcm91dGVyTGlua0FjdGl2ZVxuXG4gID5cbiAgICA8c3BhblxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAncGwtMCc6IGxldmVsID09PSAwLFxuICAgICAgICAncGwtNCc6IGxldmVsID09PSAxLFxuICAgICAgICAncGwtOCc6IGxldmVsID09PSAyLFxuICAgICAgICAncGwtMTInOiBsZXZlbCA9PT0gM1xuICAgICAgfVwiXG4gICAgICBjbGFzcz1cImdyb3cgd2hpdGVzcGFjZS1ub3dyYXBcIlxuICAgID5cbiAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICA8L3NwYW4+XG4gICAgPG1hdC1pY29uICpuZ0lmPVwiaXRlbS5pY29uXCIgW3J4YXBJY29uXT1cIml0ZW0uaWNvblwiPjwvbWF0LWljb24+XG4gIDwvYT5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5jaGlsZHJlbj8ubGVuZ3RoICYmIGFjdGl2ZSgpXCI+XG5cbiAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cblxuICAgIDx1bCBbQHN1Yi1uYXZdXG4gICAgICAgIFtpdGVtc109XCJjaGlsZHJlbiA/PyBbXVwiXG4gICAgICAgIFtsZXZlbF09XCJsZXZlbCArIDFcIlxuICAgICAgICByeGFwLW5hdmlnYXRpb25cbiAgICA+XG4gICAgPC91bD5cblxuICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxuXG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
@@ -1,28 +1,25 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, Inject, Input, ViewEncapsulation, } from '@angular/core';
3
- import { coerceBoolean, Required, } from '@rxap/utilities';
4
- import { NavigationService } from './navigation.service';
1
+ import { AsyncPipe, NgFor, NgIf, } from '@angular/common';
2
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, HostBinding, Inject, Input, ViewEncapsulation, } from '@angular/core';
3
+ import { MatDividerModule } from '@angular/material/divider';
4
+ import { coerceBoolean } from '@rxap/utilities';
5
5
  import { tap } from 'rxjs/operators';
6
6
  import { SidenavComponentService } from '../sidenav/sidenav.component.service';
7
7
  import { NavigationItemComponent } from './navigation-item/navigation-item.component';
8
- import { FlexModule } from '@angular/flex-layout/flex';
9
- import { MatDividerModule } from '@angular/material/divider';
10
- import { AsyncPipe, NgFor, NgIf, } from '@angular/common';
8
+ import { NavigationService } from './navigation.service';
11
9
  import * as i0 from "@angular/core";
12
10
  import * as i1 from "@angular/material/divider";
13
- import * as i2 from "@angular/flex-layout/flex";
14
- import * as i3 from "./navigation.service";
15
- import * as i4 from "../sidenav/sidenav.component.service";
11
+ import * as i2 from "./navigation.service";
12
+ import * as i3 from "../sidenav/sidenav.component.service";
16
13
  export class NavigationComponent {
17
- set root(value) {
18
- this._root = coerceBoolean(value);
19
- }
20
14
  constructor(navigationService, cdr, sidenav) {
21
15
  this.navigationService = navigationService;
22
16
  this.cdr = cdr;
23
17
  this.sidenav = sidenav;
24
- this._root = false;
25
18
  this.level = 0;
19
+ this._root = false;
20
+ }
21
+ set root(value) {
22
+ this._root = coerceBoolean(value);
26
23
  }
27
24
  ngOnInit() {
28
25
  if (this._root) {
@@ -31,6 +28,7 @@ export class NavigationComponent {
31
28
  .pipe(tap((navigation) => (this.items = navigation)), tap(() => this.cdr.detectChanges()))
32
29
  .subscribe();
33
30
  }
31
+ this.items ??= [];
34
32
  }
35
33
  ngOnDestroy() {
36
34
  this.subscription?.unsubscribe();
@@ -50,39 +48,36 @@ export class NavigationComponent {
50
48
  return item;
51
49
  }
52
50
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: NavigationComponent, deps: [{ token: NavigationService }, { token: ChangeDetectorRef }, { token: SidenavComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
53
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: NavigationComponent, isStandalone: true, selector: "ul[rxap-navigation]", inputs: { root: "root", items: "items", level: "level" }, host: { properties: { "class.rxap-root-navigation": "this._root" }, classAttribute: "rxap-navigation" }, ngImport: i0, template: "<ng-template [ngForOf]=\"items\" let-item ngFor>\n <ng-template [ngIf]=\"isNavigationDividerItem(item)\">\n <mat-divider fxFlex=\"nogrow\"></mat-divider>\n <div *ngIf=\"(sidenav.collapsed$ | async) === false\" class=\"divider-title\" fxFlex=\"nogrow\" fxLayout=\"row\"\n fxLayoutAlign=\"start end\">\n <span *ngIf=\"item.title\" fxFlex=\"nogrow\">{{item.title}}</span>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"isNavigationItem(item)\">\n <li [item]=\"asNavigationItem(item)\" [level]=\"level\" class=\"item\" rxap-navigation-item></li>\n </ng-template>\n</ng-template>\n", styles: [".rxap-navigation{list-style-type:none;padding:0}.rxap-navigation .divider-title{padding-left:18px;height:28px;align-content:center}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i1.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: FlexModule }, { kind: "directive", type: i2.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i2.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i2.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: NavigationItemComponent, selector: "li[rxap-navigation-item]", inputs: ["item", "level"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
51
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: NavigationComponent, isStandalone: true, selector: "ul[rxap-navigation]", inputs: { items: "items", level: "level", root: "root" }, host: { properties: { "class.rxap-root-navigation": "this._root" }, classAttribute: "list-none dark:text-neutral-400 text-neutral-700" }, ngImport: i0, template: "<ng-template [ngForOf]=\"items\" let-item ngFor>\n <ng-template [ngIf]=\"isNavigationDividerItem(item)\">\n <mat-divider></mat-divider>\n <div *ngIf=\"(sidenav.collapsed$ | async) === false\" class=\"pl-5 h-6\">\n <span *ngIf=\"item.title\">{{item.title}}</span>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"isNavigationItem(item)\">\n <li [item]=\"asNavigationItem(item)\" [level]=\"level\" class=\"dark:hover:text-white hover:text-black\"\n rxap-navigation-item></li>\n </ng-template>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i0.forwardRef(function () { return NgFor; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatDividerModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i1.MatDivider; }), selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: i0.forwardRef(function () { return NavigationItemComponent; }), selector: "li[rxap-navigation-item]", inputs: ["level", "item"] }, { kind: "pipe", type: i0.forwardRef(function () { return AsyncPipe; }), name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
54
52
  }
55
- __decorate([
56
- Required,
57
- __metadata("design:type", Array)
58
- ], NavigationComponent.prototype, "items", void 0);
59
53
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: NavigationComponent, decorators: [{
60
54
  type: Component,
61
- args: [{ selector: 'ul[rxap-navigation]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'rxap-navigation' }, standalone: true, imports: [
55
+ args: [{ selector: 'ul[rxap-navigation]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, host: {
56
+ class: 'list-none dark:text-neutral-400 text-neutral-700',
57
+ }, imports: [
62
58
  NgFor,
63
59
  NgIf,
64
60
  MatDividerModule,
65
- FlexModule,
66
- NavigationItemComponent,
61
+ forwardRef(() => NavigationItemComponent),
67
62
  AsyncPipe,
68
- ], template: "<ng-template [ngForOf]=\"items\" let-item ngFor>\n <ng-template [ngIf]=\"isNavigationDividerItem(item)\">\n <mat-divider fxFlex=\"nogrow\"></mat-divider>\n <div *ngIf=\"(sidenav.collapsed$ | async) === false\" class=\"divider-title\" fxFlex=\"nogrow\" fxLayout=\"row\"\n fxLayoutAlign=\"start end\">\n <span *ngIf=\"item.title\" fxFlex=\"nogrow\">{{item.title}}</span>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"isNavigationItem(item)\">\n <li [item]=\"asNavigationItem(item)\" [level]=\"level\" class=\"item\" rxap-navigation-item></li>\n </ng-template>\n</ng-template>\n", styles: [".rxap-navigation{list-style-type:none;padding:0}.rxap-navigation .divider-title{padding-left:18px;height:28px;align-content:center}\n"] }]
69
- }], ctorParameters: function () { return [{ type: i3.NavigationService, decorators: [{
63
+ ], template: "<ng-template [ngForOf]=\"items\" let-item ngFor>\n <ng-template [ngIf]=\"isNavigationDividerItem(item)\">\n <mat-divider></mat-divider>\n <div *ngIf=\"(sidenav.collapsed$ | async) === false\" class=\"pl-5 h-6\">\n <span *ngIf=\"item.title\">{{item.title}}</span>\n </div>\n </ng-template>\n <ng-template [ngIf]=\"isNavigationItem(item)\">\n <li [item]=\"asNavigationItem(item)\" [level]=\"level\" class=\"dark:hover:text-white hover:text-black\"\n rxap-navigation-item></li>\n </ng-template>\n</ng-template>\n" }]
64
+ }], ctorParameters: function () { return [{ type: i2.NavigationService, decorators: [{
70
65
  type: Inject,
71
66
  args: [NavigationService]
72
67
  }] }, { type: i0.ChangeDetectorRef, decorators: [{
73
68
  type: Inject,
74
69
  args: [ChangeDetectorRef]
75
- }] }, { type: i4.SidenavComponentService, decorators: [{
70
+ }] }, { type: i3.SidenavComponentService, decorators: [{
76
71
  type: Inject,
77
72
  args: [SidenavComponentService]
78
- }] }]; }, propDecorators: { _root: [{
73
+ }] }]; }, propDecorators: { items: [{
74
+ type: Input
75
+ }], level: [{
76
+ type: Input
77
+ }], _root: [{
79
78
  type: HostBinding,
80
79
  args: ['class.rxap-root-navigation']
81
80
  }], root: [{
82
81
  type: Input
83
- }], items: [{
84
- type: Input
85
- }], level: [{
86
- type: Input
87
82
  }] } });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL2xheW91dC9zcmMvbGliL25hdmlnYXRpb24vbmF2aWdhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL2xheW91dC9zcmMvbGliL25hdmlnYXRpb24vbmF2aWdhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUdMLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQU12QixPQUFPLEVBQ0wsYUFBYSxFQUNiLFFBQVEsR0FDVCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXpELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUN0RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsSUFBSSxHQUNMLE1BQU0saUJBQWlCLENBQUM7Ozs7OztBQXFCekIsTUFBTSxPQUFPLG1CQUFtQjtJQUk5QixJQUNXLElBQUksQ0FBQyxLQUFtQjtRQUNqQyxJQUFJLENBQUMsS0FBSyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBV0QsWUFFbUIsaUJBQW9DLEVBRXBDLEdBQXNCLEVBRXZCLE9BQWdDO1FBSi9CLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFFcEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFFdkIsWUFBTyxHQUFQLE9BQU8sQ0FBeUI7UUF0QjNDLFVBQUssR0FBRyxLQUFLLENBQUM7UUFjZCxVQUFLLEdBQUcsQ0FBQyxDQUFDO0lBVWpCLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTztpQkFDekIsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEVBQzlDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQ3BDO2lCQUNBLFNBQVMsRUFBRSxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsaUNBQWlDO0lBRWpDLG9FQUFvRTtJQUU3RCx1QkFBdUIsQ0FDNUIsSUFBNEM7UUFFNUMsT0FBUSxJQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVNLGdCQUFnQixDQUNyQixJQUE0QztRQUU1QyxPQUFPLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTSxnQkFBZ0IsQ0FDckIsSUFBNEM7UUFFNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7U0FDckQ7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OEdBbkVVLG1CQUFtQixrQkFtQnBCLGlCQUFpQixhQUVqQixpQkFBaUIsYUFFakIsdUJBQXVCO2tHQXZCdEIsbUJBQW1CLGtQQ3BEaEMsa21CQVlBLCtMRGdDSSxLQUFLLG1IQUNMLElBQUksNEZBQ0osZ0JBQWdCLGtJQUNoQixVQUFVLHl0REFDVix1QkFBdUIsMkZBQ3ZCLFNBQVM7O0FBY0o7SUFETixRQUFROztrREFDaUI7MkZBWGYsbUJBQW1CO2tCQW5CL0IsU0FBUzsrQkFFRSxxQkFBcUIsbUJBR2QsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUUvQixFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxjQUN0QixJQUFJLFdBQ1A7d0JBQ1AsS0FBSzt3QkFDTCxJQUFJO3dCQUNKLGdCQUFnQjt3QkFDaEIsVUFBVTt3QkFDVix1QkFBdUI7d0JBQ3ZCLFNBQVM7cUJBQ1Y7OzBCQXFCRSxNQUFNOzJCQUFDLGlCQUFpQjs7MEJBRXhCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFFeEIsTUFBTTsyQkFBQyx1QkFBdUI7NENBckIxQixLQUFLO3NCQURYLFdBQVc7dUJBQUMsNEJBQTRCO2dCQUk5QixJQUFJO3NCQURkLEtBQUs7Z0JBT0MsS0FBSztzQkFGWCxLQUFLO2dCQU9DLEtBQUs7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE5hdmlnYXRpb24sXG4gIE5hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgTmF2aWdhdGlvbkl0ZW0sXG59IGZyb20gJy4vbmF2aWdhdGlvbi1pdGVtJztcbmltcG9ydCB7XG4gIGNvZXJjZUJvb2xlYW4sXG4gIFJlcXVpcmVkLFxufSBmcm9tICdAcnhhcC91dGlsaXRpZXMnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuL25hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFNpZGVuYXZDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2lkZW5hdi9zaWRlbmF2LmNvbXBvbmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRpb25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLWl0ZW0vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGbGV4TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZmxleC1sYXlvdXQvZmxleCc7XG5pbXBvcnQgeyBNYXREaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGl2aWRlcic7XG5pbXBvcnQge1xuICBBc3luY1BpcGUsXG4gIE5nRm9yLFxuICBOZ0lmLFxufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICd1bFtyeGFwLW5hdmlnYXRpb25dJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25hdmlnYXRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsgJy4vbmF2aWdhdGlvbi5jb21wb25lbnQuc2NzcycgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taG9zdC1tZXRhZGF0YS1wcm9wZXJ0eVxuICBob3N0OiB7IGNsYXNzOiAncnhhcC1uYXZpZ2F0aW9uJyB9LFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdGb3IsXG4gICAgTmdJZixcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxuICAgIEZsZXhNb2R1bGUsXG4gICAgTmF2aWdhdGlvbkl0ZW1Db21wb25lbnQsXG4gICAgQXN5bmNQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJ4YXAtcm9vdC1uYXZpZ2F0aW9uJylcbiAgcHVibGljIF9yb290ID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCByb290KHZhbHVlOiBib29sZWFuIHwgJycpIHtcbiAgICB0aGlzLl9yb290ID0gY29lcmNlQm9vbGVhbih2YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBAUmVxdWlyZWRcbiAgcHVibGljIGl0ZW1zITogTmF2aWdhdGlvbjtcblxuICBwdWJsaWMgc3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsZXZlbCA9IDA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChOYXZpZ2F0aW9uU2VydmljZSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdmlnYXRpb25TZXJ2aWNlOiBOYXZpZ2F0aW9uU2VydmljZSxcbiAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBASW5qZWN0KFNpZGVuYXZDb21wb25lbnRTZXJ2aWNlKVxuICAgIHB1YmxpYyByZWFkb25seSBzaWRlbmF2OiBTaWRlbmF2Q29tcG9uZW50U2VydmljZSxcbiAgKSB7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3Jvb3QpIHtcbiAgICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5jb25maWckXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFwKChuYXZpZ2F0aW9uKSA9PiAodGhpcy5pdGVtcyA9IG5hdmlnYXRpb24pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLy8gcmVnaW9uIHR5cGUgc2F2ZSBpdGVtIHByb3BlcnR5XG5cbiAgLy8gcmVxdWlyZWQgdG8gY2hlY2sgdGhlIHR5cGUgb2YgdGhlIGl0ZW0gcHJvcGVydHkgaW4gdGhlIG5nRm9yIGxvb3BcblxuICBwdWJsaWMgaXNOYXZpZ2F0aW9uRGl2aWRlckl0ZW0oXG4gICAgaXRlbTogTmF2aWdhdGlvbkl0ZW0gfCBOYXZpZ2F0aW9uRGl2aWRlckl0ZW0sXG4gICk6IGl0ZW0gaXMgTmF2aWdhdGlvbkRpdmlkZXJJdGVtIHtcbiAgICByZXR1cm4gKGl0ZW0gYXMgYW55KVsnZGl2aWRlciddO1xuICB9XG5cbiAgcHVibGljIGlzTmF2aWdhdGlvbkl0ZW0oXG4gICAgaXRlbTogTmF2aWdhdGlvbkl0ZW0gfCBOYXZpZ2F0aW9uRGl2aWRlckl0ZW0sXG4gICk6IGl0ZW0gaXMgTmF2aWdhdGlvbkl0ZW0ge1xuICAgIHJldHVybiAhdGhpcy5pc05hdmlnYXRpb25EaXZpZGVySXRlbShpdGVtKTtcbiAgfVxuXG4gIHB1YmxpYyBhc05hdmlnYXRpb25JdGVtKFxuICAgIGl0ZW06IE5hdmlnYXRpb25JdGVtIHwgTmF2aWdhdGlvbkRpdmlkZXJJdGVtLFxuICApOiBOYXZpZ2F0aW9uSXRlbSB7XG4gICAgaWYgKCF0aGlzLmlzTmF2aWdhdGlvbkl0ZW0oaXRlbSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGl0ZW0gaXMgbm90IGEgTmF2aWdhdGlvbkl0ZW0nKTtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cblxuICAvLyBlbmRyZWdpb25cbn1cbiIsIjxuZy10ZW1wbGF0ZSBbbmdGb3JPZl09XCJpdGVtc1wiIGxldC1pdGVtIG5nRm9yPlxuICA8bmctdGVtcGxhdGUgW25nSWZdPVwiaXNOYXZpZ2F0aW9uRGl2aWRlckl0ZW0oaXRlbSlcIj5cbiAgICA8bWF0LWRpdmlkZXIgZnhGbGV4PVwibm9ncm93XCI+PC9tYXQtZGl2aWRlcj5cbiAgICA8ZGl2ICpuZ0lmPVwiKHNpZGVuYXYuY29sbGFwc2VkJCB8IGFzeW5jKSA9PT0gZmFsc2VcIiBjbGFzcz1cImRpdmlkZXItdGl0bGVcIiBmeEZsZXg9XCJub2dyb3dcIiBmeExheW91dD1cInJvd1wiXG4gICAgICAgICBmeExheW91dEFsaWduPVwic3RhcnQgZW5kXCI+XG4gICAgICA8c3BhbiAqbmdJZj1cIml0ZW0udGl0bGVcIiBmeEZsZXg9XCJub2dyb3dcIj57e2l0ZW0udGl0bGV9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImlzTmF2aWdhdGlvbkl0ZW0oaXRlbSlcIj5cbiAgICA8bGkgW2l0ZW1dPVwiYXNOYXZpZ2F0aW9uSXRlbShpdGVtKVwiIFtsZXZlbF09XCJsZXZlbFwiIGNsYXNzPVwiaXRlbVwiIHJ4YXAtbmF2aWdhdGlvbi1pdGVtPjwvbGk+XG4gIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuIl19
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL2xheW91dC9zcmMvbGliL25hdmlnYXRpb24vbmF2aWdhdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL2xheW91dC9zcmMvbGliL25hdmlnYXRpb24vbmF2aWdhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFDTCxJQUFJLEdBQ0wsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFdBQVcsRUFDWCxNQUFNLEVBQ04sS0FBSyxFQUdMLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFaEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBTS9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7OztBQXNCekQsTUFBTSxPQUFPLG1CQUFtQjtJQU85QixZQUVtQixpQkFBb0MsRUFFcEMsR0FBc0IsRUFFdkIsT0FBZ0M7UUFKL0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUVwQyxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUV2QixZQUFPLEdBQVAsT0FBTyxDQUF5QjtRQVIzQyxVQUFLLEdBQUcsQ0FBQyxDQUFDO1FBYVYsVUFBSyxHQUFHLEtBQUssQ0FBQztJQUhyQixDQUFDO0lBS0QsSUFDVyxJQUFJLENBQUMsS0FBbUI7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPO2lCQUN6QixJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLENBQUMsRUFDOUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FDcEM7aUJBQ0EsU0FBUyxFQUFFLENBQUM7U0FDdEM7UUFDRCxJQUFJLENBQUMsS0FBSyxLQUFLLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxpQ0FBaUM7SUFFakMsb0VBQW9FO0lBRTdELHVCQUF1QixDQUM1QixJQUE0QztRQUU1QyxPQUFRLElBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sZ0JBQWdCLENBQ3JCLElBQTRDO1FBRTVDLE9BQU8sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVNLGdCQUFnQixDQUNyQixJQUE0QztRQUU1QyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztTQUNyRDtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs4R0FqRVUsbUJBQW1CLGtCQVFwQixpQkFBaUIsYUFFakIsaUJBQWlCLGFBRWpCLHVCQUF1QjtrR0FadEIsbUJBQW1CLG1SQ2xEaEMsMmhCQVlBLDZGRCtCSSxLQUFLLDBKQUNMLElBQUksbUlBQ0osZ0JBQWdCLGlOQUNDLHVCQUF1QixrSUFDeEMsU0FBUzs7MkZBR0EsbUJBQW1CO2tCQXBCL0IsU0FBUzsrQkFFRSxxQkFBcUIsbUJBR2QsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxjQUN6QixJQUFJLFFBRVY7d0JBQ0osS0FBSyxFQUFFLGtEQUFrRDtxQkFDMUQsV0FDUTt3QkFDUCxLQUFLO3dCQUNMLElBQUk7d0JBQ0osZ0JBQWdCO3dCQUNoQixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7d0JBQ3pDLFNBQVM7cUJBQ1Y7OzBCQVVFLE1BQU07MkJBQUMsaUJBQWlCOzswQkFFeEIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUV4QixNQUFNOzJCQUFDLHVCQUF1Qjs0Q0FWMUIsS0FBSztzQkFEWCxLQUFLO2dCQUlDLEtBQUs7c0JBRFgsS0FBSztnQkFjQyxLQUFLO3NCQURYLFdBQVc7dUJBQUMsNEJBQTRCO2dCQUk5QixJQUFJO3NCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBc3luY1BpcGUsXG4gIE5nRm9yLFxuICBOZ0lmLFxufSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhbiB9IGZyb20gJ0ByeGFwL3V0aWxpdGllcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFNpZGVuYXZDb21wb25lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2lkZW5hdi9zaWRlbmF2LmNvbXBvbmVudC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIE5hdmlnYXRpb24sXG4gIE5hdmlnYXRpb25EaXZpZGVySXRlbSxcbiAgTmF2aWdhdGlvbkl0ZW0sXG59IGZyb20gJy4vbmF2aWdhdGlvbi1pdGVtJztcbmltcG9ydCB7IE5hdmlnYXRpb25JdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9uYXZpZ2F0aW9uLWl0ZW0vbmF2aWdhdGlvbi1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4vbmF2aWdhdGlvbi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAndWxbcnhhcC1uYXZpZ2F0aW9uXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9uYXZpZ2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbICcuL25hdmlnYXRpb24uY29tcG9uZW50LnNjc3MnIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWhvc3QtbWV0YWRhdGEtcHJvcGVydHlcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnbGlzdC1ub25lIGRhcms6dGV4dC1uZXV0cmFsLTQwMCB0ZXh0LW5ldXRyYWwtNzAwJyxcbiAgfSxcbiAgaW1wb3J0czogW1xuICAgIE5nRm9yLFxuICAgIE5nSWYsXG4gICAgTWF0RGl2aWRlck1vZHVsZSxcbiAgICBmb3J3YXJkUmVmKCgpID0+IE5hdmlnYXRpb25JdGVtQ29tcG9uZW50KSxcbiAgICBBc3luY1BpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE5hdmlnYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpdGVtcyE6IE5hdmlnYXRpb247XG4gIHB1YmxpYyBzdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBsZXZlbCA9IDA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChOYXZpZ2F0aW9uU2VydmljZSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hdmlnYXRpb25TZXJ2aWNlOiBOYXZpZ2F0aW9uU2VydmljZSxcbiAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBASW5qZWN0KFNpZGVuYXZDb21wb25lbnRTZXJ2aWNlKVxuICAgIHB1YmxpYyByZWFkb25seSBzaWRlbmF2OiBTaWRlbmF2Q29tcG9uZW50U2VydmljZSxcbiAgKSB7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJ4YXAtcm9vdC1uYXZpZ2F0aW9uJylcbiAgcHVibGljIF9yb290ID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCByb290KHZhbHVlOiBib29sZWFuIHwgJycpIHtcbiAgICB0aGlzLl9yb290ID0gY29lcmNlQm9vbGVhbih2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3Jvb3QpIHtcbiAgICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5jb25maWckXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFwKChuYXZpZ2F0aW9uKSA9PiAodGhpcy5pdGVtcyA9IG5hdmlnYXRpb24pKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFwKCgpID0+IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHRoaXMuaXRlbXMgPz89IFtdO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgLy8gcmVnaW9uIHR5cGUgc2F2ZSBpdGVtIHByb3BlcnR5XG5cbiAgLy8gcmVxdWlyZWQgdG8gY2hlY2sgdGhlIHR5cGUgb2YgdGhlIGl0ZW0gcHJvcGVydHkgaW4gdGhlIG5nRm9yIGxvb3BcblxuICBwdWJsaWMgaXNOYXZpZ2F0aW9uRGl2aWRlckl0ZW0oXG4gICAgaXRlbTogTmF2aWdhdGlvbkl0ZW0gfCBOYXZpZ2F0aW9uRGl2aWRlckl0ZW0sXG4gICk6IGl0ZW0gaXMgTmF2aWdhdGlvbkRpdmlkZXJJdGVtIHtcbiAgICByZXR1cm4gKGl0ZW0gYXMgYW55KVsnZGl2aWRlciddO1xuICB9XG5cbiAgcHVibGljIGlzTmF2aWdhdGlvbkl0ZW0oXG4gICAgaXRlbTogTmF2aWdhdGlvbkl0ZW0gfCBOYXZpZ2F0aW9uRGl2aWRlckl0ZW0sXG4gICk6IGl0ZW0gaXMgTmF2aWdhdGlvbkl0ZW0ge1xuICAgIHJldHVybiAhdGhpcy5pc05hdmlnYXRpb25EaXZpZGVySXRlbShpdGVtKTtcbiAgfVxuXG4gIHB1YmxpYyBhc05hdmlnYXRpb25JdGVtKFxuICAgIGl0ZW06IE5hdmlnYXRpb25JdGVtIHwgTmF2aWdhdGlvbkRpdmlkZXJJdGVtLFxuICApOiBOYXZpZ2F0aW9uSXRlbSB7XG4gICAgaWYgKCF0aGlzLmlzTmF2aWdhdGlvbkl0ZW0oaXRlbSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGl0ZW0gaXMgbm90IGEgTmF2aWdhdGlvbkl0ZW0nKTtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cblxuICAvLyBlbmRyZWdpb25cbn1cbiIsIjxuZy10ZW1wbGF0ZSBbbmdGb3JPZl09XCJpdGVtc1wiIGxldC1pdGVtIG5nRm9yPlxuICA8bmctdGVtcGxhdGUgW25nSWZdPVwiaXNOYXZpZ2F0aW9uRGl2aWRlckl0ZW0oaXRlbSlcIj5cbiAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cbiAgICA8ZGl2ICpuZ0lmPVwiKHNpZGVuYXYuY29sbGFwc2VkJCB8IGFzeW5jKSA9PT0gZmFsc2VcIiBjbGFzcz1cInBsLTUgaC02XCI+XG4gICAgICA8c3BhbiAqbmdJZj1cIml0ZW0udGl0bGVcIj57e2l0ZW0udGl0bGV9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cImlzTmF2aWdhdGlvbkl0ZW0oaXRlbSlcIj5cbiAgICA8bGkgW2l0ZW1dPVwiYXNOYXZpZ2F0aW9uSXRlbShpdGVtKVwiIFtsZXZlbF09XCJsZXZlbFwiIGNsYXNzPVwiZGFyazpob3Zlcjp0ZXh0LXdoaXRlIGhvdmVyOnRleHQtYmxhY2tcIlxuICAgICAgICByeGFwLW5hdmlnYXRpb24taXRlbT48L2xpPlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==