@testgorilla/tgo-ui 2.29.4 → 2.29.5-beta.2

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.
@@ -1,11 +1,11 @@
1
- import { EventEmitter, TemplateRef } from '@angular/core';
1
+ import { EventEmitter, InputSignal, Signal, TemplateRef } from '@angular/core';
2
2
  import { IRoute, MenuItem } from "../navbar.model";
3
3
  import { AvatarSize } from "../../avatar/avatar.model";
4
4
  import { ApplicationTheme } from "../../../models/application-theme.model";
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class MobileNavbarSideSheetComponent {
7
7
  routes: IRoute[];
8
- activedRoute: string;
8
+ activedRoute: InputSignal<string>;
9
9
  email: string;
10
10
  userName: string;
11
11
  menuItems: MenuItem[];
@@ -17,9 +17,10 @@ export declare class MobileNavbarSideSheetComponent {
17
17
  logoutEvent: EventEmitter<void>;
18
18
  protected readonly translationContext = "NAVBAR.";
19
19
  protected avatarSize: typeof AvatarSize;
20
+ activeRoutesMap: Signal<Map<string, boolean>>;
20
21
  navigate(routeId: string): void;
21
22
  logout(): void;
22
23
  clickMenuItem(id: string): void;
23
24
  static ɵfac: i0.ɵɵFactoryDeclaration<MobileNavbarSideSheetComponent, never>;
24
- static ɵcmp: i0.ɵɵComponentDeclaration<MobileNavbarSideSheetComponent, "ui-mobile-navbar-side-sheet", never, { "routes": { "alias": "routes"; "required": false; }; "activedRoute": { "alias": "activedRoute"; "required": false; }; "email": { "alias": "email"; "required": false; }; "userName": { "alias": "userName"; "required": false; }; "menuItems": { "alias": "menuItems"; "required": false; }; "contentTemplateRef": { "alias": "contentTemplateRef"; "required": false; }; "isDesktop": { "alias": "isDesktop"; "required": false; }; "applicationTheme": { "alias": "applicationTheme"; "required": false; }; }, { "navigateEvent": "navigateEvent"; "menuItemClicked": "menuItemClicked"; "logoutEvent": "logoutEvent"; }, never, never, true, never>;
25
+ static ɵcmp: i0.ɵɵComponentDeclaration<MobileNavbarSideSheetComponent, "ui-mobile-navbar-side-sheet", never, { "routes": { "alias": "routes"; "required": false; }; "activedRoute": { "alias": "activedRoute"; "required": false; "isSignal": true; }; "email": { "alias": "email"; "required": false; }; "userName": { "alias": "userName"; "required": false; }; "menuItems": { "alias": "menuItems"; "required": false; }; "contentTemplateRef": { "alias": "contentTemplateRef"; "required": false; }; "isDesktop": { "alias": "isDesktop"; "required": false; }; "applicationTheme": { "alias": "applicationTheme"; "required": false; }; }, { "navigateEvent": "navigateEvent"; "menuItemClicked": "menuItemClicked"; "logoutEvent": "logoutEvent"; }, never, never, true, never>;
25
26
  }
@@ -1,4 +1,4 @@
1
- import { DestroyRef, EventEmitter, TemplateRef } from '@angular/core';
1
+ import { DestroyRef, EventEmitter, InputSignal, Signal, TemplateRef } from '@angular/core';
2
2
  import { IRoute, MenuItem, MenuState, ScreenSize } from './navbar.model';
3
3
  import { ApplicationTheme } from '../../models/application-theme.model';
4
4
  import { SideSheetService } from '../side-sheet/side-sheet.service';
@@ -22,10 +22,10 @@ export declare class NavbarComponent {
22
22
  /**
23
23
  * Actived route id
24
24
  *
25
- * @type {string}
25
+ * @type {InputSignal<string>}
26
26
  * @memberof NavbarComponent
27
27
  */
28
- activedRoute: string;
28
+ activedRoute: InputSignal<string>;
29
29
  /**
30
30
  * User first name and last name
31
31
  *
@@ -107,6 +107,7 @@ export declare class NavbarComponent {
107
107
  protected readonly isTablet$: import("rxjs").Observable<boolean>;
108
108
  protected isOpened: boolean;
109
109
  protected logoType: typeof LogoTypeEnum;
110
+ activeRoutesMap: Signal<Map<string, boolean>>;
110
111
  constructor(breakpointObserver: BreakpointObserver, defaultAppTheme: ApplicationTheme, sideSheetService: SideSheetService, destroyRef: DestroyRef);
111
112
  openMobileMenu(): void;
112
113
  navigate(routeId: string): void;
@@ -115,5 +116,5 @@ export declare class NavbarComponent {
115
116
  onChangeMenuState(isOpened: boolean, screenSize: ScreenSize): void;
116
117
  protected readonly AvatarSize: typeof AvatarSize;
117
118
  static ɵfac: i0.ɵɵFactoryDeclaration<NavbarComponent, [null, { optional: true; }, null, null]>;
118
- static ɵcmp: i0.ɵɵComponentDeclaration<NavbarComponent, "ui-navbar", never, { "routes": { "alias": "routes"; "required": false; }; "activedRoute": { "alias": "activedRoute"; "required": false; }; "userName": { "alias": "userName"; "required": false; }; "email": { "alias": "email"; "required": false; }; "menuItems": { "alias": "menuItems"; "required": false; }; "applicationTheme": { "alias": "applicationTheme"; "required": false; }; "contentTemplateRef": { "alias": "contentTemplateRef"; "required": false; }; "mobileBreakpoint": { "alias": "mobileBreakpoint"; "required": false; }; "isAvatar": { "alias": "isAvatar"; "required": false; }; "menuClass": { "alias": "menuClass"; "required": false; }; }, { "navigateEvent": "navigateEvent"; "menuItemClicked": "menuItemClicked"; "logoutEvent": "logoutEvent"; "menuState": "menuState"; }, never, ["[actions]", "*"], false, never>;
119
+ static ɵcmp: i0.ɵɵComponentDeclaration<NavbarComponent, "ui-navbar", never, { "routes": { "alias": "routes"; "required": false; }; "activedRoute": { "alias": "activedRoute"; "required": false; "isSignal": true; }; "userName": { "alias": "userName"; "required": false; }; "email": { "alias": "email"; "required": false; }; "menuItems": { "alias": "menuItems"; "required": false; }; "applicationTheme": { "alias": "applicationTheme"; "required": false; }; "contentTemplateRef": { "alias": "contentTemplateRef"; "required": false; }; "mobileBreakpoint": { "alias": "mobileBreakpoint"; "required": false; }; "isAvatar": { "alias": "isAvatar"; "required": false; }; "menuClass": { "alias": "menuClass"; "required": false; }; }, { "navigateEvent": "navigateEvent"; "menuItemClicked": "menuItemClicked"; "logoutEvent": "logoutEvent"; "menuState": "menuState"; }, never, ["[actions]", "*"], false, never>;
119
120
  }
@@ -1,4 +1,4 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
1
+ import { Component, computed, EventEmitter, input, Input, Output, } from '@angular/core';
2
2
  import { AsyncPipe, NgClass, NgForOf, NgIf, NgTemplateOutlet } from '@angular/common';
3
3
  import { IconComponentModule } from "../../icon/icon.component.module";
4
4
  import { MatIconModule } from "@angular/material/icon";
@@ -15,7 +15,7 @@ import * as i2 from "../../button/button.component";
15
15
  export class MobileNavbarSideSheetComponent {
16
16
  constructor() {
17
17
  this.routes = [];
18
- this.activedRoute = '';
18
+ this.activedRoute = input('');
19
19
  this.email = '';
20
20
  this.userName = '';
21
21
  this.menuItems = [];
@@ -26,6 +26,10 @@ export class MobileNavbarSideSheetComponent {
26
26
  this.logoutEvent = new EventEmitter();
27
27
  this.translationContext = 'NAVBAR.';
28
28
  this.avatarSize = AvatarSize;
29
+ this.activeRoutesMap = computed(() => {
30
+ const currentRoute = this.activedRoute();
31
+ return new Map(this.routes.map(route => [route.id, currentRoute.startsWith(route.id)]));
32
+ });
29
33
  }
30
34
  navigate(routeId) {
31
35
  this.navigateEvent.emit(`/${routeId}`);
@@ -37,7 +41,7 @@ export class MobileNavbarSideSheetComponent {
37
41
  this.menuItemClicked.emit(id);
38
42
  }
39
43
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MobileNavbarSideSheetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
40
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MobileNavbarSideSheetComponent, isStandalone: true, selector: "ui-mobile-navbar-side-sheet", inputs: { routes: "routes", activedRoute: "activedRoute", email: "email", userName: "userName", menuItems: "menuItems", contentTemplateRef: "contentTemplateRef", isDesktop: "isDesktop", applicationTheme: "applicationTheme" }, outputs: { navigateEvent: "navigateEvent", menuItemClicked: "menuItemClicked", logoutEvent: "logoutEvent" }, ngImport: i0, template: "<div class=\"mobile-navbar-container\">\n <ng-container *ngIf=\"isDesktop\" [ngTemplateOutlet]=\"userInfo\"></ng-container>\n\n <div class=\"routes\">\n <div\n *ngFor=\"let route of routes\"\n [attr.data-testid]=\"route.id\"\n data-test-role=\"nav-route\"\n (click)=\"navigate(route.id)\"\n class=\"route\"\n [ngClass]=\"{ active: activedRoute === route.id }\"\n >\n <span>{{ route.title }}</span>\n </div>\n </div>\n\n <div class=\"settings\">\n <ng-container *ngFor=\"let e of menuItems\">\n <div *ngIf=\"e\" class=\"menu-item\">\n <ui-button\n [attr.data-testid]=\"e.id\"\n data-test-role=\"menu-item\"\n [applicationTheme]=\"applicationTheme\"\n [fullWidth]=\"true\"\n [disabledScaleOnClick]=\"true\"\n [variant]=\"'menuCell'\"\n iconPosition=\"left\"\n [iconName]=\"e.icon\"\n [label]=\"e.text\"\n (buttonClickEvent)=\"clickMenuItem(e.id)\"\n (keydown.Tab)=\"$event.stopPropagation()\"\n (keydown.shift.tab)=\"$event.stopPropagation()\"\n [ariaLabel]=\"e.text + '--' + e.text\"\n ></ui-button>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div class=\"bottom-content\" [ngClass]=\"{ desktop: isDesktop }\">\n <ng-container *ngIf=\"!isDesktop\" [ngTemplateOutlet]=\"contentTemplateRef\"></ng-container>\n <ng-container *ngIf=\"isDesktop; else tablet\">\n <div class=\"menu-item\">\n <ui-button\n data-testid=\"logout-button\"\n [applicationTheme]=\"applicationTheme\"\n [fullWidth]=\"true\"\n [disabledScaleOnClick]=\"true\"\n [variant]=\"'menuCell'\"\n iconPosition=\"left\"\n [iconName]=\"'Logout-in-line'\"\n [label]=\"(translationContext + 'LOG_OUT' | uiTranslate | async)!\"\n (buttonClickEvent)=\"logout()\"\n (keydown.Tab)=\"$event.stopPropagation()\"\n (keydown.shift.tab)=\"$event.stopPropagation()\"\n ></ui-button>\n </div>\n </ng-container>\n\n <ng-template #tablet>\n <ng-container [ngTemplateOutlet]=\"userInfo\"></ng-container>\n </ng-template>\n</div>\n\n<ng-template #userInfo>\n <div class=\"user-info\" [ngClass]=\"{ desktop: isDesktop }\">\n <ui-avatar [size]=\"avatarSize.MEDIUM\" [name]=\"userName\"></ui-avatar>\n <div class=\"details-container\">\n <div class=\"name-container\">\n <span class=\"user-name\">{{ userName }}</span>\n <span class=\"user-email\">{{ email }}</span>\n </div>\n <ui-button\n *ngIf=\"!isDesktop\"\n data-testid=\"logout-button\"\n [tooltip]=\"(translationContext + 'LOG_OUT' | uiTranslate | async)!\"\n [iconName]=\"'Logout-in-line'\"\n [applicationTheme]=\"'light'\"\n [variant]=\"'icon-button'\"\n (click)=\"logout()\"\n ></ui-button>\n </div>\n </div>\n</ng-template>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host{display:flex;flex-direction:column;height:100%}.mobile-navbar-container{min-width:340px;padding-top:16px;height:100%}.mobile-navbar-container .routes{display:none}.mobile-navbar-container .routes .route{padding:0 16px;width:100%;height:48px;display:flex;justify-content:flex-start;align-items:center;font-size:14px;cursor:pointer}.mobile-navbar-container .routes .route.active{background-color:#f4f4f4;font-weight:700;font-family:ModernGothic,sans-serif}.mobile-navbar-container .routes .route:hover{background-color:#fff2fc;font-weight:700;font-family:ModernGothic,sans-serif}.mobile-navbar-container .routes .route:active{background-color:#ffe6fa}@media (max-width: 600px){.mobile-navbar-container .routes{display:block}}.menu-item{width:100%;height:48px;display:flex;font-size:14px;font-weight:700;font-family:ModernGothic,sans-serif;flex-direction:row;align-items:center;cursor:pointer}.menu-item ::ng-deep ui-button{width:100%}.menu-item ::ng-deep ui-button button{padding-left:16px!important}.menu-item ::ng-deep ui-button button span.icon{margin-right:16px!important}.menu-item ::ng-deep ui-button button.mat-mdc-unelevated-button.menuCell:hover{background-color:#fff2fc}.menu-item ::ng-deep ui-button button.mat-mdc-unelevated-button.menuCell:active{background-color:#ffe6fa}.bottom-content{width:100%;display:flex;align-items:center;flex-direction:column;position:sticky;bottom:0;background:#fff;z-index:1}.bottom-content.desktop{position:relative;border-top:1px #D3D3D3 solid;margin-top:16px;padding:16px 0 8px}.user-info{display:flex;align-items:center;gap:16px;padding:0 16px;margin-top:32px;margin-bottom:16px;width:100%}.user-info.desktop{margin-top:0;margin-bottom:32px}.user-info .details-container{display:flex;justify-content:space-between;width:100%;gap:8px}.user-info .name-container{display:flex;flex-direction:column;width:224px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-info .name-container .user-name{font-weight:700;font-size:14px;line-height:22px;font-family:ModernGothic,sans-serif;white-space:wrap}.user-info .name-container .user-email{width:100%;font-size:14px;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"], dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: IconComponentModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "pipe", type: UiTranslatePipe, name: "uiTranslate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: AccordionComponentModule }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: AvatarComponentModule }, { kind: "component", type: i1.AvatarComponent, selector: "ui-avatar", inputs: ["size", "imageUrl", "name", "tooltipText", "allowEdit", "applicationTheme", "backgroundColor"], outputs: ["editClick"] }, { kind: "ngmodule", type: ButtonComponentModule }, { kind: "component", type: i2.ButtonComponent, selector: "ui-button", inputs: ["size", "variant", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "fullWidth", "url", "urlTarget", "value", "tooltip", "isPremium", "type", "companyColor", "buttonBadgeConfig", "applicationTheme", "disabledScaleOnClick", "ariaLabel", "ariaRequired", "ariaLabelledby", "ariaDescribedby", "preventDefault", "hasBackground", "tooltipPosition", "role"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
44
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: MobileNavbarSideSheetComponent, isStandalone: true, selector: "ui-mobile-navbar-side-sheet", inputs: { routes: { classPropertyName: "routes", publicName: "routes", isSignal: false, isRequired: false, transformFunction: null }, activedRoute: { classPropertyName: "activedRoute", publicName: "activedRoute", isSignal: true, isRequired: false, transformFunction: null }, email: { classPropertyName: "email", publicName: "email", isSignal: false, isRequired: false, transformFunction: null }, userName: { classPropertyName: "userName", publicName: "userName", isSignal: false, isRequired: false, transformFunction: null }, menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: false, isRequired: false, transformFunction: null }, contentTemplateRef: { classPropertyName: "contentTemplateRef", publicName: "contentTemplateRef", isSignal: false, isRequired: false, transformFunction: null }, isDesktop: { classPropertyName: "isDesktop", publicName: "isDesktop", isSignal: false, isRequired: false, transformFunction: null }, applicationTheme: { classPropertyName: "applicationTheme", publicName: "applicationTheme", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { navigateEvent: "navigateEvent", menuItemClicked: "menuItemClicked", logoutEvent: "logoutEvent" }, ngImport: i0, template: "<div class=\"mobile-navbar-container\">\n <ng-container *ngIf=\"isDesktop\" [ngTemplateOutlet]=\"userInfo\"></ng-container>\n\n <div class=\"routes\">\n <div\n *ngFor=\"let route of routes\"\n [attr.data-testid]=\"route.id\"\n data-test-role=\"nav-route\"\n (click)=\"navigate(route.id)\"\n class=\"route\"\n [ngClass]=\"{ active: activeRoutesMap().get(route.id) }\"\n >\n <span>{{ route.title }}</span>\n </div>\n </div>\n\n <div class=\"settings\">\n <ng-container *ngFor=\"let e of menuItems\">\n <div *ngIf=\"e\" class=\"menu-item\">\n <ui-button\n [attr.data-testid]=\"e.id\"\n data-test-role=\"menu-item\"\n [applicationTheme]=\"applicationTheme\"\n [fullWidth]=\"true\"\n [disabledScaleOnClick]=\"true\"\n [variant]=\"'menuCell'\"\n iconPosition=\"left\"\n [iconName]=\"e.icon\"\n [label]=\"e.text\"\n (buttonClickEvent)=\"clickMenuItem(e.id)\"\n (keydown.Tab)=\"$event.stopPropagation()\"\n (keydown.shift.tab)=\"$event.stopPropagation()\"\n [ariaLabel]=\"e.text + '--' + e.text\"\n ></ui-button>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div class=\"bottom-content\" [ngClass]=\"{ desktop: isDesktop }\">\n <ng-container *ngIf=\"!isDesktop\" [ngTemplateOutlet]=\"contentTemplateRef\"></ng-container>\n <ng-container *ngIf=\"isDesktop; else tablet\">\n <div class=\"menu-item\">\n <ui-button\n data-testid=\"logout-button\"\n [applicationTheme]=\"applicationTheme\"\n [fullWidth]=\"true\"\n [disabledScaleOnClick]=\"true\"\n [variant]=\"'menuCell'\"\n iconPosition=\"left\"\n [iconName]=\"'Logout-in-line'\"\n [label]=\"(translationContext + 'LOG_OUT' | uiTranslate | async)!\"\n (buttonClickEvent)=\"logout()\"\n (keydown.Tab)=\"$event.stopPropagation()\"\n (keydown.shift.tab)=\"$event.stopPropagation()\"\n ></ui-button>\n </div>\n </ng-container>\n\n <ng-template #tablet>\n <ng-container [ngTemplateOutlet]=\"userInfo\"></ng-container>\n </ng-template>\n</div>\n\n<ng-template #userInfo>\n <div class=\"user-info\" [ngClass]=\"{ desktop: isDesktop }\">\n <ui-avatar [size]=\"avatarSize.MEDIUM\" [name]=\"userName\"></ui-avatar>\n <div class=\"details-container\">\n <div class=\"name-container\">\n <span class=\"user-name\">{{ userName }}</span>\n <span class=\"user-email\">{{ email }}</span>\n </div>\n <ui-button\n *ngIf=\"!isDesktop\"\n data-testid=\"logout-button\"\n [tooltip]=\"(translationContext + 'LOG_OUT' | uiTranslate | async)!\"\n [iconName]=\"'Logout-in-line'\"\n [applicationTheme]=\"'light'\"\n [variant]=\"'icon-button'\"\n (click)=\"logout()\"\n ></ui-button>\n </div>\n </div>\n</ng-template>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host{display:flex;flex-direction:column;height:100%}.mobile-navbar-container{min-width:340px;padding-top:16px;height:100%}.mobile-navbar-container .routes{display:none}.mobile-navbar-container .routes .route{padding:0 16px;width:100%;height:48px;display:flex;justify-content:flex-start;align-items:center;font-size:14px;cursor:pointer}.mobile-navbar-container .routes .route.active{background-color:#f4f4f4;font-weight:700;font-family:ModernGothic,sans-serif}.mobile-navbar-container .routes .route:hover{background-color:#fff2fc;font-weight:700;font-family:ModernGothic,sans-serif}.mobile-navbar-container .routes .route:active{background-color:#ffe6fa}@media (max-width: 600px){.mobile-navbar-container .routes{display:block}}.menu-item{width:100%;height:48px;display:flex;font-size:14px;font-weight:700;font-family:ModernGothic,sans-serif;flex-direction:row;align-items:center;cursor:pointer}.menu-item ::ng-deep ui-button{width:100%}.menu-item ::ng-deep ui-button button{padding-left:16px!important}.menu-item ::ng-deep ui-button button span.icon{margin-right:16px!important}.menu-item ::ng-deep ui-button button.mat-mdc-unelevated-button.menuCell:hover{background-color:#fff2fc}.menu-item ::ng-deep ui-button button.mat-mdc-unelevated-button.menuCell:active{background-color:#ffe6fa}.bottom-content{width:100%;display:flex;align-items:center;flex-direction:column;position:sticky;bottom:0;background:#fff;z-index:1}.bottom-content.desktop{position:relative;border-top:1px #D3D3D3 solid;margin-top:16px;padding:16px 0 8px}.user-info{display:flex;align-items:center;gap:16px;padding:0 16px;margin-top:32px;margin-bottom:16px;width:100%}.user-info.desktop{margin-top:0;margin-bottom:32px}.user-info .details-container{display:flex;justify-content:space-between;width:100%;gap:8px}.user-info .name-container{display:flex;flex-direction:column;width:224px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-info .name-container .user-name{font-weight:700;font-size:14px;line-height:22px;font-family:ModernGothic,sans-serif;white-space:wrap}.user-info .name-container .user-email{width:100%;font-size:14px;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"], dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: IconComponentModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatMenuModule }, { kind: "pipe", type: UiTranslatePipe, name: "uiTranslate" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: AccordionComponentModule }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: AvatarComponentModule }, { kind: "component", type: i1.AvatarComponent, selector: "ui-avatar", inputs: ["size", "imageUrl", "name", "tooltipText", "allowEdit", "applicationTheme", "backgroundColor"], outputs: ["editClick"] }, { kind: "ngmodule", type: ButtonComponentModule }, { kind: "component", type: i2.ButtonComponent, selector: "ui-button", inputs: ["size", "variant", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "fullWidth", "url", "urlTarget", "value", "tooltip", "isPremium", "type", "companyColor", "buttonBadgeConfig", "applicationTheme", "disabledScaleOnClick", "ariaLabel", "ariaRequired", "ariaLabelledby", "ariaDescribedby", "preventDefault", "hasBackground", "tooltipPosition", "role"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
41
45
  }
42
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MobileNavbarSideSheetComponent, decorators: [{
43
47
  type: Component,
@@ -55,11 +59,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
55
59
  AvatarComponentModule,
56
60
  ButtonComponentModule,
57
61
  AsyncPipe,
58
- ], template: "<div class=\"mobile-navbar-container\">\n <ng-container *ngIf=\"isDesktop\" [ngTemplateOutlet]=\"userInfo\"></ng-container>\n\n <div class=\"routes\">\n <div\n *ngFor=\"let route of routes\"\n [attr.data-testid]=\"route.id\"\n data-test-role=\"nav-route\"\n (click)=\"navigate(route.id)\"\n class=\"route\"\n [ngClass]=\"{ active: activedRoute === route.id }\"\n >\n <span>{{ route.title }}</span>\n </div>\n </div>\n\n <div class=\"settings\">\n <ng-container *ngFor=\"let e of menuItems\">\n <div *ngIf=\"e\" class=\"menu-item\">\n <ui-button\n [attr.data-testid]=\"e.id\"\n data-test-role=\"menu-item\"\n [applicationTheme]=\"applicationTheme\"\n [fullWidth]=\"true\"\n [disabledScaleOnClick]=\"true\"\n [variant]=\"'menuCell'\"\n iconPosition=\"left\"\n [iconName]=\"e.icon\"\n [label]=\"e.text\"\n (buttonClickEvent)=\"clickMenuItem(e.id)\"\n (keydown.Tab)=\"$event.stopPropagation()\"\n (keydown.shift.tab)=\"$event.stopPropagation()\"\n [ariaLabel]=\"e.text + '--' + e.text\"\n ></ui-button>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div class=\"bottom-content\" [ngClass]=\"{ desktop: isDesktop }\">\n <ng-container *ngIf=\"!isDesktop\" [ngTemplateOutlet]=\"contentTemplateRef\"></ng-container>\n <ng-container *ngIf=\"isDesktop; else tablet\">\n <div class=\"menu-item\">\n <ui-button\n data-testid=\"logout-button\"\n [applicationTheme]=\"applicationTheme\"\n [fullWidth]=\"true\"\n [disabledScaleOnClick]=\"true\"\n [variant]=\"'menuCell'\"\n iconPosition=\"left\"\n [iconName]=\"'Logout-in-line'\"\n [label]=\"(translationContext + 'LOG_OUT' | uiTranslate | async)!\"\n (buttonClickEvent)=\"logout()\"\n (keydown.Tab)=\"$event.stopPropagation()\"\n (keydown.shift.tab)=\"$event.stopPropagation()\"\n ></ui-button>\n </div>\n </ng-container>\n\n <ng-template #tablet>\n <ng-container [ngTemplateOutlet]=\"userInfo\"></ng-container>\n </ng-template>\n</div>\n\n<ng-template #userInfo>\n <div class=\"user-info\" [ngClass]=\"{ desktop: isDesktop }\">\n <ui-avatar [size]=\"avatarSize.MEDIUM\" [name]=\"userName\"></ui-avatar>\n <div class=\"details-container\">\n <div class=\"name-container\">\n <span class=\"user-name\">{{ userName }}</span>\n <span class=\"user-email\">{{ email }}</span>\n </div>\n <ui-button\n *ngIf=\"!isDesktop\"\n data-testid=\"logout-button\"\n [tooltip]=\"(translationContext + 'LOG_OUT' | uiTranslate | async)!\"\n [iconName]=\"'Logout-in-line'\"\n [applicationTheme]=\"'light'\"\n [variant]=\"'icon-button'\"\n (click)=\"logout()\"\n ></ui-button>\n </div>\n </div>\n</ng-template>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host{display:flex;flex-direction:column;height:100%}.mobile-navbar-container{min-width:340px;padding-top:16px;height:100%}.mobile-navbar-container .routes{display:none}.mobile-navbar-container .routes .route{padding:0 16px;width:100%;height:48px;display:flex;justify-content:flex-start;align-items:center;font-size:14px;cursor:pointer}.mobile-navbar-container .routes .route.active{background-color:#f4f4f4;font-weight:700;font-family:ModernGothic,sans-serif}.mobile-navbar-container .routes .route:hover{background-color:#fff2fc;font-weight:700;font-family:ModernGothic,sans-serif}.mobile-navbar-container .routes .route:active{background-color:#ffe6fa}@media (max-width: 600px){.mobile-navbar-container .routes{display:block}}.menu-item{width:100%;height:48px;display:flex;font-size:14px;font-weight:700;font-family:ModernGothic,sans-serif;flex-direction:row;align-items:center;cursor:pointer}.menu-item ::ng-deep ui-button{width:100%}.menu-item ::ng-deep ui-button button{padding-left:16px!important}.menu-item ::ng-deep ui-button button span.icon{margin-right:16px!important}.menu-item ::ng-deep ui-button button.mat-mdc-unelevated-button.menuCell:hover{background-color:#fff2fc}.menu-item ::ng-deep ui-button button.mat-mdc-unelevated-button.menuCell:active{background-color:#ffe6fa}.bottom-content{width:100%;display:flex;align-items:center;flex-direction:column;position:sticky;bottom:0;background:#fff;z-index:1}.bottom-content.desktop{position:relative;border-top:1px #D3D3D3 solid;margin-top:16px;padding:16px 0 8px}.user-info{display:flex;align-items:center;gap:16px;padding:0 16px;margin-top:32px;margin-bottom:16px;width:100%}.user-info.desktop{margin-top:0;margin-bottom:32px}.user-info .details-container{display:flex;justify-content:space-between;width:100%;gap:8px}.user-info .name-container{display:flex;flex-direction:column;width:224px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-info .name-container .user-name{font-weight:700;font-size:14px;line-height:22px;font-family:ModernGothic,sans-serif;white-space:wrap}.user-info .name-container .user-email{width:100%;font-size:14px;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"] }]
62
+ ], template: "<div class=\"mobile-navbar-container\">\n <ng-container *ngIf=\"isDesktop\" [ngTemplateOutlet]=\"userInfo\"></ng-container>\n\n <div class=\"routes\">\n <div\n *ngFor=\"let route of routes\"\n [attr.data-testid]=\"route.id\"\n data-test-role=\"nav-route\"\n (click)=\"navigate(route.id)\"\n class=\"route\"\n [ngClass]=\"{ active: activeRoutesMap().get(route.id) }\"\n >\n <span>{{ route.title }}</span>\n </div>\n </div>\n\n <div class=\"settings\">\n <ng-container *ngFor=\"let e of menuItems\">\n <div *ngIf=\"e\" class=\"menu-item\">\n <ui-button\n [attr.data-testid]=\"e.id\"\n data-test-role=\"menu-item\"\n [applicationTheme]=\"applicationTheme\"\n [fullWidth]=\"true\"\n [disabledScaleOnClick]=\"true\"\n [variant]=\"'menuCell'\"\n iconPosition=\"left\"\n [iconName]=\"e.icon\"\n [label]=\"e.text\"\n (buttonClickEvent)=\"clickMenuItem(e.id)\"\n (keydown.Tab)=\"$event.stopPropagation()\"\n (keydown.shift.tab)=\"$event.stopPropagation()\"\n [ariaLabel]=\"e.text + '--' + e.text\"\n ></ui-button>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div class=\"bottom-content\" [ngClass]=\"{ desktop: isDesktop }\">\n <ng-container *ngIf=\"!isDesktop\" [ngTemplateOutlet]=\"contentTemplateRef\"></ng-container>\n <ng-container *ngIf=\"isDesktop; else tablet\">\n <div class=\"menu-item\">\n <ui-button\n data-testid=\"logout-button\"\n [applicationTheme]=\"applicationTheme\"\n [fullWidth]=\"true\"\n [disabledScaleOnClick]=\"true\"\n [variant]=\"'menuCell'\"\n iconPosition=\"left\"\n [iconName]=\"'Logout-in-line'\"\n [label]=\"(translationContext + 'LOG_OUT' | uiTranslate | async)!\"\n (buttonClickEvent)=\"logout()\"\n (keydown.Tab)=\"$event.stopPropagation()\"\n (keydown.shift.tab)=\"$event.stopPropagation()\"\n ></ui-button>\n </div>\n </ng-container>\n\n <ng-template #tablet>\n <ng-container [ngTemplateOutlet]=\"userInfo\"></ng-container>\n </ng-template>\n</div>\n\n<ng-template #userInfo>\n <div class=\"user-info\" [ngClass]=\"{ desktop: isDesktop }\">\n <ui-avatar [size]=\"avatarSize.MEDIUM\" [name]=\"userName\"></ui-avatar>\n <div class=\"details-container\">\n <div class=\"name-container\">\n <span class=\"user-name\">{{ userName }}</span>\n <span class=\"user-email\">{{ email }}</span>\n </div>\n <ui-button\n *ngIf=\"!isDesktop\"\n data-testid=\"logout-button\"\n [tooltip]=\"(translationContext + 'LOG_OUT' | uiTranslate | async)!\"\n [iconName]=\"'Logout-in-line'\"\n [applicationTheme]=\"'light'\"\n [variant]=\"'icon-button'\"\n (click)=\"logout()\"\n ></ui-button>\n </div>\n </div>\n</ng-template>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host{display:flex;flex-direction:column;height:100%}.mobile-navbar-container{min-width:340px;padding-top:16px;height:100%}.mobile-navbar-container .routes{display:none}.mobile-navbar-container .routes .route{padding:0 16px;width:100%;height:48px;display:flex;justify-content:flex-start;align-items:center;font-size:14px;cursor:pointer}.mobile-navbar-container .routes .route.active{background-color:#f4f4f4;font-weight:700;font-family:ModernGothic,sans-serif}.mobile-navbar-container .routes .route:hover{background-color:#fff2fc;font-weight:700;font-family:ModernGothic,sans-serif}.mobile-navbar-container .routes .route:active{background-color:#ffe6fa}@media (max-width: 600px){.mobile-navbar-container .routes{display:block}}.menu-item{width:100%;height:48px;display:flex;font-size:14px;font-weight:700;font-family:ModernGothic,sans-serif;flex-direction:row;align-items:center;cursor:pointer}.menu-item ::ng-deep ui-button{width:100%}.menu-item ::ng-deep ui-button button{padding-left:16px!important}.menu-item ::ng-deep ui-button button span.icon{margin-right:16px!important}.menu-item ::ng-deep ui-button button.mat-mdc-unelevated-button.menuCell:hover{background-color:#fff2fc}.menu-item ::ng-deep ui-button button.mat-mdc-unelevated-button.menuCell:active{background-color:#ffe6fa}.bottom-content{width:100%;display:flex;align-items:center;flex-direction:column;position:sticky;bottom:0;background:#fff;z-index:1}.bottom-content.desktop{position:relative;border-top:1px #D3D3D3 solid;margin-top:16px;padding:16px 0 8px}.user-info{display:flex;align-items:center;gap:16px;padding:0 16px;margin-top:32px;margin-bottom:16px;width:100%}.user-info.desktop{margin-top:0;margin-bottom:32px}.user-info .details-container{display:flex;justify-content:space-between;width:100%;gap:8px}.user-info .name-container{display:flex;flex-direction:column;width:224px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-info .name-container .user-name{font-weight:700;font-size:14px;line-height:22px;font-family:ModernGothic,sans-serif;white-space:wrap}.user-info .name-container .user-email{width:100%;font-size:14px;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}\n"] }]
59
63
  }], propDecorators: { routes: [{
60
64
  type: Input
61
- }], activedRoute: [{
62
- type: Input
63
65
  }], email: [{
64
66
  type: Input
65
67
  }], userName: [{
@@ -79,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
79
81
  }], logoutEvent: [{
80
82
  type: Output
81
83
  }] } });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLW5hdmJhci1zaWRlLXNoZWV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9uYXZiYXIvbW9iaWxlLW5hdmJhci1zaWRlLXNoZWV0L21vYmlsZS1uYXZiYXItc2lkZS1zaGVldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Z28tY2Fub3B5LXVpL2NvbXBvbmVudHMvbmF2YmFyL21vYmlsZS1uYXZiYXItc2lkZS1zaGVldC9tb2JpbGUtbmF2YmFyLXNpZGUtc2hlZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUVwRixPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7OztBQXdCdkQsTUFBTSxPQUFPLDhCQUE4QjtJQXJCM0M7UUFzQlcsV0FBTSxHQUFhLEVBQUUsQ0FBQztRQUN0QixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLGNBQVMsR0FBZSxFQUFFLENBQUM7UUFFM0IsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixxQkFBZ0IsR0FBcUIsT0FBTyxDQUFDO1FBRTVDLGtCQUFhLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDakUsb0JBQWUsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNuRSxnQkFBVyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRWxELHVCQUFrQixHQUFHLFNBQVMsQ0FBQztRQUN4QyxlQUFVLEdBQUcsVUFBVSxDQUFDO0tBYW5DO0lBWEMsUUFBUSxDQUFDLE9BQWU7UUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsYUFBYSxDQUFDLEVBQVU7UUFDdEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEMsQ0FBQzsrR0EzQlUsOEJBQThCO21HQUE5Qiw4QkFBOEIsc2FDbkMzQyx5MkZBb0ZBLDJ6SURoRUksT0FBTyxtSEFDUCxPQUFPLG1GQUNQLG1CQUFtQiw4QkFDbkIsYUFBYSw4QkFDYixhQUFhLDBCQUNiLGVBQWUsbURBQ2YsZUFBZSw4QkFDZix3QkFBd0IsK0JBQ3hCLElBQUksNkZBQ0osZ0JBQWdCLG1KQUNoQixxQkFBcUIsdU9BQ3JCLHFCQUFxQixxaEJBQ3JCLFNBQVM7OzRGQUdBLDhCQUE4QjtrQkFyQjFDLFNBQVM7K0JBQ0UsNkJBQTZCLGNBRzNCLElBQUksV0FDUDt3QkFDUCxPQUFPO3dCQUNQLE9BQU87d0JBQ1AsbUJBQW1CO3dCQUNuQixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixlQUFlO3dCQUNmLHdCQUF3Qjt3QkFDeEIsSUFBSTt3QkFDSixnQkFBZ0I7d0JBQ2hCLHFCQUFxQjt3QkFDckIscUJBQXFCO3dCQUNyQixTQUFTO3FCQUNWOzhCQUdRLE1BQU07c0JBQWQsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJUm91dGUsIE1lbnVJdGVtIH0gZnJvbSBcIi4uL25hdmJhci5tb2RlbFwiO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ0Zvck9mLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEljb25Db21wb25lbnRNb2R1bGUgfSBmcm9tIFwiLi4vLi4vaWNvbi9pY29uLmNvbXBvbmVudC5tb2R1bGVcIjtcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvblwiO1xuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9tZW51XCI7XG5pbXBvcnQgeyBVaVRyYW5zbGF0ZVBpcGUgfSBmcm9tIFwiLi4vLi4vLi4vcGlwZXMvdWktdHJhbnNsYXRlLnBpcGVcIjtcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9idXR0b25cIjtcbmltcG9ydCB7IEFjY29yZGlvbkNvbXBvbmVudE1vZHVsZSB9IGZyb20gXCIuLi8uLi9hY2NvcmRpb24vYWNjb3JkaW9uLmNvbXBvbmVudC5tb2R1bGVcIjtcbmltcG9ydCB7IEF2YXRhckNvbXBvbmVudE1vZHVsZSB9IGZyb20gXCIuLi8uLi9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC5tb2R1bGVcIjtcbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudE1vZHVsZSB9IGZyb20gXCIuLi8uLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudC5tb2R1bGVcIjtcbmltcG9ydCB7IEF2YXRhclNpemUgfSBmcm9tIFwiLi4vLi4vYXZhdGFyL2F2YXRhci5tb2RlbFwiO1xuaW1wb3J0IHsgQXBwbGljYXRpb25UaGVtZSB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvYXBwbGljYXRpb24tdGhlbWUubW9kZWxcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndWktbW9iaWxlLW5hdmJhci1zaWRlLXNoZWV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21vYmlsZS1uYXZiYXItc2lkZS1zaGVldC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21vYmlsZS1uYXZiYXItc2lkZS1zaGVldC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTmdGb3JPZixcbiAgICBOZ0NsYXNzLFxuICAgIEljb25Db21wb25lbnRNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRNZW51TW9kdWxlLFxuICAgIFVpVHJhbnNsYXRlUGlwZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgQWNjb3JkaW9uQ29tcG9uZW50TW9kdWxlLFxuICAgIE5nSWYsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBBdmF0YXJDb21wb25lbnRNb2R1bGUsXG4gICAgQnV0dG9uQ29tcG9uZW50TW9kdWxlLFxuICAgIEFzeW5jUGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTW9iaWxlTmF2YmFyU2lkZVNoZWV0Q29tcG9uZW50IHtcbiAgQElucHV0KCkgcm91dGVzOiBJUm91dGVbXSA9IFtdO1xuICBASW5wdXQoKSBhY3RpdmVkUm91dGUgPSAnJztcbiAgQElucHV0KCkgZW1haWwgPSAnJztcbiAgQElucHV0KCkgdXNlck5hbWUgPSAnJztcbiAgQElucHV0KCkgbWVudUl0ZW1zOiBNZW51SXRlbVtdID0gW107XG4gIEBJbnB1dCgpIGNvbnRlbnRUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgaXNEZXNrdG9wID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFwcGxpY2F0aW9uVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUgPSAnbGlnaHQnO1xuXG4gIEBPdXRwdXQoKSBuYXZpZ2F0ZUV2ZW50OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgbWVudUl0ZW1DbGlja2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgbG9nb3V0RXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhbnNsYXRpb25Db250ZXh0ID0gJ05BVkJBUi4nO1xuICBwcm90ZWN0ZWQgYXZhdGFyU2l6ZSA9IEF2YXRhclNpemU7XG5cbiAgbmF2aWdhdGUocm91dGVJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5uYXZpZ2F0ZUV2ZW50LmVtaXQoYC8ke3JvdXRlSWR9YCk7XG4gIH1cblxuICBsb2dvdXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2dvdXRFdmVudC5lbWl0KCk7XG4gIH1cblxuICBjbGlja01lbnVJdGVtKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLm1lbnVJdGVtQ2xpY2tlZC5lbWl0KGlkKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1vYmlsZS1uYXZiYXItY29udGFpbmVyXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0Rlc2t0b3BcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJ1c2VySW5mb1wiPjwvbmctY29udGFpbmVyPlxuXG4gIDxkaXYgY2xhc3M9XCJyb3V0ZXNcIj5cbiAgICA8ZGl2XG4gICAgICAqbmdGb3I9XCJsZXQgcm91dGUgb2Ygcm91dGVzXCJcbiAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cInJvdXRlLmlkXCJcbiAgICAgIGRhdGEtdGVzdC1yb2xlPVwibmF2LXJvdXRlXCJcbiAgICAgIChjbGljayk9XCJuYXZpZ2F0ZShyb3V0ZS5pZClcIlxuICAgICAgY2xhc3M9XCJyb3V0ZVwiXG4gICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogYWN0aXZlZFJvdXRlID09PSByb3V0ZS5pZCB9XCJcbiAgICA+XG4gICAgICA8c3Bhbj57eyByb3V0ZS50aXRsZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInNldHRpbmdzXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZSBvZiBtZW51SXRlbXNcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJlXCIgY2xhc3M9XCJtZW51LWl0ZW1cIj5cbiAgICAgICAgPHVpLWJ1dHRvblxuICAgICAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cImUuaWRcIlxuICAgICAgICAgIGRhdGEtdGVzdC1yb2xlPVwibWVudS1pdGVtXCJcbiAgICAgICAgICBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICAgIFtkaXNhYmxlZFNjYWxlT25DbGlja109XCJ0cnVlXCJcbiAgICAgICAgICBbdmFyaWFudF09XCInbWVudUNlbGwnXCJcbiAgICAgICAgICBpY29uUG9zaXRpb249XCJsZWZ0XCJcbiAgICAgICAgICBbaWNvbk5hbWVdPVwiZS5pY29uXCJcbiAgICAgICAgICBbbGFiZWxdPVwiZS50ZXh0XCJcbiAgICAgICAgICAoYnV0dG9uQ2xpY2tFdmVudCk9XCJjbGlja01lbnVJdGVtKGUuaWQpXCJcbiAgICAgICAgICAoa2V5ZG93bi5UYWIpPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAoa2V5ZG93bi5zaGlmdC50YWIpPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICBbYXJpYUxhYmVsXT1cImUudGV4dCArICctLScgKyBlLnRleHRcIlxuICAgICAgICA+PC91aS1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImJvdHRvbS1jb250ZW50XCIgW25nQ2xhc3NdPVwieyBkZXNrdG9wOiBpc0Rlc2t0b3AgfVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRGVza3RvcFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRUZW1wbGF0ZVJlZlwiPjwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNEZXNrdG9wOyBlbHNlIHRhYmxldFwiPlxuICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW1cIj5cbiAgICAgIDx1aS1idXR0b25cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJsb2dvdXQtYnV0dG9uXCJcbiAgICAgICAgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICAgIFtkaXNhYmxlZFNjYWxlT25DbGlja109XCJ0cnVlXCJcbiAgICAgICAgW3ZhcmlhbnRdPVwiJ21lbnVDZWxsJ1wiXG4gICAgICAgIGljb25Qb3NpdGlvbj1cImxlZnRcIlxuICAgICAgICBbaWNvbk5hbWVdPVwiJ0xvZ291dC1pbi1saW5lJ1wiXG4gICAgICAgIFtsYWJlbF09XCIodHJhbnNsYXRpb25Db250ZXh0ICsgJ0xPR19PVVQnIHwgdWlUcmFuc2xhdGUgfCBhc3luYykhXCJcbiAgICAgICAgKGJ1dHRvbkNsaWNrRXZlbnQpPVwibG9nb3V0KClcIlxuICAgICAgICAoa2V5ZG93bi5UYWIpPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgKGtleWRvd24uc2hpZnQudGFiKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICA+PC91aS1idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy10ZW1wbGF0ZSAjdGFibGV0PlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidXNlckluZm9cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3VzZXJJbmZvPlxuICA8ZGl2IGNsYXNzPVwidXNlci1pbmZvXCIgW25nQ2xhc3NdPVwieyBkZXNrdG9wOiBpc0Rlc2t0b3AgfVwiPlxuICAgIDx1aS1hdmF0YXIgW3NpemVdPVwiYXZhdGFyU2l6ZS5NRURJVU1cIiBbbmFtZV09XCJ1c2VyTmFtZVwiPjwvdWktYXZhdGFyPlxuICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm5hbWUtY29udGFpbmVyXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidXNlci1uYW1lXCI+e3sgdXNlck5hbWUgfX08L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidXNlci1lbWFpbFwiPnt7IGVtYWlsIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8dWktYnV0dG9uXG4gICAgICAgICpuZ0lmPVwiIWlzRGVza3RvcFwiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwibG9nb3V0LWJ1dHRvblwiXG4gICAgICAgIFt0b29sdGlwXT1cIih0cmFuc2xhdGlvbkNvbnRleHQgKyAnTE9HX09VVCcgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jKSFcIlxuICAgICAgICBbaWNvbk5hbWVdPVwiJ0xvZ291dC1pbi1saW5lJ1wiXG4gICAgICAgIFthcHBsaWNhdGlvblRoZW1lXT1cIidsaWdodCdcIlxuICAgICAgICBbdmFyaWFudF09XCInaWNvbi1idXR0b24nXCJcbiAgICAgICAgKGNsaWNrKT1cImxvZ291dCgpXCJcbiAgICAgID48L3VpLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9iaWxlLW5hdmJhci1zaWRlLXNoZWV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9uYXZiYXIvbW9iaWxlLW5hdmJhci1zaWRlLXNoZWV0L21vYmlsZS1uYXZiYXItc2lkZS1zaGVldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90Z28tY2Fub3B5LXVpL2NvbXBvbmVudHMvbmF2YmFyL21vYmlsZS1uYXZiYXItc2lkZS1zaGVldC9tb2JpbGUtbmF2YmFyLXNpZGUtc2hlZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxRQUFRLEVBQ1IsWUFBWSxFQUNaLEtBQUssRUFDTCxLQUFLLEVBRUwsTUFBTSxHQUdQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDdEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7O0FBd0J2RCxNQUFNLE9BQU8sOEJBQThCO0lBckIzQztRQXNCVyxXQUFNLEdBQWEsRUFBRSxDQUFDO1FBQy9CLGlCQUFZLEdBQXdCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyQyxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLGNBQVMsR0FBZSxFQUFFLENBQUM7UUFFM0IsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixxQkFBZ0IsR0FBcUIsT0FBTyxDQUFDO1FBRTVDLGtCQUFhLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDakUsb0JBQWUsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNuRSxnQkFBVyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRWxELHVCQUFrQixHQUFHLFNBQVMsQ0FBQztRQUN4QyxlQUFVLEdBQUcsVUFBVSxDQUFDO1FBRWxDLG9CQUFlLEdBQWdDLFFBQVEsQ0FBQyxHQUFHLEVBQUU7WUFDM0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3pDLE9BQU8sSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUYsQ0FBQyxDQUFDLENBQUM7S0FhSjtJQVhDLFFBQVEsQ0FBQyxPQUFlO1FBQ3RCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGFBQWEsQ0FBQyxFQUFVO1FBQ3RCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7K0dBaENVLDhCQUE4QjttR0FBOUIsOEJBQThCLHd4Q0M3QzNDLCsyRkFvRkEsMnpJRHRESSxPQUFPLG1IQUNQLE9BQU8sbUZBQ1AsbUJBQW1CLDhCQUNuQixhQUFhLDhCQUNiLGFBQWEsMEJBQ2IsZUFBZSxtREFDZixlQUFlLDhCQUNmLHdCQUF3QiwrQkFDeEIsSUFBSSw2RkFDSixnQkFBZ0IsbUpBQ2hCLHFCQUFxQix1T0FDckIscUJBQXFCLHFoQkFDckIsU0FBUzs7NEZBR0EsOEJBQThCO2tCQXJCMUMsU0FBUzsrQkFDRSw2QkFBNkIsY0FHM0IsSUFBSSxXQUNQO3dCQUNQLE9BQU87d0JBQ1AsT0FBTzt3QkFDUCxtQkFBbUI7d0JBQ25CLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixlQUFlO3dCQUNmLGVBQWU7d0JBQ2Ysd0JBQXdCO3dCQUN4QixJQUFJO3dCQUNKLGdCQUFnQjt3QkFDaEIscUJBQXFCO3dCQUNyQixxQkFBcUI7d0JBQ3JCLFNBQVM7cUJBQ1Y7OEJBR1EsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUVJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBpbnB1dCxcbiAgSW5wdXQsXG4gIElucHV0U2lnbmFsLFxuICBPdXRwdXQsXG4gIFNpZ25hbCxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVJvdXRlLCBNZW51SXRlbSB9IGZyb20gXCIuLi9uYXZiYXIubW9kZWxcIjtcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcywgTmdGb3JPZiwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50TW9kdWxlIH0gZnJvbSBcIi4uLy4uL2ljb24vaWNvbi5jb21wb25lbnQubW9kdWxlXCI7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2ljb25cIjtcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudVwiO1xuaW1wb3J0IHsgVWlUcmFuc2xhdGVQaXBlIH0gZnJvbSBcIi4uLy4uLy4uL3BpcGVzL3VpLXRyYW5zbGF0ZS5waXBlXCI7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uXCI7XG5pbXBvcnQgeyBBY2NvcmRpb25Db21wb25lbnRNb2R1bGUgfSBmcm9tIFwiLi4vLi4vYWNjb3JkaW9uL2FjY29yZGlvbi5jb21wb25lbnQubW9kdWxlXCI7XG5pbXBvcnQgeyBBdmF0YXJDb21wb25lbnRNb2R1bGUgfSBmcm9tIFwiLi4vLi4vYXZhdGFyL2F2YXRhci5jb21wb25lbnQubW9kdWxlXCI7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnRNb2R1bGUgfSBmcm9tIFwiLi4vLi4vYnV0dG9uL2J1dHRvbi5jb21wb25lbnQubW9kdWxlXCI7XG5pbXBvcnQgeyBBdmF0YXJTaXplIH0gZnJvbSBcIi4uLy4uL2F2YXRhci9hdmF0YXIubW9kZWxcIjtcbmltcG9ydCB7IEFwcGxpY2F0aW9uVGhlbWUgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2FwcGxpY2F0aW9uLXRoZW1lLm1vZGVsXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLW1vYmlsZS1uYXZiYXItc2lkZS1zaGVldCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tb2JpbGUtbmF2YmFyLXNpZGUtc2hlZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9tb2JpbGUtbmF2YmFyLXNpZGUtc2hlZXQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIE5nRm9yT2YsXG4gICAgTmdDbGFzcyxcbiAgICBJY29uQ29tcG9uZW50TW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBVaVRyYW5zbGF0ZVBpcGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIEFjY29yZGlvbkNvbXBvbmVudE1vZHVsZSxcbiAgICBOZ0lmLFxuICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgQXZhdGFyQ29tcG9uZW50TW9kdWxlLFxuICAgIEJ1dHRvbkNvbXBvbmVudE1vZHVsZSxcbiAgICBBc3luY1BpcGUsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE1vYmlsZU5hdmJhclNpZGVTaGVldENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHJvdXRlczogSVJvdXRlW10gPSBbXTtcbiAgYWN0aXZlZFJvdXRlOiBJbnB1dFNpZ25hbDxzdHJpbmc+ID0gaW5wdXQoJycpO1xuICBASW5wdXQoKSBlbWFpbCA9ICcnO1xuICBASW5wdXQoKSB1c2VyTmFtZSA9ICcnO1xuICBASW5wdXQoKSBtZW51SXRlbXM6IE1lbnVJdGVtW10gPSBbXTtcbiAgQElucHV0KCkgY29udGVudFRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBpc0Rlc2t0b3AgPSBmYWxzZTtcbiAgQElucHV0KCkgYXBwbGljYXRpb25UaGVtZTogQXBwbGljYXRpb25UaGVtZSA9ICdsaWdodCc7XG5cbiAgQE91dHB1dCgpIG5hdmlnYXRlRXZlbnQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBtZW51SXRlbUNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBsb2dvdXRFdmVudDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB0cmFuc2xhdGlvbkNvbnRleHQgPSAnTkFWQkFSLic7XG4gIHByb3RlY3RlZCBhdmF0YXJTaXplID0gQXZhdGFyU2l6ZTtcblxuICBhY3RpdmVSb3V0ZXNNYXA6U2lnbmFsPE1hcDxzdHJpbmcsIGJvb2xlYW4+PiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50Um91dGUgPSB0aGlzLmFjdGl2ZWRSb3V0ZSgpO1xuICAgIHJldHVybiBuZXcgTWFwKHRoaXMucm91dGVzLm1hcChyb3V0ZSA9PiBbcm91dGUuaWQsIGN1cnJlbnRSb3V0ZS5zdGFydHNXaXRoKHJvdXRlLmlkKV0pKTtcbiAgfSk7XG5cbiAgbmF2aWdhdGUocm91dGVJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5uYXZpZ2F0ZUV2ZW50LmVtaXQoYC8ke3JvdXRlSWR9YCk7XG4gIH1cblxuICBsb2dvdXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2dvdXRFdmVudC5lbWl0KCk7XG4gIH1cblxuICBjbGlja01lbnVJdGVtKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLm1lbnVJdGVtQ2xpY2tlZC5lbWl0KGlkKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1vYmlsZS1uYXZiYXItY29udGFpbmVyXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0Rlc2t0b3BcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJ1c2VySW5mb1wiPjwvbmctY29udGFpbmVyPlxuXG4gIDxkaXYgY2xhc3M9XCJyb3V0ZXNcIj5cbiAgICA8ZGl2XG4gICAgICAqbmdGb3I9XCJsZXQgcm91dGUgb2Ygcm91dGVzXCJcbiAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cInJvdXRlLmlkXCJcbiAgICAgIGRhdGEtdGVzdC1yb2xlPVwibmF2LXJvdXRlXCJcbiAgICAgIChjbGljayk9XCJuYXZpZ2F0ZShyb3V0ZS5pZClcIlxuICAgICAgY2xhc3M9XCJyb3V0ZVwiXG4gICAgICBbbmdDbGFzc109XCJ7IGFjdGl2ZTogYWN0aXZlUm91dGVzTWFwKCkuZ2V0KHJvdXRlLmlkKSB9XCJcbiAgICA+XG4gICAgICA8c3Bhbj57eyByb3V0ZS50aXRsZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInNldHRpbmdzXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZSBvZiBtZW51SXRlbXNcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJlXCIgY2xhc3M9XCJtZW51LWl0ZW1cIj5cbiAgICAgICAgPHVpLWJ1dHRvblxuICAgICAgICAgIFthdHRyLmRhdGEtdGVzdGlkXT1cImUuaWRcIlxuICAgICAgICAgIGRhdGEtdGVzdC1yb2xlPVwibWVudS1pdGVtXCJcbiAgICAgICAgICBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgICAgICBbZnVsbFdpZHRoXT1cInRydWVcIlxuICAgICAgICAgIFtkaXNhYmxlZFNjYWxlT25DbGlja109XCJ0cnVlXCJcbiAgICAgICAgICBbdmFyaWFudF09XCInbWVudUNlbGwnXCJcbiAgICAgICAgICBpY29uUG9zaXRpb249XCJsZWZ0XCJcbiAgICAgICAgICBbaWNvbk5hbWVdPVwiZS5pY29uXCJcbiAgICAgICAgICBbbGFiZWxdPVwiZS50ZXh0XCJcbiAgICAgICAgICAoYnV0dG9uQ2xpY2tFdmVudCk9XCJjbGlja01lbnVJdGVtKGUuaWQpXCJcbiAgICAgICAgICAoa2V5ZG93bi5UYWIpPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAoa2V5ZG93bi5zaGlmdC50YWIpPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICBbYXJpYUxhYmVsXT1cImUudGV4dCArICctLScgKyBlLnRleHRcIlxuICAgICAgICA+PC91aS1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImJvdHRvbS1jb250ZW50XCIgW25nQ2xhc3NdPVwieyBkZXNrdG9wOiBpc0Rlc2t0b3AgfVwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzRGVza3RvcFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRUZW1wbGF0ZVJlZlwiPjwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNEZXNrdG9wOyBlbHNlIHRhYmxldFwiPlxuICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW1cIj5cbiAgICAgIDx1aS1idXR0b25cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJsb2dvdXQtYnV0dG9uXCJcbiAgICAgICAgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICAgIFtmdWxsV2lkdGhdPVwidHJ1ZVwiXG4gICAgICAgIFtkaXNhYmxlZFNjYWxlT25DbGlja109XCJ0cnVlXCJcbiAgICAgICAgW3ZhcmlhbnRdPVwiJ21lbnVDZWxsJ1wiXG4gICAgICAgIGljb25Qb3NpdGlvbj1cImxlZnRcIlxuICAgICAgICBbaWNvbk5hbWVdPVwiJ0xvZ291dC1pbi1saW5lJ1wiXG4gICAgICAgIFtsYWJlbF09XCIodHJhbnNsYXRpb25Db250ZXh0ICsgJ0xPR19PVVQnIHwgdWlUcmFuc2xhdGUgfCBhc3luYykhXCJcbiAgICAgICAgKGJ1dHRvbkNsaWNrRXZlbnQpPVwibG9nb3V0KClcIlxuICAgICAgICAoa2V5ZG93bi5UYWIpPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgKGtleWRvd24uc2hpZnQudGFiKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXG4gICAgICA+PC91aS1idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy10ZW1wbGF0ZSAjdGFibGV0PlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwidXNlckluZm9cIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3VzZXJJbmZvPlxuICA8ZGl2IGNsYXNzPVwidXNlci1pbmZvXCIgW25nQ2xhc3NdPVwieyBkZXNrdG9wOiBpc0Rlc2t0b3AgfVwiPlxuICAgIDx1aS1hdmF0YXIgW3NpemVdPVwiYXZhdGFyU2l6ZS5NRURJVU1cIiBbbmFtZV09XCJ1c2VyTmFtZVwiPjwvdWktYXZhdGFyPlxuICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxzLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm5hbWUtY29udGFpbmVyXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidXNlci1uYW1lXCI+e3sgdXNlck5hbWUgfX08L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidXNlci1lbWFpbFwiPnt7IGVtYWlsIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8dWktYnV0dG9uXG4gICAgICAgICpuZ0lmPVwiIWlzRGVza3RvcFwiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwibG9nb3V0LWJ1dHRvblwiXG4gICAgICAgIFt0b29sdGlwXT1cIih0cmFuc2xhdGlvbkNvbnRleHQgKyAnTE9HX09VVCcgfCB1aVRyYW5zbGF0ZSB8IGFzeW5jKSFcIlxuICAgICAgICBbaWNvbk5hbWVdPVwiJ0xvZ291dC1pbi1saW5lJ1wiXG4gICAgICAgIFthcHBsaWNhdGlvblRoZW1lXT1cIidsaWdodCdcIlxuICAgICAgICBbdmFyaWFudF09XCInaWNvbi1idXR0b24nXCJcbiAgICAgICAgKGNsaWNrKT1cImxvZ291dCgpXCJcbiAgICAgID48L3VpLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,4 +1,4 @@
1
- import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Optional, Output, } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, computed, EventEmitter, Inject, input, Input, Optional, Output, } from '@angular/core';
2
2
  import { map, ReplaySubject, startWith, Subject, switchMap, tap } from 'rxjs';
3
3
  import { MobileNavbarSideSheetComponent } from './mobile-navbar-side-sheet/mobile-navbar-side-sheet.component';
4
4
  import { ScreenBreakpoints } from '../../models/screen-breakpoints.model';
@@ -48,10 +48,10 @@ export class NavbarComponent {
48
48
  /**
49
49
  * Actived route id
50
50
  *
51
- * @type {string}
51
+ * @type {InputSignal<string>}
52
52
  * @memberof NavbarComponent
53
53
  */
54
- this.activedRoute = '';
54
+ this.activedRoute = input('');
55
55
  /**
56
56
  * User first name and last name
57
57
  *
@@ -121,6 +121,10 @@ export class NavbarComponent {
121
121
  .pipe(map(v => v.matches), tap(isTablet => isTablet ? this.screenSize = 'tablet' : 'desktop'))));
122
122
  this.isOpened = false;
123
123
  this.logoType = LogoTypeEnum;
124
+ this.activeRoutesMap = computed(() => {
125
+ const currentRoute = this.activedRoute();
126
+ return new Map(this.routes.map(route => [route.id, currentRoute?.startsWith(route.id)]));
127
+ });
124
128
  this.AvatarSize = AvatarSize;
125
129
  if (defaultAppTheme) {
126
130
  this.applicationTheme = defaultAppTheme;
@@ -167,11 +171,11 @@ export class NavbarComponent {
167
171
  this.menuState.emit({ isOpened, screenSize });
168
172
  }
169
173
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NavbarComponent, deps: [{ token: i1.BreakpointObserver }, { token: 'CANOPYUI_DEFAULT_APPLICATION_THEME', optional: true }, { token: i2.SideSheetService }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
170
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NavbarComponent, selector: "ui-navbar", inputs: { routes: "routes", activedRoute: "activedRoute", userName: "userName", email: "email", menuItems: "menuItems", applicationTheme: "applicationTheme", contentTemplateRef: "contentTemplateRef", mobileBreakpoint: "mobileBreakpoint", isAvatar: "isAvatar", menuClass: "menuClass" }, outputs: { navigateEvent: "navigateEvent", menuItemClicked: "menuItemClicked", logoutEvent: "logoutEvent", menuState: "menuState" }, ngImport: i0, template: "<ui-side-sheet\n [applicationTheme]=\"applicationTheme\"\n (openChange)=\"onChangeMenuState($event, screenSize)\"\n [position]=\"(isMobile$ | async) ? 'start' : 'end'\"\n>\n <mat-toolbar [attr.theme]=\"applicationTheme\">\n <div class=\"custom-toolbar row\">\n <ui-logo\n [applicationTheme]=\"applicationTheme\"\n class=\"logo\"\n (click)=\"navigate('')\"\n [allowResizing]=\"true\"\n [width]=\"(isMobile$ | async) ? 160 : (isTablet$ | async) ? 30 : 160\"\n [type]=\"\n (isMobile$ | async)\n ? logoType.DEFAULT\n : (isTablet$ | async)\n ? logoType.PRIMARY_BRANDMARK_PINK\n : logoType.DEFAULT\n \"\n ></ui-logo>\n\n <ui-button\n (click)=\"openMobileMenu()\"\n *ngIf=\"isMobile$ | async\"\n [variant]=\"'text'\"\n [companyColor]=\"'#242424'\"\n [applicationTheme]=\"'light'\"\n [iconName]=\"isOpened ? 'Close-in-line' : 'Menu-burger-in-line'\"\n [justIcon]=\"true\"\n ></ui-button>\n\n <div class=\"navigation row\">\n <a\n *ngFor=\"let route of routes\"\n (click)=\"navigate(route.id); $event.preventDefault()\"\n [href]=\"route.id\"\n [attr.data-testid]=\"route.id\"\n data-test-role=\"nav-route\"\n [ngClass]=\"{ active: activedRoute === route.id }\"\n >\n <ui-badge\n *ngIf=\"route?.badgeOptions\"\n [label]=\"route.badgeOptions!.text\"\n [rebrandColor]=\"route.badgeOptions!.color\"\n ></ui-badge>\n <span>{{ route.title }}</span>\n </a>\n </div>\n\n <div class=\"actions\">\n <div class=\"custom-actions\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n\n <button mat-button class=\"profile-menu\" *ngIf=\"isTablet$ | async; else pc\" (click)=\"openMobileMenu()\">\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n\n <ng-template #pc>\n <button\n mat-button\n class=\"profile-menu\"\n [disableRipple]=\"applicationTheme !== 'classic'\"\n (menuOpened)=\"onChangeMenuState(true, 'desktop')\"\n (menuClosed)=\"onChangeMenuState(false, 'desktop')\"\n [matMenuTriggerFor]=\"menu\"\n >\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n </ng-template>\n\n <ng-template #buttonContent>\n <div class=\"profile-button-content\">\n <ng-container *ngIf=\"isAvatar; else onlyName\">\n <ui-avatar\n data-testid=\"profile-button\"\n [ngClass]=\"{ opened: menu._panelAnimationState !== 'void' }\"\n [applicationTheme]=\"applicationTheme\"\n [name]=\"userName\"\n [size]=\"AvatarSize.SMALL_MEDIUM\"\n ></ui-avatar>\n </ng-container>\n\n <ng-template #onlyName>\n {{ userName }}\n </ng-template>\n\n <mat-icon *ngIf=\"applicationTheme === 'classic'; else newThemeIcon\" iconPositionEnd>expand_more</mat-icon>\n <ng-template #newThemeIcon>\n <ui-icon\n [size]=\"'24'\"\n *ngIf=\"!isAvatar\"\n [name]=\"menu._panelAnimationState === 'void' ? 'Arrow-chevron-down-filled' : 'Arrow-chevron-up-filled'\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-icon>\n </ng-template>\n </div>\n </ng-template>\n </div>\n </div>\n </mat-toolbar>\n\n <ng-content></ng-content>\n\n <mat-menu [class]=\"menuClass\" #menu=\"matMenu\">\n <ng-container *ngIf=\"applicationTheme === 'classic'; else newTheme\">\n <button\n *ngFor=\"let e of menuItems\"\n mat-menu-item\n (click)=\"clickMenuItem(e.id)\"\n [attr.data-testid]=\"e.id\"\n data-test-role=\"profile-menu-item\"\n >\n <div class=\"menu-item\">\n <ui-icon *ngIf=\"e?.icon\" [name]=\"e.icon\" size=\"24\"></ui-icon>\n {{ e.text }}\n </div>\n </button>\n\n <button data-testid=\"logout-button\" mat-menu-item (click)=\"logout()\">\n <mat-icon>power_settings_new</mat-icon>\n {{ translationContext + 'LOG_OUT' | uiTranslate | async }}\n </button>\n </ng-container>\n\n <ng-template #newTheme>\n <ui-mobile-navbar-side-sheet\n [isDesktop]=\"true\"\n [menuItems]=\"menuItems\"\n [userName]=\"userName\"\n [routes]=\"routes\"\n [activedRoute]=\"activedRoute\"\n [email]=\"email\"\n [applicationTheme]=\"applicationTheme\"\n [contentTemplateRef]=\"contentTemplateRef\"\n (menuItemClicked)=\"clickMenuItem($event)\"\n (logoutEvent)=\"logout()\"\n ></ui-mobile-navbar-side-sheet>\n </ng-template>\n </mat-menu>\n</ui-side-sheet>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host{height:100%}:host ::ng-deep .side-sheet-container{display:block;height:100%;position:unset!important}:host ::ng-deep .mat-drawer-container{height:100%}:host ::ng-deep .mat-drawer{padding:0!important;background:#fff!important}:host ::ng-deep .mat-drawer .mat-drawer-inner-container .header{padding:16px 16px 16px 24px!important;border-bottom:1px solid #D3D3D3;height:64px}:host ::ng-deep .mat-drawer .mat-drawer-inner-container .header ui-logo{width:100%;margin:0!important;display:flex;justify-content:flex-start}:host ::ng-deep .mat-drawer .mat-drawer-inner-container .header ui-logo img{width:fit-content;height:32px}@media (max-width: 1024px) and (min-width: 600px){:host ::ng-deep .mat-drawer{margin-top:64px;height:calc(100% - 64px);max-width:375px}:host ::ng-deep .mat-drawer .header{display:none!important}:host ::ng-deep .mat-drawer-backdrop{background:transparent!important;opacity:0!important}}@media (max-width: 600px){:host ::ng-deep .mat-drawer{margin-top:64px;height:calc(100% - 64px)}:host ::ng-deep .mat-drawer .header{display:none!important}:host ::ng-deep .mat-drawer-backdrop{background:transparent!important;opacity:0!important}}.mat-toolbar{height:80px;background-color:#fff!important}.mat-toolbar .custom-toolbar{width:100%;height:100%;background-color:#fff;max-width:1440px;padding:0}@media (max-width: 600px){.mat-toolbar .custom-toolbar{padding:0 16px}}@media (min-width: 1024px) and (max-width: 1280px){.mat-toolbar .custom-toolbar{padding:0 40px!important}}@media (min-width: 960px) and (max-width: 1024px){.mat-toolbar .custom-toolbar{padding:0 40px!important}}@media (max-width: 960px){.mat-toolbar .custom-toolbar{padding:0 20px!important}}@media (max-width: 1024px){.mat-toolbar .custom-toolbar{padding:0 64px}}.mat-toolbar .custom-toolbar ui-logo.logo{cursor:pointer;height:43px;align-self:center;display:flex;margin-left:0!important}@media (max-width: 1024px){.mat-toolbar .custom-toolbar ui-logo.logo{min-width:22px}}.mat-toolbar .custom-toolbar .navigation{height:100%;margin-left:40px}.mat-toolbar .custom-toolbar .navigation a{display:flex;align-items:center;height:100%;background:#fff;cursor:pointer;color:#000;text-decoration:none}.mat-toolbar .custom-toolbar .navigation a:hover{text-decoration:none}.mat-toolbar .custom-toolbar .navigation a.active{border-top:2px solid #276678}.mat-toolbar .custom-toolbar .navigation a.active span{font-weight:700}.mat-toolbar .custom-toolbar .navigation a span{width:100%;text-align:center;font-weight:400;font-size:14px;line-height:16px}.mat-toolbar .custom-toolbar .actions{width:100%;display:flex;align-items:center;justify-content:flex-end;margin-right:7px}@media (max-width: 600px){.mat-toolbar .custom-toolbar .actions{margin-right:0}}.mat-toolbar .custom-toolbar .actions .profile-menu{font-weight:600;font-size:14px;height:100%;margin-right:-20px}.mat-toolbar .custom-toolbar .actions .profile-menu mat-icon{font-size:16px;position:relative;top:3px;left:3px}.mat-toolbar .custom-toolbar .actions .profile-button-content{display:flex;align-items:center;flex-wrap:nowrap}.mat-toolbar .custom-toolbar .actions .profile-button-content ui-avatar{position:relative}.mat-toolbar .custom-toolbar .actions .profile-button-content ui-avatar.opened:after{position:absolute;content:\"\";width:40px;height:40px;left:-2px;top:-2px;z-index:-1;border-radius:100%;background:#f4f4f4}.mat-toolbar[theme=dark],.mat-toolbar[theme=light]{display:flex;justify-content:center;width:100%;height:64px;padding:0;border-bottom:1px solid #D3D3D3}.mat-toolbar[theme=dark] .custom-toolbar,.mat-toolbar[theme=light] .custom-toolbar{justify-content:space-between}@media (min-width: 1280px){.mat-toolbar[theme=dark] .custom-toolbar,.mat-toolbar[theme=light] .custom-toolbar{padding:0 64px!important}}.mat-toolbar[theme=dark] ui-logo.logo,.mat-toolbar[theme=light] ui-logo.logo{justify-content:flex-start;margin-left:40px}@media (min-width: 1024px){.mat-toolbar[theme=dark] ui-logo.logo,.mat-toolbar[theme=light] ui-logo.logo{min-width:160px}}@media (max-width: 1024px){.mat-toolbar[theme=dark] ui-logo.logo,.mat-toolbar[theme=light] ui-logo.logo{margin-left:20px!important}}.mat-toolbar[theme=dark] .actions,.mat-toolbar[theme=light] .actions{color:#242424}.mat-toolbar[theme=dark] .actions ::ng-deep .mat-mdc-button .mdc-button__label,.mat-toolbar[theme=light] .actions ::ng-deep .mat-mdc-button .mdc-button__label{font-weight:400}.mat-toolbar[theme=dark] .actions .profile-menu,.mat-toolbar[theme=light] .actions .profile-menu{margin-right:0}.mat-toolbar[theme=dark] ui-icon,.mat-toolbar[theme=light] ui-icon{margin-left:8px}.mat-toolbar[theme=dark] ui-icon.open,.mat-toolbar[theme=light] ui-icon.open{transform:rotate(180deg)}.mat-toolbar[theme=dark] .navigation,.mat-toolbar[theme=light] .navigation{gap:2px}.mat-toolbar[theme=dark] .navigation a,.mat-toolbar[theme=light] .navigation a{padding:16px 24px;border-bottom:2px solid transparent;position:relative;transition:border-bottom-color .15s ease-in}.mat-toolbar[theme=dark] .navigation a ui-badge,.mat-toolbar[theme=light] .navigation a ui-badge{position:absolute;right:-12px;top:4px;z-index:1}.mat-toolbar[theme=dark] .navigation a.active,.mat-toolbar[theme=light] .navigation a.active{border-top:unset!important;border-bottom:2px solid #D410AA}.mat-toolbar[theme=dark] .navigation a:hover,.mat-toolbar[theme=light] .navigation a:hover{border-top:unset!important;border-bottom:2px solid #242424}@media (max-width: 600px){.mat-toolbar[theme=dark] ui-button,.mat-toolbar[theme=light] ui-button{height:48px}.mat-toolbar[theme=dark] ui-logo,.mat-toolbar[theme=light] ui-logo{width:100%;display:flex;justify-content:center;align-items:center;margin:0!important}.mat-toolbar[theme=dark] ui-logo ::ng-deep img,.mat-toolbar[theme=light] ui-logo ::ng-deep img{height:32px}.mat-toolbar[theme=dark] .custom-toolbar,.mat-toolbar[theme=light] .custom-toolbar{align-items:center}.mat-toolbar[theme=dark] .custom-toolbar .navigation,.mat-toolbar[theme=dark] .custom-toolbar .actions,.mat-toolbar[theme=light] .custom-toolbar .navigation,.mat-toolbar[theme=light] .custom-toolbar .actions{display:none}}.custom-actions{display:flex;align-items:center;height:64px}@media (max-width: 1024px){.custom-actions{display:none}}.row{display:flex;flex-direction:row}.menu-item{display:flex;align-items:center}.menu-item ui-icon{margin-right:16px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i7.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i8.LogoComponent, selector: "ui-logo", inputs: ["type", "applicationTheme", "label", "width", "allowResizing"] }, { kind: "component", type: i9.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "applicationTheme", "useFullIconName"] }, { kind: "component", type: i10.AvatarComponent, selector: "ui-avatar", inputs: ["size", "imageUrl", "name", "tooltipText", "allowEdit", "applicationTheme", "backgroundColor"], outputs: ["editClick"] }, { kind: "component", type: i11.SideSheetComponent, selector: "ui-side-sheet", inputs: ["position", "applicationTheme"], outputs: ["openChange"] }, { kind: "component", type: i12.ButtonComponent, selector: "ui-button", inputs: ["size", "variant", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "fullWidth", "url", "urlTarget", "value", "tooltip", "isPremium", "type", "companyColor", "buttonBadgeConfig", "applicationTheme", "disabledScaleOnClick", "ariaLabel", "ariaRequired", "ariaLabelledby", "ariaDescribedby", "preventDefault", "hasBackground", "tooltipPosition", "role"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "component", type: i13.MobileNavbarSideSheetComponent, selector: "ui-mobile-navbar-side-sheet", inputs: ["routes", "activedRoute", "email", "userName", "menuItems", "contentTemplateRef", "isDesktop", "applicationTheme"], outputs: ["navigateEvent", "menuItemClicked", "logoutEvent"] }, { kind: "component", type: i14.BadgeComponent, selector: "ui-badge", inputs: ["label", "icon", "color", "variant", "notificationsAmount", "applicationTheme", "rebrandColor", "truncateLabel"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i15.UiTranslatePipe, name: "uiTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
174
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: NavbarComponent, selector: "ui-navbar", inputs: { routes: { classPropertyName: "routes", publicName: "routes", isSignal: false, isRequired: false, transformFunction: null }, activedRoute: { classPropertyName: "activedRoute", publicName: "activedRoute", isSignal: true, isRequired: false, transformFunction: null }, userName: { classPropertyName: "userName", publicName: "userName", isSignal: false, isRequired: false, transformFunction: null }, email: { classPropertyName: "email", publicName: "email", isSignal: false, isRequired: false, transformFunction: null }, menuItems: { classPropertyName: "menuItems", publicName: "menuItems", isSignal: false, isRequired: false, transformFunction: null }, applicationTheme: { classPropertyName: "applicationTheme", publicName: "applicationTheme", isSignal: false, isRequired: false, transformFunction: null }, contentTemplateRef: { classPropertyName: "contentTemplateRef", publicName: "contentTemplateRef", isSignal: false, isRequired: false, transformFunction: null }, mobileBreakpoint: { classPropertyName: "mobileBreakpoint", publicName: "mobileBreakpoint", isSignal: false, isRequired: false, transformFunction: null }, isAvatar: { classPropertyName: "isAvatar", publicName: "isAvatar", isSignal: false, isRequired: false, transformFunction: null }, menuClass: { classPropertyName: "menuClass", publicName: "menuClass", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { navigateEvent: "navigateEvent", menuItemClicked: "menuItemClicked", logoutEvent: "logoutEvent", menuState: "menuState" }, ngImport: i0, template: "<ui-side-sheet\n [applicationTheme]=\"applicationTheme\"\n (openChange)=\"onChangeMenuState($event, screenSize)\"\n [position]=\"(isMobile$ | async) ? 'start' : 'end'\"\n>\n <mat-toolbar [attr.theme]=\"applicationTheme\">\n <div class=\"custom-toolbar row\">\n <ui-logo\n [applicationTheme]=\"applicationTheme\"\n class=\"logo\"\n (click)=\"navigate('')\"\n [allowResizing]=\"true\"\n [width]=\"(isMobile$ | async) ? 160 : (isTablet$ | async) ? 30 : 160\"\n [type]=\"\n (isMobile$ | async)\n ? logoType.DEFAULT\n : (isTablet$ | async)\n ? logoType.PRIMARY_BRANDMARK_PINK\n : logoType.DEFAULT\n \"\n ></ui-logo>\n\n <ui-button\n (click)=\"openMobileMenu()\"\n *ngIf=\"isMobile$ | async\"\n [variant]=\"'text'\"\n [companyColor]=\"'#242424'\"\n [applicationTheme]=\"'light'\"\n [iconName]=\"isOpened ? 'Close-in-line' : 'Menu-burger-in-line'\"\n [justIcon]=\"true\"\n ></ui-button>\n\n <div class=\"navigation row\">\n <a\n *ngFor=\"let route of routes\"\n (click)=\"navigate(route.id); $event.preventDefault()\"\n [href]=\"route.id\"\n [attr.data-testid]=\"route.id\"\n data-test-role=\"nav-route\"\n [ngClass]=\"{ active: activeRoutesMap().get(route.id) }\"\n >\n <ui-badge\n *ngIf=\"route?.badgeOptions\"\n [label]=\"route.badgeOptions!.text\"\n [rebrandColor]=\"route.badgeOptions!.color\"\n ></ui-badge>\n <span>{{ route.title }}</span>\n </a>\n </div>\n\n <div class=\"actions\">\n <div class=\"custom-actions\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n\n <button mat-button class=\"profile-menu\" *ngIf=\"isTablet$ | async; else pc\" (click)=\"openMobileMenu()\">\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n\n <ng-template #pc>\n <button\n mat-button\n class=\"profile-menu\"\n [disableRipple]=\"applicationTheme !== 'classic'\"\n (menuOpened)=\"onChangeMenuState(true, 'desktop')\"\n (menuClosed)=\"onChangeMenuState(false, 'desktop')\"\n [matMenuTriggerFor]=\"menu\"\n >\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n </ng-template>\n\n <ng-template #buttonContent>\n <div class=\"profile-button-content\">\n <ng-container *ngIf=\"isAvatar; else onlyName\">\n <ui-avatar\n data-testid=\"profile-button\"\n [ngClass]=\"{ opened: menu._panelAnimationState !== 'void' }\"\n [applicationTheme]=\"applicationTheme\"\n [name]=\"userName\"\n [size]=\"AvatarSize.SMALL_MEDIUM\"\n ></ui-avatar>\n </ng-container>\n\n <ng-template #onlyName>\n {{ userName }}\n </ng-template>\n\n <mat-icon *ngIf=\"applicationTheme === 'classic'; else newThemeIcon\" iconPositionEnd>expand_more</mat-icon>\n <ng-template #newThemeIcon>\n <ui-icon\n [size]=\"'24'\"\n *ngIf=\"!isAvatar\"\n [name]=\"menu._panelAnimationState === 'void' ? 'Arrow-chevron-down-filled' : 'Arrow-chevron-up-filled'\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-icon>\n </ng-template>\n </div>\n </ng-template>\n </div>\n </div>\n </mat-toolbar>\n\n <ng-content></ng-content>\n\n <mat-menu [class]=\"menuClass\" #menu=\"matMenu\">\n <ng-container *ngIf=\"applicationTheme === 'classic'; else newTheme\">\n <button\n *ngFor=\"let e of menuItems\"\n mat-menu-item\n (click)=\"clickMenuItem(e.id)\"\n [attr.data-testid]=\"e.id\"\n data-test-role=\"profile-menu-item\"\n >\n <div class=\"menu-item\">\n <ui-icon *ngIf=\"e?.icon\" [name]=\"e.icon\" size=\"24\"></ui-icon>\n {{ e.text }}\n </div>\n </button>\n\n <button data-testid=\"logout-button\" mat-menu-item (click)=\"logout()\">\n <mat-icon>power_settings_new</mat-icon>\n {{ translationContext + 'LOG_OUT' | uiTranslate | async }}\n </button>\n </ng-container>\n\n <ng-template #newTheme>\n <ui-mobile-navbar-side-sheet\n [isDesktop]=\"true\"\n [menuItems]=\"menuItems\"\n [userName]=\"userName\"\n [routes]=\"routes\"\n [activedRoute]=\"activedRoute()\"\n [email]=\"email\"\n [applicationTheme]=\"applicationTheme\"\n [contentTemplateRef]=\"contentTemplateRef\"\n (menuItemClicked)=\"clickMenuItem($event)\"\n (logoutEvent)=\"logout()\"\n ></ui-mobile-navbar-side-sheet>\n </ng-template>\n </mat-menu>\n</ui-side-sheet>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host{height:100%}:host ::ng-deep .side-sheet-container{display:block;height:100%;position:unset!important}:host ::ng-deep .mat-drawer-container{height:100%}:host ::ng-deep .mat-drawer{padding:0!important;background:#fff!important}:host ::ng-deep .mat-drawer .mat-drawer-inner-container .header{padding:16px 16px 16px 24px!important;border-bottom:1px solid #D3D3D3;height:64px}:host ::ng-deep .mat-drawer .mat-drawer-inner-container .header ui-logo{width:100%;margin:0!important;display:flex;justify-content:flex-start}:host ::ng-deep .mat-drawer .mat-drawer-inner-container .header ui-logo img{width:fit-content;height:32px}@media (max-width: 1024px) and (min-width: 600px){:host ::ng-deep .mat-drawer{margin-top:64px;height:calc(100% - 64px);max-width:375px}:host ::ng-deep .mat-drawer .header{display:none!important}:host ::ng-deep .mat-drawer-backdrop{background:transparent!important;opacity:0!important}}@media (max-width: 600px){:host ::ng-deep .mat-drawer{margin-top:64px;height:calc(100% - 64px)}:host ::ng-deep .mat-drawer .header{display:none!important}:host ::ng-deep .mat-drawer-backdrop{background:transparent!important;opacity:0!important}}.mat-toolbar{height:80px;background-color:#fff!important}.mat-toolbar .custom-toolbar{width:100%;height:100%;background-color:#fff;max-width:1440px;padding:0}@media (max-width: 600px){.mat-toolbar .custom-toolbar{padding:0 16px}}@media (min-width: 1024px) and (max-width: 1280px){.mat-toolbar .custom-toolbar{padding:0 40px!important}}@media (min-width: 960px) and (max-width: 1024px){.mat-toolbar .custom-toolbar{padding:0 40px!important}}@media (max-width: 960px){.mat-toolbar .custom-toolbar{padding:0 20px!important}}@media (max-width: 1024px){.mat-toolbar .custom-toolbar{padding:0 64px}}.mat-toolbar .custom-toolbar ui-logo.logo{cursor:pointer;height:43px;align-self:center;display:flex;margin-left:0!important}@media (max-width: 1024px){.mat-toolbar .custom-toolbar ui-logo.logo{min-width:22px}}.mat-toolbar .custom-toolbar .navigation{height:100%;margin-left:40px}.mat-toolbar .custom-toolbar .navigation a{display:flex;align-items:center;height:100%;background:#fff;cursor:pointer;color:#000;text-decoration:none}.mat-toolbar .custom-toolbar .navigation a:hover{text-decoration:none}.mat-toolbar .custom-toolbar .navigation a.active{border-top:2px solid #276678}.mat-toolbar .custom-toolbar .navigation a.active span{font-weight:700}.mat-toolbar .custom-toolbar .navigation a span{width:100%;text-align:center;font-weight:400;font-size:14px;line-height:16px}.mat-toolbar .custom-toolbar .actions{width:100%;display:flex;align-items:center;justify-content:flex-end;margin-right:7px}@media (max-width: 600px){.mat-toolbar .custom-toolbar .actions{margin-right:0}}.mat-toolbar .custom-toolbar .actions .profile-menu{font-weight:600;font-size:14px;height:100%;margin-right:-20px}.mat-toolbar .custom-toolbar .actions .profile-menu mat-icon{font-size:16px;position:relative;top:3px;left:3px}.mat-toolbar .custom-toolbar .actions .profile-button-content{display:flex;align-items:center;flex-wrap:nowrap}.mat-toolbar .custom-toolbar .actions .profile-button-content ui-avatar{position:relative}.mat-toolbar .custom-toolbar .actions .profile-button-content ui-avatar.opened:after{position:absolute;content:\"\";width:40px;height:40px;left:-2px;top:-2px;z-index:-1;border-radius:100%;background:#f4f4f4}.mat-toolbar[theme=dark],.mat-toolbar[theme=light]{display:flex;justify-content:center;width:100%;height:64px;padding:0;border-bottom:1px solid #D3D3D3}.mat-toolbar[theme=dark] .custom-toolbar,.mat-toolbar[theme=light] .custom-toolbar{justify-content:space-between}@media (min-width: 1280px){.mat-toolbar[theme=dark] .custom-toolbar,.mat-toolbar[theme=light] .custom-toolbar{padding:0 64px!important}}.mat-toolbar[theme=dark] ui-logo.logo,.mat-toolbar[theme=light] ui-logo.logo{justify-content:flex-start;margin-left:40px}@media (min-width: 1024px){.mat-toolbar[theme=dark] ui-logo.logo,.mat-toolbar[theme=light] ui-logo.logo{min-width:160px}}@media (max-width: 1024px){.mat-toolbar[theme=dark] ui-logo.logo,.mat-toolbar[theme=light] ui-logo.logo{margin-left:20px!important}}.mat-toolbar[theme=dark] .actions,.mat-toolbar[theme=light] .actions{color:#242424}.mat-toolbar[theme=dark] .actions ::ng-deep .mat-mdc-button .mdc-button__label,.mat-toolbar[theme=light] .actions ::ng-deep .mat-mdc-button .mdc-button__label{font-weight:400}.mat-toolbar[theme=dark] .actions .profile-menu,.mat-toolbar[theme=light] .actions .profile-menu{margin-right:0}.mat-toolbar[theme=dark] ui-icon,.mat-toolbar[theme=light] ui-icon{margin-left:8px}.mat-toolbar[theme=dark] ui-icon.open,.mat-toolbar[theme=light] ui-icon.open{transform:rotate(180deg)}.mat-toolbar[theme=dark] .navigation,.mat-toolbar[theme=light] .navigation{gap:2px}.mat-toolbar[theme=dark] .navigation a,.mat-toolbar[theme=light] .navigation a{padding:16px 24px;border-bottom:2px solid transparent;position:relative;transition:border-bottom-color .15s ease-in}.mat-toolbar[theme=dark] .navigation a ui-badge,.mat-toolbar[theme=light] .navigation a ui-badge{position:absolute;right:-12px;top:4px;z-index:1}.mat-toolbar[theme=dark] .navigation a.active,.mat-toolbar[theme=light] .navigation a.active{border-top:unset!important;border-bottom:2px solid #D410AA}.mat-toolbar[theme=dark] .navigation a:hover,.mat-toolbar[theme=light] .navigation a:hover{border-top:unset!important;border-bottom:2px solid #242424}@media (max-width: 600px){.mat-toolbar[theme=dark] ui-button,.mat-toolbar[theme=light] ui-button{height:48px}.mat-toolbar[theme=dark] ui-logo,.mat-toolbar[theme=light] ui-logo{width:100%;display:flex;justify-content:center;align-items:center;margin:0!important}.mat-toolbar[theme=dark] ui-logo ::ng-deep img,.mat-toolbar[theme=light] ui-logo ::ng-deep img{height:32px}.mat-toolbar[theme=dark] .custom-toolbar,.mat-toolbar[theme=light] .custom-toolbar{align-items:center}.mat-toolbar[theme=dark] .custom-toolbar .navigation,.mat-toolbar[theme=dark] .custom-toolbar .actions,.mat-toolbar[theme=light] .custom-toolbar .navigation,.mat-toolbar[theme=light] .custom-toolbar .actions{display:none}}.custom-actions{display:flex;align-items:center;height:64px}@media (max-width: 1024px){.custom-actions{display:none}}.row{display:flex;flex-direction:row}.menu-item{display:flex;align-items:center}.menu-item ui-icon{margin-right:16px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i7.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i8.LogoComponent, selector: "ui-logo", inputs: ["type", "applicationTheme", "label", "width", "allowResizing"] }, { kind: "component", type: i9.IconComponent, selector: "ui-icon", inputs: ["size", "cssClass", "name", "color", "filled", "applicationTheme", "useFullIconName"] }, { kind: "component", type: i10.AvatarComponent, selector: "ui-avatar", inputs: ["size", "imageUrl", "name", "tooltipText", "allowEdit", "applicationTheme", "backgroundColor"], outputs: ["editClick"] }, { kind: "component", type: i11.SideSheetComponent, selector: "ui-side-sheet", inputs: ["position", "applicationTheme"], outputs: ["openChange"] }, { kind: "component", type: i12.ButtonComponent, selector: "ui-button", inputs: ["size", "variant", "label", "iconPosition", "justIcon", "iconName", "disabled", "loading", "fullWidth", "url", "urlTarget", "value", "tooltip", "isPremium", "type", "companyColor", "buttonBadgeConfig", "applicationTheme", "disabledScaleOnClick", "ariaLabel", "ariaRequired", "ariaLabelledby", "ariaDescribedby", "preventDefault", "hasBackground", "tooltipPosition", "role"], outputs: ["buttonClickEvent", "buttonHoverEvent"] }, { kind: "component", type: i13.MobileNavbarSideSheetComponent, selector: "ui-mobile-navbar-side-sheet", inputs: ["routes", "activedRoute", "email", "userName", "menuItems", "contentTemplateRef", "isDesktop", "applicationTheme"], outputs: ["navigateEvent", "menuItemClicked", "logoutEvent"] }, { kind: "component", type: i14.BadgeComponent, selector: "ui-badge", inputs: ["label", "icon", "color", "variant", "notificationsAmount", "applicationTheme", "rebrandColor", "truncateLabel"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i15.UiTranslatePipe, name: "uiTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
171
175
  }
172
176
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NavbarComponent, decorators: [{
173
177
  type: Component,
174
- args: [{ selector: 'ui-navbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ui-side-sheet\n [applicationTheme]=\"applicationTheme\"\n (openChange)=\"onChangeMenuState($event, screenSize)\"\n [position]=\"(isMobile$ | async) ? 'start' : 'end'\"\n>\n <mat-toolbar [attr.theme]=\"applicationTheme\">\n <div class=\"custom-toolbar row\">\n <ui-logo\n [applicationTheme]=\"applicationTheme\"\n class=\"logo\"\n (click)=\"navigate('')\"\n [allowResizing]=\"true\"\n [width]=\"(isMobile$ | async) ? 160 : (isTablet$ | async) ? 30 : 160\"\n [type]=\"\n (isMobile$ | async)\n ? logoType.DEFAULT\n : (isTablet$ | async)\n ? logoType.PRIMARY_BRANDMARK_PINK\n : logoType.DEFAULT\n \"\n ></ui-logo>\n\n <ui-button\n (click)=\"openMobileMenu()\"\n *ngIf=\"isMobile$ | async\"\n [variant]=\"'text'\"\n [companyColor]=\"'#242424'\"\n [applicationTheme]=\"'light'\"\n [iconName]=\"isOpened ? 'Close-in-line' : 'Menu-burger-in-line'\"\n [justIcon]=\"true\"\n ></ui-button>\n\n <div class=\"navigation row\">\n <a\n *ngFor=\"let route of routes\"\n (click)=\"navigate(route.id); $event.preventDefault()\"\n [href]=\"route.id\"\n [attr.data-testid]=\"route.id\"\n data-test-role=\"nav-route\"\n [ngClass]=\"{ active: activedRoute === route.id }\"\n >\n <ui-badge\n *ngIf=\"route?.badgeOptions\"\n [label]=\"route.badgeOptions!.text\"\n [rebrandColor]=\"route.badgeOptions!.color\"\n ></ui-badge>\n <span>{{ route.title }}</span>\n </a>\n </div>\n\n <div class=\"actions\">\n <div class=\"custom-actions\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n\n <button mat-button class=\"profile-menu\" *ngIf=\"isTablet$ | async; else pc\" (click)=\"openMobileMenu()\">\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n\n <ng-template #pc>\n <button\n mat-button\n class=\"profile-menu\"\n [disableRipple]=\"applicationTheme !== 'classic'\"\n (menuOpened)=\"onChangeMenuState(true, 'desktop')\"\n (menuClosed)=\"onChangeMenuState(false, 'desktop')\"\n [matMenuTriggerFor]=\"menu\"\n >\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n </ng-template>\n\n <ng-template #buttonContent>\n <div class=\"profile-button-content\">\n <ng-container *ngIf=\"isAvatar; else onlyName\">\n <ui-avatar\n data-testid=\"profile-button\"\n [ngClass]=\"{ opened: menu._panelAnimationState !== 'void' }\"\n [applicationTheme]=\"applicationTheme\"\n [name]=\"userName\"\n [size]=\"AvatarSize.SMALL_MEDIUM\"\n ></ui-avatar>\n </ng-container>\n\n <ng-template #onlyName>\n {{ userName }}\n </ng-template>\n\n <mat-icon *ngIf=\"applicationTheme === 'classic'; else newThemeIcon\" iconPositionEnd>expand_more</mat-icon>\n <ng-template #newThemeIcon>\n <ui-icon\n [size]=\"'24'\"\n *ngIf=\"!isAvatar\"\n [name]=\"menu._panelAnimationState === 'void' ? 'Arrow-chevron-down-filled' : 'Arrow-chevron-up-filled'\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-icon>\n </ng-template>\n </div>\n </ng-template>\n </div>\n </div>\n </mat-toolbar>\n\n <ng-content></ng-content>\n\n <mat-menu [class]=\"menuClass\" #menu=\"matMenu\">\n <ng-container *ngIf=\"applicationTheme === 'classic'; else newTheme\">\n <button\n *ngFor=\"let e of menuItems\"\n mat-menu-item\n (click)=\"clickMenuItem(e.id)\"\n [attr.data-testid]=\"e.id\"\n data-test-role=\"profile-menu-item\"\n >\n <div class=\"menu-item\">\n <ui-icon *ngIf=\"e?.icon\" [name]=\"e.icon\" size=\"24\"></ui-icon>\n {{ e.text }}\n </div>\n </button>\n\n <button data-testid=\"logout-button\" mat-menu-item (click)=\"logout()\">\n <mat-icon>power_settings_new</mat-icon>\n {{ translationContext + 'LOG_OUT' | uiTranslate | async }}\n </button>\n </ng-container>\n\n <ng-template #newTheme>\n <ui-mobile-navbar-side-sheet\n [isDesktop]=\"true\"\n [menuItems]=\"menuItems\"\n [userName]=\"userName\"\n [routes]=\"routes\"\n [activedRoute]=\"activedRoute\"\n [email]=\"email\"\n [applicationTheme]=\"applicationTheme\"\n [contentTemplateRef]=\"contentTemplateRef\"\n (menuItemClicked)=\"clickMenuItem($event)\"\n (logoutEvent)=\"logout()\"\n ></ui-mobile-navbar-side-sheet>\n </ng-template>\n </mat-menu>\n</ui-side-sheet>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host{height:100%}:host ::ng-deep .side-sheet-container{display:block;height:100%;position:unset!important}:host ::ng-deep .mat-drawer-container{height:100%}:host ::ng-deep .mat-drawer{padding:0!important;background:#fff!important}:host ::ng-deep .mat-drawer .mat-drawer-inner-container .header{padding:16px 16px 16px 24px!important;border-bottom:1px solid #D3D3D3;height:64px}:host ::ng-deep .mat-drawer .mat-drawer-inner-container .header ui-logo{width:100%;margin:0!important;display:flex;justify-content:flex-start}:host ::ng-deep .mat-drawer .mat-drawer-inner-container .header ui-logo img{width:fit-content;height:32px}@media (max-width: 1024px) and (min-width: 600px){:host ::ng-deep .mat-drawer{margin-top:64px;height:calc(100% - 64px);max-width:375px}:host ::ng-deep .mat-drawer .header{display:none!important}:host ::ng-deep .mat-drawer-backdrop{background:transparent!important;opacity:0!important}}@media (max-width: 600px){:host ::ng-deep .mat-drawer{margin-top:64px;height:calc(100% - 64px)}:host ::ng-deep .mat-drawer .header{display:none!important}:host ::ng-deep .mat-drawer-backdrop{background:transparent!important;opacity:0!important}}.mat-toolbar{height:80px;background-color:#fff!important}.mat-toolbar .custom-toolbar{width:100%;height:100%;background-color:#fff;max-width:1440px;padding:0}@media (max-width: 600px){.mat-toolbar .custom-toolbar{padding:0 16px}}@media (min-width: 1024px) and (max-width: 1280px){.mat-toolbar .custom-toolbar{padding:0 40px!important}}@media (min-width: 960px) and (max-width: 1024px){.mat-toolbar .custom-toolbar{padding:0 40px!important}}@media (max-width: 960px){.mat-toolbar .custom-toolbar{padding:0 20px!important}}@media (max-width: 1024px){.mat-toolbar .custom-toolbar{padding:0 64px}}.mat-toolbar .custom-toolbar ui-logo.logo{cursor:pointer;height:43px;align-self:center;display:flex;margin-left:0!important}@media (max-width: 1024px){.mat-toolbar .custom-toolbar ui-logo.logo{min-width:22px}}.mat-toolbar .custom-toolbar .navigation{height:100%;margin-left:40px}.mat-toolbar .custom-toolbar .navigation a{display:flex;align-items:center;height:100%;background:#fff;cursor:pointer;color:#000;text-decoration:none}.mat-toolbar .custom-toolbar .navigation a:hover{text-decoration:none}.mat-toolbar .custom-toolbar .navigation a.active{border-top:2px solid #276678}.mat-toolbar .custom-toolbar .navigation a.active span{font-weight:700}.mat-toolbar .custom-toolbar .navigation a span{width:100%;text-align:center;font-weight:400;font-size:14px;line-height:16px}.mat-toolbar .custom-toolbar .actions{width:100%;display:flex;align-items:center;justify-content:flex-end;margin-right:7px}@media (max-width: 600px){.mat-toolbar .custom-toolbar .actions{margin-right:0}}.mat-toolbar .custom-toolbar .actions .profile-menu{font-weight:600;font-size:14px;height:100%;margin-right:-20px}.mat-toolbar .custom-toolbar .actions .profile-menu mat-icon{font-size:16px;position:relative;top:3px;left:3px}.mat-toolbar .custom-toolbar .actions .profile-button-content{display:flex;align-items:center;flex-wrap:nowrap}.mat-toolbar .custom-toolbar .actions .profile-button-content ui-avatar{position:relative}.mat-toolbar .custom-toolbar .actions .profile-button-content ui-avatar.opened:after{position:absolute;content:\"\";width:40px;height:40px;left:-2px;top:-2px;z-index:-1;border-radius:100%;background:#f4f4f4}.mat-toolbar[theme=dark],.mat-toolbar[theme=light]{display:flex;justify-content:center;width:100%;height:64px;padding:0;border-bottom:1px solid #D3D3D3}.mat-toolbar[theme=dark] .custom-toolbar,.mat-toolbar[theme=light] .custom-toolbar{justify-content:space-between}@media (min-width: 1280px){.mat-toolbar[theme=dark] .custom-toolbar,.mat-toolbar[theme=light] .custom-toolbar{padding:0 64px!important}}.mat-toolbar[theme=dark] ui-logo.logo,.mat-toolbar[theme=light] ui-logo.logo{justify-content:flex-start;margin-left:40px}@media (min-width: 1024px){.mat-toolbar[theme=dark] ui-logo.logo,.mat-toolbar[theme=light] ui-logo.logo{min-width:160px}}@media (max-width: 1024px){.mat-toolbar[theme=dark] ui-logo.logo,.mat-toolbar[theme=light] ui-logo.logo{margin-left:20px!important}}.mat-toolbar[theme=dark] .actions,.mat-toolbar[theme=light] .actions{color:#242424}.mat-toolbar[theme=dark] .actions ::ng-deep .mat-mdc-button .mdc-button__label,.mat-toolbar[theme=light] .actions ::ng-deep .mat-mdc-button .mdc-button__label{font-weight:400}.mat-toolbar[theme=dark] .actions .profile-menu,.mat-toolbar[theme=light] .actions .profile-menu{margin-right:0}.mat-toolbar[theme=dark] ui-icon,.mat-toolbar[theme=light] ui-icon{margin-left:8px}.mat-toolbar[theme=dark] ui-icon.open,.mat-toolbar[theme=light] ui-icon.open{transform:rotate(180deg)}.mat-toolbar[theme=dark] .navigation,.mat-toolbar[theme=light] .navigation{gap:2px}.mat-toolbar[theme=dark] .navigation a,.mat-toolbar[theme=light] .navigation a{padding:16px 24px;border-bottom:2px solid transparent;position:relative;transition:border-bottom-color .15s ease-in}.mat-toolbar[theme=dark] .navigation a ui-badge,.mat-toolbar[theme=light] .navigation a ui-badge{position:absolute;right:-12px;top:4px;z-index:1}.mat-toolbar[theme=dark] .navigation a.active,.mat-toolbar[theme=light] .navigation a.active{border-top:unset!important;border-bottom:2px solid #D410AA}.mat-toolbar[theme=dark] .navigation a:hover,.mat-toolbar[theme=light] .navigation a:hover{border-top:unset!important;border-bottom:2px solid #242424}@media (max-width: 600px){.mat-toolbar[theme=dark] ui-button,.mat-toolbar[theme=light] ui-button{height:48px}.mat-toolbar[theme=dark] ui-logo,.mat-toolbar[theme=light] ui-logo{width:100%;display:flex;justify-content:center;align-items:center;margin:0!important}.mat-toolbar[theme=dark] ui-logo ::ng-deep img,.mat-toolbar[theme=light] ui-logo ::ng-deep img{height:32px}.mat-toolbar[theme=dark] .custom-toolbar,.mat-toolbar[theme=light] .custom-toolbar{align-items:center}.mat-toolbar[theme=dark] .custom-toolbar .navigation,.mat-toolbar[theme=dark] .custom-toolbar .actions,.mat-toolbar[theme=light] .custom-toolbar .navigation,.mat-toolbar[theme=light] .custom-toolbar .actions{display:none}}.custom-actions{display:flex;align-items:center;height:64px}@media (max-width: 1024px){.custom-actions{display:none}}.row{display:flex;flex-direction:row}.menu-item{display:flex;align-items:center}.menu-item ui-icon{margin-right:16px}\n"] }]
178
+ args: [{ selector: 'ui-navbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ui-side-sheet\n [applicationTheme]=\"applicationTheme\"\n (openChange)=\"onChangeMenuState($event, screenSize)\"\n [position]=\"(isMobile$ | async) ? 'start' : 'end'\"\n>\n <mat-toolbar [attr.theme]=\"applicationTheme\">\n <div class=\"custom-toolbar row\">\n <ui-logo\n [applicationTheme]=\"applicationTheme\"\n class=\"logo\"\n (click)=\"navigate('')\"\n [allowResizing]=\"true\"\n [width]=\"(isMobile$ | async) ? 160 : (isTablet$ | async) ? 30 : 160\"\n [type]=\"\n (isMobile$ | async)\n ? logoType.DEFAULT\n : (isTablet$ | async)\n ? logoType.PRIMARY_BRANDMARK_PINK\n : logoType.DEFAULT\n \"\n ></ui-logo>\n\n <ui-button\n (click)=\"openMobileMenu()\"\n *ngIf=\"isMobile$ | async\"\n [variant]=\"'text'\"\n [companyColor]=\"'#242424'\"\n [applicationTheme]=\"'light'\"\n [iconName]=\"isOpened ? 'Close-in-line' : 'Menu-burger-in-line'\"\n [justIcon]=\"true\"\n ></ui-button>\n\n <div class=\"navigation row\">\n <a\n *ngFor=\"let route of routes\"\n (click)=\"navigate(route.id); $event.preventDefault()\"\n [href]=\"route.id\"\n [attr.data-testid]=\"route.id\"\n data-test-role=\"nav-route\"\n [ngClass]=\"{ active: activeRoutesMap().get(route.id) }\"\n >\n <ui-badge\n *ngIf=\"route?.badgeOptions\"\n [label]=\"route.badgeOptions!.text\"\n [rebrandColor]=\"route.badgeOptions!.color\"\n ></ui-badge>\n <span>{{ route.title }}</span>\n </a>\n </div>\n\n <div class=\"actions\">\n <div class=\"custom-actions\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n\n <button mat-button class=\"profile-menu\" *ngIf=\"isTablet$ | async; else pc\" (click)=\"openMobileMenu()\">\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n\n <ng-template #pc>\n <button\n mat-button\n class=\"profile-menu\"\n [disableRipple]=\"applicationTheme !== 'classic'\"\n (menuOpened)=\"onChangeMenuState(true, 'desktop')\"\n (menuClosed)=\"onChangeMenuState(false, 'desktop')\"\n [matMenuTriggerFor]=\"menu\"\n >\n <ng-container [ngTemplateOutlet]=\"buttonContent\"></ng-container>\n </button>\n </ng-template>\n\n <ng-template #buttonContent>\n <div class=\"profile-button-content\">\n <ng-container *ngIf=\"isAvatar; else onlyName\">\n <ui-avatar\n data-testid=\"profile-button\"\n [ngClass]=\"{ opened: menu._panelAnimationState !== 'void' }\"\n [applicationTheme]=\"applicationTheme\"\n [name]=\"userName\"\n [size]=\"AvatarSize.SMALL_MEDIUM\"\n ></ui-avatar>\n </ng-container>\n\n <ng-template #onlyName>\n {{ userName }}\n </ng-template>\n\n <mat-icon *ngIf=\"applicationTheme === 'classic'; else newThemeIcon\" iconPositionEnd>expand_more</mat-icon>\n <ng-template #newThemeIcon>\n <ui-icon\n [size]=\"'24'\"\n *ngIf=\"!isAvatar\"\n [name]=\"menu._panelAnimationState === 'void' ? 'Arrow-chevron-down-filled' : 'Arrow-chevron-up-filled'\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-icon>\n </ng-template>\n </div>\n </ng-template>\n </div>\n </div>\n </mat-toolbar>\n\n <ng-content></ng-content>\n\n <mat-menu [class]=\"menuClass\" #menu=\"matMenu\">\n <ng-container *ngIf=\"applicationTheme === 'classic'; else newTheme\">\n <button\n *ngFor=\"let e of menuItems\"\n mat-menu-item\n (click)=\"clickMenuItem(e.id)\"\n [attr.data-testid]=\"e.id\"\n data-test-role=\"profile-menu-item\"\n >\n <div class=\"menu-item\">\n <ui-icon *ngIf=\"e?.icon\" [name]=\"e.icon\" size=\"24\"></ui-icon>\n {{ e.text }}\n </div>\n </button>\n\n <button data-testid=\"logout-button\" mat-menu-item (click)=\"logout()\">\n <mat-icon>power_settings_new</mat-icon>\n {{ translationContext + 'LOG_OUT' | uiTranslate | async }}\n </button>\n </ng-container>\n\n <ng-template #newTheme>\n <ui-mobile-navbar-side-sheet\n [isDesktop]=\"true\"\n [menuItems]=\"menuItems\"\n [userName]=\"userName\"\n [routes]=\"routes\"\n [activedRoute]=\"activedRoute()\"\n [email]=\"email\"\n [applicationTheme]=\"applicationTheme\"\n [contentTemplateRef]=\"contentTemplateRef\"\n (menuItemClicked)=\"clickMenuItem($event)\"\n (logoutEvent)=\"logout()\"\n ></ui-mobile-navbar-side-sheet>\n </ng-template>\n </mat-menu>\n</ui-side-sheet>\n", styles: [".bg-teal-60b{background:#1c443c}.bg-teal-30b{background:#31766a}.bg-teal-default{background:#46a997}.bg-teal-30w{background:#7ec3b6}.bg-teal-60w{background:#b5ddd5}.bg-teal-secondary{background:#cbd6cb}.bg-teal-90w{background:#ecf6f5}.bg-petrol-60b{background:#102930}.bg-petrol-30b{background:#1b4754}.bg-petrol-default{background:#276678}.bg-petrol-30w{background:#6894a0}.bg-petrol-60w{background:#a9c2c9}.bg-petrol-secondary{background:#c8d7de}.bg-petrol-90w{background:#e9f0f1}.bg-error-60b{background:#513131}.bg-error-30b{background:#8e5655}.bg-error-60w{background:#e3c3c6}.bg-error-secondary{background:#f0dad9}.bg-error-default{background:#cb7b7a}.bg-warning-secondary{background:#f0d6bb}.bg-warning-default{background:#cca45f}.bg-black{background:#000}.bg-dark{background:#888}.bg-medium{background:#e0e0e0}.bg-grey{background:#ededed}.bg-light{background:#f6f6f6}.bg-white{background:#fff}.bg-box-shadow{background:#00000014}.bg-navigation-subtitle{background:#528593}.bgc-teal-60b{background-color:#1c443c}.bgc-teal-30b{background-color:#31766a}.bgc-teal-default{background-color:#46a997}.bgc-teal-30w{background-color:#7ec3b6}.bgc-teal-60w{background-color:#b5ddd5}.bgc-teal-secondary{background-color:#cbd6cb}.bgc-teal-90w{background-color:#ecf6f5}.bgc-petrol-60b{background-color:#102930}.bgc-petrol-30b{background-color:#1b4754}.bgc-petrol-default{background-color:#276678}.bgc-petrol-30w{background-color:#6894a0}.bgc-petrol-60w{background-color:#a9c2c9}.bgc-petrol-secondary{background-color:#c8d7de}.bgc-petrol-90w{background-color:#e9f0f1}.bgc-error-60b{background-color:#513131}.bgc-error-30b{background-color:#8e5655}.bgc-error-60w{background-color:#e3c3c6}.bgc-error-secondary{background-color:#f0dad9}.bgc-error-default{background-color:#cb7b7a}.bgc-warning-secondary{background-color:#f0d6bb}.bgc-warning-default{background-color:#cca45f}.bgc-black{background-color:#000}.bgc-dark{background-color:#888}.bgc-medium{background-color:#e0e0e0}.bgc-grey{background-color:#ededed}.bgc-light{background-color:#f6f6f6}.bgc-white{background-color:#fff}.bgc-box-shadow{background-color:#00000014}.bgc-navigation-subtitle{background-color:#528593}:host{height:100%}:host ::ng-deep .side-sheet-container{display:block;height:100%;position:unset!important}:host ::ng-deep .mat-drawer-container{height:100%}:host ::ng-deep .mat-drawer{padding:0!important;background:#fff!important}:host ::ng-deep .mat-drawer .mat-drawer-inner-container .header{padding:16px 16px 16px 24px!important;border-bottom:1px solid #D3D3D3;height:64px}:host ::ng-deep .mat-drawer .mat-drawer-inner-container .header ui-logo{width:100%;margin:0!important;display:flex;justify-content:flex-start}:host ::ng-deep .mat-drawer .mat-drawer-inner-container .header ui-logo img{width:fit-content;height:32px}@media (max-width: 1024px) and (min-width: 600px){:host ::ng-deep .mat-drawer{margin-top:64px;height:calc(100% - 64px);max-width:375px}:host ::ng-deep .mat-drawer .header{display:none!important}:host ::ng-deep .mat-drawer-backdrop{background:transparent!important;opacity:0!important}}@media (max-width: 600px){:host ::ng-deep .mat-drawer{margin-top:64px;height:calc(100% - 64px)}:host ::ng-deep .mat-drawer .header{display:none!important}:host ::ng-deep .mat-drawer-backdrop{background:transparent!important;opacity:0!important}}.mat-toolbar{height:80px;background-color:#fff!important}.mat-toolbar .custom-toolbar{width:100%;height:100%;background-color:#fff;max-width:1440px;padding:0}@media (max-width: 600px){.mat-toolbar .custom-toolbar{padding:0 16px}}@media (min-width: 1024px) and (max-width: 1280px){.mat-toolbar .custom-toolbar{padding:0 40px!important}}@media (min-width: 960px) and (max-width: 1024px){.mat-toolbar .custom-toolbar{padding:0 40px!important}}@media (max-width: 960px){.mat-toolbar .custom-toolbar{padding:0 20px!important}}@media (max-width: 1024px){.mat-toolbar .custom-toolbar{padding:0 64px}}.mat-toolbar .custom-toolbar ui-logo.logo{cursor:pointer;height:43px;align-self:center;display:flex;margin-left:0!important}@media (max-width: 1024px){.mat-toolbar .custom-toolbar ui-logo.logo{min-width:22px}}.mat-toolbar .custom-toolbar .navigation{height:100%;margin-left:40px}.mat-toolbar .custom-toolbar .navigation a{display:flex;align-items:center;height:100%;background:#fff;cursor:pointer;color:#000;text-decoration:none}.mat-toolbar .custom-toolbar .navigation a:hover{text-decoration:none}.mat-toolbar .custom-toolbar .navigation a.active{border-top:2px solid #276678}.mat-toolbar .custom-toolbar .navigation a.active span{font-weight:700}.mat-toolbar .custom-toolbar .navigation a span{width:100%;text-align:center;font-weight:400;font-size:14px;line-height:16px}.mat-toolbar .custom-toolbar .actions{width:100%;display:flex;align-items:center;justify-content:flex-end;margin-right:7px}@media (max-width: 600px){.mat-toolbar .custom-toolbar .actions{margin-right:0}}.mat-toolbar .custom-toolbar .actions .profile-menu{font-weight:600;font-size:14px;height:100%;margin-right:-20px}.mat-toolbar .custom-toolbar .actions .profile-menu mat-icon{font-size:16px;position:relative;top:3px;left:3px}.mat-toolbar .custom-toolbar .actions .profile-button-content{display:flex;align-items:center;flex-wrap:nowrap}.mat-toolbar .custom-toolbar .actions .profile-button-content ui-avatar{position:relative}.mat-toolbar .custom-toolbar .actions .profile-button-content ui-avatar.opened:after{position:absolute;content:\"\";width:40px;height:40px;left:-2px;top:-2px;z-index:-1;border-radius:100%;background:#f4f4f4}.mat-toolbar[theme=dark],.mat-toolbar[theme=light]{display:flex;justify-content:center;width:100%;height:64px;padding:0;border-bottom:1px solid #D3D3D3}.mat-toolbar[theme=dark] .custom-toolbar,.mat-toolbar[theme=light] .custom-toolbar{justify-content:space-between}@media (min-width: 1280px){.mat-toolbar[theme=dark] .custom-toolbar,.mat-toolbar[theme=light] .custom-toolbar{padding:0 64px!important}}.mat-toolbar[theme=dark] ui-logo.logo,.mat-toolbar[theme=light] ui-logo.logo{justify-content:flex-start;margin-left:40px}@media (min-width: 1024px){.mat-toolbar[theme=dark] ui-logo.logo,.mat-toolbar[theme=light] ui-logo.logo{min-width:160px}}@media (max-width: 1024px){.mat-toolbar[theme=dark] ui-logo.logo,.mat-toolbar[theme=light] ui-logo.logo{margin-left:20px!important}}.mat-toolbar[theme=dark] .actions,.mat-toolbar[theme=light] .actions{color:#242424}.mat-toolbar[theme=dark] .actions ::ng-deep .mat-mdc-button .mdc-button__label,.mat-toolbar[theme=light] .actions ::ng-deep .mat-mdc-button .mdc-button__label{font-weight:400}.mat-toolbar[theme=dark] .actions .profile-menu,.mat-toolbar[theme=light] .actions .profile-menu{margin-right:0}.mat-toolbar[theme=dark] ui-icon,.mat-toolbar[theme=light] ui-icon{margin-left:8px}.mat-toolbar[theme=dark] ui-icon.open,.mat-toolbar[theme=light] ui-icon.open{transform:rotate(180deg)}.mat-toolbar[theme=dark] .navigation,.mat-toolbar[theme=light] .navigation{gap:2px}.mat-toolbar[theme=dark] .navigation a,.mat-toolbar[theme=light] .navigation a{padding:16px 24px;border-bottom:2px solid transparent;position:relative;transition:border-bottom-color .15s ease-in}.mat-toolbar[theme=dark] .navigation a ui-badge,.mat-toolbar[theme=light] .navigation a ui-badge{position:absolute;right:-12px;top:4px;z-index:1}.mat-toolbar[theme=dark] .navigation a.active,.mat-toolbar[theme=light] .navigation a.active{border-top:unset!important;border-bottom:2px solid #D410AA}.mat-toolbar[theme=dark] .navigation a:hover,.mat-toolbar[theme=light] .navigation a:hover{border-top:unset!important;border-bottom:2px solid #242424}@media (max-width: 600px){.mat-toolbar[theme=dark] ui-button,.mat-toolbar[theme=light] ui-button{height:48px}.mat-toolbar[theme=dark] ui-logo,.mat-toolbar[theme=light] ui-logo{width:100%;display:flex;justify-content:center;align-items:center;margin:0!important}.mat-toolbar[theme=dark] ui-logo ::ng-deep img,.mat-toolbar[theme=light] ui-logo ::ng-deep img{height:32px}.mat-toolbar[theme=dark] .custom-toolbar,.mat-toolbar[theme=light] .custom-toolbar{align-items:center}.mat-toolbar[theme=dark] .custom-toolbar .navigation,.mat-toolbar[theme=dark] .custom-toolbar .actions,.mat-toolbar[theme=light] .custom-toolbar .navigation,.mat-toolbar[theme=light] .custom-toolbar .actions{display:none}}.custom-actions{display:flex;align-items:center;height:64px}@media (max-width: 1024px){.custom-actions{display:none}}.row{display:flex;flex-direction:row}.menu-item{display:flex;align-items:center}.menu-item ui-icon{margin-right:16px}\n"] }]
175
179
  }], ctorParameters: () => [{ type: i1.BreakpointObserver }, { type: undefined, decorators: [{
176
180
  type: Optional
177
181
  }, {
@@ -179,8 +183,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
179
183
  args: ['CANOPYUI_DEFAULT_APPLICATION_THEME']
180
184
  }] }, { type: i2.SideSheetService }, { type: i0.DestroyRef }], propDecorators: { routes: [{
181
185
  type: Input
182
- }], activedRoute: [{
183
- type: Input
184
186
  }], userName: [{
185
187
  type: Input
186
188
  }], email: [{
@@ -206,4 +208,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
206
208
  }], menuState: [{
207
209
  type: Output
208
210
  }] } });
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9uYXZiYXIvbmF2YmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9uYXZiYXIvbmF2YmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLFFBQVEsRUFDUixNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTlFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBRS9HLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUXBELE1BQU0sT0FBTyxlQUFlO0lBNEQxQjs7OztPQUlHO0lBQ0gsSUFBYSxnQkFBZ0IsQ0FBQyxLQUFhO1FBQ3pDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUM7SUFDSCxDQUFDO0lBMkRELFlBQ21CLGtCQUFzQyxFQUNvQixlQUFpQyxFQUNwRyxnQkFBa0MsRUFDbEMsVUFBc0I7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QkFBeEIsS0FBSztnQkFTRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBT08sZ0JBQWdCO3NCQUE1QixLQUFLO2dCQWFHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBUUcsU0FBUztzQkFBakIsS0FBSztnQkFLSSxhQUFhO3NCQUF0QixNQUFNO2dCQUtHLGVBQWU7c0JBQXhCLE1BQU07Z0JBS0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJUm91dGUsIE1lbnVJdGVtLCBNZW51U3RhdGUsIFNjcmVlblNpemUgfSBmcm9tICcuL25hdmJhci5tb2RlbCc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblRoZW1lIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2FwcGxpY2F0aW9uLXRoZW1lLm1vZGVsJztcbmltcG9ydCB7IG1hcCwgUmVwbGF5U3ViamVjdCwgc3RhcnRXaXRoLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2lkZVNoZWV0U2VydmljZSB9IGZyb20gJy4uL3NpZGUtc2hlZXQvc2lkZS1zaGVldC5zZXJ2aWNlJztcbmltcG9ydCB7IE1vYmlsZU5hdmJhclNpZGVTaGVldENvbXBvbmVudCB9IGZyb20gJy4vbW9iaWxlLW5hdmJhci1zaWRlLXNoZWV0L21vYmlsZS1uYXZiYXItc2lkZS1zaGVldC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBTY3JlZW5CcmVha3BvaW50cyB9IGZyb20gJy4uLy4uL21vZGVscy9zY3JlZW4tYnJlYWtwb2ludHMubW9kZWwnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTG9nb1R5cGVFbnVtIH0gZnJvbSAnLi4vbG9nby9sb2dvLm1vZGVsJztcbmltcG9ydCB7IEF2YXRhclNpemUgfSBmcm9tICcuLi9hdmF0YXIvYXZhdGFyLm1vZGVsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndWktbmF2YmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL25hdmJhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL25hdmJhci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmF2YmFyQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFJvdXRlcyBvYmplY3RcbiAgICpcbiAgICogQHR5cGUge0lSb3V0ZX1cbiAgICogQG1lbWJlcm9mIE5hdmJhckNvbXBvbmVudFxuICAgKiBAaWdub3JlXG4gICAqL1xuICBASW5wdXQoKSByb3V0ZXM6IElSb3V0ZVtdID0gW107XG5cbiAgLyoqXG4gICAqIEFjdGl2ZWQgcm91dGUgaWRcbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIE5hdmJhckNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgYWN0aXZlZFJvdXRlID0gJyc7XG5cbiAgLyoqXG4gICAqIFVzZXIgZmlyc3QgbmFtZSBhbmQgbGFzdCBuYW1lXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBOYXZiYXJDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHVzZXJOYW1lID0gJyc7XG5cbiAgLyoqXG4gICAqIFVzZXIgZW1haWxcbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIE5hdmJhckNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgZW1haWwgPSAnJztcblxuICAvKipcbiAgICogTWVudSBpdGVtcyB0byBzaG93IGluIG1lbnUgYWJvdmUgdGhlIExvZyBvdXQgYnV0dG9uXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBOYXZiYXJDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIG1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xuXG4gIC8qKlxuICAgKlxuICAgKiBEZWZpbmVzIHRoZSBhcHBsaWNhdGlvbiB0aGVtZVxuICAgKlxuICAgKiBAdHlwZSB7QXBwbGljYXRpb25UaGVtZX1cbiAgICogQG1lbWJlcm9mIE5hdmJhckNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgYXBwbGljYXRpb25UaGVtZTogQXBwbGljYXRpb25UaGVtZSA9ICdsaWdodCc7XG5cbiAgLyoqXG4gICAqXG4gICAqIEl0J3MgbmctY29udGVudCBmb3IgbW9iaWxlIHZlcnNpb25cbiAgICpcbiAgICogQHR5cGUge0FwcGxpY2F0aW9uVGhlbWV9XG4gICAqIEBtZW1iZXJvZiBOYXZiYXJDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGNvbnRlbnRUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKipcbiAgICogTW9iaWxlIGJyZWFrcG9pbnRcbiAgICogQHR5cGUge251bWJlcn1cbiAgICogQG1lbWJlcm9mIE5hdmJhckNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgc2V0IG1vYmlsZUJyZWFrcG9pbnQodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5fbW9iaWxlQnJlYWtwb2ludCQubmV4dCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIFNob3cgYXZhdGFyIHdpdGggdXNlciBpbml0aWFsc1xuICAgKlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICogQG1lbWJlcm9mIE5hdmJhckNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgaXNBdmF0YXIgPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBTZXRzIGNsYXNzIGZvciB0aGUgbWVudVxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgTmF2YmFyQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBtZW51Q2xhc3MgPSAnJztcblxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQE91dHB1dCgpIG5hdmlnYXRlRXZlbnQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBPdXRwdXQoKSBtZW51SXRlbUNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBPdXRwdXQoKSBsb2dvdXRFdmVudDogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgbWVudVN0YXRlOiBFdmVudEVtaXR0ZXI8TWVudVN0YXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8TWVudVN0YXRlPigpO1xuXG4gIHByb3RlY3RlZCBzY3JlZW5TaXplOiBTY3JlZW5TaXplID0gJ2Rlc2t0b3AnO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhbnNsYXRpb25Db250ZXh0ID0gJ05BVkJBUi4nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tb2JpbGVCcmVha3BvaW50JCA9IG5ldyBSZXBsYXlTdWJqZWN0PG51bWJlcj4oMSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RhYmxldEJyZWFrcG9pbnQkID0gbmV3IFJlcGxheVN1YmplY3Q8bnVtYmVyPigxKTtcbiAgcHJpdmF0ZSByZWFkb25seSBtb2JpbGVCcmVha3BvaW50T2JzJCA9IHRoaXMuX21vYmlsZUJyZWFrcG9pbnQkLnBpcGUoc3RhcnRXaXRoKFNjcmVlbkJyZWFrcG9pbnRzLk1PQklMRSkpO1xuICBwcml2YXRlIHJlYWRvbmx5IHRhYmxldEJyZWFrcG9pbnRPYnMkID0gdGhpcy5fdGFibGV0QnJlYWtwb2ludCQucGlwZShzdGFydFdpdGgoU2NyZWVuQnJlYWtwb2ludHMuVEFCTEVUKSk7XG4gIHByb3RlY3RlZCByZWFkb25seSBpc01vYmlsZSQgPSB0aGlzLm1vYmlsZUJyZWFrcG9pbnRPYnMkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGJyZWFrcG9pbnQgPT4gdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIub2JzZXJ2ZShgKG1heC13aWR0aDogJHticmVha3BvaW50fXB4KWApXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHYgPT4gdi5tYXRjaGVzKSxcbiAgICAgICAgdGFwKGlzTW9iaWxlID0+IGlzTW9iaWxlID8gdGhpcy5zY3JlZW5TaXplID0gJ21vYmlsZScgOiAnZGVza3RvcCcpXG4gICAgICApKVxuICApO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNUYWJsZXQkID0gdGhpcy50YWJsZXRCcmVha3BvaW50T2JzJC5waXBlKFxuICAgIHN3aXRjaE1hcChicmVha3BvaW50ID0+IHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLm9ic2VydmUoYChtYXgtd2lkdGg6ICR7YnJlYWtwb2ludH1weClgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCh2ID0+IHYubWF0Y2hlcyksXG4gICAgICAgIHRhcChpc1RhYmxldCA9PiBpc1RhYmxldCA/IHRoaXMuc2NyZWVuU2l6ZSA9ICd0YWJsZXQnIDogJ2Rlc2t0b3AnKVxuICAgICAgKVxuICAgIClcbiAgKTtcbiAgcHJvdGVjdGVkIGlzT3BlbmVkID0gZmFsc2U7XG4gIHByb3RlY3RlZCBsb2dvVHlwZSA9IExvZ29UeXBlRW51bTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoJ0NBTk9QWVVJX0RFRkFVTFRfQVBQTElDQVRJT05fVEhFTUUnKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRBcHBUaGVtZTogQXBwbGljYXRpb25UaGVtZSxcbiAgICBwcml2YXRlIHNpZGVTaGVldFNlcnZpY2U6IFNpZGVTaGVldFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkZXN0cm95UmVmOiBEZXN0cm95UmVmLFxuICApIHtcbiAgICBpZiAoZGVmYXVsdEFwcFRoZW1lKSB7XG4gICAgICB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPSBkZWZhdWx0QXBwVGhlbWU7XG4gICAgfVxuICB9XG5cbiAgb3Blbk1vYmlsZU1lbnUoKTogdm9pZCB7XG4gICAgY29uc3QgaXNTaWRlU2hlZXRDbG9zZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBjb25zdCBuYXZiYXJTaWRlU2hlZXRDb21wb25lbnQgPSB0aGlzLnNpZGVTaGVldFNlcnZpY2Uub3BlbjxNb2JpbGVOYXZiYXJTaWRlU2hlZXRDb21wb25lbnQ+KHtcbiAgICAgIGNvbXBvbmVudFJlZjogTW9iaWxlTmF2YmFyU2lkZVNoZWV0Q29tcG9uZW50LFxuICAgICAgc2hvd0xvZ286IHRydWUsXG4gICAgICBjbG9zZWQ6IGlzU2lkZVNoZWV0Q2xvc2VkJCxcbiAgICB9KTtcblxuICAgIG5hdmJhclNpZGVTaGVldENvbXBvbmVudC51c2VyTmFtZSA9IHRoaXMudXNlck5hbWU7XG4gICAgbmF2YmFyU2lkZVNoZWV0Q29tcG9uZW50Lm1lbnVJdGVtcyA9IHRoaXMubWVudUl0ZW1zO1xuICAgIG5hdmJhclNpZGVTaGVldENvbXBvbmVudC5hY3RpdmVkUm91dGUgPSB0aGlzLmFjdGl2ZWRSb3V0ZTtcbiAgICBuYXZiYXJTaWRlU2hlZXRDb21wb25lbnQucm91dGVzID0gdGhpcy5yb3V0ZXM7XG4gICAgbmF2YmFyU2lkZVNoZWV0Q29tcG9uZW50LmVtYWlsID0gdGhpcy5lbWFpbDtcbiAgICBuYXZiYXJTaWRlU2hlZXRDb21wb25lbnQuY29udGVudFRlbXBsYXRlUmVmID0gdGhpcy5jb250ZW50VGVtcGxhdGVSZWY7XG4gICAgbmF2YmFyU2lkZVNoZWV0Q29tcG9uZW50LmFwcGxpY2F0aW9uVGhlbWUgPSB0aGlzLmFwcGxpY2F0aW9uVGhlbWU7XG5cbiAgICBuYXZiYXJTaWRlU2hlZXRDb21wb25lbnQubG9nb3V0RXZlbnQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMubG9nb3V0RXZlbnQuZW1pdCgpO1xuICAgICAgaXNTaWRlU2hlZXRDbG9zZWQkLm5leHQoKTtcbiAgICB9KTtcblxuICAgIG5hdmJhclNpZGVTaGVldENvbXBvbmVudC5tZW51SXRlbUNsaWNrZWQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIHRoaXMubWVudUl0ZW1DbGlja2VkLmVtaXQodmFsdWUpO1xuICAgICAgaXNTaWRlU2hlZXRDbG9zZWQkLm5leHQoKTtcbiAgICB9KTtcblxuICAgIG5hdmJhclNpZGVTaGVldENvbXBvbmVudC5uYXZpZ2F0ZUV2ZW50LnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICB0aGlzLm5hdmlnYXRlRXZlbnQuZW1pdCh2YWx1ZSk7XG4gICAgICBpc1NpZGVTaGVldENsb3NlZCQubmV4dCgpO1xuICAgIH0pO1xuICB9XG5cbiAgbmF2aWdhdGUocm91dGVJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5uYXZpZ2F0ZUV2ZW50LmVtaXQoYC8ke3JvdXRlSWR9YCk7XG4gIH1cblxuICBsb2dvdXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2dvdXRFdmVudC5lbWl0KCk7XG4gIH1cblxuICBjbGlja01lbnVJdGVtKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLm1lbnVJdGVtQ2xpY2tlZC5lbWl0KGlkKTtcbiAgfVxuXG4gIG9uQ2hhbmdlTWVudVN0YXRlKGlzT3BlbmVkOiBib29sZWFuLCBzY3JlZW5TaXplOiBTY3JlZW5TaXplKSB7XG4gICAgdGhpcy5pc09wZW5lZCA9IGlzT3BlbmVkO1xuICAgIHRoaXMubWVudVN0YXRlLmVtaXQoeyBpc09wZW5lZCwgc2NyZWVuU2l6ZSB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBBdmF0YXJTaXplID0gQXZhdGFyU2l6ZTtcbn1cbiIsIjx1aS1zaWRlLXNoZWV0XG4gIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIlxuICAob3BlbkNoYW5nZSk9XCJvbkNoYW5nZU1lbnVTdGF0ZSgkZXZlbnQsIHNjcmVlblNpemUpXCJcbiAgW3Bvc2l0aW9uXT1cIihpc01vYmlsZSQgfCBhc3luYykgPyAnc3RhcnQnIDogJ2VuZCdcIlxuPlxuICA8bWF0LXRvb2xiYXIgW2F0dHIudGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tdG9vbGJhciByb3dcIj5cbiAgICAgIDx1aS1sb2dvXG4gICAgICAgIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIlxuICAgICAgICBjbGFzcz1cImxvZ29cIlxuICAgICAgICAoY2xpY2spPVwibmF2aWdhdGUoJycpXCJcbiAgICAgICAgW2FsbG93UmVzaXppbmddPVwidHJ1ZVwiXG4gICAgICAgIFt3aWR0aF09XCIoaXNNb2JpbGUkIHwgYXN5bmMpID8gMTYwIDogKGlzVGFibGV0JCB8IGFzeW5jKSA/IDMwIDogMTYwXCJcbiAgICAgICAgW3R5cGVdPVwiXG4gICAgICAgICAgKGlzTW9iaWxlJCB8IGFzeW5jKVxuICAgICAgICAgICAgPyBsb2dvVHlwZS5ERUZBVUxUXG4gICAgICAgICAgICA6IChpc1RhYmxldCQgfCBhc3luYylcbiAgICAgICAgICAgID8gbG9nb1R5cGUuUFJJTUFSWV9CUkFORE1BUktfUElOS1xuICAgICAgICAgICAgOiBsb2dvVHlwZS5ERUZBVUxUXG4gICAgICAgIFwiXG4gICAgICA+PC91aS1sb2dvPlxuXG4gICAgICA8dWktYnV0dG9uXG4gICAgICAgIChjbGljayk9XCJvcGVuTW9iaWxlTWVudSgpXCJcbiAgICAgICAgKm5nSWY9XCJpc01vYmlsZSQgfCBhc3luY1wiXG4gICAgICAgIFt2YXJpYW50XT1cIid0ZXh0J1wiXG4gICAgICAgIFtjb21wYW55Q29sb3JdPVwiJyMyNDI0MjQnXCJcbiAgICAgICAgW2FwcGxpY2F0aW9uVGhlbWVdPVwiJ2xpZ2h0J1wiXG4gICAgICAgIFtpY29uTmFtZV09XCJpc09wZW5lZCA/ICdDbG9zZS1pbi1saW5lJyA6ICdNZW51LWJ1cmdlci1pbi1saW5lJ1wiXG4gICAgICAgIFtqdXN0SWNvbl09XCJ0cnVlXCJcbiAgICAgID48L3VpLWJ1dHRvbj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm5hdmlnYXRpb24gcm93XCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHJvdXRlIG9mIHJvdXRlc1wiXG4gICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlKHJvdXRlLmlkKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgIFtocmVmXT1cInJvdXRlLmlkXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCJyb3V0ZS5pZFwiXG4gICAgICAgICAgZGF0YS10ZXN0LXJvbGU9XCJuYXYtcm91dGVcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBhY3RpdmVkUm91dGUgPT09IHJvdXRlLmlkIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHVpLWJhZGdlXG4gICAgICAgICAgICAqbmdJZj1cInJvdXRlPy5iYWRnZU9wdGlvbnNcIlxuICAgICAgICAgICAgW2xhYmVsXT1cInJvdXRlLmJhZGdlT3B0aW9ucyEudGV4dFwiXG4gICAgICAgICAgICBbcmVicmFuZENvbG9yXT1cInJvdXRlLmJhZGdlT3B0aW9ucyEuY29sb3JcIlxuICAgICAgICAgID48L3VpLWJhZGdlPlxuICAgICAgICAgIDxzcGFuPnt7IHJvdXRlLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1hY3Rpb25zXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2FjdGlvbnNdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJwcm9maWxlLW1lbnVcIiAqbmdJZj1cImlzVGFibGV0JCB8IGFzeW5jOyBlbHNlIHBjXCIgKGNsaWNrKT1cIm9wZW5Nb2JpbGVNZW51KClcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJ1dHRvbkNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNwYz5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cInByb2ZpbGUtbWVudVwiXG4gICAgICAgICAgICBbZGlzYWJsZVJpcHBsZV09XCJhcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYydcIlxuICAgICAgICAgICAgKG1lbnVPcGVuZWQpPVwib25DaGFuZ2VNZW51U3RhdGUodHJ1ZSwgJ2Rlc2t0b3AnKVwiXG4gICAgICAgICAgICAobWVudUNsb3NlZCk9XCJvbkNoYW5nZU1lbnVTdGF0ZShmYWxzZSwgJ2Rlc2t0b3AnKVwiXG4gICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJidXR0b25Db250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNidXR0b25Db250ZW50PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWJ1dHRvbi1jb250ZW50XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNBdmF0YXI7IGVsc2Ugb25seU5hbWVcIj5cbiAgICAgICAgICAgICAgPHVpLWF2YXRhclxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicHJvZmlsZS1idXR0b25cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgb3BlbmVkOiBtZW51Ll9wYW5lbEFuaW1hdGlvblN0YXRlICE9PSAndm9pZCcgfVwiXG4gICAgICAgICAgICAgICAgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwidXNlck5hbWVcIlxuICAgICAgICAgICAgICAgIFtzaXplXT1cIkF2YXRhclNpemUuU01BTExfTUVESVVNXCJcbiAgICAgICAgICAgICAgPjwvdWktYXZhdGFyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb25seU5hbWU+XG4gICAgICAgICAgICAgIHt7IHVzZXJOYW1lIH19XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJhcHBsaWNhdGlvblRoZW1lID09PSAnY2xhc3NpYyc7IGVsc2UgbmV3VGhlbWVJY29uXCIgaWNvblBvc2l0aW9uRW5kPmV4cGFuZF9tb3JlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbmV3VGhlbWVJY29uPlxuICAgICAgICAgICAgICA8dWktaWNvblxuICAgICAgICAgICAgICAgIFtzaXplXT1cIicyNCdcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzQXZhdGFyXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJtZW51Ll9wYW5lbEFuaW1hdGlvblN0YXRlID09PSAndm9pZCcgPyAnQXJyb3ctY2hldnJvbi1kb3duLWZpbGxlZCcgOiAnQXJyb3ctY2hldnJvbi11cC1maWxsZWQnXCJcbiAgICAgICAgICAgICAgICBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgICAgICAgICAgPjwvdWktaWNvbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtdG9vbGJhcj5cblxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgPG1hdC1tZW51IFtjbGFzc109XCJtZW51Q2xhc3NcIiAjbWVudT1cIm1hdE1lbnVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnOyBlbHNlIG5ld1RoZW1lXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0Zvcj1cImxldCBlIG9mIG1lbnVJdGVtc1wiXG4gICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgKGNsaWNrKT1cImNsaWNrTWVudUl0ZW0oZS5pZClcIlxuICAgICAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCJlLmlkXCJcbiAgICAgICAgZGF0YS10ZXN0LXJvbGU9XCJwcm9maWxlLW1lbnUtaXRlbVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW1cIj5cbiAgICAgICAgICA8dWktaWNvbiAqbmdJZj1cImU/Lmljb25cIiBbbmFtZV09XCJlLmljb25cIiBzaXplPVwiMjRcIj48L3VpLWljb24+XG4gICAgICAgICAge3sgZS50ZXh0IH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxidXR0b24gZGF0YS10ZXN0aWQ9XCJsb2dvdXQtYnV0dG9uXCIgbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwibG9nb3V0KClcIj5cbiAgICAgICAgPG1hdC1pY29uPnBvd2VyX3NldHRpbmdzX25ldzwvbWF0LWljb24+XG4gICAgICAgIHt7IHRyYW5zbGF0aW9uQ29udGV4dCArICdMT0dfT1VUJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNuZXdUaGVtZT5cbiAgICAgIDx1aS1tb2JpbGUtbmF2YmFyLXNpZGUtc2hlZXRcbiAgICAgICAgW2lzRGVza3RvcF09XCJ0cnVlXCJcbiAgICAgICAgW21lbnVJdGVtc109XCJtZW51SXRlbXNcIlxuICAgICAgICBbdXNlck5hbWVdPVwidXNlck5hbWVcIlxuICAgICAgICBbcm91dGVzXT1cInJvdXRlc1wiXG4gICAgICAgIFthY3RpdmVkUm91dGVdPVwiYWN0aXZlZFJvdXRlXCJcbiAgICAgICAgW2VtYWlsXT1cImVtYWlsXCJcbiAgICAgICAgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICAgIFtjb250ZW50VGVtcGxhdGVSZWZdPVwiY29udGVudFRlbXBsYXRlUmVmXCJcbiAgICAgICAgKG1lbnVJdGVtQ2xpY2tlZCk9XCJjbGlja01lbnVJdGVtKCRldmVudClcIlxuICAgICAgICAobG9nb3V0RXZlbnQpPVwibG9nb3V0KClcIlxuICAgICAgPjwvdWktbW9iaWxlLW5hdmJhci1zaWRlLXNoZWV0PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbWF0LW1lbnU+XG48L3VpLXNpZGUtc2hlZXQ+XG4iXX0=
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9uYXZiYXIvbmF2YmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rnby1jYW5vcHktdWkvY29tcG9uZW50cy9uYXZiYXIvbmF2YmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFFBQVEsRUFFUixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFOUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFFL0csT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRcEQsTUFBTSxPQUFPLGVBQWU7SUE0RDFCOzs7O09BSUc7SUFDSCxJQUFhLGdCQUFnQixDQUFDLEtBQWE7UUFDekMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7SUFnRUQsWUFDbUIsa0JBQXNDLEVBQ29CLGVBQWlDLEVBQ3BH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Q0FBQyxDQUFDO0lBQ2hELENBQUM7K0dBL0xVLGVBQWUsb0RBdUlKLG9DQUFvQzttR0F2SS9DLGVBQWUsc2lEQy9CNUIscTdKQThJQTs7NEZEL0dhLGVBQWU7a0JBTjNCLFNBQVM7K0JBQ0UsV0FBVyxtQkFHSix1QkFBdUIsQ0FBQyxNQUFNOzswQkF5STVDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsb0NBQW9DO2lHQS9IakQsTUFBTTtzQkFBZCxLQUFLO2dCQWdCRyxRQUFRO3NCQUFoQixLQUFLO2dCQVFHLEtBQUs7c0JBQWIsS0FBSztnQkFRRyxTQUFTO3NCQUFqQixLQUFLO2dCQVNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFTRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBT08sZ0JBQWdCO3NCQUE1QixLQUFLO2dCQWFHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBUUcsU0FBUztzQkFBakIsS0FBSztnQkFLSSxhQUFhO3NCQUF0QixNQUFNO2dCQUtHLGVBQWU7c0JBQXhCLE1BQU07Z0JBS0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIERlc3Ryb3lSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBpbnB1dCxcbiAgSW5wdXQsXG4gIElucHV0U2lnbmFsLFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LCBTaWduYWwsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElSb3V0ZSwgTWVudUl0ZW0sIE1lbnVTdGF0ZSwgU2NyZWVuU2l6ZSB9IGZyb20gJy4vbmF2YmFyLm1vZGVsJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uVGhlbWUgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXBwbGljYXRpb24tdGhlbWUubW9kZWwnO1xuaW1wb3J0IHsgbWFwLCBSZXBsYXlTdWJqZWN0LCBzdGFydFdpdGgsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTaWRlU2hlZXRTZXJ2aWNlIH0gZnJvbSAnLi4vc2lkZS1zaGVldC9zaWRlLXNoZWV0LnNlcnZpY2UnO1xuaW1wb3J0IHsgTW9iaWxlTmF2YmFyU2lkZVNoZWV0Q29tcG9uZW50IH0gZnJvbSAnLi9tb2JpbGUtbmF2YmFyLXNpZGUtc2hlZXQvbW9iaWxlLW5hdmJhci1zaWRlLXNoZWV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCcmVha3BvaW50T2JzZXJ2ZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IFNjcmVlbkJyZWFrcG9pbnRzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NjcmVlbi1icmVha3BvaW50cy5tb2RlbCc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBMb2dvVHlwZUVudW0gfSBmcm9tICcuLi9sb2dvL2xvZ28ubW9kZWwnO1xuaW1wb3J0IHsgQXZhdGFyU2l6ZSB9IGZyb20gJy4uL2F2YXRhci9hdmF0YXIubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd1aS1uYXZiYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbmF2YmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbmF2YmFyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBOYXZiYXJDb21wb25lbnQge1xuICAvKipcbiAgICogUm91dGVzIG9iamVjdFxuICAgKlxuICAgKiBAdHlwZSB7SVJvdXRlfVxuICAgKiBAbWVtYmVyb2YgTmF2YmFyQ29tcG9uZW50XG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBJbnB1dCgpIHJvdXRlczogSVJvdXRlW10gPSBbXTtcblxuICAvKipcbiAgICogQWN0aXZlZCByb3V0ZSBpZFxuICAgKlxuICAgKiBAdHlwZSB7SW5wdXRTaWduYWw8c3RyaW5nPn1cbiAgICogQG1lbWJlcm9mIE5hdmJhckNvbXBvbmVudFxuICAgKi9cbiAgYWN0aXZlZFJvdXRlOiBJbnB1dFNpZ25hbDxzdHJpbmc+ID0gaW5wdXQoJycpO1xuXG4gIC8qKlxuICAgKiBVc2VyIGZpcnN0IG5hbWUgYW5kIGxhc3QgbmFtZVxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgTmF2YmFyQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSB1c2VyTmFtZSA9ICcnO1xuXG4gIC8qKlxuICAgKiBVc2VyIGVtYWlsXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqIEBtZW1iZXJvZiBOYXZiYXJDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGVtYWlsID0gJyc7XG5cbiAgLyoqXG4gICAqIE1lbnUgaXRlbXMgdG8gc2hvdyBpbiBtZW51IGFib3ZlIHRoZSBMb2cgb3V0IGJ1dHRvblxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKiBAbWVtYmVyb2YgTmF2YmFyQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBtZW51SXRlbXM6IE1lbnVJdGVtW10gPSBbXTtcblxuICAvKipcbiAgICpcbiAgICogRGVmaW5lcyB0aGUgYXBwbGljYXRpb24gdGhlbWVcbiAgICpcbiAgICogQHR5cGUge0FwcGxpY2F0aW9uVGhlbWV9XG4gICAqIEBtZW1iZXJvZiBOYXZiYXJDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGFwcGxpY2F0aW9uVGhlbWU6IEFwcGxpY2F0aW9uVGhlbWUgPSAnbGlnaHQnO1xuXG4gIC8qKlxuICAgKlxuICAgKiBJdCdzIG5nLWNvbnRlbnQgZm9yIG1vYmlsZSB2ZXJzaW9uXG4gICAqXG4gICAqIEB0eXBlIHtBcHBsaWNhdGlvblRoZW1lfVxuICAgKiBAbWVtYmVyb2YgTmF2YmFyQ29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBjb250ZW50VGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqXG4gICAqIE1vYmlsZSBicmVha3BvaW50XG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqIEBtZW1iZXJvZiBOYXZiYXJDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIHNldCBtb2JpbGVCcmVha3BvaW50KHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX21vYmlsZUJyZWFrcG9pbnQkLm5leHQodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBTaG93IGF2YXRhciB3aXRoIHVzZXIgaW5pdGlhbHNcbiAgICpcbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqIEBtZW1iZXJvZiBOYXZiYXJDb21wb25lbnRcbiAgICovXG4gIEBJbnB1dCgpIGlzQXZhdGFyID0gdHJ1ZTtcblxuICAvKipcbiAgICogU2V0cyBjbGFzcyBmb3IgdGhlIG1lbnVcbiAgICpcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICogQG1lbWJlcm9mIE5hdmJhckNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgbWVudUNsYXNzID0gJyc7XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBPdXRwdXQoKSBuYXZpZ2F0ZUV2ZW50OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAT3V0cHV0KCkgbWVudUl0ZW1DbGlja2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBAT3V0cHV0KCkgbG9nb3V0RXZlbnQ6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIG1lbnVTdGF0ZTogRXZlbnRFbWl0dGVyPE1lbnVTdGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPE1lbnVTdGF0ZT4oKTtcblxuICBwcm90ZWN0ZWQgc2NyZWVuU2l6ZTogU2NyZWVuU2l6ZSA9ICdkZXNrdG9wJztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHRyYW5zbGF0aW9uQ29udGV4dCA9ICdOQVZCQVIuJztcbiAgcHJpdmF0ZSByZWFkb25seSBfbW9iaWxlQnJlYWtwb2ludCQgPSBuZXcgUmVwbGF5U3ViamVjdDxudW1iZXI+KDEpO1xuICBwcml2YXRlIHJlYWRvbmx5IF90YWJsZXRCcmVha3BvaW50JCA9IG5ldyBSZXBsYXlTdWJqZWN0PG51bWJlcj4oMSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbW9iaWxlQnJlYWtwb2ludE9icyQgPSB0aGlzLl9tb2JpbGVCcmVha3BvaW50JC5waXBlKHN0YXJ0V2l0aChTY3JlZW5CcmVha3BvaW50cy5NT0JJTEUpKTtcbiAgcHJpdmF0ZSByZWFkb25seSB0YWJsZXRCcmVha3BvaW50T2JzJCA9IHRoaXMuX3RhYmxldEJyZWFrcG9pbnQkLnBpcGUoc3RhcnRXaXRoKFNjcmVlbkJyZWFrcG9pbnRzLlRBQkxFVCkpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXNNb2JpbGUkID0gdGhpcy5tb2JpbGVCcmVha3BvaW50T2JzJC5waXBlKFxuICAgIHN3aXRjaE1hcChicmVha3BvaW50ID0+IHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLm9ic2VydmUoYChtYXgtd2lkdGg6ICR7YnJlYWtwb2ludH1weClgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCh2ID0+IHYubWF0Y2hlcyksXG4gICAgICAgIHRhcChpc01vYmlsZSA9PiBpc01vYmlsZSA/IHRoaXMuc2NyZWVuU2l6ZSA9ICdtb2JpbGUnIDogJ2Rlc2t0b3AnKVxuICAgICAgKSlcbiAgKTtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzVGFibGV0JCA9IHRoaXMudGFibGV0QnJlYWtwb2ludE9icyQucGlwZShcbiAgICBzd2l0Y2hNYXAoYnJlYWtwb2ludCA9PiB0aGlzLmJyZWFrcG9pbnRPYnNlcnZlci5vYnNlcnZlKGAobWF4LXdpZHRoOiAke2JyZWFrcG9pbnR9cHgpYClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAodiA9PiB2Lm1hdGNoZXMpLFxuICAgICAgICB0YXAoaXNUYWJsZXQgPT4gaXNUYWJsZXQgPyB0aGlzLnNjcmVlblNpemUgPSAndGFibGV0JyA6ICdkZXNrdG9wJylcbiAgICAgIClcbiAgICApXG4gICk7XG4gIHByb3RlY3RlZCBpc09wZW5lZCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgbG9nb1R5cGUgPSBMb2dvVHlwZUVudW07XG5cbiAgYWN0aXZlUm91dGVzTWFwOlNpZ25hbDxNYXA8c3RyaW5nLCBib29sZWFuPj4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudFJvdXRlID0gdGhpcy5hY3RpdmVkUm91dGUoKTtcbiAgICByZXR1cm4gbmV3IE1hcCh0aGlzLnJvdXRlcy5tYXAocm91dGUgPT4gW3JvdXRlLmlkLCBjdXJyZW50Um91dGU/LnN0YXJ0c1dpdGgocm91dGUuaWQpXSkpO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJyZWFrcG9pbnRPYnNlcnZlcjogQnJlYWtwb2ludE9ic2VydmVyLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoJ0NBTk9QWVVJX0RFRkFVTFRfQVBQTElDQVRJT05fVEhFTUUnKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRBcHBUaGVtZTogQXBwbGljYXRpb25UaGVtZSxcbiAgICBwcml2YXRlIHNpZGVTaGVldFNlcnZpY2U6IFNpZGVTaGVldFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkZXN0cm95UmVmOiBEZXN0cm95UmVmLFxuICApIHtcbiAgICBpZiAoZGVmYXVsdEFwcFRoZW1lKSB7XG4gICAgICB0aGlzLmFwcGxpY2F0aW9uVGhlbWUgPSBkZWZhdWx0QXBwVGhlbWU7XG4gICAgfVxuICB9XG5cbiAgb3Blbk1vYmlsZU1lbnUoKTogdm9pZCB7XG4gICAgY29uc3QgaXNTaWRlU2hlZXRDbG9zZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBjb25zdCBuYXZiYXJTaWRlU2hlZXRDb21wb25lbnQgPSB0aGlzLnNpZGVTaGVldFNlcnZpY2Uub3BlbjxNb2JpbGVOYXZiYXJTaWRlU2hlZXRDb21wb25lbnQ+KHtcbiAgICAgIGNvbXBvbmVudFJlZjogTW9iaWxlTmF2YmFyU2lkZVNoZWV0Q29tcG9uZW50LFxuICAgICAgc2hvd0xvZ286IHRydWUsXG4gICAgICBjbG9zZWQ6IGlzU2lkZVNoZWV0Q2xvc2VkJCxcbiAgICB9KTtcblxuICAgIG5hdmJhclNpZGVTaGVldENvbXBvbmVudC51c2VyTmFtZSA9IHRoaXMudXNlck5hbWU7XG4gICAgbmF2YmFyU2lkZVNoZWV0Q29tcG9uZW50Lm1lbnVJdGVtcyA9IHRoaXMubWVudUl0ZW1zO1xuICAgIG5hdmJhclNpZGVTaGVldENvbXBvbmVudC5hY3RpdmVkUm91dGUgPSB0aGlzLmFjdGl2ZWRSb3V0ZTtcbiAgICBuYXZiYXJTaWRlU2hlZXRDb21wb25lbnQucm91dGVzID0gdGhpcy5yb3V0ZXM7XG4gICAgbmF2YmFyU2lkZVNoZWV0Q29tcG9uZW50LmVtYWlsID0gdGhpcy5lbWFpbDtcbiAgICBuYXZiYXJTaWRlU2hlZXRDb21wb25lbnQuY29udGVudFRlbXBsYXRlUmVmID0gdGhpcy5jb250ZW50VGVtcGxhdGVSZWY7XG4gICAgbmF2YmFyU2lkZVNoZWV0Q29tcG9uZW50LmFwcGxpY2F0aW9uVGhlbWUgPSB0aGlzLmFwcGxpY2F0aW9uVGhlbWU7XG5cbiAgICBuYXZiYXJTaWRlU2hlZXRDb21wb25lbnQubG9nb3V0RXZlbnQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMubG9nb3V0RXZlbnQuZW1pdCgpO1xuICAgICAgaXNTaWRlU2hlZXRDbG9zZWQkLm5leHQoKTtcbiAgICB9KTtcblxuICAgIG5hdmJhclNpZGVTaGVldENvbXBvbmVudC5tZW51SXRlbUNsaWNrZWQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIHRoaXMubWVudUl0ZW1DbGlja2VkLmVtaXQodmFsdWUpO1xuICAgICAgaXNTaWRlU2hlZXRDbG9zZWQkLm5leHQoKTtcbiAgICB9KTtcblxuICAgIG5hdmJhclNpZGVTaGVldENvbXBvbmVudC5uYXZpZ2F0ZUV2ZW50LnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICB0aGlzLm5hdmlnYXRlRXZlbnQuZW1pdCh2YWx1ZSk7XG4gICAgICBpc1NpZGVTaGVldENsb3NlZCQubmV4dCgpO1xuICAgIH0pO1xuICB9XG5cbiAgbmF2aWdhdGUocm91dGVJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5uYXZpZ2F0ZUV2ZW50LmVtaXQoYC8ke3JvdXRlSWR9YCk7XG4gIH1cblxuICBsb2dvdXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2dvdXRFdmVudC5lbWl0KCk7XG4gIH1cblxuICBjbGlja01lbnVJdGVtKGlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLm1lbnVJdGVtQ2xpY2tlZC5lbWl0KGlkKTtcbiAgfVxuXG4gIG9uQ2hhbmdlTWVudVN0YXRlKGlzT3BlbmVkOiBib29sZWFuLCBzY3JlZW5TaXplOiBTY3JlZW5TaXplKSB7XG4gICAgdGhpcy5pc09wZW5lZCA9IGlzT3BlbmVkO1xuICAgIHRoaXMubWVudVN0YXRlLmVtaXQoeyBpc09wZW5lZCwgc2NyZWVuU2l6ZSB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBBdmF0YXJTaXplID0gQXZhdGFyU2l6ZTtcbn1cbiIsIjx1aS1zaWRlLXNoZWV0XG4gIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIlxuICAob3BlbkNoYW5nZSk9XCJvbkNoYW5nZU1lbnVTdGF0ZSgkZXZlbnQsIHNjcmVlblNpemUpXCJcbiAgW3Bvc2l0aW9uXT1cIihpc01vYmlsZSQgfCBhc3luYykgPyAnc3RhcnQnIDogJ2VuZCdcIlxuPlxuICA8bWF0LXRvb2xiYXIgW2F0dHIudGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjdXN0b20tdG9vbGJhciByb3dcIj5cbiAgICAgIDx1aS1sb2dvXG4gICAgICAgIFthcHBsaWNhdGlvblRoZW1lXT1cImFwcGxpY2F0aW9uVGhlbWVcIlxuICAgICAgICBjbGFzcz1cImxvZ29cIlxuICAgICAgICAoY2xpY2spPVwibmF2aWdhdGUoJycpXCJcbiAgICAgICAgW2FsbG93UmVzaXppbmddPVwidHJ1ZVwiXG4gICAgICAgIFt3aWR0aF09XCIoaXNNb2JpbGUkIHwgYXN5bmMpID8gMTYwIDogKGlzVGFibGV0JCB8IGFzeW5jKSA/IDMwIDogMTYwXCJcbiAgICAgICAgW3R5cGVdPVwiXG4gICAgICAgICAgKGlzTW9iaWxlJCB8IGFzeW5jKVxuICAgICAgICAgICAgPyBsb2dvVHlwZS5ERUZBVUxUXG4gICAgICAgICAgICA6IChpc1RhYmxldCQgfCBhc3luYylcbiAgICAgICAgICAgID8gbG9nb1R5cGUuUFJJTUFSWV9CUkFORE1BUktfUElOS1xuICAgICAgICAgICAgOiBsb2dvVHlwZS5ERUZBVUxUXG4gICAgICAgIFwiXG4gICAgICA+PC91aS1sb2dvPlxuXG4gICAgICA8dWktYnV0dG9uXG4gICAgICAgIChjbGljayk9XCJvcGVuTW9iaWxlTWVudSgpXCJcbiAgICAgICAgKm5nSWY9XCJpc01vYmlsZSQgfCBhc3luY1wiXG4gICAgICAgIFt2YXJpYW50XT1cIid0ZXh0J1wiXG4gICAgICAgIFtjb21wYW55Q29sb3JdPVwiJyMyNDI0MjQnXCJcbiAgICAgICAgW2FwcGxpY2F0aW9uVGhlbWVdPVwiJ2xpZ2h0J1wiXG4gICAgICAgIFtpY29uTmFtZV09XCJpc09wZW5lZCA/ICdDbG9zZS1pbi1saW5lJyA6ICdNZW51LWJ1cmdlci1pbi1saW5lJ1wiXG4gICAgICAgIFtqdXN0SWNvbl09XCJ0cnVlXCJcbiAgICAgID48L3VpLWJ1dHRvbj5cblxuICAgICAgPGRpdiBjbGFzcz1cIm5hdmlnYXRpb24gcm93XCI+XG4gICAgICAgIDxhXG4gICAgICAgICAgKm5nRm9yPVwibGV0IHJvdXRlIG9mIHJvdXRlc1wiXG4gICAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlKHJvdXRlLmlkKTsgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIlxuICAgICAgICAgIFtocmVmXT1cInJvdXRlLmlkXCJcbiAgICAgICAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCJyb3V0ZS5pZFwiXG4gICAgICAgICAgZGF0YS10ZXN0LXJvbGU9XCJuYXYtcm91dGVcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBhY3RpdmVSb3V0ZXNNYXAoKS5nZXQocm91dGUuaWQpIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHVpLWJhZGdlXG4gICAgICAgICAgICAqbmdJZj1cInJvdXRlPy5iYWRnZU9wdGlvbnNcIlxuICAgICAgICAgICAgW2xhYmVsXT1cInJvdXRlLmJhZGdlT3B0aW9ucyEudGV4dFwiXG4gICAgICAgICAgICBbcmVicmFuZENvbG9yXT1cInJvdXRlLmJhZGdlT3B0aW9ucyEuY29sb3JcIlxuICAgICAgICAgID48L3VpLWJhZGdlPlxuICAgICAgICAgIDxzcGFuPnt7IHJvdXRlLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1hY3Rpb25zXCI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2FjdGlvbnNdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJwcm9maWxlLW1lbnVcIiAqbmdJZj1cImlzVGFibGV0JCB8IGFzeW5jOyBlbHNlIHBjXCIgKGNsaWNrKT1cIm9wZW5Nb2JpbGVNZW51KClcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJ1dHRvbkNvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNwYz5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cInByb2ZpbGUtbWVudVwiXG4gICAgICAgICAgICBbZGlzYWJsZVJpcHBsZV09XCJhcHBsaWNhdGlvblRoZW1lICE9PSAnY2xhc3NpYydcIlxuICAgICAgICAgICAgKG1lbnVPcGVuZWQpPVwib25DaGFuZ2VNZW51U3RhdGUodHJ1ZSwgJ2Rlc2t0b3AnKVwiXG4gICAgICAgICAgICAobWVudUNsb3NlZCk9XCJvbkNoYW5nZU1lbnVTdGF0ZShmYWxzZSwgJ2Rlc2t0b3AnKVwiXG4gICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJidXR0b25Db250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNidXR0b25Db250ZW50PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9maWxlLWJ1dHRvbi1jb250ZW50XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNBdmF0YXI7IGVsc2Ugb25seU5hbWVcIj5cbiAgICAgICAgICAgICAgPHVpLWF2YXRhclxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicHJvZmlsZS1idXR0b25cIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgb3BlbmVkOiBtZW51Ll9wYW5lbEFuaW1hdGlvblN0YXRlICE9PSAndm9pZCcgfVwiXG4gICAgICAgICAgICAgICAgW2FwcGxpY2F0aW9uVGhlbWVdPVwiYXBwbGljYXRpb25UaGVtZVwiXG4gICAgICAgICAgICAgICAgW25hbWVdPVwidXNlck5hbWVcIlxuICAgICAgICAgICAgICAgIFtzaXplXT1cIkF2YXRhclNpemUuU01BTExfTUVESVVNXCJcbiAgICAgICAgICAgICAgPjwvdWktYXZhdGFyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb25seU5hbWU+XG4gICAgICAgICAgICAgIHt7IHVzZXJOYW1lIH19XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJhcHBsaWNhdGlvblRoZW1lID09PSAnY2xhc3NpYyc7IGVsc2UgbmV3VGhlbWVJY29uXCIgaWNvblBvc2l0aW9uRW5kPmV4cGFuZF9tb3JlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbmV3VGhlbWVJY29uPlxuICAgICAgICAgICAgICA8dWktaWNvblxuICAgICAgICAgICAgICAgIFtzaXplXT1cIicyNCdcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzQXZhdGFyXCJcbiAgICAgICAgICAgICAgICBbbmFtZV09XCJtZW51Ll9wYW5lbEFuaW1hdGlvblN0YXRlID09PSAndm9pZCcgPyAnQXJyb3ctY2hldnJvbi1kb3duLWZpbGxlZCcgOiAnQXJyb3ctY2hldnJvbi11cC1maWxsZWQnXCJcbiAgICAgICAgICAgICAgICBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgICAgICAgICAgPjwvdWktaWNvbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtdG9vbGJhcj5cblxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG5cbiAgPG1hdC1tZW51IFtjbGFzc109XCJtZW51Q2xhc3NcIiAjbWVudT1cIm1hdE1lbnVcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwbGljYXRpb25UaGVtZSA9PT0gJ2NsYXNzaWMnOyBlbHNlIG5ld1RoZW1lXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICpuZ0Zvcj1cImxldCBlIG9mIG1lbnVJdGVtc1wiXG4gICAgICAgIG1hdC1tZW51LWl0ZW1cbiAgICAgICAgKGNsaWNrKT1cImNsaWNrTWVudUl0ZW0oZS5pZClcIlxuICAgICAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCJlLmlkXCJcbiAgICAgICAgZGF0YS10ZXN0LXJvbGU9XCJwcm9maWxlLW1lbnUtaXRlbVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtZW51LWl0ZW1cIj5cbiAgICAgICAgICA8dWktaWNvbiAqbmdJZj1cImU/Lmljb25cIiBbbmFtZV09XCJlLmljb25cIiBzaXplPVwiMjRcIj48L3VpLWljb24+XG4gICAgICAgICAge3sgZS50ZXh0IH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9idXR0b24+XG5cbiAgICAgIDxidXR0b24gZGF0YS10ZXN0aWQ9XCJsb2dvdXQtYnV0dG9uXCIgbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwibG9nb3V0KClcIj5cbiAgICAgICAgPG1hdC1pY29uPnBvd2VyX3NldHRpbmdzX25ldzwvbWF0LWljb24+XG4gICAgICAgIHt7IHRyYW5zbGF0aW9uQ29udGV4dCArICdMT0dfT1VUJyB8IHVpVHJhbnNsYXRlIHwgYXN5bmMgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNuZXdUaGVtZT5cbiAgICAgIDx1aS1tb2JpbGUtbmF2YmFyLXNpZGUtc2hlZXRcbiAgICAgICAgW2lzRGVza3RvcF09XCJ0cnVlXCJcbiAgICAgICAgW21lbnVJdGVtc109XCJtZW51SXRlbXNcIlxuICAgICAgICBbdXNlck5hbWVdPVwidXNlck5hbWVcIlxuICAgICAgICBbcm91dGVzXT1cInJvdXRlc1wiXG4gICAgICAgIFthY3RpdmVkUm91dGVdPVwiYWN0aXZlZFJvdXRlKClcIlxuICAgICAgICBbZW1haWxdPVwiZW1haWxcIlxuICAgICAgICBbYXBwbGljYXRpb25UaGVtZV09XCJhcHBsaWNhdGlvblRoZW1lXCJcbiAgICAgICAgW2NvbnRlbnRUZW1wbGF0ZVJlZl09XCJjb250ZW50VGVtcGxhdGVSZWZcIlxuICAgICAgICAobWVudUl0ZW1DbGlja2VkKT1cImNsaWNrTWVudUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgIChsb2dvdXRFdmVudCk9XCJsb2dvdXQoKVwiXG4gICAgICA+PC91aS1tb2JpbGUtbmF2YmFyLXNpZGUtc2hlZXQ+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9tYXQtbWVudT5cbjwvdWktc2lkZS1zaGVldD5cbiJdfQ==