application-sidebar 1.0.41 → 2.0.0

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,5 +1,5 @@
1
1
  import { ChangeDetectorRef } from '@angular/core';
2
- import { Router, NavigationStart } from '@angular/router';
2
+ import { Router, NavigationStart, NavigationEnd } from '@angular/router';
3
3
  import { Component, Input, ChangeDetectionStrategy, ViewChildren, QueryList, ViewChild } from '@angular/core';
4
4
  import { ApplicationSidebarService } from './services/application-sidebar.service';
5
5
  import { MatSidenav } from '@angular/material/sidenav';
@@ -10,6 +10,8 @@ import { CookieService } from 'ngx-cookie-service';
10
10
  import { TranslationService } from './services/translation.service';
11
11
  import { constants } from './constants';
12
12
  import { MixpanelService } from './services/mixpanel.service';
13
+ import { DomSanitizer } from '@angular/platform-browser';
14
+ import { forkJoin, of } from 'rxjs';
13
15
  import * as i0 from "@angular/core";
14
16
  import * as i1 from "./services/application-sidebar.service";
15
17
  import * as i2 from "@angular/router";
@@ -17,18 +19,19 @@ import * as i3 from "./services/rest-api.services";
17
19
  import * as i4 from "ngx-cookie-service";
18
20
  import * as i5 from "./services/translation.service";
19
21
  import * as i6 from "./services/mixpanel.service";
20
- import * as i7 from "@angular/material/toolbar";
21
- import * as i8 from "@angular/material/menu";
22
- import * as i9 from "@angular/material/list";
23
- import * as i10 from "@angular/material/expansion";
24
- import * as i11 from "@angular/material/icon";
25
- import * as i12 from "@angular/material/progress-bar";
26
- import * as i13 from "@angular/material/tooltip";
27
- import * as i14 from "@angular/common";
28
- import * as i15 from "@angular/flex-layout/flex";
29
- import * as i16 from "@angular/flex-layout/extended";
30
- import * as i17 from "./nav-menus/nav-menus.component";
31
- import * as i18 from "./nav-menu.directive";
22
+ import * as i7 from "@angular/platform-browser";
23
+ import * as i8 from "@angular/material/toolbar";
24
+ import * as i9 from "@angular/material/menu";
25
+ import * as i10 from "@angular/material/list";
26
+ import * as i11 from "@angular/material/expansion";
27
+ import * as i12 from "@angular/material/icon";
28
+ import * as i13 from "@angular/material/progress-bar";
29
+ import * as i14 from "@angular/material/tooltip";
30
+ import * as i15 from "@angular/common";
31
+ import * as i16 from "@angular/flex-layout/flex";
32
+ import * as i17 from "@angular/flex-layout/extended";
33
+ import * as i18 from "./nav-menus/nav-menus.component";
34
+ import * as i19 from "./nav-menu.directive";
32
35
  export class ApplicationSidebarComponent {
33
36
  navigation;
34
37
  router;
@@ -37,6 +40,7 @@ export class ApplicationSidebarComponent {
37
40
  cdref;
38
41
  translation;
39
42
  mixpanel;
43
+ sanitizer;
40
44
  applicationDetails;
41
45
  sidenav;
42
46
  listItems;
@@ -50,13 +54,15 @@ export class ApplicationSidebarComponent {
50
54
  adminRoles = ['SUPER_ADMIN', 'SUPER_ADMIN_READ_ONLY'];
51
55
  currentApp;
52
56
  sideNavStatusSubscription;
57
+ sideNavClosedStartSubscription;
53
58
  myObserver;
54
59
  expandGlobalSettings = false;
55
60
  inContextInsightsWLApp;
56
61
  themePoint; // Public variable for theme point
57
62
  showTitle = false;
63
+ revisedSectionIconCache = {};
58
64
  // isGlobalSettingsMenuActive:boolean = false
59
- constructor(navigation, router, RestApiService, cookie, cdref, translation, mixpanel) {
65
+ constructor(navigation, router, RestApiService, cookie, cdref, translation, mixpanel, sanitizer) {
60
66
  this.navigation = navigation;
61
67
  this.router = router;
62
68
  this.RestApiService = RestApiService;
@@ -64,10 +70,22 @@ export class ApplicationSidebarComponent {
64
70
  this.cdref = cdref;
65
71
  this.translation = translation;
66
72
  this.mixpanel = mixpanel;
73
+ this.sanitizer = sanitizer;
67
74
  this.myObserver = this.router.events.subscribe((event) => {
68
75
  if (event instanceof NavigationStart) {
69
76
  this.expandGlobalSettings = this.router.getCurrentNavigation().extras.state && this.router.getCurrentNavigation().extras.state.expandPanel;
70
77
  }
78
+ if (event instanceof NavigationEnd) {
79
+ if (this.isRevisedNavigationEnabled() && this.revisedSections && this.revisedSections.length) {
80
+ this.expandCurrentMenuOnly(this.applicationDetails, false);
81
+ this.rebuildRevisedNavigationState();
82
+ this.logOptimizeDebugState();
83
+ this.scrollToActiveMenuIfVisible();
84
+ }
85
+ this.syncGlobalSettingsPanelOpenToActiveRoute();
86
+ // Legacy nav + nested panel expansion (`isChildMenuPanelExpanded`) depend on route; OnPush needs a tick after navigate.
87
+ this.cdref.markForCheck();
88
+ }
71
89
  });
72
90
  // Determine theme point based on domain
73
91
  this.determineThemePoint();
@@ -148,6 +166,12 @@ export class ApplicationSidebarComponent {
148
166
  toDisplayApplications = [];
149
167
  toDisplayGlobalSettingsMenu;
150
168
  toDisplayLinkMenu;
169
+ revisedNavigationState;
170
+ revisedSections = [];
171
+ revisedSectionState = {};
172
+ /** Group-level expansion (key: sectionId_groupId). Only for grouped-menus with a group title. */
173
+ revisedGroupExpandedState = {};
174
+ revisedSelectedAppBySection = {};
151
175
  errorMsg;
152
176
  ngOnInit() {
153
177
  if (this.applicationDetails['userInfo']) {
@@ -173,11 +197,29 @@ export class ApplicationSidebarComponent {
173
197
  this.sidenav.opened = status && status == 'false' ? false : true;
174
198
  this.showTitle = this.navExpanded;
175
199
  this.cdref.detectChanges();
200
+ if (this.isRevisedNavigationEnabled()) {
201
+ if (this.sidenav.closedStart) {
202
+ this.sideNavClosedStartSubscription = this.sidenav.closedStart.subscribe(() => {
203
+ // Do not clear revisedSectionState here: it becomes all `false`, then rebuild treats
204
+ // `prev === false` as "user collapsed" and keeps the active section closed after reopen.
205
+ this.navExpanded = false;
206
+ this.showTitle = false;
207
+ this.cdref.detectChanges();
208
+ });
209
+ }
210
+ }
176
211
  this.sideNavStatusSubscription = this.sidenav.openedChange.subscribe((status) => {
177
212
  sessionStorage.setItem('leftNavOpenStatus', JSON.stringify(status));
178
213
  this.navExpanded = status;
179
214
  this.sidenav.opened = status;
180
215
  this.showTitle = status;
216
+ if (status) {
217
+ if (this.isRevisedNavigationEnabled()) {
218
+ this.expandRevisedSectionsContainingActiveRoute();
219
+ }
220
+ this.syncGlobalSettingsPanelOpenToActiveRoute();
221
+ this.scrollToActiveMenuIfVisible();
222
+ }
181
223
  this.cdref.detectChanges();
182
224
  });
183
225
  }
@@ -195,19 +237,40 @@ export class ApplicationSidebarComponent {
195
237
  // }
196
238
  }
197
239
  createNavigationSideBar(applicationDetails) {
198
- this.RestApiService.getjsonMenulists(applicationDetails).subscribe((menulists) => {
240
+ const consumerRevisedConfig = this.applicationDetails?.revisedNavigation;
241
+ const useLegacyNavigation = consumerRevisedConfig?.useLegacyNavigation === true;
242
+ const shouldLoadSectionLayout = !useLegacyNavigation;
243
+ forkJoin({
244
+ menulists: this.RestApiService.getjsonMenulists(applicationDetails),
245
+ /** Section structure: S3 `sidebar-layout.json` first, bundled `sidebar-layout.local` on error. */
246
+ revisedLayout: shouldLoadSectionLayout
247
+ ? this.RestApiService.getSidebarLayoutConfig()
248
+ : of({ useLegacyNavigation: true, sections: [] })
249
+ }).subscribe(({ menulists, revisedLayout }) => {
250
+ const mergedApplicationDetails = {
251
+ ...this.applicationDetails,
252
+ revisedNavigation: useLegacyNavigation
253
+ ? { ...consumerRevisedConfig, useLegacyNavigation: true, sections: [] }
254
+ : { ...revisedLayout, useLegacyNavigation: false }
255
+ };
256
+ this.applicationDetails = mergedApplicationDetails;
199
257
  // let menulists = GLOBAL_LIST
200
- this.toDisplayApplications = this.navigation.getMenuList(applicationDetails, menulists);
201
- this.toDisplayGlobalSettingsMenu = this.navigation.getGlobalSettingsMenu(applicationDetails, menulists);
258
+ this.toDisplayApplications = this.navigation.getMenuList(mergedApplicationDetails, menulists);
259
+ this.toDisplayGlobalSettingsMenu = this.navigation.getGlobalSettingsMenu(mergedApplicationDetails, menulists);
202
260
  // Use proper filtering system for Join Intentwise Community link
203
261
  const found = menulists.find(list => list.id === 'app_intentwise_community');
204
262
  this.toDisplayLinkMenu = found ? this.navigation.getApplicationMenuItem(found) ? [found] : [] : [];
205
- this.expandCurrentMenuOnly(applicationDetails, false);
263
+ this.expandCurrentMenuOnly(mergedApplicationDetails, false);
206
264
  this.expandChildMenuOnly(this.toDisplayGlobalSettingsMenu);
207
- this.checkForRedirection(this.toDisplayApplications, this.toDisplayGlobalSettingsMenu, applicationDetails);
265
+ this.checkForRedirection(this.toDisplayApplications, this.toDisplayGlobalSettingsMenu, mergedApplicationDetails);
266
+ this.rebuildRevisedNavigationState();
267
+ if (this.navExpanded && this.isRevisedNavigationEnabled()) {
268
+ this.expandRevisedSectionsContainingActiveRoute();
269
+ }
270
+ this.syncGlobalSettingsPanelOpenToActiveRoute();
208
271
  console.log(this.toDisplayApplications, this.toDisplayGlobalSettingsMenu, this.toDisplayLinkMenu);
209
- this.scrollToActiveMenu();
210
- this.setMenuList(applicationDetails.applicationId, this.toDisplayApplications);
272
+ this.scrollToActiveMenuIfVisible();
273
+ this.setMenuList(mergedApplicationDetails.applicationId, this.toDisplayApplications);
211
274
  this.inContextInsightsWLApp = this.hideMenuForWL();
212
275
  this.cdref.detectChanges();
213
276
  });
@@ -224,29 +287,35 @@ export class ApplicationSidebarComponent {
224
287
  if (obj) {
225
288
  this.activePanel = obj.activePanel;
226
289
  }
290
+ if (this.isRevisedNavigationEnabled()) {
291
+ this.rebuildRevisedNavigationState();
292
+ }
293
+ this.scrollToActiveMenuIfVisible();
227
294
  this.cdref.detectChanges();
228
295
  }
229
296
  expandChildMenuOnly(toDisplayGlobalSettingsMenu) {
230
297
  setTimeout(() => {
231
- // this.isGlobalSettingsMenuActive = false;
232
- let urlArray = this.router.url.split('/');
233
- let routeUrl = urlArray[urlArray.length - 1];
234
- let currentRoute = routeUrl.split('?')[0];
235
- if (toDisplayGlobalSettingsMenu && toDisplayGlobalSettingsMenu.length) {
236
- toDisplayGlobalSettingsMenu[0].panelOpenState = false;
237
- if (toDisplayGlobalSettingsMenu[0].children && toDisplayGlobalSettingsMenu[0].children.length) {
238
- for (let menu of toDisplayGlobalSettingsMenu[0].children) {
239
- if (menu.route == currentRoute) {
240
- toDisplayGlobalSettingsMenu[0].panelOpenState = true;
241
- // this.isGlobalSettingsMenuActive = true;
242
- break;
243
- }
244
- }
245
- }
246
- }
247
- this.cdref.detectChanges(); // Trigger change detection after setTimeout operation
298
+ this.syncGlobalSettingsPanelOpenToActiveRoute(toDisplayGlobalSettingsMenu);
299
+ this.cdref.detectChanges();
248
300
  }, 100);
249
301
  }
302
+ /**
303
+ * Opens each Global Settings head panel when the current URL matches that panel’s menu tree
304
+ * (any depth). Used on sidenav open and after menu data refresh.
305
+ */
306
+ syncGlobalSettingsPanelOpenToActiveRoute(menusList) {
307
+ const list = menusList ?? this.toDisplayGlobalSettingsMenu;
308
+ if (!list?.length) {
309
+ return;
310
+ }
311
+ list.forEach((settingsHeadMenu) => {
312
+ settingsHeadMenu.panelOpenState = false;
313
+ const children = settingsHeadMenu.children;
314
+ if (children?.length && this.hasActiveRouteInMenus(children)) {
315
+ settingsHeadMenu.panelOpenState = true;
316
+ }
317
+ });
318
+ }
250
319
  expandCurrentMenuOnly(applicationDetails, onMenuClicked) {
251
320
  for (let headMenu of this.toDisplayApplications) {
252
321
  headMenu.panelOpenState = false;
@@ -321,6 +390,679 @@ export class ApplicationSidebarComponent {
321
390
  selectedApplication(headmenu) {
322
391
  return this.translation.selectedApplication(this.applicationDetails, headmenu);
323
392
  }
393
+ isRevisedNavigationEnabled() {
394
+ return this.navigation.isRevisedNavigationEnabled(this.applicationDetails);
395
+ }
396
+ isLegacyNavigationEnabled() {
397
+ return this.navigation.isLegacyNavigationEnabled(this.applicationDetails);
398
+ }
399
+ onRevisedSectionHeaderClick(sectionId) {
400
+ const section = this.getRevisedSectionById(sectionId);
401
+ if (!section) {
402
+ return;
403
+ }
404
+ if (!this.navExpanded && this.sidenav) {
405
+ this.revisedSectionState[sectionId] = true;
406
+ this.sidenav.open();
407
+ return;
408
+ }
409
+ const isCurrentlyExpanded = this.isRevisedSectionExpanded(sectionId);
410
+ const routeInSection = this.sectionContainsActiveRoute(section);
411
+ if (routeInSection) {
412
+ this.revisedSectionState[sectionId] = !isCurrentlyExpanded;
413
+ this.cdref.markForCheck();
414
+ return;
415
+ }
416
+ if (isCurrentlyExpanded) {
417
+ this.revisedSectionState[sectionId] = false;
418
+ this.cdref.markForCheck();
419
+ return;
420
+ }
421
+ this.revisedSectionState[sectionId] = true;
422
+ this.cdref.markForCheck();
423
+ }
424
+ isRevisedSectionExpanded(sectionId) {
425
+ const section = this.getRevisedSectionById(sectionId);
426
+ if (this.revisedSectionState[sectionId] === false) {
427
+ return false;
428
+ }
429
+ if (sectionId === 'optimize' && this.isRevisedAppTabsSection(section)) {
430
+ if (this.getCurrentOptimizeApp(section)) {
431
+ return true;
432
+ }
433
+ }
434
+ return !!(this.revisedSectionState[sectionId] === true || (section && this.sectionContainsActiveRoute(section)));
435
+ }
436
+ /** True when any menu under this section matches the current route (e.g. collapsed rail active indicator). */
437
+ isRevisedSectionActive(section) {
438
+ return this.sectionContainsActiveRoute(section);
439
+ }
440
+ getRevisedSectionIcon(section) {
441
+ if (!section || !section.id) {
442
+ return '';
443
+ }
444
+ if (!this.revisedSectionIconCache[section.id]) {
445
+ this.revisedSectionIconCache[section.id] = section.iconSvg ? this.sanitizer.bypassSecurityTrustHtml(section.iconSvg) : '';
446
+ }
447
+ return this.revisedSectionIconCache[section.id];
448
+ }
449
+ isRevisedAppTabsSection(section) {
450
+ return !!section && section.type === 'app-tabs';
451
+ }
452
+ getRevisedSectionApps(section) {
453
+ return this.isRevisedAppTabsSection(section) ? section.apps : [];
454
+ }
455
+ getRevisedGroupedSectionGroups(section) {
456
+ return section && section.type === 'grouped-menus' ? section.groups : [];
457
+ }
458
+ /** JSON `groups[]` row: optional flat list with no group title */
459
+ isRevisedUntitledGroup(group) {
460
+ return !!group && !group.title;
461
+ }
462
+ /** JSON `groups[]` row: one menu item under a titled group (e.g. FOUNDATION rows) */
463
+ isRevisedSingleItemGroup(group) {
464
+ return !!group && !!group.title && group.items && group.items.length === 1;
465
+ }
466
+ /** JSON `groups[]` row: titled group with multiple menu roots (e.g. Commerce Insights) */
467
+ isRevisedMultiItemGroup(group) {
468
+ return !!group && !!group.title && group.items && group.items.length > 1;
469
+ }
470
+ hasExpandableMenusInSection(section) {
471
+ const menus = this.getRevisedSectionMenus(section);
472
+ return menus.some((m) => m && m.children && m.children.length > 0);
473
+ }
474
+ hasExpandableMenusInGroup(group) {
475
+ return !!(group && group.items && group.items.some((m) => m && m.children && m.children.length > 0));
476
+ }
477
+ getRevisedSectionSelectedApp(section) {
478
+ if (!this.isRevisedAppTabsSection(section)) {
479
+ return undefined;
480
+ }
481
+ if (section.id === 'optimize') {
482
+ const currentOptimizeApp = this.getCurrentOptimizeApp(section);
483
+ if (currentOptimizeApp) {
484
+ return currentOptimizeApp;
485
+ }
486
+ }
487
+ const selectedAppId = this.revisedSelectedAppBySection[section.id];
488
+ return section.apps.find((app) => app.id === selectedAppId) || section.apps[0];
489
+ }
490
+ isSelectedRevisedSectionApp(section, app) {
491
+ return !!(app && this.getRevisedSectionSelectedApp(section)?.id === app.id);
492
+ }
493
+ selectRevisedSectionApp(section, app, loadDefaultPage = true) {
494
+ if (!app) {
495
+ return;
496
+ }
497
+ this.revisedSelectedAppBySection[section.id] = app.id;
498
+ this.currentApp = app;
499
+ if (loadDefaultPage) {
500
+ this.goToApplication(app);
501
+ }
502
+ }
503
+ getRevisedSectionMenus(section) {
504
+ const selectedApp = this.getRevisedSectionSelectedApp(section);
505
+ if (!selectedApp || !selectedApp.children) {
506
+ return [];
507
+ }
508
+ return selectedApp.children;
509
+ }
510
+ getRevisedSectionTabBadgeCount(app) {
511
+ return this.getRevisedOptimizeRecommendationCount(app);
512
+ }
513
+ trackByRevisedSection(index, section) {
514
+ return section?.id || index;
515
+ }
516
+ trackByRevisedGroup(index, group) {
517
+ return group?.id || index;
518
+ }
519
+ trackByRevisedMenu(index, menu) {
520
+ if (!menu) {
521
+ return index;
522
+ }
523
+ if (Array.isArray(menu.sourcePath) && menu.sourcePath.length > 0) {
524
+ return menu.sourcePath.join('>');
525
+ }
526
+ return menu.sourceMenuId || menu.id || index;
527
+ }
528
+ /** Plain-text app name for Optimize tab tooltips (`left-nav-tooltip`, same as collapsed rail). */
529
+ getRevisedOptimizeAppTabTooltip(app) {
530
+ if (!app) {
531
+ return null;
532
+ }
533
+ const label = this.selectedApplication(app);
534
+ const plain = label ? String(label).replace(/<[^>]*>/g, '').replace(/\s+/g, ' ').trim() : '';
535
+ return plain || null;
536
+ }
537
+ isRevisedMenuActive(menu) {
538
+ return this.isMenuRouteActive(menu);
539
+ }
540
+ /**
541
+ * Nested submenu (legacy + revised): keep mat-expansion-panel open when the current URL matches
542
+ * any descendant leaf, not only when `activePanel` was set from a sidebar click.
543
+ * Still honors user-open state via `menu.panelOpenState` and click-driven `activePanel`.
544
+ */
545
+ isChildMenuPanelExpanded(menu) {
546
+ if (!menu) {
547
+ return false;
548
+ }
549
+ const children = menu.children;
550
+ const descendantActive = children &&
551
+ children.length > 0 &&
552
+ this.hasActiveRouteInMenus(children);
553
+ if (menu.panelStateTouched) {
554
+ return !!menu.panelOpenState;
555
+ }
556
+ return !!descendantActive || menu.id === this.activePanel || !!menu.panelOpenState;
557
+ }
558
+ /** Highlight styling: active panel or any active descendant. */
559
+ isChildMenuPanelHighlighted(menu) {
560
+ if (!menu) {
561
+ return false;
562
+ }
563
+ const children = menu.children;
564
+ const descendantActive = children &&
565
+ children.length > 0 &&
566
+ this.hasActiveRouteInMenus(children);
567
+ return !!descendantActive || menu.id === this.activePanel;
568
+ }
569
+ onChildMenuPanelHeaderClick(menu) {
570
+ if (!menu) {
571
+ return;
572
+ }
573
+ menu.panelStateTouched = true;
574
+ menu.panelOpenState = !this.isChildMenuPanelExpanded(menu);
575
+ this.cdref.markForCheck();
576
+ }
577
+ onChildMenuPanelOpened(menu) {
578
+ if (!menu) {
579
+ return;
580
+ }
581
+ menu.panelStateTouched = true;
582
+ menu.panelOpenState = true;
583
+ this.cdref.markForCheck();
584
+ }
585
+ onChildMenuPanelClosed(menu) {
586
+ if (!menu) {
587
+ return;
588
+ }
589
+ menu.panelStateTouched = true;
590
+ menu.panelOpenState = false;
591
+ this.cdref.markForCheck();
592
+ }
593
+ getRevisedParentMenuId(menu, fallbackParentId) {
594
+ return menu && menu.ownerAppId ? menu.ownerAppId : fallbackParentId;
595
+ }
596
+ getRevisedParentPanelId(menu) {
597
+ return menu && menu.sourceParentId && menu.sourceParentId !== menu.ownerAppId ? menu.sourceParentId : undefined;
598
+ }
599
+ /** Leaf row in `revisedGroupMenuItemShell`: OPTIMIZE (app-tabs) omits panel id; grouped-menus uses `getRevisedParentPanelId`. */
600
+ getRevisedShellLeafParentPanelId(menu, optimizeParentApp) {
601
+ return optimizeParentApp ? undefined : this.getRevisedParentPanelId(menu);
602
+ }
603
+ shouldShowRevisedIntelligenceGroupTitle(group) {
604
+ if (!group || !group.title) {
605
+ return false;
606
+ }
607
+ if (!group.items || group.items.length !== 1) {
608
+ return true;
609
+ }
610
+ const groupTitle = this.normalizeRevisedLabel(group.title);
611
+ const itemTitle = this.normalizeRevisedLabel(this.selectedApplication(group.items[0]));
612
+ if (!groupTitle || !itemTitle) {
613
+ return true;
614
+ }
615
+ return !(itemTitle === groupTitle || itemTitle.indexOf(groupTitle) > -1 || groupTitle.indexOf(itemTitle) > -1);
616
+ }
617
+ rebuildRevisedNavigationState() {
618
+ this.revisedNavigationState = this.navigation.buildRevisedNavigationState(this.applicationDetails, this.toDisplayApplications, this.toDisplayGlobalSettingsMenu, this.toDisplayLinkMenu);
619
+ this.revisedSectionIconCache = {};
620
+ this.revisedSections = this.revisedNavigationState ? this.revisedNavigationState.sections : [];
621
+ this.revisedSectionState = this.buildRevisedSectionState(this.revisedSections);
622
+ this.revisedGroupExpandedState = this.buildRevisedGroupExpandedState(this.revisedSections);
623
+ this.revisedSelectedAppBySection = this.buildRevisedSelectedAppState(this.revisedSections);
624
+ }
625
+ buildRevisedGroupExpandedState(sections) {
626
+ const nextState = {};
627
+ (sections || []).forEach((section) => {
628
+ if (section.type !== 'grouped-menus' || !section.groups) {
629
+ return;
630
+ }
631
+ section.groups.forEach((group) => {
632
+ const key = section.id + '_' + group.id;
633
+ const openByRoute = this.hasActiveRouteInMenus(group.items || []);
634
+ nextState[key] = Object.prototype.hasOwnProperty.call(this.revisedGroupExpandedState, key)
635
+ ? this.revisedGroupExpandedState[key]
636
+ : openByRoute;
637
+ });
638
+ });
639
+ return nextState;
640
+ }
641
+ isRevisedGroupExpanded(sectionId, groupId) {
642
+ const key = sectionId + '_' + groupId;
643
+ const section = this.getRevisedSectionById(sectionId);
644
+ const group = this.getRevisedGroupedSectionGroups(section).find((g) => g.id === groupId);
645
+ const routeInGroup = !!group && this.hasActiveRouteInMenus(group.items || []);
646
+ return routeInGroup || this.revisedGroupExpandedState[key] !== false;
647
+ }
648
+ onRevisedGroupHeaderClick(sectionId, groupId) {
649
+ const key = sectionId + '_' + groupId;
650
+ this.revisedGroupExpandedState[key] = !this.isRevisedGroupExpanded(sectionId, groupId);
651
+ this.cdref.markForCheck();
652
+ }
653
+ onRevisedGroupPanelOpened(sectionId, groupId) {
654
+ const key = sectionId + '_' + groupId;
655
+ this.revisedGroupExpandedState[key] = true;
656
+ this.cdref.markForCheck();
657
+ }
658
+ onRevisedGroupPanelClosed(sectionId, groupId) {
659
+ const key = sectionId + '_' + groupId;
660
+ const section = this.getRevisedSectionById(sectionId);
661
+ const group = this.getRevisedGroupedSectionGroups(section).find((g) => g.id === groupId);
662
+ this.revisedGroupExpandedState[key] = !!group && this.hasActiveRouteInMenus(group.items || []);
663
+ this.cdref.markForCheck();
664
+ }
665
+ buildRevisedSectionState(sections) {
666
+ const nextState = {};
667
+ (sections || []).forEach((section) => {
668
+ const routeInSection = this.sectionContainsActiveRoute(section);
669
+ const prev = this.revisedSectionState && this.revisedSectionState[section.id];
670
+ // Preserve manual opens across navigations; active route also forces expansion.
671
+ nextState[section.id] = prev === true || routeInSection;
672
+ });
673
+ return nextState;
674
+ }
675
+ buildRevisedSelectedAppState(sections) {
676
+ const nextState = {};
677
+ (sections || []).forEach((section) => {
678
+ if (!this.isRevisedAppTabsSection(section) || !section.apps.length) {
679
+ return;
680
+ }
681
+ const previousSelection = this.revisedSelectedAppBySection[section.id];
682
+ const currentApp = this.getCurrentOptimizeApp(section);
683
+ const appsWithActiveRoute = (section.apps || []).filter((app) => app && app.id !== 'ads_amazon_advertising' && this.hasActiveRouteInMenus([app]));
684
+ let selectedApp;
685
+ if (currentApp) {
686
+ selectedApp = currentApp;
687
+ }
688
+ else if (appsWithActiveRoute.length === 1) {
689
+ selectedApp = appsWithActiveRoute[0];
690
+ }
691
+ else if (appsWithActiveRoute.length > 1) {
692
+ const prev = section.apps.find((app) => app.id === previousSelection);
693
+ selectedApp =
694
+ (prev && appsWithActiveRoute.some((a) => a.id === prev.id) ? prev : undefined) ||
695
+ appsWithActiveRoute[0];
696
+ }
697
+ else {
698
+ selectedApp =
699
+ section.apps.find((app) => app.id === previousSelection) ||
700
+ section.apps.find((app) => app.id === section.defaultAppId) ||
701
+ section.apps[0];
702
+ }
703
+ if (selectedApp) {
704
+ nextState[section.id] = selectedApp.id;
705
+ }
706
+ });
707
+ return nextState;
708
+ }
709
+ /**
710
+ * Optimize/app-tabs should stay anchored to the current Angular host app.
711
+ * Sponsored Ads is an AngularJS app and should not drive app-tabs selection/expansion here.
712
+ */
713
+ getCurrentOptimizeApp(section) {
714
+ if (!section?.apps?.length) {
715
+ return undefined;
716
+ }
717
+ const currentAppId = this.applicationDetails?.applicationId || this.currentApp?.id;
718
+ if (!currentAppId || currentAppId === 'ads_amazon_advertising') {
719
+ return undefined;
720
+ }
721
+ return section.apps.find((app) => app?.id === currentAppId);
722
+ }
723
+ logOptimizeDebugState() {
724
+ const optimizeSection = (this.revisedSections || []).find((section) => section?.id === 'optimize');
725
+ if (!optimizeSection) {
726
+ console.log('[sidebar][optimize-debug] no optimize section', {
727
+ route: this.router?.url,
728
+ applicationId: this.applicationDetails?.applicationId,
729
+ });
730
+ return;
731
+ }
732
+ const selectedAppId = this.revisedSelectedAppBySection['optimize'];
733
+ const activeApp = this.findActiveAppForSection(optimizeSection);
734
+ const selectedApp = this.getRevisedSectionSelectedApp(optimizeSection);
735
+ const expanded = this.isRevisedSectionExpanded('optimize');
736
+ const containsActiveRoute = this.sectionContainsActiveRoute(optimizeSection);
737
+ console.log('[sidebar][optimize-debug]', {
738
+ route: this.router?.url,
739
+ applicationId: this.applicationDetails?.applicationId,
740
+ currentAppId: this.currentApp?.id,
741
+ optimizeApps: (optimizeSection.apps || []).map((app) => app?.id),
742
+ selectedAppId,
743
+ selectedAppResolved: selectedApp?.id,
744
+ activeAppId: activeApp?.id,
745
+ containsActiveRoute,
746
+ expanded,
747
+ sectionState: this.revisedSectionState?.['optimize'],
748
+ });
749
+ }
750
+ collapseAllRevisedSections() {
751
+ Object.keys(this.revisedSectionState || {}).forEach((sectionId) => {
752
+ this.revisedSectionState[sectionId] = false;
753
+ });
754
+ }
755
+ /** When the sidenav opens, expand any revised section that owns the current route (and sync app-tabs selection). */
756
+ expandRevisedSectionsContainingActiveRoute() {
757
+ if (!this.isRevisedNavigationEnabled() || !this.revisedSections?.length) {
758
+ return;
759
+ }
760
+ this.revisedSections.forEach((section) => {
761
+ if (this.sectionContainsActiveRoute(section)) {
762
+ this.revisedSectionState[section.id] = true;
763
+ this.syncSectionSelectionToActiveRoute(section);
764
+ }
765
+ });
766
+ }
767
+ openOnlyRevisedSection(section) {
768
+ this.revisedSectionState[section.id] = true;
769
+ return this.syncSectionSelectionToActiveRoute(section);
770
+ }
771
+ /** Clears `panelOpenState` on expandable rows so reopening a section does not keep arbitrary panels open. */
772
+ clearRevisedExpandablePanelOpenStateInMenuTree(menus) {
773
+ (menus || []).forEach((menu) => {
774
+ if (menu?.children?.length) {
775
+ menu.panelOpenState = false;
776
+ this.clearRevisedExpandablePanelOpenStateInMenuTree(menu.children);
777
+ }
778
+ });
779
+ }
780
+ clearExpandablePanelOpenStateForRevisedSection(section) {
781
+ if (!section) {
782
+ return;
783
+ }
784
+ if (this.isRevisedAppTabsSection(section)) {
785
+ (section.apps || []).forEach((app) => {
786
+ this.clearRevisedExpandablePanelOpenStateInMenuTree(app.children || []);
787
+ });
788
+ return;
789
+ }
790
+ if (section.type === 'grouped-menus' && section.groups) {
791
+ section.groups.forEach((group) => {
792
+ this.clearRevisedExpandablePanelOpenStateInMenuTree(group.items || []);
793
+ });
794
+ }
795
+ }
796
+ /** Titled group panels: expanded only when a leaf under the group matches the current route (unless user toggled later). */
797
+ resetRevisedGroupExpandedStateForSection(section) {
798
+ if (!section || section.type !== 'grouped-menus' || !section.groups) {
799
+ return;
800
+ }
801
+ section.groups.forEach((group) => {
802
+ const key = section.id + '_' + group.id;
803
+ this.revisedGroupExpandedState[key] = this.hasActiveRouteInMenus(group.items || []);
804
+ });
805
+ }
806
+ getRevisedSectionById(sectionId) {
807
+ return (this.revisedSections || []).find((section) => section.id === sectionId);
808
+ }
809
+ scrollToActiveMenuIfVisible() {
810
+ // Revised layout keeps section headers + Optimize app tabs in the same scroll area as menu rows.
811
+ // `scrollTop = offsetTop` is wrong (offsetParent ≠ scroll container) and jumps the list, hiding that chrome.
812
+ if (this.isRevisedNavigationEnabled()) {
813
+ return;
814
+ }
815
+ this.scrollToActiveMenu();
816
+ }
817
+ syncSectionSelectionToActiveRoute(section) {
818
+ if (!section) {
819
+ return false;
820
+ }
821
+ if (this.isRevisedAppTabsSection(section)) {
822
+ const activeApp = this.findActiveAppForSection(section);
823
+ if (activeApp) {
824
+ this.revisedSelectedAppBySection[section.id] = activeApp.id;
825
+ return true;
826
+ }
827
+ return false;
828
+ }
829
+ return this.sectionContainsActiveRoute(section);
830
+ }
831
+ findActiveAppForSection(section) {
832
+ return this.getCurrentOptimizeApp(section);
833
+ }
834
+ sectionContainsActiveRoute(section) {
835
+ if (!section) {
836
+ return false;
837
+ }
838
+ if (this.isRevisedAppTabsSection(section)) {
839
+ return !!this.getCurrentOptimizeApp(section);
840
+ }
841
+ return this.hasActiveRouteInMenus(this.getRevisedGroupedSectionGroups(section).reduce((items, group) => items.concat(group.items || []), []));
842
+ }
843
+ hasActiveRouteInMenus(menus = []) {
844
+ return menus.some((menu) => {
845
+ if (!menu) {
846
+ return false;
847
+ }
848
+ if (this.isMenuRouteActive(menu)) {
849
+ return true;
850
+ }
851
+ if (menu.children && menu.children.length > 0) {
852
+ return this.hasActiveRouteInMenus(menu.children);
853
+ }
854
+ return false;
855
+ });
856
+ }
857
+ /**
858
+ * Normalizes a path for nav matching. Some shells differ: `router.url` vs `location.pathname` vs hash (`#/…`, `#!/…`).
859
+ */
860
+ normalizeNavPathSegment(raw) {
861
+ if (!raw) {
862
+ return '';
863
+ }
864
+ let u = raw.split('?')[0].split('#')[0];
865
+ if (u.length > 1 && u.endsWith('/')) {
866
+ u = u.slice(0, -1);
867
+ }
868
+ return u;
869
+ }
870
+ /**
871
+ * Strip `#!/` / `#/` from `menu.route` so it can match `collectCandidateNavPaths()` (hash → `/segment`).
872
+ * Used only for **exact** (and legacy keyword suffix) checks — no prefix wildcard, to avoid cross-menu false positives.
873
+ */
874
+ normalizeMenuRouteForPathMatch(route) {
875
+ if (!route || typeof route !== 'string') {
876
+ return null;
877
+ }
878
+ let r = route.trim();
879
+ if (r.indexOf('#!/') === 0) {
880
+ r = r.slice(3);
881
+ }
882
+ else if (r.indexOf('#/') === 0) {
883
+ r = r.slice(2);
884
+ }
885
+ else if (r.indexOf('#') === 0) {
886
+ r = r.slice(1);
887
+ }
888
+ r = r.replace(/^\/+/, '');
889
+ if (!r) {
890
+ return null;
891
+ }
892
+ return '/' + r;
893
+ }
894
+ /** Collect all URL shapes that might represent the current page (fixes Criteo / ancillary when Router URL lags or omits base). */
895
+ collectCandidateNavPaths() {
896
+ const paths = new Set();
897
+ const add = (p) => {
898
+ const n = this.normalizeNavPathSegment(p);
899
+ if (n) {
900
+ paths.add(n);
901
+ }
902
+ };
903
+ add(this.router.url);
904
+ if (typeof window !== 'undefined' && window.location) {
905
+ add(window.location.pathname || '');
906
+ const hash = window.location.hash || '';
907
+ if (hash.indexOf('#/') === 0) {
908
+ add(hash.slice(1));
909
+ }
910
+ else if (hash.indexOf('#!/') === 0) {
911
+ add('/' + hash.slice(3).replace(/^\/+/, ''));
912
+ }
913
+ }
914
+ return Array.from(paths);
915
+ }
916
+ /**
917
+ * Menus whose `link` is a real path (`dsp/…`, `dp/…`, `content/…`, `criteo/…`, `walmart/…`, etc.).
918
+ * For these, never treat bare `menu.route` (e.g. `overview`) as active — it collides across apps (DSP vs SOV).
919
+ */
920
+ menuUsesPathPrefixedLink(menu) {
921
+ const link = menu.link;
922
+ return typeof link === 'string' && link.indexOf('triangular.') !== 0 && link.indexOf('/') !== -1;
923
+ }
924
+ /** `link` like `criteo/criteo-overview` vs URL `/criteo/criteo-overview` or `.../criteo/criteo-overview` (base href). */
925
+ menuPathMatchesLinkPath(currentRoute, link) {
926
+ if (typeof link !== 'string' || link.indexOf('triangular.') === 0 || link.indexOf('/') === -1) {
927
+ return false;
928
+ }
929
+ let path = link.startsWith('/') ? link : '/' + link.replace(/^\/+/, '');
930
+ if (path.length > 1 && path.endsWith('/')) {
931
+ path = path.slice(0, -1);
932
+ }
933
+ if (currentRoute === path || currentRoute.indexOf(path + '/') === 0) {
934
+ return true;
935
+ }
936
+ const at = currentRoute.lastIndexOf(path);
937
+ if (at >= 0 && at === currentRoute.length - path.length && (at === 0 || currentRoute.charAt(at - 1) === '/')) {
938
+ return true;
939
+ }
940
+ return false;
941
+ }
942
+ /**
943
+ * `child_routes` entries are often host-relative segments (e.g. `walmart-keywords/keyword-report`) while
944
+ * the browser URL is `/walmart/walmart-keywords/keyword-report`.
945
+ */
946
+ menuChildRouteMatchesPath(currentRoute, childRoute) {
947
+ if (!childRoute || typeof childRoute !== 'string') {
948
+ return false;
949
+ }
950
+ const normalized = childRoute.startsWith('/') ? childRoute : '/' + childRoute.replace(/^\/+/, '');
951
+ if (currentRoute === normalized || currentRoute === childRoute) {
952
+ return true;
953
+ }
954
+ if (currentRoute.length >= normalized.length &&
955
+ currentRoute.endsWith(normalized) &&
956
+ (currentRoute.length === normalized.length || currentRoute.charAt(currentRoute.length - normalized.length - 1) === '/')) {
957
+ return true;
958
+ }
959
+ return false;
960
+ }
961
+ /**
962
+ * Expandable apps use `defaulturl` like `criteo/` — treat any `/criteo` or `/criteo/...` as under that app for active detection.
963
+ * Skips `#!` / `#` values used by legacy Amazon ui-router entries.
964
+ */
965
+ menuDefaultUrlMatchesPath(currentRoute, menu) {
966
+ const du = menu.defaulturl;
967
+ if (!du || typeof du !== 'string' || du.indexOf('#') >= 0 || du.indexOf('!') >= 0) {
968
+ return false;
969
+ }
970
+ const base = '/' + du.replace(/^\/+/, '').replace(/\/$/, '');
971
+ if (!base || base === '/') {
972
+ return false;
973
+ }
974
+ return currentRoute === base || currentRoute.startsWith(base + '/');
975
+ }
976
+ /** Public so route rules stay in one place (used by revised grouped menus + unified isCheckActiveRoute). */
977
+ isMenuRouteActive(menu) {
978
+ if (!menu) {
979
+ return false;
980
+ }
981
+ const candidates = this.collectCandidateNavPaths();
982
+ const childRoutes = menu?.child_routes || [];
983
+ const pathPrefixedLink = this.menuUsesPathPrefixedLink(menu);
984
+ for (const currentRoute of candidates) {
985
+ /* Path-prefixed ancillary links must match full path (link / defaulturl / child_routes), not `route` alone. */
986
+ if (!pathPrefixedLink && menu.route) {
987
+ const nr = this.normalizeMenuRouteForPathMatch(menu.route);
988
+ if (nr &&
989
+ (currentRoute === nr ||
990
+ currentRoute === nr + '/keyword-report' ||
991
+ currentRoute === nr + '/keyword-suggestions/auto' ||
992
+ currentRoute === nr + '/keyword-suggestions/manual')) {
993
+ return true;
994
+ }
995
+ const legacy = '/' + menu.route;
996
+ if (currentRoute === legacy ||
997
+ currentRoute === legacy + '/keyword-report' ||
998
+ currentRoute === legacy + '/keyword-suggestions/auto' ||
999
+ currentRoute === legacy + '/keyword-suggestions/manual') {
1000
+ return true;
1001
+ }
1002
+ }
1003
+ if (this.menuPathMatchesLinkPath(currentRoute, menu.link)) {
1004
+ return true;
1005
+ }
1006
+ if (this.menuDefaultUrlMatchesPath(currentRoute, menu)) {
1007
+ return true;
1008
+ }
1009
+ if (menu.matchRoutes && menu.matchRoutes.indexOf(currentRoute) > -1) {
1010
+ return true;
1011
+ }
1012
+ if (childRoutes.length > 0 &&
1013
+ childRoutes.some((childRoute) => this.menuChildRouteMatchesPath(currentRoute, childRoute))) {
1014
+ return true;
1015
+ }
1016
+ }
1017
+ return false;
1018
+ }
1019
+ normalizeRevisedLabel(label) {
1020
+ if (!label) {
1021
+ return '';
1022
+ }
1023
+ return label
1024
+ .replace(/<[^>]*>/g, '')
1025
+ .replace(/intentwise\s+/gi, '')
1026
+ .replace(/\s+/g, ' ')
1027
+ .trim()
1028
+ .toLowerCase();
1029
+ }
1030
+ getRevisedOptimizeRecommendationCount(app) {
1031
+ if (!app) {
1032
+ return null;
1033
+ }
1034
+ if (app.id === 'ads_amazon_advertising') {
1035
+ const recommendationMenu = this.findRevisedMenuById(app.children || [], 'ams_ads_recommendations');
1036
+ return recommendationMenu ? this.getMenuCountValue(recommendationMenu, 'activeRecommendation') : null;
1037
+ }
1038
+ return null;
1039
+ }
1040
+ getMenuCountValue(menu, fallbackCountKey) {
1041
+ const countKey = menu && menu.countKey ? menu.countKey : fallbackCountKey;
1042
+ if (!countKey) {
1043
+ return null;
1044
+ }
1045
+ const countValue = this.navigation.fetchKeyValue(countKey);
1046
+ return typeof countValue === 'number' && countValue > 0 ? countValue : null;
1047
+ }
1048
+ findRevisedMenuById(menus, menuId) {
1049
+ if (!menus || !menuId) {
1050
+ return null;
1051
+ }
1052
+ for (const menu of menus) {
1053
+ if (!menu) {
1054
+ continue;
1055
+ }
1056
+ if (menu.id === menuId || menu.sourceMenuId === menuId) {
1057
+ return menu;
1058
+ }
1059
+ const matchedChild = this.findRevisedMenuById(menu.children || [], menuId);
1060
+ if (matchedChild) {
1061
+ return matchedChild;
1062
+ }
1063
+ }
1064
+ return null;
1065
+ }
324
1066
  get sideIdInfo() {
325
1067
  if (this.applicationDetails && this.applicationDetails.sidebarInfo && this.applicationDetails.sidebarInfo.siteId) {
326
1068
  return Number(this.applicationDetails.sidebarInfo.siteId);
@@ -533,14 +1275,16 @@ export class ApplicationSidebarComponent {
533
1275
  // let splitedURL = route.split("/");
534
1276
  // pageName = splitedURL.length >0 ? splitedURL[splitedURL.length - 1] : route;
535
1277
  // }
536
- let routeUrl = this.router.url;
537
- let currentRoute = routeUrl.split('?')[0];
538
- let route = menu.route;
539
- let pageName;
540
- if (route) {
541
- pageName = route;
542
- }
543
- if ((currentRoute === "/" + pageName || currentRoute === "/" + pageName + "/keyword-report" || currentRoute === "/" + pageName + "/keyword-suggestions/auto" || currentRoute === "/" + pageName + "/keyword-suggestions/manual") && headmenu != undefined) {
1278
+ if (!menu) {
1279
+ return false;
1280
+ }
1281
+ if (!this.isMenuRouteActive(menu)) {
1282
+ return false;
1283
+ }
1284
+ if (parentMenu != null) {
1285
+ this.activePanel = parentMenu.id;
1286
+ }
1287
+ if (headmenu !== undefined && headmenu !== null) {
544
1288
  if (this.prevActiveHeadMenu === undefined) {
545
1289
  headmenu.isActive = true;
546
1290
  this.prevActiveHeadMenu = headmenu;
@@ -550,27 +1294,8 @@ export class ApplicationSidebarComponent {
550
1294
  headmenu.isActive = true;
551
1295
  this.prevActiveHeadMenu = headmenu;
552
1296
  }
553
- if (parentMenu != null) {
554
- this.activePanel = parentMenu.id;
555
- }
556
- return true;
557
- }
558
- else if (menu && menu.matchRoutes && this.router.url) {
559
- if (menu.matchRoutes.indexOf(this.router.url.split('?')[0]) > -1) {
560
- headmenu.isActive = true;
561
- this.prevActiveHeadMenu = headmenu;
562
- if (parentMenu != null) {
563
- this.activePanel = parentMenu.id;
564
- }
565
- return true;
566
- }
567
- else {
568
- return false;
569
- }
570
- }
571
- else {
572
- return false;
573
1297
  }
1298
+ return true;
574
1299
  }
575
1300
  keepMenuExpanded(parentMenuId) {
576
1301
  if (parentMenuId.indexOf(this.applicationDetails.applicationId) >= 0) {
@@ -603,22 +1328,8 @@ export class ApplicationSidebarComponent {
603
1328
  }
604
1329
  goToApplication(item) {
605
1330
  window.localStorage.removeItem('selectedAppId');
606
- if (item.defaulturl) {
607
- this.goToAppDefaultPage(item, item.id);
608
- }
609
- else {
610
- if (item.children && item.children.length > 0) {
611
- if (item.children[0].children && item.children[0].children.length > 0) {
612
- this.goToAppDefaultPage(item.children[0].children[0], item.id);
613
- }
614
- else {
615
- this.goToAppDefaultPage(item.children[0], item.id);
616
- }
617
- }
618
- else {
619
- this.goToAppDefaultPage(item, item.id);
620
- }
621
- }
1331
+ const targetItem = this.getDefaultNavigationTarget(item);
1332
+ this.goToAppDefaultPage(targetItem, item?.id || targetItem?.id);
622
1333
  }
623
1334
  goToMenuLink(item) {
624
1335
  if (item && item.link) {
@@ -632,12 +1343,52 @@ export class ApplicationSidebarComponent {
632
1343
  }
633
1344
  }
634
1345
  ngOnDestroy() {
1346
+ if (this.myObserver) {
1347
+ this.myObserver.unsubscribe();
1348
+ }
635
1349
  if (this.sideNavStatusSubscription) {
636
1350
  this.sideNavStatusSubscription.unsubscribe();
637
1351
  }
1352
+ if (this.sideNavClosedStartSubscription) {
1353
+ this.sideNavClosedStartSubscription.unsubscribe();
1354
+ }
638
1355
  }
639
1356
  goToAppDefaultPage(item, appId) {
640
- this.navMenusComponent.onSelectMenu(event, item, appId);
1357
+ if (!item) {
1358
+ return;
1359
+ }
1360
+ const sameApp = !!(appId && this.applicationDetails?.applicationId && appId === this.applicationDetails.applicationId);
1361
+ if (item.defaulturl) {
1362
+ this.navigation.getHostOriginAndNavigate(item.defaulturl);
1363
+ return;
1364
+ }
1365
+ if (sameApp && typeof item.route === 'string' && item.route !== '' && item.route.indexOf('#') < 0) {
1366
+ this.router.navigate([item.route]);
1367
+ return;
1368
+ }
1369
+ const hasExplicitHashRoute = typeof item.route === 'string' && item.route.indexOf('#') >= 0;
1370
+ const targetUrl = hasExplicitHashRoute ? item.route : (item.link || item.route);
1371
+ if (!targetUrl) {
1372
+ return;
1373
+ }
1374
+ const hostNavExtras = hasExplicitHashRoute ? { appId } : undefined;
1375
+ this.navigation.getHostOriginAndNavigate(targetUrl, hostNavExtras);
1376
+ }
1377
+ getDefaultNavigationTarget(item) {
1378
+ if (!item) {
1379
+ return item;
1380
+ }
1381
+ if (item.defaulturl || item.route || item.link) {
1382
+ return item;
1383
+ }
1384
+ const children = item.children || [];
1385
+ for (const child of children) {
1386
+ const resolved = this.getDefaultNavigationTarget(child);
1387
+ if (resolved) {
1388
+ return resolved;
1389
+ }
1390
+ }
1391
+ return item;
641
1392
  }
642
1393
  hideMenuForWL() {
643
1394
  let isOrgSetting;
@@ -656,13 +1407,13 @@ export class ApplicationSidebarComponent {
656
1407
  return (isOrgSetting != null && (this.applicationDetails.sidebarInfo.siteId > 11 || this.applicationDetails['userInfo'].role === 'IAC_BRAND_READ_ONLY'));
657
1408
  }
658
1409
  }
659
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApplicationSidebarComponent, deps: [{ token: i1.ApplicationSidebarService }, { token: i2.Router }, { token: i3.RestApiService }, { token: i4.CookieService }, { token: i0.ChangeDetectorRef }, { token: i5.TranslationService }, { token: i6.MixpanelService }], target: i0.ɵɵFactoryTarget.Component });
660
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ApplicationSidebarComponent, selector: "lnc-navigation-sidebar", inputs: { applicationDetails: "applicationDetails", sidenav: "sidenav" }, viewQueries: [{ propertyName: "list", first: true, predicate: ScrollableDirective, descendants: true }, { propertyName: "navMenusComponent", first: true, predicate: ["navMenusComponent"], descendants: true }, { propertyName: "listItems", predicate: OffsetTopDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div id=\"loader_sov\">\n <div id=\"loading_div\" *ngIf=\"applicationDetails?.sidebarInfo\">\n <div>\n <div id=\"loader\" *ngIf=\"sideIdInfo !== 1\"\n class=\"site_{{sideIdInfo}}\">\n <img src=\"{{applicationDetails?.sidebarInfo?.logo}}\">\n </div>\n <div id=\"loader_img\" *ngIf=\"sideIdInfo == 1\">\n <img src=\"/assets/images/happy_eyes_closed_small.svg\">\n </div>\n <mat-progress-bar class=\"loader_progress-bar-position\" mode=\"indeterminate\"></mat-progress-bar>\n </div>\n </div>\n</div>\n\n<div fxLayout=\"column\" fxFlexFill *ngIf=\"errorMsg.length == 0 else errorBlock\" translate=\"no\" id=\"angular-16-version\" [ngClass]=\"{'navmenu-expanded' : !navExpanded}\">\n <mat-toolbar class=\"portal-side-menu-top-toolbar\">\n <mat-toolbar-row fxLayout=\"row\">\n <div class=\"portal-forget-heading-card\">\n <div class=\"sidemenu-logo-holder\">\n <span *ngIf=\"sideIdInfo !== 1\">\n <img [src]=\"applicationDetails?.sidebarInfo?.favicon\" style=\"width: 40px !important;display: flex !important;\" *ngIf=\"!navExpanded\" [alt]=\"applicationDetails?.sidebarInfo?.firstName\" class=\"favicon-dimension\" />\n <img [src]=\"applicationDetails?.sidebarInfo?.logo\" style=\"display: flex !important;\" *ngIf=\"navExpanded\" class=\"logo-dimension\" />\n </span>\n <span *ngIf=\"sideIdInfo == 1\">\n <img src=\"assets/logos/intentwiselogo.svg\" style=\"width: 40px !important;display: flex !important;\" *ngIf=\"!navExpanded\" [alt]=\"applicationDetails?.sidebarInfo?.firstName\" class=\"favicon-dimension intentwise-favicon\">\n <img src=\"assets/logos/Intentwise.svg\" style=\"display: flex !important;\" *ngIf=\"navExpanded\" [alt]=\"applicationDetails?.sidebarInfo?.firstName\" class=\"logo-dimension intentwise-logo\">\n </span>\n </div>\n </div>\n </mat-toolbar-row>\n </mat-toolbar>\n <!-- <div class=\"sidebar-collapse-icon\" *ngIf=\"isAdminRole\">\n <button mat-menu-item class=\"sidemenu-icon-top\" (click)=\"allMenuCollapse()\">\n <mat-icon *ngIf=\"sidenav && sidenav.opened\">keyboard_arrow_up</mat-icon>\n </button>\n </div> -->\n <div *ngIf=\"sidenav && sidenav.opened && !inContextInsightsWLApp\" class=\"app-menu-container\">\n <button class=\"app-menu-button selected-app-button\" *ngIf=\"toDisplayApplications && toDisplayApplications.length == 1\">\n <span class=\"app-name selected-app-container\">\n <!-- <mat-icon *ngIf=\"currentApp?.name\" class=\"sideNavIcon {{currentApp?.name.split(' ').join('')}}\"></mat-icon> -->\n <img *ngIf=\"currentApp?.name\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(currentApp.icon || 'default-icon.svg')\"/>\n <label style=\"margin-left: -4px;\" [innerHTML]=\"selectedApplication(currentApp)\"></label>\n <span *ngIf=\"currentApp?.badge\" class=\"badge-text sov-beta-position\">{{currentApp.badge}}</span>\n </span>\n </button>\n <button class=\"app-menu-button selected-app-button\" [mat-menu-trigger-for]=\"appMenu\" *ngIf=\"toDisplayApplications && toDisplayApplications.length > 1\">\n <span class=\"app-name selected-app-container\">\n <!-- <mat-icon *ngIf=\"currentApp?.name\" class=\"sideNavIcon {{currentApp?.name.split(' ').join('')}}\"></mat-icon> -->\n <img *ngIf=\"currentApp?.name\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(currentApp.icon || 'default-icon.svg')\"/>\n <label style=\"margin-left: -4px;\" [innerHTML]=\"selectedApplication(currentApp)\"></label>\n <span *ngIf=\"currentApp?.badge\" class=\"badge-text sov-beta-position\">{{currentApp.badge}}</span>\n </span>\n <span class=\"dropdown-icon\"></span>\n </button>\n <mat-menu #appMenu=\"matMenu\" class=\"app-menu\" [backdropClass]=\"'all-module-menus'\">\n <ng-container *ngFor=\"let headmenu of toDisplayApplications\">\n <button class=\"menu-option\" mat-menu-item (click)=\"goToApplication(headmenu)\" [ngClass]=\"{'active': headmenu.panelOpenState}\" class=\"{{headmenu.id}}_icon\" *ngIf=\"headmenu.name != 'Account Management'\" translate=\"no\">\n <!-- <mat-icon class=\"sideNavIcon children-icon\" [ngClass]=\"headmenu.name.split(' ').join('')\"></mat-icon> -->\n <img class=\"icon children-icon side-menu-icon\" [src]=\"getIconUrl(headmenu.icon || 'default-icon.svg')\"/>\n <label [innerHTML]=\"selectedApplication(headmenu)\"></label>\n <span *ngIf=\"headmenu.badge\" class=\"badge-text sov-beta-position\" [innerHTML]=\"headmenu.badge\"></span>\n </button>\n </ng-container>\n </mat-menu>\n </div>\n <div class=\"portal-sidnav-menu\" fxFlex=\"nogrow noshrink\" appScrollable [ngClass]=\"{'whiteLabelSidenav' : inContextInsightsWLApp}\">\n <mat-expansion-panel [expanded]=\"headmenu.panelOpenState == true\" hideToggle=\"true\"\n *ngFor=\"let headmenu of toDisplayApplications\" [ngClass]=\"{'active': currentApp.id === headmenu.id }\"\n (opened)=\"headmenu.panelOpenState = true\" (closed)=\"headmenu.panelOpenState = false\">\n <mat-expansion-panel-header matTooltip=\"{{getTooltipInfo(headmenu)}}\" matTooltipClass=\"left-nav-tooltip\" matTooltipPosition=\"right\"\n *ngIf=\"headmenu.type == 'expandable' else singleMenus\" class=\"main-expansion-panel-header\"\n (click)=\"goToApplication(headmenu)\">\n <mat-panel-title>\n <img class=\"icon side-menu-icon side-menu-icon-color\" [src]=\"getIconUrl(headmenu.icon || 'default-icon.svg')\"/>\n <h3 class=\"sidemenu-heading applicationMenu\">\n <label [innerHTML]=\"selectedApplication(headmenu)\"></label>\n <span *ngIf=\"headmenu.badge\" class=\"badge-text sov-beta-position\" [innerHTML]=\"headmenu.badge\"></span>\n </h3>\n </mat-panel-title>\n <mat-panel-description class=\"headmenu-description\" *ngIf=\"navExpanded\">\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"!headmenu.panelOpenState\">arrow_right</mat-icon>\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"headmenu.panelOpenState\">arrow_drop_down</mat-icon>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <mat-list class=\"padding-0px\" *ngFor=\"let menu of headmenu.children\" [attr.id]=\"headmenu.id\" [ngClass]=\"{'group-nav-menu': menu.children }\">\n <mat-expansion-panel *ngIf=\"menu.children else listMenu\" class=\"div-background-color-white\" [expanded]=\"menu.id == activePanel\"\n [ngClass]=\"{'activePanel': menu.id == activePanel , 'whiteLabelActive' : inContextInsightsWLApp}\" hideToggle=\"true\"\n (opened)=\"menu.panelOpenState = true\" (closed)=\"menu.panelOpenState = false\">\n <mat-expansion-panel-header\n [ngClass]=\"{'header-border': menu.panelOpenState === true, 'header-border-none': menu.panelOpenState === false }\">\n <mat-panel-title>\n <img style=\"margin-right: 10px\" *ngIf=\"(menu.icon && menu.icon != '') else displayInitials\"\n class=\"icon side-menu-icon side-menu-icon-color\" [src]=\"getIconUrl(menu.icon)\" />\n <ng-template #displayInitials>\n <div class=\"sidemenu-symbol\">\n {{menu.symbol}}\n </div>\n </ng-template>\n <h3 class=\"menu-heading applicationSubmenus\"><span class=\"menu-name-expandable\" [innerHTML]=\"selectedApplication(menu)\"></span>\n <span *ngIf=\"menu.badge\" class=\"badge-text sov-beta-position level-two-badge\"\n [innerHTML]=\"menu.badge\"></span>\n </h3>\n </mat-panel-title>\n <mat-panel-description class=\"children-description\" *ngIf=\"navExpanded\">\n <mat-icon class=\"sub-chevron-icon\" *ngIf=\"!menu.panelOpenState\">keyboard_arrow_right</mat-icon>\n <mat-icon class=\"sub-chevron-icon\" *ngIf=\"menu.panelOpenState\">keyboard_arrow_down</mat-icon>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <!-- <mat-divider></mat-divider> -->\n <mat-nav-list *ngFor=\"let childMenu of menu.children;\" class=\"sub-child-menu\">\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isCheckActiveRoute(childMenu,headmenu,menu)\" [item]=\"childMenu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"headmenu.id\" [parentPanelId]=\"menu.id\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </mat-expansion-panel>\n <ng-template #listMenu>\n <mat-nav-list>\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isCheckActiveRoute(menu,headmenu)\" [item]=\"menu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"headmenu.id\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </ng-template>\n </mat-list>\n <ng-template #singleMenus>\n <mat-list>\n <lnc-nav-menus id=\"{{headmenu.id}}\" appOffsetTop [isActiveItem]=\"isCheckActiveRoute(headmenu,headmenu)\"\n [item]=\"headmenu\" [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"headmenu.id\"\n matTooltip=\"{{getTooltipInfo(headmenu)}}\" matTooltipClass=\"left-nav-tooltip\" matTooltipPosition=\"right\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-list>\n </ng-template>\n </mat-expansion-panel>\n </div>\n <div class=\"portal-global-setting-menu sticky_bottom_menu\" *ngIf=\"!inContextInsightsWLApp\">\n <div *ngIf=\"!inContextInsightsWLApp\" class=\"app-menu-container\">\n <button class=\"app-menu-Link-button\" *ngIf=\"toDisplayLinkMenu && toDisplayLinkMenu.length > 0\">\n <div *ngFor=\"let menuLink of toDisplayLinkMenu\" id=\"{{menuLink.id + 'menu'}}\" [style.margin-left]=\"sidenav && sidenav.opened ? '0px' : '5px'\">\n <span class=\"app-name\" (click)=\"goToMenuLink(menuLink)\">\n <div *ngIf=\"sidenav && sidenav.opened\" style=\"display: flex; align-items: center;\">\n <img *ngIf=\"menuLink?.name\" matTooltip=\"{{getTooltipInfo(menuLink)}}\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(menuLink.icon || 'default-icon.svg')\"/>\n <label *ngIf=\"showTitle\" class=\"app-name-label\" [innerHTML]=\"selectedApplication(menuLink)\"></label>\n <span *ngIf=\"menuLink?.badge\" class=\"badge-text sov-beta-position\">{{menuLink.badge}}</span>\n </div>\n <div *ngIf=\"sidenav && !sidenav.opened\">\n <img *ngIf=\"menuLink?.name\" matTooltip=\"{{getTooltipInfo(menuLink)}}\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(menuLink.icon || 'default-icon.svg')\"/>\n <span *ngIf=\"menuLink?.badge\" class=\"badge-text sov-beta-position\">{{menuLink.badge}}</span>\n </div>\n </span>\n </div>\n </button>\n </div>\n <mat-expansion-panel [expanded]=\"settingsHeadMenu.panelOpenState == true || expandGlobalSettings\" hideToggle=\"true\" id=\"{{settingsHeadMenu.id + 'menu'}}\"\n *ngFor=\"let settingsHeadMenu of toDisplayGlobalSettingsMenu\" [ngClass]=\"{'active': settingsHeadMenu.isActive }\"\n (opened)=\"sidenav.open(); settingsHeadMenu.panelOpenState = true\" (closed)=\"settingsHeadMenu.panelOpenState = false; expandGlobalSettings = false\" [style.border]=\"sidenav && sidenav.opened ? '' : 'none !important'\">\n <mat-expansion-panel-header matTooltip=\"{{getTooltipInfo(settingsHeadMenu)}}\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\"\n *ngIf=\"settingsHeadMenu.type == 'expandable' else singleMenus\" class=\"main-expansion-panel-header\"\n [ngClass]=\"sidenav && sidenav.opened ? '' : 'sticky-bottom-closed'\">\n <mat-panel-title>\n <img class=\"icon side-menu-icon side-menu-icon-color\" [src]=\"getIconUrl(settingsHeadMenu.icon || 'settings-icon.svg')\" />\n <h3 class=\"sidemenu-heading applicationMenu\">\n <label [innerHTML]=\"selectedApplication(settingsHeadMenu)\"></label>\n <span *ngIf=\"settingsHeadMenu.badge\" class=\"badge-text sov-beta-position\"\n [innerHTML]=\"settingsHeadMenu.badge\"></span>\n </h3>\n </mat-panel-title>\n <mat-panel-description class=\"setting-description\" *ngIf=\"navExpanded\">\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"!settingsHeadMenu.panelOpenState\">arrow_right</mat-icon>\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"settingsHeadMenu.panelOpenState\">arrow_drop_down</mat-icon>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <mat-list class=\"padding-0px\" *ngFor=\"let menu of settingsHeadMenu.children\" [attr.id]=\"settingsHeadMenu.id\"\n [ngClass]=\"{'group-nav-menu': menu.children }\">\n <mat-nav-list>\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isCheckActiveRoute(menu,settingsHeadMenu)\" [item]=\"menu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"settingsHeadMenu.id\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </mat-list>\n <ng-template #singleMenus>\n <mat-list>\n <lnc-nav-menus [attr.id]=\"settingsHeadMenu.id\" appOffsetTop\n [isActiveItem]=\"isCheckActiveRoute(settingsHeadMenu,settingsHeadMenu)\" [item]=\"settingsHeadMenu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"settingsHeadMenu.id\"\n matTooltip=\"{{getTooltipInfo(settingsHeadMenu)}}\" matTooltipClass=\"left-nav-tooltip\" matTooltipPosition=\"right\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-list>\n </ng-template>\n </mat-expansion-panel>\n\n </div>\n</div>\n<ng-template #errorBlock>\n <div class=\"errorMsg\">\n <span class=\"material-icons\">error</span>\n <span class=\"errorTxt\">{{errorMsg}}</span>\n </div>\n</ng-template>\n\n<a class=\"hamburger-icon expanded-hamburger-icon\" title=\"Toggle Menu\" (click)=\"sidenav.close();allMenuCollapse(); \">\n <mat-icon class=\"left-chevron-icon\">keyboard_arrow_left</mat-icon>\n</a>\n\n<!-- <img *ngIf=\"showMenuIcon()\" class=\"favicon-dimension\" src={{applicationDetails.sidebarInfo.favicon}} alt=\"Intentwise Favicon\" />\n <a *ngIf=\"showMenuIcon()\" title=\"Toggle Menu\" class=\"hamburger-icon collapsed-hamburger\"\n (click)=\"sidenav.open()\">\n <mat-icon class=\"right-chevron-icon\">keyboard_arrow_right</mat-icon>\n </a> -->", styles: ["@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";@import\"https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600\";.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-ripple-element{background-color:#0000001a}html{--mat-option-selected-state-label-text-color: #3f51b5;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}.mat-accent{--mat-option-selected-state-label-text-color: #ff4081}.mat-warn{--mat-option-selected-state-label-text-color: #f44336}html{--mat-optgroup-label-text-color: rgba(0, 0, 0, .87)}.mat-pseudo-checkbox-full{color:#0000008a}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#3f51b5}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#3f51b5}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff4081}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff4081}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff4081}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff4081}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#f44336}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#f44336}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#b0b0b0}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:#000000de}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}.mat-mdc-card{--mdc-elevated-card-container-color: white;--mdc-elevated-card-container-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-outlined-card-container-color: white;--mdc-outlined-card-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-card-container-elevation: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-card-subtitle-text-color: rgba(0, 0, 0, .54)}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #3f51b5;--mdc-linear-progress-track-color: rgba(63, 81, 181, .25)}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:#3f51b540;background-color:var(--mdc-linear-progress-track-color, rgba(63, 81, 181, .25))}@media (forced-colors: active){.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:transparent;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(63, 81, 181, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:#3f51b540;background-color:var(--mdc-linear-progress-track-color, rgba(63, 81, 181, .25))}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #ff4081;--mdc-linear-progress-track-color: rgba(255, 64, 129, .25)}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:#ff408140;background-color:var(--mdc-linear-progress-track-color, rgba(255, 64, 129, .25))}@media (forced-colors: active){.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:transparent;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 64, 129, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:#ff408140;background-color:var(--mdc-linear-progress-track-color, rgba(255, 64, 129, .25))}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #f44336;--mdc-linear-progress-track-color: rgba(244, 67, 54, .25)}@keyframes mdc-linear-progress-buffering{}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:#f4433640;background-color:var(--mdc-linear-progress-track-color, rgba(244, 67, 54, .25))}@media (forced-colors: active){.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:transparent;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(244, 67, 54, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:#f4433640;background-color:var(--mdc-linear-progress-track-color, rgba(244, 67, 54, .25))}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: #fff}html{--mdc-filled-text-field-caret-color: #3f51b5;--mdc-filled-text-field-focus-active-indicator-color: #3f51b5;--mdc-filled-text-field-focus-label-text-color: rgba(63, 81, 181, .87);--mdc-filled-text-field-container-color: whitesmoke;--mdc-filled-text-field-disabled-container-color: #fafafa;--mdc-filled-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-error-focus-label-text-color: #f44336;--mdc-filled-text-field-error-label-text-color: #f44336;--mdc-filled-text-field-error-caret-color: #f44336;--mdc-filled-text-field-active-indicator-color: rgba(0, 0, 0, .42);--mdc-filled-text-field-disabled-active-indicator-color: rgba(0, 0, 0, .06);--mdc-filled-text-field-hover-active-indicator-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-error-active-indicator-color: #f44336;--mdc-filled-text-field-error-focus-active-indicator-color: #f44336;--mdc-filled-text-field-error-hover-active-indicator-color: #f44336;--mdc-outlined-text-field-caret-color: #3f51b5;--mdc-outlined-text-field-focus-outline-color: #3f51b5;--mdc-outlined-text-field-focus-label-text-color: rgba(63, 81, 181, .87);--mdc-outlined-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-error-caret-color: #f44336;--mdc-outlined-text-field-error-focus-label-text-color: #f44336;--mdc-outlined-text-field-error-label-text-color: #f44336;--mdc-outlined-text-field-outline-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-disabled-outline-color: rgba(0, 0, 0, .06);--mdc-outlined-text-field-hover-outline-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-error-focus-outline-color: #f44336;--mdc-outlined-text-field-error-hover-outline-color: #f44336;--mdc-outlined-text-field-error-outline-color: #f44336;--mat-form-field-disabled-input-text-placeholder-color: rgba(0, 0, 0, .38)}.mat-mdc-form-field-error{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-subscript-text-font);line-height:var(--mat-form-field-subscript-text-line-height);font-size:var(--mat-form-field-subscript-text-size);letter-spacing:var(--mat-form-field-subscript-text-tracking);font-weight:var(--mat-form-field-subscript-text-weight)}.mat-mdc-form-field-focus-overlay{background-color:#000000de}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#0000008a}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:#3f51b5de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:#ff4081de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:#f44336de}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#00000061}.mat-mdc-form-field.mat-accent{--mdc-filled-text-field-caret-color: #ff4081;--mdc-filled-text-field-focus-active-indicator-color: #ff4081;--mdc-filled-text-field-focus-label-text-color: rgba(255, 64, 129, .87);--mdc-outlined-text-field-caret-color: #ff4081;--mdc-outlined-text-field-focus-outline-color: #ff4081;--mdc-outlined-text-field-focus-label-text-color: rgba(255, 64, 129, .87)}.mat-mdc-form-field.mat-warn{--mdc-filled-text-field-caret-color: #f44336;--mdc-filled-text-field-focus-active-indicator-color: #f44336;--mdc-filled-text-field-focus-label-text-color: rgba(244, 67, 54, .87);--mdc-outlined-text-field-caret-color: #f44336;--mdc-outlined-text-field-focus-outline-color: #f44336;--mdc-outlined-text-field-focus-label-text-color: rgba(244, 67, 54, .87)}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}html{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(63, 81, 181, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-accent{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(255, 64, 129, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-warn{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(244, 67, 54, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html{--mat-autocomplete-background-color: white}.mat-mdc-dialog-container{--mdc-dialog-container-color: white;--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-standard-chip{--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-elevated-container-color: #e0e0e0;--mdc-chip-elevated-disabled-container-color: #e0e0e0;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #3f51b5;--mdc-chip-elevated-disabled-container-color: #3f51b5;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #ff4081;--mdc-chip-elevated-disabled-container-color: #ff4081;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #f44336;--mdc-chip-elevated-disabled-container-color: #f44336;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-chip.mat-mdc-standard-chip{--mdc-chip-container-height: 32px}.mat-mdc-slide-toggle{--mdc-switch-selected-focus-state-layer-color: #3949ab;--mdc-switch-selected-handle-color: #3949ab;--mdc-switch-selected-hover-state-layer-color: #3949ab;--mdc-switch-selected-pressed-state-layer-color: #3949ab;--mdc-switch-selected-focus-handle-color: #1a237e;--mdc-switch-selected-hover-handle-color: #1a237e;--mdc-switch-selected-pressed-handle-color: #1a237e;--mdc-switch-selected-focus-track-color: #7986cb;--mdc-switch-selected-hover-track-color: #7986cb;--mdc-switch-selected-pressed-track-color: #7986cb;--mdc-switch-selected-track-color: #7986cb;--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-handle-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-switch-handle-shadow-color: black;--mdc-switch-disabled-handle-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-switch-selected-icon-color: #fff;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-handle-color: #616161;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-icon-color: #fff;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#00000061}.mat-mdc-slide-toggle.mat-accent{--mdc-switch-selected-focus-state-layer-color: #d81b60;--mdc-switch-selected-handle-color: #d81b60;--mdc-switch-selected-hover-state-layer-color: #d81b60;--mdc-switch-selected-pressed-state-layer-color: #d81b60;--mdc-switch-selected-focus-handle-color: #880e4f;--mdc-switch-selected-hover-handle-color: #880e4f;--mdc-switch-selected-pressed-handle-color: #880e4f;--mdc-switch-selected-focus-track-color: #f06292;--mdc-switch-selected-hover-track-color: #f06292;--mdc-switch-selected-pressed-track-color: #f06292;--mdc-switch-selected-track-color: #f06292}.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5;--mat-radio-ripple-color: #000;--mat-radio-checked-ripple-color: #3f51b5;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081;--mat-radio-ripple-color: #000;--mat-radio-checked-ripple-color: #ff4081;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336;--mat-radio-ripple-color: #000;--mat-radio-checked-ripple-color: #f44336;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button .mdc-radio{--mdc-radio-state-layer-size: 40px}.mat-mdc-slider{--mdc-slider-label-container-color: black;--mdc-slider-label-label-text-color: white;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-with-tick-marks-disabled-container-color: #000;--mat-mdc-slider-value-indicator-opacity: .6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #3f51b5;--mdc-slider-focus-handle-color: #3f51b5;--mdc-slider-hover-handle-color: #3f51b5;--mdc-slider-active-track-color: #3f51b5;--mdc-slider-inactive-track-color: #3f51b5;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #3f51b5;--mat-mdc-slider-ripple-color: #3f51b5;--mat-mdc-slider-hover-ripple-color: rgba(63, 81, 181, .05);--mat-mdc-slider-focus-ripple-color: rgba(63, 81, 181, .2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color: #ff4081;--mdc-slider-focus-handle-color: #ff4081;--mdc-slider-hover-handle-color: #ff4081;--mdc-slider-active-track-color: #ff4081;--mdc-slider-inactive-track-color: #ff4081;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #ff4081;--mat-mdc-slider-ripple-color: #ff4081;--mat-mdc-slider-hover-ripple-color: rgba(255, 64, 129, .05);--mat-mdc-slider-focus-ripple-color: rgba(255, 64, 129, .2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color: #f44336;--mdc-slider-focus-handle-color: #f44336;--mdc-slider-hover-handle-color: #f44336;--mdc-slider-active-track-color: #f44336;--mdc-slider-inactive-track-color: #f44336;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #f44336;--mat-mdc-slider-ripple-color: #f44336;--mat-mdc-slider-hover-ripple-color: rgba(244, 67, 54, .05);--mat-mdc-slider-focus-ripple-color: rgba(244, 67, 54, .2)}html{--mat-menu-item-label-text-color: rgba(0, 0, 0, .87);--mat-menu-item-icon-color: rgba(0, 0, 0, .87);--mat-menu-item-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-item-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-container-color: white}.mat-mdc-list-base{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mdc-list-item__start,.mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5}.mat-accent .mdc-list-item__start,.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081}.mat-warn .mdc-list-item__start,.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336}.mat-mdc-list-option{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #3f51b5;--mdc-checkbox-selected-hover-state-layer-color: #3f51b5;--mdc-checkbox-selected-pressed-state-layer-color: #3f51b5;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-accent{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #ff4081;--mdc-checkbox-selected-hover-state-layer-color: #ff4081;--mdc-checkbox-selected-pressed-state-layer-color: #ff4081;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-warn{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#3f51b5}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}html{--mat-paginator-container-text-color: rgba(0, 0, 0, .87);--mat-paginator-container-background-color: white;--mat-paginator-enabled-icon-color: rgba(0, 0, 0, .54);--mat-paginator-disabled-icon-color: rgba(0, 0, 0, .12)}html{--mat-paginator-container-size: 56px}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.mat-mdc-tab-group,.mat-mdc-tab-nav-bar{--mdc-tab-indicator-active-indicator-color: #3f51b5;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: #000;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #3f51b5;--mat-tab-header-active-ripple-color: #3f51b5;--mat-tab-header-inactive-ripple-color: #3f51b5;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #3f51b5;--mat-tab-header-active-hover-label-text-color: #3f51b5;--mat-tab-header-active-focus-indicator-color: #3f51b5;--mat-tab-header-active-hover-indicator-color: #3f51b5}.mat-mdc-tab-group.mat-accent,.mat-mdc-tab-nav-bar.mat-accent{--mdc-tab-indicator-active-indicator-color: #ff4081;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: #000;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #ff4081;--mat-tab-header-active-ripple-color: #ff4081;--mat-tab-header-inactive-ripple-color: #ff4081;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #ff4081;--mat-tab-header-active-hover-label-text-color: #ff4081;--mat-tab-header-active-focus-indicator-color: #ff4081;--mat-tab-header-active-hover-indicator-color: #ff4081}.mat-mdc-tab-group.mat-warn,.mat-mdc-tab-nav-bar.mat-warn{--mdc-tab-indicator-active-indicator-color: #f44336;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: #000;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #f44336;--mat-tab-header-active-ripple-color: #f44336;--mat-tab-header-inactive-ripple-color: #f44336;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #f44336;--mat-tab-header-active-hover-label-text-color: #f44336;--mat-tab-header-active-focus-indicator-color: #f44336;--mat-tab-header-active-hover-indicator-color: #f44336}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-tab-header-with-background-background-color: #3f51b5;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-tab-header-with-background-background-color: #ff4081;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-tab-header-with-background-background-color: #f44336;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-header{--mdc-secondary-navigation-tab-container-height: 48px}html{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #ff4081;--mdc-checkbox-selected-hover-state-layer-color: #ff4081;--mdc-checkbox-selected-pressed-state-layer-color: #ff4081;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #3f51b5;--mdc-checkbox-selected-hover-state-layer-color: #3f51b5;--mdc-checkbox-selected-pressed-state-layer-color: #3f51b5;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{color:#00000061}html{--mdc-checkbox-state-layer-size: 40px}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #3f51b5}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #ff4081}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #f44336}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-text-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #fff;--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #3f51b5;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #ff4081;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #f44336;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-button-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #fff;--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #3f51b5;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #ff4081;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #f44336;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation: 0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #3f51b5}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #ff4081}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #f44336}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, .1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, .1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary,.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent,.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mat-mdc-icon-button{--mdc-icon-button-icon-color: inherit;--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #6200ee;--mat-mdc-button-ripple-color: rgba(98, 0, 238, .1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #018786;--mat-mdc-button-ripple-color: rgba(1, 135, 134, .1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #b00020;--mat-mdc-button-ripple-color: rgba(176, 0, 32, .1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #3f51b5;--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, .1)}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #ff4081;--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, .1)}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #f44336;--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(0, 0, 0, .38);--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}.mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size: 48px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:12px}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary,.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent,.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(0, 0, 0, .12);--mdc-fab-icon-color: rgba(0, 0, 0, .38);--mat-mdc-fab-color: rgba(0, 0, 0, .38)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: white;--mdc-fab-icon-color: black;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: #3f51b5;--mdc-fab-icon-color: white;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: #ff4081;--mdc-fab-icon-color: white;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: #f44336;--mdc-fab-icon-color: white;--mat-mdc-fab-color: #fff}.mat-mdc-snack-bar-container{--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87);--mat-snack-bar-button-color: #ff4081}html{--mat-table-background-color: white;--mat-table-header-headline-color: rgba(0, 0, 0, .87);--mat-table-row-item-label-text-color: rgba(0, 0, 0, .87);--mat-table-row-item-outline-color: rgba(0, 0, 0, .12)}html{--mat-table-header-container-height: 56px;--mat-table-footer-container-height: 52px;--mat-table-row-item-container-height: 52px}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: #3f51b5}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: #ff4081}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: #f44336}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;background-color:var(--mat-badge-background-color);color:var(--mat-badge-text-color);font-family:Roboto,sans-serif;font-family:var(--mat-badge-text-font, Roboto, sans-serif);font-size:12px;font-size:var(--mat-badge-text-size, 12px);font-weight:600;font-weight:var(--mat-badge-text-weight, 600)}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-disabled .mat-badge-content{background-color:var(--mat-badge-disabled-state-background-color);color:var(--mat-badge-disabled-state-text-color)}.mat-badge-hidden .mat-badge-content{display:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px;font-size:9px;font-size:var(--mat-badge-small-size-text-size, 9px)}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px;font-size:24px;font-size:var(--mat-badge-large-size-text-size, 24px)}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}html{--mat-badge-background-color: #3f51b5;--mat-badge-text-color: white;--mat-badge-disabled-state-background-color: #b9b9b9;--mat-badge-disabled-state-text-color: rgba(0, 0, 0, .38)}.mat-badge-accent{--mat-badge-background-color: #ff4081;--mat-badge-text-color: white}.mat-badge-warn{--mat-badge-background-color: #f44336;--mat-badge-text-color: white}html{--mat-bottom-sheet-container-text-color: rgba(0, 0, 0, .87);--mat-bottom-sheet-container-background-color: white}html{--mat-legacy-button-toggle-text-color: rgba(0, 0, 0, .38);--mat-legacy-button-toggle-state-layer-color: rgba(0, 0, 0, .12);--mat-legacy-button-toggle-selected-state-text-color: rgba(0, 0, 0, .54);--mat-legacy-button-toggle-selected-state-background-color: #e0e0e0;--mat-legacy-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-legacy-button-toggle-disabled-state-background-color: #eeeeee;--mat-legacy-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-background-color: white;--mat-standard-button-toggle-state-layer-color: black;--mat-standard-button-toggle-selected-state-background-color: #e0e0e0;--mat-standard-button-toggle-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-standard-button-toggle-disabled-state-background-color: white;--mat-standard-button-toggle-disabled-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-divider-color: #e0e0e0}html{--mat-standard-button-toggle-height: 48px}html{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #3f51b5;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(63, 81, 181, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(63, 81, 181, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(63, 81, 181, .3);--mat-datepicker-toggle-active-state-icon-color: #3f51b5;--mat-datepicker-calendar-date-in-range-state-background-color: rgba(63, 81, 181, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e;--mat-datepicker-toggle-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-body-label-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-period-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-navigation-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-header-divider-color: rgba(0, 0, 0, .12);--mat-datepicker-calendar-header-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-date-today-outline-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-today-disabled-state-outline-color: rgba(0, 0, 0, .18);--mat-datepicker-calendar-date-text-color: rgba(0, 0, 0, .87);--mat-datepicker-calendar-date-outline-color: transparent;--mat-datepicker-calendar-date-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-preview-state-outline-color: rgba(0, 0, 0, .24);--mat-datepicker-range-input-separator-color: rgba(0, 0, 0, .87);--mat-datepicker-range-input-disabled-state-separator-color: rgba(0, 0, 0, .38);--mat-datepicker-range-input-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-container-background-color: white;--mat-datepicker-calendar-container-text-color: rgba(0, 0, 0, .87)}.mat-datepicker-content.mat-accent{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #ff4081;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(255, 64, 129, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(255, 64, 129, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(255, 64, 129, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(255, 64, 129, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e}.mat-datepicker-content.mat-warn{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #f44336;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(244, 67, 54, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(244, 67, 54, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e}.mat-datepicker-toggle-active.mat-accent{--mat-datepicker-toggle-active-state-icon-color: #ff4081}.mat-datepicker-toggle-active.mat-warn{--mat-datepicker-toggle-active-state-icon-color: #f44336}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size: 40px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}html{--mat-divider-color: rgba(0, 0, 0, .12)}html{--mat-expansion-container-background-color: white;--mat-expansion-container-text-color: rgba(0, 0, 0, .87);--mat-expansion-actions-divider-color: rgba(0, 0, 0, .12);--mat-expansion-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-expansion-header-text-color: rgba(0, 0, 0, .87);--mat-expansion-header-description-color: rgba(0, 0, 0, .54);--mat-expansion-header-indicator-color: rgba(0, 0, 0, .54)}html{--mat-expansion-header-collapsed-state-height: 48px;--mat-expansion-header-expanded-state-height: 64px}html{--mat-icon-color: inherit}.mat-icon.mat-primary{--mat-icon-color: #3f51b5}.mat-icon.mat-accent{--mat-icon-color: #ff4081}.mat-icon.mat-warn{--mat-icon-color: #f44336}html{--mat-sidenav-container-divider-color: rgba(0, 0, 0, .12);--mat-sidenav-container-background-color: white;--mat-sidenav-container-text-color: rgba(0, 0, 0, .87);--mat-sidenav-content-background-color: #fafafa;--mat-sidenav-content-text-color: rgba(0, 0, 0, .87);--mat-sidenav-scrim-color: rgba(0, 0, 0, .6)}html{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #3f51b5;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #3f51b5;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #3f51b5;--mat-stepper-header-edit-state-icon-foreground-color: white;--mat-stepper-container-color: white;--mat-stepper-line-color: rgba(0, 0, 0, .12);--mat-stepper-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-optional-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-selected-state-label-text-color: rgba(0, 0, 0, .87);--mat-stepper-header-error-state-label-text-color: #f44336;--mat-stepper-header-icon-background-color: rgba(0, 0, 0, .54);--mat-stepper-header-error-state-icon-foreground-color: #f44336;--mat-stepper-header-error-state-icon-background-color: transparent}html .mat-step-header.mat-accent{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #ff4081;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #ff4081;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #ff4081;--mat-stepper-header-edit-state-icon-foreground-color: white}html .mat-step-header.mat-warn{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #f44336;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #f44336;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #f44336;--mat-stepper-header-edit-state-icon-foreground-color: white}html{--mat-stepper-header-height: 72px}.mat-sort-header-arrow{color:#757575}html{--mat-toolbar-container-background-color: whitesmoke;--mat-toolbar-container-text-color: rgba(0, 0, 0, .87)}.mat-toolbar.mat-primary{--mat-toolbar-container-background-color: #3f51b5;--mat-toolbar-container-text-color: white}.mat-toolbar.mat-accent{--mat-toolbar-container-background-color: #ff4081;--mat-toolbar-container-text-color: white}.mat-toolbar.mat-warn{--mat-toolbar-container-background-color: #f44336;--mat-toolbar-container-text-color: white}html{--mat-toolbar-standard-height: 64px;--mat-toolbar-mobile-height: 56px}.mat-tree{background:#fff}.mat-tree-node,.mat-nested-tree-node{color:#000000de}.mat-tree-node{min-height:48px}.errorMsg{position:FIXED;color:#ff273e;font-size:14px;font-family:Source Sans Pro,sans-serif;inset:0;background-color:#fff;text-align:center}.errorMsg .material-icons{position:relative;left:25px;top:calc(51% - 50px)}.errorMsg .errorTxt{padding:10px 10px 10px 30px;text-align:left;width:inherit;display:inline-block;position:relative;line-height:20px;top:calc(50% - 50px)}.sticky_bottom_menu .sticky-bottom-closed{margin-left:3px}.portal-sidnav-menu{overflow-y:auto;scroll-behavior:smooth}.portal-sidnav-menu .portal-sidnav-menu__subheader{margin:12px 0;padding:0 16px;vertical-align:middle;text-transform:uppercase}.portal-sidnav-menu .mat-expansion-panel{box-shadow:none;border-radius:0}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header{height:36px!important;border-bottom:1px solid gainsboro;border-bottom-left-radius:0;border-bottom-right-radius:0;padding:0 10px;border:none!important}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title{margin:0;align-items:center;width:100%}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title .mat-icon{font-size:16px;width:24px;height:24px;line-height:24px;text-align:center;padding:0;flex-shrink:0}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title img.icon.side-menu-icon{width:24px!important}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-description{margin-right:13px}.portal-sidnav-menu .mat-nav-list{padding:0}.portal-sidnav-menu .mat-nav-list .mat-mdc-list-item-icon,.portal-sidnav-menu .mat-nav-list .mat-icon.portal-sidnav-menu__end_detail{font-size:16px;width:24px;height:24px;line-height:24px;text-align:center;padding:0;flex-shrink:0}.portal-sidnav-menu .mat-list-item-focus{background:transparent}.portal-sidnav-menu mat-list mat-expansion-panel mat-expansion-panel-header{padding-left:20px}.portal-sidnav-menu mat-list mat-expansion-panel mat-expansion-panel-header .menu-name-expandable{max-width:170px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block}.portal-sidnav-menu mat-list mat-expansion-panel mat-expansion-panel-header .level-two-badge{top:-10px!important;right:-4px!important}.main-expansion-panel-header{position:relative}.main-chevron-icon{font-size:34px;width:25px;height:34px;color:#41586b;position:absolute;right:10px;bottom:1px}.sub-chevron-icon{left:25px;top:6px;font-size:15px;width:25px;height:15px;color:#41586b;position:relative}.mat-expansion-panel-header:hover{background-color:#fafafa!important}.mat-expansion-panel-header:hover .main-chevron-icon,.mat-expansion-panel-header:hover .sub-chevron-icon{color:#f3aaa2}.header-border{border-top:1px solid gainsboro;border-top-left-radius:0;border-top-right-radius:0}.header-border-none{border:0}.sidemenu-logo-holder{width:150px;text-align:center;margin:0;line-height:1px;max-height:65px;padding:0 10px;display:flex;justify-content:center}.sidemenu-logo-holder img{width:100%}.sidemenu-heading{color:#202b37;font-size:13px;font-family:Source Sans Pro,sans-serif;text-transform:uppercase;font-weight:600;letter-spacing:1.67px;line-height:38px;margin:0!important}.sidemenu-symbol{border-radius:50%;width:18px;height:18px;border:1px solid #ff273e;color:#202b37;text-align:center;font:9px Arial,sans-serif;display:inline-block;font-weight:700;display:flex;justify-content:center;align-items:center;margin-right:10px}.menu-heading{position:relative;margin:0!important;font-weight:500!important;font-size:13.1px;font-family:roboto,sans-serif!important;color:#202b37;white-space:nowrap;text-transform:capitalize;letter-spacing:normal}.logo-dimension{object-fit:cover;max-height:60px}.hamburger-icon{z-index:-1;cursor:pointer;position:fixed;background-color:#fff;border:1px solid #e6eefc;width:20px!important;height:32px;line-height:36px;top:calc(50% - 15px);display:flex;align-items:center;justify-content:center}.left-chevron-icon{color:#7f7f7f}.expanded-hamburger-icon{left:232px}.sidebar-collapse-icon{display:flex;justify-content:flex-end;top:0;z-index:99;background-color:#fff;padding-right:8px}.sidebar-collapse-icon button{width:25px;display:flex;text-align:center;vertical-align:middle;align-items:center;justify-content:center;text-transform:capitalize;border-radius:0;line-height:15px;height:20px;padding:0;min-height:20px;cursor:pointer;color:#1264a3;text-decoration:none;font-size:14px;font-family:Roboto;left:0;top:0;background-color:#fff;border:1px solid #e6eefc}.sidebar-collapse-icon button mat-icon{margin:0}.portal-forgot-logo-text{line-height:1.3;font-family:Dosis,sans-serif;font-style:normal;font-stretch:normal;letter-spacing:4.3px;text-align:left;opacity:1px;color:#41586b;display:inline-block;vertical-align:middle;font-size:25px;font-weight:600}.portal-forgot-card__logo{width:16%}.portal-forget-heading-card{display:flex;justify-content:space-around;align-items:center;flex-direction:row}.div-background-color,.div-background-color-white{background-color:#fff!important}.mat-expansion-panel-content .sub-child-menu .mat-mdc-list-item h3{font-size:14px!important}:host ::ng-deep .mat-expansion-indicator:after{color:#000!important;border-width:0 1px 1px 0;padding:4px}:host ::ng-deep .mat-expansion-indicator:before{color:#000!important}:host ::ng-deep .mat-expansion-panel-body{padding:0!important}:host ::ng-deep .mat-mdc-list-base{padding:0}:host ::ng-deep .mat-mdc-list-base .mat-mdc-list-item,.mat-list-base .mat-list-option{height:40px}:host ::ng-deep .mat-mdc-list-base .mat-mdc-list-item:hover,.mat-list-base .mat-list-option:hover{background-color:#fdeeec;border-right:3px solid #ff273e}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content{padding:0 10px!important}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item{padding:20px!important}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item .mdc-list-item__content h3.font-color-black{color:#1e1f21;font: 400 16px Lato,serif}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-divider.separator{margin-left:0!important;width:calc(100% + 10px)!important}.badge-text.sov-beta-position{position:relative;font-size:10px;color:#ff273e!important;font-family:Lato!important;top:-5px;right:0;letter-spacing:.5px;padding-left:2px}.portal-global-setting-menu{border-top:none!important;margin-bottom:8px}.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel{border-radius:8px;border:1px solid #E5E7E8;padding-left:12px}.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel mat-expansion-panel-header+div[class*=expansion-panel-content] .mat-mdc-list .mat-mdc-list-item:hover,.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel mat-expansion-panel-header+div[class*=expansion-panel-content] .mat-mdc-list .mat-mdc-list-item.active{background-color:#f6f6f6!important}.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel.mat-expanded{border-color:#acb0b4}.portal-global-setting-menu .app-menu-container .app-menu-Link-button{padding:12px 0 12px 12px!important;align-items:center;background:transparent;cursor:pointer!important;width:100%!important;margin:0!important;height:44px!important;border-radius:8px;border:none!important;display:flex!important;justify-content:space-between;font: 400 16px Lato,serif!important;line-height:16px!important}.portal-global-setting-menu .app-menu-container .app-menu-Link-button .app-name label.app-name-label{font-weight:400;cursor:pointer}.navmenu-expanded{align-items:center}.navmenu-expanded .mat-expansion-panel .mat-expansion-panel-header{display:flex!important;justify-content:center;align-items:center}.navmenu-expanded .mat-expansion-panel .mat-expansion-panel-header .mat-content{margin-left:12px}.navmenu-expanded .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title{justify-content:center}.navmenu-expanded .portal-global-setting-menu.sticky_bottom_menu .mat-expansion-panel{border:none!important}.side-menu-icon{width:24px;margin-right:8px}::-webkit-scrollbar{height:8px;width:8px;background:#0000001a;-webkit-transition:all .2s;transition:all .2s}::-webkit-scrollbar-thumb{background:#00000026;border-radius:4px;-webkit-transition:all .2s;transition:all .2s}::-webkit-scrollbar-track{border-radius:30px;background:#ffffffa6}::-webkit-scrollbar-corner{display:none;height:0px;width:0px}::-webkit-scrollbar-thumb:hover{background:#00000073;border-radius:4px;-webkit-transition:all .2s;transition:all .2s}:host ::ng-deep #loader_sov{display:none}:host ::ng-deep #loading_div{width:100%;height:100%;position:fixed;z-index:9999;display:table;background:#f9f9f9}:host ::ng-deep #loading_div>div{display:table-cell;vertical-align:middle;text-align:center}:host ::ng-deep #loading_div>div #loader{vertical-align:middle;width:100%;height:120px;display:block;text-align:center}:host ::ng-deep #loading_div>div #loader img{width:auto;height:140px;display:inline-block;margin:auto}:host ::ng-deep #loading_div>div #loader.site_2{height:130px}:host ::ng-deep #loading_div>div #loader.site_2 img{height:160px}:host ::ng-deep #loading_div>div #loader.site_6{height:138px}:host ::ng-deep #loading_div>div #loader.site_5{height:123px}:host ::ng-deep #loading_div>div #loader.site_5 img{height:110px}:host ::ng-deep #loading_div>div #loader.site_7{height:181px}:host ::ng-deep #loading_div>div #loader.site_7 img{height:204px}:host ::ng-deep #loading_div>div #loader_img{vertical-align:middle;width:100%;height:170px;display:block;text-align:center}:host ::ng-deep #loading_div>div #loader_img img{width:auto;height:150px;display:inline-block;margin:auto}:host ::ng-deep #loading_div>div .loader_progress-bar-position{width:16%;margin:auto}:host ::ng-deep #loading_div>div .loader_progress-bar-position .mat-progress-bar-fill:after{background-color:#ff273e!important}:host ::ng-deep #loading_div>div .loader_progress-bar-position .mat-progress-bar-buffer{background-color:#cdcdd2!important}@media only screen and (max-width: 1425px){:host ::ng-deep #loading_div .loader_progress-bar-position{width:26%!important}}\n", ""], dependencies: [{ kind: "component", type: i7.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i7.MatToolbarRow, selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i9.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i9.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i10.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i10.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i10.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i10.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i12.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i13.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i14.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i14.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i14.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i15.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i15.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i15.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i16.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "component", type: i17.NavMenusComponent, selector: "lnc-nav-menus", inputs: ["item", "applicationId", "parentMenuId", "parentPanelId", "isActiveItem"], outputs: ["menuClicked"] }, { kind: "directive", type: i18.ScrollableDirective, selector: "[appScrollable]" }, { kind: "directive", type: i18.OffsetTopDirective, selector: "[appOffsetTop]", inputs: ["isActiveItem"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
1410
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApplicationSidebarComponent, deps: [{ token: i1.ApplicationSidebarService }, { token: i2.Router }, { token: i3.RestApiService }, { token: i4.CookieService }, { token: i0.ChangeDetectorRef }, { token: i5.TranslationService }, { token: i6.MixpanelService }, { token: i7.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
1411
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ApplicationSidebarComponent, selector: "lnc-navigation-sidebar", inputs: { applicationDetails: "applicationDetails", sidenav: "sidenav" }, viewQueries: [{ propertyName: "list", first: true, predicate: ScrollableDirective, descendants: true }, { propertyName: "navMenusComponent", first: true, predicate: ["navMenusComponent"], descendants: true }, { propertyName: "listItems", predicate: OffsetTopDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div id=\"loader_sov\">\n <div id=\"loading_div\" *ngIf=\"applicationDetails?.sidebarInfo\">\n <div>\n <div id=\"loader\" *ngIf=\"sideIdInfo !== 1\"\n class=\"site_{{sideIdInfo}}\">\n <img src=\"{{applicationDetails?.sidebarInfo?.logo}}\">\n </div>\n <div id=\"loader_img\" *ngIf=\"sideIdInfo == 1\">\n <img src=\"/assets/images/happy_eyes_closed_small.svg\">\n </div>\n <mat-progress-bar class=\"loader_progress-bar-position\" mode=\"indeterminate\"></mat-progress-bar>\n </div>\n </div>\n</div>\n\n<div fxLayout=\"column\" fxFlexFill *ngIf=\"errorMsg.length == 0 else errorBlock\" translate=\"no\" id=\"angular-16-version\" [ngClass]=\"{'navmenu-expanded' : !navExpanded, 'application-sidebar--revised-nav': isRevisedNavigationEnabled()}\">\n <mat-toolbar class=\"portal-side-menu-top-toolbar\">\n <mat-toolbar-row fxLayout=\"row\">\n <div class=\"revised-section-app-logo portal-forget-heading-card\">\n <div class=\"sidemenu-logo-holder\">\n <span *ngIf=\"sideIdInfo !== 1\">\n <img [src]=\"applicationDetails?.sidebarInfo?.favicon\" style=\"width: 40px !important;display: flex !important;\" *ngIf=\"!navExpanded\" [alt]=\"applicationDetails?.sidebarInfo?.firstName\" class=\"favicon-dimension\" />\n <img [src]=\"applicationDetails?.sidebarInfo?.logo\" style=\"display: flex !important;\" *ngIf=\"navExpanded\" class=\"logo-dimension\" />\n </span>\n <span *ngIf=\"sideIdInfo == 1\">\n <img src=\"assets/logos/intentwiselogo.svg\" style=\"width: 40px !important;display: flex !important;\" *ngIf=\"!navExpanded\" [alt]=\"applicationDetails?.sidebarInfo?.firstName\" class=\"favicon-dimension intentwise-favicon\">\n <img src=\"assets/logos/Intentwise.svg\" style=\"display: flex !important;\" *ngIf=\"navExpanded\" [alt]=\"applicationDetails?.sidebarInfo?.firstName\" class=\"logo-dimension intentwise-logo\">\n </span>\n </div>\n </div>\n </mat-toolbar-row>\n </mat-toolbar>\n <!-- <div class=\"sidebar-collapse-icon\" *ngIf=\"isAdminRole\">\n <button mat-menu-item class=\"sidemenu-icon-top\" (click)=\"allMenuCollapse()\">\n <mat-icon *ngIf=\"sidenav && sidenav.opened\">keyboard_arrow_up</mat-icon>\n </button>\n </div> -->\n <div *ngIf=\"sidenav && sidenav.opened && !inContextInsightsWLApp && isLegacyNavigationEnabled()\" class=\"app-menu-container\">\n <button class=\"app-menu-button selected-app-button\" *ngIf=\"toDisplayApplications && toDisplayApplications.length == 1\">\n <span class=\"app-name selected-app-container\">\n <!-- <mat-icon *ngIf=\"currentApp?.name\" class=\"sideNavIcon {{currentApp?.name.split(' ').join('')}}\"></mat-icon> -->\n <img *ngIf=\"currentApp?.name\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(currentApp.icon || 'default-icon.svg')\"/>\n <label style=\"margin-left: -4px;\" [innerHTML]=\"selectedApplication(currentApp)\"></label>\n <span *ngIf=\"currentApp?.badge\" class=\"badge-text sov-beta-position\">{{currentApp.badge}}</span>\n </span>\n </button>\n <button class=\"app-menu-button selected-app-button\" [mat-menu-trigger-for]=\"appMenu\" *ngIf=\"toDisplayApplications && toDisplayApplications.length > 1\">\n <span class=\"app-name selected-app-container\">\n <!-- <mat-icon *ngIf=\"currentApp?.name\" class=\"sideNavIcon {{currentApp?.name.split(' ').join('')}}\"></mat-icon> -->\n <img *ngIf=\"currentApp?.name\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(currentApp.icon || 'default-icon.svg')\"/>\n <label style=\"margin-left: -4px;\" [innerHTML]=\"selectedApplication(currentApp)\"></label>\n <span *ngIf=\"currentApp?.badge\" class=\"badge-text sov-beta-position\">{{currentApp.badge}}</span>\n </span>\n <span class=\"dropdown-icon\"></span>\n </button>\n <mat-menu #appMenu=\"matMenu\" class=\"app-menu\" [backdropClass]=\"'all-module-menus'\">\n <ng-container *ngFor=\"let headmenu of toDisplayApplications\">\n <button class=\"menu-option\" mat-menu-item (click)=\"goToApplication(headmenu)\" [ngClass]=\"{'active': headmenu.panelOpenState}\" class=\"{{headmenu.id}}_icon\" *ngIf=\"headmenu.name != 'Account Management'\" translate=\"no\">\n <!-- <mat-icon class=\"sideNavIcon children-icon\" [ngClass]=\"headmenu.name.split(' ').join('')\"></mat-icon> -->\n <img class=\"icon children-icon side-menu-icon\" [src]=\"getIconUrl(headmenu.icon || 'default-icon.svg')\"/>\n <label [innerHTML]=\"selectedApplication(headmenu)\"></label>\n <span *ngIf=\"headmenu.badge\" class=\"badge-text sov-beta-position\" [innerHTML]=\"headmenu.badge\"></span>\n </button>\n </ng-container>\n </mat-menu>\n </div>\n <div class=\"portal-sidnav-menu\" fxFlex=\"nogrow noshrink\" appScrollable [ngClass]=\"{'whiteLabelSidenav' : inContextInsightsWLApp}\">\n <ng-container *ngIf=\"isRevisedNavigationEnabled(); else legacyNavigationTemplate\">\n <!--\n Revised nav maps to sidebar layout JSON (`sections[]`):\n - type `app-tabs` \u2192 Optimize: tab strip + `revisedGroupMenuItemShell` per menu row (same expand/leaf/active pattern as INTELLIGENCE).\n - type `grouped-menus` \u2192 `groups[]`: each group uses `items[]` of `{ menuId, title? }` (ids from `navmenu1`).\n Leaf vs expandable comes from nav data. Single- and multi-item groups share `revisedGroupMenuItemShell` (same layout as Product 360 / Foundation). Untitled flat groups still use `revisedGroupedMenuRows` + inner mat-list for deep nesting.\n Add more sections in JSON \u2014 they render here in order. Bottom sticky block is unchanged below.\n -->\n <!-- SVG chevrons (not mat-icon ligatures) so expand arrows work even when Material Icons font fails to load -->\n <ng-template #revisedChevronSvg let-expanded=\"expanded\">\n <svg *ngIf=\"!expanded\" class=\"revised-chevron-svg\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\">\n <path fill=\"currentColor\" d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"/>\n </svg>\n <svg *ngIf=\"expanded\" class=\"revised-chevron-svg\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\">\n <path fill=\"currentColor\" d=\"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z\"/>\n </svg>\n </ng-template>\n\n <ng-template #revisedMatPanelChevrons let-expanded=\"expanded\" let-iconClass=\"iconClass\">\n <mat-panel-description class=\"children-description revised-nav-expansion-chevron\" *ngIf=\"navExpanded\">\n <span [ngClass]=\"iconClass || 'sub-chevron-icon revised-nav-chevron'\" class=\"revised-chevron-icon-wrap\">\n <ng-container *ngTemplateOutlet=\"revisedChevronSvg; context: { expanded: expanded }\"></ng-container>\n </span>\n </mat-panel-description>\n </ng-template>\n\n <!-- One resolved menu: grouped-menus (Foundation / INTELLIGENCE) or app-tabs OPTIMIZE when `optimizeParentApp` is set. No inner mat-list. -->\n <ng-template #revisedGroupMenuItemShell let-menu=\"menu\" let-optimizeParentApp=\"optimizeParentApp\">\n <mat-expansion-panel *ngIf=\"menu.children?.length\" class=\"div-background-color-white revised-group__single-expandable\" [expanded]=\"isChildMenuPanelExpanded(menu)\"\n [disabled]=\"true\"\n [ngClass]=\"{'activePanel': isChildMenuPanelHighlighted(menu) , 'whiteLabelActive' : inContextInsightsWLApp}\" hideToggle=\"true\"\n (opened)=\"onChildMenuPanelOpened(menu)\" (closed)=\"onChildMenuPanelClosed(menu)\">\n <mat-expansion-panel-header class=\"revised-group__header revised-group__header--as-panel\" (click)=\"onChildMenuPanelHeaderClick(menu)\">\n <mat-panel-title>\n <span class=\"revised-group__title menu-heading applicationSubmenus\" [innerHTML]=\"selectedApplication(menu)\"></span>\n <span *ngIf=\"menu.badge\" class=\"badge-text sov-beta-position level-two-badge\" [innerHTML]=\"menu.badge\"></span>\n </mat-panel-title>\n <ng-container *ngTemplateOutlet=\"revisedMatPanelChevrons; context: { expanded: isChildMenuPanelExpanded(menu), iconClass: 'revised-group__chevron revised-nav-expansion-chevron revised-nav-chevron' }\"></ng-container>\n </mat-expansion-panel-header>\n <div class=\"revised-group__content\">\n <mat-nav-list class=\"sub-child-menu\">\n <lnc-nav-menus *ngFor=\"let childMenu of menu.children\" appOffsetTop\n [isActiveItem]=\"isRevisedMenuActive(childMenu)\" [item]=\"childMenu\"\n [applicationId]=\"applicationDetails.applicationId\"\n [parentMenuId]=\"optimizeParentApp ? optimizeParentApp.id : getRevisedParentMenuId(childMenu, menu.ownerAppId)\"\n [parentPanelId]=\"menu.id\" (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </div>\n </mat-expansion-panel>\n <mat-nav-list *ngIf=\"!menu.children?.length\" class=\"revised-group__single-link\">\n <lnc-nav-menus appOffsetTop\n [isActiveItem]=\"isRevisedMenuActive(menu)\" [item]=\"menu\"\n [applicationId]=\"applicationDetails.applicationId\"\n [parentMenuId]=\"optimizeParentApp ? optimizeParentApp.id : getRevisedParentMenuId(menu)\"\n [parentPanelId]=\"getRevisedShellLeafParentPanelId(menu, optimizeParentApp)\" (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </ng-template>\n\n <!-- Grouped-menus rows: leaf | mat-expansion (depth 0) | nested mat-expansion (depth 1). Max 2 expansion levels here; deeper leaves use lnc-nav-menus. -->\n <ng-template #revisedGroupedMenuRows let-group=\"group\">\n <ng-container *ngFor=\"let menu of group.items\">\n <ng-container *ngTemplateOutlet=\"revisedGroupedMenuEntry; context: { menu: menu, nestingDepth: 0 }\"></ng-container>\n </ng-container>\n </ng-template>\n\n <ng-template #revisedGroupedMenuEntry let-menu=\"menu\" let-nestingDepth=\"nestingDepth\">\n <mat-nav-list *ngIf=\"!menu.children?.length\" class=\"revised-group-menu-leaf\">\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isRevisedMenuActive(menu)\" [item]=\"menu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"getRevisedParentMenuId(menu)\"\n [parentPanelId]=\"getRevisedParentPanelId(menu)\" (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n\n <mat-expansion-panel *ngIf=\"menu.children?.length\" class=\"div-background-color-white\"\n [class.revised-group-menu-panel--nested]=\"nestingDepth > 0\"\n [expanded]=\"isChildMenuPanelExpanded(menu)\"\n [disabled]=\"true\"\n [ngClass]=\"{'activePanel': isChildMenuPanelHighlighted(menu) , 'whiteLabelActive' : inContextInsightsWLApp}\" hideToggle=\"true\"\n (opened)=\"onChildMenuPanelOpened(menu)\" (closed)=\"onChildMenuPanelClosed(menu)\">\n <mat-expansion-panel-header (click)=\"onChildMenuPanelHeaderClick(menu)\" [ngClass]=\"{'header-border': isChildMenuPanelExpanded(menu), 'header-border-none': !isChildMenuPanelExpanded(menu) }\">\n <mat-panel-title>\n <h3 class=\"menu-heading applicationSubmenus\"><span class=\"menu-name-expandable\" [innerHTML]=\"selectedApplication(menu)\"></span>\n <span *ngIf=\"menu.badge\" class=\"badge-text sov-beta-position level-two-badge\" [innerHTML]=\"menu.badge\"></span>\n </h3>\n </mat-panel-title>\n <ng-container *ngTemplateOutlet=\"revisedMatPanelChevrons; context: { expanded: isChildMenuPanelExpanded(menu) }\"></ng-container>\n </mat-expansion-panel-header>\n <div class=\"revised-group-menu-children\">\n <ng-container *ngFor=\"let child of menu.children\">\n <ng-container *ngIf=\"child.children?.length && (nestingDepth ?? 0) < 2\">\n <ng-container *ngTemplateOutlet=\"revisedGroupedMenuEntry; context: { menu: child, nestingDepth: (nestingDepth ?? 0) + 1 }\"></ng-container>\n </ng-container>\n <mat-nav-list *ngIf=\"!child.children?.length || (nestingDepth ?? 0) >= 2\" class=\"sub-child-menu\">\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isRevisedMenuActive(child)\" [item]=\"child\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"getRevisedParentMenuId(child, menu.ownerAppId)\"\n [parentPanelId]=\"menu.id\" (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </ng-container>\n </div>\n </mat-expansion-panel>\n </ng-template>\n\n <!-- Same section class as legacy so .portal-sidnav-menu .mat-expansion-panel .mat-mdc-list a[mat-list-item].active applies -->\n <div class=\"revised-nav\" translate=\"no\">\n <div class=\"revised-section mat-expansion-panel\" *ngFor=\"let section of revisedSections; trackBy: trackByRevisedSection\" [attr.id]=\"section.id + 'menu'\" [attr.data-section-type]=\"section.type\"\n [ngClass]=\"{'active': isRevisedSectionActive(section)}\">\n <button class=\"revised-section__header main-expansion-panel-header\" type=\"button\" (click)=\"onRevisedSectionHeaderClick(section.id)\"\n [matTooltip]=\"navExpanded ? null : section.title\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\">\n <span class=\"revised-section__header-main\">\n <span class=\"revised-section__header-icon-box\">\n <span class=\"revised-section__header-icon icon side-menu-icon side-menu-icon-color\" [innerHTML]=\"getRevisedSectionIcon(section)\"></span>\n <span class=\"revised-section__collapsed-active-dot\" *ngIf=\"!navExpanded && isRevisedSectionActive(section)\" aria-hidden=\"true\"></span>\n </span>\n <span class=\"revised-section__title sidemenu-heading applicationMenu\" *ngIf=\"navExpanded\">{{ section.title }}</span>\n </span>\n <span class=\"headmenu-description\" *ngIf=\"navExpanded\">\n <span class=\"main-chevron-icon revised-nav-chevron revised-chevron-icon-wrap\">\n <ng-container *ngTemplateOutlet=\"revisedChevronSvg; context: { expanded: isRevisedSectionExpanded(section.id) }\"></ng-container>\n </span>\n </span>\n </button>\n <div *ngIf=\"navExpanded && isRevisedSectionExpanded(section.id)\"\n class=\"revised-section__content revised-section__content--visible padding-0px\"\n [ngClass]=\"{\n 'revised-section__content--grouped': section.type === 'grouped-menus'\n }\"\n [attr.id]=\"section.id\">\n <ng-container [ngSwitch]=\"section.type\">\n\n <!-- JSON: { type: \"app-tabs\", appIds, defaultAppId } -->\n <ng-container *ngSwitchCase=\"'app-tabs'\">\n <div class=\"revised-optimize-tabs\" *ngIf=\"getRevisedSectionApps(section).length > 0\">\n <button type=\"button\" class=\"revised-optimize-tab\" *ngFor=\"let app of getRevisedSectionApps(section); trackBy: trackByRevisedMenu\"\n [ngClass]=\"{'active': isSelectedRevisedSectionApp(section, app)}\"\n [matTooltip]=\"getRevisedOptimizeAppTabTooltip(app)\" matTooltipPosition=\"below\"\n [matTooltipClass]=\"['left-nav-tooltip', 'revised-optimize-app-tab-tooltip']\"\n (click)=\"selectRevisedSectionApp(section, app)\">\n <span class=\"revised-optimize-tab__badge\" *ngIf=\"getRevisedSectionTabBadgeCount(app) !== null\">\n {{ getRevisedSectionTabBadgeCount(app) }}\n </span>\n <span class=\"revised-optimize-tab__icon\">\n <img class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(app.icon || 'default-icon.svg')\" [alt]=\"selectedApplication(app)\" />\n </span>\n </button>\n </div>\n <div class=\"revised-optimize-menus\" *ngIf=\"getRevisedSectionSelectedApp(section) as selectedApp\">\n <div class=\"revised-optimize-app-title menu-heading applicationSubmenus\" [innerHTML]=\"selectedApplication(selectedApp)\"></div>\n <div class=\"revised-group__multi-stack revised-optimize-menu-stack\" [attr.id]=\"section.id + '_' + selectedApp.id\" [ngClass]=\"{'group-nav-menu': hasExpandableMenusInSection(section) }\">\n <ng-container *ngFor=\"let menu of getRevisedSectionMenus(section); trackBy: trackByRevisedMenu\">\n <ng-container *ngTemplateOutlet=\"revisedGroupMenuItemShell; context: { menu: menu, optimizeParentApp: selectedApp }\"></ng-container>\n </ng-container>\n </div>\n </div>\n </ng-container>\n\n <!-- JSON: { type: \"grouped-menus\", groups: [ ... ] } -->\n <ng-container *ngSwitchCase=\"'grouped-menus'\">\n <ng-container *ngFor=\"let group of getRevisedGroupedSectionGroups(section); trackBy: trackByRevisedGroup\">\n\n <div *ngIf=\"isRevisedUntitledGroup(group)\" class=\"revised-group revised-group--flat\">\n <mat-list class=\"padding-0px revised-group__list\" [attr.id]=\"section.id + '_' + group.id\" [ngClass]=\"{'group-nav-menu': hasExpandableMenusInGroup(group) }\">\n <ng-container *ngTemplateOutlet=\"revisedGroupedMenuRows; context: { group: group }\"></ng-container>\n </mat-list>\n </div>\n\n <div *ngIf=\"isRevisedSingleItemGroup(group)\" class=\"revised-group revised-group--single\">\n <ng-container *ngFor=\"let menu of group.items; trackBy: trackByRevisedMenu\">\n <ng-container *ngTemplateOutlet=\"revisedGroupMenuItemShell; context: { menu: menu }\"></ng-container>\n </ng-container>\n </div>\n\n <div *ngIf=\"isRevisedMultiItemGroup(group)\" class=\"revised-group revised-group--multi\">\n <mat-expansion-panel class=\"div-background-color-white revised-group__multi-panel\"\n [expanded]=\"isRevisedGroupExpanded(section.id, group.id)\"\n hideToggle=\"true\"\n (opened)=\"onRevisedGroupPanelOpened(section.id, group.id)\"\n (closed)=\"onRevisedGroupPanelClosed(section.id, group.id)\">\n <mat-expansion-panel-header class=\"revised-group__header revised-group__header--as-panel\"\n [matTooltip]=\"navExpanded ? null : group.title\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\">\n <mat-panel-title>\n <span class=\"revised-group__title menu-heading applicationSubmenus\" *ngIf=\"navExpanded\">{{ group.title }}</span>\n </mat-panel-title>\n <ng-container *ngTemplateOutlet=\"revisedMatPanelChevrons; context: { expanded: isRevisedGroupExpanded(section.id, group.id), iconClass: 'revised-group__chevron revised-nav-expansion-chevron revised-nav-chevron' }\"></ng-container>\n </mat-expansion-panel-header>\n <!-- Per-item DOM matches revised-group--single (no inner mat-list) so global sidebar theme does not apply muted .mat-list .applicationSubmenus to Commerce-style rows. -->\n <div class=\"revised-group__panel-body\" *ngIf=\"navExpanded\">\n <div class=\"revised-group__multi-stack\" [attr.id]=\"section.id + '_' + group.id\" [ngClass]=\"{'group-nav-menu': hasExpandableMenusInGroup(group) }\">\n <ng-container *ngFor=\"let menu of group.items; trackBy: trackByRevisedMenu\">\n <ng-container *ngTemplateOutlet=\"revisedGroupMenuItemShell; context: { menu: menu }\"></ng-container>\n </ng-container>\n </div>\n </div>\n </mat-expansion-panel>\n </div>\n\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n <ng-template #legacyNavigationTemplate>\n <mat-expansion-panel [expanded]=\"headmenu.panelOpenState == true\" hideToggle=\"true\"\n *ngFor=\"let headmenu of toDisplayApplications\" [ngClass]=\"{'active': currentApp.id === headmenu.id }\"\n (opened)=\"headmenu.panelOpenState = true\" (closed)=\"headmenu.panelOpenState = false\">\n <mat-expansion-panel-header matTooltip=\"{{getTooltipInfo(headmenu)}}\" matTooltipClass=\"left-nav-tooltip\" matTooltipPosition=\"right\"\n *ngIf=\"headmenu.type == 'expandable' else singleMenus\" class=\"main-expansion-panel-header\"\n (click)=\"goToApplication(headmenu)\">\n <mat-panel-title>\n <img class=\"icon side-menu-icon side-menu-icon-color\" [src]=\"getIconUrl(headmenu.icon || 'default-icon.svg')\"/>\n <h3 class=\"sidemenu-heading applicationMenu\">\n <label [innerHTML]=\"selectedApplication(headmenu)\"></label>\n <span *ngIf=\"headmenu.badge\" class=\"badge-text sov-beta-position\" [innerHTML]=\"headmenu.badge\"></span>\n </h3>\n </mat-panel-title>\n <mat-panel-description class=\"headmenu-description\" *ngIf=\"navExpanded\">\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"!headmenu.panelOpenState\">arrow_right</mat-icon>\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"headmenu.panelOpenState\">arrow_drop_down</mat-icon>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <mat-list class=\"padding-0px\" *ngFor=\"let menu of headmenu.children\" [attr.id]=\"headmenu.id\" [ngClass]=\"{'group-nav-menu': menu.children }\">\n <mat-expansion-panel *ngIf=\"menu.children else listMenu\" class=\"div-background-color-white\" [expanded]=\"isChildMenuPanelExpanded(menu)\"\n [ngClass]=\"{'activePanel': isChildMenuPanelHighlighted(menu) , 'whiteLabelActive' : inContextInsightsWLApp}\" hideToggle=\"true\"\n (opened)=\"menu.panelOpenState = true\" (closed)=\"menu.panelOpenState = false\">\n <mat-expansion-panel-header\n [ngClass]=\"{'header-border': isChildMenuPanelExpanded(menu), 'header-border-none': !isChildMenuPanelExpanded(menu) }\">\n <mat-panel-title>\n <img style=\"margin-right: 10px\" *ngIf=\"(menu.icon && menu.icon != '') else displayInitials\"\n class=\"icon side-menu-icon side-menu-icon-color\" [src]=\"getIconUrl(menu.icon)\" />\n <ng-template #displayInitials>\n <div class=\"sidemenu-symbol\">\n {{menu.symbol}}\n </div>\n </ng-template>\n <h3 class=\"menu-heading applicationSubmenus\"><span class=\"menu-name-expandable\" [innerHTML]=\"selectedApplication(menu)\"></span>\n <span *ngIf=\"menu.badge\" class=\"badge-text sov-beta-position level-two-badge\"\n [innerHTML]=\"menu.badge\"></span>\n </h3>\n </mat-panel-title>\n <mat-panel-description class=\"children-description\" *ngIf=\"navExpanded\">\n <mat-icon class=\"sub-chevron-icon\" *ngIf=\"!isChildMenuPanelExpanded(menu)\">arrow_right</mat-icon>\n <mat-icon class=\"sub-chevron-icon\" *ngIf=\"isChildMenuPanelExpanded(menu)\">arrow_drop_down</mat-icon>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <!-- <mat-divider></mat-divider> -->\n <mat-nav-list *ngFor=\"let childMenu of menu.children;\" class=\"sub-child-menu\">\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isCheckActiveRoute(childMenu,headmenu,menu)\" [item]=\"childMenu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"headmenu.id\" [parentPanelId]=\"menu.id\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </mat-expansion-panel>\n <ng-template #listMenu>\n <mat-nav-list>\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isCheckActiveRoute(menu,headmenu)\" [item]=\"menu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"headmenu.id\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </ng-template>\n </mat-list>\n <ng-template #singleMenus>\n <mat-list>\n <lnc-nav-menus id=\"{{headmenu.id}}\" appOffsetTop [isActiveItem]=\"isCheckActiveRoute(headmenu,headmenu)\"\n [item]=\"headmenu\" [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"headmenu.id\"\n matTooltip=\"{{getTooltipInfo(headmenu)}}\" matTooltipClass=\"left-nav-tooltip\" matTooltipPosition=\"right\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-list>\n </ng-template>\n </mat-expansion-panel>\n </ng-template>\n </div>\n <div class=\"portal-global-setting-menu sticky_bottom_menu\" *ngIf=\"!inContextInsightsWLApp\">\n <div *ngIf=\"!inContextInsightsWLApp\" class=\"app-menu-container\">\n <button class=\"app-menu-Link-button\" *ngIf=\"toDisplayLinkMenu && toDisplayLinkMenu.length > 0\">\n <div *ngFor=\"let menuLink of toDisplayLinkMenu\" id=\"{{menuLink.id + 'menu'}}\" [style.margin-left]=\"sidenav && sidenav.opened ? '0px' : '5px'\">\n <span class=\"app-name\" (click)=\"goToMenuLink(menuLink)\">\n <div *ngIf=\"sidenav && sidenav.opened\" style=\"display: flex; align-items: center;gap: 5px;\">\n <img *ngIf=\"menuLink?.name\" matTooltip=\"{{getTooltipInfo(menuLink)}}\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(menuLink.icon || 'default-icon.svg')\"/>\n <label *ngIf=\"showTitle\" class=\"app-name-label\" [innerHTML]=\"selectedApplication(menuLink)\"></label>\n <span *ngIf=\"menuLink?.badge\" class=\"badge-text sov-beta-position\">{{menuLink.badge}}</span>\n </div>\n <div *ngIf=\"sidenav && !sidenav.opened\">\n <img *ngIf=\"menuLink?.name\" matTooltip=\"{{getTooltipInfo(menuLink)}}\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(menuLink.icon || 'default-icon.svg')\"/>\n <span *ngIf=\"menuLink?.badge\" class=\"badge-text sov-beta-position\">{{menuLink.badge}}</span>\n </div>\n </span>\n </div>\n </button>\n </div>\n <mat-expansion-panel [expanded]=\"settingsHeadMenu.panelOpenState == true || expandGlobalSettings\" hideToggle=\"true\" id=\"{{settingsHeadMenu.id + 'menu'}}\"\n *ngFor=\"let settingsHeadMenu of toDisplayGlobalSettingsMenu\" [ngClass]=\"{'active': settingsHeadMenu.isActive }\"\n (opened)=\"sidenav.open(); settingsHeadMenu.panelOpenState = true\" (closed)=\"settingsHeadMenu.panelOpenState = false; expandGlobalSettings = false\" [style.border]=\"sidenav && sidenav.opened ? '' : 'none !important'\">\n <mat-expansion-panel-header matTooltip=\"{{getTooltipInfo(settingsHeadMenu)}}\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\"\n *ngIf=\"settingsHeadMenu.type == 'expandable' else singleMenus\" class=\"main-expansion-panel-header\"\n [ngClass]=\"sidenav && sidenav.opened ? '' : 'sticky-bottom-closed'\">\n <mat-panel-title style=\"gap: 5px;\">\n <img class=\"icon side-menu-icon side-menu-icon-color\" [src]=\"getIconUrl(settingsHeadMenu.icon || 'settings-icon.svg')\" />\n <h3 class=\"sidemenu-heading applicationMenu\">\n <label [innerHTML]=\"selectedApplication(settingsHeadMenu)\"></label>\n <span *ngIf=\"settingsHeadMenu.badge\" class=\"badge-text sov-beta-position\"\n [innerHTML]=\"settingsHeadMenu.badge\"></span>\n </h3>\n </mat-panel-title>\n <mat-panel-description class=\"setting-description\" *ngIf=\"navExpanded\">\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"!settingsHeadMenu.panelOpenState\">arrow_right</mat-icon>\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"settingsHeadMenu.panelOpenState\">arrow_drop_down</mat-icon>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <mat-list class=\"padding-0px\" *ngFor=\"let menu of settingsHeadMenu.children\" [attr.id]=\"settingsHeadMenu.id\"\n [ngClass]=\"{'group-nav-menu': menu.children }\">\n <mat-nav-list>\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isCheckActiveRoute(menu,settingsHeadMenu)\" [item]=\"menu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"settingsHeadMenu.id\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </mat-list>\n <ng-template #singleMenus>\n <mat-list>\n <lnc-nav-menus [attr.id]=\"settingsHeadMenu.id\" appOffsetTop\n [isActiveItem]=\"isCheckActiveRoute(settingsHeadMenu,settingsHeadMenu)\" [item]=\"settingsHeadMenu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"settingsHeadMenu.id\"\n matTooltip=\"{{getTooltipInfo(settingsHeadMenu)}}\" matTooltipClass=\"left-nav-tooltip\" matTooltipPosition=\"right\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-list>\n </ng-template>\n </mat-expansion-panel>\n\n </div>\n</div>\n<ng-template #errorBlock>\n <div class=\"errorMsg\">\n <span class=\"material-icons\">error</span>\n <span class=\"errorTxt\">{{errorMsg}}</span>\n </div>\n</ng-template>\n\n<a class=\"hamburger-icon expanded-hamburger-icon\" title=\"Toggle Menu\" (click)=\"sidenav.close();allMenuCollapse(); \">\n <mat-icon class=\"left-chevron-icon\">keyboard_arrow_left</mat-icon>\n</a>\n\n<!-- <img *ngIf=\"showMenuIcon()\" class=\"favicon-dimension\" src={{applicationDetails.sidebarInfo.favicon}} alt=\"Intentwise Favicon\" />\n <a *ngIf=\"showMenuIcon()\" title=\"Toggle Menu\" class=\"hamburger-icon collapsed-hamburger\"\n (click)=\"sidenav.open()\">\n <mat-icon class=\"right-chevron-icon\">keyboard_arrow_right</mat-icon>\n </a> -->\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";@import\"https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600\";.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-ripple-element{background-color:#0000001a}html{--mat-option-selected-state-label-text-color: #3f51b5;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}.mat-accent{--mat-option-selected-state-label-text-color: #ff4081}.mat-warn{--mat-option-selected-state-label-text-color: #f44336}html{--mat-optgroup-label-text-color: rgba(0, 0, 0, .87)}.mat-pseudo-checkbox-full{color:#0000008a}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#3f51b5}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#3f51b5}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff4081}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff4081}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff4081}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff4081}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#f44336}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#f44336}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#b0b0b0}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:#000000de}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}.mat-mdc-card{--mdc-elevated-card-container-color: white;--mdc-elevated-card-container-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-outlined-card-container-color: white;--mdc-outlined-card-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-card-container-elevation: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-card-subtitle-text-color: rgba(0, 0, 0, .54)}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #3f51b5;--mdc-linear-progress-track-color: rgba(63, 81, 181, .25)}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:#3f51b540;background-color:var(--mdc-linear-progress-track-color, rgba(63, 81, 181, .25))}@media (forced-colors: active){.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:transparent;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(63, 81, 181, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:#3f51b540;background-color:var(--mdc-linear-progress-track-color, rgba(63, 81, 181, .25))}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #ff4081;--mdc-linear-progress-track-color: rgba(255, 64, 129, .25)}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:#ff408140;background-color:var(--mdc-linear-progress-track-color, rgba(255, 64, 129, .25))}@media (forced-colors: active){.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:transparent;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 64, 129, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:#ff408140;background-color:var(--mdc-linear-progress-track-color, rgba(255, 64, 129, .25))}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #f44336;--mdc-linear-progress-track-color: rgba(244, 67, 54, .25)}@keyframes mdc-linear-progress-buffering{}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:#f4433640;background-color:var(--mdc-linear-progress-track-color, rgba(244, 67, 54, .25))}@media (forced-colors: active){.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:transparent;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(244, 67, 54, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:#f4433640;background-color:var(--mdc-linear-progress-track-color, rgba(244, 67, 54, .25))}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: #fff}html{--mdc-filled-text-field-caret-color: #3f51b5;--mdc-filled-text-field-focus-active-indicator-color: #3f51b5;--mdc-filled-text-field-focus-label-text-color: rgba(63, 81, 181, .87);--mdc-filled-text-field-container-color: whitesmoke;--mdc-filled-text-field-disabled-container-color: #fafafa;--mdc-filled-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-error-focus-label-text-color: #f44336;--mdc-filled-text-field-error-label-text-color: #f44336;--mdc-filled-text-field-error-caret-color: #f44336;--mdc-filled-text-field-active-indicator-color: rgba(0, 0, 0, .42);--mdc-filled-text-field-disabled-active-indicator-color: rgba(0, 0, 0, .06);--mdc-filled-text-field-hover-active-indicator-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-error-active-indicator-color: #f44336;--mdc-filled-text-field-error-focus-active-indicator-color: #f44336;--mdc-filled-text-field-error-hover-active-indicator-color: #f44336;--mdc-outlined-text-field-caret-color: #3f51b5;--mdc-outlined-text-field-focus-outline-color: #3f51b5;--mdc-outlined-text-field-focus-label-text-color: rgba(63, 81, 181, .87);--mdc-outlined-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-error-caret-color: #f44336;--mdc-outlined-text-field-error-focus-label-text-color: #f44336;--mdc-outlined-text-field-error-label-text-color: #f44336;--mdc-outlined-text-field-outline-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-disabled-outline-color: rgba(0, 0, 0, .06);--mdc-outlined-text-field-hover-outline-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-error-focus-outline-color: #f44336;--mdc-outlined-text-field-error-hover-outline-color: #f44336;--mdc-outlined-text-field-error-outline-color: #f44336;--mat-form-field-disabled-input-text-placeholder-color: rgba(0, 0, 0, .38)}.mat-mdc-form-field-error{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-subscript-text-font);line-height:var(--mat-form-field-subscript-text-line-height);font-size:var(--mat-form-field-subscript-text-size);letter-spacing:var(--mat-form-field-subscript-text-tracking);font-weight:var(--mat-form-field-subscript-text-weight)}.mat-mdc-form-field-focus-overlay{background-color:#000000de}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#0000008a}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:#3f51b5de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:#ff4081de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:#f44336de}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#00000061}.mat-mdc-form-field.mat-accent{--mdc-filled-text-field-caret-color: #ff4081;--mdc-filled-text-field-focus-active-indicator-color: #ff4081;--mdc-filled-text-field-focus-label-text-color: rgba(255, 64, 129, .87);--mdc-outlined-text-field-caret-color: #ff4081;--mdc-outlined-text-field-focus-outline-color: #ff4081;--mdc-outlined-text-field-focus-label-text-color: rgba(255, 64, 129, .87)}.mat-mdc-form-field.mat-warn{--mdc-filled-text-field-caret-color: #f44336;--mdc-filled-text-field-focus-active-indicator-color: #f44336;--mdc-filled-text-field-focus-label-text-color: rgba(244, 67, 54, .87);--mdc-outlined-text-field-caret-color: #f44336;--mdc-outlined-text-field-focus-outline-color: #f44336;--mdc-outlined-text-field-focus-label-text-color: rgba(244, 67, 54, .87)}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}html{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(63, 81, 181, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-accent{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(255, 64, 129, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-warn{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(244, 67, 54, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html{--mat-autocomplete-background-color: white}.mat-mdc-dialog-container{--mdc-dialog-container-color: white;--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-standard-chip{--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-elevated-container-color: #e0e0e0;--mdc-chip-elevated-disabled-container-color: #e0e0e0;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #3f51b5;--mdc-chip-elevated-disabled-container-color: #3f51b5;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #ff4081;--mdc-chip-elevated-disabled-container-color: #ff4081;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #f44336;--mdc-chip-elevated-disabled-container-color: #f44336;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-chip.mat-mdc-standard-chip{--mdc-chip-container-height: 32px}.mat-mdc-slide-toggle{--mdc-switch-selected-focus-state-layer-color: #3949ab;--mdc-switch-selected-handle-color: #3949ab;--mdc-switch-selected-hover-state-layer-color: #3949ab;--mdc-switch-selected-pressed-state-layer-color: #3949ab;--mdc-switch-selected-focus-handle-color: #1a237e;--mdc-switch-selected-hover-handle-color: #1a237e;--mdc-switch-selected-pressed-handle-color: #1a237e;--mdc-switch-selected-focus-track-color: #7986cb;--mdc-switch-selected-hover-track-color: #7986cb;--mdc-switch-selected-pressed-track-color: #7986cb;--mdc-switch-selected-track-color: #7986cb;--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-handle-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-switch-handle-shadow-color: black;--mdc-switch-disabled-handle-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-switch-selected-icon-color: #fff;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-handle-color: #616161;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-icon-color: #fff;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#00000061}.mat-mdc-slide-toggle.mat-accent{--mdc-switch-selected-focus-state-layer-color: #d81b60;--mdc-switch-selected-handle-color: #d81b60;--mdc-switch-selected-hover-state-layer-color: #d81b60;--mdc-switch-selected-pressed-state-layer-color: #d81b60;--mdc-switch-selected-focus-handle-color: #880e4f;--mdc-switch-selected-hover-handle-color: #880e4f;--mdc-switch-selected-pressed-handle-color: #880e4f;--mdc-switch-selected-focus-track-color: #f06292;--mdc-switch-selected-hover-track-color: #f06292;--mdc-switch-selected-pressed-track-color: #f06292;--mdc-switch-selected-track-color: #f06292}.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5;--mat-radio-ripple-color: #000;--mat-radio-checked-ripple-color: #3f51b5;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081;--mat-radio-ripple-color: #000;--mat-radio-checked-ripple-color: #ff4081;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336;--mat-radio-ripple-color: #000;--mat-radio-checked-ripple-color: #f44336;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button .mdc-radio{--mdc-radio-state-layer-size: 40px}.mat-mdc-slider{--mdc-slider-label-container-color: black;--mdc-slider-label-label-text-color: white;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-with-tick-marks-disabled-container-color: #000;--mat-mdc-slider-value-indicator-opacity: .6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #3f51b5;--mdc-slider-focus-handle-color: #3f51b5;--mdc-slider-hover-handle-color: #3f51b5;--mdc-slider-active-track-color: #3f51b5;--mdc-slider-inactive-track-color: #3f51b5;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #3f51b5;--mat-mdc-slider-ripple-color: #3f51b5;--mat-mdc-slider-hover-ripple-color: rgba(63, 81, 181, .05);--mat-mdc-slider-focus-ripple-color: rgba(63, 81, 181, .2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color: #ff4081;--mdc-slider-focus-handle-color: #ff4081;--mdc-slider-hover-handle-color: #ff4081;--mdc-slider-active-track-color: #ff4081;--mdc-slider-inactive-track-color: #ff4081;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #ff4081;--mat-mdc-slider-ripple-color: #ff4081;--mat-mdc-slider-hover-ripple-color: rgba(255, 64, 129, .05);--mat-mdc-slider-focus-ripple-color: rgba(255, 64, 129, .2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color: #f44336;--mdc-slider-focus-handle-color: #f44336;--mdc-slider-hover-handle-color: #f44336;--mdc-slider-active-track-color: #f44336;--mdc-slider-inactive-track-color: #f44336;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #f44336;--mat-mdc-slider-ripple-color: #f44336;--mat-mdc-slider-hover-ripple-color: rgba(244, 67, 54, .05);--mat-mdc-slider-focus-ripple-color: rgba(244, 67, 54, .2)}html{--mat-menu-item-label-text-color: rgba(0, 0, 0, .87);--mat-menu-item-icon-color: rgba(0, 0, 0, .87);--mat-menu-item-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-item-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-container-color: white}.mat-mdc-list-base{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mdc-list-item__start,.mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5}.mat-accent .mdc-list-item__start,.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081}.mat-warn .mdc-list-item__start,.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336}.mat-mdc-list-option{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #3f51b5;--mdc-checkbox-selected-hover-state-layer-color: #3f51b5;--mdc-checkbox-selected-pressed-state-layer-color: #3f51b5;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-accent{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #ff4081;--mdc-checkbox-selected-hover-state-layer-color: #ff4081;--mdc-checkbox-selected-pressed-state-layer-color: #ff4081;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-warn{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#3f51b5}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}html{--mat-paginator-container-text-color: rgba(0, 0, 0, .87);--mat-paginator-container-background-color: white;--mat-paginator-enabled-icon-color: rgba(0, 0, 0, .54);--mat-paginator-disabled-icon-color: rgba(0, 0, 0, .12)}html{--mat-paginator-container-size: 56px}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.mat-mdc-tab-group,.mat-mdc-tab-nav-bar{--mdc-tab-indicator-active-indicator-color: #3f51b5;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: #000;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #3f51b5;--mat-tab-header-active-ripple-color: #3f51b5;--mat-tab-header-inactive-ripple-color: #3f51b5;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #3f51b5;--mat-tab-header-active-hover-label-text-color: #3f51b5;--mat-tab-header-active-focus-indicator-color: #3f51b5;--mat-tab-header-active-hover-indicator-color: #3f51b5}.mat-mdc-tab-group.mat-accent,.mat-mdc-tab-nav-bar.mat-accent{--mdc-tab-indicator-active-indicator-color: #ff4081;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: #000;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #ff4081;--mat-tab-header-active-ripple-color: #ff4081;--mat-tab-header-inactive-ripple-color: #ff4081;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #ff4081;--mat-tab-header-active-hover-label-text-color: #ff4081;--mat-tab-header-active-focus-indicator-color: #ff4081;--mat-tab-header-active-hover-indicator-color: #ff4081}.mat-mdc-tab-group.mat-warn,.mat-mdc-tab-nav-bar.mat-warn{--mdc-tab-indicator-active-indicator-color: #f44336;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: #000;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #f44336;--mat-tab-header-active-ripple-color: #f44336;--mat-tab-header-inactive-ripple-color: #f44336;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #f44336;--mat-tab-header-active-hover-label-text-color: #f44336;--mat-tab-header-active-focus-indicator-color: #f44336;--mat-tab-header-active-hover-indicator-color: #f44336}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-tab-header-with-background-background-color: #3f51b5;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-tab-header-with-background-background-color: #ff4081;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-tab-header-with-background-background-color: #f44336;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-header{--mdc-secondary-navigation-tab-container-height: 48px}html{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #ff4081;--mdc-checkbox-selected-hover-state-layer-color: #ff4081;--mdc-checkbox-selected-pressed-state-layer-color: #ff4081;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #3f51b5;--mdc-checkbox-selected-hover-state-layer-color: #3f51b5;--mdc-checkbox-selected-pressed-state-layer-color: #3f51b5;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{color:#00000061}html{--mdc-checkbox-state-layer-size: 40px}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #3f51b5}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #ff4081}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #f44336}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-text-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #fff;--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #3f51b5;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #ff4081;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #f44336;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-button-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #fff;--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #3f51b5;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #ff4081;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #f44336;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation: 0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #3f51b5}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #ff4081}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #f44336}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, .1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, .1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary,.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent,.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mat-mdc-icon-button{--mdc-icon-button-icon-color: inherit;--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #6200ee;--mat-mdc-button-ripple-color: rgba(98, 0, 238, .1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #018786;--mat-mdc-button-ripple-color: rgba(1, 135, 134, .1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #b00020;--mat-mdc-button-ripple-color: rgba(176, 0, 32, .1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #3f51b5;--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, .1)}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #ff4081;--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, .1)}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #f44336;--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(0, 0, 0, .38);--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}.mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size: 48px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:12px}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary,.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent,.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(0, 0, 0, .12);--mdc-fab-icon-color: rgba(0, 0, 0, .38);--mat-mdc-fab-color: rgba(0, 0, 0, .38)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: white;--mdc-fab-icon-color: black;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: #3f51b5;--mdc-fab-icon-color: white;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: #ff4081;--mdc-fab-icon-color: white;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: #f44336;--mdc-fab-icon-color: white;--mat-mdc-fab-color: #fff}.mat-mdc-snack-bar-container{--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87);--mat-snack-bar-button-color: #ff4081}html{--mat-table-background-color: white;--mat-table-header-headline-color: rgba(0, 0, 0, .87);--mat-table-row-item-label-text-color: rgba(0, 0, 0, .87);--mat-table-row-item-outline-color: rgba(0, 0, 0, .12)}html{--mat-table-header-container-height: 56px;--mat-table-footer-container-height: 52px;--mat-table-row-item-container-height: 52px}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: #3f51b5}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: #ff4081}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: #f44336}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;background-color:var(--mat-badge-background-color);color:var(--mat-badge-text-color);font-family:Roboto,sans-serif;font-family:var(--mat-badge-text-font, Roboto, sans-serif);font-size:12px;font-size:var(--mat-badge-text-size, 12px);font-weight:600;font-weight:var(--mat-badge-text-weight, 600)}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-disabled .mat-badge-content{background-color:var(--mat-badge-disabled-state-background-color);color:var(--mat-badge-disabled-state-text-color)}.mat-badge-hidden .mat-badge-content{display:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px;font-size:9px;font-size:var(--mat-badge-small-size-text-size, 9px)}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px;font-size:24px;font-size:var(--mat-badge-large-size-text-size, 24px)}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}html{--mat-badge-background-color: #3f51b5;--mat-badge-text-color: white;--mat-badge-disabled-state-background-color: #b9b9b9;--mat-badge-disabled-state-text-color: rgba(0, 0, 0, .38)}.mat-badge-accent{--mat-badge-background-color: #ff4081;--mat-badge-text-color: white}.mat-badge-warn{--mat-badge-background-color: #f44336;--mat-badge-text-color: white}html{--mat-bottom-sheet-container-text-color: rgba(0, 0, 0, .87);--mat-bottom-sheet-container-background-color: white}html{--mat-legacy-button-toggle-text-color: rgba(0, 0, 0, .38);--mat-legacy-button-toggle-state-layer-color: rgba(0, 0, 0, .12);--mat-legacy-button-toggle-selected-state-text-color: rgba(0, 0, 0, .54);--mat-legacy-button-toggle-selected-state-background-color: #e0e0e0;--mat-legacy-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-legacy-button-toggle-disabled-state-background-color: #eeeeee;--mat-legacy-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-background-color: white;--mat-standard-button-toggle-state-layer-color: black;--mat-standard-button-toggle-selected-state-background-color: #e0e0e0;--mat-standard-button-toggle-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-standard-button-toggle-disabled-state-background-color: white;--mat-standard-button-toggle-disabled-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-divider-color: #e0e0e0}html{--mat-standard-button-toggle-height: 48px}html{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #3f51b5;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(63, 81, 181, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(63, 81, 181, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(63, 81, 181, .3);--mat-datepicker-toggle-active-state-icon-color: #3f51b5;--mat-datepicker-calendar-date-in-range-state-background-color: rgba(63, 81, 181, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e;--mat-datepicker-toggle-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-body-label-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-period-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-navigation-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-header-divider-color: rgba(0, 0, 0, .12);--mat-datepicker-calendar-header-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-date-today-outline-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-today-disabled-state-outline-color: rgba(0, 0, 0, .18);--mat-datepicker-calendar-date-text-color: rgba(0, 0, 0, .87);--mat-datepicker-calendar-date-outline-color: transparent;--mat-datepicker-calendar-date-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-preview-state-outline-color: rgba(0, 0, 0, .24);--mat-datepicker-range-input-separator-color: rgba(0, 0, 0, .87);--mat-datepicker-range-input-disabled-state-separator-color: rgba(0, 0, 0, .38);--mat-datepicker-range-input-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-container-background-color: white;--mat-datepicker-calendar-container-text-color: rgba(0, 0, 0, .87)}.mat-datepicker-content.mat-accent{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #ff4081;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(255, 64, 129, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(255, 64, 129, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(255, 64, 129, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(255, 64, 129, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e}.mat-datepicker-content.mat-warn{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #f44336;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(244, 67, 54, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(244, 67, 54, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e}.mat-datepicker-toggle-active.mat-accent{--mat-datepicker-toggle-active-state-icon-color: #ff4081}.mat-datepicker-toggle-active.mat-warn{--mat-datepicker-toggle-active-state-icon-color: #f44336}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size: 40px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}html{--mat-divider-color: rgba(0, 0, 0, .12)}html{--mat-expansion-container-background-color: white;--mat-expansion-container-text-color: rgba(0, 0, 0, .87);--mat-expansion-actions-divider-color: rgba(0, 0, 0, .12);--mat-expansion-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-expansion-header-text-color: rgba(0, 0, 0, .87);--mat-expansion-header-description-color: rgba(0, 0, 0, .54);--mat-expansion-header-indicator-color: rgba(0, 0, 0, .54)}html{--mat-expansion-header-collapsed-state-height: 48px;--mat-expansion-header-expanded-state-height: 64px}html{--mat-icon-color: inherit}.mat-icon.mat-primary{--mat-icon-color: #3f51b5}.mat-icon.mat-accent{--mat-icon-color: #ff4081}.mat-icon.mat-warn{--mat-icon-color: #f44336}html{--mat-sidenav-container-divider-color: rgba(0, 0, 0, .12);--mat-sidenav-container-background-color: white;--mat-sidenav-container-text-color: rgba(0, 0, 0, .87);--mat-sidenav-content-background-color: #fafafa;--mat-sidenav-content-text-color: rgba(0, 0, 0, .87);--mat-sidenav-scrim-color: rgba(0, 0, 0, .6)}html{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #3f51b5;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #3f51b5;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #3f51b5;--mat-stepper-header-edit-state-icon-foreground-color: white;--mat-stepper-container-color: white;--mat-stepper-line-color: rgba(0, 0, 0, .12);--mat-stepper-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-optional-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-selected-state-label-text-color: rgba(0, 0, 0, .87);--mat-stepper-header-error-state-label-text-color: #f44336;--mat-stepper-header-icon-background-color: rgba(0, 0, 0, .54);--mat-stepper-header-error-state-icon-foreground-color: #f44336;--mat-stepper-header-error-state-icon-background-color: transparent}html .mat-step-header.mat-accent{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #ff4081;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #ff4081;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #ff4081;--mat-stepper-header-edit-state-icon-foreground-color: white}html .mat-step-header.mat-warn{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #f44336;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #f44336;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #f44336;--mat-stepper-header-edit-state-icon-foreground-color: white}html{--mat-stepper-header-height: 72px}.mat-sort-header-arrow{color:#757575}html{--mat-toolbar-container-background-color: whitesmoke;--mat-toolbar-container-text-color: rgba(0, 0, 0, .87)}.mat-toolbar.mat-primary{--mat-toolbar-container-background-color: #3f51b5;--mat-toolbar-container-text-color: white}.mat-toolbar.mat-accent{--mat-toolbar-container-background-color: #ff4081;--mat-toolbar-container-text-color: white}.mat-toolbar.mat-warn{--mat-toolbar-container-background-color: #f44336;--mat-toolbar-container-text-color: white}html{--mat-toolbar-standard-height: 64px;--mat-toolbar-mobile-height: 56px}.mat-tree{background:#fff}.mat-tree-node,.mat-nested-tree-node{color:#000000de}.mat-tree-node{min-height:48px}.errorMsg{position:FIXED;color:#ff273e;font-size:14px;font-family:Source Sans Pro,sans-serif;inset:0;background-color:#fff;text-align:center}.errorMsg .material-icons{position:relative;left:25px;top:calc(51% - 50px)}.errorMsg .errorTxt{padding:10px 10px 10px 30px;text-align:left;width:inherit;display:inline-block;position:relative;line-height:20px;top:calc(50% - 50px)}.sticky_bottom_menu .sticky-bottom-closed{margin-left:3px}.revised-section__header{width:100%;border:0;background:transparent;display:flex;align-items:center;justify-content:space-between;cursor:pointer;text-align:left;overflow:hidden;height:40px;padding:0 5px}.revised-section__header .revised-chevron-icon-wrap{position:absolute;right:14px!important}.revised-section__header-main{display:inline-flex;align-items:center;gap:5px;min-width:0;overflow:hidden}.revised-section__header-icon-box{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.revised-section__header-icon{width:13px;height:13px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.revised-section__header-icon ::ng-deep svg{display:block}.revised-nav{display:flex;flex-direction:column;width:100%;flex:1 1 auto;min-height:0}.revised-nav-chevron{flex-shrink:0}.revised-section__title{line-height:38px;white-space:nowrap;overflow:hidden;opacity:1;max-width:220px;transition:opacity 80ms ease,max-width 80ms ease}.revised-section__icon{color:#41586b}.revised-section__chevron{font-size:20px;width:20px;height:20px;line-height:20px;font-family:Material Icons!important;font-weight:400;font-style:normal;display:inline-flex;align-items:center;justify-content:center;text-transform:none;letter-spacing:normal}.revised-section__content{max-height:0;opacity:0;overflow:hidden;padding-bottom:0;visibility:hidden;transition:max-height .1s ease,opacity 80ms ease,padding-bottom .1s ease,visibility 0s linear .1s}.revised-section__content--visible{padding:0 8px 0 28px;max-height:1400px!important;opacity:1!important;visibility:visible!important;overflow:visible!important;transition:max-height .12s ease,opacity .1s ease,padding-bottom .12s ease,visibility 0s linear 0s}.revised-section__content--visible.revised-section__content--grouped{padding-left:32px}:host ::ng-deep .revised-section .mat-expansion-panel-content{padding-left:12px}.revised-group{margin-bottom:4px}.revised-group__header{width:100%;border:0;background:transparent;display:flex;align-items:center;justify-content:space-between;padding:8px 10px 6px;cursor:pointer;text-align:left;font:inherit;color:inherit}.revised-group__title{margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.revised-group__chevron{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;min-width:28px;min-height:28px}.revised-group__list{padding-left:4px!important}.revised-group__multi-panel{box-shadow:none!important;border-radius:0!important;background:transparent!important}.revised-group__multi-panel .mat-expansion-panel-header.revised-group__header--as-panel{padding:8px 10px 6px 12px!important}.revised-group__panel-body{padding-left:0}.revised-group-menu-panel--nested .mat-expansion-panel-header{padding-left:8px;min-height:40px}.revised-group-menu-leaf{padding:0}.revised-group--single .revised-group__header--as-panel{padding:8px 10px 6px;height:auto;min-height:40px}.revised-group--single .revised-group__single-expandable{box-shadow:none;border-radius:0}.revised-group--single .revised-group__single-expandable .mat-expansion-panel-header{border:0;padding:8px 10px 6px}.revised-group--single .revised-group__single-link{padding:0;min-height:0}.revised-group--single .revised-group__single-link .mat-mdc-list-item,.revised-group--single .revised-group__single-link a[mat-list-item],.revised-group--multi .revised-group__list .mat-mdc-list-item,.revised-group--multi .revised-group__list a[mat-list-item]{padding:8px 10px 6px;height:auto;min-height:40px}.revised-group--multi .revised-group__multi-stack .revised-group__single-expandable,.revised-optimize-menus .revised-optimize-menu-stack .revised-group__single-expandable{box-shadow:none;border-radius:0}.revised-group--multi .revised-group__multi-stack .revised-group__single-expandable .mat-expansion-panel-header,.revised-optimize-menus .revised-optimize-menu-stack .revised-group__single-expandable .mat-expansion-panel-header{border:0;padding:8px 10px 6px 12px!important}.revised-group--multi .revised-group__multi-stack .revised-group__single-link,.revised-optimize-menus .revised-optimize-menu-stack .revised-group__single-link{padding:0;min-height:0}.revised-group--multi .revised-group__multi-stack .revised-group__single-link .mat-mdc-list-item,.revised-group--multi .revised-group__multi-stack .revised-group__single-link a[mat-list-item],.revised-group--multi .revised-group__multi-stack .revised-group__content .sub-child-menu .mat-mdc-list-item,.revised-group--multi .revised-group__multi-stack .revised-group__content .sub-child-menu a[mat-list-item],.revised-optimize-menus .revised-optimize-menu-stack .revised-group__single-link .mat-mdc-list-item,.revised-optimize-menus .revised-optimize-menu-stack .revised-group__single-link a[mat-list-item],.revised-optimize-menus .revised-optimize-menu-stack .revised-group__content .sub-child-menu .mat-mdc-list-item,.revised-optimize-menus .revised-optimize-menu-stack .revised-group__content .sub-child-menu a[mat-list-item]{padding:8px 10px 6px;height:auto;min-height:40px}.revised-section mat-expansion-panel-header.mat-expansion-panel-header,.revised-section .mat-expansion-panel-header{align-items:center!important}.revised-section mat-panel-title,.revised-section .mat-expansion-panel-header-title{flex:1 1 auto!important;min-width:0}.revised-section mat-panel-title .menu-heading,.revised-section .mat-expansion-panel-header-title .menu-heading{font-size:15.5px}.revised-section mat-panel-description.children-description,.revised-section .mat-expansion-panel-header-description.children-description{margin-left:auto!important;margin-right:0!important;flex:0 0 auto!important;display:flex!important;align-items:center;justify-content:flex-end;padding-right:10px}.revised-section .sub-chevron-icon.revised-chevron-icon-wrap,.revised-section span.sub-chevron-icon{position:static!important;left:auto!important;top:auto!important;line-height:0;width:auto!important;min-width:28px;height:auto!important;color:#41586b}.revised-section .revised-group__chevron{color:#41586b}.revised-section .revised-chevron-icon-wrap{display:inline-flex;align-items:center;justify-content:center;overflow:visible;color:#41586b;position:absolute;right:5px}.revised-section .revised-chevron-svg{display:block;width:22px;height:22px;flex-shrink:0;pointer-events:none}.navmenu-expanded .revised-section{width:100%;margin-bottom:0;display:flex;flex-direction:column;align-items:center}.navmenu-expanded .revised-section__header{width:auto;max-width:100%;min-width:0;flex:0 0 auto;min-height:56px;padding:0 8px;justify-content:center;box-sizing:border-box}.navmenu-expanded .revised-section__header-main{width:auto;max-width:100%;justify-content:center;gap:0}.navmenu-expanded .revised-section__title,.navmenu-expanded .revised-section__icon{opacity:0;pointer-events:none}.navmenu-expanded .revised-section__title{max-width:0}.navmenu-expanded .revised-section.active .revised-section__header-icon-box{background:#ebecef;border-radius:10px;padding:8px;box-sizing:border-box}.navmenu-expanded .revised-section__header-icon{width:24px;height:24px}.navmenu-expanded .revised-section__header-icon ::ng-deep svg{width:20px;height:20px}.navmenu-expanded .revised-section__collapsed-active-dot{position:absolute;top:2px;right:2px;width:6px;height:6px;border-radius:50%;background-color:#ff273e;box-shadow:0 0 0 2px #ebecef;pointer-events:none}.navmenu-expanded .revised-section__content:not(.revised-section__content--visible){max-height:0!important;opacity:0!important;padding-bottom:0!important;visibility:hidden!important}.revised-optimize-tabs{display:flex;gap:10px;padding:6px 0 12px;align-items:center;flex-wrap:nowrap;justify-content:center}.revised-optimize-tab{width:40px;min-width:40px;height:40px;border-radius:8px;border:2px solid #e5e7e8;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;padding:0;transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease}.revised-optimize-tab.active{background:#eef2ff;border-color:#4573d2}.revised-optimize-tab:hover{background:#eef2ff}.revised-optimize-tab img{margin-right:0!important;width:24px!important;height:24px!important;object-fit:contain}.revised-optimize-tab__icon{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px}.revised-optimize-tab__badge{position:absolute;top:-6px;left:-6px;min-width:24px;height:24px;padding:0 6px;border-radius:12px;background:#ff4d4f;color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;line-height:1;box-shadow:0 0 0 3px #fff}.revised-section-group{margin-bottom:12px;padding-left:45px}.revised-section-group__title{padding:4px 0 2px}.revised-optimize-app-title{color:#202b37;font-size:15px;font-weight:700!important;line-height:36px;text-transform:capitalize}::ng-deep .mat-mdc-tooltip-panel-below mat-tooltip-component .mdc-tooltip.revised-optimize-app-tab-tooltip{position:relative;inset-inline-start:12px}:host ::ng-deep .revised-section lnc-nav-menus a.sidemenu-option.active,:host ::ng-deep .revised-section lnc-nav-menus a.mat-mdc-list-item.sidemenu-option.active{background-color:#f6f6f6!important;border:none!important}:host ::ng-deep .revised-section lnc-nav-menus a.sidemenu-option.active h3,:host ::ng-deep .revised-section lnc-nav-menus a.sidemenu-option.active h3.sidemenu-text,:host ::ng-deep .revised-section lnc-nav-menus a.mat-mdc-list-item.sidemenu-option.active h3,:host ::ng-deep .revised-section lnc-nav-menus a.mat-mdc-list-item.sidemenu-option.active h3.sidemenu-text{color:#202b37!important;font-weight:700}:host ::ng-deep .revised-section lnc-nav-menus a.sidemenu-option:hover:not(.active),:host ::ng-deep .revised-section lnc-nav-menus a.mat-mdc-list-item.sidemenu-option:hover:not(.active){background-color:#f6f6f6!important;border-right:none!important}:host ::ng-deep .revised-section lnc-nav-menus a.sidemenu-option:hover:not(.active) h3,:host ::ng-deep .revised-section lnc-nav-menus a.mat-mdc-list-item.sidemenu-option:hover:not(.active) h3{color:#202b37!important}:host ::ng-deep .revised-section .mat-expansion-panel-header:hover .main-chevron-icon,:host ::ng-deep .revised-section .mat-expansion-panel-header:hover .sub-chevron-icon{color:#41586b!important}:host ::ng-deep .revised-section .mat-mdc-list-item,:host ::ng-deep .revised-section a[mat-list-item]{border-radius:8px;margin:4px 0;min-height:40px;padding-left:0;padding-right:0}.portal-sidnav-menu{overflow-y:auto;scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.15) rgba(255,255,255,.65)}.portal-sidnav-menu::-webkit-scrollbar{height:8px;width:8px;background:#0000001a;-webkit-transition:all .2s;transition:all .2s}.portal-sidnav-menu::-webkit-scrollbar-thumb{background:#00000026;border-radius:4px;-webkit-transition:all .2s;transition:all .2s}.portal-sidnav-menu::-webkit-scrollbar-track{border-radius:30px;background:#ffffffa6}.portal-sidnav-menu::-webkit-scrollbar-corner{display:none;height:0;width:0}.portal-sidnav-menu::-webkit-scrollbar-thumb:hover{background:#00000073;border-radius:4px;-webkit-transition:all .2s;transition:all .2s}.portal-sidnav-menu .portal-sidnav-menu__subheader{margin:12px 0;padding:0 16px;vertical-align:middle;font-size:14px}.portal-sidnav-menu .mat-expansion-panel{box-shadow:none;border-radius:0}.portal-sidnav-menu .mat-expansion-panel.revised-section:not(:last-child){border-bottom:1px solid #E5E7E8;padding-bottom:5px}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header{height:36px!important;border-bottom-left-radius:0;border-bottom-right-radius:0;padding:0 0 0 25px;border:none!important}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title{margin:0;align-items:center;width:100%}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title .mat-icon{font-size:16px;width:24px;height:24px;line-height:24px;text-align:center;padding:0;flex-shrink:0}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title img.icon.side-menu-icon{width:24px!important}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-description{margin-right:13px}.portal-sidnav-menu .mat-nav-list{padding:0}.portal-sidnav-menu .mat-nav-list .mat-mdc-list-item-icon,.portal-sidnav-menu .mat-nav-list .mat-icon.portal-sidnav-menu__end_detail{font-size:16px;width:24px;height:24px;line-height:24px;text-align:center;padding:0;flex-shrink:0}.portal-sidnav-menu .mat-list-item-focus{background:transparent}.portal-sidnav-menu mat-list mat-expansion-panel mat-expansion-panel-header{padding-left:20px}.portal-sidnav-menu mat-list mat-expansion-panel mat-expansion-panel-header .menu-name-expandable{max-width:170px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block}.portal-sidnav-menu mat-list mat-expansion-panel mat-expansion-panel-header .level-two-badge{top:-10px!important;right:-4px!important}::ng-deep .mdc-list-item:hover:before,::ng-deep .mdc-list-item:focus:before,::ng-deep .mdc-list-item.mdc-list-item--selected:before,::ng-deep .mdc-list-item.mdc-list-item--activated:before,::ng-deep .mdc-list-item__ripple:before{background-color:transparent!important}.main-expansion-panel-header{position:relative}.main-chevron-icon{font-size:34px;width:25px;height:34px;color:#41586b;position:absolute;right:10px;bottom:1px}.sub-chevron-icon{left:25px;top:6px;font-size:15px;width:25px;height:15px;color:#41586b;position:relative}.header-border{border-top-left-radius:0;border-top-right-radius:0}.header-border-none{border:0}.sidemenu-logo-holder{width:150px;text-align:center;margin:0;line-height:1px;max-height:65px;padding:0 10px;display:flex;justify-content:center}.sidemenu-logo-holder img{width:100%}.sidemenu-heading{color:#1e1f21;font-size:16px;font-weight:600;margin:0!important}.sidemenu-symbol{border-radius:50%;width:18px;height:18px;border:1px solid #ff273e;color:#202b37;text-align:center;font:9px Arial,sans-serif;display:inline-block;font-weight:700;display:flex;justify-content:center;align-items:center;margin-right:10px}.menu-heading{position:relative;margin:0!important;color:#1e1f21!important;white-space:nowrap;text-transform:capitalize;letter-spacing:normal}.logo-dimension{object-fit:cover;max-height:60px}.hamburger-icon{z-index:-1;cursor:pointer;position:fixed;background-color:#fff;border:1px solid #e6eefc;width:20px!important;height:32px;line-height:36px;top:calc(50% - 15px);display:flex;align-items:center;justify-content:center}.left-chevron-icon{color:#7f7f7f}.expanded-hamburger-icon{left:232px}.sidebar-collapse-icon{display:flex;justify-content:flex-end;top:0;z-index:99;background-color:#fff;padding-right:8px}.sidebar-collapse-icon button{width:25px;display:flex;text-align:center;vertical-align:middle;align-items:center;justify-content:center;text-transform:capitalize;border-radius:0;line-height:15px;height:20px;padding:0;min-height:20px;cursor:pointer;color:#1264a3;text-decoration:none;font-size:14px;left:0;top:0;background-color:#fff;border:1px solid #e6eefc}.sidebar-collapse-icon button mat-icon{margin:0}.portal-forgot-logo-text{line-height:1.3;font-family:Dosis,sans-serif;font-style:normal;font-stretch:normal;letter-spacing:4.3px;text-align:left;opacity:1px;color:#41586b;display:inline-block;vertical-align:middle;font-size:25px;font-weight:600}.portal-forgot-card__logo{width:16%}.portal-forget-heading-card{display:flex;justify-content:space-around;align-items:center;flex-direction:row}.revised-section-app-logo{padding:0 10px}.div-background-color,.div-background-color-white{background-color:#fff!important}.mat-expansion-panel-content{padding-left:20px}.mat-expansion-panel-content .sub-child-menu .mat-mdc-list-item h3{font-size:14px!important}:host ::ng-deep .mat-expansion-indicator:after{color:#000!important;border-width:0 1px 1px 0;padding:4px}:host ::ng-deep .mat-expansion-indicator:before{color:#000!important}:host ::ng-deep .mat-expansion-panel-body{padding:0!important}:host ::ng-deep .mat-expansion-panel-body .mat-mdc-list-item h3.sidemenu-text,:host ::ng-deep .mat-expansion-panel-body a.mat-mdc-list-item h3.sidemenu-text,:host ::ng-deep .mat-expansion-panel-body .mdc-list-item__content h3.sidemenu-text{font-size:15.25px!important}:host ::ng-deep .mat-mdc-list-base{padding:0}:host ::ng-deep .mat-mdc-list-base .mat-mdc-list-item,.mat-list-base .mat-list-option{height:40px}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content{padding:0 10px 0 23px!important}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item .mdc-list-item__content h3.font-color-black{color:#1e1f21;font: 400 16px Lato,serif}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-divider.separator{margin-left:0!important;width:calc(100% + 10px)!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu mat-expansion-panel .mat-expansion-panel-content{padding:0 8px 0 20px!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item{padding:0 12px!important;min-height:40px!important;height:auto!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item .mdc-list-item__content h3,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item .mdc-list-item__content h3.sidemenu-text,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item .mdc-list-item__content h3.font-color-black{color:#202b37!important;font-size:15.5px!important;font-weight:400!important;line-height:1.25!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.sidemenu-option.active,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.mat-mdc-list-item.sidemenu-option.active{background-color:#f6f6f6!important;border:none!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.sidemenu-option.active h3,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.sidemenu-option.active h3.sidemenu-text,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.mat-mdc-list-item.sidemenu-option.active h3,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.mat-mdc-list-item.sidemenu-option.active h3.sidemenu-text{color:#202b37!important;font-weight:700!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.sidemenu-option:hover:not(.active),:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.mat-mdc-list-item.sidemenu-option:hover:not(.active){background-color:#f6f6f6!important;border-right:none!important;text-decoration:none!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.sidemenu-option:hover:not(.active) h3,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.sidemenu-option:hover:not(.active) h3.sidemenu-text,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.mat-mdc-list-item.sidemenu-option:hover:not(.active) h3,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.mat-mdc-list-item.sidemenu-option:hover:not(.active) h3.sidemenu-text{color:#202b37!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel mat-expansion-panel-header+div[class*=expansion-panel-content] .mat-mdc-list .mat-mdc-list-item:hover:not(.active),:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel mat-expansion-panel-header+div[class*=expansion-panel-content] .mat-mdc-list .mat-mdc-list-item.active{background-color:#f6f6f6!important}.badge-text.sov-beta-position{position:relative;font-size:10px;color:#ff273e!important;font-family:Lato!important;top:-5px;right:0;letter-spacing:.5px;padding-left:2px;flex-grow:1}.portal-global-setting-menu{border-top:1px solid #E5E7E8!important;margin-bottom:8px}.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel{padding-left:5px}.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel mat-expansion-panel-header+div[class*=expansion-panel-content] .mat-mdc-list .mat-mdc-list-item:hover,.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel mat-expansion-panel-header+div[class*=expansion-panel-content] .mat-mdc-list .mat-mdc-list-item.active{background-color:#f6f6f6!important}.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel.mat-expanded{border-color:#acb0b4}.portal-global-setting-menu .app-menu-container .app-menu-Link-button{padding:12px 5px!important;align-items:center;background:transparent;cursor:pointer!important;width:100%!important;margin:0!important;height:44px!important;border-radius:8px;border:none!important;display:flex!important;justify-content:space-between;font: 400 16px Lato,serif!important;line-height:16px!important}.portal-global-setting-menu .app-menu-container .app-menu-Link-button .app-name label.app-name-label{font-weight:700;cursor:pointer}.navmenu-expanded{align-items:center}.navmenu-expanded .mat-expansion-panel .mat-expansion-panel-header{display:flex!important;justify-content:center;align-items:center}.navmenu-expanded .mat-expansion-panel .mat-expansion-panel-header .mat-content{margin-left:12px}.navmenu-expanded .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title{justify-content:center}.navmenu-expanded .portal-global-setting-menu.sticky_bottom_menu .mat-expansion-panel{border:none!important}.side-menu-icon{width:18px;height:18px}::-webkit-scrollbar{height:8px;width:8px;background:#0000001a;-webkit-transition:all .2s;transition:all .2s}::-webkit-scrollbar-thumb{background:#00000026;border-radius:4px;-webkit-transition:all .2s;transition:all .2s}::-webkit-scrollbar-track{border-radius:30px;background:#ffffffa6}::-webkit-scrollbar-corner{display:none;height:0px;width:0px}::-webkit-scrollbar-thumb:hover{background:#00000073;border-radius:4px;-webkit-transition:all .2s;transition:all .2s}:host ::ng-deep #loader_sov{display:none}:host ::ng-deep #loading_div{width:100%;height:100%;position:fixed;z-index:9999;display:table;background:#f9f9f9}:host ::ng-deep #loading_div>div{display:table-cell;vertical-align:middle;text-align:center}:host ::ng-deep #loading_div>div #loader{vertical-align:middle;width:100%;height:120px;display:block;text-align:center}:host ::ng-deep #loading_div>div #loader img{width:auto;height:140px;display:inline-block;margin:auto}:host ::ng-deep #loading_div>div #loader.site_2{height:130px}:host ::ng-deep #loading_div>div #loader.site_2 img{height:160px}:host ::ng-deep #loading_div>div #loader.site_6{height:138px}:host ::ng-deep #loading_div>div #loader.site_5{height:123px}:host ::ng-deep #loading_div>div #loader.site_5 img{height:110px}:host ::ng-deep #loading_div>div #loader.site_7{height:181px}:host ::ng-deep #loading_div>div #loader.site_7 img{height:204px}:host ::ng-deep #loading_div>div #loader_img{vertical-align:middle;width:100%;height:170px;display:block;text-align:center}:host ::ng-deep #loading_div>div #loader_img img{width:auto;height:150px;display:inline-block;margin:auto}:host ::ng-deep #loading_div>div .loader_progress-bar-position{width:16%;margin:auto}:host ::ng-deep #loading_div>div .loader_progress-bar-position .mat-progress-bar-fill:after{background-color:#ff273e!important}:host ::ng-deep #loading_div>div .loader_progress-bar-position .mat-progress-bar-buffer{background-color:#cdcdd2!important}@media only screen and (max-width: 1425px){:host ::ng-deep #loading_div .loader_progress-bar-position{width:26%!important}}::ng-deep body app-root .mat-sidenav-container.left-nav-v2 .mat-sidenav.portal-classic-leftsidenav{border-right:none!important;overflow:hidden!important;width:300px;min-width:300px;max-width:300px;background-color:#fdfdfd!important;padding-top:11px;padding-right:0!important;padding-left:0!important}:host-context(body app-root .mat-sidenav-container.left-nav-v2 .mat-sidenav.portal-classic-leftsidenav) .portal-sidnav-menu{padding:0!important}:host-context(body app-root .mat-sidenav-container.left-nav-v2 .mat-sidenav.portal-classic-leftsidenav) .mat-toolbar{margin-bottom:0!important}\n", ""], dependencies: [{ kind: "component", type: i8.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i8.MatToolbarRow, selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }, { kind: "component", type: i9.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i9.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i10.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i10.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i11.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i11.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i11.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i11.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i13.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i14.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i15.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i15.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i15.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i15.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i15.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i15.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i16.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i16.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i16.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i17.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "component", type: i18.NavMenusComponent, selector: "lnc-nav-menus", inputs: ["item", "applicationId", "parentMenuId", "parentPanelId", "isActiveItem"], outputs: ["menuClicked"] }, { kind: "directive", type: i19.ScrollableDirective, selector: "[appScrollable]" }, { kind: "directive", type: i19.OffsetTopDirective, selector: "[appOffsetTop]", inputs: ["isActiveItem"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
661
1412
  }
662
1413
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApplicationSidebarComponent, decorators: [{
663
1414
  type: Component,
664
- args: [{ selector: 'lnc-navigation-sidebar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div id=\"loader_sov\">\n <div id=\"loading_div\" *ngIf=\"applicationDetails?.sidebarInfo\">\n <div>\n <div id=\"loader\" *ngIf=\"sideIdInfo !== 1\"\n class=\"site_{{sideIdInfo}}\">\n <img src=\"{{applicationDetails?.sidebarInfo?.logo}}\">\n </div>\n <div id=\"loader_img\" *ngIf=\"sideIdInfo == 1\">\n <img src=\"/assets/images/happy_eyes_closed_small.svg\">\n </div>\n <mat-progress-bar class=\"loader_progress-bar-position\" mode=\"indeterminate\"></mat-progress-bar>\n </div>\n </div>\n</div>\n\n<div fxLayout=\"column\" fxFlexFill *ngIf=\"errorMsg.length == 0 else errorBlock\" translate=\"no\" id=\"angular-16-version\" [ngClass]=\"{'navmenu-expanded' : !navExpanded}\">\n <mat-toolbar class=\"portal-side-menu-top-toolbar\">\n <mat-toolbar-row fxLayout=\"row\">\n <div class=\"portal-forget-heading-card\">\n <div class=\"sidemenu-logo-holder\">\n <span *ngIf=\"sideIdInfo !== 1\">\n <img [src]=\"applicationDetails?.sidebarInfo?.favicon\" style=\"width: 40px !important;display: flex !important;\" *ngIf=\"!navExpanded\" [alt]=\"applicationDetails?.sidebarInfo?.firstName\" class=\"favicon-dimension\" />\n <img [src]=\"applicationDetails?.sidebarInfo?.logo\" style=\"display: flex !important;\" *ngIf=\"navExpanded\" class=\"logo-dimension\" />\n </span>\n <span *ngIf=\"sideIdInfo == 1\">\n <img src=\"assets/logos/intentwiselogo.svg\" style=\"width: 40px !important;display: flex !important;\" *ngIf=\"!navExpanded\" [alt]=\"applicationDetails?.sidebarInfo?.firstName\" class=\"favicon-dimension intentwise-favicon\">\n <img src=\"assets/logos/Intentwise.svg\" style=\"display: flex !important;\" *ngIf=\"navExpanded\" [alt]=\"applicationDetails?.sidebarInfo?.firstName\" class=\"logo-dimension intentwise-logo\">\n </span>\n </div>\n </div>\n </mat-toolbar-row>\n </mat-toolbar>\n <!-- <div class=\"sidebar-collapse-icon\" *ngIf=\"isAdminRole\">\n <button mat-menu-item class=\"sidemenu-icon-top\" (click)=\"allMenuCollapse()\">\n <mat-icon *ngIf=\"sidenav && sidenav.opened\">keyboard_arrow_up</mat-icon>\n </button>\n </div> -->\n <div *ngIf=\"sidenav && sidenav.opened && !inContextInsightsWLApp\" class=\"app-menu-container\">\n <button class=\"app-menu-button selected-app-button\" *ngIf=\"toDisplayApplications && toDisplayApplications.length == 1\">\n <span class=\"app-name selected-app-container\">\n <!-- <mat-icon *ngIf=\"currentApp?.name\" class=\"sideNavIcon {{currentApp?.name.split(' ').join('')}}\"></mat-icon> -->\n <img *ngIf=\"currentApp?.name\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(currentApp.icon || 'default-icon.svg')\"/>\n <label style=\"margin-left: -4px;\" [innerHTML]=\"selectedApplication(currentApp)\"></label>\n <span *ngIf=\"currentApp?.badge\" class=\"badge-text sov-beta-position\">{{currentApp.badge}}</span>\n </span>\n </button>\n <button class=\"app-menu-button selected-app-button\" [mat-menu-trigger-for]=\"appMenu\" *ngIf=\"toDisplayApplications && toDisplayApplications.length > 1\">\n <span class=\"app-name selected-app-container\">\n <!-- <mat-icon *ngIf=\"currentApp?.name\" class=\"sideNavIcon {{currentApp?.name.split(' ').join('')}}\"></mat-icon> -->\n <img *ngIf=\"currentApp?.name\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(currentApp.icon || 'default-icon.svg')\"/>\n <label style=\"margin-left: -4px;\" [innerHTML]=\"selectedApplication(currentApp)\"></label>\n <span *ngIf=\"currentApp?.badge\" class=\"badge-text sov-beta-position\">{{currentApp.badge}}</span>\n </span>\n <span class=\"dropdown-icon\"></span>\n </button>\n <mat-menu #appMenu=\"matMenu\" class=\"app-menu\" [backdropClass]=\"'all-module-menus'\">\n <ng-container *ngFor=\"let headmenu of toDisplayApplications\">\n <button class=\"menu-option\" mat-menu-item (click)=\"goToApplication(headmenu)\" [ngClass]=\"{'active': headmenu.panelOpenState}\" class=\"{{headmenu.id}}_icon\" *ngIf=\"headmenu.name != 'Account Management'\" translate=\"no\">\n <!-- <mat-icon class=\"sideNavIcon children-icon\" [ngClass]=\"headmenu.name.split(' ').join('')\"></mat-icon> -->\n <img class=\"icon children-icon side-menu-icon\" [src]=\"getIconUrl(headmenu.icon || 'default-icon.svg')\"/>\n <label [innerHTML]=\"selectedApplication(headmenu)\"></label>\n <span *ngIf=\"headmenu.badge\" class=\"badge-text sov-beta-position\" [innerHTML]=\"headmenu.badge\"></span>\n </button>\n </ng-container>\n </mat-menu>\n </div>\n <div class=\"portal-sidnav-menu\" fxFlex=\"nogrow noshrink\" appScrollable [ngClass]=\"{'whiteLabelSidenav' : inContextInsightsWLApp}\">\n <mat-expansion-panel [expanded]=\"headmenu.panelOpenState == true\" hideToggle=\"true\"\n *ngFor=\"let headmenu of toDisplayApplications\" [ngClass]=\"{'active': currentApp.id === headmenu.id }\"\n (opened)=\"headmenu.panelOpenState = true\" (closed)=\"headmenu.panelOpenState = false\">\n <mat-expansion-panel-header matTooltip=\"{{getTooltipInfo(headmenu)}}\" matTooltipClass=\"left-nav-tooltip\" matTooltipPosition=\"right\"\n *ngIf=\"headmenu.type == 'expandable' else singleMenus\" class=\"main-expansion-panel-header\"\n (click)=\"goToApplication(headmenu)\">\n <mat-panel-title>\n <img class=\"icon side-menu-icon side-menu-icon-color\" [src]=\"getIconUrl(headmenu.icon || 'default-icon.svg')\"/>\n <h3 class=\"sidemenu-heading applicationMenu\">\n <label [innerHTML]=\"selectedApplication(headmenu)\"></label>\n <span *ngIf=\"headmenu.badge\" class=\"badge-text sov-beta-position\" [innerHTML]=\"headmenu.badge\"></span>\n </h3>\n </mat-panel-title>\n <mat-panel-description class=\"headmenu-description\" *ngIf=\"navExpanded\">\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"!headmenu.panelOpenState\">arrow_right</mat-icon>\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"headmenu.panelOpenState\">arrow_drop_down</mat-icon>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <mat-list class=\"padding-0px\" *ngFor=\"let menu of headmenu.children\" [attr.id]=\"headmenu.id\" [ngClass]=\"{'group-nav-menu': menu.children }\">\n <mat-expansion-panel *ngIf=\"menu.children else listMenu\" class=\"div-background-color-white\" [expanded]=\"menu.id == activePanel\"\n [ngClass]=\"{'activePanel': menu.id == activePanel , 'whiteLabelActive' : inContextInsightsWLApp}\" hideToggle=\"true\"\n (opened)=\"menu.panelOpenState = true\" (closed)=\"menu.panelOpenState = false\">\n <mat-expansion-panel-header\n [ngClass]=\"{'header-border': menu.panelOpenState === true, 'header-border-none': menu.panelOpenState === false }\">\n <mat-panel-title>\n <img style=\"margin-right: 10px\" *ngIf=\"(menu.icon && menu.icon != '') else displayInitials\"\n class=\"icon side-menu-icon side-menu-icon-color\" [src]=\"getIconUrl(menu.icon)\" />\n <ng-template #displayInitials>\n <div class=\"sidemenu-symbol\">\n {{menu.symbol}}\n </div>\n </ng-template>\n <h3 class=\"menu-heading applicationSubmenus\"><span class=\"menu-name-expandable\" [innerHTML]=\"selectedApplication(menu)\"></span>\n <span *ngIf=\"menu.badge\" class=\"badge-text sov-beta-position level-two-badge\"\n [innerHTML]=\"menu.badge\"></span>\n </h3>\n </mat-panel-title>\n <mat-panel-description class=\"children-description\" *ngIf=\"navExpanded\">\n <mat-icon class=\"sub-chevron-icon\" *ngIf=\"!menu.panelOpenState\">keyboard_arrow_right</mat-icon>\n <mat-icon class=\"sub-chevron-icon\" *ngIf=\"menu.panelOpenState\">keyboard_arrow_down</mat-icon>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <!-- <mat-divider></mat-divider> -->\n <mat-nav-list *ngFor=\"let childMenu of menu.children;\" class=\"sub-child-menu\">\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isCheckActiveRoute(childMenu,headmenu,menu)\" [item]=\"childMenu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"headmenu.id\" [parentPanelId]=\"menu.id\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </mat-expansion-panel>\n <ng-template #listMenu>\n <mat-nav-list>\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isCheckActiveRoute(menu,headmenu)\" [item]=\"menu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"headmenu.id\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </ng-template>\n </mat-list>\n <ng-template #singleMenus>\n <mat-list>\n <lnc-nav-menus id=\"{{headmenu.id}}\" appOffsetTop [isActiveItem]=\"isCheckActiveRoute(headmenu,headmenu)\"\n [item]=\"headmenu\" [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"headmenu.id\"\n matTooltip=\"{{getTooltipInfo(headmenu)}}\" matTooltipClass=\"left-nav-tooltip\" matTooltipPosition=\"right\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-list>\n </ng-template>\n </mat-expansion-panel>\n </div>\n <div class=\"portal-global-setting-menu sticky_bottom_menu\" *ngIf=\"!inContextInsightsWLApp\">\n <div *ngIf=\"!inContextInsightsWLApp\" class=\"app-menu-container\">\n <button class=\"app-menu-Link-button\" *ngIf=\"toDisplayLinkMenu && toDisplayLinkMenu.length > 0\">\n <div *ngFor=\"let menuLink of toDisplayLinkMenu\" id=\"{{menuLink.id + 'menu'}}\" [style.margin-left]=\"sidenav && sidenav.opened ? '0px' : '5px'\">\n <span class=\"app-name\" (click)=\"goToMenuLink(menuLink)\">\n <div *ngIf=\"sidenav && sidenav.opened\" style=\"display: flex; align-items: center;\">\n <img *ngIf=\"menuLink?.name\" matTooltip=\"{{getTooltipInfo(menuLink)}}\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(menuLink.icon || 'default-icon.svg')\"/>\n <label *ngIf=\"showTitle\" class=\"app-name-label\" [innerHTML]=\"selectedApplication(menuLink)\"></label>\n <span *ngIf=\"menuLink?.badge\" class=\"badge-text sov-beta-position\">{{menuLink.badge}}</span>\n </div>\n <div *ngIf=\"sidenav && !sidenav.opened\">\n <img *ngIf=\"menuLink?.name\" matTooltip=\"{{getTooltipInfo(menuLink)}}\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(menuLink.icon || 'default-icon.svg')\"/>\n <span *ngIf=\"menuLink?.badge\" class=\"badge-text sov-beta-position\">{{menuLink.badge}}</span>\n </div>\n </span>\n </div>\n </button>\n </div>\n <mat-expansion-panel [expanded]=\"settingsHeadMenu.panelOpenState == true || expandGlobalSettings\" hideToggle=\"true\" id=\"{{settingsHeadMenu.id + 'menu'}}\"\n *ngFor=\"let settingsHeadMenu of toDisplayGlobalSettingsMenu\" [ngClass]=\"{'active': settingsHeadMenu.isActive }\"\n (opened)=\"sidenav.open(); settingsHeadMenu.panelOpenState = true\" (closed)=\"settingsHeadMenu.panelOpenState = false; expandGlobalSettings = false\" [style.border]=\"sidenav && sidenav.opened ? '' : 'none !important'\">\n <mat-expansion-panel-header matTooltip=\"{{getTooltipInfo(settingsHeadMenu)}}\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\"\n *ngIf=\"settingsHeadMenu.type == 'expandable' else singleMenus\" class=\"main-expansion-panel-header\"\n [ngClass]=\"sidenav && sidenav.opened ? '' : 'sticky-bottom-closed'\">\n <mat-panel-title>\n <img class=\"icon side-menu-icon side-menu-icon-color\" [src]=\"getIconUrl(settingsHeadMenu.icon || 'settings-icon.svg')\" />\n <h3 class=\"sidemenu-heading applicationMenu\">\n <label [innerHTML]=\"selectedApplication(settingsHeadMenu)\"></label>\n <span *ngIf=\"settingsHeadMenu.badge\" class=\"badge-text sov-beta-position\"\n [innerHTML]=\"settingsHeadMenu.badge\"></span>\n </h3>\n </mat-panel-title>\n <mat-panel-description class=\"setting-description\" *ngIf=\"navExpanded\">\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"!settingsHeadMenu.panelOpenState\">arrow_right</mat-icon>\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"settingsHeadMenu.panelOpenState\">arrow_drop_down</mat-icon>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <mat-list class=\"padding-0px\" *ngFor=\"let menu of settingsHeadMenu.children\" [attr.id]=\"settingsHeadMenu.id\"\n [ngClass]=\"{'group-nav-menu': menu.children }\">\n <mat-nav-list>\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isCheckActiveRoute(menu,settingsHeadMenu)\" [item]=\"menu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"settingsHeadMenu.id\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </mat-list>\n <ng-template #singleMenus>\n <mat-list>\n <lnc-nav-menus [attr.id]=\"settingsHeadMenu.id\" appOffsetTop\n [isActiveItem]=\"isCheckActiveRoute(settingsHeadMenu,settingsHeadMenu)\" [item]=\"settingsHeadMenu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"settingsHeadMenu.id\"\n matTooltip=\"{{getTooltipInfo(settingsHeadMenu)}}\" matTooltipClass=\"left-nav-tooltip\" matTooltipPosition=\"right\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-list>\n </ng-template>\n </mat-expansion-panel>\n\n </div>\n</div>\n<ng-template #errorBlock>\n <div class=\"errorMsg\">\n <span class=\"material-icons\">error</span>\n <span class=\"errorTxt\">{{errorMsg}}</span>\n </div>\n</ng-template>\n\n<a class=\"hamburger-icon expanded-hamburger-icon\" title=\"Toggle Menu\" (click)=\"sidenav.close();allMenuCollapse(); \">\n <mat-icon class=\"left-chevron-icon\">keyboard_arrow_left</mat-icon>\n</a>\n\n<!-- <img *ngIf=\"showMenuIcon()\" class=\"favicon-dimension\" src={{applicationDetails.sidebarInfo.favicon}} alt=\"Intentwise Favicon\" />\n <a *ngIf=\"showMenuIcon()\" title=\"Toggle Menu\" class=\"hamburger-icon collapsed-hamburger\"\n (click)=\"sidenav.open()\">\n <mat-icon class=\"right-chevron-icon\">keyboard_arrow_right</mat-icon>\n </a> -->", styles: ["@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";@import\"https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600\";.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-ripple-element{background-color:#0000001a}html{--mat-option-selected-state-label-text-color: #3f51b5;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}.mat-accent{--mat-option-selected-state-label-text-color: #ff4081}.mat-warn{--mat-option-selected-state-label-text-color: #f44336}html{--mat-optgroup-label-text-color: rgba(0, 0, 0, .87)}.mat-pseudo-checkbox-full{color:#0000008a}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#3f51b5}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#3f51b5}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff4081}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff4081}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff4081}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff4081}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#f44336}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#f44336}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#b0b0b0}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:#000000de}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}.mat-mdc-card{--mdc-elevated-card-container-color: white;--mdc-elevated-card-container-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-outlined-card-container-color: white;--mdc-outlined-card-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-card-container-elevation: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-card-subtitle-text-color: rgba(0, 0, 0, .54)}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #3f51b5;--mdc-linear-progress-track-color: rgba(63, 81, 181, .25)}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:#3f51b540;background-color:var(--mdc-linear-progress-track-color, rgba(63, 81, 181, .25))}@media (forced-colors: active){.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:transparent;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(63, 81, 181, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:#3f51b540;background-color:var(--mdc-linear-progress-track-color, rgba(63, 81, 181, .25))}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #ff4081;--mdc-linear-progress-track-color: rgba(255, 64, 129, .25)}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:#ff408140;background-color:var(--mdc-linear-progress-track-color, rgba(255, 64, 129, .25))}@media (forced-colors: active){.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:transparent;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 64, 129, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:#ff408140;background-color:var(--mdc-linear-progress-track-color, rgba(255, 64, 129, .25))}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #f44336;--mdc-linear-progress-track-color: rgba(244, 67, 54, .25)}@keyframes mdc-linear-progress-buffering{}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:#f4433640;background-color:var(--mdc-linear-progress-track-color, rgba(244, 67, 54, .25))}@media (forced-colors: active){.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:transparent;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(244, 67, 54, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:#f4433640;background-color:var(--mdc-linear-progress-track-color, rgba(244, 67, 54, .25))}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: #fff}html{--mdc-filled-text-field-caret-color: #3f51b5;--mdc-filled-text-field-focus-active-indicator-color: #3f51b5;--mdc-filled-text-field-focus-label-text-color: rgba(63, 81, 181, .87);--mdc-filled-text-field-container-color: whitesmoke;--mdc-filled-text-field-disabled-container-color: #fafafa;--mdc-filled-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-error-focus-label-text-color: #f44336;--mdc-filled-text-field-error-label-text-color: #f44336;--mdc-filled-text-field-error-caret-color: #f44336;--mdc-filled-text-field-active-indicator-color: rgba(0, 0, 0, .42);--mdc-filled-text-field-disabled-active-indicator-color: rgba(0, 0, 0, .06);--mdc-filled-text-field-hover-active-indicator-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-error-active-indicator-color: #f44336;--mdc-filled-text-field-error-focus-active-indicator-color: #f44336;--mdc-filled-text-field-error-hover-active-indicator-color: #f44336;--mdc-outlined-text-field-caret-color: #3f51b5;--mdc-outlined-text-field-focus-outline-color: #3f51b5;--mdc-outlined-text-field-focus-label-text-color: rgba(63, 81, 181, .87);--mdc-outlined-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-error-caret-color: #f44336;--mdc-outlined-text-field-error-focus-label-text-color: #f44336;--mdc-outlined-text-field-error-label-text-color: #f44336;--mdc-outlined-text-field-outline-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-disabled-outline-color: rgba(0, 0, 0, .06);--mdc-outlined-text-field-hover-outline-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-error-focus-outline-color: #f44336;--mdc-outlined-text-field-error-hover-outline-color: #f44336;--mdc-outlined-text-field-error-outline-color: #f44336;--mat-form-field-disabled-input-text-placeholder-color: rgba(0, 0, 0, .38)}.mat-mdc-form-field-error{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-subscript-text-font);line-height:var(--mat-form-field-subscript-text-line-height);font-size:var(--mat-form-field-subscript-text-size);letter-spacing:var(--mat-form-field-subscript-text-tracking);font-weight:var(--mat-form-field-subscript-text-weight)}.mat-mdc-form-field-focus-overlay{background-color:#000000de}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#0000008a}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:#3f51b5de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:#ff4081de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:#f44336de}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#00000061}.mat-mdc-form-field.mat-accent{--mdc-filled-text-field-caret-color: #ff4081;--mdc-filled-text-field-focus-active-indicator-color: #ff4081;--mdc-filled-text-field-focus-label-text-color: rgba(255, 64, 129, .87);--mdc-outlined-text-field-caret-color: #ff4081;--mdc-outlined-text-field-focus-outline-color: #ff4081;--mdc-outlined-text-field-focus-label-text-color: rgba(255, 64, 129, .87)}.mat-mdc-form-field.mat-warn{--mdc-filled-text-field-caret-color: #f44336;--mdc-filled-text-field-focus-active-indicator-color: #f44336;--mdc-filled-text-field-focus-label-text-color: rgba(244, 67, 54, .87);--mdc-outlined-text-field-caret-color: #f44336;--mdc-outlined-text-field-focus-outline-color: #f44336;--mdc-outlined-text-field-focus-label-text-color: rgba(244, 67, 54, .87)}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}html{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(63, 81, 181, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-accent{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(255, 64, 129, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-warn{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(244, 67, 54, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html{--mat-autocomplete-background-color: white}.mat-mdc-dialog-container{--mdc-dialog-container-color: white;--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-standard-chip{--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-elevated-container-color: #e0e0e0;--mdc-chip-elevated-disabled-container-color: #e0e0e0;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #3f51b5;--mdc-chip-elevated-disabled-container-color: #3f51b5;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #ff4081;--mdc-chip-elevated-disabled-container-color: #ff4081;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #f44336;--mdc-chip-elevated-disabled-container-color: #f44336;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-chip.mat-mdc-standard-chip{--mdc-chip-container-height: 32px}.mat-mdc-slide-toggle{--mdc-switch-selected-focus-state-layer-color: #3949ab;--mdc-switch-selected-handle-color: #3949ab;--mdc-switch-selected-hover-state-layer-color: #3949ab;--mdc-switch-selected-pressed-state-layer-color: #3949ab;--mdc-switch-selected-focus-handle-color: #1a237e;--mdc-switch-selected-hover-handle-color: #1a237e;--mdc-switch-selected-pressed-handle-color: #1a237e;--mdc-switch-selected-focus-track-color: #7986cb;--mdc-switch-selected-hover-track-color: #7986cb;--mdc-switch-selected-pressed-track-color: #7986cb;--mdc-switch-selected-track-color: #7986cb;--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-handle-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-switch-handle-shadow-color: black;--mdc-switch-disabled-handle-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-switch-selected-icon-color: #fff;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-handle-color: #616161;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-icon-color: #fff;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#00000061}.mat-mdc-slide-toggle.mat-accent{--mdc-switch-selected-focus-state-layer-color: #d81b60;--mdc-switch-selected-handle-color: #d81b60;--mdc-switch-selected-hover-state-layer-color: #d81b60;--mdc-switch-selected-pressed-state-layer-color: #d81b60;--mdc-switch-selected-focus-handle-color: #880e4f;--mdc-switch-selected-hover-handle-color: #880e4f;--mdc-switch-selected-pressed-handle-color: #880e4f;--mdc-switch-selected-focus-track-color: #f06292;--mdc-switch-selected-hover-track-color: #f06292;--mdc-switch-selected-pressed-track-color: #f06292;--mdc-switch-selected-track-color: #f06292}.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5;--mat-radio-ripple-color: #000;--mat-radio-checked-ripple-color: #3f51b5;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081;--mat-radio-ripple-color: #000;--mat-radio-checked-ripple-color: #ff4081;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336;--mat-radio-ripple-color: #000;--mat-radio-checked-ripple-color: #f44336;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button .mdc-radio{--mdc-radio-state-layer-size: 40px}.mat-mdc-slider{--mdc-slider-label-container-color: black;--mdc-slider-label-label-text-color: white;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-with-tick-marks-disabled-container-color: #000;--mat-mdc-slider-value-indicator-opacity: .6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #3f51b5;--mdc-slider-focus-handle-color: #3f51b5;--mdc-slider-hover-handle-color: #3f51b5;--mdc-slider-active-track-color: #3f51b5;--mdc-slider-inactive-track-color: #3f51b5;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #3f51b5;--mat-mdc-slider-ripple-color: #3f51b5;--mat-mdc-slider-hover-ripple-color: rgba(63, 81, 181, .05);--mat-mdc-slider-focus-ripple-color: rgba(63, 81, 181, .2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color: #ff4081;--mdc-slider-focus-handle-color: #ff4081;--mdc-slider-hover-handle-color: #ff4081;--mdc-slider-active-track-color: #ff4081;--mdc-slider-inactive-track-color: #ff4081;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #ff4081;--mat-mdc-slider-ripple-color: #ff4081;--mat-mdc-slider-hover-ripple-color: rgba(255, 64, 129, .05);--mat-mdc-slider-focus-ripple-color: rgba(255, 64, 129, .2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color: #f44336;--mdc-slider-focus-handle-color: #f44336;--mdc-slider-hover-handle-color: #f44336;--mdc-slider-active-track-color: #f44336;--mdc-slider-inactive-track-color: #f44336;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #f44336;--mat-mdc-slider-ripple-color: #f44336;--mat-mdc-slider-hover-ripple-color: rgba(244, 67, 54, .05);--mat-mdc-slider-focus-ripple-color: rgba(244, 67, 54, .2)}html{--mat-menu-item-label-text-color: rgba(0, 0, 0, .87);--mat-menu-item-icon-color: rgba(0, 0, 0, .87);--mat-menu-item-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-item-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-container-color: white}.mat-mdc-list-base{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mdc-list-item__start,.mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5}.mat-accent .mdc-list-item__start,.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081}.mat-warn .mdc-list-item__start,.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336}.mat-mdc-list-option{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #3f51b5;--mdc-checkbox-selected-hover-state-layer-color: #3f51b5;--mdc-checkbox-selected-pressed-state-layer-color: #3f51b5;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-accent{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #ff4081;--mdc-checkbox-selected-hover-state-layer-color: #ff4081;--mdc-checkbox-selected-pressed-state-layer-color: #ff4081;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-warn{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#3f51b5}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}html{--mat-paginator-container-text-color: rgba(0, 0, 0, .87);--mat-paginator-container-background-color: white;--mat-paginator-enabled-icon-color: rgba(0, 0, 0, .54);--mat-paginator-disabled-icon-color: rgba(0, 0, 0, .12)}html{--mat-paginator-container-size: 56px}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.mat-mdc-tab-group,.mat-mdc-tab-nav-bar{--mdc-tab-indicator-active-indicator-color: #3f51b5;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: #000;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #3f51b5;--mat-tab-header-active-ripple-color: #3f51b5;--mat-tab-header-inactive-ripple-color: #3f51b5;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #3f51b5;--mat-tab-header-active-hover-label-text-color: #3f51b5;--mat-tab-header-active-focus-indicator-color: #3f51b5;--mat-tab-header-active-hover-indicator-color: #3f51b5}.mat-mdc-tab-group.mat-accent,.mat-mdc-tab-nav-bar.mat-accent{--mdc-tab-indicator-active-indicator-color: #ff4081;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: #000;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #ff4081;--mat-tab-header-active-ripple-color: #ff4081;--mat-tab-header-inactive-ripple-color: #ff4081;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #ff4081;--mat-tab-header-active-hover-label-text-color: #ff4081;--mat-tab-header-active-focus-indicator-color: #ff4081;--mat-tab-header-active-hover-indicator-color: #ff4081}.mat-mdc-tab-group.mat-warn,.mat-mdc-tab-nav-bar.mat-warn{--mdc-tab-indicator-active-indicator-color: #f44336;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: #000;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #f44336;--mat-tab-header-active-ripple-color: #f44336;--mat-tab-header-inactive-ripple-color: #f44336;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #f44336;--mat-tab-header-active-hover-label-text-color: #f44336;--mat-tab-header-active-focus-indicator-color: #f44336;--mat-tab-header-active-hover-indicator-color: #f44336}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-tab-header-with-background-background-color: #3f51b5;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-tab-header-with-background-background-color: #ff4081;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-tab-header-with-background-background-color: #f44336;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-header{--mdc-secondary-navigation-tab-container-height: 48px}html{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #ff4081;--mdc-checkbox-selected-hover-state-layer-color: #ff4081;--mdc-checkbox-selected-pressed-state-layer-color: #ff4081;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #3f51b5;--mdc-checkbox-selected-hover-state-layer-color: #3f51b5;--mdc-checkbox-selected-pressed-state-layer-color: #3f51b5;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{color:#00000061}html{--mdc-checkbox-state-layer-size: 40px}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #3f51b5}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #ff4081}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #f44336}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-text-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #fff;--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #3f51b5;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #ff4081;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #f44336;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-button-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #fff;--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #3f51b5;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #ff4081;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #f44336;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation: 0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #3f51b5}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #ff4081}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #f44336}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, .1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, .1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary,.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent,.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mat-mdc-icon-button{--mdc-icon-button-icon-color: inherit;--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #6200ee;--mat-mdc-button-ripple-color: rgba(98, 0, 238, .1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #018786;--mat-mdc-button-ripple-color: rgba(1, 135, 134, .1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #b00020;--mat-mdc-button-ripple-color: rgba(176, 0, 32, .1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #3f51b5;--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, .1)}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #ff4081;--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, .1)}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #f44336;--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(0, 0, 0, .38);--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}.mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size: 48px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:12px}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary,.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent,.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(0, 0, 0, .12);--mdc-fab-icon-color: rgba(0, 0, 0, .38);--mat-mdc-fab-color: rgba(0, 0, 0, .38)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: white;--mdc-fab-icon-color: black;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: #3f51b5;--mdc-fab-icon-color: white;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: #ff4081;--mdc-fab-icon-color: white;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: #f44336;--mdc-fab-icon-color: white;--mat-mdc-fab-color: #fff}.mat-mdc-snack-bar-container{--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87);--mat-snack-bar-button-color: #ff4081}html{--mat-table-background-color: white;--mat-table-header-headline-color: rgba(0, 0, 0, .87);--mat-table-row-item-label-text-color: rgba(0, 0, 0, .87);--mat-table-row-item-outline-color: rgba(0, 0, 0, .12)}html{--mat-table-header-container-height: 56px;--mat-table-footer-container-height: 52px;--mat-table-row-item-container-height: 52px}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: #3f51b5}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: #ff4081}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: #f44336}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;background-color:var(--mat-badge-background-color);color:var(--mat-badge-text-color);font-family:Roboto,sans-serif;font-family:var(--mat-badge-text-font, Roboto, sans-serif);font-size:12px;font-size:var(--mat-badge-text-size, 12px);font-weight:600;font-weight:var(--mat-badge-text-weight, 600)}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-disabled .mat-badge-content{background-color:var(--mat-badge-disabled-state-background-color);color:var(--mat-badge-disabled-state-text-color)}.mat-badge-hidden .mat-badge-content{display:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px;font-size:9px;font-size:var(--mat-badge-small-size-text-size, 9px)}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px;font-size:24px;font-size:var(--mat-badge-large-size-text-size, 24px)}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}html{--mat-badge-background-color: #3f51b5;--mat-badge-text-color: white;--mat-badge-disabled-state-background-color: #b9b9b9;--mat-badge-disabled-state-text-color: rgba(0, 0, 0, .38)}.mat-badge-accent{--mat-badge-background-color: #ff4081;--mat-badge-text-color: white}.mat-badge-warn{--mat-badge-background-color: #f44336;--mat-badge-text-color: white}html{--mat-bottom-sheet-container-text-color: rgba(0, 0, 0, .87);--mat-bottom-sheet-container-background-color: white}html{--mat-legacy-button-toggle-text-color: rgba(0, 0, 0, .38);--mat-legacy-button-toggle-state-layer-color: rgba(0, 0, 0, .12);--mat-legacy-button-toggle-selected-state-text-color: rgba(0, 0, 0, .54);--mat-legacy-button-toggle-selected-state-background-color: #e0e0e0;--mat-legacy-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-legacy-button-toggle-disabled-state-background-color: #eeeeee;--mat-legacy-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-background-color: white;--mat-standard-button-toggle-state-layer-color: black;--mat-standard-button-toggle-selected-state-background-color: #e0e0e0;--mat-standard-button-toggle-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-standard-button-toggle-disabled-state-background-color: white;--mat-standard-button-toggle-disabled-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-divider-color: #e0e0e0}html{--mat-standard-button-toggle-height: 48px}html{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #3f51b5;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(63, 81, 181, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(63, 81, 181, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(63, 81, 181, .3);--mat-datepicker-toggle-active-state-icon-color: #3f51b5;--mat-datepicker-calendar-date-in-range-state-background-color: rgba(63, 81, 181, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e;--mat-datepicker-toggle-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-body-label-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-period-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-navigation-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-header-divider-color: rgba(0, 0, 0, .12);--mat-datepicker-calendar-header-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-date-today-outline-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-today-disabled-state-outline-color: rgba(0, 0, 0, .18);--mat-datepicker-calendar-date-text-color: rgba(0, 0, 0, .87);--mat-datepicker-calendar-date-outline-color: transparent;--mat-datepicker-calendar-date-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-preview-state-outline-color: rgba(0, 0, 0, .24);--mat-datepicker-range-input-separator-color: rgba(0, 0, 0, .87);--mat-datepicker-range-input-disabled-state-separator-color: rgba(0, 0, 0, .38);--mat-datepicker-range-input-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-container-background-color: white;--mat-datepicker-calendar-container-text-color: rgba(0, 0, 0, .87)}.mat-datepicker-content.mat-accent{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #ff4081;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(255, 64, 129, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(255, 64, 129, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(255, 64, 129, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(255, 64, 129, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e}.mat-datepicker-content.mat-warn{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #f44336;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(244, 67, 54, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(244, 67, 54, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e}.mat-datepicker-toggle-active.mat-accent{--mat-datepicker-toggle-active-state-icon-color: #ff4081}.mat-datepicker-toggle-active.mat-warn{--mat-datepicker-toggle-active-state-icon-color: #f44336}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size: 40px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}html{--mat-divider-color: rgba(0, 0, 0, .12)}html{--mat-expansion-container-background-color: white;--mat-expansion-container-text-color: rgba(0, 0, 0, .87);--mat-expansion-actions-divider-color: rgba(0, 0, 0, .12);--mat-expansion-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-expansion-header-text-color: rgba(0, 0, 0, .87);--mat-expansion-header-description-color: rgba(0, 0, 0, .54);--mat-expansion-header-indicator-color: rgba(0, 0, 0, .54)}html{--mat-expansion-header-collapsed-state-height: 48px;--mat-expansion-header-expanded-state-height: 64px}html{--mat-icon-color: inherit}.mat-icon.mat-primary{--mat-icon-color: #3f51b5}.mat-icon.mat-accent{--mat-icon-color: #ff4081}.mat-icon.mat-warn{--mat-icon-color: #f44336}html{--mat-sidenav-container-divider-color: rgba(0, 0, 0, .12);--mat-sidenav-container-background-color: white;--mat-sidenav-container-text-color: rgba(0, 0, 0, .87);--mat-sidenav-content-background-color: #fafafa;--mat-sidenav-content-text-color: rgba(0, 0, 0, .87);--mat-sidenav-scrim-color: rgba(0, 0, 0, .6)}html{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #3f51b5;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #3f51b5;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #3f51b5;--mat-stepper-header-edit-state-icon-foreground-color: white;--mat-stepper-container-color: white;--mat-stepper-line-color: rgba(0, 0, 0, .12);--mat-stepper-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-optional-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-selected-state-label-text-color: rgba(0, 0, 0, .87);--mat-stepper-header-error-state-label-text-color: #f44336;--mat-stepper-header-icon-background-color: rgba(0, 0, 0, .54);--mat-stepper-header-error-state-icon-foreground-color: #f44336;--mat-stepper-header-error-state-icon-background-color: transparent}html .mat-step-header.mat-accent{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #ff4081;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #ff4081;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #ff4081;--mat-stepper-header-edit-state-icon-foreground-color: white}html .mat-step-header.mat-warn{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #f44336;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #f44336;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #f44336;--mat-stepper-header-edit-state-icon-foreground-color: white}html{--mat-stepper-header-height: 72px}.mat-sort-header-arrow{color:#757575}html{--mat-toolbar-container-background-color: whitesmoke;--mat-toolbar-container-text-color: rgba(0, 0, 0, .87)}.mat-toolbar.mat-primary{--mat-toolbar-container-background-color: #3f51b5;--mat-toolbar-container-text-color: white}.mat-toolbar.mat-accent{--mat-toolbar-container-background-color: #ff4081;--mat-toolbar-container-text-color: white}.mat-toolbar.mat-warn{--mat-toolbar-container-background-color: #f44336;--mat-toolbar-container-text-color: white}html{--mat-toolbar-standard-height: 64px;--mat-toolbar-mobile-height: 56px}.mat-tree{background:#fff}.mat-tree-node,.mat-nested-tree-node{color:#000000de}.mat-tree-node{min-height:48px}.errorMsg{position:FIXED;color:#ff273e;font-size:14px;font-family:Source Sans Pro,sans-serif;inset:0;background-color:#fff;text-align:center}.errorMsg .material-icons{position:relative;left:25px;top:calc(51% - 50px)}.errorMsg .errorTxt{padding:10px 10px 10px 30px;text-align:left;width:inherit;display:inline-block;position:relative;line-height:20px;top:calc(50% - 50px)}.sticky_bottom_menu .sticky-bottom-closed{margin-left:3px}.portal-sidnav-menu{overflow-y:auto;scroll-behavior:smooth}.portal-sidnav-menu .portal-sidnav-menu__subheader{margin:12px 0;padding:0 16px;vertical-align:middle;text-transform:uppercase}.portal-sidnav-menu .mat-expansion-panel{box-shadow:none;border-radius:0}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header{height:36px!important;border-bottom:1px solid gainsboro;border-bottom-left-radius:0;border-bottom-right-radius:0;padding:0 10px;border:none!important}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title{margin:0;align-items:center;width:100%}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title .mat-icon{font-size:16px;width:24px;height:24px;line-height:24px;text-align:center;padding:0;flex-shrink:0}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title img.icon.side-menu-icon{width:24px!important}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-description{margin-right:13px}.portal-sidnav-menu .mat-nav-list{padding:0}.portal-sidnav-menu .mat-nav-list .mat-mdc-list-item-icon,.portal-sidnav-menu .mat-nav-list .mat-icon.portal-sidnav-menu__end_detail{font-size:16px;width:24px;height:24px;line-height:24px;text-align:center;padding:0;flex-shrink:0}.portal-sidnav-menu .mat-list-item-focus{background:transparent}.portal-sidnav-menu mat-list mat-expansion-panel mat-expansion-panel-header{padding-left:20px}.portal-sidnav-menu mat-list mat-expansion-panel mat-expansion-panel-header .menu-name-expandable{max-width:170px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block}.portal-sidnav-menu mat-list mat-expansion-panel mat-expansion-panel-header .level-two-badge{top:-10px!important;right:-4px!important}.main-expansion-panel-header{position:relative}.main-chevron-icon{font-size:34px;width:25px;height:34px;color:#41586b;position:absolute;right:10px;bottom:1px}.sub-chevron-icon{left:25px;top:6px;font-size:15px;width:25px;height:15px;color:#41586b;position:relative}.mat-expansion-panel-header:hover{background-color:#fafafa!important}.mat-expansion-panel-header:hover .main-chevron-icon,.mat-expansion-panel-header:hover .sub-chevron-icon{color:#f3aaa2}.header-border{border-top:1px solid gainsboro;border-top-left-radius:0;border-top-right-radius:0}.header-border-none{border:0}.sidemenu-logo-holder{width:150px;text-align:center;margin:0;line-height:1px;max-height:65px;padding:0 10px;display:flex;justify-content:center}.sidemenu-logo-holder img{width:100%}.sidemenu-heading{color:#202b37;font-size:13px;font-family:Source Sans Pro,sans-serif;text-transform:uppercase;font-weight:600;letter-spacing:1.67px;line-height:38px;margin:0!important}.sidemenu-symbol{border-radius:50%;width:18px;height:18px;border:1px solid #ff273e;color:#202b37;text-align:center;font:9px Arial,sans-serif;display:inline-block;font-weight:700;display:flex;justify-content:center;align-items:center;margin-right:10px}.menu-heading{position:relative;margin:0!important;font-weight:500!important;font-size:13.1px;font-family:roboto,sans-serif!important;color:#202b37;white-space:nowrap;text-transform:capitalize;letter-spacing:normal}.logo-dimension{object-fit:cover;max-height:60px}.hamburger-icon{z-index:-1;cursor:pointer;position:fixed;background-color:#fff;border:1px solid #e6eefc;width:20px!important;height:32px;line-height:36px;top:calc(50% - 15px);display:flex;align-items:center;justify-content:center}.left-chevron-icon{color:#7f7f7f}.expanded-hamburger-icon{left:232px}.sidebar-collapse-icon{display:flex;justify-content:flex-end;top:0;z-index:99;background-color:#fff;padding-right:8px}.sidebar-collapse-icon button{width:25px;display:flex;text-align:center;vertical-align:middle;align-items:center;justify-content:center;text-transform:capitalize;border-radius:0;line-height:15px;height:20px;padding:0;min-height:20px;cursor:pointer;color:#1264a3;text-decoration:none;font-size:14px;font-family:Roboto;left:0;top:0;background-color:#fff;border:1px solid #e6eefc}.sidebar-collapse-icon button mat-icon{margin:0}.portal-forgot-logo-text{line-height:1.3;font-family:Dosis,sans-serif;font-style:normal;font-stretch:normal;letter-spacing:4.3px;text-align:left;opacity:1px;color:#41586b;display:inline-block;vertical-align:middle;font-size:25px;font-weight:600}.portal-forgot-card__logo{width:16%}.portal-forget-heading-card{display:flex;justify-content:space-around;align-items:center;flex-direction:row}.div-background-color,.div-background-color-white{background-color:#fff!important}.mat-expansion-panel-content .sub-child-menu .mat-mdc-list-item h3{font-size:14px!important}:host ::ng-deep .mat-expansion-indicator:after{color:#000!important;border-width:0 1px 1px 0;padding:4px}:host ::ng-deep .mat-expansion-indicator:before{color:#000!important}:host ::ng-deep .mat-expansion-panel-body{padding:0!important}:host ::ng-deep .mat-mdc-list-base{padding:0}:host ::ng-deep .mat-mdc-list-base .mat-mdc-list-item,.mat-list-base .mat-list-option{height:40px}:host ::ng-deep .mat-mdc-list-base .mat-mdc-list-item:hover,.mat-list-base .mat-list-option:hover{background-color:#fdeeec;border-right:3px solid #ff273e}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content{padding:0 10px!important}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item{padding:20px!important}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item .mdc-list-item__content h3.font-color-black{color:#1e1f21;font: 400 16px Lato,serif}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-divider.separator{margin-left:0!important;width:calc(100% + 10px)!important}.badge-text.sov-beta-position{position:relative;font-size:10px;color:#ff273e!important;font-family:Lato!important;top:-5px;right:0;letter-spacing:.5px;padding-left:2px}.portal-global-setting-menu{border-top:none!important;margin-bottom:8px}.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel{border-radius:8px;border:1px solid #E5E7E8;padding-left:12px}.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel mat-expansion-panel-header+div[class*=expansion-panel-content] .mat-mdc-list .mat-mdc-list-item:hover,.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel mat-expansion-panel-header+div[class*=expansion-panel-content] .mat-mdc-list .mat-mdc-list-item.active{background-color:#f6f6f6!important}.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel.mat-expanded{border-color:#acb0b4}.portal-global-setting-menu .app-menu-container .app-menu-Link-button{padding:12px 0 12px 12px!important;align-items:center;background:transparent;cursor:pointer!important;width:100%!important;margin:0!important;height:44px!important;border-radius:8px;border:none!important;display:flex!important;justify-content:space-between;font: 400 16px Lato,serif!important;line-height:16px!important}.portal-global-setting-menu .app-menu-container .app-menu-Link-button .app-name label.app-name-label{font-weight:400;cursor:pointer}.navmenu-expanded{align-items:center}.navmenu-expanded .mat-expansion-panel .mat-expansion-panel-header{display:flex!important;justify-content:center;align-items:center}.navmenu-expanded .mat-expansion-panel .mat-expansion-panel-header .mat-content{margin-left:12px}.navmenu-expanded .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title{justify-content:center}.navmenu-expanded .portal-global-setting-menu.sticky_bottom_menu .mat-expansion-panel{border:none!important}.side-menu-icon{width:24px;margin-right:8px}::-webkit-scrollbar{height:8px;width:8px;background:#0000001a;-webkit-transition:all .2s;transition:all .2s}::-webkit-scrollbar-thumb{background:#00000026;border-radius:4px;-webkit-transition:all .2s;transition:all .2s}::-webkit-scrollbar-track{border-radius:30px;background:#ffffffa6}::-webkit-scrollbar-corner{display:none;height:0px;width:0px}::-webkit-scrollbar-thumb:hover{background:#00000073;border-radius:4px;-webkit-transition:all .2s;transition:all .2s}:host ::ng-deep #loader_sov{display:none}:host ::ng-deep #loading_div{width:100%;height:100%;position:fixed;z-index:9999;display:table;background:#f9f9f9}:host ::ng-deep #loading_div>div{display:table-cell;vertical-align:middle;text-align:center}:host ::ng-deep #loading_div>div #loader{vertical-align:middle;width:100%;height:120px;display:block;text-align:center}:host ::ng-deep #loading_div>div #loader img{width:auto;height:140px;display:inline-block;margin:auto}:host ::ng-deep #loading_div>div #loader.site_2{height:130px}:host ::ng-deep #loading_div>div #loader.site_2 img{height:160px}:host ::ng-deep #loading_div>div #loader.site_6{height:138px}:host ::ng-deep #loading_div>div #loader.site_5{height:123px}:host ::ng-deep #loading_div>div #loader.site_5 img{height:110px}:host ::ng-deep #loading_div>div #loader.site_7{height:181px}:host ::ng-deep #loading_div>div #loader.site_7 img{height:204px}:host ::ng-deep #loading_div>div #loader_img{vertical-align:middle;width:100%;height:170px;display:block;text-align:center}:host ::ng-deep #loading_div>div #loader_img img{width:auto;height:150px;display:inline-block;margin:auto}:host ::ng-deep #loading_div>div .loader_progress-bar-position{width:16%;margin:auto}:host ::ng-deep #loading_div>div .loader_progress-bar-position .mat-progress-bar-fill:after{background-color:#ff273e!important}:host ::ng-deep #loading_div>div .loader_progress-bar-position .mat-progress-bar-buffer{background-color:#cdcdd2!important}@media only screen and (max-width: 1425px){:host ::ng-deep #loading_div .loader_progress-bar-position{width:26%!important}}\n"] }]
665
- }], ctorParameters: function () { return [{ type: i1.ApplicationSidebarService }, { type: i2.Router }, { type: i3.RestApiService }, { type: i4.CookieService }, { type: i0.ChangeDetectorRef }, { type: i5.TranslationService }, { type: i6.MixpanelService }]; }, propDecorators: { applicationDetails: [{
1415
+ args: [{ selector: 'lnc-navigation-sidebar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div id=\"loader_sov\">\n <div id=\"loading_div\" *ngIf=\"applicationDetails?.sidebarInfo\">\n <div>\n <div id=\"loader\" *ngIf=\"sideIdInfo !== 1\"\n class=\"site_{{sideIdInfo}}\">\n <img src=\"{{applicationDetails?.sidebarInfo?.logo}}\">\n </div>\n <div id=\"loader_img\" *ngIf=\"sideIdInfo == 1\">\n <img src=\"/assets/images/happy_eyes_closed_small.svg\">\n </div>\n <mat-progress-bar class=\"loader_progress-bar-position\" mode=\"indeterminate\"></mat-progress-bar>\n </div>\n </div>\n</div>\n\n<div fxLayout=\"column\" fxFlexFill *ngIf=\"errorMsg.length == 0 else errorBlock\" translate=\"no\" id=\"angular-16-version\" [ngClass]=\"{'navmenu-expanded' : !navExpanded, 'application-sidebar--revised-nav': isRevisedNavigationEnabled()}\">\n <mat-toolbar class=\"portal-side-menu-top-toolbar\">\n <mat-toolbar-row fxLayout=\"row\">\n <div class=\"revised-section-app-logo portal-forget-heading-card\">\n <div class=\"sidemenu-logo-holder\">\n <span *ngIf=\"sideIdInfo !== 1\">\n <img [src]=\"applicationDetails?.sidebarInfo?.favicon\" style=\"width: 40px !important;display: flex !important;\" *ngIf=\"!navExpanded\" [alt]=\"applicationDetails?.sidebarInfo?.firstName\" class=\"favicon-dimension\" />\n <img [src]=\"applicationDetails?.sidebarInfo?.logo\" style=\"display: flex !important;\" *ngIf=\"navExpanded\" class=\"logo-dimension\" />\n </span>\n <span *ngIf=\"sideIdInfo == 1\">\n <img src=\"assets/logos/intentwiselogo.svg\" style=\"width: 40px !important;display: flex !important;\" *ngIf=\"!navExpanded\" [alt]=\"applicationDetails?.sidebarInfo?.firstName\" class=\"favicon-dimension intentwise-favicon\">\n <img src=\"assets/logos/Intentwise.svg\" style=\"display: flex !important;\" *ngIf=\"navExpanded\" [alt]=\"applicationDetails?.sidebarInfo?.firstName\" class=\"logo-dimension intentwise-logo\">\n </span>\n </div>\n </div>\n </mat-toolbar-row>\n </mat-toolbar>\n <!-- <div class=\"sidebar-collapse-icon\" *ngIf=\"isAdminRole\">\n <button mat-menu-item class=\"sidemenu-icon-top\" (click)=\"allMenuCollapse()\">\n <mat-icon *ngIf=\"sidenav && sidenav.opened\">keyboard_arrow_up</mat-icon>\n </button>\n </div> -->\n <div *ngIf=\"sidenav && sidenav.opened && !inContextInsightsWLApp && isLegacyNavigationEnabled()\" class=\"app-menu-container\">\n <button class=\"app-menu-button selected-app-button\" *ngIf=\"toDisplayApplications && toDisplayApplications.length == 1\">\n <span class=\"app-name selected-app-container\">\n <!-- <mat-icon *ngIf=\"currentApp?.name\" class=\"sideNavIcon {{currentApp?.name.split(' ').join('')}}\"></mat-icon> -->\n <img *ngIf=\"currentApp?.name\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(currentApp.icon || 'default-icon.svg')\"/>\n <label style=\"margin-left: -4px;\" [innerHTML]=\"selectedApplication(currentApp)\"></label>\n <span *ngIf=\"currentApp?.badge\" class=\"badge-text sov-beta-position\">{{currentApp.badge}}</span>\n </span>\n </button>\n <button class=\"app-menu-button selected-app-button\" [mat-menu-trigger-for]=\"appMenu\" *ngIf=\"toDisplayApplications && toDisplayApplications.length > 1\">\n <span class=\"app-name selected-app-container\">\n <!-- <mat-icon *ngIf=\"currentApp?.name\" class=\"sideNavIcon {{currentApp?.name.split(' ').join('')}}\"></mat-icon> -->\n <img *ngIf=\"currentApp?.name\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(currentApp.icon || 'default-icon.svg')\"/>\n <label style=\"margin-left: -4px;\" [innerHTML]=\"selectedApplication(currentApp)\"></label>\n <span *ngIf=\"currentApp?.badge\" class=\"badge-text sov-beta-position\">{{currentApp.badge}}</span>\n </span>\n <span class=\"dropdown-icon\"></span>\n </button>\n <mat-menu #appMenu=\"matMenu\" class=\"app-menu\" [backdropClass]=\"'all-module-menus'\">\n <ng-container *ngFor=\"let headmenu of toDisplayApplications\">\n <button class=\"menu-option\" mat-menu-item (click)=\"goToApplication(headmenu)\" [ngClass]=\"{'active': headmenu.panelOpenState}\" class=\"{{headmenu.id}}_icon\" *ngIf=\"headmenu.name != 'Account Management'\" translate=\"no\">\n <!-- <mat-icon class=\"sideNavIcon children-icon\" [ngClass]=\"headmenu.name.split(' ').join('')\"></mat-icon> -->\n <img class=\"icon children-icon side-menu-icon\" [src]=\"getIconUrl(headmenu.icon || 'default-icon.svg')\"/>\n <label [innerHTML]=\"selectedApplication(headmenu)\"></label>\n <span *ngIf=\"headmenu.badge\" class=\"badge-text sov-beta-position\" [innerHTML]=\"headmenu.badge\"></span>\n </button>\n </ng-container>\n </mat-menu>\n </div>\n <div class=\"portal-sidnav-menu\" fxFlex=\"nogrow noshrink\" appScrollable [ngClass]=\"{'whiteLabelSidenav' : inContextInsightsWLApp}\">\n <ng-container *ngIf=\"isRevisedNavigationEnabled(); else legacyNavigationTemplate\">\n <!--\n Revised nav maps to sidebar layout JSON (`sections[]`):\n - type `app-tabs` \u2192 Optimize: tab strip + `revisedGroupMenuItemShell` per menu row (same expand/leaf/active pattern as INTELLIGENCE).\n - type `grouped-menus` \u2192 `groups[]`: each group uses `items[]` of `{ menuId, title? }` (ids from `navmenu1`).\n Leaf vs expandable comes from nav data. Single- and multi-item groups share `revisedGroupMenuItemShell` (same layout as Product 360 / Foundation). Untitled flat groups still use `revisedGroupedMenuRows` + inner mat-list for deep nesting.\n Add more sections in JSON \u2014 they render here in order. Bottom sticky block is unchanged below.\n -->\n <!-- SVG chevrons (not mat-icon ligatures) so expand arrows work even when Material Icons font fails to load -->\n <ng-template #revisedChevronSvg let-expanded=\"expanded\">\n <svg *ngIf=\"!expanded\" class=\"revised-chevron-svg\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\">\n <path fill=\"currentColor\" d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"/>\n </svg>\n <svg *ngIf=\"expanded\" class=\"revised-chevron-svg\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\">\n <path fill=\"currentColor\" d=\"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z\"/>\n </svg>\n </ng-template>\n\n <ng-template #revisedMatPanelChevrons let-expanded=\"expanded\" let-iconClass=\"iconClass\">\n <mat-panel-description class=\"children-description revised-nav-expansion-chevron\" *ngIf=\"navExpanded\">\n <span [ngClass]=\"iconClass || 'sub-chevron-icon revised-nav-chevron'\" class=\"revised-chevron-icon-wrap\">\n <ng-container *ngTemplateOutlet=\"revisedChevronSvg; context: { expanded: expanded }\"></ng-container>\n </span>\n </mat-panel-description>\n </ng-template>\n\n <!-- One resolved menu: grouped-menus (Foundation / INTELLIGENCE) or app-tabs OPTIMIZE when `optimizeParentApp` is set. No inner mat-list. -->\n <ng-template #revisedGroupMenuItemShell let-menu=\"menu\" let-optimizeParentApp=\"optimizeParentApp\">\n <mat-expansion-panel *ngIf=\"menu.children?.length\" class=\"div-background-color-white revised-group__single-expandable\" [expanded]=\"isChildMenuPanelExpanded(menu)\"\n [disabled]=\"true\"\n [ngClass]=\"{'activePanel': isChildMenuPanelHighlighted(menu) , 'whiteLabelActive' : inContextInsightsWLApp}\" hideToggle=\"true\"\n (opened)=\"onChildMenuPanelOpened(menu)\" (closed)=\"onChildMenuPanelClosed(menu)\">\n <mat-expansion-panel-header class=\"revised-group__header revised-group__header--as-panel\" (click)=\"onChildMenuPanelHeaderClick(menu)\">\n <mat-panel-title>\n <span class=\"revised-group__title menu-heading applicationSubmenus\" [innerHTML]=\"selectedApplication(menu)\"></span>\n <span *ngIf=\"menu.badge\" class=\"badge-text sov-beta-position level-two-badge\" [innerHTML]=\"menu.badge\"></span>\n </mat-panel-title>\n <ng-container *ngTemplateOutlet=\"revisedMatPanelChevrons; context: { expanded: isChildMenuPanelExpanded(menu), iconClass: 'revised-group__chevron revised-nav-expansion-chevron revised-nav-chevron' }\"></ng-container>\n </mat-expansion-panel-header>\n <div class=\"revised-group__content\">\n <mat-nav-list class=\"sub-child-menu\">\n <lnc-nav-menus *ngFor=\"let childMenu of menu.children\" appOffsetTop\n [isActiveItem]=\"isRevisedMenuActive(childMenu)\" [item]=\"childMenu\"\n [applicationId]=\"applicationDetails.applicationId\"\n [parentMenuId]=\"optimizeParentApp ? optimizeParentApp.id : getRevisedParentMenuId(childMenu, menu.ownerAppId)\"\n [parentPanelId]=\"menu.id\" (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </div>\n </mat-expansion-panel>\n <mat-nav-list *ngIf=\"!menu.children?.length\" class=\"revised-group__single-link\">\n <lnc-nav-menus appOffsetTop\n [isActiveItem]=\"isRevisedMenuActive(menu)\" [item]=\"menu\"\n [applicationId]=\"applicationDetails.applicationId\"\n [parentMenuId]=\"optimizeParentApp ? optimizeParentApp.id : getRevisedParentMenuId(menu)\"\n [parentPanelId]=\"getRevisedShellLeafParentPanelId(menu, optimizeParentApp)\" (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </ng-template>\n\n <!-- Grouped-menus rows: leaf | mat-expansion (depth 0) | nested mat-expansion (depth 1). Max 2 expansion levels here; deeper leaves use lnc-nav-menus. -->\n <ng-template #revisedGroupedMenuRows let-group=\"group\">\n <ng-container *ngFor=\"let menu of group.items\">\n <ng-container *ngTemplateOutlet=\"revisedGroupedMenuEntry; context: { menu: menu, nestingDepth: 0 }\"></ng-container>\n </ng-container>\n </ng-template>\n\n <ng-template #revisedGroupedMenuEntry let-menu=\"menu\" let-nestingDepth=\"nestingDepth\">\n <mat-nav-list *ngIf=\"!menu.children?.length\" class=\"revised-group-menu-leaf\">\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isRevisedMenuActive(menu)\" [item]=\"menu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"getRevisedParentMenuId(menu)\"\n [parentPanelId]=\"getRevisedParentPanelId(menu)\" (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n\n <mat-expansion-panel *ngIf=\"menu.children?.length\" class=\"div-background-color-white\"\n [class.revised-group-menu-panel--nested]=\"nestingDepth > 0\"\n [expanded]=\"isChildMenuPanelExpanded(menu)\"\n [disabled]=\"true\"\n [ngClass]=\"{'activePanel': isChildMenuPanelHighlighted(menu) , 'whiteLabelActive' : inContextInsightsWLApp}\" hideToggle=\"true\"\n (opened)=\"onChildMenuPanelOpened(menu)\" (closed)=\"onChildMenuPanelClosed(menu)\">\n <mat-expansion-panel-header (click)=\"onChildMenuPanelHeaderClick(menu)\" [ngClass]=\"{'header-border': isChildMenuPanelExpanded(menu), 'header-border-none': !isChildMenuPanelExpanded(menu) }\">\n <mat-panel-title>\n <h3 class=\"menu-heading applicationSubmenus\"><span class=\"menu-name-expandable\" [innerHTML]=\"selectedApplication(menu)\"></span>\n <span *ngIf=\"menu.badge\" class=\"badge-text sov-beta-position level-two-badge\" [innerHTML]=\"menu.badge\"></span>\n </h3>\n </mat-panel-title>\n <ng-container *ngTemplateOutlet=\"revisedMatPanelChevrons; context: { expanded: isChildMenuPanelExpanded(menu) }\"></ng-container>\n </mat-expansion-panel-header>\n <div class=\"revised-group-menu-children\">\n <ng-container *ngFor=\"let child of menu.children\">\n <ng-container *ngIf=\"child.children?.length && (nestingDepth ?? 0) < 2\">\n <ng-container *ngTemplateOutlet=\"revisedGroupedMenuEntry; context: { menu: child, nestingDepth: (nestingDepth ?? 0) + 1 }\"></ng-container>\n </ng-container>\n <mat-nav-list *ngIf=\"!child.children?.length || (nestingDepth ?? 0) >= 2\" class=\"sub-child-menu\">\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isRevisedMenuActive(child)\" [item]=\"child\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"getRevisedParentMenuId(child, menu.ownerAppId)\"\n [parentPanelId]=\"menu.id\" (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </ng-container>\n </div>\n </mat-expansion-panel>\n </ng-template>\n\n <!-- Same section class as legacy so .portal-sidnav-menu .mat-expansion-panel .mat-mdc-list a[mat-list-item].active applies -->\n <div class=\"revised-nav\" translate=\"no\">\n <div class=\"revised-section mat-expansion-panel\" *ngFor=\"let section of revisedSections; trackBy: trackByRevisedSection\" [attr.id]=\"section.id + 'menu'\" [attr.data-section-type]=\"section.type\"\n [ngClass]=\"{'active': isRevisedSectionActive(section)}\">\n <button class=\"revised-section__header main-expansion-panel-header\" type=\"button\" (click)=\"onRevisedSectionHeaderClick(section.id)\"\n [matTooltip]=\"navExpanded ? null : section.title\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\">\n <span class=\"revised-section__header-main\">\n <span class=\"revised-section__header-icon-box\">\n <span class=\"revised-section__header-icon icon side-menu-icon side-menu-icon-color\" [innerHTML]=\"getRevisedSectionIcon(section)\"></span>\n <span class=\"revised-section__collapsed-active-dot\" *ngIf=\"!navExpanded && isRevisedSectionActive(section)\" aria-hidden=\"true\"></span>\n </span>\n <span class=\"revised-section__title sidemenu-heading applicationMenu\" *ngIf=\"navExpanded\">{{ section.title }}</span>\n </span>\n <span class=\"headmenu-description\" *ngIf=\"navExpanded\">\n <span class=\"main-chevron-icon revised-nav-chevron revised-chevron-icon-wrap\">\n <ng-container *ngTemplateOutlet=\"revisedChevronSvg; context: { expanded: isRevisedSectionExpanded(section.id) }\"></ng-container>\n </span>\n </span>\n </button>\n <div *ngIf=\"navExpanded && isRevisedSectionExpanded(section.id)\"\n class=\"revised-section__content revised-section__content--visible padding-0px\"\n [ngClass]=\"{\n 'revised-section__content--grouped': section.type === 'grouped-menus'\n }\"\n [attr.id]=\"section.id\">\n <ng-container [ngSwitch]=\"section.type\">\n\n <!-- JSON: { type: \"app-tabs\", appIds, defaultAppId } -->\n <ng-container *ngSwitchCase=\"'app-tabs'\">\n <div class=\"revised-optimize-tabs\" *ngIf=\"getRevisedSectionApps(section).length > 0\">\n <button type=\"button\" class=\"revised-optimize-tab\" *ngFor=\"let app of getRevisedSectionApps(section); trackBy: trackByRevisedMenu\"\n [ngClass]=\"{'active': isSelectedRevisedSectionApp(section, app)}\"\n [matTooltip]=\"getRevisedOptimizeAppTabTooltip(app)\" matTooltipPosition=\"below\"\n [matTooltipClass]=\"['left-nav-tooltip', 'revised-optimize-app-tab-tooltip']\"\n (click)=\"selectRevisedSectionApp(section, app)\">\n <span class=\"revised-optimize-tab__badge\" *ngIf=\"getRevisedSectionTabBadgeCount(app) !== null\">\n {{ getRevisedSectionTabBadgeCount(app) }}\n </span>\n <span class=\"revised-optimize-tab__icon\">\n <img class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(app.icon || 'default-icon.svg')\" [alt]=\"selectedApplication(app)\" />\n </span>\n </button>\n </div>\n <div class=\"revised-optimize-menus\" *ngIf=\"getRevisedSectionSelectedApp(section) as selectedApp\">\n <div class=\"revised-optimize-app-title menu-heading applicationSubmenus\" [innerHTML]=\"selectedApplication(selectedApp)\"></div>\n <div class=\"revised-group__multi-stack revised-optimize-menu-stack\" [attr.id]=\"section.id + '_' + selectedApp.id\" [ngClass]=\"{'group-nav-menu': hasExpandableMenusInSection(section) }\">\n <ng-container *ngFor=\"let menu of getRevisedSectionMenus(section); trackBy: trackByRevisedMenu\">\n <ng-container *ngTemplateOutlet=\"revisedGroupMenuItemShell; context: { menu: menu, optimizeParentApp: selectedApp }\"></ng-container>\n </ng-container>\n </div>\n </div>\n </ng-container>\n\n <!-- JSON: { type: \"grouped-menus\", groups: [ ... ] } -->\n <ng-container *ngSwitchCase=\"'grouped-menus'\">\n <ng-container *ngFor=\"let group of getRevisedGroupedSectionGroups(section); trackBy: trackByRevisedGroup\">\n\n <div *ngIf=\"isRevisedUntitledGroup(group)\" class=\"revised-group revised-group--flat\">\n <mat-list class=\"padding-0px revised-group__list\" [attr.id]=\"section.id + '_' + group.id\" [ngClass]=\"{'group-nav-menu': hasExpandableMenusInGroup(group) }\">\n <ng-container *ngTemplateOutlet=\"revisedGroupedMenuRows; context: { group: group }\"></ng-container>\n </mat-list>\n </div>\n\n <div *ngIf=\"isRevisedSingleItemGroup(group)\" class=\"revised-group revised-group--single\">\n <ng-container *ngFor=\"let menu of group.items; trackBy: trackByRevisedMenu\">\n <ng-container *ngTemplateOutlet=\"revisedGroupMenuItemShell; context: { menu: menu }\"></ng-container>\n </ng-container>\n </div>\n\n <div *ngIf=\"isRevisedMultiItemGroup(group)\" class=\"revised-group revised-group--multi\">\n <mat-expansion-panel class=\"div-background-color-white revised-group__multi-panel\"\n [expanded]=\"isRevisedGroupExpanded(section.id, group.id)\"\n hideToggle=\"true\"\n (opened)=\"onRevisedGroupPanelOpened(section.id, group.id)\"\n (closed)=\"onRevisedGroupPanelClosed(section.id, group.id)\">\n <mat-expansion-panel-header class=\"revised-group__header revised-group__header--as-panel\"\n [matTooltip]=\"navExpanded ? null : group.title\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\">\n <mat-panel-title>\n <span class=\"revised-group__title menu-heading applicationSubmenus\" *ngIf=\"navExpanded\">{{ group.title }}</span>\n </mat-panel-title>\n <ng-container *ngTemplateOutlet=\"revisedMatPanelChevrons; context: { expanded: isRevisedGroupExpanded(section.id, group.id), iconClass: 'revised-group__chevron revised-nav-expansion-chevron revised-nav-chevron' }\"></ng-container>\n </mat-expansion-panel-header>\n <!-- Per-item DOM matches revised-group--single (no inner mat-list) so global sidebar theme does not apply muted .mat-list .applicationSubmenus to Commerce-style rows. -->\n <div class=\"revised-group__panel-body\" *ngIf=\"navExpanded\">\n <div class=\"revised-group__multi-stack\" [attr.id]=\"section.id + '_' + group.id\" [ngClass]=\"{'group-nav-menu': hasExpandableMenusInGroup(group) }\">\n <ng-container *ngFor=\"let menu of group.items; trackBy: trackByRevisedMenu\">\n <ng-container *ngTemplateOutlet=\"revisedGroupMenuItemShell; context: { menu: menu }\"></ng-container>\n </ng-container>\n </div>\n </div>\n </mat-expansion-panel>\n </div>\n\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n <ng-template #legacyNavigationTemplate>\n <mat-expansion-panel [expanded]=\"headmenu.panelOpenState == true\" hideToggle=\"true\"\n *ngFor=\"let headmenu of toDisplayApplications\" [ngClass]=\"{'active': currentApp.id === headmenu.id }\"\n (opened)=\"headmenu.panelOpenState = true\" (closed)=\"headmenu.panelOpenState = false\">\n <mat-expansion-panel-header matTooltip=\"{{getTooltipInfo(headmenu)}}\" matTooltipClass=\"left-nav-tooltip\" matTooltipPosition=\"right\"\n *ngIf=\"headmenu.type == 'expandable' else singleMenus\" class=\"main-expansion-panel-header\"\n (click)=\"goToApplication(headmenu)\">\n <mat-panel-title>\n <img class=\"icon side-menu-icon side-menu-icon-color\" [src]=\"getIconUrl(headmenu.icon || 'default-icon.svg')\"/>\n <h3 class=\"sidemenu-heading applicationMenu\">\n <label [innerHTML]=\"selectedApplication(headmenu)\"></label>\n <span *ngIf=\"headmenu.badge\" class=\"badge-text sov-beta-position\" [innerHTML]=\"headmenu.badge\"></span>\n </h3>\n </mat-panel-title>\n <mat-panel-description class=\"headmenu-description\" *ngIf=\"navExpanded\">\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"!headmenu.panelOpenState\">arrow_right</mat-icon>\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"headmenu.panelOpenState\">arrow_drop_down</mat-icon>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <mat-list class=\"padding-0px\" *ngFor=\"let menu of headmenu.children\" [attr.id]=\"headmenu.id\" [ngClass]=\"{'group-nav-menu': menu.children }\">\n <mat-expansion-panel *ngIf=\"menu.children else listMenu\" class=\"div-background-color-white\" [expanded]=\"isChildMenuPanelExpanded(menu)\"\n [ngClass]=\"{'activePanel': isChildMenuPanelHighlighted(menu) , 'whiteLabelActive' : inContextInsightsWLApp}\" hideToggle=\"true\"\n (opened)=\"menu.panelOpenState = true\" (closed)=\"menu.panelOpenState = false\">\n <mat-expansion-panel-header\n [ngClass]=\"{'header-border': isChildMenuPanelExpanded(menu), 'header-border-none': !isChildMenuPanelExpanded(menu) }\">\n <mat-panel-title>\n <img style=\"margin-right: 10px\" *ngIf=\"(menu.icon && menu.icon != '') else displayInitials\"\n class=\"icon side-menu-icon side-menu-icon-color\" [src]=\"getIconUrl(menu.icon)\" />\n <ng-template #displayInitials>\n <div class=\"sidemenu-symbol\">\n {{menu.symbol}}\n </div>\n </ng-template>\n <h3 class=\"menu-heading applicationSubmenus\"><span class=\"menu-name-expandable\" [innerHTML]=\"selectedApplication(menu)\"></span>\n <span *ngIf=\"menu.badge\" class=\"badge-text sov-beta-position level-two-badge\"\n [innerHTML]=\"menu.badge\"></span>\n </h3>\n </mat-panel-title>\n <mat-panel-description class=\"children-description\" *ngIf=\"navExpanded\">\n <mat-icon class=\"sub-chevron-icon\" *ngIf=\"!isChildMenuPanelExpanded(menu)\">arrow_right</mat-icon>\n <mat-icon class=\"sub-chevron-icon\" *ngIf=\"isChildMenuPanelExpanded(menu)\">arrow_drop_down</mat-icon>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <!-- <mat-divider></mat-divider> -->\n <mat-nav-list *ngFor=\"let childMenu of menu.children;\" class=\"sub-child-menu\">\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isCheckActiveRoute(childMenu,headmenu,menu)\" [item]=\"childMenu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"headmenu.id\" [parentPanelId]=\"menu.id\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </mat-expansion-panel>\n <ng-template #listMenu>\n <mat-nav-list>\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isCheckActiveRoute(menu,headmenu)\" [item]=\"menu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"headmenu.id\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </ng-template>\n </mat-list>\n <ng-template #singleMenus>\n <mat-list>\n <lnc-nav-menus id=\"{{headmenu.id}}\" appOffsetTop [isActiveItem]=\"isCheckActiveRoute(headmenu,headmenu)\"\n [item]=\"headmenu\" [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"headmenu.id\"\n matTooltip=\"{{getTooltipInfo(headmenu)}}\" matTooltipClass=\"left-nav-tooltip\" matTooltipPosition=\"right\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-list>\n </ng-template>\n </mat-expansion-panel>\n </ng-template>\n </div>\n <div class=\"portal-global-setting-menu sticky_bottom_menu\" *ngIf=\"!inContextInsightsWLApp\">\n <div *ngIf=\"!inContextInsightsWLApp\" class=\"app-menu-container\">\n <button class=\"app-menu-Link-button\" *ngIf=\"toDisplayLinkMenu && toDisplayLinkMenu.length > 0\">\n <div *ngFor=\"let menuLink of toDisplayLinkMenu\" id=\"{{menuLink.id + 'menu'}}\" [style.margin-left]=\"sidenav && sidenav.opened ? '0px' : '5px'\">\n <span class=\"app-name\" (click)=\"goToMenuLink(menuLink)\">\n <div *ngIf=\"sidenav && sidenav.opened\" style=\"display: flex; align-items: center;gap: 5px;\">\n <img *ngIf=\"menuLink?.name\" matTooltip=\"{{getTooltipInfo(menuLink)}}\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(menuLink.icon || 'default-icon.svg')\"/>\n <label *ngIf=\"showTitle\" class=\"app-name-label\" [innerHTML]=\"selectedApplication(menuLink)\"></label>\n <span *ngIf=\"menuLink?.badge\" class=\"badge-text sov-beta-position\">{{menuLink.badge}}</span>\n </div>\n <div *ngIf=\"sidenav && !sidenav.opened\">\n <img *ngIf=\"menuLink?.name\" matTooltip=\"{{getTooltipInfo(menuLink)}}\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(menuLink.icon || 'default-icon.svg')\"/>\n <span *ngIf=\"menuLink?.badge\" class=\"badge-text sov-beta-position\">{{menuLink.badge}}</span>\n </div>\n </span>\n </div>\n </button>\n </div>\n <mat-expansion-panel [expanded]=\"settingsHeadMenu.panelOpenState == true || expandGlobalSettings\" hideToggle=\"true\" id=\"{{settingsHeadMenu.id + 'menu'}}\"\n *ngFor=\"let settingsHeadMenu of toDisplayGlobalSettingsMenu\" [ngClass]=\"{'active': settingsHeadMenu.isActive }\"\n (opened)=\"sidenav.open(); settingsHeadMenu.panelOpenState = true\" (closed)=\"settingsHeadMenu.panelOpenState = false; expandGlobalSettings = false\" [style.border]=\"sidenav && sidenav.opened ? '' : 'none !important'\">\n <mat-expansion-panel-header matTooltip=\"{{getTooltipInfo(settingsHeadMenu)}}\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\"\n *ngIf=\"settingsHeadMenu.type == 'expandable' else singleMenus\" class=\"main-expansion-panel-header\"\n [ngClass]=\"sidenav && sidenav.opened ? '' : 'sticky-bottom-closed'\">\n <mat-panel-title style=\"gap: 5px;\">\n <img class=\"icon side-menu-icon side-menu-icon-color\" [src]=\"getIconUrl(settingsHeadMenu.icon || 'settings-icon.svg')\" />\n <h3 class=\"sidemenu-heading applicationMenu\">\n <label [innerHTML]=\"selectedApplication(settingsHeadMenu)\"></label>\n <span *ngIf=\"settingsHeadMenu.badge\" class=\"badge-text sov-beta-position\"\n [innerHTML]=\"settingsHeadMenu.badge\"></span>\n </h3>\n </mat-panel-title>\n <mat-panel-description class=\"setting-description\" *ngIf=\"navExpanded\">\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"!settingsHeadMenu.panelOpenState\">arrow_right</mat-icon>\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"settingsHeadMenu.panelOpenState\">arrow_drop_down</mat-icon>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <mat-list class=\"padding-0px\" *ngFor=\"let menu of settingsHeadMenu.children\" [attr.id]=\"settingsHeadMenu.id\"\n [ngClass]=\"{'group-nav-menu': menu.children }\">\n <mat-nav-list>\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isCheckActiveRoute(menu,settingsHeadMenu)\" [item]=\"menu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"settingsHeadMenu.id\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </mat-list>\n <ng-template #singleMenus>\n <mat-list>\n <lnc-nav-menus [attr.id]=\"settingsHeadMenu.id\" appOffsetTop\n [isActiveItem]=\"isCheckActiveRoute(settingsHeadMenu,settingsHeadMenu)\" [item]=\"settingsHeadMenu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"settingsHeadMenu.id\"\n matTooltip=\"{{getTooltipInfo(settingsHeadMenu)}}\" matTooltipClass=\"left-nav-tooltip\" matTooltipPosition=\"right\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-list>\n </ng-template>\n </mat-expansion-panel>\n\n </div>\n</div>\n<ng-template #errorBlock>\n <div class=\"errorMsg\">\n <span class=\"material-icons\">error</span>\n <span class=\"errorTxt\">{{errorMsg}}</span>\n </div>\n</ng-template>\n\n<a class=\"hamburger-icon expanded-hamburger-icon\" title=\"Toggle Menu\" (click)=\"sidenav.close();allMenuCollapse(); \">\n <mat-icon class=\"left-chevron-icon\">keyboard_arrow_left</mat-icon>\n</a>\n\n<!-- <img *ngIf=\"showMenuIcon()\" class=\"favicon-dimension\" src={{applicationDetails.sidebarInfo.favicon}} alt=\"Intentwise Favicon\" />\n <a *ngIf=\"showMenuIcon()\" title=\"Toggle Menu\" class=\"hamburger-icon collapsed-hamburger\"\n (click)=\"sidenav.open()\">\n <mat-icon class=\"right-chevron-icon\">keyboard_arrow_right</mat-icon>\n </a> -->\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";@import\"https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600\";.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-ripple-element{background-color:#0000001a}html{--mat-option-selected-state-label-text-color: #3f51b5;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}.mat-accent{--mat-option-selected-state-label-text-color: #ff4081}.mat-warn{--mat-option-selected-state-label-text-color: #f44336}html{--mat-optgroup-label-text-color: rgba(0, 0, 0, .87)}.mat-pseudo-checkbox-full{color:#0000008a}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#3f51b5}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#3f51b5}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff4081}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff4081}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff4081}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff4081}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#f44336}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#f44336}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#b0b0b0}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:#000000de}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}.mat-mdc-card{--mdc-elevated-card-container-color: white;--mdc-elevated-card-container-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-outlined-card-container-color: white;--mdc-outlined-card-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-card-container-elevation: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-card-subtitle-text-color: rgba(0, 0, 0, .54)}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #3f51b5;--mdc-linear-progress-track-color: rgba(63, 81, 181, .25)}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:#3f51b540;background-color:var(--mdc-linear-progress-track-color, rgba(63, 81, 181, .25))}@media (forced-colors: active){.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:transparent;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(63, 81, 181, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:#3f51b540;background-color:var(--mdc-linear-progress-track-color, rgba(63, 81, 181, .25))}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #ff4081;--mdc-linear-progress-track-color: rgba(255, 64, 129, .25)}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:#ff408140;background-color:var(--mdc-linear-progress-track-color, rgba(255, 64, 129, .25))}@media (forced-colors: active){.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:transparent;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 64, 129, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:#ff408140;background-color:var(--mdc-linear-progress-track-color, rgba(255, 64, 129, .25))}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #f44336;--mdc-linear-progress-track-color: rgba(244, 67, 54, .25)}@keyframes mdc-linear-progress-buffering{}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:#f4433640;background-color:var(--mdc-linear-progress-track-color, rgba(244, 67, 54, .25))}@media (forced-colors: active){.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:transparent;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(244, 67, 54, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:#f4433640;background-color:var(--mdc-linear-progress-track-color, rgba(244, 67, 54, .25))}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: #fff}html{--mdc-filled-text-field-caret-color: #3f51b5;--mdc-filled-text-field-focus-active-indicator-color: #3f51b5;--mdc-filled-text-field-focus-label-text-color: rgba(63, 81, 181, .87);--mdc-filled-text-field-container-color: whitesmoke;--mdc-filled-text-field-disabled-container-color: #fafafa;--mdc-filled-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-error-focus-label-text-color: #f44336;--mdc-filled-text-field-error-label-text-color: #f44336;--mdc-filled-text-field-error-caret-color: #f44336;--mdc-filled-text-field-active-indicator-color: rgba(0, 0, 0, .42);--mdc-filled-text-field-disabled-active-indicator-color: rgba(0, 0, 0, .06);--mdc-filled-text-field-hover-active-indicator-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-error-active-indicator-color: #f44336;--mdc-filled-text-field-error-focus-active-indicator-color: #f44336;--mdc-filled-text-field-error-hover-active-indicator-color: #f44336;--mdc-outlined-text-field-caret-color: #3f51b5;--mdc-outlined-text-field-focus-outline-color: #3f51b5;--mdc-outlined-text-field-focus-label-text-color: rgba(63, 81, 181, .87);--mdc-outlined-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-error-caret-color: #f44336;--mdc-outlined-text-field-error-focus-label-text-color: #f44336;--mdc-outlined-text-field-error-label-text-color: #f44336;--mdc-outlined-text-field-outline-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-disabled-outline-color: rgba(0, 0, 0, .06);--mdc-outlined-text-field-hover-outline-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-error-focus-outline-color: #f44336;--mdc-outlined-text-field-error-hover-outline-color: #f44336;--mdc-outlined-text-field-error-outline-color: #f44336;--mat-form-field-disabled-input-text-placeholder-color: rgba(0, 0, 0, .38)}.mat-mdc-form-field-error{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-subscript-text-font);line-height:var(--mat-form-field-subscript-text-line-height);font-size:var(--mat-form-field-subscript-text-size);letter-spacing:var(--mat-form-field-subscript-text-tracking);font-weight:var(--mat-form-field-subscript-text-weight)}.mat-mdc-form-field-focus-overlay{background-color:#000000de}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#0000008a}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:#3f51b5de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:#ff4081de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:#f44336de}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#00000061}.mat-mdc-form-field.mat-accent{--mdc-filled-text-field-caret-color: #ff4081;--mdc-filled-text-field-focus-active-indicator-color: #ff4081;--mdc-filled-text-field-focus-label-text-color: rgba(255, 64, 129, .87);--mdc-outlined-text-field-caret-color: #ff4081;--mdc-outlined-text-field-focus-outline-color: #ff4081;--mdc-outlined-text-field-focus-label-text-color: rgba(255, 64, 129, .87)}.mat-mdc-form-field.mat-warn{--mdc-filled-text-field-caret-color: #f44336;--mdc-filled-text-field-focus-active-indicator-color: #f44336;--mdc-filled-text-field-focus-label-text-color: rgba(244, 67, 54, .87);--mdc-outlined-text-field-caret-color: #f44336;--mdc-outlined-text-field-focus-outline-color: #f44336;--mdc-outlined-text-field-focus-label-text-color: rgba(244, 67, 54, .87)}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}html{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(63, 81, 181, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-accent{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(255, 64, 129, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-warn{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(244, 67, 54, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html{--mat-autocomplete-background-color: white}.mat-mdc-dialog-container{--mdc-dialog-container-color: white;--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-standard-chip{--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-elevated-container-color: #e0e0e0;--mdc-chip-elevated-disabled-container-color: #e0e0e0;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #3f51b5;--mdc-chip-elevated-disabled-container-color: #3f51b5;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #ff4081;--mdc-chip-elevated-disabled-container-color: #ff4081;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #f44336;--mdc-chip-elevated-disabled-container-color: #f44336;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-chip.mat-mdc-standard-chip{--mdc-chip-container-height: 32px}.mat-mdc-slide-toggle{--mdc-switch-selected-focus-state-layer-color: #3949ab;--mdc-switch-selected-handle-color: #3949ab;--mdc-switch-selected-hover-state-layer-color: #3949ab;--mdc-switch-selected-pressed-state-layer-color: #3949ab;--mdc-switch-selected-focus-handle-color: #1a237e;--mdc-switch-selected-hover-handle-color: #1a237e;--mdc-switch-selected-pressed-handle-color: #1a237e;--mdc-switch-selected-focus-track-color: #7986cb;--mdc-switch-selected-hover-track-color: #7986cb;--mdc-switch-selected-pressed-track-color: #7986cb;--mdc-switch-selected-track-color: #7986cb;--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-handle-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-switch-handle-shadow-color: black;--mdc-switch-disabled-handle-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-switch-selected-icon-color: #fff;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-handle-color: #616161;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-icon-color: #fff;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#00000061}.mat-mdc-slide-toggle.mat-accent{--mdc-switch-selected-focus-state-layer-color: #d81b60;--mdc-switch-selected-handle-color: #d81b60;--mdc-switch-selected-hover-state-layer-color: #d81b60;--mdc-switch-selected-pressed-state-layer-color: #d81b60;--mdc-switch-selected-focus-handle-color: #880e4f;--mdc-switch-selected-hover-handle-color: #880e4f;--mdc-switch-selected-pressed-handle-color: #880e4f;--mdc-switch-selected-focus-track-color: #f06292;--mdc-switch-selected-hover-track-color: #f06292;--mdc-switch-selected-pressed-track-color: #f06292;--mdc-switch-selected-track-color: #f06292}.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5;--mat-radio-ripple-color: #000;--mat-radio-checked-ripple-color: #3f51b5;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081;--mat-radio-ripple-color: #000;--mat-radio-checked-ripple-color: #ff4081;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336;--mat-radio-ripple-color: #000;--mat-radio-checked-ripple-color: #f44336;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button .mdc-radio{--mdc-radio-state-layer-size: 40px}.mat-mdc-slider{--mdc-slider-label-container-color: black;--mdc-slider-label-label-text-color: white;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-with-tick-marks-disabled-container-color: #000;--mat-mdc-slider-value-indicator-opacity: .6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #3f51b5;--mdc-slider-focus-handle-color: #3f51b5;--mdc-slider-hover-handle-color: #3f51b5;--mdc-slider-active-track-color: #3f51b5;--mdc-slider-inactive-track-color: #3f51b5;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #3f51b5;--mat-mdc-slider-ripple-color: #3f51b5;--mat-mdc-slider-hover-ripple-color: rgba(63, 81, 181, .05);--mat-mdc-slider-focus-ripple-color: rgba(63, 81, 181, .2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color: #ff4081;--mdc-slider-focus-handle-color: #ff4081;--mdc-slider-hover-handle-color: #ff4081;--mdc-slider-active-track-color: #ff4081;--mdc-slider-inactive-track-color: #ff4081;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #ff4081;--mat-mdc-slider-ripple-color: #ff4081;--mat-mdc-slider-hover-ripple-color: rgba(255, 64, 129, .05);--mat-mdc-slider-focus-ripple-color: rgba(255, 64, 129, .2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color: #f44336;--mdc-slider-focus-handle-color: #f44336;--mdc-slider-hover-handle-color: #f44336;--mdc-slider-active-track-color: #f44336;--mdc-slider-inactive-track-color: #f44336;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #f44336;--mat-mdc-slider-ripple-color: #f44336;--mat-mdc-slider-hover-ripple-color: rgba(244, 67, 54, .05);--mat-mdc-slider-focus-ripple-color: rgba(244, 67, 54, .2)}html{--mat-menu-item-label-text-color: rgba(0, 0, 0, .87);--mat-menu-item-icon-color: rgba(0, 0, 0, .87);--mat-menu-item-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-item-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-container-color: white}.mat-mdc-list-base{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mdc-list-item__start,.mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5}.mat-accent .mdc-list-item__start,.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081}.mat-warn .mdc-list-item__start,.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336}.mat-mdc-list-option{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #3f51b5;--mdc-checkbox-selected-hover-state-layer-color: #3f51b5;--mdc-checkbox-selected-pressed-state-layer-color: #3f51b5;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-accent{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #ff4081;--mdc-checkbox-selected-hover-state-layer-color: #ff4081;--mdc-checkbox-selected-pressed-state-layer-color: #ff4081;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-warn{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#3f51b5}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}html{--mat-paginator-container-text-color: rgba(0, 0, 0, .87);--mat-paginator-container-background-color: white;--mat-paginator-enabled-icon-color: rgba(0, 0, 0, .54);--mat-paginator-disabled-icon-color: rgba(0, 0, 0, .12)}html{--mat-paginator-container-size: 56px}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.mat-mdc-tab-group,.mat-mdc-tab-nav-bar{--mdc-tab-indicator-active-indicator-color: #3f51b5;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: #000;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #3f51b5;--mat-tab-header-active-ripple-color: #3f51b5;--mat-tab-header-inactive-ripple-color: #3f51b5;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #3f51b5;--mat-tab-header-active-hover-label-text-color: #3f51b5;--mat-tab-header-active-focus-indicator-color: #3f51b5;--mat-tab-header-active-hover-indicator-color: #3f51b5}.mat-mdc-tab-group.mat-accent,.mat-mdc-tab-nav-bar.mat-accent{--mdc-tab-indicator-active-indicator-color: #ff4081;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: #000;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #ff4081;--mat-tab-header-active-ripple-color: #ff4081;--mat-tab-header-inactive-ripple-color: #ff4081;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #ff4081;--mat-tab-header-active-hover-label-text-color: #ff4081;--mat-tab-header-active-focus-indicator-color: #ff4081;--mat-tab-header-active-hover-indicator-color: #ff4081}.mat-mdc-tab-group.mat-warn,.mat-mdc-tab-nav-bar.mat-warn{--mdc-tab-indicator-active-indicator-color: #f44336;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: #000;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #f44336;--mat-tab-header-active-ripple-color: #f44336;--mat-tab-header-inactive-ripple-color: #f44336;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #f44336;--mat-tab-header-active-hover-label-text-color: #f44336;--mat-tab-header-active-focus-indicator-color: #f44336;--mat-tab-header-active-hover-indicator-color: #f44336}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-tab-header-with-background-background-color: #3f51b5;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-tab-header-with-background-background-color: #ff4081;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-tab-header-with-background-background-color: #f44336;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-header{--mdc-secondary-navigation-tab-container-height: 48px}html{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #ff4081;--mdc-checkbox-selected-hover-state-layer-color: #ff4081;--mdc-checkbox-selected-pressed-state-layer-color: #ff4081;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #3f51b5;--mdc-checkbox-selected-hover-state-layer-color: #3f51b5;--mdc-checkbox-selected-pressed-state-layer-color: #3f51b5;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{color:#00000061}html{--mdc-checkbox-state-layer-size: 40px}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #3f51b5}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #ff4081}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #f44336}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-text-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #fff;--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #3f51b5;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #ff4081;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #f44336;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-button-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #fff;--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #3f51b5;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #ff4081;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #f44336;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation: 0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #3f51b5}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #ff4081}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #f44336}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, .1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, .1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary,.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent,.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mat-mdc-icon-button{--mdc-icon-button-icon-color: inherit;--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #6200ee;--mat-mdc-button-ripple-color: rgba(98, 0, 238, .1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #018786;--mat-mdc-button-ripple-color: rgba(1, 135, 134, .1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #b00020;--mat-mdc-button-ripple-color: rgba(176, 0, 32, .1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #3f51b5;--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, .1)}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #ff4081;--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, .1)}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #f44336;--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(0, 0, 0, .38);--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}.mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size: 48px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:12px}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary,.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent,.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(0, 0, 0, .12);--mdc-fab-icon-color: rgba(0, 0, 0, .38);--mat-mdc-fab-color: rgba(0, 0, 0, .38)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: white;--mdc-fab-icon-color: black;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: #3f51b5;--mdc-fab-icon-color: white;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: #ff4081;--mdc-fab-icon-color: white;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: #f44336;--mdc-fab-icon-color: white;--mat-mdc-fab-color: #fff}.mat-mdc-snack-bar-container{--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87);--mat-snack-bar-button-color: #ff4081}html{--mat-table-background-color: white;--mat-table-header-headline-color: rgba(0, 0, 0, .87);--mat-table-row-item-label-text-color: rgba(0, 0, 0, .87);--mat-table-row-item-outline-color: rgba(0, 0, 0, .12)}html{--mat-table-header-container-height: 56px;--mat-table-footer-container-height: 52px;--mat-table-row-item-container-height: 52px}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: #3f51b5}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: #ff4081}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: #f44336}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;background-color:var(--mat-badge-background-color);color:var(--mat-badge-text-color);font-family:Roboto,sans-serif;font-family:var(--mat-badge-text-font, Roboto, sans-serif);font-size:12px;font-size:var(--mat-badge-text-size, 12px);font-weight:600;font-weight:var(--mat-badge-text-weight, 600)}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-disabled .mat-badge-content{background-color:var(--mat-badge-disabled-state-background-color);color:var(--mat-badge-disabled-state-text-color)}.mat-badge-hidden .mat-badge-content{display:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px;font-size:9px;font-size:var(--mat-badge-small-size-text-size, 9px)}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px;font-size:24px;font-size:var(--mat-badge-large-size-text-size, 24px)}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}html{--mat-badge-background-color: #3f51b5;--mat-badge-text-color: white;--mat-badge-disabled-state-background-color: #b9b9b9;--mat-badge-disabled-state-text-color: rgba(0, 0, 0, .38)}.mat-badge-accent{--mat-badge-background-color: #ff4081;--mat-badge-text-color: white}.mat-badge-warn{--mat-badge-background-color: #f44336;--mat-badge-text-color: white}html{--mat-bottom-sheet-container-text-color: rgba(0, 0, 0, .87);--mat-bottom-sheet-container-background-color: white}html{--mat-legacy-button-toggle-text-color: rgba(0, 0, 0, .38);--mat-legacy-button-toggle-state-layer-color: rgba(0, 0, 0, .12);--mat-legacy-button-toggle-selected-state-text-color: rgba(0, 0, 0, .54);--mat-legacy-button-toggle-selected-state-background-color: #e0e0e0;--mat-legacy-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-legacy-button-toggle-disabled-state-background-color: #eeeeee;--mat-legacy-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-background-color: white;--mat-standard-button-toggle-state-layer-color: black;--mat-standard-button-toggle-selected-state-background-color: #e0e0e0;--mat-standard-button-toggle-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-standard-button-toggle-disabled-state-background-color: white;--mat-standard-button-toggle-disabled-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-divider-color: #e0e0e0}html{--mat-standard-button-toggle-height: 48px}html{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #3f51b5;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(63, 81, 181, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(63, 81, 181, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(63, 81, 181, .3);--mat-datepicker-toggle-active-state-icon-color: #3f51b5;--mat-datepicker-calendar-date-in-range-state-background-color: rgba(63, 81, 181, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e;--mat-datepicker-toggle-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-body-label-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-period-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-navigation-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-header-divider-color: rgba(0, 0, 0, .12);--mat-datepicker-calendar-header-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-date-today-outline-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-today-disabled-state-outline-color: rgba(0, 0, 0, .18);--mat-datepicker-calendar-date-text-color: rgba(0, 0, 0, .87);--mat-datepicker-calendar-date-outline-color: transparent;--mat-datepicker-calendar-date-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-preview-state-outline-color: rgba(0, 0, 0, .24);--mat-datepicker-range-input-separator-color: rgba(0, 0, 0, .87);--mat-datepicker-range-input-disabled-state-separator-color: rgba(0, 0, 0, .38);--mat-datepicker-range-input-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-container-background-color: white;--mat-datepicker-calendar-container-text-color: rgba(0, 0, 0, .87)}.mat-datepicker-content.mat-accent{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #ff4081;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(255, 64, 129, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(255, 64, 129, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(255, 64, 129, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(255, 64, 129, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e}.mat-datepicker-content.mat-warn{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #f44336;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(244, 67, 54, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(244, 67, 54, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e}.mat-datepicker-toggle-active.mat-accent{--mat-datepicker-toggle-active-state-icon-color: #ff4081}.mat-datepicker-toggle-active.mat-warn{--mat-datepicker-toggle-active-state-icon-color: #f44336}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size: 40px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}html{--mat-divider-color: rgba(0, 0, 0, .12)}html{--mat-expansion-container-background-color: white;--mat-expansion-container-text-color: rgba(0, 0, 0, .87);--mat-expansion-actions-divider-color: rgba(0, 0, 0, .12);--mat-expansion-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-expansion-header-text-color: rgba(0, 0, 0, .87);--mat-expansion-header-description-color: rgba(0, 0, 0, .54);--mat-expansion-header-indicator-color: rgba(0, 0, 0, .54)}html{--mat-expansion-header-collapsed-state-height: 48px;--mat-expansion-header-expanded-state-height: 64px}html{--mat-icon-color: inherit}.mat-icon.mat-primary{--mat-icon-color: #3f51b5}.mat-icon.mat-accent{--mat-icon-color: #ff4081}.mat-icon.mat-warn{--mat-icon-color: #f44336}html{--mat-sidenav-container-divider-color: rgba(0, 0, 0, .12);--mat-sidenav-container-background-color: white;--mat-sidenav-container-text-color: rgba(0, 0, 0, .87);--mat-sidenav-content-background-color: #fafafa;--mat-sidenav-content-text-color: rgba(0, 0, 0, .87);--mat-sidenav-scrim-color: rgba(0, 0, 0, .6)}html{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #3f51b5;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #3f51b5;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #3f51b5;--mat-stepper-header-edit-state-icon-foreground-color: white;--mat-stepper-container-color: white;--mat-stepper-line-color: rgba(0, 0, 0, .12);--mat-stepper-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-optional-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-selected-state-label-text-color: rgba(0, 0, 0, .87);--mat-stepper-header-error-state-label-text-color: #f44336;--mat-stepper-header-icon-background-color: rgba(0, 0, 0, .54);--mat-stepper-header-error-state-icon-foreground-color: #f44336;--mat-stepper-header-error-state-icon-background-color: transparent}html .mat-step-header.mat-accent{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #ff4081;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #ff4081;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #ff4081;--mat-stepper-header-edit-state-icon-foreground-color: white}html .mat-step-header.mat-warn{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #f44336;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #f44336;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #f44336;--mat-stepper-header-edit-state-icon-foreground-color: white}html{--mat-stepper-header-height: 72px}.mat-sort-header-arrow{color:#757575}html{--mat-toolbar-container-background-color: whitesmoke;--mat-toolbar-container-text-color: rgba(0, 0, 0, .87)}.mat-toolbar.mat-primary{--mat-toolbar-container-background-color: #3f51b5;--mat-toolbar-container-text-color: white}.mat-toolbar.mat-accent{--mat-toolbar-container-background-color: #ff4081;--mat-toolbar-container-text-color: white}.mat-toolbar.mat-warn{--mat-toolbar-container-background-color: #f44336;--mat-toolbar-container-text-color: white}html{--mat-toolbar-standard-height: 64px;--mat-toolbar-mobile-height: 56px}.mat-tree{background:#fff}.mat-tree-node,.mat-nested-tree-node{color:#000000de}.mat-tree-node{min-height:48px}.errorMsg{position:FIXED;color:#ff273e;font-size:14px;font-family:Source Sans Pro,sans-serif;inset:0;background-color:#fff;text-align:center}.errorMsg .material-icons{position:relative;left:25px;top:calc(51% - 50px)}.errorMsg .errorTxt{padding:10px 10px 10px 30px;text-align:left;width:inherit;display:inline-block;position:relative;line-height:20px;top:calc(50% - 50px)}.sticky_bottom_menu .sticky-bottom-closed{margin-left:3px}.revised-section__header{width:100%;border:0;background:transparent;display:flex;align-items:center;justify-content:space-between;cursor:pointer;text-align:left;overflow:hidden;height:40px;padding:0 5px}.revised-section__header .revised-chevron-icon-wrap{position:absolute;right:14px!important}.revised-section__header-main{display:inline-flex;align-items:center;gap:5px;min-width:0;overflow:hidden}.revised-section__header-icon-box{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.revised-section__header-icon{width:13px;height:13px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.revised-section__header-icon ::ng-deep svg{display:block}.revised-nav{display:flex;flex-direction:column;width:100%;flex:1 1 auto;min-height:0}.revised-nav-chevron{flex-shrink:0}.revised-section__title{line-height:38px;white-space:nowrap;overflow:hidden;opacity:1;max-width:220px;transition:opacity 80ms ease,max-width 80ms ease}.revised-section__icon{color:#41586b}.revised-section__chevron{font-size:20px;width:20px;height:20px;line-height:20px;font-family:Material Icons!important;font-weight:400;font-style:normal;display:inline-flex;align-items:center;justify-content:center;text-transform:none;letter-spacing:normal}.revised-section__content{max-height:0;opacity:0;overflow:hidden;padding-bottom:0;visibility:hidden;transition:max-height .1s ease,opacity 80ms ease,padding-bottom .1s ease,visibility 0s linear .1s}.revised-section__content--visible{padding:0 8px 0 28px;max-height:1400px!important;opacity:1!important;visibility:visible!important;overflow:visible!important;transition:max-height .12s ease,opacity .1s ease,padding-bottom .12s ease,visibility 0s linear 0s}.revised-section__content--visible.revised-section__content--grouped{padding-left:32px}:host ::ng-deep .revised-section .mat-expansion-panel-content{padding-left:12px}.revised-group{margin-bottom:4px}.revised-group__header{width:100%;border:0;background:transparent;display:flex;align-items:center;justify-content:space-between;padding:8px 10px 6px;cursor:pointer;text-align:left;font:inherit;color:inherit}.revised-group__title{margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.revised-group__chevron{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;min-width:28px;min-height:28px}.revised-group__list{padding-left:4px!important}.revised-group__multi-panel{box-shadow:none!important;border-radius:0!important;background:transparent!important}.revised-group__multi-panel .mat-expansion-panel-header.revised-group__header--as-panel{padding:8px 10px 6px 12px!important}.revised-group__panel-body{padding-left:0}.revised-group-menu-panel--nested .mat-expansion-panel-header{padding-left:8px;min-height:40px}.revised-group-menu-leaf{padding:0}.revised-group--single .revised-group__header--as-panel{padding:8px 10px 6px;height:auto;min-height:40px}.revised-group--single .revised-group__single-expandable{box-shadow:none;border-radius:0}.revised-group--single .revised-group__single-expandable .mat-expansion-panel-header{border:0;padding:8px 10px 6px}.revised-group--single .revised-group__single-link{padding:0;min-height:0}.revised-group--single .revised-group__single-link .mat-mdc-list-item,.revised-group--single .revised-group__single-link a[mat-list-item],.revised-group--multi .revised-group__list .mat-mdc-list-item,.revised-group--multi .revised-group__list a[mat-list-item]{padding:8px 10px 6px;height:auto;min-height:40px}.revised-group--multi .revised-group__multi-stack .revised-group__single-expandable,.revised-optimize-menus .revised-optimize-menu-stack .revised-group__single-expandable{box-shadow:none;border-radius:0}.revised-group--multi .revised-group__multi-stack .revised-group__single-expandable .mat-expansion-panel-header,.revised-optimize-menus .revised-optimize-menu-stack .revised-group__single-expandable .mat-expansion-panel-header{border:0;padding:8px 10px 6px 12px!important}.revised-group--multi .revised-group__multi-stack .revised-group__single-link,.revised-optimize-menus .revised-optimize-menu-stack .revised-group__single-link{padding:0;min-height:0}.revised-group--multi .revised-group__multi-stack .revised-group__single-link .mat-mdc-list-item,.revised-group--multi .revised-group__multi-stack .revised-group__single-link a[mat-list-item],.revised-group--multi .revised-group__multi-stack .revised-group__content .sub-child-menu .mat-mdc-list-item,.revised-group--multi .revised-group__multi-stack .revised-group__content .sub-child-menu a[mat-list-item],.revised-optimize-menus .revised-optimize-menu-stack .revised-group__single-link .mat-mdc-list-item,.revised-optimize-menus .revised-optimize-menu-stack .revised-group__single-link a[mat-list-item],.revised-optimize-menus .revised-optimize-menu-stack .revised-group__content .sub-child-menu .mat-mdc-list-item,.revised-optimize-menus .revised-optimize-menu-stack .revised-group__content .sub-child-menu a[mat-list-item]{padding:8px 10px 6px;height:auto;min-height:40px}.revised-section mat-expansion-panel-header.mat-expansion-panel-header,.revised-section .mat-expansion-panel-header{align-items:center!important}.revised-section mat-panel-title,.revised-section .mat-expansion-panel-header-title{flex:1 1 auto!important;min-width:0}.revised-section mat-panel-title .menu-heading,.revised-section .mat-expansion-panel-header-title .menu-heading{font-size:15.5px}.revised-section mat-panel-description.children-description,.revised-section .mat-expansion-panel-header-description.children-description{margin-left:auto!important;margin-right:0!important;flex:0 0 auto!important;display:flex!important;align-items:center;justify-content:flex-end;padding-right:10px}.revised-section .sub-chevron-icon.revised-chevron-icon-wrap,.revised-section span.sub-chevron-icon{position:static!important;left:auto!important;top:auto!important;line-height:0;width:auto!important;min-width:28px;height:auto!important;color:#41586b}.revised-section .revised-group__chevron{color:#41586b}.revised-section .revised-chevron-icon-wrap{display:inline-flex;align-items:center;justify-content:center;overflow:visible;color:#41586b;position:absolute;right:5px}.revised-section .revised-chevron-svg{display:block;width:22px;height:22px;flex-shrink:0;pointer-events:none}.navmenu-expanded .revised-section{width:100%;margin-bottom:0;display:flex;flex-direction:column;align-items:center}.navmenu-expanded .revised-section__header{width:auto;max-width:100%;min-width:0;flex:0 0 auto;min-height:56px;padding:0 8px;justify-content:center;box-sizing:border-box}.navmenu-expanded .revised-section__header-main{width:auto;max-width:100%;justify-content:center;gap:0}.navmenu-expanded .revised-section__title,.navmenu-expanded .revised-section__icon{opacity:0;pointer-events:none}.navmenu-expanded .revised-section__title{max-width:0}.navmenu-expanded .revised-section.active .revised-section__header-icon-box{background:#ebecef;border-radius:10px;padding:8px;box-sizing:border-box}.navmenu-expanded .revised-section__header-icon{width:24px;height:24px}.navmenu-expanded .revised-section__header-icon ::ng-deep svg{width:20px;height:20px}.navmenu-expanded .revised-section__collapsed-active-dot{position:absolute;top:2px;right:2px;width:6px;height:6px;border-radius:50%;background-color:#ff273e;box-shadow:0 0 0 2px #ebecef;pointer-events:none}.navmenu-expanded .revised-section__content:not(.revised-section__content--visible){max-height:0!important;opacity:0!important;padding-bottom:0!important;visibility:hidden!important}.revised-optimize-tabs{display:flex;gap:10px;padding:6px 0 12px;align-items:center;flex-wrap:nowrap;justify-content:center}.revised-optimize-tab{width:40px;min-width:40px;height:40px;border-radius:8px;border:2px solid #e5e7e8;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;padding:0;transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease}.revised-optimize-tab.active{background:#eef2ff;border-color:#4573d2}.revised-optimize-tab:hover{background:#eef2ff}.revised-optimize-tab img{margin-right:0!important;width:24px!important;height:24px!important;object-fit:contain}.revised-optimize-tab__icon{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px}.revised-optimize-tab__badge{position:absolute;top:-6px;left:-6px;min-width:24px;height:24px;padding:0 6px;border-radius:12px;background:#ff4d4f;color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;line-height:1;box-shadow:0 0 0 3px #fff}.revised-section-group{margin-bottom:12px;padding-left:45px}.revised-section-group__title{padding:4px 0 2px}.revised-optimize-app-title{color:#202b37;font-size:15px;font-weight:700!important;line-height:36px;text-transform:capitalize}::ng-deep .mat-mdc-tooltip-panel-below mat-tooltip-component .mdc-tooltip.revised-optimize-app-tab-tooltip{position:relative;inset-inline-start:12px}:host ::ng-deep .revised-section lnc-nav-menus a.sidemenu-option.active,:host ::ng-deep .revised-section lnc-nav-menus a.mat-mdc-list-item.sidemenu-option.active{background-color:#f6f6f6!important;border:none!important}:host ::ng-deep .revised-section lnc-nav-menus a.sidemenu-option.active h3,:host ::ng-deep .revised-section lnc-nav-menus a.sidemenu-option.active h3.sidemenu-text,:host ::ng-deep .revised-section lnc-nav-menus a.mat-mdc-list-item.sidemenu-option.active h3,:host ::ng-deep .revised-section lnc-nav-menus a.mat-mdc-list-item.sidemenu-option.active h3.sidemenu-text{color:#202b37!important;font-weight:700}:host ::ng-deep .revised-section lnc-nav-menus a.sidemenu-option:hover:not(.active),:host ::ng-deep .revised-section lnc-nav-menus a.mat-mdc-list-item.sidemenu-option:hover:not(.active){background-color:#f6f6f6!important;border-right:none!important}:host ::ng-deep .revised-section lnc-nav-menus a.sidemenu-option:hover:not(.active) h3,:host ::ng-deep .revised-section lnc-nav-menus a.mat-mdc-list-item.sidemenu-option:hover:not(.active) h3{color:#202b37!important}:host ::ng-deep .revised-section .mat-expansion-panel-header:hover .main-chevron-icon,:host ::ng-deep .revised-section .mat-expansion-panel-header:hover .sub-chevron-icon{color:#41586b!important}:host ::ng-deep .revised-section .mat-mdc-list-item,:host ::ng-deep .revised-section a[mat-list-item]{border-radius:8px;margin:4px 0;min-height:40px;padding-left:0;padding-right:0}.portal-sidnav-menu{overflow-y:auto;scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.15) rgba(255,255,255,.65)}.portal-sidnav-menu::-webkit-scrollbar{height:8px;width:8px;background:#0000001a;-webkit-transition:all .2s;transition:all .2s}.portal-sidnav-menu::-webkit-scrollbar-thumb{background:#00000026;border-radius:4px;-webkit-transition:all .2s;transition:all .2s}.portal-sidnav-menu::-webkit-scrollbar-track{border-radius:30px;background:#ffffffa6}.portal-sidnav-menu::-webkit-scrollbar-corner{display:none;height:0;width:0}.portal-sidnav-menu::-webkit-scrollbar-thumb:hover{background:#00000073;border-radius:4px;-webkit-transition:all .2s;transition:all .2s}.portal-sidnav-menu .portal-sidnav-menu__subheader{margin:12px 0;padding:0 16px;vertical-align:middle;font-size:14px}.portal-sidnav-menu .mat-expansion-panel{box-shadow:none;border-radius:0}.portal-sidnav-menu .mat-expansion-panel.revised-section:not(:last-child){border-bottom:1px solid #E5E7E8;padding-bottom:5px}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header{height:36px!important;border-bottom-left-radius:0;border-bottom-right-radius:0;padding:0 0 0 25px;border:none!important}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title{margin:0;align-items:center;width:100%}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title .mat-icon{font-size:16px;width:24px;height:24px;line-height:24px;text-align:center;padding:0;flex-shrink:0}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title img.icon.side-menu-icon{width:24px!important}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-description{margin-right:13px}.portal-sidnav-menu .mat-nav-list{padding:0}.portal-sidnav-menu .mat-nav-list .mat-mdc-list-item-icon,.portal-sidnav-menu .mat-nav-list .mat-icon.portal-sidnav-menu__end_detail{font-size:16px;width:24px;height:24px;line-height:24px;text-align:center;padding:0;flex-shrink:0}.portal-sidnav-menu .mat-list-item-focus{background:transparent}.portal-sidnav-menu mat-list mat-expansion-panel mat-expansion-panel-header{padding-left:20px}.portal-sidnav-menu mat-list mat-expansion-panel mat-expansion-panel-header .menu-name-expandable{max-width:170px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block}.portal-sidnav-menu mat-list mat-expansion-panel mat-expansion-panel-header .level-two-badge{top:-10px!important;right:-4px!important}::ng-deep .mdc-list-item:hover:before,::ng-deep .mdc-list-item:focus:before,::ng-deep .mdc-list-item.mdc-list-item--selected:before,::ng-deep .mdc-list-item.mdc-list-item--activated:before,::ng-deep .mdc-list-item__ripple:before{background-color:transparent!important}.main-expansion-panel-header{position:relative}.main-chevron-icon{font-size:34px;width:25px;height:34px;color:#41586b;position:absolute;right:10px;bottom:1px}.sub-chevron-icon{left:25px;top:6px;font-size:15px;width:25px;height:15px;color:#41586b;position:relative}.header-border{border-top-left-radius:0;border-top-right-radius:0}.header-border-none{border:0}.sidemenu-logo-holder{width:150px;text-align:center;margin:0;line-height:1px;max-height:65px;padding:0 10px;display:flex;justify-content:center}.sidemenu-logo-holder img{width:100%}.sidemenu-heading{color:#1e1f21;font-size:16px;font-weight:600;margin:0!important}.sidemenu-symbol{border-radius:50%;width:18px;height:18px;border:1px solid #ff273e;color:#202b37;text-align:center;font:9px Arial,sans-serif;display:inline-block;font-weight:700;display:flex;justify-content:center;align-items:center;margin-right:10px}.menu-heading{position:relative;margin:0!important;color:#1e1f21!important;white-space:nowrap;text-transform:capitalize;letter-spacing:normal}.logo-dimension{object-fit:cover;max-height:60px}.hamburger-icon{z-index:-1;cursor:pointer;position:fixed;background-color:#fff;border:1px solid #e6eefc;width:20px!important;height:32px;line-height:36px;top:calc(50% - 15px);display:flex;align-items:center;justify-content:center}.left-chevron-icon{color:#7f7f7f}.expanded-hamburger-icon{left:232px}.sidebar-collapse-icon{display:flex;justify-content:flex-end;top:0;z-index:99;background-color:#fff;padding-right:8px}.sidebar-collapse-icon button{width:25px;display:flex;text-align:center;vertical-align:middle;align-items:center;justify-content:center;text-transform:capitalize;border-radius:0;line-height:15px;height:20px;padding:0;min-height:20px;cursor:pointer;color:#1264a3;text-decoration:none;font-size:14px;left:0;top:0;background-color:#fff;border:1px solid #e6eefc}.sidebar-collapse-icon button mat-icon{margin:0}.portal-forgot-logo-text{line-height:1.3;font-family:Dosis,sans-serif;font-style:normal;font-stretch:normal;letter-spacing:4.3px;text-align:left;opacity:1px;color:#41586b;display:inline-block;vertical-align:middle;font-size:25px;font-weight:600}.portal-forgot-card__logo{width:16%}.portal-forget-heading-card{display:flex;justify-content:space-around;align-items:center;flex-direction:row}.revised-section-app-logo{padding:0 10px}.div-background-color,.div-background-color-white{background-color:#fff!important}.mat-expansion-panel-content{padding-left:20px}.mat-expansion-panel-content .sub-child-menu .mat-mdc-list-item h3{font-size:14px!important}:host ::ng-deep .mat-expansion-indicator:after{color:#000!important;border-width:0 1px 1px 0;padding:4px}:host ::ng-deep .mat-expansion-indicator:before{color:#000!important}:host ::ng-deep .mat-expansion-panel-body{padding:0!important}:host ::ng-deep .mat-expansion-panel-body .mat-mdc-list-item h3.sidemenu-text,:host ::ng-deep .mat-expansion-panel-body a.mat-mdc-list-item h3.sidemenu-text,:host ::ng-deep .mat-expansion-panel-body .mdc-list-item__content h3.sidemenu-text{font-size:15.25px!important}:host ::ng-deep .mat-mdc-list-base{padding:0}:host ::ng-deep .mat-mdc-list-base .mat-mdc-list-item,.mat-list-base .mat-list-option{height:40px}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content{padding:0 10px 0 23px!important}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item .mdc-list-item__content h3.font-color-black{color:#1e1f21;font: 400 16px Lato,serif}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-divider.separator{margin-left:0!important;width:calc(100% + 10px)!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu mat-expansion-panel .mat-expansion-panel-content{padding:0 8px 0 20px!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item{padding:0 12px!important;min-height:40px!important;height:auto!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item .mdc-list-item__content h3,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item .mdc-list-item__content h3.sidemenu-text,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item .mdc-list-item__content h3.font-color-black{color:#202b37!important;font-size:15.5px!important;font-weight:400!important;line-height:1.25!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.sidemenu-option.active,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.mat-mdc-list-item.sidemenu-option.active{background-color:#f6f6f6!important;border:none!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.sidemenu-option.active h3,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.sidemenu-option.active h3.sidemenu-text,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.mat-mdc-list-item.sidemenu-option.active h3,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.mat-mdc-list-item.sidemenu-option.active h3.sidemenu-text{color:#202b37!important;font-weight:700!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.sidemenu-option:hover:not(.active),:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.mat-mdc-list-item.sidemenu-option:hover:not(.active){background-color:#f6f6f6!important;border-right:none!important;text-decoration:none!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.sidemenu-option:hover:not(.active) h3,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.sidemenu-option:hover:not(.active) h3.sidemenu-text,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.mat-mdc-list-item.sidemenu-option:hover:not(.active) h3,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.mat-mdc-list-item.sidemenu-option:hover:not(.active) h3.sidemenu-text{color:#202b37!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel mat-expansion-panel-header+div[class*=expansion-panel-content] .mat-mdc-list .mat-mdc-list-item:hover:not(.active),:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel mat-expansion-panel-header+div[class*=expansion-panel-content] .mat-mdc-list .mat-mdc-list-item.active{background-color:#f6f6f6!important}.badge-text.sov-beta-position{position:relative;font-size:10px;color:#ff273e!important;font-family:Lato!important;top:-5px;right:0;letter-spacing:.5px;padding-left:2px;flex-grow:1}.portal-global-setting-menu{border-top:1px solid #E5E7E8!important;margin-bottom:8px}.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel{padding-left:5px}.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel mat-expansion-panel-header+div[class*=expansion-panel-content] .mat-mdc-list .mat-mdc-list-item:hover,.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel mat-expansion-panel-header+div[class*=expansion-panel-content] .mat-mdc-list .mat-mdc-list-item.active{background-color:#f6f6f6!important}.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel.mat-expanded{border-color:#acb0b4}.portal-global-setting-menu .app-menu-container .app-menu-Link-button{padding:12px 5px!important;align-items:center;background:transparent;cursor:pointer!important;width:100%!important;margin:0!important;height:44px!important;border-radius:8px;border:none!important;display:flex!important;justify-content:space-between;font: 400 16px Lato,serif!important;line-height:16px!important}.portal-global-setting-menu .app-menu-container .app-menu-Link-button .app-name label.app-name-label{font-weight:700;cursor:pointer}.navmenu-expanded{align-items:center}.navmenu-expanded .mat-expansion-panel .mat-expansion-panel-header{display:flex!important;justify-content:center;align-items:center}.navmenu-expanded .mat-expansion-panel .mat-expansion-panel-header .mat-content{margin-left:12px}.navmenu-expanded .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title{justify-content:center}.navmenu-expanded .portal-global-setting-menu.sticky_bottom_menu .mat-expansion-panel{border:none!important}.side-menu-icon{width:18px;height:18px}::-webkit-scrollbar{height:8px;width:8px;background:#0000001a;-webkit-transition:all .2s;transition:all .2s}::-webkit-scrollbar-thumb{background:#00000026;border-radius:4px;-webkit-transition:all .2s;transition:all .2s}::-webkit-scrollbar-track{border-radius:30px;background:#ffffffa6}::-webkit-scrollbar-corner{display:none;height:0px;width:0px}::-webkit-scrollbar-thumb:hover{background:#00000073;border-radius:4px;-webkit-transition:all .2s;transition:all .2s}:host ::ng-deep #loader_sov{display:none}:host ::ng-deep #loading_div{width:100%;height:100%;position:fixed;z-index:9999;display:table;background:#f9f9f9}:host ::ng-deep #loading_div>div{display:table-cell;vertical-align:middle;text-align:center}:host ::ng-deep #loading_div>div #loader{vertical-align:middle;width:100%;height:120px;display:block;text-align:center}:host ::ng-deep #loading_div>div #loader img{width:auto;height:140px;display:inline-block;margin:auto}:host ::ng-deep #loading_div>div #loader.site_2{height:130px}:host ::ng-deep #loading_div>div #loader.site_2 img{height:160px}:host ::ng-deep #loading_div>div #loader.site_6{height:138px}:host ::ng-deep #loading_div>div #loader.site_5{height:123px}:host ::ng-deep #loading_div>div #loader.site_5 img{height:110px}:host ::ng-deep #loading_div>div #loader.site_7{height:181px}:host ::ng-deep #loading_div>div #loader.site_7 img{height:204px}:host ::ng-deep #loading_div>div #loader_img{vertical-align:middle;width:100%;height:170px;display:block;text-align:center}:host ::ng-deep #loading_div>div #loader_img img{width:auto;height:150px;display:inline-block;margin:auto}:host ::ng-deep #loading_div>div .loader_progress-bar-position{width:16%;margin:auto}:host ::ng-deep #loading_div>div .loader_progress-bar-position .mat-progress-bar-fill:after{background-color:#ff273e!important}:host ::ng-deep #loading_div>div .loader_progress-bar-position .mat-progress-bar-buffer{background-color:#cdcdd2!important}@media only screen and (max-width: 1425px){:host ::ng-deep #loading_div .loader_progress-bar-position{width:26%!important}}::ng-deep body app-root .mat-sidenav-container.left-nav-v2 .mat-sidenav.portal-classic-leftsidenav{border-right:none!important;overflow:hidden!important;width:300px;min-width:300px;max-width:300px;background-color:#fdfdfd!important;padding-top:11px;padding-right:0!important;padding-left:0!important}:host-context(body app-root .mat-sidenav-container.left-nav-v2 .mat-sidenav.portal-classic-leftsidenav) .portal-sidnav-menu{padding:0!important}:host-context(body app-root .mat-sidenav-container.left-nav-v2 .mat-sidenav.portal-classic-leftsidenav) .mat-toolbar{margin-bottom:0!important}\n"] }]
1416
+ }], ctorParameters: function () { return [{ type: i1.ApplicationSidebarService }, { type: i2.Router }, { type: i3.RestApiService }, { type: i4.CookieService }, { type: i0.ChangeDetectorRef }, { type: i5.TranslationService }, { type: i6.MixpanelService }, { type: i7.DomSanitizer }]; }, propDecorators: { applicationDetails: [{
666
1417
  type: Input
667
1418
  }], sidenav: [{
668
1419
  type: Input
@@ -676,4 +1427,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
676
1427
  type: ViewChild,
677
1428
  args: ['navMenusComponent']
678
1429
  }] } });
679
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tc2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcHBsaWNhdGlvbi1zaWRlYmFyL3NyYy9saWIvYXBwbGljYXRpb24tc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcHBsaWNhdGlvbi1zaWRlYmFyL3NyYy9saWIvYXBwbGljYXRpb24tc2lkZWJhci50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFlLGVBQWUsRUFBUyxNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxTQUFTLEVBQXFCLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFROUQsTUFBTSxP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VTtvQkFDM0UsSUFBSSxVQUFVLENBQUMsT0FBTyxLQUFLLGNBQWMsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxVQUFVLENBQUMsS0FBSyxJQUFJLFVBQVUsQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLEVBQUU7d0JBQ3BILE9BQU8sSUFBSSxDQUFDO3FCQUNiO29CQUFBLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUE7YUFDSDtZQUNELE9BQU8sQ0FBQyxZQUFZLElBQUksSUFBSSxJQUFJLENBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsRUFBRSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLEtBQUsscUJBQXFCLENBQUMsQ0FBQyxDQUFDO1NBQzNKO0lBQ0wsQ0FBQzsySEExcUJVLDJCQUEyQjsrR0FBM0IsMkJBQTJCLDhLQU8zQixtQkFBbUIsd0tBRGhCLGtCQUFrQixxRUMzQmxDLHl6ZEFvTlU7OzRGRC9MRywyQkFBMkI7a0JBTnZDLFNBQVM7K0JBQ0Usd0JBQXdCLG1CQUdqQix1QkFBdUIsQ0FBQyxNQUFNOzZSQUl0QyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUU0QixTQUFTO3NCQUExQyxZQUFZO3VCQUFDLGtCQUFrQjtnQkFDQSxJQUFJO3NCQUFuQyxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDRSxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciwgUm91dGVyRXZlbnQsIE5hdmlnYXRpb25TdGFydCwgUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblNpZGViYXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcHBsaWNhdGlvbi1zaWRlYmFyLnNlcnZpY2UnXG5pbXBvcnQgeyBNYXRTaWRlbmF2IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQgeyBhcHBEZXRhaWxzIH0gZnJvbSAnLi9hcHAtZGV0YWlscydcbmltcG9ydCB7IE9mZnNldFRvcERpcmVjdGl2ZSwgU2Nyb2xsYWJsZURpcmVjdGl2ZSB9IGZyb20gJy4vbmF2LW1lbnUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFJlc3RBcGlTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9yZXN0LWFwaS5zZXJ2aWNlcydcbmltcG9ydCB7IE5hdk1lbnVzQ29tcG9uZW50IH0gZnJvbSAnLi9uYXYtbWVudXMvbmF2LW1lbnVzLmNvbXBvbmVudCdcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tICduZ3gtY29va2llLXNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEdMT0JBTF9MSVNUIH0gZnJvbSAnLi9uYXZtZW51MSc7XG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBNaXhwYW5lbFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL21peHBhbmVsLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsbmMtbmF2aWdhdGlvbi1zaWRlYmFyJyxcbiAgdGVtcGxhdGVVcmw6Jy4vYXBwbGljYXRpb24tc2lkZWJhci50ZW1wbGF0ZS5odG1sJyxcbiAgc3R5bGVVcmxzOlsnLi9hcHBsaWNhdGlvbi1zaWRlYmFyLnNjc3MnLCdhcHBsaWNhdGlvbi1zaWRlYmFyLnRoZW1lLnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25TaWRlYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIGFwcGxpY2F0aW9uRGV0YWlscyA6YXBwRGV0YWlscztcblxuICBASW5wdXQoKSBzaWRlbmF2OiBNYXRTaWRlbmF2O1xuXG4gIEBWaWV3Q2hpbGRyZW4oT2Zmc2V0VG9wRGlyZWN0aXZlKSBsaXN0SXRlbXM6IFF1ZXJ5TGlzdDxPZmZzZXRUb3BEaXJlY3RpdmU+O1xuICBAVmlld0NoaWxkKFNjcm9sbGFibGVEaXJlY3RpdmUpIGxpc3Q6IFNjcm9sbGFibGVEaXJlY3RpdmU7XG4gIEBWaWV3Q2hpbGQoJ25hdk1lbnVzQ29tcG9uZW50JykgbmF2TWVudXNDb21wb25lbnQ6TmF2TWVudXNDb21wb25lbnQ7XG5cbiAgYWNjb3VudE5hbWU6IGFueTtcbiAgYWN0aXZlUGFuZWw6IGFueTtcbiAgbmF2RXhwYW5kZWQ6Ym9vbGVhbiA9IGZhbHNlO1xuICBvbGRMaXN0SXRlbXM6IFF1ZXJ5TGlzdDxPZmZzZXRUb3BEaXJlY3RpdmU+O1xuICBpc0FkbWluUm9sZTogYm9vbGVhbiA9IGZhbHNlO1xuICBhZG1pblJvbGVzID0gWydTVVBFUl9BRE1JTicsJ1NVUEVSX0FETUlOX1JFQURfT05MWSddO1xuICBjdXJyZW50QXBwOiBhbnk7XG4gIHNpZGVOYXZTdGF0dXNTdWJzY3JpcHRpb246IGFueTtcbiAgbXlPYnNlcnZlcjogYW55O1xuICBleHBhbmRHbG9iYWxTZXR0aW5nczogYW55ID0gZmFsc2U7XG4gIGluQ29udGV4dEluc2lnaHRzV0xBcHA6IGJvb2xlYW47XG4gIHB1YmxpYyB0aGVtZVBvaW50OiBzdHJpbmc7IC8vIFB1YmxpYyB2YXJpYWJsZSBmb3IgdGhlbWUgcG9pbnRcbiAgc2hvd1RpdGxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gaXNHbG9iYWxTZXR0aW5nc01lbnVBY3RpdmU6Ym9vbGVhbiA9IGZhbHNlXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG5hdmlnYXRpb246IEFwcGxpY2F0aW9uU2lkZWJhclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIFJlc3RBcGlTZXJ2aWNlOiBSZXN0QXBpU2VydmljZSxcbiAgICBwcml2YXRlIGNvb2tpZTogQ29va2llU2VydmljZSxcbiAgICBwcml2YXRlIGNkcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHRyYW5zbGF0aW9uOlRyYW5zbGF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIG1peHBhbmVsOiBNaXhwYW5lbFNlcnZpY2VcbiAgICApIHtcbiAgICAgIHRoaXMubXlPYnNlcnZlciA9IHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICAgIHRoaXMuZXhwYW5kR2xvYmFsU2V0dGluZ3MgPSB0aGlzLnJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpLmV4dHJhcy5zdGF0ZSAmJiB0aGlzLnJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpLmV4dHJhcy5zdGF0ZS5leHBhbmRQYW5lbDsgICAgICAgIFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgLy8gRGV0ZXJtaW5lIHRoZW1lIHBvaW50IGJhc2VkIG9uIGRvbWFpblxuICAgICAgdGhpcy5kZXRlcm1pbmVUaGVtZVBvaW50KCk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB0aGUgdGhlbWUgcG9pbnQgYmFzZWQgb24gdGhlIGN1cnJlbnQgZG9tYWluXG4gICAqIFVzZXMgU1RBR0lOR19USEVNRV9QT0lOVCBmb3IgbG9jYWwsIGhlcm9rdSwgb3IgYXBwdGVzdCBkb21haW5zXG4gICAqIFVzZXMgUFJPRF9USEVNRV9QT0lOVCBmb3IgYWxsIG90aGVyIGRvbWFpbnNcbiAgICovXG4gIHByaXZhdGUgZGV0ZXJtaW5lVGhlbWVQb2ludCgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50RG9tYWluID0gd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgXG4gICAgLy8gQ2hlY2sgaWYgZG9tYWluIGNvbnRhaW5zIGxvY2FsLCBoZXJva3UsIG9yIGFwcHRlc3RcbiAgICBjb25zdCBpc1N0YWdpbmdEb21haW4gPSBjdXJyZW50RG9tYWluLmluY2x1ZGVzKCdsb2NhbCcpIHx8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudERvbWFpbi5pbmNsdWRlcygnaGVyb2t1JykgfHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50RG9tYWluLmluY2x1ZGVzKCdhcHB0ZXN0JykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnREb21haW4uaW5jbHVkZXMoJ2xvY2FsaG9zdCcpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50RG9tYWluLmluY2x1ZGVzKCcxMjcuMC4wLjEnKTtcbiAgICBcbiAgICBpZiAoaXNTdGFnaW5nRG9tYWluKSB7XG4gICAgICB0aGlzLnRoZW1lUG9pbnQgPSBjb25zdGFudHMuU1RBR0lOR19USEVNRV9CVUNLRVQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGhlbWVQb2ludCA9IGNvbnN0YW50cy5QUk9EX1RIRU1FX0JVQ0tFVDtcbiAgICB9XG4gICAgXG4gICAgY29uc29sZS5sb2coYFRoZW1lIHBvaW50IGRldGVybWluZWQ6ICR7dGhpcy50aGVtZVBvaW50fSBmb3IgZG9tYWluOiAke2N1cnJlbnREb21haW59YCk7XG4gIH1cblxuICAvKipcbiAgICogUHVibGljIGdldHRlciB0byBhY2Nlc3MgdGhlIGN1cnJlbnQgdGhlbWUgcG9pbnRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgdGhlbWUgcG9pbnQgVVJMXG4gICAqL1xuICBwdWJsaWMgZ2V0VGhlbWVQb2ludCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRoZW1lUG9pbnQ7XG4gIH1cblxuICAvKipcbiAgICogUHVibGljIGdldHRlciB0byBjaGVjayBpZiBjdXJyZW50IGVudmlyb25tZW50IGlzIHN0YWdpbmdcbiAgICogQHJldHVybnMgVHJ1ZSBpZiBzdGFnaW5nIGVudmlyb25tZW50LCBmYWxzZSBpZiBwcm9kdWN0aW9uXG4gICAqL1xuICBwdWJsaWMgaXNTdGFnaW5nRW52aXJvbm1lbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGhlbWVQb2ludCA9PT0gY29uc3RhbnRzLlNUQUdJTkdfVEhFTUVfQlVDS0VUO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbnVhbGx5IHVwZGF0ZSB0aGVtZSBwb2ludCBhbmQgdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAqIEBwYXJhbSBmb3JjZVN0YWdpbmcgLSBGb3JjZSBzdGFnaW5nIHRoZW1lIHBvaW50IGlmIHRydWVcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVUaGVtZVBvaW50KGZvcmNlU3RhZ2luZz86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoZm9yY2VTdGFnaW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudGhlbWVQb2ludCA9IGZvcmNlU3RhZ2luZyA/IGNvbnN0YW50cy5TVEFHSU5HX1RIRU1FX0JVQ0tFVCA6IGNvbnN0YW50cy5QUk9EX1RIRU1FX0JVQ0tFVDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZXRlcm1pbmVUaGVtZVBvaW50KCk7XG4gICAgfVxuICAgIHRoaXMuY2RyZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZnVsbCBVUkwgZm9yIGFuIGFzc2V0IHVzaW5nIHRoZSBjdXJyZW50IHRoZW1lIHBvaW50XG4gICAqIEBwYXJhbSBhc3NldFBhdGggLSBUaGUgYXNzZXQgcGF0aCAoZS5nLiwgJ2xvZ29zL2xvZ28ucG5nJylcbiAgICogQHJldHVybnMgVGhlIGZ1bGwgVVJMIGZvciB0aGUgYXNzZXRcbiAgICovXG4gIHB1YmxpYyBnZXRBc3NldFVybChhc3NldFBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnRoZW1lUG9pbnQpIHtcbiAgICAgIHRoaXMuZGV0ZXJtaW5lVGhlbWVQb2ludCgpO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dGhpcy50aGVtZVBvaW50fS8ke2Fzc2V0UGF0aH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZnVsbCBVUkwgZm9yIGFuIGljb24gdXNpbmcgdGhlIGN1cnJlbnQgdGhlbWUgcG9pbnRcbiAgICogQHBhcmFtIGljb25OYW1lIC0gVGhlIGljb24gbmFtZSAoZS5nLiwgJ21lbnUtaWNvbi5zdmcnKVxuICAgKiBAcmV0dXJucyBUaGUgZnVsbCBVUkwgZm9yIHRoZSBpY29uIHdpdGggdGhlbWUvYXNzZXRzL2ljb25zLyBwYXRoXG4gICAqL1xuICBwdWJsaWMgZ2V0SWNvblVybChpY29uTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMudGhlbWVQb2ludCkge1xuICAgICAgdGhpcy5kZXRlcm1pbmVUaGVtZVBvaW50KCk7XG4gICAgfVxuICAgIHJldHVybiBgJHt0aGlzLnRoZW1lUG9pbnR9L3RoZW1lL2Fzc2V0cy9pY29ucy8ke2ljb25OYW1lfWA7XG4gIH1cblxuICBwYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuICBtYWluUGFuZWxPcGVuU3RhdGUgPSBmYWxzZTtcbiAgcHVibGljIHByZXZBY3RpdmVIZWFkTWVudTtcbiAgcHVibGljIHRvRGlzcGxheUFwcGxpY2F0aW9ucyA9IFtdO1xuICBwdWJsaWMgdG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51OiBhbnlbXTtcbiAgcHVibGljIHRvRGlzcGxheUxpbmtNZW51OiBhbnlbXTtcbiAgcHVibGljIGVycm9yTXNnOnN0cmluZztcblxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZih0aGlzLmFwcGxpY2F0aW9uRGV0YWlsc1sndXNlckluZm8nXSl7XG4gICAgICBsZXQgdXNlclJvbGUgPSB0aGlzLmFwcGxpY2F0aW9uRGV0YWlsc1sndXNlckluZm8nXS5yb2xlO1xuICAgICAgdGhpcy5pc0FkbWluUm9sZSA9IHRoaXMuYWRtaW5Sb2xlcy5pbmRleE9mKHVzZXJSb2xlKSA+IC0xID8gdHJ1ZSA6IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmNhbGN1bGF0ZUxlZnRuYXZTdGF0dXMoKTtcbiAgICAvLyBjb25zdCBjb25maWdzID0gdGhpcy5yb3V0ZXIuY29uZmlnO1xuICAgIC8vIGZvcihsZXQgY29uZmlnIG9mIGNvbmZpZ3Mpe1xuICAgIC8vICAgaWYoY29uZmlnLmNoaWxkcmVuKXtcbiAgICAvLyAgICAgZm9yKGxldCBjaGlsZCBvZiBjb25maWcuY2hpbGRyZW4pe1xuICAgIC8vICAgICAgIGNoaWxkLmNhbkFjdGl2YXRlID0gW0NhbkxvYWRHdWFyZF1cbiAgICAvLyAgICAgfVxuICAgIC8vICAgfVxuICAgIC8vIH1cbiAgICAvLyB0aGlzLnJvdXRlci5yZXNldENvbmZpZyhjb25maWdzKTtcbiAgICB0aGlzLmNoZWNrQXBwbGljYXRpb25EZXRhaWxzKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzKTtcbiAgfVxuXG4gIGNhbGN1bGF0ZUxlZnRuYXZTdGF0dXMoKXtcbiAgICBpZih0aGlzLnNpZGVuYXYgJiYgdGhpcy5zaWRlbmF2Lm9wZW5lZENoYW5nZSl7XG4gICAgICBsZXQgc3RhdHVzICAgICAgICAgID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnbGVmdE5hdk9wZW5TdGF0dXMnKTtcbiAgICAgIHRoaXMubmF2RXhwYW5kZWQgICA9IHN0YXR1cyAmJiBzdGF0dXMgPT0gJ2ZhbHNlJyA/IGZhbHNlIDogdHJ1ZTtcbiAgICAgIHRoaXMuc2lkZW5hdi5vcGVuZWQgPSBzdGF0dXMgJiYgc3RhdHVzID09ICdmYWxzZScgPyBmYWxzZSA6IHRydWU7XG4gICAgICB0aGlzLnNob3dUaXRsZSA9IHRoaXMubmF2RXhwYW5kZWQ7XG4gICAgICB0aGlzLmNkcmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIHRoaXMuc2lkZU5hdlN0YXR1c1N1YnNjcmlwdGlvbiA9IHRoaXMuc2lkZW5hdi5vcGVuZWRDaGFuZ2Uuc3Vic2NyaWJlKChzdGF0dXMpPT57XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2xlZnROYXZPcGVuU3RhdHVzJyxKU09OLnN0cmluZ2lmeShzdGF0dXMpKTtcbiAgICAgICAgdGhpcy5uYXZFeHBhbmRlZCAgID0gc3RhdHVzO1xuICAgICAgICB0aGlzLnNpZGVuYXYub3BlbmVkID0gc3RhdHVzO1xuICAgICAgICB0aGlzLnNob3dUaXRsZSA9IHN0YXR1cztcbiAgICAgICAgdGhpcy5jZHJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgIGNoZWNrQXBwbGljYXRpb25EZXRhaWxzKGFwcGxpY2F0aW9uRGV0YWlsczogYXBwRGV0YWlscykge1xuICAgIHRoaXMuZXJyb3JNc2cgPSAnJztcbiAgICBpZihhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZCAhPSAnYWRzX2FtYXpvbl9kc3AnKXtcbiAgICAgIHRoaXMuY3JlYXRlQXBwRGV0YWlscyhhcHBsaWNhdGlvbkRldGFpbHMpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNyZWF0ZUFwcERldGFpbHMoYXBwbGljYXRpb25EZXRhaWxzOiBhcHBEZXRhaWxzKXtcbiAgICB0aGlzLmNyZWF0ZU5hdmlnYXRpb25TaWRlQmFyKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzKTtcbiAgICAvLyBpZih0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5jdXJyZW50QWNjb3VudCl7XG4gICAgLy8gICB0aGlzLmdldEFjdGl2ZVJlY29Db3VudCh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5jdXJyZW50QWNjb3VudCk7XG4gICAgLy8gfVxuICB9XG5cbiAgcHVibGljIGNyZWF0ZU5hdmlnYXRpb25TaWRlQmFyKGFwcGxpY2F0aW9uRGV0YWlsczogYXBwRGV0YWlscykge1xuICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0anNvbk1lbnVsaXN0cyhhcHBsaWNhdGlvbkRldGFpbHMpLnN1YnNjcmliZSgobWVudWxpc3RzOiBhbnkpID0+IHtcbiAgICAgIC8vIGxldCBtZW51bGlzdHMgPSBHTE9CQUxfTElTVFxuICAgICAgdGhpcy50b0Rpc3BsYXlBcHBsaWNhdGlvbnMgPSB0aGlzLm5hdmlnYXRpb24uZ2V0TWVudUxpc3QoYXBwbGljYXRpb25EZXRhaWxzLCBtZW51bGlzdHMpO1xuICAgICAgdGhpcy50b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUgPSB0aGlzLm5hdmlnYXRpb24uZ2V0R2xvYmFsU2V0dGluZ3NNZW51KGFwcGxpY2F0aW9uRGV0YWlscywgbWVudWxpc3RzKTtcbiAgICAgIC8vIFVzZSBwcm9wZXIgZmlsdGVyaW5nIHN5c3RlbSBmb3IgSm9pbiBJbnRlbnR3aXNlIENvbW11bml0eSBsaW5rXG4gICAgICBjb25zdCBmb3VuZCA9IG1lbnVsaXN0cy5maW5kKGxpc3QgPT4gbGlzdC5pZCA9PT0gJ2FwcF9pbnRlbnR3aXNlX2NvbW11bml0eScpO1xuICAgICAgdGhpcy50b0Rpc3BsYXlMaW5rTWVudSA9IGZvdW5kID8gdGhpcy5uYXZpZ2F0aW9uLmdldEFwcGxpY2F0aW9uTWVudUl0ZW0oZm91bmQpID8gW2ZvdW5kXSA6IFtdIDogW107XG4gICAgICB0aGlzLmV4cGFuZEN1cnJlbnRNZW51T25seShhcHBsaWNhdGlvbkRldGFpbHMsIGZhbHNlKTtcbiAgICAgIHRoaXMuZXhwYW5kQ2hpbGRNZW51T25seSh0aGlzLnRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudSk7XG4gICAgICB0aGlzLmNoZWNrRm9yUmVkaXJlY3Rpb24odGhpcy50b0Rpc3BsYXlBcHBsaWNhdGlvbnMsdGhpcy50b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUsYXBwbGljYXRpb25EZXRhaWxzKTtcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMudG9EaXNwbGF5QXBwbGljYXRpb25zICwgdGhpcy50b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUgLCB0aGlzLnRvRGlzcGxheUxpbmtNZW51KTtcbiAgICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmVNZW51KCk7XG4gICAgICB0aGlzLnNldE1lbnVMaXN0KGFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkLHRoaXMudG9EaXNwbGF5QXBwbGljYXRpb25zKTtcbiAgICAgIHRoaXMuaW5Db250ZXh0SW5zaWdodHNXTEFwcCA9IHRoaXMuaGlkZU1lbnVGb3JXTCgpO1xuICAgICAgdGhpcy5jZHJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgc2V0TWVudUxpc3QoYXBwSWQsbWVudUxpc3Qpe1xuICAgIHZhciBhcHBEZXRhaWxzOmFueSA9IG5ldyBPYmplY3QoKTtcbiAgICBhcHBEZXRhaWxzLmFwcGljYXRpb25JZCA9IGFwcElkO1xuICAgIGFwcERldGFpbHMubWVudUxpc3QgPSBtZW51TGlzdC5maW5kKChtZW51KT0+eyByZXR1cm4gbWVudS5pZCA9PSBhcHBJZH0pXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2FwcERldGFpbHMnLEpTT04uc3RyaW5naWZ5KGFwcERldGFpbHMpKTtcbiAgfVxuXG4gIHB1YmxpYyBtZW51Q2xpY2tlZChvYmo6IGFueSkge1xuICAgIHRoaXMuZXhwYW5kQ3VycmVudE1lbnVPbmx5KHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLCB0cnVlKTtcbiAgICB0aGlzLmV4cGFuZENoaWxkTWVudU9ubHkodGhpcy50b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUpO1xuICAgIGlmKG9iaikge1xuICAgICAgdGhpcy5hY3RpdmVQYW5lbCA9IG9iai5hY3RpdmVQYW5lbDtcbiAgICB9XG4gICAgdGhpcy5jZHJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cbiAgXG4gIHB1YmxpYyBleHBhbmRDaGlsZE1lbnVPbmx5KHRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudSkge1xuICAgIHNldFRpbWVvdXQoKCk9PntcbiAgICAgICAvLyB0aGlzLmlzR2xvYmFsU2V0dGluZ3NNZW51QWN0aXZlID0gZmFsc2U7XG4gICAgICBsZXQgdXJsQXJyYXkgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJy8nKTtcbiAgICAgIGxldCByb3V0ZVVybCA9IHVybEFycmF5W3VybEFycmF5Lmxlbmd0aCAtIDFdO1xuICAgICAgbGV0IGN1cnJlbnRSb3V0ZSA9IHJvdXRlVXJsLnNwbGl0KCc/JylbMF07XG4gICAgICAgIGlmKHRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudSAmJiB0b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUubGVuZ3RoKSB7XG4gICAgICAgICAgdG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51WzBdLnBhbmVsT3BlblN0YXRlID0gZmFsc2U7XG4gICAgICAgIGlmKHRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudVswXS5jaGlsZHJlbiAmJiB0b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnVbMF0uY2hpbGRyZW4ubGVuZ3RoKXtcbiAgICAgICAgICBmb3IobGV0IG1lbnUgb2YgdG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51WzBdLmNoaWxkcmVuKXtcbiAgICAgICAgICAgIGlmKG1lbnUucm91dGU9PWN1cnJlbnRSb3V0ZSl7XG4gICAgICAgICAgICAgIHRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudVswXS5wYW5lbE9wZW5TdGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgIC8vIHRoaXMuaXNHbG9iYWxTZXR0aW5nc01lbnVBY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuY2RyZWYuZGV0ZWN0Q2hhbmdlcygpOyAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gYWZ0ZXIgc2V0VGltZW91dCBvcGVyYXRpb25cbiAgICB9LCAxMDApXG4gICBcbiAgfVxuXG4gIHB1YmxpYyBleHBhbmRDdXJyZW50TWVudU9ubHkoYXBwbGljYXRpb25EZXRhaWxzLCBvbk1lbnVDbGlja2VkKSB7XG4gICAgZm9yKGxldCBoZWFkTWVudSBvZiB0aGlzLnRvRGlzcGxheUFwcGxpY2F0aW9ucykge1xuICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSBmYWxzZTtcbiAgICB9XG4gICAgXG4gICAgZm9yKGxldCBoZWFkTWVudSBvZiB0aGlzLnRvRGlzcGxheUFwcGxpY2F0aW9ucykge1xuICAgICAgICBpZihoZWFkTWVudS5pZCA9PSBhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZCkge1xuICAgICAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRBcHAgPSBoZWFkTWVudTtcbiAgICAgICAgfSBlbHNlIGlmKGhlYWRNZW51LmlkLmluZGV4T2YoYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQpID4gLTEpIHtcbiAgICAgICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuXG4gICAgICAgICAgbGV0IHVybEFycmF5ID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcvJyk7XG4gICAgICAgICAgbGV0IHJvdXRlVXJsID0gdXJsQXJyYXlbdXJsQXJyYXkubGVuZ3RoIC0gMV07XG4gICAgICAgICAgaWYoKGhlYWRNZW51LmlkPT0gXCJhZHNfYW1hem9uX3NlbGxlcl9zZWxsZXJfYW5hbHl0aWNzXCIgfHwgaGVhZE1lbnUuaWQ9PSBcImFkc19hbWF6b25fc2VsbGVyX3ZlbmRvcl9hbmFseXRpY3NcIikgJiYgdXJsQXJyYXkubGVuZ3RoID4yKXtcbiAgICAgICAgICAgIHVybEFycmF5PSB1cmxBcnJheS5zbGljZSh1cmxBcnJheS5sZW5ndGgtMik7XG4gICAgICAgICAgICByb3V0ZVVybD0gdXJsQXJyYXkuam9pbignLycpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgY3VycmVudFJvdXRlID0gcm91dGVVcmwuc3BsaXQoJz8nKVswXTtcbiAgICAgICAgICBpZihoZWFkTWVudS5pZCA9PSBcImFkc19hbWF6b25fY29udGVudF9jb250ZW50X2FuYWx5dGljc1wiICYmIHRoaXMubmF2aWdhdGlvbi5jb250ZW50QXBwUm91dGVzLmluZGV4T2YoY3VycmVudFJvdXRlKT4tMSApIHtcbiAgICAgICAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEFwcCA9IGhlYWRNZW51O1xuICAgICAgICAgIH0gZWxzZSBpZihoZWFkTWVudS5pZCA9PSBcImFkc19hbWF6b25fY29udGVudF9zaGFyZV9vZl92b2ljZVwiICYmIHRoaXMubmF2aWdhdGlvbi5zb3ZBcHBSb3V0ZXMuaW5kZXhPZihjdXJyZW50Um91dGUpPi0xKSB7XG4gICAgICAgICAgICAgIGlmKChjdXJyZW50Um91dGUgIT0gJ3Byb2R1Y3QtbWV0YS1kYXRhJyAmJiBjdXJyZW50Um91dGUgIT0gJ2JyYW5kLXRlcm1zLXNldHRpbmdzJyAmJiBjdXJyZW50Um91dGUgIT0gJ2xhYmVscy1zZXR0aW5ncycgJiYgY3VycmVudFJvdXRlICE9ICdzdWItYnJhbmRzJyAmJiBjdXJyZW50Um91dGUgIT0gJ3N1Yi1icmFuZHMtbWFwcGluZycgJiYgY3VycmVudFJvdXRlICE9ICdzb3Ytc2V0dGluZ3MnICYmIGN1cnJlbnRSb3V0ZSAhPSAnY29udGVudC1zZXR0aW5ncycgJiYgY3VycmVudFJvdXRlICE9ICdzZWFyY2gtcXVlcnktcGVyZm9ybWFuY2UnKSB8fCAhdGhpcy5jdXJyZW50QXBwIHx8IHRoaXMuY3VycmVudEFwcC5uYW1lID09ICdTaGFyZSBPZiBWb2ljZScpIHtcbiAgICAgICAgICAgICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXBwID0gaGVhZE1lbnU7XG4gICAgICAgICAgICAgICAgaWYob25NZW51Q2xpY2tlZCB8fCB0aGlzLmN1cnJlbnRBcHAubmFtZSA9PSAnU2hhcmUgT2YgVm9pY2UnKSB7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmKGhlYWRNZW51LmlkID09IFwiYWRzX2FtYXpvbl9zZWxsZXJfc2VsbGVyX2FuYWx5dGljc1wiICYmIHRoaXMubmF2aWdhdGlvbi5zZWxsZXJBbmFseXRpY3NBcHBSb3V0ZXMuaW5kZXhPZihjdXJyZW50Um91dGUpPi0xKXtcbiAgICAgICAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEFwcCA9IGhlYWRNZW51O1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmKGhlYWRNZW51LmlkID09IFwiYWRzX2FtYXpvbl9zZWxsZXJfdmVuZG9yX2FuYWx5dGljc1wiICYmIHRoaXMubmF2aWdhdGlvbi52ZW5kb3JBbmFseXRpY3NBcHBSb3V0ZXMuaW5kZXhPZihjdXJyZW50Um91dGUpPi0xKSB7XG4gICAgICAgICAgICBpZigoY3VycmVudFJvdXRlICE9ICdwcm9kdWN0LW1ldGEtZGF0YScgJiYgY3VycmVudFJvdXRlICE9ICdicmFuZC10ZXJtcy1zZXR0aW5ncycgJiYgY3VycmVudFJvdXRlICE9ICdsYWJlbHMtc2V0dGluZ3MnICAmJiBjdXJyZW50Um91dGUgIT0gJ3N1Yi1icmFuZHMnICYmIGN1cnJlbnRSb3V0ZSAhPSAnc3ViLWJyYW5kcy1tYXBwaW5nJyAmJiBjdXJyZW50Um91dGUgIT0gJ3Nvdi1zZXR0aW5ncycgJiYgY3VycmVudFJvdXRlICE9ICdjb250ZW50LXNldHRpbmdzJyAmJiBjdXJyZW50Um91dGUgIT0gJ3NlYXJjaC1xdWVyeS1wZXJmb3JtYW5jZScpIHx8ICF0aGlzLmN1cnJlbnRBcHAgfHwgdGhpcy5jdXJyZW50QXBwLm5hbWUgPT0gJ1ZlbmRvciBBbmFseXRpY3MnKSB7XG4gICAgICAgICAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXBwID0gaGVhZE1lbnU7XG4gICAgICAgICAgICAgIGlmKG9uTWVudUNsaWNrZWQgfHwgdGhpcy5jdXJyZW50QXBwLm5hbWUgPT0gJ1ZlbmRvciBBbmFseXRpY3MnKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICAvLyAgaWYoaGVhZE1lbnUuY2hpbGRyZW4pe1xuICAgICAgICAvLyAgICBoZWFkTWVudS5jaGlsZHJlbi5mb3JFYWNoKG1lbnUgPT4ge1xuICAgICAgICAvLyAgICAgIGlmIChtZW51LmNoaWxkcmVuICYmIG1lbnUudHlwZSA9PSBcImV4cGFuZGFibGVcIikge1xuICAgICAgICAvLyAgICAgICAgaGVhZE1lbnUuY2hpbGRyZW4uZm9yRWFjaChzdWJtZW51ID0+IHtcbiAgICAgICAgLy8gICAgICAgICBpZih0aGlzLmlzQ2hlY2tBY3RpdmVSb3V0ZShzdWJtZW51LnJvdXRlLGhlYWRNZW51KSl7XG4gICAgICAgIC8vICAgICAgICAgICAgbWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWU7XG4gICAgICAgIC8vICAgICAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlO1xuXG4gICAgICAgIC8vICAgICAgICAgfVxuICAgICAgICAvLyAgICAgICAgfSlcbiAgICAgICAgLy8gICAgICB9XG4gICAgICAgIC8vICAgIH0pO1xuICAgICAgICAvLyB9XG4gICAgICB9XG4gICAgICB0aGlzLmNkcmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgcHVibGljIGdldFRvb2x0aXBJbmZvKGhlYWRtZW51KXtcbiAgICBpZih0aGlzLnNpZGVuYXYgJiYgdGhpcy5zaWRlbmF2Lm9wZW5lZCl7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9ZWxzZXtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkQXBwbGljYXRpb24oaGVhZG1lbnUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RlZEFwcGxpY2F0aW9uKGhlYWRtZW51KXtcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvbi5zZWxlY3RlZEFwcGxpY2F0aW9uKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLCBoZWFkbWVudSk7XG4gIH1cbiAgZ2V0IHNpZGVJZEluZm8oKXtcbiAgICBpZih0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyAmJiB0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5zaWRlYmFySW5mbyAmJiB0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5zaWRlYmFySW5mby5zaXRlSWQpe1xuICAgICAgcmV0dXJuIE51bWJlcih0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5zaWRlYmFySW5mby5zaXRlSWQpXG4gICAgfWVsc2UgaWYodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMgJiYgdGhpcy5hcHBsaWNhdGlvbkRldGFpbHMgJiYgdGhpcy5hcHBsaWNhdGlvbkRldGFpbHNbJ3NpdGVJZCddKXtcbiAgICAgIHJldHVybiBOdW1iZXIodGhpcy5hcHBsaWNhdGlvbkRldGFpbHNbJ3NpdGVJZCddKVxuICAgIH1cbiAgICByZXR1cm4gMTtcbiAgfVxuXG5cbiAgcHVibGljIGNoZWNrRm9yUmVkaXJlY3Rpb24oYXBwTWVudXMsIGdzTWVudXMsIGFwcGxpY2F0aW9uRGV0YWlscykge1xuICAgIGNvbnN0IGN1cnJlbnRSb3V0ZSA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnPycpWzBdO1xuICAgIGNvbnN0IGN1cnJlbnRBcHBNZW51cyA9IGFwcE1lbnVzLmZpbmQoYXBwID0+ICBhcHAuaWQuaW5kZXhPZihhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZCkgPj0gMCk7XG5cbiAgICBpZiAoY3VycmVudEFwcE1lbnVzKSB7XG4gICAgICBjb25zdCBhbGxNZW51cyA9IFtjdXJyZW50QXBwTWVudXMsIC4uLmdzTWVudXNdO1xuICAgICAgY29uc3QgaXNNZW51QXZhaWxhYmxlID0gZmluZExpbmsoYWxsTWVudXMpO1xuICAgICAgaWYgKCFpc01lbnVBdmFpbGFibGUpIHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uLmdldEhvc3RPcmlnaW5BbmROYXZpZ2F0ZShjdXJyZW50QXBwTWVudXMuZGVmYXVsdHVybCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmF2aWdhdGlvbi5nZXRIb3N0T3JpZ2luQW5kTmF2aWdhdGUodGhpcy50b0Rpc3BsYXlBcHBsaWNhdGlvbnNbMF0uZGVmYXVsdHVybCk7XG4gICAgfVxuXG5cbiAgICBmdW5jdGlvbiBpc01lbnVSb3V0ZU1hdGNoKGxpbmspIHtcbiAgICAgIHJldHVybiBjdXJyZW50Um91dGUgPT09IGAvJHtsaW5rfWA7XG4gICAgfSBcblxuICAgIGZ1bmN0aW9uIGZpbmRMaW5rKG1lbnVBcnJheSkge1xuICAgICAgcmV0dXJuIG1lbnVBcnJheS5zb21lKGZ1bmN0aW9uKG1lbnUpIHtcbiAgICAgICAgICBpZihtZW51LmxldmVsID09IFwib25lXCIgJiYgbWVudS5jaGlsZHJlbiAmJiBtZW51LmNoaWxkcmVuLmxlbmd0aCA+IDApe1xuICAgICAgICAgIC8vIElmIHRoZSBtZW51IGhhcyBjaGlsZHJlbiwgc2VhcmNoIHJlY3Vyc2l2ZWx5XG4gICAgICAgICAgaWYgKG1lbnUuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZpbmRMaW5rKG1lbnUuY2hpbGRyZW4pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IG1lbnUgaXRlbSBoYXMgYSBtYXRjaGluZyBsaW5rXG4gICAgICAgICAgaWYgKGlzTWVudVJvdXRlTWF0Y2gobWVudS5yb3V0ZSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIGNoaWxkIHJvdXRlcywgc2VhcmNoIHdpdGhpbiB0aGVtXG4gICAgICAgICAgaWYgKG1lbnUuY2hpbGRfcm91dGVzKSB7XG4gICAgICAgICAgICAgIHJldHVybiBtZW51LmNoaWxkX3JvdXRlcy5zb21lKGZ1bmN0aW9uKGNoaWxkUm91dGUpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBpc01lbnVSb3V0ZU1hdGNoKGNoaWxkUm91dGUpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgKTtcbiAgICB9XG4gIH1cblxuXG5cblxuXG4gIC8vIHB1YmxpYyBjaGVja0ZvclJlZGlyZWN0aW9uKGFwcGxpY2F0aW9uRGV0YWlsczogYXBwRGV0YWlscywgbWVudWxpc3RzKSB7XG4gIC8vICAgdHJ5e1xuICAvLyAgICAgbGV0IGlzTWVudVZpc2libGVCeW9yZ1NldHRpbmcgPSB0cnVlO1xuICAvLyAgICAgbGV0IGlzTWVudVZpc2libGVCeVJvbGUgPSB0cnVlO1xuICAvLyAgICAgbGV0IGlzTWVudU5vdFZpc2libGVCeVJvbGUgPSB0cnVlO1xuICAvLyAgICAgbGV0IGlzTWVudXJPcmdXaXRoVXNlclJvbGUgPSB0cnVlO1xuICAvLyAgICAgbGV0IGlzTWVudU5vdFZpc2libGVCeWFwcHNwYWNpZmljY29uZmlnY2hlY2sgPXRydWU7XG4gIC8vICAgICBsZXQgaXNyZWRpcmVjdGVkID0gZmFsc2U7XG4gIC8vICAgICBsZXQgYXBwbGljYXRpb25JZExpc3QgPSBbXCJhZHNfYW1hem9uX3NlbGxlcl9zZWxsZXJfYW5hbHl0aWNzXCIgLCBcImFkc19hbWF6b25fc2VsbGVyX3ZlbmRvcl9hbmFseXRpY3NcIl1cblxuICAvLyAgICAgbGV0IG1lbnVsaXN0ID0gYXBwbGljYXRpb25JZExpc3QuaW5kZXhPZihhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZCkgPiAtMSAmJiBhcHBsaWNhdGlvbkRldGFpbHMubGlzdE1lbnVzICYmIGFwcGxpY2F0aW9uRGV0YWlscy5saXN0TWVudXMubGVuZ3RoID4gMCA/IGFwcGxpY2F0aW9uRGV0YWlscy5saXN0TWVudXMgOiBtZW51bGlzdHM7XG5cbiAgLy8gICAgIGNvbnN0IHJvbGUgPSBbJ1NVUEVSX0FETUlOJywgJ1NVUEVSX0FETUlOX1JFQURfT05MWSddO1xuICAvLyAgICAgaWYgKHJvbGUuaW5kZXhPZihhcHBsaWNhdGlvbkRldGFpbHMudXNlckluZm8ucm9sZSkgPT0gLTEpIHtcbiAgICAgICAgXG4gIC8vICAgICAgIGxldCBhcHBsaWNhdGlvbk1lbnVlcyA9IG1lbnVsaXN0ICYmIG1lbnVsaXN0Lmxlbmd0aCA+IDAgJiYgbWVudWxpc3QuZmluZCgobWVudXMpPT57XG4gIC8vICAgICAgICAgcmV0dXJuIG1lbnVzLmlkID09IGFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkXG4gIC8vICAgICAgIH0pXG5cbiAgLy8gICAgICAgaWYgKGFwcGxpY2F0aW9uTWVudWVzICYmIGFwcGxpY2F0aW9uTWVudWVzLm9yZ2FuaXphdGlvbl9zZXR0aW5nX25vdF9pbikge1xuICAvLyAgICAgICAgIGlzTWVudVZpc2libGVCeW9yZ1NldHRpbmcgPSB0aGlzLm5hdmlnYXRpb24uY2hlY2tGb3JOb3RPcmdTZXR0aW5ncyhhcHBsaWNhdGlvbk1lbnVlcy5vcmdhbml6YXRpb25fc2V0dGluZ19ub3RfaW4pO1xuICAvLyAgICAgICB9XG5cbiAgLy8gICAgICAgaWYgKGFwcGxpY2F0aW9uTWVudWVzICYmIGFwcGxpY2F0aW9uTWVudWVzLnZpc2liaWxpdHlfcm9sZXMpIHtcbiAgLy8gICAgICAgICBpc01lbnVWaXNpYmxlQnlSb2xlID0gdGhpcy5uYXZpZ2F0aW9uLmNoZWNrRm9yUm9sZXMoYXBwbGljYXRpb25NZW51ZXMudmlzaWJpbGl0eV9yb2xlcyk7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgaWYgKGFwcGxpY2F0aW9uTWVudWVzICYmIGFwcGxpY2F0aW9uTWVudWVzLnZpc2liaWxpdHlfcm9sZXNfbm90X2luKSB7XG4gIC8vICAgICAgICAgaXNNZW51Tm90VmlzaWJsZUJ5Um9sZSA9IHRoaXMubmF2aWdhdGlvbi5jaGVja0ZvcnZpc2liaWxpdHlSb2xlc05vdEluKGFwcGxpY2F0aW9uTWVudWVzLnZpc2liaWxpdHlfcm9sZXNfbm90X2luKTtcbiAgLy8gICAgICAgfVxuXG4gIC8vICAgICAgIGlmIChhcHBsaWNhdGlvbk1lbnVlcyAmJiBhcHBsaWNhdGlvbk1lbnVlcy5hcHBfc3BhY2lmaWNfY29uZmlnX2NoZWNrKSB7XG4gIC8vICAgICAgICAgaXNNZW51Tm90VmlzaWJsZUJ5YXBwc3BhY2lmaWNjb25maWdjaGVjayA9IHRoaXMubmF2aWdhdGlvbi5hcHBTcGVjaWZpY0NvbmZpZyhhcHBsaWNhdGlvbk1lbnVlcy5hcHBfc3BhY2lmaWNfY29uZmlnX2NoZWNrKTtcbiAgLy8gICAgICAgfVxuXG4gIC8vICAgICAgIGlmIChhcHBsaWNhdGlvbk1lbnVlcyAmJiBhcHBsaWNhdGlvbk1lbnVlcy5vcmdfdXNlcl9jdHJsKSB7XG4gIC8vICAgICAgICAgaXNNZW51ck9yZ1dpdGhVc2VyUm9sZSA9IHRoaXMubmF2aWdhdGlvbi5jaGVja0Zvck9yZ1dpdGhVc2VyUm9sZShhcHBsaWNhdGlvbk1lbnVlcy5vcmdfdXNlcl9jdHJsLGFwcGxpY2F0aW9uTWVudWVzLCBhcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5vcmdhbml6YXRpb25JZCk7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgaWYgKGFwcGxpY2F0aW9uTWVudWVzICYmIGFwcGxpY2F0aW9uTWVudWVzLmlkID09IFwiYW1jLXBsYXRmb3JtLXdlYlwiICYmIGFwcGxpY2F0aW9uTWVudWVzLmNoaWxkcmVuKSB7XG4gIC8vICAgICAgICAgbGV0IGlzQ2hpbGRNZW51VmlzaWJsZUJ5Um9sZSA9IHRydWU7XG4gIC8vICAgICAgICAgbGV0IGlzQ2hpbGRNZW51Tm90VmlzaWJsZUJ5Um9sZSA9IHRydWU7XG4gIC8vICAgICAgICAgbGV0IGlzQ2hpbGRNZW51ck9yZ1dpdGhVc2VyUm9sZSA9IHRydWU7XG5cbiAgLy8gICAgICAgICBjb25zdCBjaGlsZG1lbnUgPSB0aGlzLnZhbGlkYXRlUm91dGVCeVN0YXRlKCB0aGlzLnJvdXRlciAsIGFwcGxpY2F0aW9uTWVudWVzLmNoaWxkcmVuKTtcblxuICAvLyAgICAgICAgIGlmIChjaGlsZG1lbnUgJiYgY2hpbGRtZW51LnZpc2liaWxpdHlfcm9sZXNfbm90X2luKSB7XG4gIC8vICAgICAgICAgICBpc0NoaWxkTWVudU5vdFZpc2libGVCeVJvbGUgPSB0aGlzLm5hdmlnYXRpb24uY2hlY2tGb3J2aXNpYmlsaXR5Um9sZXNOb3RJbihjaGlsZG1lbnUudmlzaWJpbGl0eV9yb2xlc19ub3RfaW4pO1xuICAvLyAgICAgICAgIH1cblxuICAvLyAgICAgICAgIGlmIChjaGlsZG1lbnUgJiYgY2hpbGRtZW51LnZpc2liaWxpdHlfcm9sZXMpIHtcbiAgLy8gICAgICAgICAgIGlzQ2hpbGRNZW51VmlzaWJsZUJ5Um9sZSA9IHRoaXMubmF2aWdhdGlvbi5jaGVja0ZvclJvbGVzKGNoaWxkbWVudS52aXNpYmlsaXR5X3JvbGVzKTtcbiAgLy8gICAgICAgICB9XG5cbiAgLy8gICAgICAgICBpZiAoY2hpbGRtZW51ICYmIGNoaWxkbWVudS5vcmdfdXNlcl9jdHJsKSB7XG4gIC8vICAgICAgICAgICBpc0NoaWxkTWVudXJPcmdXaXRoVXNlclJvbGUgPSB0aGlzLm5hdmlnYXRpb24uY2hlY2tGb3JPcmdXaXRoVXNlclJvbGUoY2hpbGRtZW51Lm9yZ191c2VyX2N0cmwsY2hpbGRtZW51LCBhcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5vcmdhbml6YXRpb25JZCk7XG4gIC8vICAgICAgICAgfVxuXG4gIC8vICAgICAgICAgaWYgKCghaXNDaGlsZE1lbnVOb3RWaXNpYmxlQnlSb2xlIHx8ICFpc0NoaWxkTWVudVZpc2libGVCeVJvbGUgfHwgIWlzQ2hpbGRNZW51ck9yZ1dpdGhVc2VyUm9sZSkgJiYgY2hpbGRtZW51KSB7XG4gIC8vICAgICAgICAgICBpc3JlZGlyZWN0ZWQgPSB0cnVlO1xuICAvLyAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL1wiXSk7XG4gIC8vICAgICAgICAgfVxuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGlmICgoIWlzTWVudVZpc2libGVCeW9yZ1NldHRpbmcgfHwgIWlzTWVudVZpc2libGVCeVJvbGUgfHwgIWlzTWVudU5vdFZpc2libGVCeVJvbGUgfHwgIWlzTWVudXJPcmdXaXRoVXNlclJvbGUgfHwgIWlzTWVudU5vdFZpc2libGVCeWFwcHNwYWNpZmljY29uZmlnY2hlY2spICYmICFpc3JlZGlyZWN0ZWQpIHtcbiAgLy8gICAgICAgICBpZiAoIXRoaXMuY3VycmVudEFwcCkge1xuICAvLyAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uLmdldEhvc3RPcmlnaW5BbmROYXZpZ2F0ZSh0aGlzLnRvRGlzcGxheUFwcGxpY2F0aW9uc1swXS5kZWZhdWx0dXJsKTsgIFxuICAvLyAgICAgICAgIH1lbHNle1xuICAvLyAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uLmdldEhvc3RPcmlnaW5BbmROYXZpZ2F0ZShhcHBsaWNhdGlvbk1lbnVlcy5kZWZhdWx0dXJsKTtcbiAgLy8gICAgICAgICB9XG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH1cbiAgLy8gICB9Y2F0Y2goZXJyb3Ipe1xuICAvLyAgICAgICB0aHJvdyBlcnJvcjtcbiAgLy8gICB9XG4gIC8vIH1cblxuICB2YWxpZGF0ZVJvdXRlQnlTdGF0ZShzdGF0ZSAsIGxpc3RNZW51cyl7XG4gICAgdHJ5e1xuICAgICAgICBjb25zdCBmaW5kUm91dGUgPSBsaXN0TWVudXMuZmluZChsaXN0ID0+IHtcbiAgICAgICAgICAgIGlmKGxpc3QubGluayA9PSAnYW1jJytzdGF0ZS51cmwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDtcbiAgICAgICAgICAgIH0gZWxzZSBpZihsaXN0Lm1hdGNoUm91dGVzICYmIGxpc3QubWF0Y2hSb3V0ZXMubGVuZ3RoID4gMCl7XG4gICAgICAgICAgICAgICAgaWYobGlzdC5tYXRjaFJvdXRlcy5pbmNsdWRlcyhzdGF0ZS51cmwpKXtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBsaXN0O1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmluZFJvdXRlO1xuICAgIH1jYXRjaChlcnJvcil7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn1cbiAgXG4gIC8vIHB1YmxpYyBjaGVja0ZvclJlZGlyZWN0aW9uKGFwcGxpY2F0aW9uRGV0YWlsczogYXBwRGV0YWlscykge1xuICAvLyAgIGxldCByb3V0ZSA9ICcnO1xuICAvLyAgIGlmKGFwcGxpY2F0aW9uRGV0YWlscy5jdXJyZW50QWNjb3VudCAmJiAhKHRoaXMubmF2aWdhdGlvbi5pc0hhdmluZ0FueUFjdGl2ZVN1YnMoYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQsYXBwbGljYXRpb25EZXRhaWxzLmN1cnJlbnRBY2NvdW50LnN1YnNjcmlwdGlvbixhcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudEFjY291bnQudHlwZSkpKXtcbiAgLy8gICAgIHN3aXRjaChhcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudEFjY291bnQudHlwZSl7XG4gIC8vICAgICAgIGNhc2UgJ0NPTlRFTlQnOiB7XG4gIC8vICAgICAgICAgICByb3V0ZSA9ICdjb250ZW50L3NoYXJlLW9mLXZvaWNlJ1xuICAvLyAgICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgY2FzZSAnRFNQJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJ2RzcC9vcmRlcidcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBjYXNlICdBTVNfQVRUUklCVVRJT04nOiB7XG4gIC8vICAgICAgICAgcm91dGUgPSAnYXR0cmlidXRpb24vYXR0cmlidXRpb24tY2FtcGFpZ25zJ1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ1NFTExFUl9DRU5UUkFMJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJyMhL2Ftcy1jb250ZW50LWRhc2hib2FyZC9zZWxsZXItc2FsZXMtb3ZlcnZpZXcnO1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ1ZFTkRPUl9DRU5UUkFMJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJyMhL2Ftcy1jb250ZW50LWRhc2hib2FyZC9jdXN0b20tcmVwb3J0cy12ZW5kb3Itc2FsZXMtb3ZlcnZpZXcnO1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ0lOU1RBQ0FSVCc6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICdpbnN0YWNhcnQvaW5zdGFjYXJ0LW92ZXJ2aWV3JztcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBjYXNlICdDUklURU8nOiB7XG4gIC8vICAgICAgICAgcm91dGUgPSAnY3JpdGVvL2NyaXRlby1vdmVydmlldyc7XG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgY2FzZSAnV0FMTUFSVCc6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICd3YWxtYXJ0Lyc7XG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgY2FzZSAnQU1BWk9OX01BUktFVElOR19DTE9VRCc6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICdkcC9kYXRhLWFuYWx5dGljcy1nZXR0aW5nLXN0YXJ0ZWQnO1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ0FNU19WRU5ET1InOlxuICAvLyAgICAgICBjYXNlICdBTVNfU0VMTEVSJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJyMhL2Ftcy1wYWdlLW92ZXJ2aWV3JztcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgfVxuICAvLyAgICAgdGhpcy5uYXZpZ2F0aW9uLmdldEhvc3RPcmlnaW5BbmROYXZpZ2F0ZShyb3V0ZSk7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgcHVibGljIGFzeW5jIGdldFN0cnVjdHVyZUFQSVN1cHBvcnREYXRhKGN1cnJlbnRBY2NvdW50KXtcbiAgICB0cnkge1xuICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0U3RydWN0dXJlQVBJU3VwcG9ydERhdGEoY3VycmVudEFjY291bnQub3JnYW5pemF0aW9uSWQsY3VycmVudEFjY291bnQuYnVzaW5lc3NHcm91cElkLGN1cnJlbnRBY2NvdW50LmFtc0FjY291bnRJZCkuc3Vic2NyaWJlKCBcbiAgICAgIChyZXNwb25zZTphbnkpID0+IHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uLmlzU3RydWN0dXJlQXBpU3VwcG9ydCA9IHJlc3BvbnNlID8gcmVzcG9uc2VbJ3N0cnVjdHVyZUFwaVN1cHBvcnQnXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uLmlzTWFuYWdlZFNlcnZpY2VBY2MgPSByZXNwb25zZSA/IHJlc3BvbnNlWydpc01hbmFnZWRBY2NvdW50J10gOiB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuY3JlYXRlQXBwRGV0YWlscyh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyk7XG4gICAgICAgIHRoaXMuY2RyZWYuZGV0ZWN0Q2hhbmdlcygpOyAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gYWZ0ZXIgQVBJIHJlc3BvbnNlXG4gICAgICB9LFxuICAgICAgKGVycm9yOmFueSkgPT57XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbi5pc1N0cnVjdHVyZUFwaVN1cHBvcnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbi5pc01hbmFnZWRTZXJ2aWNlQWNjID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmNyZWF0ZUFwcERldGFpbHModGhpcy5hcHBsaWNhdGlvbkRldGFpbHMpO1xuICAgICAgICB0aGlzLmNkcmVmLmRldGVjdENoYW5nZXMoKTsgLy8gVHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIGFmdGVyIGVycm9yXG4gICAgICB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuXG4gIH1cbiAgXG4gIHB1YmxpYyBzY3JvbGxUb0FjdGl2ZU1lbnUoKXtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmKHRoaXMubGlzdEl0ZW1zICYmIHRoaXMubGlzdEl0ZW1zLmZpbmQoKF8sIGkpID0+ICBfLmlzQWN0aXZlSXRlbSkgIT0gdW5kZWZpbmVkKXtcbiAgICAgICAgdGhpcy5saXN0LnNjcm9sbFRvcCA9IHRoaXMubGlzdEl0ZW1zLmZpbmQoKF8sIGkpID0+ICBfLmlzQWN0aXZlSXRlbSkub2Zmc2V0VG9wO1xuICAgICAgfVxuICAgIH0sIDUwMCk7XG4gIH1cblxuICBwdWJsaWMgaXNDaGVja0FjdGl2ZVJvdXRlKG1lbnUsaGVhZG1lbnUscGFyZW50TWVudSA9IG51bGwpIHtcbiAgICAvLyBsZXQgdXJsQXJyYXkgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJy8nKTtcbiAgICAvLyBsZXQgcm91dGVVcmwgPSB1cmxBcnJheVt1cmxBcnJheS5sZW5ndGggLSAxXTtcbiAgICAvLyBsZXQgY3VycmVudFJvdXRlID0gcm91dGVVcmwuc3BsaXQoJz8nKVswXTtcbiAgICAvLyBsZXQgcm91dGU9bWVudS5yb3V0ZTtcbiAgICAvLyBsZXQgcGFnZU5hbWU7XG4gICAgLy8gaWYocm91dGUpe1xuICAgIC8vIGxldCBzcGxpdGVkVVJMID0gcm91dGUuc3BsaXQoXCIvXCIpO1xuICAgIC8vIHBhZ2VOYW1lID0gc3BsaXRlZFVSTC5sZW5ndGggPjAgPyAgc3BsaXRlZFVSTFtzcGxpdGVkVVJMLmxlbmd0aCAtIDFdIDogcm91dGU7XG4gICAgLy8gfVxuXG4gICAgbGV0IHJvdXRlVXJsID0gdGhpcy5yb3V0ZXIudXJsO1xuICAgIGxldCBjdXJyZW50Um91dGUgPSByb3V0ZVVybC5zcGxpdCgnPycpWzBdO1xuICAgIGxldCByb3V0ZT1tZW51LnJvdXRlO1xuICAgIGxldCBwYWdlTmFtZTtcbiAgICBpZihyb3V0ZSl7XG4gICAgICBwYWdlTmFtZSA9IHJvdXRlO1xuICAgIH1cblxuICAgIGlmICgoY3VycmVudFJvdXRlID09PSBcIi9cIitwYWdlTmFtZSB8fCBjdXJyZW50Um91dGUgPT09IFwiL1wiK3BhZ2VOYW1lK1wiL2tleXdvcmQtcmVwb3J0XCIgfHwgY3VycmVudFJvdXRlID09PSBcIi9cIitwYWdlTmFtZStcIi9rZXl3b3JkLXN1Z2dlc3Rpb25zL2F1dG9cIiB8fCBjdXJyZW50Um91dGUgPT09IFwiL1wiK3BhZ2VOYW1lK1wiL2tleXdvcmQtc3VnZ2VzdGlvbnMvbWFudWFsXCIpICYmIGhlYWRtZW51IT11bmRlZmluZWQpIHtcbiAgICAgIGlmKHRoaXMucHJldkFjdGl2ZUhlYWRNZW51PT09IHVuZGVmaW5lZCl7XG4gICAgICAgIGhlYWRtZW51LmlzQWN0aXZlPXRydWU7XG4gICAgICAgIHRoaXMucHJldkFjdGl2ZUhlYWRNZW51PWhlYWRtZW51O1xuICAgICAgfWVsc2V7XG4gICAgICAgIHRoaXMucHJldkFjdGl2ZUhlYWRNZW51LmlzQWN0aXZlPWZhbHNlO1xuICAgICAgICBoZWFkbWVudS5pc0FjdGl2ZT10cnVlO1xuICAgICAgICB0aGlzLnByZXZBY3RpdmVIZWFkTWVudT1oZWFkbWVudTtcbiAgICAgIH1cbiAgICAgIGlmKHBhcmVudE1lbnUgIT0gbnVsbCl7XG4gICAgICAgIHRoaXMuYWN0aXZlUGFuZWwgPSBwYXJlbnRNZW51LmlkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfWVsc2UgaWYobWVudSAmJiBtZW51Lm1hdGNoUm91dGVzICYmIHRoaXMucm91dGVyLnVybCl7XG4gICAgICBpZiAobWVudS5tYXRjaFJvdXRlcy5pbmRleE9mKHRoaXMucm91dGVyLnVybC5zcGxpdCgnPycpWzBdKSA+IC0xKSB7XG4gICAgICAgIGhlYWRtZW51LmlzQWN0aXZlPXRydWU7XG4gICAgICAgIHRoaXMucHJldkFjdGl2ZUhlYWRNZW51PWhlYWRtZW51O1xuXG4gICAgICAgIGlmKHBhcmVudE1lbnUgIT0gbnVsbCl7XG4gICAgICAgICAgdGhpcy5hY3RpdmVQYW5lbCA9IHBhcmVudE1lbnUuaWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBlbHNle1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGtlZXBNZW51RXhwYW5kZWQocGFyZW50TWVudUlkOnN0cmluZykge1xuICAgIGlmKHBhcmVudE1lbnVJZC5pbmRleE9mKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQpID49IDAgICl7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWxsTWVudUNvbGxhcHNlKCl7XG4gICAgZm9yKGxldCBoZWFkTWVudSBvZiB0aGlzLnRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudSkge1xuICAgICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBtb2RmaWNhdGlvbkRhdGEoZGF0YTogYW55KTogYW55IHtcbiAgICBsZXQgY29uZmlncyA9IHRoaXMubmF2aWdhdGlvbi5nZXRUeXBlU3RhdHVzQ29uZmlncygpO1xuXHRcdGxldCBvcmRlciA9IE9iamVjdC5rZXlzKGNvbmZpZ3MpO1xuXHRcdGlmKG9yZGVyLmluZGV4T2YoZGF0YS50eXBlKSA+IC0xKXtcblx0XHRcdGRhdGEuYWN0aXZlID0gY29uZmlnc1tkYXRhLnR5cGVdID8gY29uZmlnc1tkYXRhLnR5cGVdIDogZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiBkYXRhO1xuXHR9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgLy8gdGhpcy5zaG93TWVudUljb24oKTtcbiAgICB0aGlzLmNoZWNrQXBwbGljYXRpb25EZXRhaWxzKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzKTtcbiAgICBpZih0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkID09ICdhZHNfYW1hem9uX2RzcCcpe1xuICAgICAgdGhpcy5nZXRTdHJ1Y3R1cmVBUElTdXBwb3J0RGF0YSh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5jdXJyZW50QWNjb3VudCk7XG4gICAgfVxuICAgIHRoaXMuY2RyZWYuZGV0ZWN0Q2hhbmdlcygpOyAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gd2hlbiBpbnB1dHMgY2hhbmdlXG4gIH1cblxuICBwdWJsaWMgZ29Ub0FwcGxpY2F0aW9uKGl0ZW0pIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3NlbGVjdGVkQXBwSWQnKTtcbiAgICBpZihpdGVtLmRlZmF1bHR1cmwpe1xuICAgICAgdGhpcy5nb1RvQXBwRGVmYXVsdFBhZ2UoaXRlbSwgaXRlbS5pZCk7XG4gICAgfWVsc2V7XG4gICAgICBpZihpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICBpZihpdGVtLmNoaWxkcmVuWzBdLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW5bMF0uY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuZ29Ub0FwcERlZmF1bHRQYWdlKGl0ZW0uY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0sIGl0ZW0uaWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZ29Ub0FwcERlZmF1bHRQYWdlKGl0ZW0uY2hpbGRyZW5bMF0sIGl0ZW0uaWQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmdvVG9BcHBEZWZhdWx0UGFnZShpdGVtLCBpdGVtLmlkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ29Ub01lbnVMaW5rKGl0ZW0pIHtcbiAgICBpZiAoaXRlbSAmJiBpdGVtLmxpbmspIHtcbiAgICAgIHdpbmRvdy5vcGVuKGl0ZW0ubGluaywgJ19ibGFuaycpO1xuICAgICAgY29uc3QgcHJhbXMgPSB7XG4gICAgICAgIFwibG9jYXRpb25cIjogbG9jYXRpb24uaHJlZixcbiAgICAgICAgXCJBcHBOYW1lXCI6IGl0ZW0/Lm5hbWUsXG4gICAgICAgIFwibW9kdWxlX25hbWVcIiA6IG51bGxcbiAgICAgIH1cbiAgICAgIHRoaXMubWl4cGFuZWwucHJvZHVjdFRyYWNrRXZlbnQoXCJQYWdlIFZpZXdlZFwiLHByYW1zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYodGhpcy5zaWRlTmF2U3RhdHVzU3Vic2NyaXB0aW9uKXtcbiAgICAgIHRoaXMuc2lkZU5hdlN0YXR1c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnb1RvQXBwRGVmYXVsdFBhZ2UoaXRlbSwgYXBwSWQpIHtcbiAgICB0aGlzLm5hdk1lbnVzQ29tcG9uZW50Lm9uU2VsZWN0TWVudShldmVudCwgaXRlbSwgYXBwSWQpO1xuICB9XG5cbiAgcHVibGljIGhpZGVNZW51Rm9yV0woKXtcbiAgICAgIGxldCBpc09yZ1NldHRpbmc7XG4gICAgICBpZih0aGlzLmFwcGxpY2F0aW9uRGV0YWlsc1sndXNlckluZm8nXS5yb2xlID09PSAnSUFDX0JSQU5EX1JFQURfT05MWScgfHwgKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLm9yZ1NldHRpbmdzICYmIHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLm9yZ1NldHRpbmdzLmxlbmd0aCA9PSAwKSl7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfWVsc2V7XG4gICAgICAgIGlmICh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5vcmdTZXR0aW5ncyAmJiB0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5vcmdTZXR0aW5ncy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaXNPcmdTZXR0aW5nID0gdGhpcy5hcHBsaWNhdGlvbkRldGFpbHMub3JnU2V0dGluZ3MuZmlsdGVyKGZ1bmN0aW9uKG9yZ1NldHRpbmcpe1xuICAgICAgICAgICAgaWYoIG9yZ1NldHRpbmcuc2V0dGluZyA9PT0gJ0lBQ19JTlNJR0hUUycgJiYgKCFvcmdTZXR0aW5nLnZhbHVlIHx8IG9yZ1NldHRpbmcudmFsdWUgJiYgb3JnU2V0dGluZy52YWx1ZSA9PSAnQUNUSVZFJykpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChpc09yZ1NldHRpbmcgIT0gbnVsbCAmJiAoIHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLnNpZGViYXJJbmZvLnNpdGVJZCA+IDExIHx8IHRoaXMuYXBwbGljYXRpb25EZXRhaWxzWyd1c2VySW5mbyddLnJvbGUgPT09ICdJQUNfQlJBTkRfUkVBRF9PTkxZJykpO1xuICAgICAgfVxuICB9XG5cbiAgLy8gcHVibGljIGlzQXBwbGljYXRpb25BY3RpdmUocGFyZW50TWVudUlkKSB7XG4gIC8vICAgaWYocGFyZW50TWVudUlkLmluZGV4T2YodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZCkgPj0gMCAgJiYgdGhpcy5pc0dsb2JhbFNldHRpbmdzTWVudUFjdGl2ZSl7XG4gIC8vICAgICByZXR1cm4gdHJ1ZTtcbiAgLy8gICB9XG4gIC8vICAgZWxzZXtcbiAgLy8gICAgIHJldHVybiBmYWxzZTtcbiAgLy8gICB9XG4gIC8vIH1cblxuICBcbn1cbiIsIjxkaXYgaWQ9XCJsb2FkZXJfc292XCI+XG4gIDxkaXYgaWQ9XCJsb2FkaW5nX2RpdlwiICpuZ0lmPVwiYXBwbGljYXRpb25EZXRhaWxzPy5zaWRlYmFySW5mb1wiPlxuICAgIDxkaXY+XG4gICAgICA8ZGl2IGlkPVwibG9hZGVyXCIgKm5nSWY9XCJzaWRlSWRJbmZvICE9PSAxXCJcbiAgICAgICAgY2xhc3M9XCJzaXRlX3t7c2lkZUlkSW5mb319XCI+XG4gICAgICAgIDxpbWcgc3JjPVwie3thcHBsaWNhdGlvbkRldGFpbHM/LnNpZGViYXJJbmZvPy5sb2dvfX1cIj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBpZD1cImxvYWRlcl9pbWdcIiAqbmdJZj1cInNpZGVJZEluZm8gPT0gMVwiPlxuICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaW1hZ2VzL2hhcHB5X2V5ZXNfY2xvc2VkX3NtYWxsLnN2Z1wiPlxuICAgICAgPC9kaXY+XG4gICAgICA8bWF0LXByb2dyZXNzLWJhciBjbGFzcz1cImxvYWRlcl9wcm9ncmVzcy1iYXItcG9zaXRpb25cIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4RmxleEZpbGwgKm5nSWY9XCJlcnJvck1zZy5sZW5ndGggPT0gMCBlbHNlIGVycm9yQmxvY2tcIiB0cmFuc2xhdGU9XCJub1wiIGlkPVwiYW5ndWxhci0xNi12ZXJzaW9uXCIgW25nQ2xhc3NdPVwieyduYXZtZW51LWV4cGFuZGVkJyA6ICFuYXZFeHBhbmRlZH1cIj5cbiAgPG1hdC10b29sYmFyIGNsYXNzPVwicG9ydGFsLXNpZGUtbWVudS10b3AtdG9vbGJhclwiPlxuICAgIDxtYXQtdG9vbGJhci1yb3cgZnhMYXlvdXQ9XCJyb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwb3J0YWwtZm9yZ2V0LWhlYWRpbmctY2FyZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZW1lbnUtbG9nby1ob2xkZXJcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2lkZUlkSW5mbyAhPT0gMVwiPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiYXBwbGljYXRpb25EZXRhaWxzPy5zaWRlYmFySW5mbz8uZmF2aWNvblwiIHN0eWxlPVwid2lkdGg6IDQwcHggIWltcG9ydGFudDtkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XCIgKm5nSWY9XCIhbmF2RXhwYW5kZWRcIiBbYWx0XT1cImFwcGxpY2F0aW9uRGV0YWlscz8uc2lkZWJhckluZm8/LmZpcnN0TmFtZVwiIGNsYXNzPVwiZmF2aWNvbi1kaW1lbnNpb25cIiAvPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiYXBwbGljYXRpb25EZXRhaWxzPy5zaWRlYmFySW5mbz8ubG9nb1wiIHN0eWxlPVwiZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1wiICAqbmdJZj1cIm5hdkV4cGFuZGVkXCIgY2xhc3M9XCJsb2dvLWRpbWVuc2lvblwiIC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNpZGVJZEluZm8gPT0gMVwiPlxuICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9sb2dvcy9pbnRlbnR3aXNlbG9nby5zdmdcIiBzdHlsZT1cIndpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7ZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1wiICpuZ0lmPVwiIW5hdkV4cGFuZGVkXCIgW2FsdF09XCJhcHBsaWNhdGlvbkRldGFpbHM/LnNpZGViYXJJbmZvPy5maXJzdE5hbWVcIiBjbGFzcz1cImZhdmljb24tZGltZW5zaW9uIGludGVudHdpc2UtZmF2aWNvblwiPlxuICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9sb2dvcy9JbnRlbnR3aXNlLnN2Z1wiICBzdHlsZT1cImRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcIiAqbmdJZj1cIm5hdkV4cGFuZGVkXCIgW2FsdF09XCJhcHBsaWNhdGlvbkRldGFpbHM/LnNpZGViYXJJbmZvPy5maXJzdE5hbWVcIiBjbGFzcz1cImxvZ28tZGltZW5zaW9uIGludGVudHdpc2UtbG9nb1wiPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LXRvb2xiYXItcm93PlxuICA8L21hdC10b29sYmFyPlxuICA8IS0tIDxkaXYgY2xhc3M9XCJzaWRlYmFyLWNvbGxhcHNlLWljb25cIiAqbmdJZj1cImlzQWRtaW5Sb2xlXCI+XG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBjbGFzcz1cInNpZGVtZW51LWljb24tdG9wXCIgKGNsaWNrKT1cImFsbE1lbnVDb2xsYXBzZSgpXCI+XG4gICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwic2lkZW5hdiAmJiBzaWRlbmF2Lm9wZW5lZFwiPmtleWJvYXJkX2Fycm93X3VwPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj4gLS0+XG4gIDxkaXYgKm5nSWY9XCJzaWRlbmF2ICYmIHNpZGVuYXYub3BlbmVkICYmICFpbkNvbnRleHRJbnNpZ2h0c1dMQXBwXCIgY2xhc3M9XCJhcHAtbWVudS1jb250YWluZXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYXBwLW1lbnUtYnV0dG9uIHNlbGVjdGVkLWFwcC1idXR0b25cIiAqbmdJZj1cInRvRGlzcGxheUFwcGxpY2F0aW9ucyAmJiB0b0Rpc3BsYXlBcHBsaWNhdGlvbnMubGVuZ3RoID09IDFcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYXBwLW5hbWUgc2VsZWN0ZWQtYXBwLWNvbnRhaW5lclwiPlxuICAgICAgICA8IS0tIDxtYXQtaWNvbiAqbmdJZj1cImN1cnJlbnRBcHA/Lm5hbWVcIiBjbGFzcz1cInNpZGVOYXZJY29uIHt7Y3VycmVudEFwcD8ubmFtZS5zcGxpdCgnICcpLmpvaW4oJycpfX1cIj48L21hdC1pY29uPiAtLT5cbiAgICAgICAgPGltZyAqbmdJZj1cImN1cnJlbnRBcHA/Lm5hbWVcIiBjbGFzcz1cImljb24gc2lkZS1tZW51LWljb24gY2hpbGRyZW4taWNvblwiIFtzcmNdPVwiZ2V0SWNvblVybChjdXJyZW50QXBwLmljb24gfHwgJ2RlZmF1bHQtaWNvbi5zdmcnKVwiLz5cbiAgICAgICAgPGxhYmVsIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC00cHg7XCIgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKGN1cnJlbnRBcHApXCI+PC9sYWJlbD5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjdXJyZW50QXBwPy5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiPnt7Y3VycmVudEFwcC5iYWRnZX19PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJhcHAtbWVudS1idXR0b24gc2VsZWN0ZWQtYXBwLWJ1dHRvblwiIFttYXQtbWVudS10cmlnZ2VyLWZvcl09XCJhcHBNZW51XCIgKm5nSWY9XCJ0b0Rpc3BsYXlBcHBsaWNhdGlvbnMgJiYgdG9EaXNwbGF5QXBwbGljYXRpb25zLmxlbmd0aCA+IDFcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYXBwLW5hbWUgc2VsZWN0ZWQtYXBwLWNvbnRhaW5lclwiPlxuICAgICAgICA8IS0tIDxtYXQtaWNvbiAqbmdJZj1cImN1cnJlbnRBcHA/Lm5hbWVcIiBjbGFzcz1cInNpZGVOYXZJY29uIHt7Y3VycmVudEFwcD8ubmFtZS5zcGxpdCgnICcpLmpvaW4oJycpfX1cIj48L21hdC1pY29uPiAtLT5cbiAgICAgICAgPGltZyAqbmdJZj1cImN1cnJlbnRBcHA/Lm5hbWVcIiBjbGFzcz1cImljb24gc2lkZS1tZW51LWljb24gY2hpbGRyZW4taWNvblwiIFtzcmNdPVwiZ2V0SWNvblVybChjdXJyZW50QXBwLmljb24gfHwgJ2RlZmF1bHQtaWNvbi5zdmcnKVwiLz5cbiAgICAgICAgPGxhYmVsIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC00cHg7XCIgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKGN1cnJlbnRBcHApXCI+PC9sYWJlbD5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjdXJyZW50QXBwPy5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiPnt7Y3VycmVudEFwcC5iYWRnZX19PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1pY29uXCI+PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxtYXQtbWVudSAjYXBwTWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cImFwcC1tZW51XCIgW2JhY2tkcm9wQ2xhc3NdPVwiJ2FsbC1tb2R1bGUtbWVudXMnXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBoZWFkbWVudSBvZiB0b0Rpc3BsYXlBcHBsaWNhdGlvbnNcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1lbnUtb3B0aW9uXCIgbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZ29Ub0FwcGxpY2F0aW9uKGhlYWRtZW51KVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaGVhZG1lbnUucGFuZWxPcGVuU3RhdGV9XCIgY2xhc3M9XCJ7e2hlYWRtZW51LmlkfX1faWNvblwiICpuZ0lmPVwiaGVhZG1lbnUubmFtZSAhPSAnQWNjb3VudCBNYW5hZ2VtZW50J1wiIHRyYW5zbGF0ZT1cIm5vXCI+XG4gICAgICAgICAgPCEtLSA8bWF0LWljb24gY2xhc3M9XCJzaWRlTmF2SWNvbiBjaGlsZHJlbi1pY29uXCIgW25nQ2xhc3NdPVwiaGVhZG1lbnUubmFtZS5zcGxpdCgnICcpLmpvaW4oJycpXCI+PC9tYXQtaWNvbj4gLS0+XG4gICAgICAgICAgPGltZyBjbGFzcz1cImljb24gY2hpbGRyZW4taWNvbiBzaWRlLW1lbnUtaWNvblwiIFtzcmNdPVwiZ2V0SWNvblVybChoZWFkbWVudS5pY29uIHx8ICdkZWZhdWx0LWljb24uc3ZnJylcIi8+XG4gICAgICAgICAgPGxhYmVsIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRBcHBsaWNhdGlvbihoZWFkbWVudSlcIj48L2xhYmVsPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaGVhZG1lbnUuYmFkZ2VcIiBjbGFzcz1cImJhZGdlLXRleHQgc292LWJldGEtcG9zaXRpb25cIiBbaW5uZXJIVE1MXT1cImhlYWRtZW51LmJhZGdlXCI+PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbWF0LW1lbnU+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicG9ydGFsLXNpZG5hdi1tZW51XCIgZnhGbGV4PVwibm9ncm93IG5vc2hyaW5rXCIgYXBwU2Nyb2xsYWJsZSBbbmdDbGFzc109XCJ7J3doaXRlTGFiZWxTaWRlbmF2JyA6IGluQ29udGV4dEluc2lnaHRzV0xBcHB9XCI+XG4gICAgPG1hdC1leHBhbnNpb24tcGFuZWwgW2V4cGFuZGVkXT1cImhlYWRtZW51LnBhbmVsT3BlblN0YXRlID09IHRydWVcIiBoaWRlVG9nZ2xlPVwidHJ1ZVwiXG4gICAgICAqbmdGb3I9XCJsZXQgaGVhZG1lbnUgb2YgdG9EaXNwbGF5QXBwbGljYXRpb25zXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBjdXJyZW50QXBwLmlkID09PSBoZWFkbWVudS5pZCB9XCJcbiAgICAgIChvcGVuZWQpPVwiaGVhZG1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlXCIgKGNsb3NlZCk9XCJoZWFkbWVudS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlXCI+XG4gICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgbWF0VG9vbHRpcD1cInt7Z2V0VG9vbHRpcEluZm8oaGVhZG1lbnUpfX1cIiBtYXRUb29sdGlwQ2xhc3M9XCJsZWZ0LW5hdi10b29sdGlwXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgICAqbmdJZj1cImhlYWRtZW51LnR5cGUgPT0gJ2V4cGFuZGFibGUnIGVsc2Ugc2luZ2xlTWVudXNcIiBjbGFzcz1cIm1haW4tZXhwYW5zaW9uLXBhbmVsLWhlYWRlclwiXG4gICAgICAgIChjbGljayk9XCJnb1RvQXBwbGljYXRpb24oaGVhZG1lbnUpXCI+XG4gICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgPGltZyBjbGFzcz1cImljb24gc2lkZS1tZW51LWljb24gc2lkZS1tZW51LWljb24tY29sb3JcIiBbc3JjXT1cImdldEljb25VcmwoaGVhZG1lbnUuaWNvbiB8fCAnZGVmYXVsdC1pY29uLnN2ZycpXCIvPlxuICAgICAgICAgIDxoMyBjbGFzcz1cInNpZGVtZW51LWhlYWRpbmcgYXBwbGljYXRpb25NZW51XCI+XG4gICAgICAgICAgICA8bGFiZWwgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKGhlYWRtZW51KVwiPjwvbGFiZWw+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImhlYWRtZW51LmJhZGdlXCIgY2xhc3M9XCJiYWRnZS10ZXh0IHNvdi1iZXRhLXBvc2l0aW9uXCIgW2lubmVySFRNTF09XCJoZWFkbWVudS5iYWRnZVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2gzPlxuICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgPG1hdC1wYW5lbC1kZXNjcmlwdGlvbiBjbGFzcz1cImhlYWRtZW51LWRlc2NyaXB0aW9uXCIgKm5nSWY9XCJuYXZFeHBhbmRlZFwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1haW4tY2hldnJvbi1pY29uXCIgKm5nSWY9XCIhaGVhZG1lbnUucGFuZWxPcGVuU3RhdGVcIj5hcnJvd19yaWdodDwvbWF0LWljb24+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWFpbi1jaGV2cm9uLWljb25cIiAqbmdJZj1cImhlYWRtZW51LnBhbmVsT3BlblN0YXRlXCI+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgPG1hdC1saXN0IGNsYXNzPVwicGFkZGluZy0wcHhcIiAqbmdGb3I9XCJsZXQgbWVudSBvZiBoZWFkbWVudS5jaGlsZHJlblwiIFthdHRyLmlkXT1cImhlYWRtZW51LmlkXCIgW25nQ2xhc3NdPVwieydncm91cC1uYXYtbWVudSc6IG1lbnUuY2hpbGRyZW4gfVwiPlxuICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCAqbmdJZj1cIm1lbnUuY2hpbGRyZW4gZWxzZSBsaXN0TWVudVwiIGNsYXNzPVwiZGl2LWJhY2tncm91bmQtY29sb3Itd2hpdGVcIiBbZXhwYW5kZWRdPVwibWVudS5pZCA9PSBhY3RpdmVQYW5lbFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydhY3RpdmVQYW5lbCc6IG1lbnUuaWQgPT0gYWN0aXZlUGFuZWwgLCAnd2hpdGVMYWJlbEFjdGl2ZScgOiBpbkNvbnRleHRJbnNpZ2h0c1dMQXBwfVwiIGhpZGVUb2dnbGU9XCJ0cnVlXCJcbiAgICAgICAgICAob3BlbmVkKT1cIm1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlXCIgKGNsb3NlZCk9XCJtZW51LnBhbmVsT3BlblN0YXRlID0gZmFsc2VcIj5cbiAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaGVhZGVyLWJvcmRlcic6IG1lbnUucGFuZWxPcGVuU3RhdGUgPT09IHRydWUsICdoZWFkZXItYm9yZGVyLW5vbmUnOiBtZW51LnBhbmVsT3BlblN0YXRlID09PSBmYWxzZSB9XCI+XG4gICAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgICA8aW1nIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxMHB4XCIgKm5nSWY9XCIobWVudS5pY29uICYmIG1lbnUuaWNvbiAhPSAnJykgZWxzZSBkaXNwbGF5SW5pdGlhbHNcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbiBzaWRlLW1lbnUtaWNvbiBzaWRlLW1lbnUtaWNvbi1jb2xvclwiIFtzcmNdPVwiZ2V0SWNvblVybChtZW51Lmljb24pXCIgLz5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaXNwbGF5SW5pdGlhbHM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGVtZW51LXN5bWJvbFwiPlxuICAgICAgICAgICAgICAgICAge3ttZW51LnN5bWJvbH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDxoMyBjbGFzcz1cIm1lbnUtaGVhZGluZyBhcHBsaWNhdGlvblN1Ym1lbnVzXCI+PHNwYW4gY2xhc3M9XCJtZW51LW5hbWUtZXhwYW5kYWJsZVwiIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRBcHBsaWNhdGlvbihtZW51KVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1lbnUuYmFkZ2VcIiBjbGFzcz1cImJhZGdlLXRleHQgc292LWJldGEtcG9zaXRpb24gbGV2ZWwtdHdvLWJhZGdlXCJcbiAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwibWVudS5iYWRnZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgPG1hdC1wYW5lbC1kZXNjcmlwdGlvbiBjbGFzcz1cImNoaWxkcmVuLWRlc2NyaXB0aW9uXCIgKm5nSWY9XCJuYXZFeHBhbmRlZFwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJzdWItY2hldnJvbi1pY29uXCIgKm5nSWY9XCIhbWVudS5wYW5lbE9wZW5TdGF0ZVwiPmtleWJvYXJkX2Fycm93X3JpZ2h0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwic3ViLWNoZXZyb24taWNvblwiICpuZ0lmPVwibWVudS5wYW5lbE9wZW5TdGF0ZVwiPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxuICAgICAgICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICA8IS0tIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPiAtLT5cbiAgICAgICAgICA8bWF0LW5hdi1saXN0ICpuZ0Zvcj1cImxldCBjaGlsZE1lbnUgb2YgbWVudS5jaGlsZHJlbjtcIiBjbGFzcz1cInN1Yi1jaGlsZC1tZW51XCI+XG4gICAgICAgICAgICA8bG5jLW5hdi1tZW51cyBhcHBPZmZzZXRUb3AgW2lzQWN0aXZlSXRlbV09XCJpc0NoZWNrQWN0aXZlUm91dGUoY2hpbGRNZW51LGhlYWRtZW51LG1lbnUpXCIgW2l0ZW1dPVwiY2hpbGRNZW51XCJcbiAgICAgICAgICAgICAgW2FwcGxpY2F0aW9uSWRdPVwiYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWRcIiBbcGFyZW50TWVudUlkXT1cImhlYWRtZW51LmlkXCIgW3BhcmVudFBhbmVsSWRdPVwibWVudS5pZFwiXG4gICAgICAgICAgICAgIChtZW51Q2xpY2tlZCk9XCJtZW51Q2xpY2tlZCgkZXZlbnQpXCIgI25hdk1lbnVzQ29tcG9uZW50PlxuICAgICAgICAgICAgPC9sbmMtbmF2LW1lbnVzPlxuICAgICAgICAgIDwvbWF0LW5hdi1saXN0PlxuICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbGlzdE1lbnU+XG4gICAgICAgICAgPG1hdC1uYXYtbGlzdD5cbiAgICAgICAgICAgIDxsbmMtbmF2LW1lbnVzIGFwcE9mZnNldFRvcCBbaXNBY3RpdmVJdGVtXT1cImlzQ2hlY2tBY3RpdmVSb3V0ZShtZW51LGhlYWRtZW51KVwiIFtpdGVtXT1cIm1lbnVcIlxuICAgICAgICAgICAgICBbYXBwbGljYXRpb25JZF09XCJhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZFwiIFtwYXJlbnRNZW51SWRdPVwiaGVhZG1lbnUuaWRcIlxuICAgICAgICAgICAgICAobWVudUNsaWNrZWQpPVwibWVudUNsaWNrZWQoJGV2ZW50KVwiICNuYXZNZW51c0NvbXBvbmVudD5cbiAgICAgICAgICAgIDwvbG5jLW5hdi1tZW51cz5cbiAgICAgICAgICA8L21hdC1uYXYtbGlzdD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbWF0LWxpc3Q+XG4gICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZU1lbnVzPlxuICAgICAgICA8bWF0LWxpc3Q+XG4gICAgICAgICAgPGxuYy1uYXYtbWVudXMgaWQ9XCJ7e2hlYWRtZW51LmlkfX1cIiBhcHBPZmZzZXRUb3AgW2lzQWN0aXZlSXRlbV09XCJpc0NoZWNrQWN0aXZlUm91dGUoaGVhZG1lbnUsaGVhZG1lbnUpXCJcbiAgICAgICAgICAgIFtpdGVtXT1cImhlYWRtZW51XCIgW2FwcGxpY2F0aW9uSWRdPVwiYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWRcIiBbcGFyZW50TWVudUlkXT1cImhlYWRtZW51LmlkXCJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7e2dldFRvb2x0aXBJbmZvKGhlYWRtZW51KX19XCIgbWF0VG9vbHRpcENsYXNzPVwibGVmdC1uYXYtdG9vbHRpcFwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgICAgIChtZW51Q2xpY2tlZCk9XCJtZW51Q2xpY2tlZCgkZXZlbnQpXCIgI25hdk1lbnVzQ29tcG9uZW50PlxuICAgICAgICAgIDwvbG5jLW5hdi1tZW51cz5cbiAgICAgICAgPC9tYXQtbGlzdD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInBvcnRhbC1nbG9iYWwtc2V0dGluZy1tZW51IHN0aWNreV9ib3R0b21fbWVudVwiICpuZ0lmPVwiIWluQ29udGV4dEluc2lnaHRzV0xBcHBcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiIWluQ29udGV4dEluc2lnaHRzV0xBcHBcIiBjbGFzcz1cImFwcC1tZW51LWNvbnRhaW5lclwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImFwcC1tZW51LUxpbmstYnV0dG9uXCIgKm5nSWY9XCJ0b0Rpc3BsYXlMaW5rTWVudSAmJiB0b0Rpc3BsYXlMaW5rTWVudS5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG1lbnVMaW5rIG9mIHRvRGlzcGxheUxpbmtNZW51XCIgaWQ9XCJ7e21lbnVMaW5rLmlkICsgJ21lbnUnfX1cIiBbc3R5bGUubWFyZ2luLWxlZnRdPVwic2lkZW5hdiAmJiBzaWRlbmF2Lm9wZW5lZCA/ICcwcHgnIDogJzVweCdcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImFwcC1uYW1lXCIgKGNsaWNrKT1cImdvVG9NZW51TGluayhtZW51TGluaylcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaWRlbmF2ICYmIHNpZGVuYXYub3BlbmVkXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyO1wiPlxuICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwibWVudUxpbms/Lm5hbWVcIiBtYXRUb29sdGlwPVwie3tnZXRUb29sdGlwSW5mbyhtZW51TGluayl9fVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCIgbWF0VG9vbHRpcENsYXNzPVwibGVmdC1uYXYtdG9vbHRpcFwiIGNsYXNzPVwiaWNvbiBzaWRlLW1lbnUtaWNvbiBjaGlsZHJlbi1pY29uXCIgW3NyY109XCJnZXRJY29uVXJsKG1lbnVMaW5rLmljb24gfHwgJ2RlZmF1bHQtaWNvbi5zdmcnKVwiLz5cbiAgICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwic2hvd1RpdGxlXCIgY2xhc3M9XCJhcHAtbmFtZS1sYWJlbFwiIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRBcHBsaWNhdGlvbihtZW51TGluaylcIj48L2xhYmVsPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1lbnVMaW5rPy5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiPnt7bWVudUxpbmsuYmFkZ2V9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNpZGVuYXYgJiYgIXNpZGVuYXYub3BlbmVkXCI+XG4gICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJtZW51TGluaz8ubmFtZVwiIG1hdFRvb2x0aXA9XCJ7e2dldFRvb2x0aXBJbmZvKG1lbnVMaW5rKX19XCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIiBtYXRUb29sdGlwQ2xhc3M9XCJsZWZ0LW5hdi10b29sdGlwXCIgY2xhc3M9XCJpY29uIHNpZGUtbWVudS1pY29uIGNoaWxkcmVuLWljb25cIiBbc3JjXT1cImdldEljb25VcmwobWVudUxpbmsuaWNvbiB8fCAnZGVmYXVsdC1pY29uLnN2ZycpXCIvPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1lbnVMaW5rPy5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiPnt7bWVudUxpbmsuYmFkZ2V9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBbZXhwYW5kZWRdPVwic2V0dGluZ3NIZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9PSB0cnVlIHx8IGV4cGFuZEdsb2JhbFNldHRpbmdzXCIgaGlkZVRvZ2dsZT1cInRydWVcIiBpZD1cInt7c2V0dGluZ3NIZWFkTWVudS5pZCArICdtZW51J319XCJcbiAgICAgICpuZ0Zvcj1cImxldCBzZXR0aW5nc0hlYWRNZW51IG9mIHRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogc2V0dGluZ3NIZWFkTWVudS5pc0FjdGl2ZSB9XCJcbiAgICAgIChvcGVuZWQpPVwic2lkZW5hdi5vcGVuKCk7IHNldHRpbmdzSGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlXCIgKGNsb3NlZCk9XCJzZXR0aW5nc0hlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gZmFsc2U7IGV4cGFuZEdsb2JhbFNldHRpbmdzID0gZmFsc2VcIiBbc3R5bGUuYm9yZGVyXT1cInNpZGVuYXYgJiYgc2lkZW5hdi5vcGVuZWQgPyAnJyA6ICdub25lICFpbXBvcnRhbnQnXCI+XG4gICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgbWF0VG9vbHRpcD1cInt7Z2V0VG9vbHRpcEluZm8oc2V0dGluZ3NIZWFkTWVudSl9fVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCIgbWF0VG9vbHRpcENsYXNzPVwibGVmdC1uYXYtdG9vbHRpcFwiXG4gICAgICAgICpuZ0lmPVwic2V0dGluZ3NIZWFkTWVudS50eXBlID09ICdleHBhbmRhYmxlJyBlbHNlIHNpbmdsZU1lbnVzXCIgY2xhc3M9XCJtYWluLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJzaWRlbmF2ICYmIHNpZGVuYXYub3BlbmVkID8gJycgOiAnc3RpY2t5LWJvdHRvbS1jbG9zZWQnXCI+XG4gICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgPGltZyBjbGFzcz1cImljb24gc2lkZS1tZW51LWljb24gc2lkZS1tZW51LWljb24tY29sb3JcIiBbc3JjXT1cImdldEljb25Vcmwoc2V0dGluZ3NIZWFkTWVudS5pY29uIHx8ICdzZXR0aW5ncy1pY29uLnN2ZycpXCIgLz5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJzaWRlbWVudS1oZWFkaW5nIGFwcGxpY2F0aW9uTWVudVwiPlxuICAgICAgICAgICAgPGxhYmVsIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRBcHBsaWNhdGlvbihzZXR0aW5nc0hlYWRNZW51KVwiPjwvbGFiZWw+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNldHRpbmdzSGVhZE1lbnUuYmFkZ2VcIiBjbGFzcz1cImJhZGdlLXRleHQgc292LWJldGEtcG9zaXRpb25cIlxuICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInNldHRpbmdzSGVhZE1lbnUuYmFkZ2VcIj48L3NwYW4+XG4gICAgICAgICAgPC9oMz5cbiAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgIDxtYXQtcGFuZWwtZGVzY3JpcHRpb24gY2xhc3M9XCJzZXR0aW5nLWRlc2NyaXB0aW9uXCIgKm5nSWY9XCJuYXZFeHBhbmRlZFwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1haW4tY2hldnJvbi1pY29uXCIgKm5nSWY9XCIhc2V0dGluZ3NIZWFkTWVudS5wYW5lbE9wZW5TdGF0ZVwiPmFycm93X3JpZ2h0PC9tYXQtaWNvbj5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYWluLWNoZXZyb24taWNvblwiICpuZ0lmPVwic2V0dGluZ3NIZWFkTWVudS5wYW5lbE9wZW5TdGF0ZVwiPmFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+XG4gICAgICAgIDwvbWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxuICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgIDxtYXQtbGlzdCBjbGFzcz1cInBhZGRpbmctMHB4XCIgKm5nRm9yPVwibGV0IG1lbnUgb2Ygc2V0dGluZ3NIZWFkTWVudS5jaGlsZHJlblwiIFthdHRyLmlkXT1cInNldHRpbmdzSGVhZE1lbnUuaWRcIlxuICAgICAgICBbbmdDbGFzc109XCJ7J2dyb3VwLW5hdi1tZW51JzogbWVudS5jaGlsZHJlbiB9XCI+XG4gICAgICAgIDxtYXQtbmF2LWxpc3Q+XG4gICAgICAgICAgPGxuYy1uYXYtbWVudXMgYXBwT2Zmc2V0VG9wIFtpc0FjdGl2ZUl0ZW1dPVwiaXNDaGVja0FjdGl2ZVJvdXRlKG1lbnUsc2V0dGluZ3NIZWFkTWVudSlcIiBbaXRlbV09XCJtZW51XCJcbiAgICAgICAgICAgIFthcHBsaWNhdGlvbklkXT1cImFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkXCIgW3BhcmVudE1lbnVJZF09XCJzZXR0aW5nc0hlYWRNZW51LmlkXCJcbiAgICAgICAgICAgIChtZW51Q2xpY2tlZCk9XCJtZW51Q2xpY2tlZCgkZXZlbnQpXCIgI25hdk1lbnVzQ29tcG9uZW50PlxuICAgICAgICAgIDwvbG5jLW5hdi1tZW51cz5cbiAgICAgICAgPC9tYXQtbmF2LWxpc3Q+XG4gICAgICA8L21hdC1saXN0PlxuICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVNZW51cz5cbiAgICAgICAgPG1hdC1saXN0PlxuICAgICAgICAgIDxsbmMtbmF2LW1lbnVzIFthdHRyLmlkXT1cInNldHRpbmdzSGVhZE1lbnUuaWRcIiBhcHBPZmZzZXRUb3BcbiAgICAgICAgICAgIFtpc0FjdGl2ZUl0ZW1dPVwiaXNDaGVja0FjdGl2ZVJvdXRlKHNldHRpbmdzSGVhZE1lbnUsc2V0dGluZ3NIZWFkTWVudSlcIiBbaXRlbV09XCJzZXR0aW5nc0hlYWRNZW51XCJcbiAgICAgICAgICAgIFthcHBsaWNhdGlvbklkXT1cImFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkXCIgW3BhcmVudE1lbnVJZF09XCJzZXR0aW5nc0hlYWRNZW51LmlkXCJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7e2dldFRvb2x0aXBJbmZvKHNldHRpbmdzSGVhZE1lbnUpfX1cIiBtYXRUb29sdGlwQ2xhc3M9XCJsZWZ0LW5hdi10b29sdGlwXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgICAgICAgKG1lbnVDbGlja2VkKT1cIm1lbnVDbGlja2VkKCRldmVudClcIiAjbmF2TWVudXNDb21wb25lbnQ+XG4gICAgICAgICAgPC9sbmMtbmF2LW1lbnVzPlxuICAgICAgICA8L21hdC1saXN0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG5cbiAgPC9kaXY+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjZXJyb3JCbG9jaz5cbiAgPGRpdiBjbGFzcz1cImVycm9yTXNnXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmVycm9yPC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwiZXJyb3JUeHRcIj57e2Vycm9yTXNnfX08L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPGEgY2xhc3M9XCJoYW1idXJnZXItaWNvbiBleHBhbmRlZC1oYW1idXJnZXItaWNvblwiIHRpdGxlPVwiVG9nZ2xlIE1lbnVcIiAoY2xpY2spPVwic2lkZW5hdi5jbG9zZSgpO2FsbE1lbnVDb2xsYXBzZSgpOyBcIj5cbiAgPG1hdC1pY29uIGNsYXNzPVwibGVmdC1jaGV2cm9uLWljb25cIj5rZXlib2FyZF9hcnJvd19sZWZ0PC9tYXQtaWNvbj5cbjwvYT5cblxuPCEtLSA8aW1nICpuZ0lmPVwic2hvd01lbnVJY29uKClcIiBjbGFzcz1cImZhdmljb24tZGltZW5zaW9uXCIgc3JjPXt7YXBwbGljYXRpb25EZXRhaWxzLnNpZGViYXJJbmZvLmZhdmljb259fSBhbHQ9XCJJbnRlbnR3aXNlIEZhdmljb25cIiAvPlxuICA8YSAqbmdJZj1cInNob3dNZW51SWNvbigpXCIgdGl0bGU9XCJUb2dnbGUgTWVudVwiIGNsYXNzPVwiaGFtYnVyZ2VyLWljb24gY29sbGFwc2VkLWhhbWJ1cmdlclwiXG4gICAgKGNsaWNrKT1cInNpZGVuYXYub3BlbigpXCI+XG4gICAgPG1hdC1pY29uIGNsYXNzPVwicmlnaHQtY2hldnJvbi1pY29uXCI+a2V5Ym9hcmRfYXJyb3dfcmlnaHQ8L21hdC1pY29uPlxuICA8L2E+IC0tPiJdfQ==
1430
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tc2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcHBsaWNhdGlvbi1zaWRlYmFyL3NyYy9saWIvYXBwbGljYXRpb24tc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcHBsaWNhdGlvbi1zaWRlYmFyL3NyYy9saWIvYXBwbGljYXRpb24tc2lkZWJhci1yZXZpc2VkLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQWUsZUFBZSxFQUFFLGFBQWEsRUFBUyxNQUFNLGlCQUFpQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxTQUFTLEVBQXFCLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVB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SSxJQUFJLElBQUksQ0FBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksS0FBSyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7U0FDM0o7SUFDTCxDQUFDOzJIQS9nRFUsMkJBQTJCOytHQUEzQiwyQkFBMkIsOEtBTzNCLG1CQUFtQix3S0FEaEIsa0JBQWtCLHFFQzlCbEMsMHU5QkFvYUE7OzRGRDVZYSwyQkFBMkI7a0JBTnZDLFNBQVM7K0JBQ0Usd0JBQXdCLG1CQUdqQix1QkFBdUIsQ0FBQyxNQUFNO3dUQUl0QyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUU0QixTQUFTO3NCQUExQyxZQUFZO3VCQUFDLGtCQUFrQjtnQkFDQSxJQUFJO3NCQUFuQyxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDRSxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciwgUm91dGVyRXZlbnQsIE5hdmlnYXRpb25TdGFydCwgTmF2aWdhdGlvbkVuZCwgUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblNpZGViYXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcHBsaWNhdGlvbi1zaWRlYmFyLnNlcnZpY2UnXG5pbXBvcnQgeyBNYXRTaWRlbmF2IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQgeyBhcHBEZXRhaWxzIH0gZnJvbSAnLi9hcHAtZGV0YWlscydcbmltcG9ydCB7IE9mZnNldFRvcERpcmVjdGl2ZSwgU2Nyb2xsYWJsZURpcmVjdGl2ZSB9IGZyb20gJy4vbmF2LW1lbnUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFJlc3RBcGlTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9yZXN0LWFwaS5zZXJ2aWNlcydcbmltcG9ydCB7IE5hdk1lbnVzQ29tcG9uZW50IH0gZnJvbSAnLi9uYXYtbWVudXMvbmF2LW1lbnVzLmNvbXBvbmVudCdcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tICduZ3gtY29va2llLXNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEdMT0JBTF9MSVNUIH0gZnJvbSAnLi9uYXZtZW51MSc7XG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBNaXhwYW5lbFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL21peHBhbmVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgUmV2aXNlZEFwcFRhYnNTZWN0aW9uLCBSZXZpc2VkSW50ZWxsaWdlbmNlR3JvdXAsIFJldmlzZWROYXZNZW51SXRlbSwgUmV2aXNlZE5hdmlnYXRpb25Db25maWcsIFJldmlzZWROYXZpZ2F0aW9uU3RhdGUsIFJldmlzZWRTZWN0aW9uIH0gZnJvbSAnLi9yZXZpc2VkLW5hdmlnYXRpb24nO1xuaW1wb3J0IHsgZm9ya0pvaW4sIG9mIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xuYy1uYXZpZ2F0aW9uLXNpZGViYXInLFxuICB0ZW1wbGF0ZVVybDonLi9hcHBsaWNhdGlvbi1zaWRlYmFyLXJldmlzZWQudGVtcGxhdGUuaHRtbCcsXG4gIHN0eWxlVXJsczpbJy4vYXBwbGljYXRpb24tc2lkZWJhci5zY3NzJywnYXBwbGljYXRpb24tc2lkZWJhci50aGVtZS5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uU2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBhcHBsaWNhdGlvbkRldGFpbHMgOmFwcERldGFpbHM7XG5cbiAgQElucHV0KCkgc2lkZW5hdjogTWF0U2lkZW5hdjtcblxuICBAVmlld0NoaWxkcmVuKE9mZnNldFRvcERpcmVjdGl2ZSkgbGlzdEl0ZW1zOiBRdWVyeUxpc3Q8T2Zmc2V0VG9wRGlyZWN0aXZlPjtcbiAgQFZpZXdDaGlsZChTY3JvbGxhYmxlRGlyZWN0aXZlKSBsaXN0OiBTY3JvbGxhYmxlRGlyZWN0aXZlO1xuICBAVmlld0NoaWxkKCduYXZNZW51c0NvbXBvbmVudCcpIG5hdk1lbnVzQ29tcG9uZW50Ok5hdk1lbnVzQ29tcG9uZW50O1xuXG4gIGFjY291bnROYW1lOiBhbnk7XG4gIGFjdGl2ZVBhbmVsOiBhbnk7XG4gIG5hdkV4cGFuZGVkOmJvb2xlYW4gPSBmYWxzZTtcbiAgb2xkTGlzdEl0ZW1zOiBRdWVyeUxpc3Q8T2Zmc2V0VG9wRGlyZWN0aXZlPjtcbiAgaXNBZG1pblJvbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWRtaW5Sb2xlcyA9IFsnU1VQRVJfQURNSU4nLCdTVVBFUl9BRE1JTl9SRUFEX09OTFknXTtcbiAgY3VycmVudEFwcDogYW55O1xuICBzaWRlTmF2U3RhdHVzU3Vic2NyaXB0aW9uOiBhbnk7XG4gIHNpZGVOYXZDbG9zZWRTdGFydFN1YnNjcmlwdGlvbjogYW55O1xuICBteU9ic2VydmVyOiBhbnk7XG4gIGV4cGFuZEdsb2JhbFNldHRpbmdzOiBhbnkgPSBmYWxzZTtcbiAgaW5Db250ZXh0SW5zaWdodHNXTEFwcDogYm9vbGVhbjtcbiAgcHVibGljIHRoZW1lUG9pbnQ6IHN0cmluZzsgLy8gUHVibGljIHZhcmlhYmxlIGZvciB0aGVtZSBwb2ludFxuICBzaG93VGl0bGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSByZXZpc2VkU2VjdGlvbkljb25DYWNoZToge1tzZWN0aW9uSWQ6IHN0cmluZ106IFNhZmVIdG1sIHwgc3RyaW5nfSA9IHt9O1xuXG4gIC8vIGlzR2xvYmFsU2V0dGluZ3NNZW51QWN0aXZlOmJvb2xlYW4gPSBmYWxzZVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBuYXZpZ2F0aW9uOiBBcHBsaWNhdGlvblNpZGViYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBSZXN0QXBpU2VydmljZTogUmVzdEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb29raWU6IENvb2tpZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGlvbjpUcmFuc2xhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtaXhwYW5lbDogTWl4cGFuZWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcbiAgICApIHtcbiAgICAgIHRoaXMubXlPYnNlcnZlciA9IHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICAgIHRoaXMuZXhwYW5kR2xvYmFsU2V0dGluZ3MgPSB0aGlzLnJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpLmV4dHJhcy5zdGF0ZSAmJiB0aGlzLnJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpLmV4dHJhcy5zdGF0ZS5leHBhbmRQYW5lbDsgICAgICAgIFxuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgICBpZiAodGhpcy5pc1JldmlzZWROYXZpZ2F0aW9uRW5hYmxlZCgpICYmIHRoaXMucmV2aXNlZFNlY3Rpb25zICYmIHRoaXMucmV2aXNlZFNlY3Rpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5leHBhbmRDdXJyZW50TWVudU9ubHkodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMsIGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMucmVidWlsZFJldmlzZWROYXZpZ2F0aW9uU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMubG9nT3B0aW1pemVEZWJ1Z1N0YXRlKCk7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvQWN0aXZlTWVudUlmVmlzaWJsZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnN5bmNHbG9iYWxTZXR0aW5nc1BhbmVsT3BlblRvQWN0aXZlUm91dGUoKTtcbiAgICAgICAgICAvLyBMZWdhY3kgbmF2ICsgbmVzdGVkIHBhbmVsIGV4cGFuc2lvbiAoYGlzQ2hpbGRNZW51UGFuZWxFeHBhbmRlZGApIGRlcGVuZCBvbiByb3V0ZTsgT25QdXNoIG5lZWRzIGEgdGljayBhZnRlciBuYXZpZ2F0ZS5cbiAgICAgICAgICB0aGlzLmNkcmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgLy8gRGV0ZXJtaW5lIHRoZW1lIHBvaW50IGJhc2VkIG9uIGRvbWFpblxuICAgICAgdGhpcy5kZXRlcm1pbmVUaGVtZVBvaW50KCk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB0aGUgdGhlbWUgcG9pbnQgYmFzZWQgb24gdGhlIGN1cnJlbnQgZG9tYWluXG4gICAqIFVzZXMgU1RBR0lOR19USEVNRV9QT0lOVCBmb3IgbG9jYWwsIGhlcm9rdSwgb3IgYXBwdGVzdCBkb21haW5zXG4gICAqIFVzZXMgUFJPRF9USEVNRV9QT0lOVCBmb3IgYWxsIG90aGVyIGRvbWFpbnNcbiAgICovXG4gIHByaXZhdGUgZGV0ZXJtaW5lVGhlbWVQb2ludCgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50RG9tYWluID0gd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgXG4gICAgLy8gQ2hlY2sgaWYgZG9tYWluIGNvbnRhaW5zIGxvY2FsLCBoZXJva3UsIG9yIGFwcHRlc3RcbiAgICBjb25zdCBpc1N0YWdpbmdEb21haW4gPSBjdXJyZW50RG9tYWluLmluY2x1ZGVzKCdsb2NhbCcpIHx8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudERvbWFpbi5pbmNsdWRlcygnaGVyb2t1JykgfHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50RG9tYWluLmluY2x1ZGVzKCdhcHB0ZXN0JykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnREb21haW4uaW5jbHVkZXMoJ2xvY2FsaG9zdCcpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50RG9tYWluLmluY2x1ZGVzKCcxMjcuMC4wLjEnKTtcbiAgICBcbiAgICBpZiAoaXNTdGFnaW5nRG9tYWluKSB7XG4gICAgICB0aGlzLnRoZW1lUG9pbnQgPSBjb25zdGFudHMuU1RBR0lOR19USEVNRV9CVUNLRVQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGhlbWVQb2ludCA9IGNvbnN0YW50cy5QUk9EX1RIRU1FX0JVQ0tFVDtcbiAgICB9XG4gICAgXG4gICAgY29uc29sZS5sb2coYFRoZW1lIHBvaW50IGRldGVybWluZWQ6ICR7dGhpcy50aGVtZVBvaW50fSBmb3IgZG9tYWluOiAke2N1cnJlbnREb21haW59YCk7XG4gIH1cblxuICAvKipcbiAgICogUHVibGljIGdldHRlciB0byBhY2Nlc3MgdGhlIGN1cnJlbnQgdGhlbWUgcG9pbnRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgdGhlbWUgcG9pbnQgVVJMXG4gICAqL1xuICBwdWJsaWMgZ2V0VGhlbWVQb2ludCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRoZW1lUG9pbnQ7XG4gIH1cblxuICAvKipcbiAgICogUHVibGljIGdldHRlciB0byBjaGVjayBpZiBjdXJyZW50IGVudmlyb25tZW50IGlzIHN0YWdpbmdcbiAgICogQHJldHVybnMgVHJ1ZSBpZiBzdGFnaW5nIGVudmlyb25tZW50LCBmYWxzZSBpZiBwcm9kdWN0aW9uXG4gICAqL1xuICBwdWJsaWMgaXNTdGFnaW5nRW52aXJvbm1lbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGhlbWVQb2ludCA9PT0gY29uc3RhbnRzLlNUQUdJTkdfVEhFTUVfQlVDS0VUO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbnVhbGx5IHVwZGF0ZSB0aGVtZSBwb2ludCBhbmQgdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAqIEBwYXJhbSBmb3JjZVN0YWdpbmcgLSBGb3JjZSBzdGFnaW5nIHRoZW1lIHBvaW50IGlmIHRydWVcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVUaGVtZVBvaW50KGZvcmNlU3RhZ2luZz86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoZm9yY2VTdGFnaW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudGhlbWVQb2ludCA9IGZvcmNlU3RhZ2luZyA/IGNvbnN0YW50cy5TVEFHSU5HX1RIRU1FX0JVQ0tFVCA6IGNvbnN0YW50cy5QUk9EX1RIRU1FX0JVQ0tFVDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZXRlcm1pbmVUaGVtZVBvaW50KCk7XG4gICAgfVxuICAgIHRoaXMuY2RyZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZnVsbCBVUkwgZm9yIGFuIGFzc2V0IHVzaW5nIHRoZSBjdXJyZW50IHRoZW1lIHBvaW50XG4gICAqIEBwYXJhbSBhc3NldFBhdGggLSBUaGUgYXNzZXQgcGF0aCAoZS5nLiwgJ2xvZ29zL2xvZ28ucG5nJylcbiAgICogQHJldHVybnMgVGhlIGZ1bGwgVVJMIGZvciB0aGUgYXNzZXRcbiAgICovXG4gIHB1YmxpYyBnZXRBc3NldFVybChhc3NldFBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnRoZW1lUG9pbnQpIHtcbiAgICAgIHRoaXMuZGV0ZXJtaW5lVGhlbWVQb2ludCgpO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dGhpcy50aGVtZVBvaW50fS8ke2Fzc2V0UGF0aH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZnVsbCBVUkwgZm9yIGFuIGljb24gdXNpbmcgdGhlIGN1cnJlbnQgdGhlbWUgcG9pbnRcbiAgICogQHBhcmFtIGljb25OYW1lIC0gVGhlIGljb24gbmFtZSAoZS5nLiwgJ21lbnUtaWNvbi5zdmcnKVxuICAgKiBAcmV0dXJucyBUaGUgZnVsbCBVUkwgZm9yIHRoZSBpY29uIHdpdGggdGhlbWUvYXNzZXRzL2ljb25zLyBwYXRoXG4gICAqL1xuICBwdWJsaWMgZ2V0SWNvblVybChpY29uTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMudGhlbWVQb2ludCkge1xuICAgICAgdGhpcy5kZXRlcm1pbmVUaGVtZVBvaW50KCk7XG4gICAgfVxuICAgIHJldHVybiBgJHt0aGlzLnRoZW1lUG9pbnR9L3RoZW1lL2Fzc2V0cy9pY29ucy8ke2ljb25OYW1lfWA7XG4gIH1cblxuICBwYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuICBtYWluUGFuZWxPcGVuU3RhdGUgPSBmYWxzZTtcbiAgcHVibGljIHByZXZBY3RpdmVIZWFkTWVudTtcbiAgcHVibGljIHRvRGlzcGxheUFwcGxpY2F0aW9ucyA9IFtdO1xuICBwdWJsaWMgdG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51OiBhbnlbXTtcbiAgcHVibGljIHRvRGlzcGxheUxpbmtNZW51OiBhbnlbXTtcbiAgcHVibGljIHJldmlzZWROYXZpZ2F0aW9uU3RhdGU6IFJldmlzZWROYXZpZ2F0aW9uU3RhdGU7XG4gIHB1YmxpYyByZXZpc2VkU2VjdGlvbnM6IFJldmlzZWRTZWN0aW9uW10gPSBbXTtcbiAgcHVibGljIHJldmlzZWRTZWN0aW9uU3RhdGU6IHtbc2VjdGlvbklkOiBzdHJpbmddOiBib29sZWFufSA9IHt9O1xuICAvKiogR3JvdXAtbGV2ZWwgZXhwYW5zaW9uIChrZXk6IHNlY3Rpb25JZF9ncm91cElkKS4gT25seSBmb3IgZ3JvdXBlZC1tZW51cyB3aXRoIGEgZ3JvdXAgdGl0bGUuICovXG4gIHB1YmxpYyByZXZpc2VkR3JvdXBFeHBhbmRlZFN0YXRlOiB7W3NlY3Rpb25JZF9ncm91cElkOiBzdHJpbmddOiBib29sZWFufSA9IHt9O1xuICBwdWJsaWMgcmV2aXNlZFNlbGVjdGVkQXBwQnlTZWN0aW9uOiB7W3NlY3Rpb25JZDogc3RyaW5nXTogc3RyaW5nfSA9IHt9O1xuICBwdWJsaWMgZXJyb3JNc2c6c3RyaW5nO1xuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYodGhpcy5hcHBsaWNhdGlvbkRldGFpbHNbJ3VzZXJJbmZvJ10pe1xuICAgICAgbGV0IHVzZXJSb2xlID0gdGhpcy5hcHBsaWNhdGlvbkRldGFpbHNbJ3VzZXJJbmZvJ10ucm9sZTtcbiAgICAgIHRoaXMuaXNBZG1pblJvbGUgPSB0aGlzLmFkbWluUm9sZXMuaW5kZXhPZih1c2VyUm9sZSkgPiAtMSA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5jYWxjdWxhdGVMZWZ0bmF2U3RhdHVzKCk7XG4gICAgLy8gY29uc3QgY29uZmlncyA9IHRoaXMucm91dGVyLmNvbmZpZztcbiAgICAvLyBmb3IobGV0IGNvbmZpZyBvZiBjb25maWdzKXtcbiAgICAvLyAgIGlmKGNvbmZpZy5jaGlsZHJlbil7XG4gICAgLy8gICAgIGZvcihsZXQgY2hpbGQgb2YgY29uZmlnLmNoaWxkcmVuKXtcbiAgICAvLyAgICAgICBjaGlsZC5jYW5BY3RpdmF0ZSA9IFtDYW5Mb2FkR3VhcmRdXG4gICAgLy8gICAgIH1cbiAgICAvLyAgIH1cbiAgICAvLyB9XG4gICAgLy8gdGhpcy5yb3V0ZXIucmVzZXRDb25maWcoY29uZmlncyk7XG4gICAgdGhpcy5jaGVja0FwcGxpY2F0aW9uRGV0YWlscyh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyk7XG4gIH1cblxuICBjYWxjdWxhdGVMZWZ0bmF2U3RhdHVzKCl7XG4gICAgaWYodGhpcy5zaWRlbmF2ICYmIHRoaXMuc2lkZW5hdi5vcGVuZWRDaGFuZ2Upe1xuICAgICAgbGV0IHN0YXR1cyAgICAgICAgICA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2xlZnROYXZPcGVuU3RhdHVzJyk7XG4gICAgICB0aGlzLm5hdkV4cGFuZGVkICAgPSBzdGF0dXMgJiYgc3RhdHVzID09ICdmYWxzZScgPyBmYWxzZSA6IHRydWU7XG4gICAgICB0aGlzLnNpZGVuYXYub3BlbmVkID0gc3RhdHVzICYmIHN0YXR1cyA9PSAnZmFsc2UnID8gZmFsc2UgOiB0cnVlO1xuICAgICAgdGhpcy5zaG93VGl0bGUgPSB0aGlzLm5hdkV4cGFuZGVkO1xuICAgICAgdGhpcy5jZHJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICBpZiAodGhpcy5pc1JldmlzZWROYXZpZ2F0aW9uRW5hYmxlZCgpKSB7XG4gICAgICAgIGlmICh0aGlzLnNpZGVuYXYuY2xvc2VkU3RhcnQpIHtcbiAgICAgICAgICB0aGlzLnNpZGVOYXZDbG9zZWRTdGFydFN1YnNjcmlwdGlvbiA9IHRoaXMuc2lkZW5hdi5jbG9zZWRTdGFydC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgLy8gRG8gbm90IGNsZWFyIHJldmlzZWRTZWN0aW9uU3RhdGUgaGVyZTogaXQgYmVjb21lcyBhbGwgYGZhbHNlYCwgdGhlbiByZWJ1aWxkIHRyZWF0c1xuICAgICAgICAgICAgLy8gYHByZXYgPT09IGZhbHNlYCBhcyBcInVzZXIgY29sbGFwc2VkXCIgYW5kIGtlZXBzIHRoZSBhY3RpdmUgc2VjdGlvbiBjbG9zZWQgYWZ0ZXIgcmVvcGVuLlxuICAgICAgICAgICAgdGhpcy5uYXZFeHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zaG93VGl0bGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2RyZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnNpZGVOYXZTdGF0dXNTdWJzY3JpcHRpb24gPSB0aGlzLnNpZGVuYXYub3BlbmVkQ2hhbmdlLnN1YnNjcmliZSgoc3RhdHVzKT0+e1xuICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdsZWZ0TmF2T3BlblN0YXR1cycsSlNPTi5zdHJpbmdpZnkoc3RhdHVzKSk7XG4gICAgICAgIHRoaXMubmF2RXhwYW5kZWQgPSBzdGF0dXM7XG4gICAgICAgIHRoaXMuc2lkZW5hdi5vcGVuZWQgPSBzdGF0dXM7XG4gICAgICAgIHRoaXMuc2hvd1RpdGxlID0gc3RhdHVzO1xuICAgICAgICBpZiAoc3RhdHVzKSB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNSZXZpc2VkTmF2aWdhdGlvbkVuYWJsZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5leHBhbmRSZXZpc2VkU2VjdGlvbnNDb250YWluaW5nQWN0aXZlUm91dGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zeW5jR2xvYmFsU2V0dGluZ3NQYW5lbE9wZW5Ub0FjdGl2ZVJvdXRlKCk7XG4gICAgICAgICAgdGhpcy5zY3JvbGxUb0FjdGl2ZU1lbnVJZlZpc2libGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNkcmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyAgY2hlY2tBcHBsaWNhdGlvbkRldGFpbHMoYXBwbGljYXRpb25EZXRhaWxzOiBhcHBEZXRhaWxzKSB7XG4gICAgdGhpcy5lcnJvck1zZyA9ICcnO1xuICAgIGlmKGFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkICE9ICdhZHNfYW1hem9uX2RzcCcpe1xuICAgICAgdGhpcy5jcmVhdGVBcHBEZXRhaWxzKGFwcGxpY2F0aW9uRGV0YWlscylcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlQXBwRGV0YWlscyhhcHBsaWNhdGlvbkRldGFpbHM6IGFwcERldGFpbHMpe1xuICAgIHRoaXMuY3JlYXRlTmF2aWdhdGlvblNpZGVCYXIodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMpO1xuICAgIC8vIGlmKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLmN1cnJlbnRBY2NvdW50KXtcbiAgICAvLyAgIHRoaXMuZ2V0QWN0aXZlUmVjb0NvdW50KHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLmN1cnJlbnRBY2NvdW50KTtcbiAgICAvLyB9XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlTmF2aWdhdGlvblNpZGVCYXIoYXBwbGljYXRpb25EZXRhaWxzOiBhcHBEZXRhaWxzKSB7XG4gICAgY29uc3QgY29uc3VtZXJSZXZpc2VkQ29uZmlnID0gdGhpcy5hcHBsaWNhdGlvbkRldGFpbHM/LnJldmlzZWROYXZpZ2F0aW9uO1xuICAgIGNvbnN0IHVzZUxlZ2FjeU5hdmlnYXRpb24gPSBjb25zdW1lclJldmlzZWRDb25maWc/LnVzZUxlZ2FjeU5hdmlnYXRpb24gPT09IHRydWU7XG4gICAgY29uc3Qgc2hvdWxkTG9hZFNlY3Rpb25MYXlvdXQgPSAhdXNlTGVnYWN5TmF2aWdhdGlvbjtcblxuICAgIGZvcmtKb2luKHtcbiAgICAgIG1lbnVsaXN0czogdGhpcy5SZXN0QXBpU2VydmljZS5nZXRqc29uTWVudWxpc3RzKGFwcGxpY2F0aW9uRGV0YWlscyksXG4gICAgICAvKiogU2VjdGlvbiBzdHJ1Y3R1cmU6IFMzIGBzaWRlYmFyLWxheW91dC5qc29uYCBmaXJzdCwgYnVuZGxlZCBgc2lkZWJhci1sYXlvdXQubG9jYWxgIG9uIGVycm9yLiAqL1xuICAgICAgcmV2aXNlZExheW91dDogc2hvdWxkTG9hZFNlY3Rpb25MYXlvdXRcbiAgICAgICAgPyB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldFNpZGViYXJMYXlvdXRDb25maWcoKVxuICAgICAgICA6IG9mKHsgdXNlTGVnYWN5TmF2aWdhdGlvbjogdHJ1ZSwgc2VjdGlvbnM6IFtdIH0gYXMgUmV2aXNlZE5hdmlnYXRpb25Db25maWcpXG4gICAgfSkuc3Vic2NyaWJlKCh7IG1lbnVsaXN0cywgcmV2aXNlZExheW91dCB9OiB7IG1lbnVsaXN0czogYW55OyByZXZpc2VkTGF5b3V0OiBSZXZpc2VkTmF2aWdhdGlvbkNvbmZpZyB9KSA9PiB7XG4gICAgICBjb25zdCBtZXJnZWRBcHBsaWNhdGlvbkRldGFpbHMgPSB7XG4gICAgICAgIC4uLnRoaXMuYXBwbGljYXRpb25EZXRhaWxzLFxuICAgICAgICByZXZpc2VkTmF2aWdhdGlvbjogdXNlTGVnYWN5TmF2aWdhdGlvblxuICAgICAgICAgID8geyAuLi5jb25zdW1lclJldmlzZWRDb25maWcsIHVzZUxlZ2FjeU5hdmlnYXRpb246IHRydWUsIHNlY3Rpb25zOiBbXSB9XG4gICAgICAgICAgOiB7IC4uLnJldmlzZWRMYXlvdXQsIHVzZUxlZ2FjeU5hdmlnYXRpb246IGZhbHNlIH1cbiAgICAgIH07XG4gICAgICB0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyA9IG1lcmdlZEFwcGxpY2F0aW9uRGV0YWlscztcbiAgICAgIC8vIGxldCBtZW51bGlzdHMgPSBHTE9CQUxfTElTVFxuICAgICAgdGhpcy50b0Rpc3BsYXlBcHBsaWNhdGlvbnMgPSB0aGlzLm5hdmlnYXRpb24uZ2V0TWVudUxpc3QobWVyZ2VkQXBwbGljYXRpb25EZXRhaWxzLCBtZW51bGlzdHMpO1xuICAgICAgdGhpcy50b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUgPSB0aGlzLm5hdmlnYXRpb24uZ2V0R2xvYmFsU2V0dGluZ3NNZW51KG1lcmdlZEFwcGxpY2F0aW9uRGV0YWlscywgbWVudWxpc3RzKTtcbiAgICAgIC8vIFVzZSBwcm9wZXIgZmlsdGVyaW5nIHN5c3RlbSBmb3IgSm9pbiBJbnRlbnR3aXNlIENvbW11bml0eSBsaW5rXG4gICAgICBjb25zdCBmb3VuZCA9IG1lbnVsaXN0cy5maW5kKGxpc3QgPT4gbGlzdC5pZCA9PT0gJ2FwcF9pbnRlbnR3aXNlX2NvbW11bml0eScpO1xuICAgICAgdGhpcy50b0Rpc3BsYXlMaW5rTWVudSA9IGZvdW5kID8gdGhpcy5uYXZpZ2F0aW9uLmdldEFwcGxpY2F0aW9uTWVudUl0ZW0oZm91bmQpID8gW2ZvdW5kXSA6IFtdIDogW107XG4gICAgICB0aGlzLmV4cGFuZEN1cnJlbnRNZW51T25seShtZXJnZWRBcHBsaWNhdGlvbkRldGFpbHMsIGZhbHNlKTtcbiAgICAgIHRoaXMuZXhwYW5kQ2hpbGRNZW51T25seSh0aGlzLnRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudSk7XG4gICAgICB0aGlzLmNoZWNrRm9yUmVkaXJlY3Rpb24odGhpcy50b0Rpc3BsYXlBcHBsaWNhdGlvbnMsdGhpcy50b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUsbWVyZ2VkQXBwbGljYXRpb25EZXRhaWxzKTtcbiAgICAgIHRoaXMucmVidWlsZFJldmlzZWROYXZpZ2F0aW9uU3RhdGUoKTtcbiAgICAgIGlmICh0aGlzLm5hdkV4cGFuZGVkICYmIHRoaXMuaXNSZXZpc2VkTmF2aWdhdGlvbkVuYWJsZWQoKSkge1xuICAgICAgICB0aGlzLmV4cGFuZFJldmlzZWRTZWN0aW9uc0NvbnRhaW5pbmdBY3RpdmVSb3V0ZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5zeW5jR2xvYmFsU2V0dGluZ3NQYW5lbE9wZW5Ub0FjdGl2ZVJvdXRlKCk7XG4gICAgICBjb25zb2xlLmxvZyh0aGlzLnRvRGlzcGxheUFwcGxpY2F0aW9ucyAsIHRoaXMudG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51ICwgdGhpcy50b0Rpc3BsYXlMaW5rTWVudSk7XG4gICAgICB0aGlzLnNjcm9sbFRvQWN0aXZlTWVudUlmVmlzaWJsZSgpO1xuICAgICAgdGhpcy5zZXRNZW51TGlzdChtZXJnZWRBcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZCx0aGlzLnRvRGlzcGxheUFwcGxpY2F0aW9ucyk7XG4gICAgICB0aGlzLmluQ29udGV4dEluc2lnaHRzV0xBcHAgPSB0aGlzLmhpZGVNZW51Rm9yV0woKTtcbiAgICAgIHRoaXMuY2RyZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIHNldE1lbnVMaXN0KGFwcElkLG1lbnVMaXN0KXtcbiAgICB2YXIgYXBwRGV0YWlsczphbnkgPSBuZXcgT2JqZWN0KCk7XG4gICAgYXBwRGV0YWlscy5hcHBpY2F0aW9uSWQgPSBhcHBJZDtcbiAgICBhcHBEZXRhaWxzLm1lbnVMaXN0ID0gbWVudUxpc3QuZmluZCgobWVudSk9PnsgcmV0dXJuIG1lbnUuaWQgPT0gYXBwSWR9KVxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhcHBEZXRhaWxzJyxKU09OLnN0cmluZ2lmeShhcHBEZXRhaWxzKSk7XG4gIH1cblxuICBwdWJsaWMgbWVudUNsaWNrZWQob2JqOiBhbnkpIHtcbiAgICB0aGlzLmV4cGFuZEN1cnJlbnRNZW51T25seSh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscywgdHJ1ZSk7XG4gICAgdGhpcy5leHBhbmRDaGlsZE1lbnVPbmx5KHRoaXMudG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51KTtcbiAgICBpZihvYmopIHtcbiAgICAgIHRoaXMuYWN0aXZlUGFuZWwgPSBvYmouYWN0aXZlUGFuZWw7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzUmV2aXNlZE5hdmlnYXRpb25FbmFibGVkKCkpIHtcbiAgICAgIHRoaXMucmVidWlsZFJldmlzZWROYXZpZ2F0aW9uU3RhdGUoKTtcbiAgICB9XG4gICAgdGhpcy5zY3JvbGxUb0FjdGl2ZU1lbnVJZlZpc2libGUoKTtcbiAgICB0aGlzLmNkcmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuICBcbiAgcHVibGljIGV4cGFuZENoaWxkTWVudU9ubHkodG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51KSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnN5bmNHbG9iYWxTZXR0aW5nc1BhbmVsT3BlblRvQWN0aXZlUm91dGUodG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51KTtcbiAgICAgIHRoaXMuY2RyZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDEwMCk7XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgZWFjaCBHbG9iYWwgU2V0dGluZ3MgaGVhZCBwYW5lbCB3aGVuIHRoZSBjdXJyZW50IFVSTCBtYXRjaGVzIHRoYXQgcGFuZWzigJlzIG1lbnUgdHJlZVxuICAgKiAoYW55IGRlcHRoKS4gVXNlZCBvbiBzaWRlbmF2IG9wZW4gYW5kIGFmdGVyIG1lbnUgZGF0YSByZWZyZXNoLlxuICAgKi9cbiAgcHJpdmF0ZSBzeW5jR2xvYmFsU2V0dGluZ3NQYW5lbE9wZW5Ub0FjdGl2ZVJvdXRlKG1lbnVzTGlzdD86IGFueVtdKTogdm9pZCB7XG4gICAgY29uc3QgbGlzdCA9IG1lbnVzTGlzdCA/PyB0aGlzLnRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudTtcbiAgICBpZiAoIWxpc3Q/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsaXN0LmZvckVhY2goKHNldHRpbmdzSGVhZE1lbnU6IGFueSkgPT4ge1xuICAgICAgc2V0dGluZ3NIZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuICAgICAgY29uc3QgY2hpbGRyZW4gPSBzZXR0aW5nc0hlYWRNZW51LmNoaWxkcmVuO1xuICAgICAgaWYgKGNoaWxkcmVuPy5sZW5ndGggJiYgdGhpcy5oYXNBY3RpdmVSb3V0ZUluTWVudXMoY2hpbGRyZW4gYXMgUmV2aXNlZE5hdk1lbnVJdGVtW10pKSB7XG4gICAgICAgIHNldHRpbmdzSGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGV4cGFuZEN1cnJlbnRNZW51T25seShhcHBsaWNhdGlvbkRldGFpbHMsIG9uTWVudUNsaWNrZWQpIHtcbiAgICBmb3IobGV0IGhlYWRNZW51IG9mIHRoaXMudG9EaXNwbGF5QXBwbGljYXRpb25zKSB7XG4gICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuICAgIH1cbiAgICBcbiAgICBmb3IobGV0IGhlYWRNZW51IG9mIHRoaXMudG9EaXNwbGF5QXBwbGljYXRpb25zKSB7XG4gICAgICAgIGlmKGhlYWRNZW51LmlkID09IGFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkKSB7XG4gICAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY3VycmVudEFwcCA9IGhlYWRNZW51O1xuICAgICAgICB9IGVsc2UgaWYoaGVhZE1lbnUuaWQuaW5kZXhPZihhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZCkgPiAtMSkge1xuICAgICAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gZmFsc2U7XG5cbiAgICAgICAgICBsZXQgdXJsQXJyYXkgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJy8nKTtcbiAgICAgICAgICBsZXQgcm91dGVVcmwgPSB1cmxBcnJheVt1cmxBcnJheS5sZW5ndGggLSAxXTtcbiAgICAgICAgICBpZigoaGVhZE1lbnUuaWQ9PSBcImFkc19hbWF6b25fc2VsbGVyX3NlbGxlcl9hbmFseXRpY3NcIiB8fCBoZWFkTWVudS5pZD09IFwiYWRzX2FtYXpvbl9zZWxsZXJfdmVuZG9yX2FuYWx5dGljc1wiKSAmJiB1cmxBcnJheS5sZW5ndGggPjIpe1xuICAgICAgICAgICAgdXJsQXJyYXk9IHVybEFycmF5LnNsaWNlKHVybEFycmF5Lmxlbmd0aC0yKTtcbiAgICAgICAgICAgIHJvdXRlVXJsPSB1cmxBcnJheS5qb2luKCcvJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBjdXJyZW50Um91dGUgPSByb3V0ZVVybC5zcGxpdCgnPycpWzBdO1xuICAgICAgICAgIGlmKGhlYWRNZW51LmlkID09IFwiYWRzX2FtYXpvbl9jb250ZW50X2NvbnRlbnRfYW5hbHl0aWNzXCIgJiYgdGhpcy5uYXZpZ2F0aW9uLmNvbnRlbnRBcHBSb3V0ZXMuaW5kZXhPZihjdXJyZW50Um91dGUpPi0xICkge1xuICAgICAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QXBwID0gaGVhZE1lbnU7XG4gICAgICAgICAgfSBlbHNlIGlmKGhlYWRNZW51LmlkID09IFwiYWRzX2FtYXpvbl9jb250ZW50X3NoYXJlX29mX3ZvaWNlXCIgJiYgdGhpcy5uYXZpZ2F0aW9uLnNvdkFwcFJvdXRlcy5pbmRleE9mKGN1cnJlbnRSb3V0ZSk+LTEpIHtcbiAgICAgICAgICAgICAgaWYoKGN1cnJlbnRSb3V0ZSAhPSAncHJvZHVjdC1tZXRhLWRhdGEnICYmIGN1cnJlbnRSb3V0ZSAhPSAnYnJhbmQtdGVybXMtc2V0dGluZ3MnICYmIGN1cnJlbnRSb3V0ZSAhPSAnbGFiZWxzLXNldHRpbmdzJyAmJiBjdXJyZW50Um91dGUgIT0gJ3N1Yi1icmFuZHMnICYmIGN1cnJlbnRSb3V0ZSAhPSAnc3ViLWJyYW5kcy1tYXBwaW5nJyAmJiBjdXJyZW50Um91dGUgIT0gJ3Nvdi1zZXR0aW5ncycgJiYgY3VycmVudFJvdXRlICE9ICdjb250ZW50LXNldHRpbmdzJyAmJiBjdXJyZW50Um91dGUgIT0gJ3NlYXJjaC1xdWVyeS1wZXJmb3JtYW5jZScpIHx8ICF0aGlzLmN1cnJlbnRBcHAgfHwgdGhpcy5jdXJyZW50QXBwLm5hbWUgPT0gJ1NoYXJlIE9mIFZvaWNlJykge1xuICAgICAgICAgICAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBcHAgPSBoZWFkTWVudTtcbiAgICAgICAgICAgICAgICBpZihvbk1lbnVDbGlja2VkIHx8IHRoaXMuY3VycmVudEFwcC5uYW1lID09ICdTaGFyZSBPZiBWb2ljZScpIHtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYoaGVhZE1lbnUuaWQgPT0gXCJhZHNfYW1hem9uX3NlbGxlcl9zZWxsZXJfYW5hbHl0aWNzXCIgJiYgdGhpcy5uYXZpZ2F0aW9uLnNlbGxlckFuYWx5dGljc0FwcFJvdXRlcy5pbmRleE9mKGN1cnJlbnRSb3V0ZSk+LTEpe1xuICAgICAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QXBwID0gaGVhZE1lbnU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYoaGVhZE1lbnUuaWQgPT0gXCJhZHNfYW1hem9uX3NlbGxlcl92ZW5kb3JfYW5hbHl0aWNzXCIgJiYgdGhpcy5uYXZpZ2F0aW9uLnZlbmRvckFuYWx5dGljc0FwcFJvdXRlcy5pbmRleE9mKGN1cnJlbnRSb3V0ZSk+LTEpIHtcbiAgICAgICAgICAgIGlmKChjdXJyZW50Um91dGUgIT0gJ3Byb2R1Y3QtbWV0YS1kYXRhJyAmJiBjdXJyZW50Um91dGUgIT0gJ2JyYW5kLXRlcm1zLXNldHRpbmdzJyAmJiBjdXJyZW50Um91dGUgIT0gJ2xhYmVscy1zZXR0aW5ncycgICYmIGN1cnJlbnRSb3V0ZSAhPSAnc3ViLWJyYW5kcycgJiYgY3VycmVudFJvdXRlICE9ICdzdWItYnJhbmRzLW1hcHBpbmcnICYmIGN1cnJlbnRSb3V0ZSAhPSAnc292LXNldHRpbmdzJyAmJiBjdXJyZW50Um91dGUgIT0gJ2NvbnRlbnQtc2V0dGluZ3MnICYmIGN1cnJlbnRSb3V0ZSAhPSAnc2VhcmNoLXF1ZXJ5LXBlcmZvcm1hbmNlJykgfHwgIXRoaXMuY3VycmVudEFwcCB8fCB0aGlzLmN1cnJlbnRBcHAubmFtZSA9PSAnVmVuZG9yIEFuYWx5dGljcycpIHtcbiAgICAgICAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBcHAgPSBoZWFkTWVudTtcbiAgICAgICAgICAgICAgaWYob25NZW51Q2xpY2tlZCB8fCB0aGlzLmN1cnJlbnRBcHAubmFtZSA9PSAnVmVuZG9yIEFuYWx5dGljcycpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vICBpZihoZWFkTWVudS5jaGlsZHJlbil7XG4gICAgICAgIC8vICAgIGhlYWRNZW51LmNoaWxkcmVuLmZvckVhY2gobWVudSA9PiB7XG4gICAgICAgIC8vICAgICAgaWYgKG1lbnUuY2hpbGRyZW4gJiYgbWVudS50eXBlID09IFwiZXhwYW5kYWJsZVwiKSB7XG4gICAgICAgIC8vICAgICAgICBoZWFkTWVudS5jaGlsZHJlbi5mb3JFYWNoKHN1Ym1lbnUgPT4ge1xuICAgICAgICAvLyAgICAgICAgIGlmKHRoaXMuaXNDaGVja0FjdGl2ZVJvdXRlKHN1Ym1lbnUucm91dGUsaGVhZE1lbnUpKXtcbiAgICAgICAgLy8gICAgICAgICAgICBtZW51LnBhbmVsT3BlblN0YXRlID0gdHJ1ZTtcbiAgICAgICAgLy8gICAgICAgICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWU7XG5cbiAgICAgICAgLy8gICAgICAgICB9XG4gICAgICAgIC8vICAgICAgICB9KVxuICAgICAgICAvLyAgICAgIH1cbiAgICAgICAgLy8gICAgfSk7XG4gICAgICAgIC8vIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuY2RyZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICBwdWJsaWMgZ2V0VG9vbHRpcEluZm8oaGVhZG1lbnUpe1xuICAgIGlmKHRoaXMuc2lkZW5hdiAmJiB0aGlzLnNpZGVuYXYub3BlbmVkKXtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1lbHNle1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRBcHBsaWNhdGlvbihoZWFkbWVudSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNlbGVjdGVkQXBwbGljYXRpb24oaGVhZG1lbnUpe1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uLnNlbGVjdGVkQXBwbGljYXRpb24odGhpcy5hcHBsaWNhdGlvbkRldGFpbHMsIGhlYWRtZW51KTtcbiAgfVxuXG4gIHB1YmxpYyBpc1JldmlzZWROYXZpZ2F0aW9uRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uYXZpZ2F0aW9uLmlzUmV2aXNlZE5hdmlnYXRpb25FbmFibGVkKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0xlZ2FjeU5hdmlnYXRpb25FbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hdmlnYXRpb24uaXNMZWdhY3lOYXZpZ2F0aW9uRW5hYmxlZCh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyk7XG4gIH1cblxuICBwdWJsaWMgb25SZXZpc2VkU2VjdGlvbkhlYWRlckNsaWNrKHNlY3Rpb25JZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2VjdGlvbiA9IHRoaXMuZ2V0UmV2aXNlZFNlY3Rpb25CeUlkKHNlY3Rpb25JZCk7XG4gICAgaWYgKCFzZWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLm5hdkV4cGFuZGVkICYmIHRoaXMuc2lkZW5hdikge1xuICAgICAgdGhpcy5yZXZpc2VkU2VjdGlvblN0YXRlW3NlY3Rpb25JZF0gPSB0cnVlO1xuICAgICAgdGhpcy5zaWRlbmF2Lm9wZW4oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpc0N1cnJlbnRseUV4cGFuZGVkID0gdGhpcy5pc1JldmlzZWRTZWN0aW9uRXhwYW5kZWQoc2VjdGlvbklkKTtcbiAgICBjb25zdCByb3V0ZUluU2VjdGlvbiA9IHRoaXMuc2VjdGlvbkNvbnRhaW5zQWN0aXZlUm91dGUoc2VjdGlvbik7XG4gICAgaWYgKHJvdXRlSW5TZWN0aW9uKSB7XG4gICAgICB0aGlzLnJldmlzZWRTZWN0aW9uU3RhdGVbc2VjdGlvbklkXSA9ICFpc0N1cnJlbnRseUV4cGFuZGVkO1xuICAgICAgdGhpcy5jZHJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaXNDdXJyZW50bHlFeHBhbmRlZCkge1xuICAgICAgdGhpcy5yZXZpc2VkU2VjdGlvblN0YXRlW3NlY3Rpb25JZF0gPSBmYWxzZTtcbiAgICAgIHRoaXMuY2RyZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yZXZpc2VkU2VjdGlvblN0YXRlW3NlY3Rpb25JZF0gPSB0cnVlO1xuICAgIHRoaXMuY2RyZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgaXNSZXZpc2VkU2VjdGlvbkV4cGFuZGVkKHNlY3Rpb25JZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2VjdGlvbiA9IHRoaXMuZ2V0UmV2aXNlZFNlY3Rpb25CeUlkKHNlY3Rpb25JZCk7XG4gICAgaWYgKHRoaXMucmV2aXNlZFNlY3Rpb25TdGF0ZVtzZWN0aW9uSWRdID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoc2VjdGlvbklkID09PSAnb3B0aW1pemUnICYmIHRoaXMuaXNSZXZpc2VkQXBwVGFic1NlY3Rpb24oc2VjdGlvbikpIHtcbiAgICAgIGlmICh0aGlzLmdldEN1cnJlbnRPcHRpbWl6ZUFwcChzZWN0aW9uKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICEhKHRoaXMucmV2aXNlZFNlY3Rpb25TdGF0ZVtzZWN0aW9uSWRdID09PSB0cnVlIHx8IChzZWN0aW9uICYmIHRoaXMuc2VjdGlvbkNvbnRhaW5zQWN0aXZlUm91dGUoc2VjdGlvbikpKTtcbiAgfVxuXG4gIC8qKiBUcnVlIHdoZW4gYW55IG1lbnUgdW5kZXIgdGhpcyBzZWN0aW9uIG1hdGNoZXMgdGhlIGN1cnJlbnQgcm91dGUgKGUuZy4gY29sbGFwc2VkIHJhaWwgYWN0aXZlIGluZGljYXRvcikuICovXG4gIHB1YmxpYyBpc1JldmlzZWRTZWN0aW9uQWN0aXZlKHNlY3Rpb246IFJldmlzZWRTZWN0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VjdGlvbkNvbnRhaW5zQWN0aXZlUm91dGUoc2VjdGlvbik7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmV2aXNlZFNlY3Rpb25JY29uKHNlY3Rpb246IFJldmlzZWRTZWN0aW9uKTogU2FmZUh0bWwgfCBzdHJpbmcge1xuICAgIGlmICghc2VjdGlvbiB8fCAhc2VjdGlvbi5pZCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5yZXZpc2VkU2VjdGlvbkljb25DYWNoZVtzZWN0aW9uLmlkXSkge1xuICAgICAgdGhpcy5yZXZpc2VkU2VjdGlvbkljb25DYWNoZVtzZWN0aW9uLmlkXSA9IHNlY3Rpb24uaWNvblN2ZyA/IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHNlY3Rpb24uaWNvblN2ZykgOiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZXZpc2VkU2VjdGlvbkljb25DYWNoZVtzZWN0aW9uLmlkXTtcbiAgfVxuXG4gIHB1YmxpYyBpc1JldmlzZWRBcHBUYWJzU2VjdGlvbihzZWN0aW9uOiBSZXZpc2VkU2VjdGlvbik6IHNlY3Rpb24gaXMgUmV2aXNlZEFwcFRhYnNTZWN0aW9uIHtcbiAgICByZXR1cm4gISFzZWN0aW9uICYmIHNlY3Rpb24udHlwZSA9PT0gJ2FwcC10YWJzJztcbiAgfVxuXG4gIHB1YmxpYyBnZXRSZXZpc2VkU2VjdGlvbkFwcHMoc2VjdGlvbjogUmV2aXNlZFNlY3Rpb24pOiBSZXZpc2VkTmF2TWVudUl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMuaXNSZXZpc2VkQXBwVGFic1NlY3Rpb24oc2VjdGlvbikgPyBzZWN0aW9uLmFwcHMgOiBbXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSZXZpc2VkR3JvdXBlZFNlY3Rpb25Hcm91cHMoc2VjdGlvbjogUmV2aXNlZFNlY3Rpb24pOiBSZXZpc2VkSW50ZWxsaWdlbmNlR3JvdXBbXSB7XG4gICAgcmV0dXJuIHNlY3Rpb24gJiYgc2VjdGlvbi50eXBlID09PSAnZ3JvdXBlZC1tZW51cycgPyBzZWN0aW9uLmdyb3VwcyA6IFtdO1xuICB9XG5cbiAgLyoqIEpTT04gYGdyb3Vwc1tdYCByb3c6IG9wdGlvbmFsIGZsYXQgbGlzdCB3aXRoIG5vIGdyb3VwIHRpdGxlICovXG4gIHB1YmxpYyBpc1JldmlzZWRVbnRpdGxlZEdyb3VwKGdyb3VwOiBSZXZpc2VkSW50ZWxsaWdlbmNlR3JvdXApOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFncm91cCAmJiAhZ3JvdXAudGl0bGU7XG4gIH1cblxuICAvKiogSlNPTiBgZ3JvdXBzW11gIHJvdzogb25lIG1lbnUgaXRlbSB1bmRlciBhIHRpdGxlZCBncm91cCAoZS5nLiBGT1VOREFUSU9OIHJvd3MpICovXG4gIHB1YmxpYyBpc1JldmlzZWRTaW5nbGVJdGVtR3JvdXAoZ3JvdXA6IFJldmlzZWRJbnRlbGxpZ2VuY2VHcm91cCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIWdyb3VwICYmICEhZ3JvdXAudGl0bGUgJiYgZ3JvdXAuaXRlbXMgJiYgZ3JvdXAuaXRlbXMubGVuZ3RoID09PSAxO1xuICB9XG5cbiAgLyoqIEpTT04gYGdyb3Vwc1tdYCByb3c6IHRpdGxlZCBncm91cCB3aXRoIG11bHRpcGxlIG1lbnUgcm9vdHMgKGUuZy4gQ29tbWVyY2UgSW5zaWdodHMpICovXG4gIHB1YmxpYyBpc1JldmlzZWRNdWx0aUl0ZW1Hcm91cChncm91cDogUmV2aXNlZEludGVsbGlnZW5jZUdyb3VwKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhZ3JvdXAgJiYgISFncm91cC50aXRsZSAmJiBncm91cC5pdGVtcyAmJiBncm91cC5pdGVtcy5sZW5ndGggPiAxO1xuICB9XG5cbiAgcHVibGljIGhhc0V4cGFuZGFibGVNZW51c0luU2VjdGlvbihzZWN0aW9uOiBSZXZpc2VkU2VjdGlvbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG1lbnVzID0gdGhpcy5nZXRSZXZpc2VkU2VjdGlvbk1lbnVzKHNlY3Rpb24pO1xuICAgIHJldHVybiBtZW51cy5zb21lKChtKSA9PiBtICYmIG0uY2hpbGRyZW4gJiYgbS5jaGlsZHJlbi5sZW5ndGggPiAwKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNFeHBhbmRhYmxlTWVudXNJbkdyb3VwKGdyb3VwOiBSZXZpc2VkSW50ZWxsaWdlbmNlR3JvdXApOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEoZ3JvdXAgJiYgZ3JvdXAuaXRlbXMgJiYgZ3JvdXAuaXRlbXMuc29tZSgobSkgPT4gbSAmJiBtLmNoaWxkcmVuICYmIG0uY2hpbGRyZW4ubGVuZ3RoID4gMCkpO1xuICB9XG5cbiAgcHVibGljIGdldFJldmlzZWRTZWN0aW9uU2VsZWN0ZWRBcHAoc2VjdGlvbjogUmV2aXNlZFNlY3Rpb24pOiBSZXZpc2VkTmF2TWVudUl0ZW0ge1xuICAgIGlmICghdGhpcy5pc1JldmlzZWRBcHBUYWJzU2VjdGlvbihzZWN0aW9uKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoc2VjdGlvbi5pZCA9PT0gJ29wdGltaXplJykge1xuICAgICAgY29uc3QgY3VycmVudE9wdGltaXplQXBwID0gdGhpcy5nZXRDdXJyZW50T3B0aW1pemVBcHAoc2VjdGlvbik7XG4gICAgICBpZiAoY3VycmVudE9wdGltaXplQXBwKSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50T3B0aW1pemVBcHA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0ZWRBcHBJZCA9IHRoaXMucmV2aXNlZFNlbGVjdGVkQXBwQnlTZWN0aW9uW3NlY3Rpb24uaWRdO1xuICAgIHJldHVybiBzZWN0aW9uLmFwcHMuZmluZCgoYXBwKSA9PiBhcHAuaWQgPT09IHNlbGVjdGVkQXBwSWQpIHx8IHNlY3Rpb24uYXBwc1swXTtcbiAgfVxuXG4gIHB1YmxpYyBpc1NlbGVjdGVkUmV2aXNlZFNlY3Rpb25BcHAoc2VjdGlvbjogUmV2aXNlZFNlY3Rpb24sIGFwcDogUmV2aXNlZE5hdk1lbnVJdGVtKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKGFwcCAmJiB0aGlzLmdldFJldmlzZWRTZWN0aW9uU2VsZWN0ZWRBcHAoc2VjdGlvbik/LmlkID09PSBhcHAuaWQpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdFJldmlzZWRTZWN0aW9uQXBwKHNlY3Rpb246IFJldmlzZWRTZWN0aW9uLCBhcHA6IFJldmlzZWROYXZNZW51SXRlbSwgbG9hZERlZmF1bHRQYWdlOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGlmICghYXBwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucmV2aXNlZFNlbGVjdGVkQXBwQnlTZWN0aW9uW3NlY3Rpb24uaWRdID0gYXBwLmlkO1xuICAgIHRoaXMuY3VycmVudEFwcCA9IGFwcDtcbiAgICBpZiAobG9hZERlZmF1bHRQYWdlKSB7XG4gICAgICB0aGlzLmdvVG9BcHBsaWNhdGlvbihhcHApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRSZXZpc2VkU2VjdGlvbk1lbnVzKHNlY3Rpb246IFJldmlzZWRTZWN0aW9uKTogUmV2aXNlZE5hdk1lbnVJdGVtW10ge1xuICAgIGNvbnN0IHNlbGVjdGVkQXBwID0gdGhpcy5nZXRSZXZpc2VkU2VjdGlvblNlbGVjdGVkQXBwKHNlY3Rpb24pO1xuICAgIGlmICghc2VsZWN0ZWRBcHAgfHwgIXNlbGVjdGVkQXBwLmNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RlZEFwcC5jaGlsZHJlbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSZXZpc2VkU2VjdGlvblRhYkJhZGdlQ291bnQoYXBwOiBSZXZpc2VkTmF2TWVudUl0ZW0pOiBudW1iZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXZpc2VkT3B0aW1pemVSZWNvbW1lbmRhdGlvbkNvdW50KGFwcCk7XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeVJldmlzZWRTZWN0aW9uKGluZGV4OiBudW1iZXIsIHNlY3Rpb246IFJldmlzZWRTZWN0aW9uKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICByZXR1cm4gc2VjdGlvbj8uaWQgfHwgaW5kZXg7XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeVJldmlzZWRHcm91cChpbmRleDogbnVtYmVyLCBncm91cDogUmV2aXNlZEludGVsbGlnZW5jZUdyb3VwKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICByZXR1cm4gZ3JvdXA/LmlkIHx8IGluZGV4O1xuICB9XG5cbiAgcHVibGljIHRyYWNrQnlSZXZpc2VkTWVudShpbmRleDogbnVtYmVyLCBtZW51OiBSZXZpc2VkTmF2TWVudUl0ZW0pOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIGlmICghbWVudSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheSgobWVudSBhcyBhbnkpLnNvdXJjZVBhdGgpICYmIChtZW51IGFzIGFueSkuc291cmNlUGF0aC5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gKG1lbnUgYXMgYW55KS5zb3VyY2VQYXRoLmpvaW4oJz4nKTtcbiAgICB9XG4gICAgcmV0dXJuIChtZW51IGFzIGFueSkuc291cmNlTWVudUlkIHx8IG1lbnUuaWQgfHwgaW5kZXg7XG4gIH1cblxuICAvKiogUGxhaW4tdGV4dCBhcHAgbmFtZSBmb3IgT3B0aW1pemUgdGFiIHRvb2x0aXBzIChgbGVmdC1uYXYtdG9vbHRpcGAsIHNhbWUgYXMgY29sbGFwc2VkIHJhaWwpLiAqL1xuICBwdWJsaWMgZ2V0UmV2aXNlZE9wdGltaXplQXBwVGFiVG9vbHRpcChhcHA6IFJldmlzZWROYXZNZW51SXRlbSk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghYXBwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgbGFiZWwgPSB0aGlzLnNlbGVjdGVkQXBwbGljYXRpb24oYXBwKTtcbiAgICBjb25zdCBwbGFpbiA9IGxhYmVsID8gU3RyaW5nKGxhYmVsKS5yZXBsYWNlKC88W14+XSo+L2csICcnKS5yZXBsYWNlKC9cXHMrL2csICcgJykudHJpbSgpIDogJyc7XG4gICAgcmV0dXJuIHBsYWluIHx8IG51bGw7XG4gIH1cblxuICBwdWJsaWMgaXNSZXZpc2VkTWVudUFjdGl2ZShtZW51OiBSZXZpc2VkTmF2TWVudUl0ZW0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc01lbnVSb3V0ZUFjdGl2ZShtZW51KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOZXN0ZWQgc3VibWVudSAobGVnYWN5ICsgcmV2aXNlZCk6IGtlZXAgbWF0LWV4cGFuc2lvbi1wYW5lbCBvcGVuIHdoZW4gdGhlIGN1cnJlbnQgVVJMIG1hdGNoZXNcbiAgICogYW55IGRlc2NlbmRhbnQgbGVhZiwgbm90IG9ubHkgd2hlbiBgYWN0aXZlUGFuZWxgIHdhcyBzZXQgZnJvbSBhIHNpZGViYXIgY2xpY2suXG4gICAqIFN0aWxsIGhvbm9ycyB1c2VyLW9wZW4gc3RhdGUgdmlhIGBtZW51LnBhbmVsT3BlblN0YXRlYCBhbmQgY2xpY2stZHJpdmVuIGBhY3RpdmVQYW5lbGAuXG4gICAqL1xuICBwdWJsaWMgaXNDaGlsZE1lbnVQYW5lbEV4cGFuZGVkKG1lbnU6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICghbWVudSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjaGlsZHJlbiA9IG1lbnUuY2hpbGRyZW47XG4gICAgY29uc3QgZGVzY2VuZGFudEFjdGl2ZSA9XG4gICAgICBjaGlsZHJlbiAmJlxuICAgICAgY2hpbGRyZW4ubGVuZ3RoID4gMCAmJlxuICAgICAgdGhpcy5oYXNBY3RpdmVSb3V0ZUluTWVudXMoY2hpbGRyZW4pO1xuICAgIGlmIChtZW51LnBhbmVsU3RhdGVUb3VjaGVkKSB7XG4gICAgICByZXR1cm4gISFtZW51LnBhbmVsT3BlblN0YXRlO1xuICAgIH1cbiAgICByZXR1cm4gISFkZXNjZW5kYW50QWN0aXZlIHx8IG1lbnUuaWQgPT09IHRoaXMuYWN0aXZlUGFuZWwgfHwgISFtZW51LnBhbmVsT3BlblN0YXRlO1xuICB9XG5cbiAgLyoqIEhpZ2hsaWdodCBzdHlsaW5nOiBhY3RpdmUgcGFuZWwgb3IgYW55IGFjdGl2ZSBkZXNjZW5kYW50LiAqL1xuICBwdWJsaWMgaXNDaGlsZE1lbnVQYW5lbEhpZ2hsaWdodGVkKG1lbnU6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICghbWVudSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjaGlsZHJlbiA9IG1lbnUuY2hpbGRyZW47XG4gICAgY29uc3QgZGVzY2VuZGFudEFjdGl2ZSA9XG4gICAgICBjaGlsZHJlbiAmJlxuICAgICAgY2hpbGRyZW4ubGVuZ3RoID4gMCAmJlxuICAgICAgdGhpcy5oYXNBY3RpdmVSb3V0ZUluTWVudXMoY2hpbGRyZW4pO1xuICAgIHJldHVybiAhIWRlc2NlbmRhbnRBY3RpdmUgfHwgbWVudS5pZCA9PT0gdGhpcy5hY3RpdmVQYW5lbDtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoaWxkTWVudVBhbmVsSGVhZGVyQ2xpY2sobWVudTogYW55KTogdm9pZCB7XG4gICAgaWYgKCFtZW51KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG1lbnUucGFuZWxTdGF0ZVRvdWNoZWQgPSB0cnVlO1xuICAgIG1lbnUucGFuZWxPcGVuU3RhdGUgPSAhdGhpcy5pc0NoaWxkTWVudVBhbmVsRXhwYW5kZWQobWVudSk7XG4gICAgdGhpcy5jZHJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoaWxkTWVudVBhbmVsT3BlbmVkKG1lbnU6IGFueSk6IHZvaWQge1xuICAgIGlmICghbWVudSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBtZW51LnBhbmVsU3RhdGVUb3VjaGVkID0gdHJ1ZTtcbiAgICBtZW51LnBhbmVsT3BlblN0YXRlID0gdHJ1ZTtcbiAgICB0aGlzLmNkcmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIG9uQ2hpbGRNZW51UGFuZWxDbG9zZWQobWVudTogYW55KTogdm9pZCB7XG4gICAgaWYgKCFtZW51KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG1lbnUucGFuZWxTdGF0ZVRvdWNoZWQgPSB0cnVlO1xuICAgIG1lbnUucGFuZWxPcGVuU3RhdGUgPSBmYWxzZTtcbiAgICB0aGlzLmNkcmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGdldFJldmlzZWRQYXJlbnRNZW51SWQobWVudTogUmV2aXNlZE5hdk1lbnVJdGVtLCBmYWxsYmFja1BhcmVudElkPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbWVudSAmJiBtZW51Lm93bmVyQXBwSWQgPyBtZW51Lm93bmVyQXBwSWQgOiBmYWxsYmFja1BhcmVudElkO1xuICB9XG5cbiAgcHVibGljIGdldFJldmlzZWRQYXJlbnRQYW5lbElkKG1lbnU6IFJldmlzZWROYXZNZW51SXRlbSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG1lbnUgJiYgbWVudS5zb3VyY2VQYXJlbnRJZCAmJiBtZW51LnNvdXJjZVBhcmVudElkICE9PSBtZW51Lm93bmVyQXBwSWQgPyBtZW51LnNvdXJjZVBhcmVudElkIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqIExlYWYgcm93IGluIGByZXZpc2VkR3JvdXBNZW51SXRlbVNoZWxsYDogT1BUSU1JWkUgKGFwcC10YWJzKSBvbWl0cyBwYW5lbCBpZDsgZ3JvdXBlZC1tZW51cyB1c2VzIGBnZXRSZXZpc2VkUGFyZW50UGFuZWxJZGAuICovXG4gIHB1YmxpYyBnZXRSZXZpc2VkU2hlbGxMZWFmUGFyZW50UGFuZWxJZChtZW51OiBSZXZpc2VkTmF2TWVudUl0ZW0sIG9wdGltaXplUGFyZW50QXBwPzogUmV2aXNlZE5hdk1lbnVJdGVtKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gb3B0aW1pemVQYXJlbnRBcHAgPyB1bmRlZmluZWQgOiB0aGlzLmdldFJldmlzZWRQYXJlbnRQYW5lbElkKG1lbnUpO1xuICB9XG5cbiAgcHVibGljIHNob3VsZFNob3dSZXZpc2VkSW50ZWxsaWdlbmNlR3JvdXBUaXRsZShncm91cDogUmV2aXNlZEludGVsbGlnZW5jZUdyb3VwKTogYm9vbGVhbiB7XG4gICAgaWYgKCFncm91cCB8fCAhZ3JvdXAudGl0bGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIWdyb3VwLml0ZW1zIHx8IGdyb3VwLml0ZW1zLmxlbmd0aCAhPT0gMSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgZ3JvdXBUaXRsZSA9IHRoaXMubm9ybWFsaXplUmV2aXNlZExhYmVsKGdyb3VwLnRpdGxlKTtcbiAgICBjb25zdCBpdGVtVGl0bGUgPSB0aGlzLm5vcm1hbGl6ZVJldmlzZWRMYWJlbCh0aGlzLnNlbGVjdGVkQXBwbGljYXRpb24oZ3JvdXAuaXRlbXNbMF0pKTtcblxuICAgIGlmICghZ3JvdXBUaXRsZSB8fCAhaXRlbVRpdGxlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gIShpdGVtVGl0bGUgPT09IGdyb3VwVGl0bGUgfHwgaXRlbVRpdGxlLmluZGV4T2YoZ3JvdXBUaXRsZSkgPiAtMSB8fCBncm91cFRpdGxlLmluZGV4T2YoaXRlbVRpdGxlKSA+IC0xKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVidWlsZFJldmlzZWROYXZpZ2F0aW9uU3RhdGUoKSB7XG4gICAgdGhpcy5yZXZpc2VkTmF2aWdhdGlvblN0YXRlID0gdGhpcy5uYXZpZ2F0aW9uLmJ1aWxkUmV2aXNlZE5hdmlnYXRpb25TdGF0ZShcbiAgICAgIHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLFxuICAgICAgdGhpcy50b0Rpc3BsYXlBcHBsaWNhdGlvbnMsXG4gICAgICB0aGlzLnRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudSxcbiAgICAgIHRoaXMudG9EaXNwbGF5TGlua01lbnVcbiAgICApO1xuICAgIHRoaXMucmV2aXNlZFNlY3Rpb25JY29uQ2FjaGUgPSB7fTtcbiAgICB0aGlzLnJldmlzZWRTZWN0aW9ucyA9IHRoaXMucmV2aXNlZE5hdmlnYXRpb25TdGF0ZSA/IHRoaXMucmV2aXNlZE5hdmlnYXRpb25TdGF0ZS5zZWN0aW9ucyA6IFtdO1xuICAgIHRoaXMucmV2aXNlZFNlY3Rpb25TdGF0ZSA9IHRoaXMuYnVpbGRSZXZpc2VkU2VjdGlvblN0YXRlKHRoaXMucmV2aXNlZFNlY3Rpb25zKTtcbiAgICB0aGlzLnJldmlzZWRHcm91cEV4cGFuZGVkU3RhdGUgPSB0aGlzLmJ1aWxkUmV2aXNlZEdyb3VwRXhwYW5kZWRTdGF0ZSh0aGlzLnJldmlzZWRTZWN0aW9ucyk7XG4gICAgdGhpcy5yZXZpc2VkU2VsZWN0ZWRBcHBCeVNlY3Rpb24gPSB0aGlzLmJ1aWxkUmV2aXNlZFNlbGVjdGVkQXBwU3RhdGUodGhpcy5yZXZpc2VkU2VjdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFJldmlzZWRHcm91cEV4cGFuZGVkU3RhdGUoc2VjdGlvbnM6IFJldmlzZWRTZWN0aW9uW10pOiB7W2tleTogc3RyaW5nXTogYm9vbGVhbn0ge1xuICAgIGNvbnN0IG5leHRTdGF0ZToge1trZXk6IHN0cmluZ106IGJvb2xlYW59ID0ge307XG4gICAgKHNlY3Rpb25zIHx8IFtdKS5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gICAgICBpZiAoc2VjdGlvbi50eXBlICE9PSAnZ3JvdXBlZC1tZW51cycgfHwgIXNlY3Rpb24uZ3JvdXBzKSB7IHJldHVybjsgfVxuICAgICAgc2VjdGlvbi5ncm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gc2VjdGlvbi5pZCArICdfJyArIGdyb3VwLmlkO1xuICAgICAgICBjb25zdCBvcGVuQnlSb3V0ZSA9IHRoaXMuaGFzQWN0aXZlUm91dGVJbk1lbnVzKGdyb3VwLml0ZW1zIHx8IFtdKTtcbiAgICAgICAgbmV4dFN0YXRlW2tleV0gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5yZXZpc2VkR3JvdXBFeHBhbmRlZFN0YXRlLCBrZXkpXG4gICAgICAgICAgPyB0aGlzLnJldmlzZWRHcm91cEV4cGFuZGVkU3RhdGVba2V5XVxuICAgICAgICAgIDogb3BlbkJ5Um91dGU7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gbmV4dFN0YXRlO1xuICB9XG5cbiAgcHVibGljIGlzUmV2aXNlZEdyb3VwRXhwYW5kZWQoc2VjdGlvbklkOiBzdHJpbmcsIGdyb3VwSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGtleSA9IHNlY3Rpb25JZCArICdfJyArIGdyb3VwSWQ7XG4gICAgY29uc3Qgc2VjdGlvbiA9IHRoaXMuZ2V0UmV2aXNlZFNlY3Rpb25CeUlkKHNlY3Rpb25JZCk7XG4gICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdldFJldmlzZWRHcm91cGVkU2VjdGlvbkdyb3VwcyhzZWN0aW9uKS5maW5kKChnKSA9PiBnLmlkID09PSBncm91cElkKTtcbiAgICBjb25zdCByb3V0ZUluR3JvdXAgPSAhIWdyb3VwICYmIHRoaXMuaGFzQWN0aXZlUm91dGVJbk1lbnVzKGdyb3VwLml0ZW1zIHx8IFtdKTtcbiAgICByZXR1cm4gcm91dGVJbkdyb3VwIHx8IHRoaXMucmV2aXNlZEdyb3VwRXhwYW5kZWRTdGF0ZVtrZXldICE9PSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBvblJldmlzZWRHcm91cEhlYWRlckNsaWNrKHNlY3Rpb25JZDogc3RyaW5nLCBncm91cElkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBrZXkgPSBzZWN0aW9uSWQgKyAnXycgKyBncm91cElkO1xuICAgIHRoaXMucmV2aXNlZEdyb3VwRXhwYW5kZWRTdGF0ZVtrZXldID0gIXRoaXMuaXNSZXZpc2VkR3JvdXBFeHBhbmRlZChzZWN0aW9uSWQsIGdyb3VwSWQpO1xuICAgIHRoaXMuY2RyZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgb25SZXZpc2VkR3JvdXBQYW5lbE9wZW5lZChzZWN0aW9uSWQ6IHN0cmluZywgZ3JvdXBJZDogc3RyaW5nKSB7XG4gICAgY29uc3Qga2V5ID0gc2VjdGlvbklkICsgJ18nICsgZ3JvdXBJZDtcbiAgICB0aGlzLnJldmlzZWRHcm91cEV4cGFuZGVkU3RhdGVba2V5XSA9IHRydWU7XG4gICAgdGhpcy5jZHJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBvblJldmlzZWRHcm91cFBhbmVsQ2xvc2VkKHNlY3Rpb25JZDogc3RyaW5nLCBncm91cElkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBrZXkgPSBzZWN0aW9uSWQgKyAnXycgKyBncm91cElkO1xuICAgIGNvbnN0IHNlY3Rpb24gPSB0aGlzLmdldFJldmlzZWRTZWN0aW9uQnlJZChzZWN0aW9uSWQpO1xuICAgIGNvbnN0IGdyb3VwID0gdGhpcy5nZXRSZXZpc2VkR3JvdXBlZFNlY3Rpb25Hcm91cHMoc2VjdGlvbikuZmluZCgoZykgPT4gZy5pZCA9PT0gZ3JvdXBJZCk7XG4gICAgdGhpcy5yZXZpc2VkR3JvdXBFeHBhbmRlZFN0YXRlW2tleV0gPSAhIWdyb3VwICYmIHRoaXMuaGFzQWN0aXZlUm91dGVJbk1lbnVzKGdyb3VwLml0ZW1zIHx8IFtdKTtcbiAgICB0aGlzLmNkcmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFJldmlzZWRTZWN0aW9uU3RhdGUoc2VjdGlvbnM6IFJldmlzZWRTZWN0aW9uW10pOiB7W3NlY3Rpb25JZDogc3RyaW5nXTogYm9vbGVhbn0ge1xuICAgIGNvbnN0IG5leHRTdGF0ZToge1tzZWN0aW9uSWQ6IHN0cmluZ106IGJvb2xlYW59ID0ge307XG5cbiAgICAoc2VjdGlvbnMgfHwgW10pLmZvckVhY2goKHNlY3Rpb24pID0+IHtcbiAgICAgIGNvbnN0IHJvdXRlSW5TZWN0aW9uID0gdGhpcy5zZWN0aW9uQ29udGFpbnNBY3RpdmVSb3V0ZShzZWN0aW9uKTtcbiAgICAgIGNvbnN0IHByZXYgPSB0aGlzLnJldmlzZWRTZWN0aW9uU3RhdGUgJiYgdGhpcy5yZXZpc2VkU2VjdGlvblN0YXRlW3NlY3Rpb24uaWRdO1xuICAgICAgLy8gUHJlc2VydmUgbWFudWFsIG9wZW5zIGFjcm9zcyBuYXZpZ2F0aW9uczsgYWN0aXZlIHJvdXRlIGFsc28gZm9yY2VzIGV4cGFuc2lvbi5cbiAgICAgIG5leHRTdGF0ZVtzZWN0aW9uLmlkXSA9IHByZXYgPT09IHRydWUgfHwgcm91dGVJblNlY3Rpb247XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV4dFN0YXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFJldmlzZWRTZWxlY3RlZEFwcFN0YXRlKHNlY3Rpb25zOiBSZXZpc2VkU2VjdGlvbltdKToge1tzZWN0aW9uSWQ6IHN0cmluZ106IHN0cmluZ30ge1xuICAgIGNvbnN0IG5leHRTdGF0ZToge1tzZWN0aW9uSWQ6IHN0cmluZ106IHN0cmluZ30gPSB7fTtcblxuICAgIChzZWN0aW9ucyB8fCBbXSkuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xuICAgICAgaWYgKCF0aGlzLmlzUmV2aXNlZEFwcFRhYnNTZWN0aW9uKHNlY3Rpb24pIHx8ICFzZWN0aW9uLmFwcHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJldmlvdXNTZWxlY3Rpb24gPSB0aGlzLnJldmlzZWRTZWxlY3RlZEFwcEJ5U2VjdGlvbltzZWN0aW9uLmlkXTtcbiAgICAgIGNvbnN0IGN1cnJlbnRBcHAgPSB0aGlzLmdldEN1cnJlbnRPcHRpbWl6ZUFwcChzZWN0aW9uKTtcbiAgICAgIGNvbnN0IGFwcHNXaXRoQWN0aXZlUm91dGUgPSAoc2VjdGlvbi5hcHBzIHx8IFtdKS5maWx0ZXIoKGFwcCkgPT5cbiAgICAgICAgYXBwICYmIGFwcC5pZCAhPT0gJ2Fkc19hbWF6b25fYWR2ZXJ0aXNpbmcnICYmIHRoaXMuaGFzQWN0aXZlUm91dGVJbk1lbnVzKFthcHBdKVxuICAgICAgKTtcblxuICAgICAgbGV0IHNlbGVjdGVkQXBwOiBSZXZpc2VkTmF2TWVudUl0ZW0gfCB1bmRlZmluZWQ7XG4gICAgICBpZiAoY3VycmVudEFwcCkge1xuICAgICAgICBzZWxlY3RlZEFwcCA9IGN1cnJlbnRBcHA7XG4gICAgICB9IGVsc2UgaWYgKGFwcHNXaXRoQWN0aXZlUm91dGUubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHNlbGVjdGVkQXBwID0gYXBwc1dpdGhBY3RpdmVSb3V0ZVswXTtcbiAgICAgIH0gZWxzZSBpZiAoYXBwc1dpdGhBY3RpdmVSb3V0ZS5sZW5ndGggPiAxKSB7XG4gICAgICAgIGNvbnN0IHByZXYgPSBzZWN0aW9uLmFwcHMuZmluZCgoYXBwKSA9PiBhcHAuaWQgPT09IHByZXZpb3VzU2VsZWN0aW9uKTtcbiAgICAgICAgc2VsZWN0ZWRBcHAgPVxuICAgICAgICAgIChwcmV2ICYmIGFwcHNXaXRoQWN0aXZlUm91dGUuc29tZSgoYSkgPT4gYS5pZCA9PT0gcHJldi5pZCkgPyBwcmV2IDogdW5kZWZpbmVkKSB8fFxuICAgICAgICAgIGFwcHNXaXRoQWN0aXZlUm91dGVbMF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxlY3RlZEFwcCA9XG4gICAgICAgICAgc2VjdGlvbi5hcHBzLmZpbmQoKGFwcCkgPT4gYXBwLmlkID09PSBwcmV2aW91c1NlbGVjdGlvbikgfHxcbiAgICAgICAgICBzZWN0aW9uLmFwcHMuZmluZCgoYXBwKSA9PiBhcHAuaWQgPT09IHNlY3Rpb24uZGVmYXVsdEFwcElkKSB8fFxuICAgICAgICAgIHNlY3Rpb24uYXBwc1swXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNlbGVjdGVkQXBwKSB7XG4gICAgICAgIG5leHRTdGF0ZVtzZWN0aW9uLmlkXSA9IHNlbGVjdGVkQXBwLmlkO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5leHRTdGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcHRpbWl6ZS9hcHAtdGFicyBzaG91bGQgc3RheSBhbmNob3JlZCB0byB0aGUgY3VycmVudCBBbmd1bGFyIGhvc3QgYXBwLlxuICAgKiBTcG9uc29yZWQgQWRzIGlzIGFuIEFuZ3VsYXJKUyBhcHAgYW5kIHNob3VsZCBub3QgZHJpdmUgYXBwLXRhYnMgc2VsZWN0aW9uL2V4cGFuc2lvbiBoZXJlLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRDdXJyZW50T3B0aW1pemVBcHAoc2VjdGlvbjogUmV2aXNlZEFwcFRhYnNTZWN0aW9uKTogUmV2aXNlZE5hdk1lbnVJdGVtIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXNlY3Rpb24/LmFwcHM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudEFwcElkID0gdGhpcy5hcHBsaWNhdGlvbkRldGFpbHM/LmFwcGxpY2F0aW9uSWQgfHwgdGhpcy5jdXJyZW50QXBwPy5pZDtcbiAgICBpZiAoIWN1cnJlbnRBcHBJZCB8fCBjdXJyZW50QXBwSWQgPT09ICdhZHNfYW1hem9uX2FkdmVydGlzaW5nJykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHNlY3Rpb24uYXBwcy5maW5kKChhcHApID0+IGFwcD8uaWQgPT09IGN1cnJlbnRBcHBJZCk7XG4gIH1cblxuICBwcml2YXRlIGxvZ09wdGltaXplRGVidWdTdGF0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBvcHRpbWl6ZVNlY3Rpb24gPSAodGhpcy5yZXZpc2VkU2VjdGlvbnMgfHwgW10pLmZpbmQoKHNlY3Rpb24pID0+IHNlY3Rpb24/LmlkID09PSAnb3B0aW1pemUnKSBhcyBSZXZpc2VkQXBwVGFic1NlY3Rpb24gfCB1bmRlZmluZWQ7XG4gICAgaWYgKCFvcHRpbWl6ZVNlY3Rpb24pIHtcbiAgICAgIGNvbnNvbGUubG9nKCdbc2lkZWJhcl1bb3B0aW1pemUtZGVidWddIG5vIG9wdGltaXplIHNlY3Rpb24nLCB7XG4gICAgICAgIHJvdXRlOiB0aGlzLnJvdXRlcj8udXJsLFxuICAgICAgICBhcHBsaWNhdGlvbklkOiB0aGlzLmFwcGxpY2F0aW9uRGV0YWlscz8uYXBwbGljYXRpb25JZCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGVkQXBwSWQgPSB0aGlzLnJldmlzZWRTZWxlY3RlZEFwcEJ5U2VjdGlvblsnb3B0aW1pemUnXTtcbiAgICBjb25zdCBhY3RpdmVBcHAgPSB0aGlzLmZpbmRBY3RpdmVBcHBGb3JTZWN0aW9uKG9wdGltaXplU2VjdGlvbik7XG4gICAgY29uc3Qgc2VsZWN0ZWRBcHAgPSB0aGlzLmdldFJldmlzZWRTZWN0aW9uU2VsZWN0ZWRBcHAob3B0aW1pemVTZWN0aW9uKTtcbiAgICBjb25zdCBleHBhbmRlZCA9IHRoaXMuaXNSZXZpc2VkU2VjdGlvbkV4cGFuZGVkKCdvcHRpbWl6ZScpO1xuICAgIGNvbnN0IGNvbnRhaW5zQWN0aXZlUm91dGUgPSB0aGlzLnNlY3Rpb25Db250YWluc0FjdGl2ZVJvdXRlKG9wdGltaXplU2VjdGlvbik7XG5cbiAgICBjb25zb2xlLmxvZygnW3NpZGViYXJdW29wdGltaXplLWRlYnVnXScsIHtcbiAgICAgIHJvdXRlOiB0aGlzLnJvdXRlcj8udXJsLFxuICAgICAgYXBwbGljYXRpb25JZDogdGhpcy5hcHBsaWNhdGlvbkRldGFpbHM/LmFwcGxpY2F0aW9uSWQsXG4gICAgICBjdXJyZW50QXBwSWQ6IHRoaXMuY3VycmVudEFwcD8uaWQsXG4gICAgICBvcHRpbWl6ZUFwcHM6IChvcHRpbWl6ZVNlY3Rpb24uYXBwcyB8fCBbXSkubWFwKChhcHApID0+IGFwcD8uaWQpLFxuICAgICAgc2VsZWN0ZWRBcHBJZCxcbiAgICAgIHNlbGVjdGVkQXBwUmVzb2x2ZWQ6IHNlbGVjdGVkQXBwPy5pZCxcbiAgICAgIGFjdGl2ZUFwcElkOiBhY3RpdmVBcHA/LmlkLFxuICAgICAgY29udGFpbnNBY3RpdmVSb3V0ZSxcbiAgICAgIGV4cGFuZGVkLFxuICAgICAgc2VjdGlvblN0YXRlOiB0aGlzLnJldmlzZWRTZWN0aW9uU3RhdGU/Llsnb3B0aW1pemUnXSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY29sbGFwc2VBbGxSZXZpc2VkU2VjdGlvbnMoKSB7XG4gICAgT2JqZWN0LmtleXModGhpcy5yZXZpc2VkU2VjdGlvblN0YXRlIHx8IHt9KS5mb3JFYWNoKChzZWN0aW9uSWQpID0+IHtcbiAgICAgIHRoaXMucmV2aXNlZFNlY3Rpb25TdGF0ZVtzZWN0aW9uSWRdID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICAvKiogV2hlbiB0aGUgc2lkZW5hdiBvcGVucywgZXhwYW5kIGFueSByZXZpc2VkIHNlY3Rpb24gdGhhdCBvd25zIHRoZSBjdXJyZW50IHJvdXRlIChhbmQgc3luYyBhcHAtdGFicyBzZWxlY3Rpb24pLiAqL1xuICBwcml2YXRlIGV4cGFuZFJldmlzZWRTZWN0aW9uc0NvbnRhaW5pbmdBY3RpdmVSb3V0ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNSZXZpc2VkTmF2aWdhdGlvbkVuYWJsZWQoKSB8fCAhdGhpcy5yZXZpc2VkU2VjdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJldmlzZWRTZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gICAgICBpZiAodGhpcy5zZWN0aW9uQ29udGFpbnNBY3RpdmVSb3V0ZShzZWN0aW9uKSkge1xuICAgICAgICB0aGlzLnJldmlzZWRTZWN0aW9uU3RhdGVbc2VjdGlvbi5pZF0gPSB0cnVlO1xuICAgICAgICB0aGlzLnN5bmNTZWN0aW9uU2VsZWN0aW9uVG9BY3RpdmVSb3V0ZShzZWN0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb3Blbk9ubHlSZXZpc2VkU2VjdGlvbihzZWN0aW9uOiBSZXZpc2VkU2VjdGlvbik6IGJvb2xlYW4ge1xuICAgIHRoaXMucmV2aXNlZFNlY3Rpb25TdGF0ZVtzZWN0aW9uLmlkXSA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXMuc3luY1NlY3Rpb25TZWxlY3Rpb25Ub0FjdGl2ZVJvdXRlKHNlY3Rpb24pO1xuICB9XG5cbiAgLyoqIENsZWFycyBgcGFuZWxPcGVuU3RhdGVgIG9uIGV4cGFuZGFibGUgcm93cyBzbyByZW9wZW5pbmcgYSBzZWN0aW9uIGRvZXMgbm90IGtlZXAgYXJiaXRyYXJ5IHBhbmVscyBvcGVuLiAqL1xuICBwcml2YXRlIGNsZWFyUmV2aXNlZEV4cGFuZGFibGVQYW5lbE9wZW5TdGF0ZUluTWVudVRyZWUobWVudXM6IFJldmlzZWROYXZNZW51SXRlbVtdKTogdm9pZCB7XG4gICAgKG1lbnVzIHx8IFtdKS5mb3JFYWNoKChtZW51KSA9PiB7XG4gICAgICBpZiAobWVudT8uY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAobWVudSBhcyBSZXZpc2VkTmF2TWVudUl0ZW0gJiB7IHBhbmVsT3BlblN0YXRlPzogYm9vbGVhbiB9KS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNsZWFyUmV2aXNlZEV4cGFuZGFibGVQYW5lbE9wZW5TdGF0ZUluTWVudVRyZWUobWVudS5jaGlsZHJlbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyRXhwYW5kYWJsZVBhbmVsT3BlblN0YXRlRm9yUmV2aXNlZFNlY3Rpb24oc2VjdGlvbjogUmV2aXNlZFNlY3Rpb24pOiB2b2lkIHtcbiAgICBpZiAoIXNlY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNSZXZpc2VkQXBwVGFic1NlY3Rpb24oc2VjdGlvbikpIHtcbiAgICAgIChzZWN0aW9uLmFwcHMgfHwgW10pLmZvckVhY2goKGFwcCkgPT4ge1xuICAgICAgICB0aGlzLmNsZWFyUmV2aXNlZEV4cGFuZGFibGVQYW5lbE9wZW5TdGF0ZUluTWVudVRyZWUoYXBwLmNoaWxkcmVuIHx8IFtdKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc2VjdGlvbi50eXBlID09PSAnZ3JvdXBlZC1tZW51cycgJiYgc2VjdGlvbi5ncm91cHMpIHtcbiAgICAgIHNlY3Rpb24uZ3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgIHRoaXMuY2xlYXJSZXZpc2VkRXhwYW5kYWJsZVBhbmVsT3BlblN0YXRlSW5NZW51VHJlZShncm91cC5pdGVtcyB8fCBbXSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKiogVGl0bGVkIGdyb3VwIHBhbmVsczogZXhwYW5kZWQgb25seSB3aGVuIGEgbGVhZiB1bmRlciB0aGUgZ3JvdXAgbWF0Y2hlcyB0aGUgY3VycmVudCByb3V0ZSAodW5sZXNzIHVzZXIgdG9nZ2xlZCBsYXRlcikuICovXG4gIHByaXZhdGUgcmVzZXRSZXZpc2VkR3JvdXBFeHBhbmRlZFN0YXRlRm9yU2VjdGlvbihzZWN0aW9uOiBSZXZpc2VkU2VjdGlvbik6IHZvaWQge1xuICAgIGlmICghc2VjdGlvbiB8fCBzZWN0aW9uLnR5cGUgIT09ICdncm91cGVkLW1lbnVzJyB8fCAhc2VjdGlvbi5ncm91cHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2VjdGlvbi5ncm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IHNlY3Rpb24uaWQgKyAnXycgKyBncm91cC5pZDtcbiAgICAgIHRoaXMucmV2aXNlZEdyb3VwRXhwYW5kZWRTdGF0ZVtrZXldID0gdGhpcy5oYXNBY3RpdmVSb3V0ZUluTWVudXMoZ3JvdXAuaXRlbXMgfHwgW10pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZXZpc2VkU2VjdGlvbkJ5SWQoc2VjdGlvbklkOiBzdHJpbmcpOiBSZXZpc2VkU2VjdGlvbiB7XG4gICAgcmV0dXJuICh0aGlzLnJldmlzZWRTZWN0aW9ucyB8fCBbXSkuZmluZCgoc2VjdGlvbikgPT4gc2VjdGlvbi5pZCA9PT0gc2VjdGlvbklkKTtcbiAgfVxuXG4gIHByaXZhdGUgc2Nyb2xsVG9BY3RpdmVNZW51SWZWaXNpYmxlKCkge1xuICAgIC8vIFJldmlzZWQgbGF5b3V0IGtlZXBzIHNlY3Rpb24gaGVhZGVycyArIE9wdGltaXplIGFwcCB0YWJzIGluIHRoZSBzYW1lIHNjcm9sbCBhcmVhIGFzIG1lbnUgcm93cy5cbiAgICAvLyBgc2Nyb2xsVG9wID0gb2Zmc2V0VG9wYCBpcyB3cm9uZyAob2Zmc2V0UGFyZW50IOKJoCBzY3JvbGwgY29udGFpbmVyKSBhbmQganVtcHMgdGhlIGxpc3QsIGhpZGluZyB0aGF0IGNocm9tZS5cbiAgICBpZiAodGhpcy5pc1JldmlzZWROYXZpZ2F0aW9uRW5hYmxlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmVNZW51KCk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNTZWN0aW9uU2VsZWN0aW9uVG9BY3RpdmVSb3V0ZShzZWN0aW9uOiBSZXZpc2VkU2VjdGlvbik6IGJvb2xlYW4ge1xuICAgIGlmICghc2VjdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzUmV2aXNlZEFwcFRhYnNTZWN0aW9uKHNlY3Rpb24pKSB7XG4gICAgICBjb25zdCBhY3RpdmVBcHAgPSB0aGlzLmZpbmRBY3RpdmVBcHBGb3JTZWN0aW9uKHNlY3Rpb24pO1xuICAgICAgaWYgKGFjdGl2ZUFwcCkge1xuICAgICAgICB0aGlzLnJldmlzZWRTZWxlY3RlZEFwcEJ5U2VjdGlvbltzZWN0aW9uLmlkXSA9IGFjdGl2ZUFwcC5pZDtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2VjdGlvbkNvbnRhaW5zQWN0aXZlUm91dGUoc2VjdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGZpbmRBY3RpdmVBcHBGb3JTZWN0aW9uKHNlY3Rpb246IFJldmlzZWRBcHBUYWJzU2VjdGlvbik6IFJldmlzZWROYXZNZW51SXRlbSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q3VycmVudE9wdGltaXplQXBwKHNlY3Rpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWN0aW9uQ29udGFpbnNBY3RpdmVSb3V0ZShzZWN0aW9uOiBSZXZpc2VkU2VjdGlvbik6IGJvb2xlYW4ge1xuICAgIGlmICghc2VjdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzUmV2aXNlZEFwcFRhYnNTZWN0aW9uKHNlY3Rpb24pKSB7XG4gICAgICByZXR1cm4gISF0aGlzLmdldEN1cnJlbnRPcHRpbWl6ZUFwcChzZWN0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5oYXNBY3RpdmVSb3V0ZUluTWVudXMoXG4gICAgICB0aGlzLmdldFJldmlzZWRHcm91cGVkU2VjdGlvbkdyb3VwcyhzZWN0aW9uKS5yZWR1Y2UoKGl0ZW1zLCBncm91cCkgPT4gaXRlbXMuY29uY2F0KGdyb3VwLml0ZW1zIHx8IFtdKSwgW10pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzQWN0aXZlUm91dGVJbk1lbnVzKG1lbnVzOiBSZXZpc2VkTmF2TWVudUl0ZW1bXSA9IFtdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG1lbnVzLnNvbWUoKG1lbnUpID0+IHtcbiAgICAgIGlmICghbWVudSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmlzTWVudVJvdXRlQWN0aXZlKG1lbnUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVudS5jaGlsZHJlbiAmJiBtZW51LmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzQWN0aXZlUm91dGVJbk1lbnVzKG1lbnUuY2hpbGRyZW4pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplcyBhIHBhdGggZm9yIG5hdiBtYXRjaGluZy4gU29tZSBzaGVsbHMgZGlmZmVyOiBgcm91dGVyLnVybGAgdnMgYGxvY2F0aW9uLnBhdGhuYW1lYCB2cyBoYXNoIChgIy/igKZgLCBgIyEv4oCmYCkuXG4gICAqL1xuICBwcml2YXRlIG5vcm1hbGl6ZU5hdlBhdGhTZWdtZW50KHJhdzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXJhdykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBsZXQgdSA9IHJhdy5zcGxpdCgnPycpWzBdLnNwbGl0KCcjJylbMF07XG4gICAgaWYgKHUubGVuZ3RoID4gMSAmJiB1LmVuZHNXaXRoKCcvJykpIHtcbiAgICAgIHUgPSB1LnNsaWNlKDAsIC0xKTtcbiAgICB9XG4gICAgcmV0dXJuIHU7XG4gIH1cblxuICAvKipcbiAgICogU3RyaXAgYCMhL2AgLyBgIy9gIGZyb20gYG1lbnUucm91dGVgIHNvIGl0IGNhbiBtYXRjaCBgY29sbGVjdENhbmRpZGF0ZU5hdlBhdGhzKClgIChoYXNoIOKGkiBgL3NlZ21lbnRgKS5cbiAgICogVXNlZCBvbmx5IGZvciAqKmV4YWN0KiogKGFuZCBsZWdhY3kga2V5d29yZCBzdWZmaXgpIGNoZWNrcyDigJQgbm8gcHJlZml4IHdpbGRjYXJkLCB0byBhdm9pZCBjcm9zcy1tZW51IGZhbHNlIHBvc2l0aXZlcy5cbiAgICovXG4gIHByaXZhdGUgbm9ybWFsaXplTWVudVJvdXRlRm9yUGF0aE1hdGNoKHJvdXRlOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoIXJvdXRlIHx8IHR5cGVvZiByb3V0ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBsZXQgciA9IHJvdXRlLnRyaW0oKTtcbiAgICBpZiAoci5pbmRleE9mKCcjIS8nKSA9PT0gMCkge1xuICAgICAgciA9IHIuc2xpY2UoMyk7XG4gICAgfSBlbHNlIGlmIChyLmluZGV4T2YoJyMvJykgPT09IDApIHtcbiAgICAgIHIgPSByLnNsaWNlKDIpO1xuICAgIH0gZWxzZSBpZiAoci5pbmRleE9mKCcjJykgPT09IDApIHtcbiAgICAgIHIgPSByLnNsaWNlKDEpO1xuICAgIH1cbiAgICByID0gci5yZXBsYWNlKC9eXFwvKy8sICcnKTtcbiAgICBpZiAoIXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gJy8nICsgcjtcbiAgfVxuXG4gIC8qKiBDb2xsZWN0IGFsbCBVUkwgc2hhcGVzIHRoYXQgbWlnaHQgcmVwcmVzZW50IHRoZSBjdXJyZW50IHBhZ2UgKGZpeGVzIENyaXRlbyAvIGFuY2lsbGFyeSB3aGVuIFJvdXRlciBVUkwgbGFncyBvciBvbWl0cyBiYXNlKS4gKi9cbiAgcHJpdmF0ZSBjb2xsZWN0Q2FuZGlkYXRlTmF2UGF0aHMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHBhdGhzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgY29uc3QgYWRkID0gKHA6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgbiA9IHRoaXMubm9ybWFsaXplTmF2UGF0aFNlZ21lbnQocCk7XG4gICAgICBpZiAobikge1xuICAgICAgICBwYXRocy5hZGQobik7XG4gICAgICB9XG4gICAgfTtcbiAgICBhZGQodGhpcy5yb3V0ZXIudXJsKTtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmxvY2F0aW9uKSB7XG4gICAgICBhZGQod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lIHx8ICcnKTtcbiAgICAgIGNvbnN0IGhhc2ggPSB3aW5kb3cubG9jYXRpb24uaGFzaCB8fCAnJztcbiAgICAgIGlmIChoYXNoLmluZGV4T2YoJyMvJykgPT09IDApIHtcbiAgICAgICAgYWRkKGhhc2guc2xpY2UoMSkpO1xuICAgICAgfSBlbHNlIGlmIChoYXNoLmluZGV4T2YoJyMhLycpID09PSAwKSB7XG4gICAgICAgIGFkZCgnLycgKyBoYXNoLnNsaWNlKDMpLnJlcGxhY2UoL15cXC8rLywgJycpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIEFycmF5LmZyb20ocGF0aHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1lbnVzIHdob3NlIGBsaW5rYCBpcyBhIHJlYWwgcGF0aCAoYGRzcC/igKZgLCBgZHAv4oCmYCwgYGNvbnRlbnQv4oCmYCwgYGNyaXRlby/igKZgLCBgd2FsbWFydC/igKZgLCBldGMuKS5cbiAgICogRm9yIHRoZXNlLCBuZXZlciB0cmVhdCBiYXJlIGBtZW51LnJvdXRlYCAoZS5nLiBgb3ZlcnZpZXdgKSBhcyBhY3RpdmUg4oCUIGl0IGNvbGxpZGVzIGFjcm9zcyBhcHBzIChEU1AgdnMgU09WKS5cbiAgICovXG4gIHByaXZhdGUgbWVudVVzZXNQYXRoUHJlZml4ZWRMaW5rKG1lbnU6IFJldmlzZWROYXZNZW51SXRlbSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxpbmsgPSBtZW51Lmxpbms7XG4gICAgcmV0dXJuIHR5cGVvZiBsaW5rID09PSAnc3RyaW5nJyAmJiBsaW5rLmluZGV4T2YoJ3RyaWFuZ3VsYXIuJykgIT09IDAgJiYgbGluay5pbmRleE9mKCcvJykgIT09IC0xO1xuICB9XG5cbiAgLyoqIGBsaW5rYCBsaWtlIGBjcml0ZW8vY3JpdGVvLW92ZXJ2aWV3YCB2cyBVUkwgYC9jcml0ZW8vY3JpdGVvLW92ZXJ2aWV3YCBvciBgLi4uL2NyaXRlby9jcml0ZW8tb3ZlcnZpZXdgIChiYXNlIGhyZWYpLiAqL1xuICBwcml2YXRlIG1lbnVQYXRoTWF0Y2hlc0xpbmtQYXRoKGN1cnJlbnRSb3V0ZTogc3RyaW5nLCBsaW5rOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIGxpbmsgIT09ICdzdHJpbmcnIHx8IGxpbmsuaW5kZXhPZigndHJpYW5ndWxhci4nKSA9PT0gMCB8fCBsaW5rLmluZGV4T2YoJy8nKSA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgbGV0IHBhdGggPSBsaW5rLnN0YXJ0c1dpdGgoJy8nKSA/IGxpbmsgOiAnLycgKyBsaW5rLnJlcGxhY2UoL15cXC8rLywgJycpO1xuICAgIGlmIChwYXRoLmxlbmd0aCA+IDEgJiYgcGF0aC5lbmRzV2l0aCgnLycpKSB7XG4gICAgICBwYXRoID0gcGF0aC5zbGljZSgwLCAtMSk7XG4gICAgfVxuICAgIGlmIChjdXJyZW50Um91dGUgPT09IHBhdGggfHwgY3VycmVudFJvdXRlLmluZGV4T2YocGF0aCArICcvJykgPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBhdCA9IGN1cnJlbnRSb3V0ZS5sYXN0SW5kZXhPZihwYXRoKTtcbiAgICBpZiAoYXQgPj0gMCAmJiBhdCA9PT0gY3VycmVudFJvdXRlLmxlbmd0aCAtIHBhdGgubGVuZ3RoICYmIChhdCA9PT0gMCB8fCBjdXJyZW50Um91dGUuY2hhckF0KGF0IC0gMSkgPT09ICcvJykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogYGNoaWxkX3JvdXRlc2AgZW50cmllcyBhcmUgb2Z0ZW4gaG9zdC1yZWxhdGl2ZSBzZWdtZW50cyAoZS5nLiBgd2FsbWFydC1rZXl3b3Jkcy9rZXl3b3JkLXJlcG9ydGApIHdoaWxlXG4gICAqIHRoZSBicm93c2VyIFVSTCBpcyBgL3dhbG1hcnQvd2FsbWFydC1rZXl3b3Jkcy9rZXl3b3JkLXJlcG9ydGAuXG4gICAqL1xuICBwcml2YXRlIG1lbnVDaGlsZFJvdXRlTWF0Y2hlc1BhdGgoY3VycmVudFJvdXRlOiBzdHJpbmcsIGNoaWxkUm91dGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghY2hpbGRSb3V0ZSB8fCB0eXBlb2YgY2hpbGRSb3V0ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IGNoaWxkUm91dGUuc3RhcnRzV2l0aCgnLycpID8gY2hpbGRSb3V0ZSA6ICcvJyArIGNoaWxkUm91dGUucmVwbGFjZSgvXlxcLysvLCAnJyk7XG4gICAgaWYgKGN1cnJlbnRSb3V0ZSA9PT0gbm9ybWFsaXplZCB8fCBjdXJyZW50Um91dGUgPT09IGNoaWxkUm91dGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoY3VycmVudFJvdXRlLmxlbmd0aCA+PSBub3JtYWxpemVkLmxlbmd0aCAmJlxuICAgICAgICBjdXJyZW50Um91dGUuZW5kc1dpdGgobm9ybWFsaXplZCkgJiZcbiAgICAgICAgKGN1cnJlbnRSb3V0ZS5sZW5ndGggPT09IG5vcm1hbGl6ZWQubGVuZ3RoIHx8IGN1cnJlbnRSb3V0ZS5jaGFyQXQoY3VycmVudFJvdXRlLmxlbmd0aCAtIG5vcm1hbGl6ZWQubGVuZ3RoIC0gMSkgPT09ICcvJykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogRXhwYW5kYWJsZSBhcHBzIHVzZSBgZGVmYXVsdHVybGAgbGlrZSBgY3JpdGVvL2Ag4oCUIHRyZWF0IGFueSBgL2NyaXRlb2Agb3IgYC9jcml0ZW8vLi4uYCBhcyB1bmRlciB0aGF0IGFwcCBmb3IgYWN0aXZlIGRldGVjdGlvbi5cbiAgICogU2tpcHMgYCMhYCAvIGAjYCB2YWx1ZXMgdXNlZCBieSBsZWdhY3kgQW1hem9uIHVpLXJvdXRlciBlbnRyaWVzLlxuICAgKi9cbiAgcHJpdmF0ZSBtZW51RGVmYXVsdFVybE1hdGNoZXNQYXRoKGN1cnJlbnRSb3V0ZTogc3RyaW5nLCBtZW51OiBSZXZpc2VkTmF2TWVudUl0ZW0pOiBib29sZWFuIHtcbiAgICBjb25zdCBkdSA9IG1lbnUuZGVmYXVsdHVybDtcbiAgICBpZiAoIWR1IHx8IHR5cGVvZiBkdSAhPT0gJ3N0cmluZycgfHwgZHUuaW5kZXhPZignIycpID49IDAgfHwgZHUuaW5kZXhPZignIScpID49IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgYmFzZSA9ICcvJyArIGR1LnJlcGxhY2UoL15cXC8rLywgJycpLnJlcGxhY2UoL1xcLyQvLCAnJyk7XG4gICAgaWYgKCFiYXNlIHx8IGJhc2UgPT09ICcvJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gY3VycmVudFJvdXRlID09PSBiYXNlIHx8IGN1cnJlbnRSb3V0ZS5zdGFydHNXaXRoKGJhc2UgKyAnLycpO1xuICB9XG5cbiAgLyoqIFB1YmxpYyBzbyByb3V0ZSBydWxlcyBzdGF5IGluIG9uZSBwbGFjZSAodXNlZCBieSByZXZpc2VkIGdyb3VwZWQgbWVudXMgKyB1bmlmaWVkIGlzQ2hlY2tBY3RpdmVSb3V0ZSkuICovXG4gIHB1YmxpYyBpc01lbnVSb3V0ZUFjdGl2ZShtZW51OiBSZXZpc2VkTmF2TWVudUl0ZW0pOiBib29sZWFuIHtcbiAgICBpZiAoIW1lbnUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgY2FuZGlkYXRlcyA9IHRoaXMuY29sbGVjdENhbmRpZGF0ZU5hdlBhdGhzKCk7XG4gICAgY29uc3QgY2hpbGRSb3V0ZXMgPSAobWVudSBhcyBhbnkpPy5jaGlsZF9yb3V0ZXMgfHwgW107XG5cbiAgICBjb25zdCBwYXRoUHJlZml4ZWRMaW5rID0gdGhpcy5tZW51VXNlc1BhdGhQcmVmaXhlZExpbmsobWVudSk7XG5cbiAgICBmb3IgKGNvbnN0IGN1cnJlbnRSb3V0ZSBvZiBjYW5kaWRhdGVzKSB7XG4gICAgICAvKiBQYXRoLXByZWZpeGVkIGFuY2lsbGFyeSBsaW5rcyBtdXN0IG1hdGNoIGZ1bGwgcGF0aCAobGluayAvIGRlZmF1bHR1cmwgLyBjaGlsZF9yb3V0ZXMpLCBub3QgYHJvdXRlYCBhbG9uZS4gKi9cbiAgICAgIGlmICghcGF0aFByZWZpeGVkTGluayAmJiBtZW51LnJvdXRlKSB7XG4gICAgICAgIGNvbnN0IG5yID0gdGhpcy5ub3JtYWxpemVNZW51Um91dGVGb3JQYXRoTWF0Y2gobWVudS5yb3V0ZSk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBuciAmJlxuICAgICAgICAgIChjdXJyZW50Um91dGUgPT09IG5yIHx8XG4gICAgICAgICAgICBjdXJyZW50Um91dGUgPT09IG5yICsgJy9rZXl3b3JkLXJlcG9ydCcgfHxcbiAgICAgICAgICAgIGN1cnJlbnRSb3V0ZSA9PT0gbnIgKyAnL2tleXdvcmQtc3VnZ2VzdGlvbnMvYXV0bycgfHxcbiAgICAgICAgICAgIGN1cnJlbnRSb3V0ZSA9PT0gbnIgKyAnL2tleXdvcmQtc3VnZ2VzdGlvbnMvbWFudWFsJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGVnYWN5ID0gJy8nICsgbWVudS5yb3V0ZTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGN1cnJlbnRSb3V0ZSA9PT0gbGVnYWN5IHx8XG4gICAgICAgICAgY3VycmVudFJvdXRlID09PSBsZWdhY3kgKyAnL2tleXdvcmQtcmVwb3J0JyB8fFxuICAgICAgICAgIGN1cnJlbnRSb3V0ZSA9PT0gbGVnYWN5ICsgJy9rZXl3b3JkLXN1Z2dlc3Rpb25zL2F1dG8nIHx8XG4gICAgICAgICAgY3VycmVudFJvdXRlID09PSBsZWdhY3kgKyAnL2tleXdvcmQtc3VnZ2VzdGlvbnMvbWFudWFsJ1xuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMubWVudVBhdGhNYXRjaGVzTGlua1BhdGgoY3VycmVudFJvdXRlLCBtZW51LmxpbmsgYXMgc3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm1lbnVEZWZhdWx0VXJsTWF0Y2hlc1BhdGgoY3VycmVudFJvdXRlLCBtZW51KSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChtZW51Lm1hdGNoUm91dGVzICYmIG1lbnUubWF0Y2hSb3V0ZXMuaW5kZXhPZihjdXJyZW50Um91dGUpID4gLTEpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoY2hpbGRSb3V0ZXMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgIGNoaWxkUm91dGVzLnNvbWUoKGNoaWxkUm91dGUpID0+IHRoaXMubWVudUNoaWxkUm91dGVNYXRjaGVzUGF0aChjdXJyZW50Um91dGUsIGNoaWxkUm91dGUpKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVSZXZpc2VkTGFiZWwobGFiZWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFsYWJlbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiBsYWJlbFxuICAgICAgLnJlcGxhY2UoLzxbXj5dKj4vZywgJycpXG4gICAgICAucmVwbGFjZSgvaW50ZW50d2lzZVxccysvZ2ksICcnKVxuICAgICAgLnJlcGxhY2UoL1xccysvZywgJyAnKVxuICAgICAgLnRyaW0oKVxuICAgICAgLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldFJldmlzZWRPcHRpbWl6ZVJlY29tbWVuZGF0aW9uQ291bnQoYXBwOiBSZXZpc2VkTmF2TWVudUl0ZW0pOiBudW1iZXIgfCBudWxsIHtcbiAgICBpZiAoIWFwcCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGFwcC5pZCA9PT0gJ2Fkc19hbWF6b25fYWR2ZXJ0aXNpbmcnKSB7XG4gICAgICBjb25zdCByZWNvbW1lbmRhdGlvbk1lbnUgPSB0aGlzLmZpbmRSZXZpc2VkTWVudUJ5SWQoYXBwLmNoaWxkcmVuIHx8IFtdLCAnYW1zX2Fkc19yZWNvbW1lbmRhdGlvbnMnKTtcbiAgICAgIHJldHVybiByZWNvbW1lbmRhdGlvbk1lbnUgPyB0aGlzLmdldE1lbnVDb3VudFZhbHVlKHJlY29tbWVuZGF0aW9uTWVudSwgJ2FjdGl2ZVJlY29tbWVuZGF0aW9uJykgOiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNZW51Q291bnRWYWx1ZShtZW51OiBSZXZpc2VkTmF2TWVudUl0ZW0sIGZhbGxiYWNrQ291bnRLZXk/OiBzdHJpbmcpOiBudW1iZXIgfCBudWxsIHtcbiAgICBjb25zdCBjb3VudEtleSA9IG1lbnUgJiYgbWVudS5jb3VudEtleSA/IG1lbnUuY291bnRLZXkgOiBmYWxsYmFja0NvdW50S2V5O1xuICAgIGlmICghY291bnRLZXkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGNvdW50VmFsdWUgPSB0aGlzLm5hdmlnYXRpb24uZmV0Y2hLZXlWYWx1ZShjb3VudEtleSk7XG4gICAgcmV0dXJuIHR5cGVvZiBjb3VudFZhbHVlID09PSAnbnVtYmVyJyAmJiBjb3VudFZhbHVlID4gMCA/IGNvdW50VmFsdWUgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kUmV2aXNlZE1lbnVCeUlkKG1lbnVzOiBSZXZpc2VkTmF2TWVudUl0ZW1bXSwgbWVudUlkOiBzdHJpbmcpOiBSZXZpc2VkTmF2TWVudUl0ZW0gfCBudWxsIHtcbiAgICBpZiAoIW1lbnVzIHx8ICFtZW51SWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgbWVudSBvZiBtZW51cykge1xuICAgICAgaWYgKCFtZW51KSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVudS5pZCA9PT0gbWVudUlkIHx8IG1lbnUuc291cmNlTWVudUlkID09PSBtZW51SWQpIHtcbiAgICAgICAgcmV0dXJuIG1lbnU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1hdGNoZWRDaGlsZCA9IHRoaXMuZmluZFJldmlzZWRNZW51QnlJZChtZW51LmNoaWxkcmVuIHx8IFtdLCBtZW51SWQpO1xuICAgICAgaWYgKG1hdGNoZWRDaGlsZCkge1xuICAgICAgICByZXR1cm4gbWF0Y2hlZENoaWxkO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGdldCBzaWRlSWRJbmZvKCl7XG4gICAgaWYodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMgJiYgdGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuc2lkZWJhckluZm8gJiYgdGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuc2lkZWJhckluZm8uc2l0ZUlkKXtcbiAgICAgIHJldHVybiBOdW1iZXIodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuc2lkZWJhckluZm8uc2l0ZUlkKVxuICAgIH1lbHNlIGlmKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzICYmIHRoaXMuYXBwbGljYXRpb25EZXRhaWxzICYmIHRoaXMuYXBwbGljYXRpb25EZXRhaWxzWydzaXRlSWQnXSl7XG4gICAgICByZXR1cm4gTnVtYmVyKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzWydzaXRlSWQnXSlcbiAgICB9XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuXG4gIHB1YmxpYyBjaGVja0ZvclJlZGlyZWN0aW9uKGFwcE1lbnVzLCBnc01lbnVzLCBhcHBsaWNhdGlvbkRldGFpbHMpIHtcbiAgICBjb25zdCBjdXJyZW50Um91dGUgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJz8nKVswXTtcbiAgICBjb25zdCBjdXJyZW50QXBwTWVudXMgPSBhcHBNZW51cy5maW5kKGFwcCA9PiAgYXBwLmlkLmluZGV4T2YoYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQpID49IDApO1xuXG4gICAgaWYgKGN1cnJlbnRBcHBNZW51cykge1xuICAgICAgY29uc3QgYWxsTWVudXMgPSBbY3VycmVudEFwcE1lbnVzLCAuLi5nc01lbnVzXTtcbiAgICAgIGNvbnN0IGlzTWVudUF2YWlsYWJsZSA9IGZpbmRMaW5rKGFsbE1lbnVzKTtcbiAgICAgIGlmICghaXNNZW51QXZhaWxhYmxlKSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbi5nZXRIb3N0T3JpZ2luQW5kTmF2aWdhdGUoY3VycmVudEFwcE1lbnVzLmRlZmF1bHR1cmwpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5hdmlnYXRpb24uZ2V0SG9zdE9yaWdpbkFuZE5hdmlnYXRlKHRoaXMudG9EaXNwbGF5QXBwbGljYXRpb25zWzBdLmRlZmF1bHR1cmwpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gaXNNZW51Um91dGVNYXRjaChsaW5rKSB7XG4gICAgICByZXR1cm4gY3VycmVudFJvdXRlID09PSBgLyR7bGlua31gO1xuICAgIH0gXG5cbiAgICBmdW5jdGlvbiBmaW5kTGluayhtZW51QXJyYXkpIHtcbiAgICAgIHJldHVybiBtZW51QXJyYXkuc29tZShmdW5jdGlvbihtZW51KSB7XG4gICAgICAgICAgaWYobWVudS5sZXZlbCA9PSBcIm9uZVwiICYmIG1lbnUuY2hpbGRyZW4gJiYgbWVudS5jaGlsZHJlbi5sZW5ndGggPiAwKXtcbiAgICAgICAgICAvLyBJZiB0aGUgbWVudSBoYXMgY2hpbGRyZW4sIHNlYXJjaCByZWN1cnNpdmVseVxuICAgICAgICAgIGlmIChtZW51LmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmaW5kTGluayhtZW51LmNoaWxkcmVuKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgY3VycmVudCBtZW51IGl0ZW0gaGFzIGEgbWF0Y2hpbmcgbGlua1xuICAgICAgICAgIGlmIChpc01lbnVSb3V0ZU1hdGNoKG1lbnUucm91dGUpKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBjaGlsZCByb3V0ZXMsIHNlYXJjaCB3aXRoaW4gdGhlbVxuICAgICAgICAgIGlmIChtZW51LmNoaWxkX3JvdXRlcykge1xuICAgICAgICAgICAgICByZXR1cm4gbWVudS5jaGlsZF9yb3V0ZXMuc29tZShmdW5jdGlvbihjaGlsZFJvdXRlKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gaXNNZW51Um91dGVNYXRjaChjaGlsZFJvdXRlKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICk7XG4gICAgfVxuICB9XG5cblxuXG5cblxuICAvLyBwdWJsaWMgY2hlY2tGb3JSZWRpcmVjdGlvbihhcHBsaWNhdGlvbkRldGFpbHM6IGFwcERldGFpbHMsIG1lbnVsaXN0cykge1xuICAvLyAgIHRyeXtcbiAgLy8gICAgIGxldCBpc01lbnVWaXNpYmxlQnlvcmdTZXR0aW5nID0gdHJ1ZTtcbiAgLy8gICAgIGxldCBpc01lbnVWaXNpYmxlQnlSb2xlID0gdHJ1ZTtcbiAgLy8gICAgIGxldCBpc01lbnVOb3RWaXNpYmxlQnlSb2xlID0gdHJ1ZTtcbiAgLy8gICAgIGxldCBpc01lbnVyT3JnV2l0aFVzZXJSb2xlID0gdHJ1ZTtcbiAgLy8gICAgIGxldCBpc01lbnVOb3RWaXNpYmxlQnlhcHBzcGFjaWZpY2NvbmZpZ2NoZWNrID10cnVlO1xuICAvLyAgICAgbGV0IGlzcmVkaXJlY3RlZCA9IGZhbHNlO1xuICAvLyAgICAgbGV0IGFwcGxpY2F0aW9uSWRMaXN0ID0gW1wiYWRzX2FtYXpvbl9zZWxsZXJfc2VsbGVyX2FuYWx5dGljc1wiICwgXCJhZHNfYW1hem9uX3NlbGxlcl92ZW5kb3JfYW5hbHl0aWNzXCJdXG5cbiAgLy8gICAgIGxldCBtZW51bGlzdCA9IGFwcGxpY2F0aW9uSWRMaXN0LmluZGV4T2YoYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQpID4gLTEgJiYgYXBwbGljYXRpb25EZXRhaWxzLmxpc3RNZW51cyAmJiBhcHBsaWNhdGlvbkRldGFpbHMubGlzdE1lbnVzLmxlbmd0aCA+IDAgPyBhcHBsaWNhdGlvbkRldGFpbHMubGlzdE1lbnVzIDogbWVudWxpc3RzO1xuXG4gIC8vICAgICBjb25zdCByb2xlID0gWydTVVBFUl9BRE1JTicsICdTVVBFUl9BRE1JTl9SRUFEX09OTFknXTtcbiAgLy8gICAgIGlmIChyb2xlLmluZGV4T2YoYXBwbGljYXRpb25EZXRhaWxzLnVzZXJJbmZvLnJvbGUpID09IC0xKSB7XG4gICAgICAgIFxuICAvLyAgICAgICBsZXQgYXBwbGljYXRpb25NZW51ZXMgPSBtZW51bGlzdCAmJiBtZW51bGlzdC5sZW5ndGggPiAwICYmIG1lbnVsaXN0LmZpbmQoKG1lbnVzKT0+e1xuICAvLyAgICAgICAgIHJldHVybiBtZW51cy5pZCA9PSBhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZFxuICAvLyAgICAgICB9KVxuXG4gIC8vICAgICAgIGlmIChhcHBsaWNhdGlvbk1lbnVlcyAmJiBhcHBsaWNhdGlvbk1lbnVlcy5vcmdhbml6YXRpb25fc2V0dGluZ19ub3RfaW4pIHtcbiAgLy8gICAgICAgICBpc01lbnVWaXNpYmxlQnlvcmdTZXR0aW5nID0gdGhpcy5uYXZpZ2F0aW9uLmNoZWNrRm9yTm90T3JnU2V0dGluZ3MoYXBwbGljYXRpb25NZW51ZXMub3JnYW5pemF0aW9uX3NldHRpbmdfbm90X2luKTtcbiAgLy8gICAgICAgfVxuXG4gIC8vICAgICAgIGlmIChhcHBsaWNhdGlvbk1lbnVlcyAmJiBhcHBsaWNhdGlvbk1lbnVlcy52aXNpYmlsaXR5X3JvbGVzKSB7XG4gIC8vICAgICAgICAgaXNNZW51VmlzaWJsZUJ5Um9sZSA9IHRoaXMubmF2aWdhdGlvbi5jaGVja0ZvclJvbGVzKGFwcGxpY2F0aW9uTWVudWVzLnZpc2liaWxpdHlfcm9sZXMpO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGlmIChhcHBsaWNhdGlvbk1lbnVlcyAmJiBhcHBsaWNhdGlvbk1lbnVlcy52aXNpYmlsaXR5X3JvbGVzX25vdF9pbikge1xuICAvLyAgICAgICAgIGlzTWVudU5vdFZpc2libGVCeVJvbGUgPSB0aGlzLm5hdmlnYXRpb24uY2hlY2tGb3J2aXNpYmlsaXR5Um9sZXNOb3RJbihhcHBsaWNhdGlvbk1lbnVlcy52aXNpYmlsaXR5X3JvbGVzX25vdF9pbik7XG4gIC8vICAgICAgIH1cblxuICAvLyAgICAgICBpZiAoYXBwbGljYXRpb25NZW51ZXMgJiYgYXBwbGljYXRpb25NZW51ZXMuYXBwX3NwYWNpZmljX2NvbmZpZ19jaGVjaykge1xuICAvLyAgICAgICAgIGlzTWVudU5vdFZpc2libGVCeWFwcHNwYWNpZmljY29uZmlnY2hlY2sgPSB0aGlzLm5hdmlnYXRpb24uYXBwU3BlY2lmaWNDb25maWcoYXBwbGljYXRpb25NZW51ZXMuYXBwX3NwYWNpZmljX2NvbmZpZ19jaGVjayk7XG4gIC8vICAgICAgIH1cblxuICAvLyAgICAgICBpZiAoYXBwbGljYXRpb25NZW51ZXMgJiYgYXBwbGljYXRpb25NZW51ZXMub3JnX3VzZXJfY3RybCkge1xuICAvLyAgICAgICAgIGlzTWVudXJPcmdXaXRoVXNlclJvbGUgPSB0aGlzLm5hdmlnYXRpb24uY2hlY2tGb3JPcmdXaXRoVXNlclJvbGUoYXBwbGljYXRpb25NZW51ZXMub3JnX3VzZXJfY3RybCxhcHBsaWNhdGlvbk1lbnVlcywgYXBwbGljYXRpb25EZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQpO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGlmIChhcHBsaWNhdGlvbk1lbnVlcyAmJiBhcHBsaWNhdGlvbk1lbnVlcy5pZCA9PSBcImFtYy1wbGF0Zm9ybS13ZWJcIiAmJiBhcHBsaWNhdGlvbk1lbnVlcy5jaGlsZHJlbikge1xuICAvLyAgICAgICAgIGxldCBpc0NoaWxkTWVudVZpc2libGVCeVJvbGUgPSB0cnVlO1xuICAvLyAgICAgICAgIGxldCBpc0NoaWxkTWVudU5vdFZpc2libGVCeVJvbGUgPSB0cnVlO1xuICAvLyAgICAgICAgIGxldCBpc0NoaWxkTWVudXJPcmdXaXRoVXNlclJvbGUgPSB0cnVlO1xuXG4gIC8vICAgICAgICAgY29uc3QgY2hpbGRtZW51ID0gdGhpcy52YWxpZGF0ZVJvdXRlQnlTdGF0ZSggdGhpcy5yb3V0ZXIgLCBhcHBsaWNhdGlvbk1lbnVlcy5jaGlsZHJlbik7XG5cbiAgLy8gICAgICAgICBpZiAoY2hpbGRtZW51ICYmIGNoaWxkbWVudS52aXNpYmlsaXR5X3JvbGVzX25vdF9pbikge1xuICAvLyAgICAgICAgICAgaXNDaGlsZE1lbnVOb3RWaXNpYmxlQnlSb2xlID0gdGhpcy5uYXZpZ2F0aW9uLmNoZWNrRm9ydmlzaWJpbGl0eVJvbGVzTm90SW4oY2hpbGRtZW51LnZpc2liaWxpdHlfcm9sZXNfbm90X2luKTtcbiAgLy8gICAgICAgICB9XG5cbiAgLy8gICAgICAgICBpZiAoY2hpbGRtZW51ICYmIGNoaWxkbWVudS52aXNpYmlsaXR5X3JvbGVzKSB7XG4gIC8vICAgICAgICAgICBpc0NoaWxkTWVudVZpc2libGVCeVJvbGUgPSB0aGlzLm5hdmlnYXRpb24uY2hlY2tGb3JSb2xlcyhjaGlsZG1lbnUudmlzaWJpbGl0eV9yb2xlcyk7XG4gIC8vICAgICAgICAgfVxuXG4gIC8vICAgICAgICAgaWYgKGNoaWxkbWVudSAmJiBjaGlsZG1lbnUub3JnX3VzZXJfY3RybCkge1xuICAvLyAgICAgICAgICAgaXNDaGlsZE1lbnVyT3JnV2l0aFVzZXJSb2xlID0gdGhpcy5uYXZpZ2F0aW9uLmNoZWNrRm9yT3JnV2l0aFVzZXJSb2xlKGNoaWxkbWVudS5vcmdfdXNlcl9jdHJsLGNoaWxkbWVudSwgYXBwbGljYXRpb25EZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQpO1xuICAvLyAgICAgICAgIH1cblxuICAvLyAgICAgICAgIGlmICgoIWlzQ2hpbGRNZW51Tm90VmlzaWJsZUJ5Um9sZSB8fCAhaXNDaGlsZE1lbnVWaXNpYmxlQnlSb2xlIHx8ICFpc0NoaWxkTWVudXJPcmdXaXRoVXNlclJvbGUpICYmIGNoaWxkbWVudSkge1xuICAvLyAgICAgICAgICAgaXNyZWRpcmVjdGVkID0gdHJ1ZTtcbiAgLy8gICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9cIl0pO1xuICAvLyAgICAgICAgIH1cbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBpZiAoKCFpc01lbnVWaXNpYmxlQnlvcmdTZXR0aW5nIHx8ICFpc01lbnVWaXNpYmxlQnlSb2xlIHx8ICFpc01lbnVOb3RWaXNpYmxlQnlSb2xlIHx8ICFpc01lbnVyT3JnV2l0aFVzZXJSb2xlIHx8ICFpc01lbnVOb3RWaXNpYmxlQnlhcHBzcGFjaWZpY2NvbmZpZ2NoZWNrKSAmJiAhaXNyZWRpcmVjdGVkKSB7XG4gIC8vICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRBcHApIHtcbiAgLy8gICAgICAgICAgIHRoaXMubmF2aWdhdGlvbi5nZXRIb3N0T3JpZ2luQW5kTmF2aWdhdGUodGhpcy50b0Rpc3BsYXlBcHBsaWNhdGlvbnNbMF0uZGVmYXVsdHVybCk7ICBcbiAgLy8gICAgICAgICB9ZWxzZXtcbiAgLy8gICAgICAgICAgIHRoaXMubmF2aWdhdGlvbi5nZXRIb3N0T3JpZ2luQW5kTmF2aWdhdGUoYXBwbGljYXRpb25NZW51ZXMuZGVmYXVsdHVybCk7XG4gIC8vICAgICAgICAgfVxuICAvLyAgICAgICB9XG4gIC8vICAgICB9XG4gIC8vICAgfWNhdGNoKGVycm9yKXtcbiAgLy8gICAgICAgdGhyb3cgZXJyb3I7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgdmFsaWRhdGVSb3V0ZUJ5U3RhdGUoc3RhdGUgLCBsaXN0TWVudXMpe1xuICAgIHRyeXtcbiAgICAgICAgY29uc3QgZmluZFJvdXRlID0gbGlzdE1lbnVzLmZpbmQobGlzdCA9PiB7XG4gICAgICAgICAgICBpZihsaXN0LmxpbmsgPT0gJ2FtYycrc3RhdGUudXJsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgICAgICAgICB9IGVsc2UgaWYobGlzdC5tYXRjaFJvdXRlcyAmJiBsaXN0Lm1hdGNoUm91dGVzLmxlbmd0aCA+IDApe1xuICAgICAgICAgICAgICAgIGlmKGxpc3QubWF0Y2hSb3V0ZXMuaW5jbHVkZXMoc3RhdGUudXJsKSl7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGZpbmRSb3V0ZTtcbiAgICB9Y2F0Y2goZXJyb3Ipe1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59XG4gIFxuICAvLyBwdWJsaWMgY2hlY2tGb3JSZWRpcmVjdGlvbihhcHBsaWNhdGlvbkRldGFpbHM6IGFwcERldGFpbHMpIHtcbiAgLy8gICBsZXQgcm91dGUgPSAnJztcbiAgLy8gICBpZihhcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudEFjY291bnQgJiYgISh0aGlzLm5hdmlnYXRpb24uaXNIYXZpbmdBbnlBY3RpdmVTdWJzKGFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkLGFwcGxpY2F0aW9uRGV0YWlscy5jdXJyZW50QWNjb3VudC5zdWJzY3JpcHRpb24sYXBwbGljYXRpb25EZXRhaWxzLmN1cnJlbnRBY2NvdW50LnR5cGUpKSl7XG4gIC8vICAgICBzd2l0Y2goYXBwbGljYXRpb25EZXRhaWxzLmN1cnJlbnRBY2NvdW50LnR5cGUpe1xuICAvLyAgICAgICBjYXNlICdDT05URU5UJzoge1xuICAvLyAgICAgICAgICAgcm91dGUgPSAnY29udGVudC9zaGFyZS1vZi12b2ljZSdcbiAgLy8gICAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ0RTUCc6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICdkc3Avb3JkZXInXG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgY2FzZSAnQU1TX0FUVFJJQlVUSU9OJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJ2F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNhbXBhaWducydcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBjYXNlICdTRUxMRVJfQ0VOVFJBTCc6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICcjIS9hbXMtY29udGVudC1kYXNoYm9hcmQvc2VsbGVyLXNhbGVzLW92ZXJ2aWV3JztcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBjYXNlICdWRU5ET1JfQ0VOVFJBTCc6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICcjIS9hbXMtY29udGVudC1kYXNoYm9hcmQvY3VzdG9tLXJlcG9ydHMtdmVuZG9yLXNhbGVzLW92ZXJ2aWV3JztcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBjYXNlICdJTlNUQUNBUlQnOiB7XG4gIC8vICAgICAgICAgcm91dGUgPSAnaW5zdGFjYXJ0L2luc3RhY2FydC1vdmVydmlldyc7XG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgY2FzZSAnQ1JJVEVPJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJ2NyaXRlby9jcml0ZW8tb3ZlcnZpZXcnO1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ1dBTE1BUlQnOiB7XG4gIC8vICAgICAgICAgcm91dGUgPSAnd2FsbWFydC8nO1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ0FNQVpPTl9NQVJLRVRJTkdfQ0xPVUQnOiB7XG4gIC8vICAgICAgICAgcm91dGUgPSAnZHAvZGF0YS1hbmFseXRpY3MtZ2V0dGluZy1zdGFydGVkJztcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBjYXNlICdBTVNfVkVORE9SJzpcbiAgLy8gICAgICAgY2FzZSAnQU1TX1NFTExFUic6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICcjIS9hbXMtcGFnZS1vdmVydmlldyc7XG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH1cbiAgLy8gICAgIHRoaXMubmF2aWdhdGlvbi5nZXRIb3N0T3JpZ2luQW5kTmF2aWdhdGUocm91dGUpO1xuICAvLyAgIH1cbiAgLy8gfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTdHJ1Y3R1cmVBUElTdXBwb3J0RGF0YShjdXJyZW50QWNjb3VudCl7XG4gICAgdHJ5IHtcbiAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldFN0cnVjdHVyZUFQSVN1cHBvcnREYXRhKGN1cnJlbnRBY2NvdW50Lm9yZ2FuaXphdGlvbklkLGN1cnJlbnRBY2NvdW50LmJ1c2luZXNzR3JvdXBJZCxjdXJyZW50QWNjb3VudC5hbXNBY2NvdW50SWQpLnN1YnNjcmliZSggXG4gICAgICAocmVzcG9uc2U6YW55KSA9PiB7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbi5pc1N0cnVjdHVyZUFwaVN1cHBvcnQgPSByZXNwb25zZSA/IHJlc3BvbnNlWydzdHJ1Y3R1cmVBcGlTdXBwb3J0J10gOiB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbi5pc01hbmFnZWRTZXJ2aWNlQWNjID0gcmVzcG9uc2UgPyByZXNwb25zZVsnaXNNYW5hZ2VkQWNjb3VudCddIDogdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmNyZWF0ZUFwcERldGFpbHModGhpcy5hcHBsaWNhdGlvbkRldGFpbHMpO1xuICAgICAgICB0aGlzLmNkcmVmLmRldGVjdENoYW5nZXMoKTsgLy8gVHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIGFmdGVyIEFQSSByZXNwb25zZVxuICAgICAgfSxcbiAgICAgIChlcnJvcjphbnkpID0+e1xuICAgICAgICB0aGlzLm5hdmlnYXRpb24uaXNTdHJ1Y3R1cmVBcGlTdXBwb3J0ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm5hdmlnYXRpb24uaXNNYW5hZ2VkU2VydmljZUFjYyA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5jcmVhdGVBcHBEZXRhaWxzKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzKTtcbiAgICAgICAgdGhpcy5jZHJlZi5kZXRlY3RDaGFuZ2VzKCk7IC8vIFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiBhZnRlciBlcnJvclxuICAgICAgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICB9XG4gIFxuICBwdWJsaWMgc2Nyb2xsVG9BY3RpdmVNZW51KCl7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZih0aGlzLmxpc3RJdGVtcyAmJiB0aGlzLmxpc3RJdGVtcy5maW5kKChfLCBpKSA9PiAgXy5pc0FjdGl2ZUl0ZW0pICE9IHVuZGVmaW5lZCl7XG4gICAgICAgIHRoaXMubGlzdC5zY3JvbGxUb3AgPSB0aGlzLmxpc3RJdGVtcy5maW5kKChfLCBpKSA9PiAgXy5pc0FjdGl2ZUl0ZW0pLm9mZnNldFRvcDtcbiAgICAgIH1cbiAgICB9LCA1MDApO1xuICB9XG5cbiAgcHVibGljIGlzQ2hlY2tBY3RpdmVSb3V0ZShtZW51LGhlYWRtZW51LHBhcmVudE1lbnUgPSBudWxsKSB7XG4gICAgLy8gbGV0IHVybEFycmF5ID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcvJyk7XG4gICAgLy8gbGV0IHJvdXRlVXJsID0gdXJsQXJyYXlbdXJsQXJyYXkubGVuZ3RoIC0gMV07XG4gICAgLy8gbGV0IGN1cnJlbnRSb3V0ZSA9IHJvdXRlVXJsLnNwbGl0KCc/JylbMF07XG4gICAgLy8gbGV0IHJvdXRlPW1lbnUucm91dGU7XG4gICAgLy8gbGV0IHBhZ2VOYW1lO1xuICAgIC8vIGlmKHJvdXRlKXtcbiAgICAvLyBsZXQgc3BsaXRlZFVSTCA9IHJvdXRlLnNwbGl0KFwiL1wiKTtcbiAgICAvLyBwYWdlTmFtZSA9IHNwbGl0ZWRVUkwubGVuZ3RoID4wID8gIHNwbGl0ZWRVUkxbc3BsaXRlZFVSTC5sZW5ndGggLSAxXSA6IHJvdXRlO1xuICAgIC8vIH1cblxuICAgIGlmICghbWVudSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuaXNNZW51Um91dGVBY3RpdmUobWVudSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHBhcmVudE1lbnUgIT0gbnVsbCkge1xuICAgICAgdGhpcy5hY3RpdmVQYW5lbCA9IHBhcmVudE1lbnUuaWQ7XG4gICAgfVxuICAgIGlmIChoZWFkbWVudSAhPT0gdW5kZWZpbmVkICYmIGhlYWRtZW51ICE9PSBudWxsKSB7XG4gICAgICBpZiAodGhpcy5wcmV2QWN0aXZlSGVhZE1lbnUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBoZWFkbWVudS5pc0FjdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMucHJldkFjdGl2ZUhlYWRNZW51ID0gaGVhZG1lbnU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnByZXZBY3RpdmVIZWFkTWVudS5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICBoZWFkbWVudS5pc0FjdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMucHJldkFjdGl2ZUhlYWRNZW51ID0gaGVhZG1lbnU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHVibGljIGtlZXBNZW51RXhwYW5kZWQocGFyZW50TWVudUlkOnN0cmluZykge1xuICAgIGlmKHBhcmVudE1lbnVJZC5pbmRleE9mKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQpID49IDAgICl7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWxsTWVudUNvbGxhcHNlKCl7XG4gICAgZm9yKGxldCBoZWFkTWVudSBvZiB0aGlzLnRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudSkge1xuICAgICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBtb2RmaWNhdGlvbkRhdGEoZGF0YTogYW55KTogYW55IHtcbiAgICBsZXQgY29uZmlncyA9IHRoaXMubmF2aWdhdGlvbi5nZXRUeXBlU3RhdHVzQ29uZmlncygpO1xuXHRcdGxldCBvcmRlciA9IE9iamVjdC5rZXlzKGNvbmZpZ3MpO1xuXHRcdGlmKG9yZGVyLmluZGV4T2YoZGF0YS50eXBlKSA+IC0xKXtcblx0XHRcdGRhdGEuYWN0aXZlID0gY29uZmlnc1tkYXRhLnR5cGVdID8gY29uZmlnc1tkYXRhLnR5cGVdIDogZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiBkYXRhO1xuXHR9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgLy8gdGhpcy5zaG93TWVudUljb24oKTtcbiAgICB0aGlzLmNoZWNrQXBwbGljYXRpb25EZXRhaWxzKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzKTtcbiAgICBpZih0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkID09ICdhZHNfYW1hem9uX2RzcCcpe1xuICAgICAgdGhpcy5nZXRTdHJ1Y3R1cmVBUElTdXBwb3J0RGF0YSh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5jdXJyZW50QWNjb3VudCk7XG4gICAgfVxuICAgIHRoaXMuY2RyZWYuZGV0ZWN0Q2hhbmdlcygpOyAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gd2hlbiBpbnB1dHMgY2hhbmdlXG4gIH1cblxuICBwdWJsaWMgZ29Ub0FwcGxpY2F0aW9uKGl0ZW0pIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3NlbGVjdGVkQXBwSWQnKTtcbiAgICBjb25zdCB0YXJnZXRJdGVtID0gdGhpcy5nZXREZWZhdWx0TmF2aWdhdGlvblRhcmdldChpdGVtKTtcbiAgICB0aGlzLmdvVG9BcHBEZWZhdWx0UGFnZSh0YXJnZXRJdGVtLCBpdGVtPy5pZCB8fCB0YXJnZXRJdGVtPy5pZCk7XG4gIH1cblxuICBwdWJsaWMgZ29Ub01lbnVMaW5rKGl0ZW0pIHtcbiAgICBpZiAoaXRlbSAmJiBpdGVtLmxpbmspIHtcbiAgICAgIHdpbmRvdy5vcGVuKGl0ZW0ubGluaywgJ19ibGFuaycpO1xuICAgICAgY29uc3QgcHJhbXMgPSB7XG4gICAgICAgIFwibG9jYXRpb25cIjogbG9jYXRpb24uaHJlZixcbiAgICAgICAgXCJBcHBOYW1lXCI6IGl0ZW0/Lm5hbWUsXG4gICAgICAgIFwibW9kdWxlX25hbWVcIiA6IG51bGxcbiAgICAgIH1cbiAgICAgIHRoaXMubWl4cGFuZWwucHJvZHVjdFRyYWNrRXZlbnQoXCJQYWdlIFZpZXdlZFwiLHByYW1zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubXlPYnNlcnZlcikge1xuICAgICAgdGhpcy5teU9ic2VydmVyLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmKHRoaXMuc2lkZU5hdlN0YXR1c1N1YnNjcmlwdGlvbil7XG4gICAgICB0aGlzLnNpZGVOYXZTdGF0dXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2lkZU5hdkNsb3NlZFN0YXJ0U3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnNpZGVOYXZDbG9zZWRTdGFydFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnb1RvQXBwRGVmYXVsdFBhZ2UoaXRlbSwgYXBwSWQpIHtcbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzYW1lQXBwID0gISEoYXBwSWQgJiYgdGhpcy5hcHBsaWNhdGlvbkRldGFpbHM/LmFwcGxpY2F0aW9uSWQgJiYgYXBwSWQgPT09IHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQpO1xuXG4gICAgaWYgKGl0ZW0uZGVmYXVsdHVybCkge1xuICAgICAgdGhpcy5uYXZpZ2F0aW9uLmdldEhvc3RPcmlnaW5BbmROYXZpZ2F0ZShpdGVtLmRlZmF1bHR1cmwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChzYW1lQXBwICYmIHR5cGVvZiBpdGVtLnJvdXRlID09PSAnc3RyaW5nJyAmJiBpdGVtLnJvdXRlICE9PSAnJyAmJiBpdGVtLnJvdXRlLmluZGV4T2YoJyMnKSA8IDApIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtpdGVtLnJvdXRlXSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaGFzRXhwbGljaXRIYXNoUm91dGUgPSB0eXBlb2YgaXRlbS5yb3V0ZSA9PT0gJ3N0cmluZycgJiYgaXRlbS5yb3V0ZS5pbmRleE9mKCcjJykgPj0gMDtcbiAgICBjb25zdCB0YXJnZXRVcmwgPSBoYXNFeHBsaWNpdEhhc2hSb3V0ZSA/IGl0ZW0ucm91dGUgOiAoaXRlbS5saW5rIHx8IGl0ZW0ucm91dGUpO1xuICAgIGlmICghdGFyZ2V0VXJsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaG9zdE5hdkV4dHJhcyA9IGhhc0V4cGxpY2l0SGFzaFJvdXRlID8geyBhcHBJZCB9IDogdW5kZWZpbmVkO1xuICAgIHRoaXMubmF2aWdhdGlvbi5nZXRIb3N0T3JpZ2luQW5kTmF2aWdhdGUodGFyZ2V0VXJsLCBob3N0TmF2RXh0cmFzKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdE5hdmlnYXRpb25UYXJnZXQoaXRlbTogYW55KTogYW55IHtcbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIGlmIChpdGVtLmRlZmF1bHR1cmwgfHwgaXRlbS5yb3V0ZSB8fCBpdGVtLmxpbmspIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIGNvbnN0IGNoaWxkcmVuID0gaXRlbS5jaGlsZHJlbiB8fCBbXTtcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgICBjb25zdCByZXNvbHZlZCA9IHRoaXMuZ2V0RGVmYXVsdE5hdmlnYXRpb25UYXJnZXQoY2hpbGQpO1xuICAgICAgaWYgKHJlc29sdmVkKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuXG4gIHB1YmxpYyBoaWRlTWVudUZvcldMKCl7XG4gICAgICBsZXQgaXNPcmdTZXR0aW5nO1xuICAgICAgaWYodGhpcy5hcHBsaWNhdGlvbkRldGFpbHNbJ3VzZXJJbmZvJ10ucm9sZSA9PT0gJ0lBQ19CUkFORF9SRUFEX09OTFknIHx8ICh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5vcmdTZXR0aW5ncyAmJiB0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5vcmdTZXR0aW5ncy5sZW5ndGggPT0gMCkpe1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1lbHNle1xuICAgICAgICBpZiAodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMub3JnU2V0dGluZ3MgJiYgdGhpcy5hcHBsaWNhdGlvbkRldGFpbHMub3JnU2V0dGluZ3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGlzT3JnU2V0dGluZyA9IHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLm9yZ1NldHRpbmdzLmZpbHRlcihmdW5jdGlvbihvcmdTZXR0aW5nKXtcbiAgICAgICAgICAgIGlmKCBvcmdTZXR0aW5nLnNldHRpbmcgPT09ICdJQUNfSU5TSUdIVFMnICYmICghb3JnU2V0dGluZy52YWx1ZSB8fCBvcmdTZXR0aW5nLnZhbHVlICYmIG9yZ1NldHRpbmcudmFsdWUgPT0gJ0FDVElWRScpKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoaXNPcmdTZXR0aW5nICE9IG51bGwgJiYgKCB0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5zaWRlYmFySW5mby5zaXRlSWQgPiAxMSB8fCB0aGlzLmFwcGxpY2F0aW9uRGV0YWlsc1sndXNlckluZm8nXS5yb2xlID09PSAnSUFDX0JSQU5EX1JFQURfT05MWScpKTtcbiAgICAgIH1cbiAgfVxuXG4gIC8vIHB1YmxpYyBpc0FwcGxpY2F0aW9uQWN0aXZlKHBhcmVudE1lbnVJZCkge1xuICAvLyAgIGlmKHBhcmVudE1lbnVJZC5pbmRleE9mKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQpID49IDAgICYmIHRoaXMuaXNHbG9iYWxTZXR0aW5nc01lbnVBY3RpdmUpe1xuICAvLyAgICAgcmV0dXJuIHRydWU7XG4gIC8vICAgfVxuICAvLyAgIGVsc2V7XG4gIC8vICAgICByZXR1cm4gZmFsc2U7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgXG59XG4iLCI8ZGl2IGlkPVwibG9hZGVyX3NvdlwiPlxuICA8ZGl2IGlkPVwibG9hZGluZ19kaXZcIiAqbmdJZj1cImFwcGxpY2F0aW9uRGV0YWlscz8uc2lkZWJhckluZm9cIj5cbiAgICA8ZGl2PlxuICAgICAgPGRpdiBpZD1cImxvYWRlclwiICpuZ0lmPVwic2lkZUlkSW5mbyAhPT0gMVwiXG4gICAgICAgIGNsYXNzPVwic2l0ZV97e3NpZGVJZEluZm99fVwiPlxuICAgICAgICA8aW1nIHNyYz1cInt7YXBwbGljYXRpb25EZXRhaWxzPy5zaWRlYmFySW5mbz8ubG9nb319XCI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgaWQ9XCJsb2FkZXJfaW1nXCIgKm5nSWY9XCJzaWRlSWRJbmZvID09IDFcIj5cbiAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2ltYWdlcy9oYXBweV9leWVzX2Nsb3NlZF9zbWFsbC5zdmdcIj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgY2xhc3M9XCJsb2FkZXJfcHJvZ3Jlc3MtYmFyLXBvc2l0aW9uXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZsZXhGaWxsICpuZ0lmPVwiZXJyb3JNc2cubGVuZ3RoID09IDAgZWxzZSBlcnJvckJsb2NrXCIgdHJhbnNsYXRlPVwibm9cIiBpZD1cImFuZ3VsYXItMTYtdmVyc2lvblwiIFtuZ0NsYXNzXT1cInsnbmF2bWVudS1leHBhbmRlZCcgOiAhbmF2RXhwYW5kZWQsICdhcHBsaWNhdGlvbi1zaWRlYmFyLS1yZXZpc2VkLW5hdic6IGlzUmV2aXNlZE5hdmlnYXRpb25FbmFibGVkKCl9XCI+XG4gIDxtYXQtdG9vbGJhciBjbGFzcz1cInBvcnRhbC1zaWRlLW1lbnUtdG9wLXRvb2xiYXJcIj5cbiAgICA8bWF0LXRvb2xiYXItcm93IGZ4TGF5b3V0PVwicm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicmV2aXNlZC1zZWN0aW9uLWFwcC1sb2dvIHBvcnRhbC1mb3JnZXQtaGVhZGluZy1jYXJkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlbWVudS1sb2dvLWhvbGRlclwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzaWRlSWRJbmZvICE9PSAxXCI+XG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhcHBsaWNhdGlvbkRldGFpbHM/LnNpZGViYXJJbmZvPy5mYXZpY29uXCIgc3R5bGU9XCJ3aWR0aDogNDBweCAhaW1wb3J0YW50O2Rpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcIiAqbmdJZj1cIiFuYXZFeHBhbmRlZFwiIFthbHRdPVwiYXBwbGljYXRpb25EZXRhaWxzPy5zaWRlYmFySW5mbz8uZmlyc3ROYW1lXCIgY2xhc3M9XCJmYXZpY29uLWRpbWVuc2lvblwiIC8+XG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhcHBsaWNhdGlvbkRldGFpbHM/LnNpZGViYXJJbmZvPy5sb2dvXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XCIgICpuZ0lmPVwibmF2RXhwYW5kZWRcIiBjbGFzcz1cImxvZ28tZGltZW5zaW9uXCIgLz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2lkZUlkSW5mbyA9PSAxXCI+XG4gICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2xvZ29zL2ludGVudHdpc2Vsb2dvLnN2Z1wiIHN0eWxlPVwid2lkdGg6IDQwcHggIWltcG9ydGFudDtkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XCIgKm5nSWY9XCIhbmF2RXhwYW5kZWRcIiBbYWx0XT1cImFwcGxpY2F0aW9uRGV0YWlscz8uc2lkZWJhckluZm8/LmZpcnN0TmFtZVwiIGNsYXNzPVwiZmF2aWNvbi1kaW1lbnNpb24gaW50ZW50d2lzZS1mYXZpY29uXCI+XG4gICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2xvZ29zL0ludGVudHdpc2Uuc3ZnXCIgIHN0eWxlPVwiZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1wiICpuZ0lmPVwibmF2RXhwYW5kZWRcIiBbYWx0XT1cImFwcGxpY2F0aW9uRGV0YWlscz8uc2lkZWJhckluZm8/LmZpcnN0TmFtZVwiIGNsYXNzPVwibG9nby1kaW1lbnNpb24gaW50ZW50d2lzZS1sb2dvXCI+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtdG9vbGJhci1yb3c+XG4gIDwvbWF0LXRvb2xiYXI+XG4gIDwhLS0gPGRpdiBjbGFzcz1cInNpZGViYXItY29sbGFwc2UtaWNvblwiICpuZ0lmPVwiaXNBZG1pblJvbGVcIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwic2lkZW1lbnUtaWNvbi10b3BcIiAoY2xpY2spPVwiYWxsTWVudUNvbGxhcHNlKClcIj5cbiAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJzaWRlbmF2ICYmIHNpZGVuYXYub3BlbmVkXCI+a2V5Ym9hcmRfYXJyb3dfdXA8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PiAtLT5cbiAgPGRpdiAqbmdJZj1cInNpZGVuYXYgJiYgc2lkZW5hdi5vcGVuZWQgJiYgIWluQ29udGV4dEluc2lnaHRzV0xBcHAgJiYgaXNMZWdhY3lOYXZpZ2F0aW9uRW5hYmxlZCgpXCIgY2xhc3M9XCJhcHAtbWVudS1jb250YWluZXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYXBwLW1lbnUtYnV0dG9uIHNlbGVjdGVkLWFwcC1idXR0b25cIiAqbmdJZj1cInRvRGlzcGxheUFwcGxpY2F0aW9ucyAmJiB0b0Rpc3BsYXlBcHBsaWNhdGlvbnMubGVuZ3RoID09IDFcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYXBwLW5hbWUgc2VsZWN0ZWQtYXBwLWNvbnRhaW5lclwiPlxuICAgICAgICA8IS0tIDxtYXQtaWNvbiAqbmdJZj1cImN1cnJlbnRBcHA/Lm5hbWVcIiBjbGFzcz1cInNpZGVOYXZJY29uIHt7Y3VycmVudEFwcD8ubmFtZS5zcGxpdCgnICcpLmpvaW4oJycpfX1cIj48L21hdC1pY29uPiAtLT5cbiAgICAgICAgPGltZyAqbmdJZj1cImN1cnJlbnRBcHA/Lm5hbWVcIiBjbGFzcz1cImljb24gc2lkZS1tZW51LWljb24gY2hpbGRyZW4taWNvblwiIFtzcmNdPVwiZ2V0SWNvblVybChjdXJyZW50QXBwLmljb24gfHwgJ2RlZmF1bHQtaWNvbi5zdmcnKVwiLz5cbiAgICAgICAgPGxhYmVsIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC00cHg7XCIgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKGN1cnJlbnRBcHApXCI+PC9sYWJlbD5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjdXJyZW50QXBwPy5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiPnt7Y3VycmVudEFwcC5iYWRnZX19PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJhcHAtbWVudS1idXR0b24gc2VsZWN0ZWQtYXBwLWJ1dHRvblwiIFttYXQtbWVudS10cmlnZ2VyLWZvcl09XCJhcHBNZW51XCIgKm5nSWY9XCJ0b0Rpc3BsYXlBcHBsaWNhdGlvbnMgJiYgdG9EaXNwbGF5QXBwbGljYXRpb25zLmxlbmd0aCA+IDFcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYXBwLW5hbWUgc2VsZWN0ZWQtYXBwLWNvbnRhaW5lclwiPlxuICAgICAgICA8IS0tIDxtYXQtaWNvbiAqbmdJZj1cImN1cnJlbnRBcHA/Lm5hbWVcIiBjbGFzcz1cInNpZGVOYXZJY29uIHt7Y3VycmVudEFwcD8ubmFtZS5zcGxpdCgnICcpLmpvaW4oJycpfX1cIj48L21hdC1pY29uPiAtLT5cbiAgICAgICAgPGltZyAqbmdJZj1cImN1cnJlbnRBcHA/Lm5hbWVcIiBjbGFzcz1cImljb24gc2lkZS1tZW51LWljb24gY2hpbGRyZW4taWNvblwiIFtzcmNdPVwiZ2V0SWNvblVybChjdXJyZW50QXBwLmljb24gfHwgJ2RlZmF1bHQtaWNvbi5zdmcnKVwiLz5cbiAgICAgICAgPGxhYmVsIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC00cHg7XCIgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKGN1cnJlbnRBcHApXCI+PC9sYWJlbD5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjdXJyZW50QXBwPy5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiPnt7Y3VycmVudEFwcC5iYWRnZX19PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1pY29uXCI+PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxtYXQtbWVudSAjYXBwTWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cImFwcC1tZW51XCIgW2JhY2tkcm9wQ2xhc3NdPVwiJ2FsbC1tb2R1bGUtbWVudXMnXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBoZWFkbWVudSBvZiB0b0Rpc3BsYXlBcHBsaWNhdGlvbnNcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1lbnUtb3B0aW9uXCIgbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZ29Ub0FwcGxpY2F0aW9uKGhlYWRtZW51KVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaGVhZG1lbnUucGFuZWxPcGVuU3RhdGV9XCIgY2xhc3M9XCJ7e2hlYWRtZW51LmlkfX1faWNvblwiICpuZ0lmPVwiaGVhZG1lbnUubmFtZSAhPSAnQWNjb3VudCBNYW5hZ2VtZW50J1wiIHRyYW5zbGF0ZT1cIm5vXCI+XG4gICAgICAgICAgPCEtLSA8bWF0LWljb24gY2xhc3M9XCJzaWRlTmF2SWNvbiBjaGlsZHJlbi1pY29uXCIgW25nQ2xhc3NdPVwiaGVhZG1lbnUubmFtZS5zcGxpdCgnICcpLmpvaW4oJycpXCI+PC9tYXQtaWNvbj4gLS0+XG4gICAgICAgICAgPGltZyBjbGFzcz1cImljb24gY2hpbGRyZW4taWNvbiBzaWRlLW1lbnUtaWNvblwiIFtzcmNdPVwiZ2V0SWNvblVybChoZWFkbWVudS5pY29uIHx8ICdkZWZhdWx0LWljb24uc3ZnJylcIi8+XG4gICAgICAgICAgPGxhYmVsIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRBcHBsaWNhdGlvbihoZWFkbWVudSlcIj48L2xhYmVsPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaGVhZG1lbnUuYmFkZ2VcIiBjbGFzcz1cImJhZGdlLXRleHQgc292LWJldGEtcG9zaXRpb25cIiBbaW5uZXJIVE1MXT1cImhlYWRtZW51LmJhZGdlXCI+PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbWF0LW1lbnU+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicG9ydGFsLXNpZG5hdi1tZW51XCIgZnhGbGV4PVwibm9ncm93IG5vc2hyaW5rXCIgYXBwU2Nyb2xsYWJsZSBbbmdDbGFzc109XCJ7J3doaXRlTGFiZWxTaWRlbmF2JyA6IGluQ29udGV4dEluc2lnaHRzV0xBcHB9XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUmV2aXNlZE5hdmlnYXRpb25FbmFibGVkKCk7IGVsc2UgbGVnYWN5TmF2aWdhdGlvblRlbXBsYXRlXCI+XG4gICAgICA8IS0tXG4gICAgICAgIFJldmlzZWQgbmF2IG1hcHMgdG8gc2lkZWJhciBsYXlvdXQgSlNPTiAoYHNlY3Rpb25zW11gKTpcbiAgICAgICAgLSB0eXBlIGBhcHAtdGFic2Ag4oaSIE9wdGltaXplOiB0YWIgc3RyaXAgKyBgcmV2aXNlZEdyb3VwTWVudUl0ZW1TaGVsbGAgcGVyIG1lbnUgcm93IChzYW1lIGV4cGFuZC9sZWFmL2FjdGl2ZSBwYXR0ZXJuIGFzIElOVEVMTElHRU5DRSkuXG4gICAgICAgIC0gdHlwZSBgZ3JvdXBlZC1tZW51c2Ag4oaSIGBncm91cHNbXWA6IGVhY2ggZ3JvdXAgdXNlcyBgaXRlbXNbXWAgb2YgYHsgbWVudUlkLCB0aXRsZT8gfWAgKGlkcyBmcm9tIGBuYXZtZW51MWApLlxuICAgICAgICAgIExlYWYgdnMgZXhwYW5kYWJsZSBjb21lcyBmcm9tIG5hdiBkYXRhLiBTaW5nbGUtIGFuZCBtdWx0aS1pdGVtIGdyb3VwcyBzaGFyZSBgcmV2aXNlZEdyb3VwTWVudUl0ZW1TaGVsbGAgKHNhbWUgbGF5b3V0IGFzIFByb2R1Y3QgMzYwIC8gRm91bmRhdGlvbikuIFVudGl0bGVkIGZsYXQgZ3JvdXBzIHN0aWxsIHVzZSBgcmV2aXNlZEdyb3VwZWRNZW51Um93c2AgKyBpbm5lciBtYXQtbGlzdCBmb3IgZGVlcCBuZXN0aW5nLlxuICAgICAgICBBZGQgbW9yZSBzZWN0aW9ucyBpbiBKU09OIOKAlCB0aGV5IHJlbmRlciBoZXJlIGluIG9yZGVyLiBCb3R0b20gc3RpY2t5IGJsb2NrIGlzIHVuY2hhbmdlZCBiZWxvdy5cbiAgICAgIC0tPlxuICAgICAgPCEtLSBTVkcgY2hldnJvbnMgKG5vdCBtYXQtaWNvbiBsaWdhdHVyZXMpIHNvIGV4cGFuZCBhcnJvd3Mgd29yayBldmVuIHdoZW4gTWF0ZXJpYWwgSWNvbnMgZm9udCBmYWlscyB0byBsb2FkIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlICNyZXZpc2VkQ2hldnJvblN2ZyBsZXQtZXhwYW5kZWQ9XCJleHBhbmRlZFwiPlxuICAgICAgICA8c3ZnICpuZ0lmPVwiIWV4cGFuZGVkXCIgY2xhc3M9XCJyZXZpc2VkLWNoZXZyb24tc3ZnXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XG4gICAgICAgICAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJNMTAgNkw4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6XCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICAgPHN2ZyAqbmdJZj1cImV4cGFuZGVkXCIgY2xhc3M9XCJyZXZpc2VkLWNoZXZyb24tc3ZnXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XG4gICAgICAgICAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJNMTYuNTkgOC41OUwxMiAxMy4xNyA3LjQxIDguNTkgNiAxMGw2IDYgNi02elwiLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI3JldmlzZWRNYXRQYW5lbENoZXZyb25zIGxldC1leHBhbmRlZD1cImV4cGFuZGVkXCIgbGV0LWljb25DbGFzcz1cImljb25DbGFzc1wiPlxuICAgICAgICA8bWF0LXBhbmVsLWRlc2NyaXB0aW9uIGNsYXNzPVwiY2hpbGRyZW4tZGVzY3JpcHRpb24gcmV2aXNlZC1uYXYtZXhwYW5zaW9uLWNoZXZyb25cIiAqbmdJZj1cIm5hdkV4cGFuZGVkXCI+XG4gICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwiaWNvbkNsYXNzIHx8ICdzdWItY2hldnJvbi1pY29uIHJldmlzZWQtbmF2LWNoZXZyb24nXCIgY2xhc3M9XCJyZXZpc2VkLWNoZXZyb24taWNvbi13cmFwXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmV2aXNlZENoZXZyb25Tdmc7IGNvbnRleHQ6IHsgZXhwYW5kZWQ6IGV4cGFuZGVkIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPCEtLSBPbmUgcmVzb2x2ZWQgbWVudTogZ3JvdXBlZC1tZW51cyAoRm91bmRhdGlvbiAvIElOVEVMTElHRU5DRSkgb3IgYXBwLXRhYnMgT1BUSU1JWkUgd2hlbiBgb3B0aW1pemVQYXJlbnRBcHBgIGlzIHNldC4gTm8gaW5uZXIgbWF0LWxpc3QuIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlICNyZXZpc2VkR3JvdXBNZW51SXRlbVNoZWxsIGxldC1tZW51PVwibWVudVwiIGxldC1vcHRpbWl6ZVBhcmVudEFwcD1cIm9wdGltaXplUGFyZW50QXBwXCI+XG4gICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsICpuZ0lmPVwibWVudS5jaGlsZHJlbj8ubGVuZ3RoXCIgY2xhc3M9XCJkaXYtYmFja2dyb3VuZC1jb2xvci13aGl0ZSByZXZpc2VkLWdyb3VwX19zaW5nbGUtZXhwYW5kYWJsZVwiIFtleHBhbmRlZF09XCJpc0NoaWxkTWVudVBhbmVsRXhwYW5kZWQobWVudSlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J2FjdGl2ZVBhbmVsJzogaXNDaGlsZE1lbnVQYW5lbEhpZ2hsaWdodGVkKG1lbnUpICwgJ3doaXRlTGFiZWxBY3RpdmUnIDogaW5Db250ZXh0SW5zaWdodHNXTEFwcH1cIiBoaWRlVG9nZ2xlPVwidHJ1ZVwiXG4gICAgICAgICAgKG9wZW5lZCk9XCJvbkNoaWxkTWVudVBhbmVsT3BlbmVkKG1lbnUpXCIgKGNsb3NlZCk9XCJvbkNoaWxkTWVudVBhbmVsQ2xvc2VkKG1lbnUpXCI+XG4gICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIGNsYXNzPVwicmV2aXNlZC1ncm91cF9faGVhZGVyIHJldmlzZWQtZ3JvdXBfX2hlYWRlci0tYXMtcGFuZWxcIiAoY2xpY2spPVwib25DaGlsZE1lbnVQYW5lbEhlYWRlckNsaWNrKG1lbnUpXCI+XG4gICAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJldmlzZWQtZ3JvdXBfX3RpdGxlIG1lbnUtaGVhZGluZyBhcHBsaWNhdGlvblN1Ym1lbnVzXCIgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKG1lbnUpXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1lbnUuYmFkZ2VcIiBjbGFzcz1cImJhZGdlLXRleHQgc292LWJldGEtcG9zaXRpb24gbGV2ZWwtdHdvLWJhZGdlXCIgW2lubmVySFRNTF09XCJtZW51LmJhZGdlXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmV2aXNlZE1hdFBhbmVsQ2hldnJvbnM7IGNvbnRleHQ6IHsgZXhwYW5kZWQ6IGlzQ2hpbGRNZW51UGFuZWxFeHBhbmRlZChtZW51KSwgaWNvbkNsYXNzOiAncmV2aXNlZC1ncm91cF9fY2hldnJvbiByZXZpc2VkLW5hdi1leHBhbnNpb24tY2hldnJvbiByZXZpc2VkLW5hdi1jaGV2cm9uJyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aXNlZC1ncm91cF9fY29udGVudFwiPlxuICAgICAgICAgICAgPG1hdC1uYXYtbGlzdCBjbGFzcz1cInN1Yi1jaGlsZC1tZW51XCI+XG4gICAgICAgICAgICAgIDxsbmMtbmF2LW1lbnVzICpuZ0Zvcj1cImxldCBjaGlsZE1lbnUgb2YgbWVudS5jaGlsZHJlblwiIGFwcE9mZnNldFRvcFxuICAgICAgICAgICAgICAgIFtpc0FjdGl2ZUl0ZW1dPVwiaXNSZXZpc2VkTWVudUFjdGl2ZShjaGlsZE1lbnUpXCIgW2l0ZW1dPVwiY2hpbGRNZW51XCJcbiAgICAgICAgICAgICAgICBbYXBwbGljYXRpb25JZF09XCJhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZFwiXG4gICAgICAgICAgICAgICAgW3BhcmVudE1lbnVJZF09XCJvcHRpbWl6ZVBhcmVudEFwcCA/IG9wdGltaXplUGFyZW50QXBwLmlkIDogZ2V0UmV2aXNlZFBhcmVudE1lbnVJZChjaGlsZE1lbnUsIG1lbnUub3duZXJBcHBJZClcIlxuICAgICAgICAgICAgICAgIFtwYXJlbnRQYW5lbElkXT1cIm1lbnUuaWRcIiAobWVudUNsaWNrZWQpPVwibWVudUNsaWNrZWQoJGV2ZW50KVwiICNuYXZNZW51c0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgPC9sbmMtbmF2LW1lbnVzPlxuICAgICAgICAgICAgPC9tYXQtbmF2LWxpc3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgICAgPG1hdC1uYXYtbGlzdCAqbmdJZj1cIiFtZW51LmNoaWxkcmVuPy5sZW5ndGhcIiBjbGFzcz1cInJldmlzZWQtZ3JvdXBfX3NpbmdsZS1saW5rXCI+XG4gICAgICAgICAgPGxuYy1uYXYtbWVudXMgYXBwT2Zmc2V0VG9wXG4gICAgICAgICAgICBbaXNBY3RpdmVJdGVtXT1cImlzUmV2aXNlZE1lbnVBY3RpdmUobWVudSlcIiBbaXRlbV09XCJtZW51XCJcbiAgICAgICAgICAgIFthcHBsaWNhdGlvbklkXT1cImFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkXCJcbiAgICAgICAgICAgIFtwYXJlbnRNZW51SWRdPVwib3B0aW1pemVQYXJlbnRBcHAgPyBvcHRpbWl6ZVBhcmVudEFwcC5pZCA6IGdldFJldmlzZWRQYXJlbnRNZW51SWQobWVudSlcIlxuICAgICAgICAgICAgW3BhcmVudFBhbmVsSWRdPVwiZ2V0UmV2aXNlZFNoZWxsTGVhZlBhcmVudFBhbmVsSWQobWVudSwgb3B0aW1pemVQYXJlbnRBcHApXCIgKG1lbnVDbGlja2VkKT1cIm1lbnVDbGlja2VkKCRldmVudClcIiAjbmF2TWVudXNDb21wb25lbnQ+XG4gICAgICAgICAgPC9sbmMtbmF2LW1lbnVzPlxuICAgICAgICA8L21hdC1uYXYtbGlzdD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwhLS0gR3JvdXBlZC1tZW51cyByb3dzOiBsZWFmIHwgbWF0LWV4cGFuc2lvbiAoZGVwdGggMCkgfCBuZXN0ZWQgbWF0LWV4cGFuc2lvbiAoZGVwdGggMSkuIE1heCAyIGV4cGFuc2lvbiBsZXZlbHMgaGVyZTsgZGVlcGVyIGxlYXZlcyB1c2UgbG5jLW5hdi1tZW51cy4gLS0+XG4gICAgICA8bmctdGVtcGxhdGUgI3JldmlzZWRHcm91cGVkTWVudVJvd3MgbGV0LWdyb3VwPVwiZ3JvdXBcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbWVudSBvZiBncm91cC5pdGVtc1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZXZpc2VkR3JvdXBlZE1lbnVFbnRyeTsgY29udGV4dDogeyBtZW51OiBtZW51LCBuZXN0aW5nRGVwdGg6IDAgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjcmV2aXNlZEdyb3VwZWRNZW51RW50cnkgbGV0LW1lbnU9XCJtZW51XCIgbGV0LW5lc3RpbmdEZXB0aD1cIm5lc3RpbmdEZXB0aFwiPlxuICAgICAgICA8bWF0LW5hdi1saXN0ICpuZ0lmPVwiIW1lbnUuY2hpbGRyZW4/Lmxlbmd0aFwiIGNsYXNzPVwicmV2aXNlZC1ncm91cC1tZW51LWxlYWZcIj5cbiAgICAgICAgICA8bG5jLW5hdi1tZW51cyBhcHBPZmZzZXRUb3AgW2lzQWN0aXZlSXRlbV09XCJpc1JldmlzZWRNZW51QWN0aXZlKG1lbnUpXCIgW2l0ZW1dPVwibWVudVwiXG4gICAgICAgICAgICBbYXBwbGljYXRpb25JZF09XCJhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZFwiIFtwYXJlbnRNZW51SWRdPVwiZ2V0UmV2aXNlZFBhcmVudE1lbnVJZChtZW51KVwiXG4gICAgICAgICAgICBbcGFyZW50UGFuZWxJZF09XCJnZXRSZXZpc2VkUGFyZW50UGFuZWxJZChtZW51KVwiIChtZW51Q2xpY2tlZCk9XCJtZW51Q2xpY2tlZCgkZXZlbnQpXCIgI25hdk1lbnVzQ29tcG9uZW50PlxuICAgICAgICAgIDwvbG5jLW5hdi1tZW51cz5cbiAgICAgICAgPC9tYXQtbmF2LWxpc3Q+XG5cbiAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgKm5nSWY9XCJtZW51LmNoaWxkcmVuPy5sZW5ndGhcIiBjbGFzcz1cImRpdi1iYWNrZ3JvdW5kLWNvbG9yLXdoaXRlXCJcbiAgICAgICAgICBbY2xhc3MucmV2aXNlZC1ncm91cC1tZW51LXBhbmVsLS1uZXN0ZWRdPVwibmVzdGluZ0RlcHRoID4gMFwiXG4gICAgICAgICAgW2V4cGFuZGVkXT1cImlzQ2hpbGRNZW51UGFuZWxFeHBhbmRlZChtZW51KVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlUGFuZWwnOiBpc0NoaWxkTWVudVBhbmVsSGlnaGxpZ2h0ZWQobWVudSkgLCAnd2hpdGVMYWJlbEFjdGl2ZScgOiBpbkNvbnRleHRJbnNpZ2h0c1dMQXBwfVwiIGhpZGVUb2dnbGU9XCJ0cnVlXCJcbiAgICAgICAgICAob3BlbmVkKT1cIm9uQ2hpbGRNZW51UGFuZWxPcGVuZWQobWVudSlcIiAoY2xvc2VkKT1cIm9uQ2hpbGRNZW51UGFuZWxDbG9zZWQobWVudSlcIj5cbiAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgKGNsaWNrKT1cIm9uQ2hpbGRNZW51UGFuZWxIZWFkZXJDbGljayhtZW51KVwiIFtuZ0NsYXNzXT1cInsnaGVhZGVyLWJvcmRlcic6IGlzQ2hpbGRNZW51UGFuZWxFeHBhbmRlZChtZW51KSwgJ2hlYWRlci1ib3JkZXItbm9uZSc6ICFpc0NoaWxkTWVudVBhbmVsRXhwYW5kZWQobWVudSkgfVwiPlxuICAgICAgICAgICAgPG1hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgICAgICAgPGgzIGNsYXNzPVwibWVudS1oZWFkaW5nIGFwcGxpY2F0aW9uU3VibWVudXNcIj48c3BhbiBjbGFzcz1cIm1lbnUtbmFtZS1leHBhbmRhYmxlXCIgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKG1lbnUpXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibWVudS5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvbiBsZXZlbC10d28tYmFkZ2VcIiBbaW5uZXJIVE1MXT1cIm1lbnUuYmFkZ2VcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZXZpc2VkTWF0UGFuZWxDaGV2cm9uczsgY29udGV4dDogeyBleHBhbmRlZDogaXNDaGlsZE1lbnVQYW5lbEV4cGFuZGVkKG1lbnUpIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpc2VkLWdyb3VwLW1lbnUtY2hpbGRyZW5cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIG1lbnUuY2hpbGRyZW5cIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoaWxkLmNoaWxkcmVuPy5sZW5ndGggJiYgKG5lc3RpbmdEZXB0aCA/PyAwKSA8IDJcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmV2aXNlZEdyb3VwZWRNZW51RW50cnk7IGNvbnRleHQ6IHsgbWVudTogY2hpbGQsIG5lc3RpbmdEZXB0aDogKG5lc3RpbmdEZXB0aCA/PyAwKSArIDEgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG1hdC1uYXYtbGlzdCAqbmdJZj1cIiFjaGlsZC5jaGlsZHJlbj8ubGVuZ3RoIHx8IChuZXN0aW5nRGVwdGggPz8gMCkgPj0gMlwiIGNsYXNzPVwic3ViLWNoaWxkLW1lbnVcIj5cbiAgICAgICAgICAgICAgICA8bG5jLW5hdi1tZW51cyBhcHBPZmZzZXRUb3AgW2lzQWN0aXZlSXRlbV09XCJpc1JldmlzZWRNZW51QWN0aXZlKGNoaWxkKVwiIFtpdGVtXT1cImNoaWxkXCJcbiAgICAgICAgICAgICAgICAgIFthcHBsaWNhdGlvbklkXT1cImFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkXCIgW3BhcmVudE1lbnVJZF09XCJnZXRSZXZpc2VkUGFyZW50TWVudUlkKGNoaWxkLCBtZW51Lm93bmVyQXBwSWQpXCJcbiAgICAgICAgICAgICAgICAgIFtwYXJlbnRQYW5lbElkXT1cIm1lbnUuaWRcIiAobWVudUNsaWNrZWQpPVwibWVudUNsaWNrZWQoJGV2ZW50KVwiICNuYXZNZW51c0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICA8L2xuYy1uYXYtbWVudXM+XG4gICAgICAgICAgICAgIDwvbWF0LW5hdi1saXN0PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwhLS0gU2FtZSBzZWN0aW9uIGNsYXNzIGFzIGxlZ2FjeSBzbyAucG9ydGFsLXNpZG5hdi1tZW51IC5tYXQtZXhwYW5zaW9uLXBhbmVsIC5tYXQtbWRjLWxpc3QgYVttYXQtbGlzdC1pdGVtXS5hY3RpdmUgYXBwbGllcyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZXZpc2VkLW5hdlwiIHRyYW5zbGF0ZT1cIm5vXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpc2VkLXNlY3Rpb24gbWF0LWV4cGFuc2lvbi1wYW5lbFwiICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIHJldmlzZWRTZWN0aW9uczsgdHJhY2tCeTogdHJhY2tCeVJldmlzZWRTZWN0aW9uXCIgW2F0dHIuaWRdPVwic2VjdGlvbi5pZCArICdtZW51J1wiIFthdHRyLmRhdGEtc2VjdGlvbi10eXBlXT1cInNlY3Rpb24udHlwZVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBpc1JldmlzZWRTZWN0aW9uQWN0aXZlKHNlY3Rpb24pfVwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJyZXZpc2VkLXNlY3Rpb25fX2hlYWRlciBtYWluLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uUmV2aXNlZFNlY3Rpb25IZWFkZXJDbGljayhzZWN0aW9uLmlkKVwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJuYXZFeHBhbmRlZCA/IG51bGwgOiBzZWN0aW9uLnRpdGxlXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIiBtYXRUb29sdGlwQ2xhc3M9XCJsZWZ0LW5hdi10b29sdGlwXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJldmlzZWQtc2VjdGlvbl9faGVhZGVyLW1haW5cIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXZpc2VkLXNlY3Rpb25fX2hlYWRlci1pY29uLWJveFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmV2aXNlZC1zZWN0aW9uX19oZWFkZXItaWNvbiBpY29uIHNpZGUtbWVudS1pY29uIHNpZGUtbWVudS1pY29uLWNvbG9yXCIgW2lubmVySFRNTF09XCJnZXRSZXZpc2VkU2VjdGlvbkljb24oc2VjdGlvbilcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXZpc2VkLXNlY3Rpb25fX2NvbGxhcHNlZC1hY3RpdmUtZG90XCIgKm5nSWY9XCIhbmF2RXhwYW5kZWQgJiYgaXNSZXZpc2VkU2VjdGlvbkFjdGl2ZShzZWN0aW9uKVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJldmlzZWQtc2VjdGlvbl9fdGl0bGUgc2lkZW1lbnUtaGVhZGluZyBhcHBsaWNhdGlvbk1lbnVcIiAqbmdJZj1cIm5hdkV4cGFuZGVkXCI+e3sgc2VjdGlvbi50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZG1lbnUtZGVzY3JpcHRpb25cIiAqbmdJZj1cIm5hdkV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFpbi1jaGV2cm9uLWljb24gcmV2aXNlZC1uYXYtY2hldnJvbiByZXZpc2VkLWNoZXZyb24taWNvbi13cmFwXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJldmlzZWRDaGV2cm9uU3ZnOyBjb250ZXh0OiB7IGV4cGFuZGVkOiBpc1JldmlzZWRTZWN0aW9uRXhwYW5kZWQoc2VjdGlvbi5pZCkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm5hdkV4cGFuZGVkICYmIGlzUmV2aXNlZFNlY3Rpb25FeHBhbmRlZChzZWN0aW9uLmlkKVwiXG4gICAgICAgICAgICBjbGFzcz1cInJldmlzZWQtc2VjdGlvbl9fY29udGVudCByZXZpc2VkLXNlY3Rpb25fX2NvbnRlbnQtLXZpc2libGUgcGFkZGluZy0wcHhcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAncmV2aXNlZC1zZWN0aW9uX19jb250ZW50LS1ncm91cGVkJzogc2VjdGlvbi50eXBlID09PSAnZ3JvdXBlZC1tZW51cydcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwic2VjdGlvbi5pZFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwic2VjdGlvbi50eXBlXCI+XG5cbiAgICAgICAgICAgICAgPCEtLSBKU09OOiB7IHR5cGU6IFwiYXBwLXRhYnNcIiwgYXBwSWRzLCBkZWZhdWx0QXBwSWQgfSAtLT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2FwcC10YWJzJ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpc2VkLW9wdGltaXplLXRhYnNcIiAqbmdJZj1cImdldFJldmlzZWRTZWN0aW9uQXBwcyhzZWN0aW9uKS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInJldmlzZWQtb3B0aW1pemUtdGFiXCIgKm5nRm9yPVwibGV0IGFwcCBvZiBnZXRSZXZpc2VkU2VjdGlvbkFwcHMoc2VjdGlvbik7IHRyYWNrQnk6IHRyYWNrQnlSZXZpc2VkTWVudVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNTZWxlY3RlZFJldmlzZWRTZWN0aW9uQXBwKHNlY3Rpb24sIGFwcCl9XCJcbiAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiZ2V0UmV2aXNlZE9wdGltaXplQXBwVGFiVG9vbHRpcChhcHApXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcENsYXNzXT1cIlsnbGVmdC1uYXYtdG9vbHRpcCcsICdyZXZpc2VkLW9wdGltaXplLWFwcC10YWItdG9vbHRpcCddXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFJldmlzZWRTZWN0aW9uQXBwKHNlY3Rpb24sIGFwcClcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXZpc2VkLW9wdGltaXplLXRhYl9fYmFkZ2VcIiAqbmdJZj1cImdldFJldmlzZWRTZWN0aW9uVGFiQmFkZ2VDb3VudChhcHApICE9PSBudWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgZ2V0UmV2aXNlZFNlY3Rpb25UYWJCYWRnZUNvdW50KGFwcCkgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJldmlzZWQtb3B0aW1pemUtdGFiX19pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImljb24gc2lkZS1tZW51LWljb24gY2hpbGRyZW4taWNvblwiIFtzcmNdPVwiZ2V0SWNvblVybChhcHAuaWNvbiB8fCAnZGVmYXVsdC1pY29uLnN2ZycpXCIgW2FsdF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKGFwcClcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aXNlZC1vcHRpbWl6ZS1tZW51c1wiICpuZ0lmPVwiZ2V0UmV2aXNlZFNlY3Rpb25TZWxlY3RlZEFwcChzZWN0aW9uKSBhcyBzZWxlY3RlZEFwcFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlzZWQtb3B0aW1pemUtYXBwLXRpdGxlIG1lbnUtaGVhZGluZyBhcHBsaWNhdGlvblN1Ym1lbnVzXCIgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKHNlbGVjdGVkQXBwKVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlzZWQtZ3JvdXBfX211bHRpLXN0YWNrIHJldmlzZWQtb3B0aW1pemUtbWVudS1zdGFja1wiIFthdHRyLmlkXT1cInNlY3Rpb24uaWQgKyAnXycgKyBzZWxlY3RlZEFwcC5pZFwiIFtuZ0NsYXNzXT1cInsnZ3JvdXAtbmF2LW1lbnUnOiBoYXNFeHBhbmRhYmxlTWVudXNJblNlY3Rpb24oc2VjdGlvbikgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtZW51IG9mIGdldFJldmlzZWRTZWN0aW9uTWVudXMoc2VjdGlvbik7IHRyYWNrQnk6IHRyYWNrQnlSZXZpc2VkTWVudVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZXZpc2VkR3JvdXBNZW51SXRlbVNoZWxsOyBjb250ZXh0OiB7IG1lbnU6IG1lbnUsIG9wdGltaXplUGFyZW50QXBwOiBzZWxlY3RlZEFwcCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDwhLS0gSlNPTjogeyB0eXBlOiBcImdyb3VwZWQtbWVudXNcIiwgZ3JvdXBzOiBbIC4uLiBdIH0gLS0+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidncm91cGVkLW1lbnVzJ1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGdldFJldmlzZWRHcm91cGVkU2VjdGlvbkdyb3VwcyhzZWN0aW9uKTsgdHJhY2tCeTogdHJhY2tCeVJldmlzZWRHcm91cFwiPlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNSZXZpc2VkVW50aXRsZWRHcm91cChncm91cClcIiBjbGFzcz1cInJldmlzZWQtZ3JvdXAgcmV2aXNlZC1ncm91cC0tZmxhdFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWxpc3QgY2xhc3M9XCJwYWRkaW5nLTBweCByZXZpc2VkLWdyb3VwX19saXN0XCIgW2F0dHIuaWRdPVwic2VjdGlvbi5pZCArICdfJyArIGdyb3VwLmlkXCIgW25nQ2xhc3NdPVwieydncm91cC1uYXYtbWVudSc6IGhhc0V4cGFuZGFibGVNZW51c0luR3JvdXAoZ3JvdXApIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmV2aXNlZEdyb3VwZWRNZW51Um93czsgY29udGV4dDogeyBncm91cDogZ3JvdXAgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1saXN0PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc1JldmlzZWRTaW5nbGVJdGVtR3JvdXAoZ3JvdXApXCIgY2xhc3M9XCJyZXZpc2VkLWdyb3VwIHJldmlzZWQtZ3JvdXAtLXNpbmdsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtZW51IG9mIGdyb3VwLml0ZW1zOyB0cmFja0J5OiB0cmFja0J5UmV2aXNlZE1lbnVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmV2aXNlZEdyb3VwTWVudUl0ZW1TaGVsbDsgY29udGV4dDogeyBtZW51OiBtZW51IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzUmV2aXNlZE11bHRpSXRlbUdyb3VwKGdyb3VwKVwiIGNsYXNzPVwicmV2aXNlZC1ncm91cCByZXZpc2VkLWdyb3VwLS1tdWx0aVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBjbGFzcz1cImRpdi1iYWNrZ3JvdW5kLWNvbG9yLXdoaXRlIHJldmlzZWQtZ3JvdXBfX211bHRpLXBhbmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZXhwYW5kZWRdPVwiaXNSZXZpc2VkR3JvdXBFeHBhbmRlZChzZWN0aW9uLmlkLCBncm91cC5pZClcIlxuICAgICAgICAgICAgICAgICAgICAgIGhpZGVUb2dnbGU9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAob3BlbmVkKT1cIm9uUmV2aXNlZEdyb3VwUGFuZWxPcGVuZWQoc2VjdGlvbi5pZCwgZ3JvdXAuaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VkKT1cIm9uUmV2aXNlZEdyb3VwUGFuZWxDbG9zZWQoc2VjdGlvbi5pZCwgZ3JvdXAuaWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIGNsYXNzPVwicmV2aXNlZC1ncm91cF9faGVhZGVyIHJldmlzZWQtZ3JvdXBfX2hlYWRlci0tYXMtcGFuZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwibmF2RXhwYW5kZWQgPyBudWxsIDogZ3JvdXAudGl0bGVcIiBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiIG1hdFRvb2x0aXBDbGFzcz1cImxlZnQtbmF2LXRvb2x0aXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmV2aXNlZC1ncm91cF9fdGl0bGUgbWVudS1oZWFkaW5nIGFwcGxpY2F0aW9uU3VibWVudXNcIiAqbmdJZj1cIm5hdkV4cGFuZGVkXCI+e3sgZ3JvdXAudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZXZpc2VkTWF0UGFuZWxDaGV2cm9uczsgY29udGV4dDogeyBleHBhbmRlZDogaXNSZXZpc2VkR3JvdXBFeHBhbmRlZChzZWN0aW9uLmlkLCBncm91cC5pZCksIGljb25DbGFzczogJ3JldmlzZWQtZ3JvdXBfX2NoZXZyb24gcmV2aXNlZC1uYXYtZXhwYW5zaW9uLWNoZXZyb24gcmV2aXNlZC1uYXYtY2hldnJvbicgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBQZXItaXRlbSBET00gbWF0Y2hlcyByZXZpc2VkLWdyb3VwLS1zaW5nbGUgKG5vIGlubmVyIG1hdC1saXN0KSBzbyBnbG9iYWwgc2lkZWJhciB0aGVtZSBkb2VzIG5vdCBhcHBseSBtdXRlZCAubWF0LWxpc3QgLmFwcGxpY2F0aW9uU3VibWVudXMgdG8gQ29tbWVyY2Utc3R5bGUgcm93cy4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlzZWQtZ3JvdXBfX3BhbmVsLWJvZHlcIiAqbmdJZj1cIm5hdkV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aXNlZC1ncm91cF9fbXVsdGktc3RhY2tcIiBbYXR0ci5pZF09XCJzZWN0aW9uLmlkICsgJ18nICsgZ3JvdXAuaWRcIiBbbmdDbGFzc109XCJ7J2dyb3VwLW5hdi1tZW51JzogaGFzRXhwYW5kYWJsZU1lbnVzSW5Hcm91cChncm91cCkgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtZW51IG9mIGdyb3VwLml0ZW1zOyB0cmFja0J5OiB0cmFja0J5UmV2aXNlZE1lbnVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmV2aXNlZEdyb3VwTWVudUl0ZW1TaGVsbDsgY29udGV4dDogeyBtZW51OiBtZW51IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2xlZ2FjeU5hdmlnYXRpb25UZW1wbGF0ZT5cbiAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsIFtleHBhbmRlZF09XCJoZWFkbWVudS5wYW5lbE9wZW5TdGF0ZSA9PSB0cnVlXCIgaGlkZVRvZ2dsZT1cInRydWVcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgaGVhZG1lbnUgb2YgdG9EaXNwbGF5QXBwbGljYXRpb25zXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBjdXJyZW50QXBwLmlkID09PSBoZWFkbWVudS5pZCB9XCJcbiAgICAgICAgKG9wZW5lZCk9XCJoZWFkbWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWVcIiAoY2xvc2VkKT1cImhlYWRtZW51LnBhbmVsT3BlblN0YXRlID0gZmFsc2VcIj5cbiAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIG1hdFRvb2x0aXA9XCJ7e2dldFRvb2x0aXBJbmZvKGhlYWRtZW51KX19XCIgbWF0VG9vbHRpcENsYXNzPVwibGVmdC1uYXYtdG9vbHRpcFwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgICAqbmdJZj1cImhlYWRtZW51LnR5cGUgPT0gJ2V4cGFuZGFibGUnIGVsc2Ugc2luZ2xlTWVudXNcIiBjbGFzcz1cIm1haW4tZXhwYW5zaW9uLXBhbmVsLWhlYWRlclwiXG4gICAgICAgICAgKGNsaWNrKT1cImdvVG9BcHBsaWNhdGlvbihoZWFkbWVudSlcIj5cbiAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgPGltZyBjbGFzcz1cImljb24gc2lkZS1tZW51LWljb24gc2lkZS1tZW51LWljb24tY29sb3JcIiBbc3JjXT1cImdldEljb25VcmwoaGVhZG1lbnUuaWNvbiB8fCAnZGVmYXVsdC1pY29uLnN2ZycpXCIvPlxuICAgICAgICAgICAgPGgzIGNsYXNzPVwic2lkZW1lbnUtaGVhZGluZyBhcHBsaWNhdGlvbk1lbnVcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRBcHBsaWNhdGlvbihoZWFkbWVudSlcIj48L2xhYmVsPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImhlYWRtZW51LmJhZGdlXCIgY2xhc3M9XCJiYWRnZS10ZXh0IHNvdi1iZXRhLXBvc2l0aW9uXCIgW2lubmVySFRNTF09XCJoZWFkbWVudS5iYWRnZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgPG1hdC1wYW5lbC1kZXNjcmlwdGlvbiBjbGFzcz1cImhlYWRtZW51LWRlc2NyaXB0aW9uXCIgKm5nSWY9XCJuYXZFeHBhbmRlZFwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWFpbi1jaGV2cm9uLWljb25cIiAqbmdJZj1cIiFoZWFkbWVudS5wYW5lbE9wZW5TdGF0ZVwiPmFycm93X3JpZ2h0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1haW4tY2hldnJvbi1pY29uXCIgKm5nSWY9XCJoZWFkbWVudS5wYW5lbE9wZW5TdGF0ZVwiPmFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+XG4gICAgICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgIDxtYXQtbGlzdCBjbGFzcz1cInBhZGRpbmctMHB4XCIgKm5nRm9yPVwibGV0IG1lbnUgb2YgaGVhZG1lbnUuY2hpbGRyZW5cIiBbYXR0ci5pZF09XCJoZWFkbWVudS5pZFwiIFtuZ0NsYXNzXT1cInsnZ3JvdXAtbmF2LW1lbnUnOiBtZW51LmNoaWxkcmVuIH1cIj5cbiAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCAqbmdJZj1cIm1lbnUuY2hpbGRyZW4gZWxzZSBsaXN0TWVudVwiIGNsYXNzPVwiZGl2LWJhY2tncm91bmQtY29sb3Itd2hpdGVcIiBbZXhwYW5kZWRdPVwiaXNDaGlsZE1lbnVQYW5lbEV4cGFuZGVkKG1lbnUpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlUGFuZWwnOiBpc0NoaWxkTWVudVBhbmVsSGlnaGxpZ2h0ZWQobWVudSkgLCAnd2hpdGVMYWJlbEFjdGl2ZScgOiBpbkNvbnRleHRJbnNpZ2h0c1dMQXBwfVwiIGhpZGVUb2dnbGU9XCJ0cnVlXCJcbiAgICAgICAgICAgIChvcGVuZWQpPVwibWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWVcIiAoY2xvc2VkKT1cIm1lbnUucGFuZWxPcGVuU3RhdGUgPSBmYWxzZVwiPlxuICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaGVhZGVyLWJvcmRlcic6IGlzQ2hpbGRNZW51UGFuZWxFeHBhbmRlZChtZW51KSwgJ2hlYWRlci1ib3JkZXItbm9uZSc6ICFpc0NoaWxkTWVudVBhbmVsRXhwYW5kZWQobWVudSkgfVwiPlxuICAgICAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgICAgIDxpbWcgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEwcHhcIiAqbmdJZj1cIihtZW51Lmljb24gJiYgbWVudS5pY29uICE9ICcnKSBlbHNlIGRpc3BsYXlJbml0aWFsc1wiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb24gc2lkZS1tZW51LWljb24gc2lkZS1tZW51LWljb24tY29sb3JcIiBbc3JjXT1cImdldEljb25VcmwobWVudS5pY29uKVwiIC8+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaXNwbGF5SW5pdGlhbHM+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZW1lbnUtc3ltYm9sXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7bWVudS5zeW1ib2x9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJtZW51LWhlYWRpbmcgYXBwbGljYXRpb25TdWJtZW51c1wiPjxzcGFuIGNsYXNzPVwibWVudS1uYW1lLWV4cGFuZGFibGVcIiBbaW5uZXJIVE1MXT1cInNlbGVjdGVkQXBwbGljYXRpb24obWVudSlcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1lbnUuYmFkZ2VcIiBjbGFzcz1cImJhZGdlLXRleHQgc292LWJldGEtcG9zaXRpb24gbGV2ZWwtdHdvLWJhZGdlXCJcbiAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJtZW51LmJhZGdlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgICA8bWF0LXBhbmVsLWRlc2NyaXB0aW9uIGNsYXNzPVwiY2hpbGRyZW4tZGVzY3JpcHRpb25cIiAqbmdJZj1cIm5hdkV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwic3ViLWNoZXZyb24taWNvblwiICpuZ0lmPVwiIWlzQ2hpbGRNZW51UGFuZWxFeHBhbmRlZChtZW51KVwiPmFycm93X3JpZ2h0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJzdWItY2hldnJvbi1pY29uXCIgKm5nSWY9XCJpc0NoaWxkTWVudVBhbmVsRXhwYW5kZWQobWVudSlcIj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L21hdC1wYW5lbC1kZXNjcmlwdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgICA8IS0tIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPiAtLT5cbiAgICAgICAgICAgIDxtYXQtbmF2LWxpc3QgKm5nRm9yPVwibGV0IGNoaWxkTWVudSBvZiBtZW51LmNoaWxkcmVuO1wiIGNsYXNzPVwic3ViLWNoaWxkLW1lbnVcIj5cbiAgICAgICAgICAgICAgPGxuYy1uYXYtbWVudXMgYXBwT2Zmc2V0VG9wIFtpc0FjdGl2ZUl0ZW1dPVwiaXNDaGVja0FjdGl2ZVJvdXRlKGNoaWxkTWVudSxoZWFkbWVudSxtZW51KVwiIFtpdGVtXT1cImNoaWxkTWVudVwiXG4gICAgICAgICAgICAgICAgW2FwcGxpY2F0aW9uSWRdPVwiYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWRcIiBbcGFyZW50TWVudUlkXT1cImhlYWRtZW51LmlkXCIgW3BhcmVudFBhbmVsSWRdPVwibWVudS5pZFwiXG4gICAgICAgICAgICAgICAgKG1lbnVDbGlja2VkKT1cIm1lbnVDbGlja2VkKCRldmVudClcIiAjbmF2TWVudXNDb21wb25lbnQ+XG4gICAgICAgICAgICAgIDwvbG5jLW5hdi1tZW51cz5cbiAgICAgICAgICAgIDwvbWF0LW5hdi1saXN0PlxuICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2xpc3RNZW51PlxuICAgICAgICAgICAgPG1hdC1uYXYtbGlzdD5cbiAgICAgICAgICAgICAgPGxuYy1uYXYtbWVudXMgYXBwT2Zmc2V0VG9wIFtpc0FjdGl2ZUl0ZW1dPVwiaXNDaGVja0FjdGl2ZVJvdXRlKG1lbnUsaGVhZG1lbnUpXCIgW2l0ZW1dPVwibWVudVwiXG4gICAgICAgICAgICAgICAgW2FwcGxpY2F0aW9uSWRdPVwiYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWRcIiBbcGFyZW50TWVudUlkXT1cImhlYWRtZW51LmlkXCJcbiAgICAgICAgICAgICAgICAobWVudUNsaWNrZWQpPVwibWVudUNsaWNrZWQoJGV2ZW50KVwiICNuYXZNZW51c0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgPC9sbmMtbmF2LW1lbnVzPlxuICAgICAgICAgICAgPC9tYXQtbmF2LWxpc3Q+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9tYXQtbGlzdD5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVNZW51cz5cbiAgICAgICAgICA8bWF0LWxpc3Q+XG4gICAgICAgICAgICA8bG5jLW5hdi1tZW51cyBpZD1cInt7aGVhZG1lbnUuaWR9fVwiIGFwcE9mZnNldFRvcCBbaXNBY3RpdmVJdGVtXT1cImlzQ2hlY2tBY3RpdmVSb3V0ZShoZWFkbWVudSxoZWFkbWVudSlcIlxuICAgICAgICAgICAgICBbaXRlbV09XCJoZWFkbWVudVwiIFthcHBsaWNhdGlvbklkXT1cImFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkXCIgW3BhcmVudE1lbnVJZF09XCJoZWFkbWVudS5pZFwiXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7e2dldFRvb2x0aXBJbmZvKGhlYWRtZW51KX19XCIgbWF0VG9vbHRpcENsYXNzPVwibGVmdC1uYXYtdG9vbHRpcFwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgKG1lbnVDbGlja2VkKT1cIm1lbnVDbGlja2VkKCRldmVudClcIiAjbmF2TWVudXNDb21wb25lbnQ+XG4gICAgICAgICAgICA8L2xuYy1uYXYtbWVudXM+XG4gICAgICAgICAgPC9tYXQtbGlzdD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInBvcnRhbC1nbG9iYWwtc2V0dGluZy1tZW51IHN0aWNreV9ib3R0b21fbWVudVwiICpuZ0lmPVwiIWluQ29udGV4dEluc2lnaHRzV0xBcHBcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiIWluQ29udGV4dEluc2lnaHRzV0xBcHBcIiBjbGFzcz1cImFwcC1tZW51LWNvbnRhaW5lclwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImFwcC1tZW51LUxpbmstYnV0dG9uXCIgKm5nSWY9XCJ0b0Rpc3BsYXlMaW5rTWVudSAmJiB0b0Rpc3BsYXlMaW5rTWVudS5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG1lbnVMaW5rIG9mIHRvRGlzcGxheUxpbmtNZW51XCIgaWQ9XCJ7e21lbnVMaW5rLmlkICsgJ21lbnUnfX1cIiBbc3R5bGUubWFyZ2luLWxlZnRdPVwic2lkZW5hdiAmJiBzaWRlbmF2Lm9wZW5lZCA/ICcwcHgnIDogJzVweCdcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImFwcC1uYW1lXCIgKGNsaWNrKT1cImdvVG9NZW51TGluayhtZW51TGluaylcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaWRlbmF2ICYmIHNpZGVuYXYub3BlbmVkXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyO2dhcDogNXB4O1wiPlxuICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwibWVudUxpbms/Lm5hbWVcIiBtYXRUb29sdGlwPVwie3tnZXRUb29sdGlwSW5mbyhtZW51TGluayl9fVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCIgbWF0VG9vbHRpcENsYXNzPVwibGVmdC1uYXYtdG9vbHRpcFwiIGNsYXNzPVwiaWNvbiBzaWRlLW1lbnUtaWNvbiBjaGlsZHJlbi1pY29uXCIgW3NyY109XCJnZXRJY29uVXJsKG1lbnVMaW5rLmljb24gfHwgJ2RlZmF1bHQtaWNvbi5zdmcnKVwiLz5cbiAgICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwic2hvd1RpdGxlXCIgY2xhc3M9XCJhcHAtbmFtZS1sYWJlbFwiIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRBcHBsaWNhdGlvbihtZW51TGluaylcIj48L2xhYmVsPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1lbnVMaW5rPy5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiPnt7bWVudUxpbmsuYmFkZ2V9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNpZGVuYXYgJiYgIXNpZGVuYXYub3BlbmVkXCI+XG4gICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJtZW51TGluaz8ubmFtZVwiIG1hdFRvb2x0aXA9XCJ7e2dldFRvb2x0aXBJbmZvKG1lbnVMaW5rKX19XCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIiBtYXRUb29sdGlwQ2xhc3M9XCJsZWZ0LW5hdi10b29sdGlwXCIgY2xhc3M9XCJpY29uIHNpZGUtbWVudS1pY29uIGNoaWxkcmVuLWljb25cIiBbc3JjXT1cImdldEljb25VcmwobWVudUxpbmsuaWNvbiB8fCAnZGVmYXVsdC1pY29uLnN2ZycpXCIvPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1lbnVMaW5rPy5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiPnt7bWVudUxpbmsuYmFkZ2V9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBbZXhwYW5kZWRdPVwic2V0dGluZ3NIZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9PSB0cnVlIHx8IGV4cGFuZEdsb2JhbFNldHRpbmdzXCIgaGlkZVRvZ2dsZT1cInRydWVcIiBpZD1cInt7c2V0dGluZ3NIZWFkTWVudS5pZCArICdtZW51J319XCJcbiAgICAgICpuZ0Zvcj1cImxldCBzZXR0aW5nc0hlYWRNZW51IG9mIHRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogc2V0dGluZ3NIZWFkTWVudS5pc0FjdGl2ZSB9XCJcbiAgICAgIChvcGVuZWQpPVwic2lkZW5hdi5vcGVuKCk7IHNldHRpbmdzSGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlXCIgKGNsb3NlZCk9XCJzZXR0aW5nc0hlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gZmFsc2U7IGV4cGFuZEdsb2JhbFNldHRpbmdzID0gZmFsc2VcIiBbc3R5bGUuYm9yZGVyXT1cInNpZGVuYXYgJiYgc2lkZW5hdi5vcGVuZWQgPyAnJyA6ICdub25lICFpbXBvcnRhbnQnXCI+XG4gICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgbWF0VG9vbHRpcD1cInt7Z2V0VG9vbHRpcEluZm8oc2V0dGluZ3NIZWFkTWVudSl9fVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCIgbWF0VG9vbHRpcENsYXNzPVwibGVmdC1uYXYtdG9vbHRpcFwiXG4gICAgICAgICpuZ0lmPVwic2V0dGluZ3NIZWFkTWVudS50eXBlID09ICdleHBhbmRhYmxlJyBlbHNlIHNpbmdsZU1lbnVzXCIgY2xhc3M9XCJtYWluLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJzaWRlbmF2ICYmIHNpZGVuYXYub3BlbmVkID8gJycgOiAnc3RpY2t5LWJvdHRvbS1jbG9zZWQnXCI+XG4gICAgICAgIDxtYXQtcGFuZWwtdGl0bGUgc3R5bGU9XCJnYXA6IDVweDtcIj5cbiAgICAgICAgICA8aW1nIGNsYXNzPVwiaWNvbiBzaWRlLW1lbnUtaWNvbiBzaWRlLW1lbnUtaWNvbi1jb2xvclwiIFtzcmNdPVwiZ2V0SWNvblVybChzZXR0aW5nc0hlYWRNZW51Lmljb24gfHwgJ3NldHRpbmdzLWljb24uc3ZnJylcIiAvPlxuICAgICAgICAgIDxoMyBjbGFzcz1cInNpZGVtZW51LWhlYWRpbmcgYXBwbGljYXRpb25NZW51XCI+XG4gICAgICAgICAgICA8bGFiZWwgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKHNldHRpbmdzSGVhZE1lbnUpXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2V0dGluZ3NIZWFkTWVudS5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiXG4gICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwic2V0dGluZ3NIZWFkTWVudS5iYWRnZVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2gzPlxuICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgPG1hdC1wYW5lbC1kZXNjcmlwdGlvbiBjbGFzcz1cInNldHRpbmctZGVzY3JpcHRpb25cIiAqbmdJZj1cIm5hdkV4cGFuZGVkXCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWFpbi1jaGV2cm9uLWljb25cIiAqbmdJZj1cIiFzZXR0aW5nc0hlYWRNZW51LnBhbmVsT3BlblN0YXRlXCI+YXJyb3dfcmlnaHQ8L21hdC1pY29uPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1haW4tY2hldnJvbi1pY29uXCIgKm5nSWY9XCJzZXR0aW5nc0hlYWRNZW51LnBhbmVsT3BlblN0YXRlXCI+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgPG1hdC1saXN0IGNsYXNzPVwicGFkZGluZy0wcHhcIiAqbmdGb3I9XCJsZXQgbWVudSBvZiBzZXR0aW5nc0hlYWRNZW51LmNoaWxkcmVuXCIgW2F0dHIuaWRdPVwic2V0dGluZ3NIZWFkTWVudS5pZFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnZ3JvdXAtbmF2LW1lbnUnOiBtZW51LmNoaWxkcmVuIH1cIj5cbiAgICAgICAgPG1hdC1uYXYtbGlzdD5cbiAgICAgICAgICA8bG5jLW5hdi1tZW51cyBhcHBPZmZzZXRUb3AgW2lzQWN0aXZlSXRlbV09XCJpc0NoZWNrQWN0aXZlUm91dGUobWVudSxzZXR0aW5nc0hlYWRNZW51KVwiIFtpdGVtXT1cIm1lbnVcIlxuICAgICAgICAgICAgW2FwcGxpY2F0aW9uSWRdPVwiYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWRcIiBbcGFyZW50TWVudUlkXT1cInNldHRpbmdzSGVhZE1lbnUuaWRcIlxuICAgICAgICAgICAgKG1lbnVDbGlja2VkKT1cIm1lbnVDbGlja2VkKCRldmVudClcIiAjbmF2TWVudXNDb21wb25lbnQ+XG4gICAgICAgICAgPC9sbmMtbmF2LW1lbnVzPlxuICAgICAgICA8L21hdC1uYXYtbGlzdD5cbiAgICAgIDwvbWF0LWxpc3Q+XG4gICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZU1lbnVzPlxuICAgICAgICA8bWF0LWxpc3Q+XG4gICAgICAgICAgPGxuYy1uYXYtbWVudXMgW2F0dHIuaWRdPVwic2V0dGluZ3NIZWFkTWVudS5pZFwiIGFwcE9mZnNldFRvcFxuICAgICAgICAgICAgW2lzQWN0aXZlSXRlbV09XCJpc0NoZWNrQWN0aXZlUm91dGUoc2V0dGluZ3NIZWFkTWVudSxzZXR0aW5nc0hlYWRNZW51KVwiIFtpdGVtXT1cInNldHRpbmdzSGVhZE1lbnVcIlxuICAgICAgICAgICAgW2FwcGxpY2F0aW9uSWRdPVwiYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWRcIiBbcGFyZW50TWVudUlkXT1cInNldHRpbmdzSGVhZE1lbnUuaWRcIlxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7Z2V0VG9vbHRpcEluZm8oc2V0dGluZ3NIZWFkTWVudSl9fVwiIG1hdFRvb2x0aXBDbGFzcz1cImxlZnQtbmF2LXRvb2x0aXBcIiBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiXG4gICAgICAgICAgICAobWVudUNsaWNrZWQpPVwibWVudUNsaWNrZWQoJGV2ZW50KVwiICNuYXZNZW51c0NvbXBvbmVudD5cbiAgICAgICAgICA8L2xuYy1uYXYtbWVudXM+XG4gICAgICAgIDwvbWF0LWxpc3Q+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cblxuICA8L2Rpdj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNlcnJvckJsb2NrPlxuICA8ZGl2IGNsYXNzPVwiZXJyb3JNc2dcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+ZXJyb3I8L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJlcnJvclR4dFwiPnt7ZXJyb3JNc2d9fTwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48YSBjbGFzcz1cImhhbWJ1cmdlci1pY29uIGV4cGFuZGVkLWhhbWJ1cmdlci1pY29uXCIgdGl0bGU9XCJUb2dnbGUgTWVudVwiIChjbGljayk9XCJzaWRlbmF2LmNsb3NlKCk7YWxsTWVudUNvbGxhcHNlKCk7IFwiPlxuICA8bWF0LWljb24gY2xhc3M9XCJsZWZ0LWNoZXZyb24taWNvblwiPmtleWJvYXJkX2Fycm93X2xlZnQ8L21hdC1pY29uPlxuPC9hPlxuXG48IS0tIDxpbWcgKm5nSWY9XCJzaG93TWVudUljb24oKVwiIGNsYXNzPVwiZmF2aWNvbi1kaW1lbnNpb25cIiBzcmM9e3thcHBsaWNhdGlvbkRldGFpbHMuc2lkZWJhckluZm8uZmF2aWNvbn19IGFsdD1cIkludGVudHdpc2UgRmF2aWNvblwiIC8+XG4gIDxhICpuZ0lmPVwic2hvd01lbnVJY29uKClcIiB0aXRsZT1cIlRvZ2dsZSBNZW51XCIgY2xhc3M9XCJoYW1idXJnZXItaWNvbiBjb2xsYXBzZWQtaGFtYnVyZ2VyXCJcbiAgICAoY2xpY2spPVwic2lkZW5hdi5vcGVuKClcIj5cbiAgICA8bWF0LWljb24gY2xhc3M9XCJyaWdodC1jaGV2cm9uLWljb25cIj5rZXlib2FyZF9hcnJvd19yaWdodDwvbWF0LWljb24+XG4gIDwvYT4gLS0+XG4iXX0=